Como ser Witness en Creary

Para los que me conocen saben que soy fanático de las criptomonedas y uno de los proyectos que mas me gustan es el de la criptomoneda Creary que he seguido desde sus inicios como Creativecoin. Y como usa una blockchain como Steemit, no quería esperar para convertirme en Witness.

Un witness (testigo) es un usuario que ayuda a que la red de una blockchain (en este caso CREA) se mantenga a flote, ademas que representa a todos los usuarios que le dan su voto y confianza que los represente en la red. El servidor de un witness debe estar en funcionamiento todo el tiempo, por lo que debe ser confiable para que la red se mantenga estable.

El posicionamiento de un testigo se define por los usuarios que lo votan y en crea los primeros 24 testigos posicionados producen bloques y firman transacciones, mientras que del 25 en adelante es seleccionado al azar en cada ronda para producir dichos bloques.

Hay que recordar que para ser testigo debes tener conocimientos de programación y mas que nada saber gestionar y dar mantenimiento a tu servidor, pero en cualquier cosa puedo brindarte ayuda en el proceso o puedes consultar la comunidad en Discord de la comunidad de Creary.

Antes de comenzar, te invito a votar por belial2412, chibido y por mi shadowmyst como testigo en https://creary.net/~witness ya que los tres estamos votando los post interesantes ademas de desarrollar Dapps para la comunidad en Creary.

Por ultimo quiero agradecer a Andersson (CTO/Blockchain Core de Creary) por las asesorias que me dio para poderme volver Witness.

Configurar nuestro nodo con Docker y anunciar nuestro usuario como Witness)

Tener un VPS

Recordemos que como debe ser un servidor conectado y prendido 24/7, es mejor que compremos un VPS como recomendación OVH, Contabo que son con las que he trabajado y el VPS debe tener como mínimo las siguientes características.

CPU: Dual core @ 2GHz o superior por núcleo.
Memory: 4GB (8 GB para estar preparado para el futuro)
Bandwidth: 1 Gbit/s
Storage: Minimo , 25 GB. Recomendado 50GB para el futuro.

Un poco de seguridad con el SSH

Para protegernos un poco de los ataques es recomendable que en nuestro VPS quitemos el acceso SSH por contraseña y que sea solo nuestro equipo con el que pueda acceder.

Para esto creamos una llave SSH protegida por contraseña con el siguiente comando:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

Copia el contenido de ~/.ssh/id_rsa.pub en una línea en ~/.ssh/authorized_keys en tu servidor o usa el comando:

ssh-copy-id <user>@<ip-server>

Prueba la conexión usando la clave publica SSH. Esto es vital para desconectar el inicio de sección con contraseña.

Una vez comprobado esto, hay que desactivar la comprobación por contraseña del SSH. Edita el archivo /etc/ssh/sshd_config, busca la linea #PasswordAuthentication yes y cámbiala por PasswordAuthentication no. Guarda los cambios y reinicia el servicio ssh:

sudo service ssh restart

Anunciarte como Witness

Tenemos que empezar a anunciarnos en la blockchain como witness, para ello tenemos que instalar NodeJS usando NVM, para ello podemos seguir las intrucciones encontradas en https://github.com/nvm-sh/nvm. Y una vez instalado NVM, la versión de NodeJS que pondremos sera la 10.15.3, esto haciendolo como Root, ya que docker funciona como root.

Cuando lo tengamos instalado, instalaremos una herramienta de Creativechain que encontraremos en https://github.com/creativechain/creary-tools/wiki/Witness-Tools o para mas fácil con el comando:

npm install -g @creativechain-fdn/creary-tools

Este es un proyecto que provee de comandos utiles para varios tipos de usuarios en crea y el cual usaremos justamente para anunciarnos como Witness. Una vez instalado pasamos con el siguiente comando

crea-witness update <MiClaveActivaPrivada> <nombretestigo> <nombreusuario> "<enlacePromociondelTestigo>" <ClavePublicaParaFirmarBloques> <props>

Lo explico para que no se hagan vueltas:

  • MiClaveActivaPrivada: La encontraran en su perfil de creary en la seccion de permisos y dandole en “show private key” de la seccion “active”
  • nombretestigo: Es el nombre que le pondremos al testigo
  • nombreusuario: Es nuestro nombre de usuario por lo general se repite con el nombre de testigo ejemplo de mi caso “shadowmyst shadowmyst”
  • EnlacePromociondelTestigo: Puede ser tu perfil de creary o en mi caso mi pagina web
  • ClavePublicaParaFirmarBloques: De igual forma puedes usar tu clave publica activa (ya no la privada)
  • props: Son argumentos extra que meteremos

Al final debe quedar algo parecido a esto:

crea-witness update MiClaveActivPrivada shadowmyst shadowmyst "https://creary.net/@shadowmyst" MiClavePublicaParaElTestigo '{"account_creation_fee":"0.010 CREA","maximum_block_size":65536,"cbd_interest_rate":1000}' '0.010 CREA' --node https://nodes.creary.net

En caso de que falle ejecuta:

npm install -g @creativechain-fdn/creary-tools@0.6.1

Bajar la ultima version de Creary con Docker

Una vez que hemos sido anunciados como Witness, es momento de instalar el nodo de CREA, para ello usaremos Docker y así no tener la necesidad de andar compilando todo el nodo.

Para ello podemos instalar docker-ce y seguir las instrucciones que encontraremos aquí, una vez instalado ejecutaremos un script el cual agradezco a Andersson que me lo haya proporcionado.

#!/bin/bash

WITNESS=$1
KEY=$2
IF=$3
CNAME=$4

docker stop node$CNAME
docker rm node$CNAME

#rm -rf /root/miners/$CNAME
#mkdir -p /root/miners/$CNAME/blockchain
#mkdir -p /root/miners/$CNAME/creawallet

docker run -d --name node$CNAME --env CREAD_WITNESS_NAME=$WITNESS --env CREAD_PRIVATE_KEY=$KEY --env NODE_UPDATER=https://crea.owldevelopers.site --env CREAD_SEED_NODES=173.212.209.206:1776 --env USE_FULL_WEB_NODE=true -v /root/miners/$CNAME/creawallet:/var/creawallet -v /root/miners/$CNAME/blockchain:/var/lib/cread/blockchain -p $IF:1776:1776 -p $IF:1886:1886 -p $IF:1996:1996 --restart always -t creary/crea:latest

Lo guardamos con el formato .sh y procedemos a ejecutarlo, procurando que si es la primera ejecución quitemos los “#” en la parte de mkdir ya que se crearan las carpetas donde estará nuestro nodo. Como segunda nota, la parte donde dice “USE_FULL_WEB_NODE=true” esto es por si vas a hacer llamadas al nodo sobre contenido, likes, autores, etc…, deberas dejarlo en true si quieres montarte una dapp, de lo contrario podremos cambiarlo a false o simplemente quitarlo.

para ejecutarlo seria de la siguiente manera

nombrearchivo.sh nombretestigo claveprivadatestigo ipdelvps nombrecontenedor

Y listo tendremos nuestro nodo corriendo que tardara en sincronizarse con los demás nodos dependiendo de lo grande que sea la blockchain y el poder de nuestro VPS, en mi caso tarde de 4 a 5 horas en que se sincronizara.

Si tienen dudas déjenlo en los comentarios y tratare de resolverlas