¡Sé Un Witness! Parte 2: Descargar, compilar y configurar el WitnesssteemCreated with Sketch.

in spanish •  15 days ago

Saludos a todos,

Esta es la segunda y más importante de mi tutorial para ser Witness.

Es importante seguir estos pasos correctamente ya que trabajaremos la mayoría del tiempo con el terminal y escribiremos varios comandos.

En este punto, asumo que ya tienes Ubuntu corriendo en tu equipo o en la máquina virtual Tal y como se menciona en los pasos de crear una máquina virtual usando Hyper-V

Recuerda que para el mejor rendimiento, necesitas 32GB de RAM en tu equipo.

¡Comenzemos!

Descargar y compilar el steemd y cli_wallet

  1. Abriremos el Terminal:

    1.png

  2. Instalaremos una serie de paquetes tal y como se mencionan en el siguiente documento, sección Ubuntu 16.04 en el repositorio de steem en Github. Puedes acceder al documento y copiar y pegar los primeros comandos de instalación de los paquetes:

    2.png

  3. Nos pedirá nuestra contraseña. La escribimos y presionamos Enter en el teclado. Nota que la contraseña no se muestra en el terminal por razones de seguridad, pero ten en cuenta que la contraseña está siendo introducida aunque no la veas:

    3.png

  4. Seguimos instalando los paquetes:

    4.png

    5.png

  5. Veremos muchas lineas que salen en el proceso de instalación de los paquetes. Algo parecido a esto:

    6.png

  6. Cuando la instalación de los paquetes termine, procedemos a clonar el repositorio de Steem de GitHub:

    7.png

  7. Una vez la clonación termine, entraremos al directorio de steem usando cd steem y haremos checkout a la versión 0.19.2, la cual es la última en estos momentos:

    8.png

  8. Una vez hecho el checkout, deberíamos ver algo parecido a lo siguiente:

    9.png

  9. La próxima linea a ejecutar es la siguiente:

    10.png

  10. Y cuando termine, veremos algo a esto:

    11.png

  11. Ahora, procedemos a los comandos para compilar Steemd y cli_wallet. Primero, crearemos un directorio llamado build, luego accedemos a él, y por último, corremos la linea con el comando cmakey los parametros para configurar cómo queremos que se construya steemd. Usamos -DCMAKE_BUILD_TYPE=Release ya que será un nodo de producción. -DLOW_MEMORY_NODE=ON ya que como Witness, no hace falta ciertas funciones que son necesarias en un nodo completo y esto también nos baja el consumo de memoria. -DCLEAR_VOTES=ON también reduce un poco más el consumo de memoria. Recomendado para los Witnesses pero no para los operadores de nodo completo. -DSKIP_BY_TX_ID=ON acelera el proceso de sincronización, aunque no usaremos el plugin account_history, lo coloqué como quiera.

    14.png

  12. Muy importante que la salida del comando anterior se vea así:

    15.png

  13. ¡A compilar steemd! Esto sí tomará algunos minutos:

    16.png

  14. Compilando...

    17.png

  15. Aquí termina de compilar steemd:

    18.png

  16. Compilaremos ahora cli_wallet, el cual utilizaremos para activar nuestro witness y otras funciones luego:

    19.png

  17. Compilación de cli_wallet terminada:

    20.png

Obtener una copia de la cadena de bloque:

Existen 2 formas para descargar la cadena de bloques. Iremos por la primera manera, que es por le navegador web:

  1. Accederemos a https://gtg.steem.house/get/blockchain y haremos click en el archivo llamado block_log:

    21.png

  2. Oprimiremos Save File:

    22.png

  3. La descarga comenzará. Nota que esto podría tomar varias horas:

    23.png

Segunda manera:

La segunda manera consiste en descargar la cadena de bloques a través del terminal:

  1. Escribiremos en el terminal wget https://gtg.steem.house/get/blockchain/block_log y presionamos Enter. La descarga comenzará:

    download blockchain.png

  2. La descarga comenzará. Una vez termine, el archivo estará en la carpeta de Downloads:

    56.png

Configurar steemd

  1. Accederemos al directorio programs/steemd dentro de steem luego de compilarlo:

    24.png

  2. Lanzaremos el programa para que nos genere la configuración inicial:

    25.png

  3. Una vez veamos lo siguiente, rápidamente presionaremmos CTRL+C en el teclado para salir del programa:

    27.png

  4. Navegaremos a la carpeta witness_node_data_dir y abriremos el archivo config.ini:

    28.png

  5. El primer paso es indicar un directorio para almacenar un archivo llamado shared_memory.bin y shared_memory.meta. Estos archivos tienden a ser gigantes. Para que nuestro witness funcione idealmente, indicaremos que se almacenen estos archivos en /dev/shm el cual hará que se almacenen estos archivos en memoria. Esto es lo ideal ya que la memoria RAM es mucho más rápido que un disco duro e incluso más rápido que un SSD (Solid State Disk):

    Cambiaremos esto:

    30.png

    Por esto:
    config1.png

  6. El próximo paso consiste en desactivar el plugin llamado account_history. Esto no hace falta para ser un witness y nos ahorra bastante memoria RAM también:

    Cambiaremos esto:

    config2.png

    Por esto:
    config3.png

  7. ¡ Y recuerda guardar el archivo presionando CTRL+S!

  8. Ahora, tenemos que utilizar cli_wallet para importar nuestra Active Key y poder generar un par de llaves para firmar los bloques que hagamos. Para esto, navegaremos en el terminal a la carpeta de cli_wallet:

    cli_wallet1.png

  9. Lanzaremos cli_wallet conectado al nodo público de Steemit: wss://steemd.steemit.com

    37.png

  10. Lo primero que tenemos que hacer es poner una contraseña:

    38.png

  11. Y luego, desbloquear la cartera usando la contraseña usada en el paso anterior:

    39.png

  12. El próximo paso consiste en importar tu Active Key. Para esto, tenemos que ira Wallet en Steemit:

    40.png

  13. Luego a Permissions:

    41.png

  14. Ahora, a la derecha de nuestra Active Key pública, le daremos al botón Login to Show:

    42.png

  15. Nos pedirá que entremos nuestra contraseña de Steemit:

    43.png

  16. Veremos que la Active Key comienza con un 5. Tenemos que copiar esa clave:

    activekey1.png

  17. En el cli_wallet, escribiremos import_key seguido de la Active Key privada:

    44.png

  18. Veremos que nos retornará un true. Esto indica que la active key fue importada:

    activekey2.png

  19. Escribiremos suggest_brain_key para que el cli_wallet nos sugiera un par de llaves para usar en nuestro witness:

    46.png

  20. Copiaremos esto y lo pegaremos en un archivo de texto ya que utilizaremos estas llaves para configurar y activar nuestro witness:

    48.png


    49.png

  21. Copiaremos el wif_priv_key y lo pegaremos en el archivo de configuración del witness donde nos dice private-key. También, donde dice witness, escribiremos el nombre de nuestra cuenta:

    47.png

  22. Debido a que usaremos /dev/shm para almacenar los archivos de memoria, tenemos que aumentar el tamaño de éste. Para esto, utilizaremos el siguiente comando:

    50.png

  23. Confirmamos que el tamaño de /dev/shm cambió usando el siguiente comando:

    51.png

    Vemos que el tamaño que se muestra es 32GB, por lo cual el comando anterior fue exitoso.

  24. Es mejor si sacamos los directorios steemd y cli_wallet hacia la carpeta del usuario ya que es mas facil acceder a estas carpetas así. Seleccionaremos ambas carpetas y presionaremos CTRL+X en el teclado para cortar.

    53.png

  25. Y pegamos la carpeta en el directorio del usuario presionando CTRL+V en el teclado:

    54.png

  26. Borraremos todos los archivos que están dentro de la carpeta witness_node_data_dir/blockchain. Seleccionamos los archivos y presionamos SHIFT+DELETE en el teclado para borrarlos permanentemente:

    55.png

  27. Verificamos si la descarga del block_log terminó. De ser así, vamos a Downloads y cortamos el archivo presionando CTRL+X:

    56.png

  28. Pegaremos el archivo en witness_node_data_dir/blockchain:

    57.png

¡Ya estamos listos para sincronizar con la red!

Sincronizar el nodo con la red:

  1. En la carpeta de steemd, correremos el comando ./steemd --replay:

    59.png

  2. Veremos que se quedará en este paso por unos minutos. Si tenemos un SSD (Solid State Disk), esto tomará poco tiempo, pero si tenemos un HDD (Hard Disk Drive o Disco Duro), esto tomará un poco más:

    60.png

  3. Luego veremos cómo los porcientos van aumentando poco a poco. Hasta ahora está todo bien. Esto podrá tomar algunas horas, dependiendo de las capacidades de tu equipo. En mi PC, tarda aproximadamente una hora:

    61.png

  4. Una vez termina la sincronización inicial del archivo block_log, tenemos que descargar los bloques que han sido producidos para sincronizar completamente. Veremos lineas como la siguiente:

    62.png

  5. Una vez veamos líneas como las que se muestran ahora, nuestro witness está sincronizado con la red:

    63.png

Activar nuestro Witness:

Ya lo que nos falta es activar nuestro Witness. En estos momentos, deberías estar preparando un post anunciando que eres un witness e invitando a la comunidad a votar por tí. Los votos son muy importantes. Mientras más votos de gente que tenga más SP, mejor será.

Es importante que en tu post utilizes las etiquetas *witness y witness-category. Algunos también utilizan la etiqueta witness-update cuando hablan sobre su witness.

  1. Una vez tengas tu post redactado, lanzaremos cli_wallet nuevamente para activar nuestro witness:

    64.png

  2. Desbloqueamos la cartera:

    65.png
    .

  3. En nuestro archivo de las llaves sugeridas, copiaremos la pub_key:

    66.png

  4. Ahora, anunciamos nuestro witness con la red usando el siguiente comando:
    update_witness "usuario" "https://link del post" "pub_key (llave pública)" {"account_creation_fee":"0.200 STEEM","maximum_block_size":65536,"sbd_interest_rate":100} true,
    cambiando el link del post hacia tu post y pegando la llave publica.

    Otros parametros que puedes definir es el precio para crear cuenta account_creation_fee el cual tengo configurado a 0.200 STEEM; el tamaño de los bloques en bytes: maximum_block_size, el cual tengo configurado a 65536 o 64KB; y sbd_interest_rate el cual es el interes de los SBD anual (APR), que tengo configurado a 1%. Un ejemplo de cómo debe quedar este comando es así:

    67.png

    NOTA: Esta llave no es la que usa mi witness actualmente. Solamente está ahí para propósitos demostrativos.

  5. Si todo está bien, veremos el mensaje de confirmación así:

    68.png

¡Felicidades! Ya tu witness está activado y listo para producir bloques. ¡Recuerda hacer campaña para que te voten! Una buena estrategia es escribir al final de tus posts que te voten como Witness, tal y como lo hago yo 🙂.

Ahora bien, ser Witness no es solo dejar el witness funcionando. Algo muy importante es actualizar el price feed. Para esto, utilizamos el siguiente comando:
publish_feed usuario {"quote":"1.000 STEEM", "base":"1.080 SBD"} true

Cambiando ese 1.080 SBD por otro valor. Puedes ver los valores que usan los witnesses en https://steemd.com/witnesses y usarlos como referencia:

Para cambiar el Price Feed de tu witness, lanzaremos cli_wallet :

64.png

Luego, utilizaremos el comando mencionado arriba. Un ejemplo en mi caso es el siguiente:

pricefeed1.png

Si todo sale bien, veremos la confirmación:

pricefeed2.png

¡Ahora sí! ¡¡¡¡Eres un witness en la comunidad!!!!

P.S. Puedes verificar cuanta RAM tienes libre en tu equipo usando el comando free. Para ver cuanto espacio has usado en el /dev/shm, puedes usar df -h /dev/shm:

free and df -h.png

Herramientas útiles:


Para los que corren su nodo en Hyper-V ¡Checkpoints!

Aquí es donde viene la ventaja de usar Hyper-V. Podemos crear "checkpoints" el cual nos guardará el estado de la máquina virtual. De esta manera, podemos recuperar y seguir siendo witnesses sin necesidad de resincronizar con la red, ya que basta con una simple restauración del checkpoint y esperar a que se descarguen los nuevos bloques.

Para generar el checkpoint:

  1. Selecciona la máquina virtual y en el menú de la derecha, selecciona Checkpoint:

    Checkpoints-Hyper-V.png

  2. Veremos que se está creando el Checkpoint:

  3. Una vez creado, saldrá en la sección de Checkpoints:

Restaurar el Checkpoint:

Digamos que tu equipo reinició por algúna falla. Usualmente cuando la máquina virtual reinicia, veremos el escritorio limpio, sin nada, y tenemos que volver a correr steemd y sincronizarlo. Para evitarnos todo esto, simplemente Restauramos el checkpoint.

Para esto, seleccionamos el checkpoint seguido por Apply:

Confirmamos que queremos aplicar el Checkpoint oprimiendo en Apply:

El Checkpoint será aplicado:

Y veremos nuestro witness funcionando, como si nada hubiese sucedido 😁:

Hyper-V es virtualización, pero es a Nivel 1. En otras palabras, la máquina virtual se ejecuta a nivel de hardware y no a base de software como lo son VirtualBox y VMWare Workstation/Player. Esto hace que nuestro witness sea mucho más estable y funcione con mejor rendimiento.

Utilización de recursos en Windows mientras se usa Hyper-V:

Como pueden observar, Steemd utiliza recursos mínimos con la excepción de la RAM, pues Hyper-V le asigna la RAM a la máquina virtual a medida de que sea necesario. Debido a que el CPU no es usado casi nada, esto nos permite realizar otras tareas en nuestro equipo.

¡Espero que les haya gustado esta segunda parte del tutorial y...

¡Recuerda votarme como Witness!

Si te gusta todo lo que hago, dame tu voto de Witness. Es muy sencillo. Sólo tienes que ir a https://steemit.com/~witnesses y escribir mi nombre de usuario moisesmcardona como se muestra en la imagen a continuación. Luego, presiona el botón de Vote:

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  trending
Este articulo fue votado por @provenezuela

Iniciativa cuyo objetivo es incentivar las relaciones de redes humanas, conectando a todas las personas de la lengua más hermosa del mundo.

Gracias por tu trabajo de calidad @moisesmcardona

Esta iniciativa fue creada para USTEDES los AUTORES

Gracias al apoyo de los Witnesses que han trabajado arduamente con nosotros de la comunidad @chitty , @nnnarvaez , @moisesmcardona . ¡Los invitamos a votar por ellos!

Esta es una publicación interesante, acabo de ver y leer artículos como yo @moisesmcardona

¡Impresionante tutorial!

Demasiado interesante las oportunidades que nos da Steemit, que esfuerzo te llevo hacer ese tutorial tienes mi voto ya mismo.

Wow que groso mi amigo @moisesmcardona.
Gran trabajo. felicitaciones.