DEV Community

Cover image for Crear un Blockchain local de Ethereum con GETH y PUPPETH
Rodrigo Garcia Trejo
Rodrigo Garcia Trejo

Posted on

Crear un Blockchain local de Ethereum con GETH y PUPPETH

Holaaa a todos!!!

Otra vez soy yo Rodrigo G.T. esta vez les traigo un nuevo tema sobre Blockchain, esta vez te enseñare a crear una blockchain en nuestra propia computadora.

Manos a la obra!!.

Instalar GETH

Para esta parte debemos acudir a la pagina Geth y para ello debemos descargar el instalador y seleccionar la opción Development tools.

Alt Text

Y siguiente, siguiente y aceptar.

Una vez instalado, podemos probar si se realizo correctamente la instalación ejecutando en nuestro cmd el siguiente comando

geth version
Enter fullscreen mode Exit fullscreen mode

y debe aparecer algo así

Alt Text

También debemos de saber si tenemos instalado correctamente Puppeth solo escribimos en nuestra linea de comandos puppeth

Alt Text

Una vez que tengamos instalado estas cosas correctamente vamos a comenzar con nuestra instalación.

Acceder a la carpeta C://Users/[TU_USUARIO]/APPDATA/Local/Ethereum/GETH

NOTA: Si no aparece la carpeta Ethereum ejecute el comando geth en el cmd
geth
Enter fullscreen mode Exit fullscreen mode

Si todo esta bien accedemos a nuestra linea de comandos y ejecutamos el siguiente comando

cd Appdata/local/ethereum/geth
Enter fullscreen mode Exit fullscreen mode

Una vez que estés ubicado en esta ruta creamos una nueva carpeta donde guardaremos nuestra red local, por lo tanto debes crearla y posicionarnos en esa carpeta. Para ello necesitamos ejecutar el siguiente comando.

mkdir AQUI_PONES_EL_NOMBRE_DE_LA_RED && cd AQUI_PONES_EL_NOMBRE_DE_LA_RED

Ejemplo:

mkdir miredlocal && cd miredlocal
Enter fullscreen mode Exit fullscreen mode

El comando anterior crea la carpeta y nos posiciona en ella.
Una vez dentro, vamos a crear tres cuentas para hacer pruebas de nuestra blockchain y eso lo hacemos con el siguiente comando.

El siguiente comando lo vamos a ejecutar 3 veces y debemos guardar nuestras claves privadas y publicas que nos genere ya que las ocuparemos mas adelante.

geth --datadir . account new
Enter fullscreen mode Exit fullscreen mode

Cuando ejecutemos el comando anterior nos pedirá una contraseña

Alt Text

Recuerda guardar las claves publicas y las secretas.

Alt Text

Una vez que tengamos nuestras 3 claves publicas y privadas, continuemos.

Ahora ejecutamos puppeth en nuestra linea de comandos.

puppeth
Enter fullscreen mode Exit fullscreen mode

Dentro de puppeth, debes asignar un nombre a nuestra red (No utilizar espacios, guiones ni mayúsculas).

En este ejemplo le pongo el nombre miredlocal

Alt Text

Después nos preguntará que queremos hacer y debemos seleccionar la opción 2 que es configurar un nodo génesis.

Alt Text

Después nos preguntara si queremos crear un nuevo nodo génesis o importar uno existente, en esta opción seleccionamos la opción 1 (Create new genesis from scratch).

Alt Text

La siguiente pregunta nos preguntara que tipo de consenso usaremos debemos seleccionar la 2 (2. Clique - proof-of-authority)

Alt Text

La siguiente opción cada cuantos segundos crearemos un nuevo bloque, en este caso le pongo 16 segundos, puedes poner el número que quieras pero te recomiendo un número mayor a 15 para no generar errores.

Alt Text

Después nos pedirá que le indiquemos la cuenta sello, por lo tanto, de las 3 cuentas que creamos seleccionamos SOLO UNA y pegamos la clave primaria sin poner 0x y presionamos enter dos veces.

Alt Text

Después asignamos cuentas para prefondear y pegamos cada una de las dos claves primarias de las otras dos cuentas. tienen que ser diferentes a la clave sello.

Alt Text

Después nos preguntara si deseamos continuar y escribimos yes

Alt Text

Nos preguntar que especifiquemos una id de la red/cadena.
aquí solo damos enter

Alt Text

Ahora ya que terminamos ese paso nos volverá a preguntar que deseamos hacer entonces ahora volvemos a seleccionar la opción 2

Alt Text

Y ahora nos preguntara que queremos hacer en este caso seleccionaremos la opcion 2 (Exportar genesis configurations) y le damos enter, y presionamos ctrl + c

Alt Text

LISTOOO!!

Ahora inicializamos un bloque génesis.
geth --datadir . init NOMBRE_QUE_LE_PUSISTE_A_TU_RED.json

Ejemplo:

geth --datadir . init miredlocal.json
Enter fullscreen mode Exit fullscreen mode

Alt Text

Por ultimo, desbloqueamos el bloque y comenzamos a minar recuerda que se ejecuta cada 16 seg o el tiempo que decidiste poner.
ejecutamos el siguiente comando geth --nodiscover --datadir . --unlock 0x{Cuenta selladora} --mine
la cuenta selladora es la clave primaria que es la que seleccionamos para nuestro bloque génesis y nos pedirá la contraseña de nuestra clave.

Ejemplo:

Alt Text

y listo ya tienes tu red local y comenzando a minar.

Para poder conectarnos a esta red debemos buscar en el código que se genera al comenzar a minar la propiedad url en mi caso es \.\pipe\geth.ipc

Alt Text

Ahora dejemos que este minando y nos conectamos en otra consola de comandos(cmd) y ejecutamos el comando geth attach [la url]

geth attach \\.\pipe\geth.ipc
Enter fullscreen mode Exit fullscreen mode

Si te aparece el siguiente contenido despues de ejecutar el comando, significa que tu blockchain esta funcionando correctamente

Alt Text

FELICIADADES!!! ya tienes una blockchain local.

Espera mis siguientes posts para aprender ha transferir ether entre nuestras cuentas locales y ver nuestro balance.

Alt Text

Top comments (2)

Collapse
 
willydual profile image
William May

Si puedes responder rápido sería mejor.

Collapse
 
willydual profile image
William May

Cómo lo conecto a metamask??