(probado) 5 Minute Hello World Blockchain con Ethereum en Mac o Ubuntu

Me tomó tres años hacer la versión hola mundo de blockchain. A continuación se explica cómo hacerlo en 5 minutos sin conocimientos previos.

TL; DR

Puede ser muy fácil configurar una cadena de bloques, realizar algunas transacciones y crear su propio contacto inteligente. Pero es increíblemente difícil hacerlo bien de la manera que realmente hace del mundo un lugar mejor. En este artículo, aprenderá cómo configurar una cadena de bloques fácilmente y qué sucede cuando las cosas se rompen y el mundo se vuelve peor.

Contenido

Muerte por mil niños de Script: un cuento precautorio

Este artículo no es una vía rápida hacia una cadena de bloques p ublic o contratos inteligentes listos para producción. De hecho, esta partícula muy bien podría llevarlo más lejos de ideas tan elevadas. El artículo solo proporciona la forma más simple y transparente de crear una cadena de bloques local y trabaja de manera efectiva para sentirse menos como …

Hay dos palabras que debemos considerar cuidadosamente antes de continuar; contrato y ledger . Palabras como estas son un gran problema. Especialmente cuando los mezcla con palabras como trustless y consensus. Cuando no puedes apreciar esto, suceden * cosas *. Aún así, muchos proyectos de blockchain parecen construirse utilizando el mismo enfoque que uno usaría para crear una aplicación de Android o un sitio web. Una razón es la demografía.

Como ejemplo de monos que producen un Hamlet: considere el curioso caso de devops199. Pudo fácilmente (o ella) congelar activos por valor de US $ 300 millones en carteras multi-sig proporcionadas por Parity Technologies. Parece relevante considerar que Parity es una empresa fundada por el CTO original de Ethereum, Gavin Wood. También tenga en cuenta que este fue un segundo truco en menos de 6 meses que afectó a los usuarios de la billetera de Parity.

¿Es aún más preocupante cómo Gavin Wood parecía confiar en la billetera multi-sig de Parity? su alijo de $ 90 millones de Polkadot ICO se congeló con los otros $ 210 millones. En otras palabras, tenemos todas las razones para creer que Gavin Wood pensó que el código de su empresa era sólido (sin juego de palabras). La próxima vez que escuche la palabra “sin confianza”, esta es una buena historia para tener en cuenta.

Y sí …

En pocas palabras, el juego de Parity para recuperar los activos implica cambiar el código Ethereum de una manera que asume que no se cometió ningún error por parte de Parity. Surge la pregunta … ¿es eso realmente diferente a que el gobierno rescata a un banco privado? Eso escaló rápidamente.

La clave para aprender aquí es jugar seguro . Este artículo no lo está ayudando a comenzar con blockchain, solo muestra cómo estar menos confundido al respecto.

Taxonomía / Jerarquía

En cierto modo, blockchain es una tecnología descentralizada y, al mismo tiempo, se basa en un paradigma de taxonomía / diseño convencional. Básicamente, hay un montón de cosas que están hechas de muchas otras cosas, y esas cosas están hechas de otras cosas.

En este sentido, parece que la estructura de una cadena de bloques es:

Es la forma en que estas cosas interactúan entre sí lo que le da a las cadenas de bloques la sensación de descentralización con la que vienen.

Configuración de una cadena de bloques local

Sin más preámbulos, hagamos esto. Primero, es necesario instalar algunos paquetes. A saber, la cadena de bloques Ethereum. Usaremos Solidity en la Parte 2, por lo que no tiene que instalarlo ahora si no lo desea. Tenga en cuenta que la instalación puede tardar un poco, así que esté preparado para esperar.

EN MAC

EN UBUNTU

De aquí en adelante, he hecho todo en Mac, pero debería funcionar en Ubuntu con exactamente los mismos comandos.

Primero tenemos que usar un Archivo Génesis para inicializar la cadena de bloques. Considérelo como el archivo de configuración para su blockchain. Es la forma en que establece los parámetros que afectan la forma en que funciona su blockchain. Antes de hacer cualquier otra cosa, debemos decidir esos parámetros y crear un archivo json simple (no temas) con la configuración. Aparentemente, solo se requieren cuatro parámetros:

Si desea obtener más información sobre los gases y la dificultad, es fácil encontrar muchos artículos que expliquen esos conceptos.

Primer archivo Genesis de ejemplo

Segundo archivo Genesis de ejemplo

La diferencia en el ejemplo del segundo archivo de génesis es que la dificultad se establece en un poco más alto, y algo de Ether se asigna en dos cuentas desde el principio. A continuación, podemos usar el archivo genesis para crear un nodo y una cuenta en ese nodo.

Para la parte de creación de la cuenta, se le pedirá la frase de contraseña. Una vez hecho esto, podemos iniciar sesión en la consola:

Eso es todo, está ejecutando una cadena de bloques local en su máquina con un solo nodo y una sola cuenta. Por ahora, realmente no hay nada en la cadena de bloques, es decir, aún no se han extraído bloques, lo que puede verificar fácilmente:

Lo que devolverá 0 para confirmar que no se ha realizado ninguna extracción. Así que comencemos con un minero y creemos algo de eth (local).

Empezar a minar en Blockchain

Para generar algo de Ether (asumiendo que no hizo ninguna asignación previa en el archivo de génesis), tenemos que extraer algunos bloques. Puede hacerlo de la siguiente manera:

Esto iniciará a un minero con un solo hilo. Después de un rato, comenzará la minería y verá algo como:

Una vez que esto sucede, puede detener la minería en cualquier momento con:

Tenga en cuenta que es posible que el registro aún se actualice mientras escribe el comando. Está bien, sigue escribiendo y presiona Enter. Ahora el número de bloque debería haber cambiado. Adelante, compruébalo.

Ahora es un buen momento para verificar el saldo de la cuenta. Hay varias formas de hacer esto:

Como puede adivinar por el ejemplo anterior, puede obtener la dirección de la cuenta mediante la indexación:

Creación de más cuentas en el nodo

Un nodo puede tener más de una cuenta. Podemos hacer esto simplemente repitiendo el mismo código que usamos antes para crear la primera cuenta en el nodo. Primero salga de la consola geth y vuelva a la línea de comandos, y luego:

Ahora puede iniciar la consola nuevamente (como lo hizo anteriormente) intente:

Obviamente, el saldo es 0 ya que la nueva cuenta no ha estado involucrada en ninguna minería o transacción. Así que pasemos a realizar transacciones.

Cómo realizar transacciones entre dos cuentas

Como ejemplo simple, hagamos una transacción desde la primera cuenta que creamos hasta la segunda. Pero antes de que eso sea posible, es necesario desbloquear la cuenta de envío.

Esto abrirá la Cuenta 0 durante 15000 segundos. Por cierto, probablemente no quieras acostumbrarte a usar “test0123” como contraseña. Solo digo.

A continuación, podemos realizar la transacción real:

Aquí estamos haciendo una transacción desde la cuenta 0 a la cuenta 1, por valor de 3 éter. En este punto, aunque parece que ya habíamos “realizado” la transacción, es necesario procesarla a través de la actividad de minería. Así que sigamos adelante y a lo siguiente:

Puede tomar un momento, pero una vez que vea que se han extraído algunos bloques, puede detenerse con:

Ahora, revise el saldo de la cuenta 1, y debería haberse actualizado con el éter 3 que se tramitó.

Tenga en cuenta que el número que ve es algo así como 3000000000000000000 que no es éter sino Wei, que es una fracción muy pequeña de éter.

Creando más nodos en la cadena de bloques

A continuación, agreguemos más nodos para ayudar a un ejemplo más ilustrativo de una cadena de bloques. Primero tienes que crear un nuevo nodo (mejor en una ventana de terminal separada) tal como lo hicimos antes con el nodo1, pero ahora para el nodo2. Tenga en cuenta que terminaremos con dos carpetas separadas.

A continuación, vaya a una sesión de consola separada:

Tenga en cuenta que tenemos que usar un puerto diferente ya que el puerto predeterminado ya está siendo usado por node1. Una vez dentro de la consola, debe obtener la dirección de enode para el nodo2.

Una vez que tenga la dirección enode, es hora de volver a la ventana de la consola original con node1 y agregar el nuevo Peer a la red:

Si obtiene un resultado válido, ahora puede comenzar a minar en uno de los nodos y ver cómo el otro nodo se actualiza automáticamente. Ahora, por ejemplo, podría realizar transacciones con tokens de una cuenta en un nodo a una cuenta en otro nodo:

Alternativas al cliente de Geth Ethereum

Como probablemente hayas notado, he usado el cliente OG para Ethereum; Geth. Existen alternativas que podrían simplificar el trabajo con las cadenas de bloques Ethereum, por ejemplo, de Parity. Sin embargo, recuerde el viejo proverbio chino, “cuando esté en el lomo de un tigre, hágalo con cuidado”.

Creación y transacción de un contrato inteligente

Para que este artículo sea razonablemente sencillo, lo he dividido en tres partes. En la segunda parte, cubriremos cómo hacer un contrato inteligente Hello World en Ethereum usando la cadena de bloques que acabamos de configurar.

ps. Muchísimas gracias a Alan Buxton, quien se tomó el tiempo de seguir estos movimientos y documentarlo. En su mayoría, limpié su informe original y lo presenté en un formato un poco más accesible.