La forma rápida de comenzar en Algorand

Ejecutar un nodo en Algorand es un proceso muy rápido y directo.

Sandbox hace que el proceso de creación y configuración de nodos sea perfecto con varios comandos útiles para la administración de contenedores y procesos. Es simplemente una forma rápida y fácil de crear y configurar un nodo Algorand con Docker.

Sandbox simplifica el proceso de configuración y mantenimiento de nodos, lo que le permite girar rápidamente un nodo en contenedores en cualquiera de las tres redes de Algorand, así como administrarlo a través del entorno de sandbox.

Nota: Sandbox está dirigido al aprendizaje y no a la producción.

Primero, asegúrese de tener instalado Docker. Clone el repositorio, que puede encontrar aquí: https://github.com/algorand/sandbox y si está utilizando una Mac, como yo, asegúrese de tener instalado wget. Si usa homebrew como administrador de paquetes, simplemente ejecute:

instalar cerveza wget

Para comenzar, ejecuta el comando up

./sandbox up

Esto hará girar un contenedor acoplable que se predetermina a los binarios de testnet.

Utilice los comandos de Docker para enumerar el contenedor.

contenedor acoplable ls

Esto debería devolver el contenedor que se inicializó desde el comando sandbox anterior. Sandbox gestiona un contenedor activo a la vez. Tenga en cuenta que verá varios contenedores si tiene otros contenedores inicializados de otros procesos de docker.

Puede configurar el sandbox para ejecutar un nodo en cualquiera de las tres redes pasando el nombre de la red:

./sandbox up (mainnet || testnet || betanet)

Tenga en cuenta que cuando ejecute ./sandbox up (NETWORK_NAME) se inicializará con una instantánea y su nodo se sincronizará con la última ronda. Para omitir la inicialización de la instantánea y comenzar a descargar la cadena de bloques de la primera ronda, simplemente pase la bandera -s.

./sandbox up (mainnet || testnet || betanet) (-s)

Si ya ha configurado un entorno limitado para una red específica (ha creado un contenedor acoplable con un entorno limitado y está ejecutando un nodo), puede destruir el entorno y volver a iniciarlo en cualquier momento.

./sandbox down

Ejecutar Docker container ls no debería devolver una ID de contenedor. Girando hacia arriba se hace usando ./sandbox arriba. En este caso, el nodo lo recogerá de la ronda en la que se encontraba cuando se eliminó el entorno de sandbox.

También puede ejecutar ./sandbox clean para detener y eliminar el contenedor y el directorio de datos. Esto es diferente de ./sandbox hacia abajo ya que el contenedor en este caso se elimina.

El comando de prueba ./sandbox es útil porque envía llamadas REST que golpean algod y kmd, así como también ejecuta algunos comandos de objetivo.

~ $ ./sandbox test
Prueba de reenvío de comandos …
~ $ docker exec -it sandbox uname -a
Linux 13ad4f9fd7b8 4.9.184-linuxkit # 1 SMP martes 2 de julio 22:58:16 UTC 2019 x86_64 x86_64 x86_64 GNU / Linux

El resultado del estado del nodo objetivo

Prueba algod …
~ $ docker exec -it sandbox / opt / algorand / node / goal node status -d / opt / algorand / node / data
Último bloqueo comprometido: 4146633
Tiempo desde el último bloque: 0.6s
Tiempo de sincronización: 0.0s
Último protocolo de consenso: https://github.com/algorandfoundation/specs/tree/4a9db6a25595c6fd097cf9cc137cc83027787eaa
Próximo protocolo de consenso: https://github.com/algorandfoundation/specs/tree/4a9db6a25595c6fd097cf9cc137cc83027787eaa
Ronda para el próximo protocolo de consenso: 4146634
Próximo protocolo de consenso compatible: verdadero
Se ha sincronizado desde el inicio: falso
ID de Génesis: testnet-v1.0
Genesis hash: SGO1GKSzyE7IEPItTxCByw9x8FmnrCDexi9 / cOUJOiI =

El resultado de golpear la API algod:

Test Algod REST API …
~ $ curl localhost: 4001 / v1 / status -H "X-Algo-API-Token: $ (cat data / algod.token)"
{ "LastRound": 4146365, "lastConsensusVersion": "https://github.com/algorandfoundation/specs/tree/4a9db6a25595c6fd097cf9cc137cc83027787eaa", "nextConsensusVersion": "https://github.com/algorandfoundation/specs/tree/4a9db6a25595c6fd097cf9cc137cc83027787eaa" , "nextConsensusVersionRound": 4146366, "nextConsensusVersionSupported": true, "timeSinceLastRound": 1243605287, "catchupTime": 0, "hasSyncedSinceStartup": false}

El comando de registros en sandbox es el mismo que ./carpenter -d data, que es la herramienta de depuración de Algorand que lee el archivo de registro de nodo y formatea la salida.

./sandbox logs

Esto devuelve una salida que se ve así

4146536.0.2: BlockPipelined NXY5Z-4146537.0.0 |
4146536.0.2: Voto aceptado (114/2700) RD2VU-4146536.0.1 |
4146536.0.2: Voto aceptado (66/369) RD2VU-4146536.0.2 |
4146536.0.2: Voto aceptado (60/429) RD2VU-4146536.0.2 |
4146536.0.2: Voto aceptado (19/2719) RD2VU-4146536.0.1 |
4146536.0.2: Voto aceptado (70/499) RD2VU-4146536.0.2 |
4146536.0.2: Propuesta aceptada YD2W5-4146537.0.0 |
4146536.0.2: BlockPipelined YD2W5-4146537.0.0 |
4146536.0.2: Voto aceptado (59/558) RD2VU-4146536.0.2 |
4146536.0.2: Voto aceptado (39/597) RD2VU-4146536.0.2 |
4146536.0.2: Voto aceptado (14/611) RD2VU-4146536.0.2 |
4146536.0.2: Voto aceptado (51/662) RD2VU-4146536.0.2 |
4146536.0.2: Voto aceptado (56/718) RD2VU-4146536.0.2 |
4146536.0.2: Voto aceptado (10/728) RD2VU-4146536.0.2 |
4146536.0.2: Voto aceptado (141/2860) RD2VU-4146536.0.1 |
4146536.0.2: Voto aceptado (116/2976) RD2VU-4146536.0.1 |
4146536.0.2: Voto aceptado (56/784) RD2VU-4146536.0.2 |
4146536.0.2: Voto aceptado (63/847) RD2VU-4146536.0.2 |
4146536.0.2: Voto aceptado (59/906) RD2VU-4146536.0.2 |
4146536.0.2: Voto aceptado (66/972) RD2VU-4146536.0.2 |
4146536.0.2: Voto aceptado (79/1051) RD2VU-4146536.0.2 |
4146536.0.2: Voto aceptado (27/1078) RD2VU-4146536.0.2 |
4146536.0.2: Voto aceptado (67/1145) RD2VU-4146536.0.2 |
4146536.0.2: umbral umbral (1145/1112) RD2VU-4146536.0.2 |
4146536.0.0: RoundConcluded RD2VU- |
4146536.0.0: RoundStart RD2VU- |
4146537.0.0: BlockAssembled YD2W5-4146537.0.0 |

Con esta herramienta, puede ver el servicio del acuerdo escribir bloques en el libro mayor en tiempo real.

Sandbox es altamente flexible y puede interactuar con el objetivo de diferentes maneras.

Estado de ./sandbox

Esto devolverá la misma salida que el estado del nodo objetivo ./sandbox

Si está familiarizado con la ejecución de un nodo en Algorand, normalmente usaría el "objetivo" cli de Algorand para administrar su nodo. Puede hacer lo mismo con sandbox ejecutando ./sandbox goal (args) o ejecutando ./sandbox enter, que básicamente pone un shell en sandbox que le permite interactuar con el nodo y ejecutar comandos desde dentro del contenedor.

~ $ ./sandbox enter
Entrando en la sesión / bin / bash en el contenedor sandbox …
root @ 5296a82a0746: / opt / algorand / node $ ls
COPIANDO algokey catchupsrv find-nodes.sh msgpacktool update.sh
algocfg algorand @ .service.template data genesisfiles node_exporter Updater
algod backup ddconfig.sh objetivo sudoers.template
algoh carpenter diagcfg kmd systemd-setup.sh
root @ 5296a82a0746: / opt / algorand / node $

Aquí hay problemas de permisos, por lo que no puede hacer cosas como crear una red privada o configurar testnet o betanet como lo haría tradicionalmente, pero le permite interactuar con el nodo Algorand de cualquier otra manera.

La característica final y más experimental en Sandbox es el tutorial. La ejecución de la introducción de ./sandbox le brinda una excelente guía paso a paso para trabajar con un nodo Algorand que incluye la creación de una billetera, la creación de cuentas, las cuentas de financiación y la transmisión de transacciones a la red.

Demostración de Algorand Sandbox en YouTube

¡Echa un vistazo a sandbox y envía solicitudes de características para mejorar esta gran herramienta!