Un SC no es otra cosa que un trozo de código almacenado en la blockchain con el cual podemos interactuar como si estuviese en nuestro PC local.
El contrato tiene una cuenta asociada, la cual está compuesta por 3 campos:
1. Saldo: Cantidad de ether que esa cuenta posee, esto es importante ya que con esa cuenta se harán los despliegues de contratos que cuestan ether, por lo que será esencial que la cuenta del contrato tenga saldo para poder realizar movimientos.
2. Almacenamiento: simplemente los datos almacenados para este contrato, cualquier dato que sea esencial para la interacción o funcionamiento del SC.
3. Código: este código esta compilado, por lo que reía imposible para nosotros poder leerlo, pero en cambio para el ordenador con el que interactuamos es su lenguaje natural.
Para poder crear los contratos existen lenguajes como por ejemplo solidity. Solidity es un lenguaje de programación muchas veces comparado con JavaScript por algunas de sus características, aun que tiene diferencias muy importantes.
Cuando escribimos código en solidity, tendremos que compilarlo y después de la compilación el código tendrá dos resultados, el primero será el Byte code que no es más que el código compilado a muy bajo nivel, para que se puede desplegar en la blockchain.
La otra parte que tendremos como resultado el el ABI de la aplicación, que el encargado de hacer la compilación de nuestro fronted.