Opera
Cadena compatible con EVM asegurada por el algoritmo de consenso Lachesis.
Construir el código fuente
Para construir opera
se requieren ambos compiladores Go (versión 1.14 or mayor) y un compilador C. Puedes instalarlos utilizando tu gestor de paquetes favorito. Una vez instaladas las dependencias, ejecute:
El resultado de la construcción es el ejecutable build/opera
.
Ejecutar Opera
Opera
Repasar todas las posibles opciones de línea de comandos está fuera de nuestro alcance aquí, pero hemos enumerado algunas combinaciones de parámetros comunes para que te pongas al día rápidamente sobre cómo puedes ejecutar tu propia instancia de opera
.
Lanzamiento de una red
Necesitará un archivo genesis para unirse a una red.
Lanzamiento del nodo opera
de solo lectura (no validador) para la red especificada por el fichero genesis:
Configuración
Como alternativa a pasar las numerosas flags al binario de opera, también puede pasar un fichero de configuración mediante:
Para hacerse una idea de cómo debería ser el fichero puede utilizar el sub-comando dumpconfig
para exportar su configuración existente:
Validador
Se puede crear una nueva clave privada de validador con el comando opera validator new
.
Para lanzar un validador, tienes que utilizar las flags --validator.id
y --validator.pubkey
para habilitar el emisor de eventos.
opera
le pedirá una contraseña para descifrar su clave privada del validador. Opcionalmente, puede especificar la contraseña con un archivo utilizando el flag --validator.password
.
Participación en el descubrimiento
Opcionalmente puede especificar su IP pública para encaminar la conectividad de la red. Asegúrese de que su puerto TCP/UDP p2p (5050 por defecto) no está bloqueado por su cortafuegos.
Ejecutar Testnet
La red se especifica sólo por su fichero génesis, por lo que ejecutar un nodo testnet es equivalente a utilizar un fichero génesis testnet en lugar de un fichero génesis mainnet:
Puede ser conveniente utilizar un datadir
separado para su nodo testnet para evitar colisiones con otras redes:
Probando
Lachesis tiene una amplia pruebas-unitarias. Utilice la herramienta Go para ejecutar pruebas:
Si todo va bien, debería salir algo parecido a esto:
Red privada (Fakenet)
Fakenet es una red privada optimizada para sus pruebas privadas. Generará una archivo génesis que contendrá N validadores con staking iguales. Para lanzar un validador en esta red, todo lo que necesitas hacer es especificar un ID de validador que estás dispuesto a lanzar.
Presta atención a que las claves privadas de los validadores se generan de forma determinista en esta red, por lo que debes utilizarla sólo para pruebas privadas.
Mantener tu propia red privada es más complicado, ya que muchas de las configuraciones que se dan por sentadas en las redes oficiales necesitan ser configuradas manualmente.
Para ejecutar la fakenet con un solo validador (que funcionará prácticamente como una blockchain PoA), utilice:
Para ejecutar la fakenet con 5 validadores, ejecute el comando para cada validador:
Si tiene que lanzar un nodo no validador en fakenet, utilice 0 como ID:
Después de eso, tienes que conectar tus nodos. Conéctelos estáticamente o especifique un bootnode:
Scripts
iniciar red:
./start.sh
;detener red:
./stop.sh
;limpiar datos y registros:
./clean.sh
;
Puede especificar el número de validadores genesis configurando la variable de entorno N.
Ejemplo de transferencia de saldo
Iniciar red:
Adjuntar js-console al nodo0 en ejecución:
Comprueba el saldo para asegurarte de que node0 tiene algo que transferir (node0 js-console):
la salida muestra el valor del saldo:
Obtén la dirección de nodo1::
la salida muestra la dirección:
Transferir cierta cantidad desde el nodo0 a la dirección del nodo1 como receptor (nodo0 js-console):
la salida muestra el hash único de la transacción saliente:
Comprueba el estado de la transacción por su hash único (js-console):
la salida muestra el número de bloque en el que se incluyó la transacción:
Tan pronto como la transacción se incluya en un bloque, verá el nuevo saldo de ambas direcciones de nodo:
resultados:
Last updated