Skip to content
Snippets Groups Projects
Forked from blockchain / nucleo
208 commits behind, 7 commits ahead of the upstream repository.
Name Last commit Last update
bin
src
.gitignore
README.md

Blockchain Federal Argentina

Sitio web: https://www.bfa.ar/

Repositorio: https://gitlab.bfa.ar/blockchain/nucleo.git

Esta guía debería funcionar en Debian o sus derivados. Testeado en Debian y Ubuntu server sin la GUI instalada en ninguno de ellos.

(Capturas de pantallas instalando un Ubuntu 18.04)
(Capturas de pantallas instalando un Debian 9.5)

  1. Instalá git
    • como root: apt install git
  2. Cloná el repositorio oficial BFA
    • git clone https://gitlab.bfa.ar/blockchain/nucleo.git bfa
  3. Ejecutá el script de instalación. Esto cambiará algunas configuraciones en tu sistema. Si te preocupa (¿debería?), podés ejecutar este escript paso a paso manualmente.
    • como root: bfa/bin/installbfa.sh
      Van a aparecer varios warnings mientras se instala web3. Esto parece ser "normal". Ignorarlo no parece causar problemas.
  4. Cambiá al usuario bfa
    • como root: su - bfa
  5. Comenzá la sincronización. Esto puede llevar un rato largo (este script se ejecuta automáticamente cuando se reinicia el sistema).
    • como bfa: start.sh
  6. Monitoreá los logs con bfalog.sh. Apretá CTRL-C en cualquier momento para detener el tail -f.
  7. Cambiá la configuración de tu nodo usando admin.sh syncmode
    • Hacé esto antes de haber sincronizado mucho en el paso anterior, ya que esto podría remover todos los datos de la cadena que hayas bajado y reiniciar la sincronización de la cadena.
  8. Esperá a aque termine de sincronizar
  9. Herramientas simples super básicas (más bien pruebas de concepto, para inspirar a los programadores):
    • explorer.sh : Sigue el bloque más nuevo "lastest" por default, pero podés especificar un número de bloque cualquiera como argumento, por ejemplo explorer.sh 0 permite ver el génesis (bloque 0).
    • walker.pl : También toma un número de bloque para iniciar. Sigue esperando nuevos bloques.

Hay otros programas "interesantes" en los directorios bin/ y src/, pero para los desarrolladores, el branch dev es más intersante y tambien el (repositorio contrib).

Puede tardarse alrededor de una hora conectarse la primera vez. En el log no se ve nada. Hay que tener paciencia.

start.sh

Inicia un nodo para vos en la red BFA Ethereum.

attach.sh

Te conecta a la línea de comandos (CLI) del geth que está corriendo en tu máquina local (falla si no hay un geth corriendo).

compile.and.deploy.contract

Compila y despliega un smart contract a la blockchain. Debe haber una cuenta (account) local que tenga suficiente Ether para pagar por la transacción.

Argumento 1 es el nombre de archivo del smart contract a compilar.

Ejemplo: compile.and.deploy.contract src/TimestampAuthority.sol

explorer.sh

Scritp simple para mirar bloques

walker.pl

Muestra una línea por bloque que se va sellando en la red, luego espera hasta el siguiente bloque.

rewind.sh

Si tu nodo local parece clavado y sigue conectado, podés probar esta herramienta que va a regroceder algunos bloques en la cadena y tratar de retomar desde allí. Realmente no debería pasar, pero hemos visto algunas veces, mientras había pocos selladores, que algunos nodos se trababan en un side fork.

log.sh

Toma stdin y lo rota sobre una cantidad limitada de archivos de log. Mandamos la salida de geth a través de un pipe a log.sh para poder leer el log.

sendether.sh

Script para mandar Ether a alguien.

MasterDistiller.js

Administra un smart contract de la Destilería ya desplegado. Va a mostrar las cuentas registradas y la cantidad de Ether configurada ("allowance") de cada una de ellas.

sealeradd.sh / sealerrem.sh

Cuando un operador de un sellador vota para promover o remover un sellador, este script hace la mayor parte. Toma un solo argumento, el número de la cuenta del sellador por el cual se vota.

unlock.js

Debloqua las cuentas del sistema (vease tambien monitor.js). Si una cuenta tiene clave, se puede poner la clave con este script.

monitor.js

Esto se corre desde cron.sh. Cada minuto actualizará el archivo network/status que muestra información del estado del nodo muy básica. Tambien habilita sellar/minar si la cuenta (eth.accounts[0]) esta permitido segun la red. Desbloqua cuentas si no tienen passwords.