Ethereum - Guía rápida

Un gran éxito de Bitcoin despertó el interés en la mente de varios para crear sus propias monedas. Al observar las ventajas que ofrece Bitcoin, una moneda digital, la gente quería utilizar el concepto de Blockchain en sus propias aplicaciones. Las personas querían pasar de sus contratos físicos a contratos digitales inteligentes donde se abordarían automáticamente varios problemas como el repudio, la transparencia, la seguridad, etc. El resultado de este esfuerzo dio como resultado la creación de Ethereum, una plataforma popular para crear aplicaciones Blockchain distribuidas que admiten contratos inteligentes.

En este tutorial, aprenderá a crear una aplicación distribuida (DAPP) en la plataforma Ethereum. Más específicamente, aprenderá cómo escribir un contrato, probarlo en una Blockchain local y finalmente implementarlo en una Blockchain externa para pruebas profundas y uso comercial. UsarásSolidity, un lenguaje orientado a objetos para el desarrollo de contratos. También usarásRemix, un IDE de código abierto para desarrollar y probar contratos. Para implementar el contrato probado en una Blockchain externa, usaráGanache. Para interactuar con el contrato, necesitará una solicitud de cliente. UsaremosMyEtherWalletpara crear una billetera para cada cliente. El creador del contrato publicará el contrato. Cualquier otro cliente verá el valor de contacto utilizando la interfaz proporcionada por el contrato y enviará algo de dinero al creador para ejecutar una parte del contrato.

Entonces comencemos por escribir el contrato.

Hay varias herramientas disponibles para desarrollar y probar contratos. Una de las herramientas más simples se proporciona en el sitio oficial de Ethereum. La herramienta se llamaRemix, lo usaremos para el desarrollo de nuestro contrato.

Remix para el desarrollo de contratos

Abra Remix IDE escribiendo la siguiente URL en su navegador.

https://remix.ethereum.org

La siguiente pantalla aparecerá.

En la ventana central, verá un código predeterminado, que es un código de Solidity de muestra. Escribirás tu código de contrato en este editor de código. Su código puede compilarse automáticamente. Tras la compilación exitosa del código, podrá ejecutar el código en el mismo IDE. Cuando ejecute los métodos de contrato, los resultados se mostrarán en la misma ventana IDE. Hay instalaciones para depurar el código y realizar pruebas unitarias de su proyecto. Estos se pueden ver en la barra de menú en la parte superior derecha como se muestra en la captura de pantalla IDE a continuación. Utilizará estas opciones en breve.

Ahora comenzará a escribir su contrato.

Solidity es un lenguaje orientado a objetos especialmente desarrollado para la redacción de contratos. Es un lenguaje de alto nivel, que hereda características de C ++, Python y JavaScript. El compilador de Solidity compila su código fuente en un código de bytes que se ejecuta en Ethereum Virtual Machine (EVM).

Para una comprensión rápida de la sintaxis de Solidity, consulte el código de muestra en el IDE.

pragma solidity >=0.4.22 <0.6.0;
contract Ballot {

La primera línea es una directiva para el compilador. La segunda línea inicia la definición del contrato. Dentro del contrato, declaras variables como:

address chairperson;

También puede definir estructuras como Proposaly cree una serie de estos elementos de estructura. Examine esto en la ventana de código.

A continuación, puede definir un constructor que se invoca en el momento de crear una instancia de un contrato.

constructor(uint8 _numProposals) public {

Después del constructor, definirás varios métodos, que son los métodos de contrato. En el contrato de muestra,giveRightToVote es uno de esos métodos que tiene la siguiente sintaxis:

function giveRightToVote(address toVoter) public {

los public La palabra clave hace que este método sea públicamente invocable por cualquier cliente que tenga acceso al contrato.

Asimismo, el contrato de muestra define tres métodos más llamados delegate, votey winningProposal. Examínelos para su propia comprensión de la sintaxis de Solidity. Estos son los requisitos previos para redactar su propio contrato. Explicar la sintaxis completa de Solidity está más allá del alcance de este tutorial.

Nombraremos nuestro contrato MyContract como en la siguiente declaración -

contract MyContract {

Declararemos dos variables de la siguiente manera:

uint amount;
uint value;

La variable amountretendrá el dinero acumulado enviado por los ejecutores del contrato al creador del contrato. losvalueEl campo contendrá el valor del contrato. A medida que los albaceas ejecutan el contrato, elvalue El campo se modificará para reflejar el valor del contrato equilibrado.

En el constructor del contrato, establecemos los valores de estas dos variables.

constructor (uint initialAmount, uint initialValue) public {
   amount = 0;
   value = 1000;
}

Como inicialmente, el monto cobrado en el contrato es cero, establecemos el amount campo a 0. Establecemos el contrato value a algún número arbitrario, en este caso es 1000. El creador del contrato decide este valor.

Para examinar la cantidad recaudada en un momento dado, proporcionamos un método de contrato público llamado getAmount definido como sigue -

function getAmount() public view returns(uint) {
   return amount;
}

Para obtener el valor del contrato equilibrado en un momento dado, definimos getBalance método de la siguiente manera -

function getBalance() public view returns(uint) {
   return value;
}

Finalmente, escribimos un método de contrato (Send). Permite a los clientes enviar algo de dinero al creador del contrato:

function send(uint newDeposit) public {
   value = value - newDeposit;
   amount = amount + newDeposit;
}

La ejecución del send El método modificará ambos value y amount campos del contrato.

El código de contrato completo se proporciona a continuación:

contract MyContract {
   uint amount;
   uint value;

   constructor (uint initialAmount, uint initialValue) public {
      amount = 0;
      value = 1000;
   }
   function getBalance() public view returns(uint) {
      return value;
   }
   function getAmount() public view returns(uint) {
      return amount;
   }
   function send(uint newDeposit) public {
      value = value - newDeposit;
      amount = amount + newDeposit;
   }
}

Una vez que escriba el código de contrato completo, compilarlo en este IDE es trivial. Simplemente haga clic en elAutocompile casilla de verificación en el IDE como se muestra en la captura de pantalla a continuación:

Alternativamente, puede compilar el contrato haciendo clic en el botón con el título “Start to compile”.

Si hay algún error tipográfico, corríjalo en la ventana de código. Asegúrese de que el código esté completamente compilado sin errores. Ahora, está listo para implementar el contrato.

En este capítulo, aprenderemos cómo implementar contratos en Ethereum. Haga clic en la opción de menú Ejecutar para implementar el contrato. La siguiente pantalla aparecerá.

El nombre del contrato se muestra en el cuadro de lista resaltado. Debajo de esto, notará elDeploy, haga clic en él para implementar el contrato. El contrato se implementará en la Blockchain incorporada de Remix. Podrá ver el contrato implementado en la parte inferior de la pantalla. Puede ver esto en la parte resaltada de la captura de pantalla a continuación.

Observe la presencia de tres nombres de métodos en esta región resaltada. A continuación, interactuará con el contrato mediante la ejecución de los métodos del contrato.

Al hacer clic en el contrato implementado, verá los diversos métodos públicos proporcionados por el contrato. Esto se muestra en la captura de pantalla siguiente.

El primer método sendcontiene un cuadro de edición delante de él. Aquí, ingresará los parámetros requeridos por el método de contrato. Los otros dos métodos no toman ningún parámetro.

Enviando dinero

Ahora, ingrese una cantidad como 100 delante del sendfunción vista en la ventana del contrato. Haga clic en elsendbotón. Esto ejecutará el contratosend método, reduciendo el valor del contrato value campo y aumentando el valor del amount campo.

Examinar el valor del contrato

El anterior send money acción ha reducido el valor del contrato en 100. Ahora puede examinar esto invocando el getBalancemétodo del contrato. Verá la salida cuando haga clic en elgetBalance botón como se muestra en la captura de pantalla a continuación -

El contrato value ahora se reduce a 900.

Examinar la cantidad cobrada

En esta sección, examinaremos la cantidad de dinero recaudada hasta ahora en este contrato. Para esto, haga clic en elgetAmountbotón. La siguiente pantalla aparecerá.

los amount el valor del campo ha cambiado de 0 a 100.

Prueba algunos send operaciones y examinar el contrato value y el amount campos para concluir que el contrato implementado se está ejecutando como se esperaba.

El IDE de Remix que ha utilizado hasta ahora es lo suficientemente bueno para el desarrollo y la prueba inicial de su contrato. Para los contratos de la vida real, debe probar su funcionalidad con varios parámetros. Remix no puede crear cuentas de usuario reales (que no sean de prueba) para transferir fondos entre ellos. No tienes control sobre la configuración de Blockchain creada por Remix. Ni siquiera puede controlar la ejecución de las transacciones.

Remix pierde varias operaciones avanzadas. Por lo tanto, necesitamos implementar nuestro contrato en una Blockchain más sofisticada que brinde todas estas características. Uno de esos Blockchain esGanache que aprenderá en nuestro capítulo siguiente.

Ganache se utiliza para configurar un Ethereum Blockchain personal para probar sus contratos de Solidez. Proporciona más funciones en comparación con Remix. Aprenderá acerca de las características cuando entrene con Ganache. Antes de comenzar a usar Ganache, primero debe descargar e instalar Blockchain en su máquina local.

Descargando Ganache

Puede descargar Ganache desde la siguiente URL:

https://truffleframework.com/ganache

Ganache está disponible en varias plataformas. Desarrollamos y probamos todo este tutorial en Mac. Por lo tanto, las capturas de pantalla a continuación mostrarán la instalación de Mac. Cuando abre la URL de instalación proporcionada anteriormente, detecta automáticamente el sistema operativo de su máquina y lo dirige a la instalación binaria adecuada. La siguiente captura de pantalla muestra la instalación de Mac.

Cuando haga clic en el botón DESCARGAR, comenzará a descargar el archivo DMG para la instalación de Mac.

Instalación de Ganache

Busque “Ganache-2.0.0.dmg” en su carpeta de Descargas y haga doble clic en él para instalar Ganache. Una vez que la instalación se haya realizado correctamente, aparecerá la siguiente pantalla:

Arrastre el icono de Ganache a la carpeta de la aplicación. Ahora, Ganache está disponible como una aplicación en tu Mac.

Si está utilizando otro sistema operativo, siga las instrucciones proporcionadas para una instalación correcta.

Comenzando Ganache

Ahora localiza Ganache en la carpeta de su Aplicación y haga doble clic en su icono para iniciar Ganache.

Escritorio Ganache

Cuando se inicia Ganache, aparecerá la pantalla de Ganache como se muestra a continuación:

Haga clic en QUICKSTART para iniciar Ganache. Verá la consola Ganache como se muestra a continuación:

La consola en la captura de pantalla anterior muestra dos cuentas de usuario con un saldo de 100 ETH (Ether, una moneda para transacciones en la plataforma Ethereum). También muestra un recuento de transacciones de cero para cada cuenta. Como el usuario no ha realizado ninguna transacción hasta ahora, este recuento es obviamente cero.

Ahora obtendremos una descripción general de algunas pantallas importantes de Ganache que son de relevancia inmediata para nosotros.

Haga clic en el icono de configuración en la parte superior derecha de la pantalla como se muestra en la captura de pantalla a continuación:

La pantalla de configuración del servidor aparecerá como se muestra a continuación:

Aquí, podrá configurar los valores de la dirección del servidor y el número de puerto para su servidor Ganache. Por el momento, déjelos con sus valores predeterminados. El ID de red es un identificador interno de Blockchain del servidor Ganache; deje esto a su valor predeterminado. losAutomineEl botón está en el estado ON, lo que indica que las transacciones se procesarán instantáneamente. Si lo desactivó, le pedirá que ingrese el tiempo en segundos después del cual se extraerán los bloques.

Cuenta y claves

Cuando haces clic en el Accounts & Keys opción de menú, verá la siguiente pantalla:

Aquí podrás setel saldo predeterminado para cada cuenta. El valor predeterminado es 100. Esto ahora explica por qué vio 100 ETH mostrados para cada cuenta en la captura de pantalla del escritorio. También puede configurar el número de cuentas en esta pantalla. El valor que se muestra en esta captura de pantalla es 2 y es por eso que el escritorio mostró solo dos cuentas.

Ahora, trabajaremos con la pantalla de dos configuraciones; el conocimiento de cómo funcionan estos dos sería suficiente. Reinicie el servidor haciendo clic en elRESTARTen el lado derecho de la pantalla. Ahora volverá a la pantalla del escritorio. Intente ingresar valores diferentes en los dos campos anteriores, reinicie el servidor y vea su efecto.

Ahora entenderemos brevemente lo que está disponible en el escritorio de Ganache. En el escritorio, en la parte superior tenemos varias opciones de menú, de las cuales algunas son de relevancia inmediata para nosotros. La barra de menú está resaltada en la captura de pantalla a continuación:

Al hacer clic en el TRANSACTIONSEl menú muestra todas las transacciones realizadas hasta el momento. Realizarás transacciones muy pronto. Ahora, regrese a la pantalla anterior y verifique las transacciones de vez en cuando. Una pantalla de transacción típica es la que se muestra a continuación:

Del mismo modo, al hacer clic en el BLOCKSmenú, verá los distintos bloques extraídos. Considere la siguiente captura de pantalla para comprender cómo se ve el menú BLOQUES:

Clickea en el LOGSmenú. Se le abrirá el registro del sistema. Aquí, puede examinar las diversas operaciones que ha realizado en Ethereum Blockchain.

Ahora, como ha entendido cómo usar Ganache para configurar un Ethereum Blockchain privado, ahora creará algunos clientes que usarían este Blockchain.

Para la aplicación cliente, usará MyEtherWallet.

Descargar MyEtherWallet software de la siguiente URL:

https://github.com/kvhnuke/etherwallet/releases/tag/v3.21.06

Si es necesario, descomprima el archivo descargado y abra index.html. Verá la siguiente interfaz para crear una nueva billetera.

En este capítulo, aprenderemos cómo crear una billetera Ethereum. Para crear una nueva billetera, ingrese una contraseña de su elección y luego haga clic en "Create New Wallet”Botón. Cuando lo haga, se creará una billetera. Una billetera digital es esencialmente la generación de un par de claves pública / privada que necesita almacenar en un lugar seguro. La creación de la billetera da como resultado la siguiente pantalla:

Clickea en el “Download Keystore File (UTC / JSON)”para guardar las claves generadas. Ahora, haga clic en el“I understand. Continue”botón. Su clave privada aparecerá en la pantalla como se ve en la captura de pantalla a continuación:

Clickea en el “Print Paper Wallet”para mantener un registro físico de la clave privada de su billetera. Lo necesitará más tarde para desbloquear la billetera. Verá la siguiente pantalla. No pierda esta salida.

Para desbloquear su billetera, haga clic en el “Save Your Address”botón. Verá la siguiente pantalla.

La billetera se puede desbloquear usando la opción Clave privada como se resalta en la pantalla anterior. Corta y pega la clave privada de la captura de pantalla anterior y haz clic en el botón Desbloquear. Su billetera se desbloqueará y verá aparecer un mensaje en la parte inferior de la pantalla. Como la billetera no contiene nada a partir de ahora, desbloquear la billetera no es realmente útil para nosotros en este momento.

Ahora ha creado una billetera; esta billetera es una interfaz de cliente para Blockchain. Adjuntaremos la billetera a Ganache Blockchain que comenzó en la lección anterior. Para hacerlo, haga clic en elNetwork cuadro desplegable como se muestra en la captura de pantalla a continuación -

Ve al final de la lista. Verá una opción para“Add Custom Network / Node”. Seleccione este elemento.

Ahora, aparecerá una pantalla solicitando la dirección del servidor Ganache y el puerto al que está escuchando.

Escriba los detalles de su servidor Ganache - http://127.0.0.1 y puerto: 8545. Estos serían los valores establecidos por usted en la configuración del servidor Ganache. Dar unnamede su elección a este nodo. Clickea en el“Save & Use Custom Node”botón. Verá el mensaje de conectado en la parte inferior de la pantalla. En este punto, su billetera está conectada correctamente a Ganache Blockchain.

Ahora está listo para implementar el contrato en esta Blockchain conectada.

Para implementar el contrato, seleccione el Contracts opción de menú como se muestra en la captura de pantalla a continuación -

Deberá ingresar el código de bytes del contrato en esta pantalla. Recuerde, cuando compila su código de contrato de Solidity, genera un código de bytes que se ejecuta en EVM. Ahora necesitará obtener este bytecode deRemix IDE.

Vaya a la pantalla Remix IDE, su contrato escrito anteriormente debería estar allí en la ventana de código. Si no es así, vuelva a escribir el contrato en la ventana de código. Haga clic en el botón Bytecode como se muestra en la siguiente captura de pantalla:

El código de bytes de la fuente compilada se copia en el portapapeles junto con otra información. Pegue el código copiado en su editor de texto favorito. A continuación se muestra la captura de pantalla del editor de texto:

El valor de la objectcontiene el código de bytes deseado. Copie esto con cuidado asegurándose de no copiar las comillas adjuntas. El código de bytes es muy largo, así que asegúrese de copiarlo hasta el último byte incluido. Ahora, pegue este bytecode en elDeploy Contract pantalla como se muestra a continuación -

los Gas Limit El campo se establece automáticamente.

Debajo del campo Límite de gas, encontrará la selección para acceder a la billetera.

Ahora, acceda a la billetera usando el Private Keyde la cuenta Ganache en la que se desplegará este contrato. Para obtener esta clave privada, vuelva a laGanacheventana. Clickea en elkeys icono de la primera cuenta como se muestra a continuación -

Verá la clave privada de la cuenta de usuario n. ° 1 como se ve en la captura de pantalla a continuación:

Copie esta clave privada y péguela en la sección "Pegue su clave privada" como se muestra a continuación:

Verás el “Unlock”en la parte inferior de la pantalla. Después de desbloquear, aparecerá un mensaje de "éxito" en la parte inferior de la pantalla. En este punto, su billetera está adjunta a la cuenta # 1 de Ganache Blockchain.

Ahora, está listo para firmar e implementar el contrato. Clickea en el“Sign Transaction” botón como se muestra en la captura de pantalla a continuación -

La firma de la transacción genera y muestra ambos Raw y Signedactas. Clickea en el“Deploy Contract”botón para implementar el contrato en Ganache Blockchain. Recuerde que el contrato lo implementa el usuario número 1 de Ganache Blockchain. Por lo tanto, el usuario de la cuenta n. ° 1 se convierte en el creador del contrato. Antes de que se implemente el contrato, se le pedirá que confirme la transacción, ya que puede costarle algo de dinero real si implementara este contrato en una cadena de bloques pública real de Ethereum. No se preocupe, para la Blockchain privada actual que se ejecuta en su máquina local, no hay dinero real involucrado. Clickea en elMake transaction botón como se muestra en la captura de pantalla a continuación -

Examine la consola Ganache; Verá que el saldo de ETH en la cuenta n. ° 1 se ha reducido como se ve en la captura de pantalla a continuación:

Ahora, haga clic en el TRANSACTIONS menú como se muestra en la captura de pantalla a continuación -

Verá los detalles de la transacción.

En esta pantalla, encontrará la dirección publicada del contrato. La dirección está marcada en la captura de pantalla anterior. Distribuirá esta dirección públicamente para que otros sepan que su contrato está disponible en esta dirección especificada a la que pueden conectarse y ejecutar los métodos del contrato, como enviarle dinero a usted, el creador del contrato. Copie esta dirección de contrato para su propia referencia, ya que la necesitará en el siguiente paso.

Ahora, está listo para interactuar con el contrato que ha implementado. Vuelva al escritorio de MyEtherWallet y haga clic en la pestaña "Interactuar con el contrato" como se muestra en la captura de pantalla a continuación:

Pegue la dirección del contrato que copió previamente en el “Contract Address”campo. También necesitas pegar el“ABI / JSON Interface” del contrato en la pantalla anterior.

Para obtener el ABI, Ve a la Remix ventana y haga clic en el ABI botón como se muestra en la captura de pantalla a continuación.

La interfaz ABI / JSON se copiará en el portapapeles. Pegue esto en su editor favorito para examinar la interfaz generada, que se muestra a continuación:

ABI / JSON Interface
[
   {
      "constant": false,
      "inputs": [
         {
            "name": "newDeposit",
            "type": "uint256"
         }
      ],
      "name": "send",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
   },
   {
      "inputs": [
         {
            "name": "initialAmount",
            "type": "uint256"
         },
         {
            "name": "initialValue",
            "type": "uint256"
         }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
   },
   {
      "constant": true,
      "inputs": [],
      "name": "getAmount",
      "outputs": [
         {
            "name": "",
            "type": "uint256"
         }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
   },
   {
      "constant": true,
      "inputs": [],
      "name": "getBalance",
      "outputs": [
         {
            "name": "",
            "type": "uint256"
         }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
   }
]

Después de pegar este JSON en el MyEtherWallet interfaz, notará que el botón ACCESO debajo de la interfaz JSON ahora está activado, como se muestra a continuación:

Hacer clic Access botón para acceder al contrato.

Al hacer clic en el Access, la dirección del contrato y el menú desplegable de selección de función aparecerán en la pantalla como en el editor Remix. Esto se muestra en la captura de pantalla a continuación:

Puede consultar las distintas funciones del contrato como en el caso de la implementación de Remix. Tenga en cuenta que el contacto ahora se implementa en una cadena de bloques de Ganache externa. Comprobar elgetAmountfunción; obtendrá el valor de Cantidad de cero y elgetBalance mostrará un saldo de 1000.

Ahora intente enviar algo de dinero. Te presentará untexteditcontrol para ingresar el monto. Cuando escriba el contrato, se usará algo de "gas" y se le pedirá que confirme la transacción antes de escribirla en Blockchain. La transacción se ejecutará en poco tiempo dependiendo del tiempo de minería establecido por usted en el servidor de Ganache. Después de esto, puede volver a examinar elvalue y el amount campos del contrato para verificar que efectivamente se modifican.

Ahora puede examinar el escritorio de Ganache para ver las transacciones que ha realizado hasta ahora. A continuación se muestra un resultado de muestra:

Hasta ahora, eras tanto el creador del contrato como el ejecutor del contrato. Esto no tiene mucho sentido, ya que espera que otros utilicen su contrato. Para esto, crearemos otro cliente para nuestro Ganache Blockchain y enviaremos algo de dinero desde la cuenta # 2 recién creada al creador del contrato en la cuenta # 1.

En este capítulo, aprenderemos la creación de usuarios por contrato en Ethereum. Para crear un usuario para nuestro contrato publicado, crearemos otroMyEtherWalletcliente adjunto a la misma cadena de bloques de Ganache que ha estado utilizando en los pasos anteriores. Ve a laMyEtherWallet pantalla y cree una nueva billetera.

Clickea en el contracts menú y seleccione el “Interact with Contract”opción como en el caso anterior. Tenga en cuenta que este nuevo usuario simplemente interactuará con el contrato ya publicado y no implementará su propio contrato. Especifique la dirección del contrato y el ABI que utilizó en el caso anterior.

Ahora, haga clic en Access botón e invocar send método. Cuando se le pregunte, ingrese algún valor, digamos 100 ETH para ser enviado. Envíe la transacción. Una vez enviado, aparecerá la siguiente pantalla.

Para adjuntar este nuevo cliente a nuestra Ganache Blockchain, vaya a Ganache Console. Haga clic en el icono de las teclas de la cuenta n. ° 2 como se muestra en la siguiente captura de pantalla:

Obtendrá la clave privada para la cuenta n. ° 2.

Copie la clave que recibe y utilícela en su billetera recién creada como se muestra aquí:

Clickea en el Unlock botón para adjuntar la cartera.

Cuando la billetera se desbloquee correctamente, escriba la transacción de envío deseada.

Genere la transacción haciendo clic en el “Generate Transaction” botón.

Makela transacción y espere un tiempo para que se refleje en Blockchain. Ahora, ejecuta“getAmount”, la cantidad que se muestra debería ser 200 ahora.

Ejecutar “getBalance”. losvalue El campo ahora debería ser 800.

Examine el registro de transacciones para ver las diversas transacciones realizadas por diferentes usuarios.

Aprendiste a redactar tu propio contrato digital en Solidity. Desarrolló y probó la interfaz de contrato en Remix IDE. Para más pruebas multiusuario, implementó este contrato en Ganache Blockchain. En Ganache, creó dos cuentas de usuario. La primera cuenta se utilizó para publicar el contrato. La segunda cuenta se utilizó para consumir el contrato.

¿Lo que sigue?

La Blockchain de Ganache que usó en todo este proceso es privada y local para su máquina. Una vez que esté completamente satisfecho con el funcionamiento del contrato, puede proceder a publicarlo en un Ethereum Blockchain de la vida real. Sin embargo, hacerlo requeriría gastar dinero real. En la aplicación de demostración, usamos 1000 ETH por defecto para cada cuenta de usuario en Ganache. Cuando implemente su contrato en una Blockchain de la vida real, tendrá que comprar el ETH convirtiendo la moneda de su propio país a ETH. Esta moneda se almacenará en su billetera y podrá gastarla de la manera que desee.