Crea tu propia billetera Ergo: gestionando Ergo Coins con ErgoTool

This page is machine-translated.
Alexander Slesarenko

31 de diciembre de 2019

Introducción

ErgoTool es una interfaz de línea de comandos (CLI) para
la blockchain de Ergo. Puedes usar ErgoTool sin ejecutar tu
propio nodo de Ergo. Aunque ejecutar un nodo es la forma más segura de comunicarte con la
red de blockchain de Ergo, ErgoTool, sin embargo, tiene como objetivo proporcionar más
herramientas fundamentales a tu disposición. Por supuesto, aún puedes usarlo con tu propio
nodo en funcionamiento.

En esta publicación, recorreremos pasos simples para generar una frase mnemotécnica, crear un
almacenamiento secreto local y usarlo para enviar ERGs entre direcciones, todo con la ayuda de
los comandos de ErgoTool.

Comenzando

Primero que nada, necesitamos instalar ErgoTool en nuestro sistema desde las fuentes siguiendo las
instrucciones de instalación. En el
directorio donde clonamos ErgoTool hay un script ergo-tool.sh que vamos a usar para
ejecutar comandos. Ejecuta el siguiente comando para verificar que ErgoTool esté instalado
correctamente.

$ ./ergo-tool.sh help     
no se especifica el nombre del comando (ejecuta ergo-tool sin argumentos para listar comandos)

Nombre del Comando:	help
Sintaxis de Uso:	ergo-tool help <commandName>
Descripción:	imprime ayuda de uso para un comando
Página de doc:	https://aslesarenko.github.io/ergo-tool/api/org/ergoplatform/appkit/ergotool/HelpCmd.html

Veamos qué obtenemos aquí. ErgoTool muestra el mensaje de error con la información sobre el
comando help. Esta es una salida típica de ErgoTool cuando se especifica uno de los comandos
conocidos, pero se usa incorrectamente. Como podemos aprender del mensaje, el comando help
requiere que especifiquemos un argumento adicional <commandName>. Además, cada comando tiene
una página de documentación API con todos los detalles sobre la ejecución del comando, por lo
que su URL se muestra aquí.

Crear una Nueva Frase Mnemotécnica

Una mnemotécnica es una secuencia aleatoria de caracteres que se utiliza para generar una
clave maestra de acuerdo con la especificación de Billeteras Determinísticas
Jerárquicas
. Para
conveniencia, se utiliza una secuencia aleatoria de palabras en inglés, pero esto no es
requerido.
Ejecuta el siguiente comando para generar una nueva frase mnemotécnica:

$ ./ergo-tool.sh mnemonic          
pájaro puerto trigo inocente negocio enfermedad ocupado rápido amarillo confianza tiempo aceite entrar situar luna

Escríbelo en un papel y guárdalo en un lugar seguro y secreto.
Como medida de seguridad adicional, puedes crear una contraseña mnemotécnica arbitraria.
En cierto sentido, puede servir como una palabra adicional no vocabular en la mnemotécnica.
La contraseña mnemotécnica es opcional y se utiliza para mayor seguridad.
Si decides usar una contraseña mnemotécnica, también debes anotarla y guardarla en un lugar
secreto y probablemente diferente de la mnemotécnica.

Importante, tanto la frase mnemotécnica como la contraseña mnemotécnica son necesarias para
restaurar las claves secretas, si pierdes alguna de ellas, no podrás regenerar tu clave maestra
nuevamente.

A continuación, usemos la mnemotécnica generada para crear un almacenamiento con una clave secreta maestra.

Crear un Nuevo Almacenamiento Encriptado

Para una mejor seguridad, ErgoTool no requiere ni la frase mnemotécnica ni la contraseña para
realizar la firma de la transacción. En su lugar, se requiere la clave secreta del almacenamiento
encriptado para firmar la transacción de gasto. Podemos generar una clave secreta y almacenarla
en un almacenamiento encriptado usando el comando createStorage.

$ ./ergo-tool.sh help createStorage

Nombre del Comando:	createStorage
Sintaxis de Uso:	ergo-tool createStorage [<storageDir>="storage"] [<storageFileName>="secret.json"]
Descripción:	Crea un archivo de almacenamiento encriptado para la mnemotécnica ingresada por el usuario
Página de doc:       https://aslesarenko.github.io/ergo-tool/api/org/ergoplatform/appkit/ergotool/CreateStorageCmd.html

$ ./ergo-tool.sh createStorage 
Ingresa la frase mnemotécnica> pájaro puerto trigo inocente negocio enfermedad ocupado rápido amarillo confianza tiempo aceite entrar situar luna
Contraseña mnemotécnica> 
Repetir contraseña mnemotécnica> 
Contraseña de almacenamiento> 
Repetir contraseña de almacenamiento> 
Archivo de Almacenamiento: storage/secret.json

Se genera una clave secreta maestra a partir del par (frase mnemotécnica, contraseña mnemotécnica) y
se guarda encriptada en el archivo storage/secret.json. La mnemotécnica en sí no se almacena en el
archivo y no hay forma de restaurarla desde el archivo, incluso si conoces las contraseñas.

Por favor, ten cuidado de ingresar la contraseña mnemotécnica correcta, la que elegiste y guardaste antes.
Dado que la contraseña mnemotécnica es opcional, puedes dejarla vacía presionando enter.

Si olvidas la contraseña de almacenamiento (también conocida como contraseña de encriptación), no podrás
usar ese archivo de almacenamiento nunca más, sin embargo, siempre puedes restaurar tus claves secretas a
partir del par (frase mnemotécnica, contraseña mnemotécnica) y así crear un nuevo archivo de almacenamiento
con una nueva contraseña.

Mantén tu archivo de almacenamiento y la contraseña de almacenamiento en secreto, cualquiera que obtenga
ambos, tu archivo de almacenamiento y la contraseña de almacenamiento, podrá descifrarlo y acceder a las
claves secretas.

Extracción de Datos del Almacenamiento

El almacenamiento secreto contiene la clave secreta maestra y, como resultado, puede usarse para calcular
tanto la clave pública como la dirección de pago a la clave pública que corresponden a esa clave secreta. El
comando extractStorage hace precisamente eso.

$ ./ergo-tool.sh help extractStorage

Nombre del Comando:	extractStorage
Sintaxis de Uso:	ergo-tool extractStorage <archivo de almacenamiento> address|masterKey|publicKey|secretKey mainnet|testnet
Descripción:	Lee el archivo, lo desbloquea usando la contraseña y extrae la propiedad solicitada del archivo de almacenamiento dado.
Página de doc:	https://aslesarenko.github.io/ergo-tool/api/org/ergoplatform/appkit/ergotool/ExtractStorageCmd.html 

$ ./ergo-tool.sh extractStorage storage/secret.json address mainnet     
Contraseña de almacenamiento> 
9iHiSAg3ko2ZGxR2vhc1Aem3tShqfzEPDAF7XK5cdtbZ3Ut2CCf

Aquí el comando transforma la clave secreta en la clave pública correspondiente y luego crea
la dirección de pago a la clave pública en la mainnet.

De la misma manera, podemos obtener la clave pública, la clave privada y otros datos del almacenamiento.

$ ./ergo-tool.sh extractStorage storage/secret.json secretKey mainnet
Contraseña de almacenamiento> 
55dfde63c9b6b4f47683592e85ee997ba2e93507f38ba3f9c82933bcfbc677ca

$ ./ergo-tool.sh extractStorage storage/secret.json publicKey mainnet
Contraseña de almacenamiento> 
03f07aecb145a85920bf6e9be80efe5f1cd1a165b45ad3aa8e5c4ca3ba50856bb8

Listando Cajas No Gastadas

ErgoTool tiene el comando especial para listar todas las cajas disponibles (también conocidas como no
gastadas) para una dirección dada.

$ ./ergo-tool.sh listAddressBoxes 9f4QF8AD1nQ3nJahQVkMj8hFSVVzVom77b52JU7EW71Zexg6N8v                                                                
BoxId                                                             NanoERGs          
4840cb6facc20b765085db0ad24768ed0c5e7afd413e8e58e597c33a993f8119  4987000000

si especificamos la opción --print-json, entonces ErgoTool mostrará todas las cajas en formato json

$ ./ergo-tool.sh listAddressBoxes --print-json 9f4QF8AD1nQ3nJahQVkMj8hFSVVzVom77b52JU7EW71Zexg6N8v
[{"boxId":"4840cb6facc20b765085db0ad24768ed0c5e7afd413e8e58e597c33a993f8119","value":4987000000,"ergoTree":"0008cd02472963123ce32c057907c7a7268bc09f45d9ca57819d3327b9e7497d7b1cc347","creationHeight":125646,"assets":[],"additionalRegisters":{},"transactionId":"820c688f4b9d709924ba0186ee930a7df374d8852920bc769fc1f1d0b313e5ab","index":2}]

Transferir Monedas

Ahora, con la clave secreta almacenada de forma segura en el archivo de almacenamiento encriptado, podemos
usar ErgoTool para transferir monedas de nuestra dirección a otra dirección de destinatario. El comando para
hacer eso es send.

./ergo-tool.sh help send                                     

Nombre del Comando:	send
Sintaxis de Uso:	ergo-tool send <storageFile> <recipientAddr> <amountToSend>
Descripción:	enviar el <amountToSend> dado a la <recipientAddr> dada usando 
 el <storageFile> dado para firmar la transacción (solicita la contraseña de almacenamiento)
Página de doc:	https://aslesarenko.github.io/ergo-tool/api/org/ergoplatform/appkit/ergotool/SendCmd.html

El archivo de almacenamiento es necesario para acceder a la clave secreta y generar una firma. La
contraseña de almacenamiento será solicitada por ErgoTool para desbloquear y descifrar el contenido del
archivo. El comando send admite la opción --dry-run que obliga a ErgoTool a crear la
transacción firmada, pero en lugar de enviarla a la blockchain, ErgoTool imprime la
transacción en la consola.

$ ./ergo-tool.sh send --dry-run storage/E1.json 9hHDQb26AjnJUXxcqriqY1mnhpLuUeC81C4pggtK7tupr92Ea1K 5000000
Contraseña de almacenamiento>
Creando probador... Ok
Cargando cajas no gastadas desde la dirección 9f4QF8AD1nQ3nJahQVkMj8hFSVVzVom77b52JU7EW71Zexg6N8v... Ok
Firmando la transacción... Ok
Tx: {
  "id": "2633733a1d81b8fc747d984bdc36fac42cb52118b5057375b081b4c543c62b0e",
  "inputs": [
    {
      "boxId": "4840cb6facc20b765085db0ad24768ed0c5e7afd413e8e58e597c33a993f8119",
      "spendingProof": {
        "proofBytes": "060e7c99c9c9cecf89ec5c3e7b692075e0b3415318f8064c64f7f01401ac29c6637b44535151e51d43d4cd25e05ad459dbe33718a99a22dd",
        "extension": {}
      }
    }
  ],
  "dataInputs": [],
  "outputs": [
    {
      "boxId": "4eaed414ae763158126859bbf912fa9ffb9ea67ac13d81d473b1c81ec65b06fd",
      "value": 5000000,
      "ergoTree": "ErgoTree(0,WrappedArray(),Right(ConstantNode(SigmaProp(ProveDlog(ECPoint(6ba5cf,8ae5ac,...))),SSigmaProp)),80,[B@1117fff48)",
      "creationHeight": 130508,
      "assets": [],
      "additionalRegisters": {},
      "transactionId": "2633733a1d81b8fc747d984bdc36fac42cb52118b5057375b081b4c543c62b0e",
      "index": 0
    },
    {
      "boxId": "059b426fe2aaef10b6a9a618f0c5b4e97d4dd9931328bf4f52bcf92b0943a42c",
      "value": 1000000,
      "ergoTree": "ErgoTree(16,WrappedArray(IntConstant(0), IntConstant(0), ConstantNode(Coll(16,2,4,-96,11,8,-51,2,121,-66,102,126,-7,-36,-69,-84,85,-96,98,-107,-50,-121,11,7,2,-101,-4,-37,45,-50,40,-39,89,-14,-127,91,22,-8,23,-104,-22,2,-47,-110,-93,-102,-116,-57,-89,1,115,0,115,1),Coll[SByte$]), ConstantNode(Coll(1),Coll[SInt$]), IntConstant(1)),Right(BoolToSigmaProp(AND(ConcreteCollection(WrappedArray(EQ(Height$(163),SelectField(ExtractCreationInfo(ByIndex(Outputs$(165),ConstantPlaceholder(0,SInt$),None)),1)), EQ(ExtractScriptBytes(ByIndex(Outputs$(165),ConstantPlaceholder(1,SInt$),None)),SubstConstants(ConstantPlaceholder(2,Coll[SByte$]),ConstantPlaceholder(3,Coll[SInt$]),ConcreteCollection(WrappedArray(CreateProveDlog(DecodePoint(MinerPubkey$(172)))),SSigmaProp))), EQ(SizeOf(Outputs$(165)),ConstantPlaceholder(4,SInt$))),SBoolean)))),4836,[B@111805c40)",
      "creationHeight": 130508,
      "assets": [],
      "additionalRegisters": {},
      "transactionId": "2633733a1d81b8fc747d984bdc36fac42cb52118b5057375b081b4c543c62b0e",
      "index": 1
    },
    {
      "boxId": "0638ddb0fe6a8cc6ca4f981f71777f4a6e8aad72d57fdf945b24e0ef4ca714e1",
      "value": 4981000000,
      "ergoTree": "ErgoTree(0,WrappedArray(),Right(ConstantNode(SigmaProp(ProveDlog(ECPoint(472963,7c85fd,...))),SSigmaProp)),80,[B@111816258)",
      "creationHeight": 130508,
      "assets": [],
      "additionalRegisters": {},
      "transactionId": "2633733a1d81b8fc747d984bdc36fac42cb52118b5057375b081b4c543c62b0e",
      "index": 2
    }
  ]
}

Nota que los scripts "ergoTree" son deserializados e impresos como árboles de sintaxis abstracta. Este
formato de impresión puede ser regulado por opciones adicionales para que los scripts puedan ser
imprimidos como ErgoScript legible por humanos. (Aún no implementado, pero en algún lugar de la hoja de ruta.)

Si excluimos la opción --dry-run, la transacción será enviada e incluida en la
blockchain.

$ ./ergo-tool.sh send storage/E1.json 9hHDQb26AjnJUXxcqriqY1mnhpLuUeC81C4pggtK7tupr92Ea1K 5000000          
Contraseña de almacenamiento>
Creando probador... Ok
Cargando cajas no gastadas desde la dirección 9f4QF8AD1nQ3nJahQVkMj8hFSVVzVom77b52JU7EW71Zexg6N8v... Ok
Firmando la transacción... Ok
Enviando la transacción... Ok
El servidor devolvió el id de tx: "c5710af17f5124a232a5ef731fdf94a493025334c2a7d5a79e9923210972b962"

La transacción recién creada será transmitida por toda la blockchain y los mineros comenzarán
a incluirla en un nuevo bloque. Una vez que el nuevo bloque con nuestra transacción sea minado y
aceptado por la red, nuestra transferencia está confirmada y podemos verla en Explorer.

También podemos listar las cajas de la dirección del destinatario y ver la moneda que creamos entre otras
(hasta que sea gastada por el destinatario)

$ ./ergo-tool.sh listAddressBoxes 9hHDQb26AjnJUXxcqriqY1mnhpLuUeC81C4pggtK7tupr92Ea1K                      
BoxId                                                             NanoERGs          
252c5ce38fc367001ea48fa6813e6252ebc169288d9b5392c572edb55380b3cd  5000000
6df9dbf08b4859b7e280afbd0822dcf20dba5bf8e3e33b78fe278df6597276f1  2000000
d47f958b201dc7162f641f7eb055e9fa7a9cb65cc24d4447a10f86675fc58328  1000000
e050a3af38241ce444c34eb25c0ab880674fc23a0e63632633ae14f547141c37  1000000
b50ed8c2953fd33b52af816c4caa63ec5b6d236a262a5a192534695c3478da78  1000000
26d6e08027e005270b38e5c5f4a73ffdb6d65a3289efb51ac37f98ad395d887c  10000000000

Notas de Seguridad

ErgoTool se creó con la seguridad en mente y hace todo lo posible para salvaguardar el uso de
información sensible como frases mnemotécnicas (que nunca se almacenan de forma persistente),
contraseñas (que nunca se muestran en la pantalla), etc. Además, las claves secretas nunca
se almacenan en el disco local sin encriptar y, por supuesto, nunca se envían a ninguna parte.

Conclusión

ErgoTool está diseñado para lucir y sentirse como una utilidad CLI típica:

  • que es fácil de usar y rápida de ejecutar desde la línea de comandos
  • puede ser scriptable a través de scripts de shell
  • tiene ayuda de uso incorporada

Al mismo tiempo, ErgoTool está diseñado para ser fácilmente extensible:

  • implementado en un lenguaje de alto nivel, Scala
  • reutiliza las bibliotecas centrales que se utilizan en el cliente de la red Ergo
  • de código abierto y completamente documentado

Este último punto es especialmente importante, ya que muchos nuevos comandos pueden ser fácilmente
agregados a ErgoTool, gracias a su arquitectura. Si necesitas una función o un comando específico,
por favor presenta un problema o tal vez incluso un PR.

La extensibilidad de ErgoTool es el tema de la próxima publicación de blog planificada, ¡mantente atento!

Referencias

  1. Sitio de Ergo
  2. Fuentes de Ergo
  3. Ergo Appkit
  4. Ergo Tool

Share post

Ergo Infrastructure DAO: Descentralizando la columna vertebral del ecosistema Ergo

Ergo Infrastructure DAO: Descentralizando la columna vertebral del ecosistema Ergo

La misión de Ergo siempre ha estado arraigada en la descentralización, no solo en la capa de consenso, sino en toda la pila.

Ergo Platform

13 de agosto de 2025

Mew Finance: Un Kit de Herramientas DeFi Divertido para el Ecosistema Ergo

Mew Finance: Un Kit de Herramientas DeFi Divertido para el Ecosistema Ergo

Mew Finance es un conjunto de aplicaciones descentralizadas en la Blockchain de Ergo.

Ergo Platform

12 de agosto de 2025

Lithos: Descentralizando la Minería con Pools On-Chain

Lithos: Descentralizando la Minería con Pools On-Chain

Lithos es un nuevo protocolo diseñado para reformar cómo funcionan los pools de minería al trasladarlos a la cadena, dando a los m.

Ergo Platform

24 de julio de 2025

Sigma 6.0: Un Ergo Más Inteligente y Flexible

Sigma 6.0: Un Ergo Más Inteligente y Flexible

Sigma 6.0 es una importante actualización propuesta para la blockchain de Ergo.

Ergo Platform

23 de julio de 2025

Dando forma al futuro de Rosen: Una llamada comunitaria sobre cinco propuestas clave del Tesoro

Dando forma al futuro de Rosen: Una llamada comunitaria sobre cinco propuestas clave del Tesoro

El cofundador de Rosen, Armeanio, ha presentado cinco nuevas propuestas al Tesoro de Rosen.

Ergo Platform

9 de julio de 2025

El UTXO Ampliado de Ergo y el Auge de la Inteligencia Económica Artificial

El UTXO Ampliado de Ergo y el Auge de la Inteligencia Económica Artificial

Una Visión Práctica para Agentes Económicos Autónomos Los agentes económicos autónomos en la blockchain de Ergo realizan trabajos.

Ergo Platform

12 de mayo de 2025

ErgoHACK X: Inteligencia Artificial en la Blockchain de Ergo

ErgoHACK X: Inteligencia Artificial en la Blockchain de Ergo

Celebrando una Década de Innovación Descentralizada ¡Únete al décimo aniversario de ErgoHACK y sé parte de la revolución de la IA .

Ergo Platform

10 de abril de 2025

Introduccion a Privacidad y Seguridad en la Blockchain

Introduccion a Privacidad y Seguridad en la Blockchain

Luego del primer whitepaper que apareció en Internet en el 2008, la tecnología blockchain evoluciono enormemente.

Ergo Platform

17 de febrero de 2022

Método híbrido de calcular costes de Ergo

Método híbrido de calcular costes de Ergo

Introducción Verificar la validez de los contratos inteligentes en una blockchain de Prueba de trabajo (PoW) tiene costos, tanto.

Ergo Platform (Translated by Darkkknight, original version will always prevail)

9 de febrero de 2022

Ergo: una respuesta a los fallos de la teoría monetaria moderna

Ergo: una respuesta a los fallos de la teoría monetaria moderna

En 2008, un grupo o persona desconocida lanzó un depósito de valor peer-to-peer y lo llamó Bitcoin.

Ergo Platform (Translated by Comet Community, original version will always prevail)

8 de febrero de 2022

Summit de Ergo : Evento para la privacidad

Summit de Ergo : Evento para la privacidad

Únase a nosotros del 17 al 23 de febrero de 2022 para este evento.

Ergo Foundation (translated by Daniu, original version will always prevail)

5 de febrero de 2022

Finanza descentralizada y privacidad opcional en Ergo

Finanza descentralizada y privacidad opcional en Ergo

Privacidad financial y blockchains públicas Bitcoin es una red de contabilidad distribuida pública a la que pueden acceder todos.

Ergo Platform (translated by Daniu, original version will always prevail)

1 de febrero de 2022

Alquiler por almacenamiento y el futuro de la minería

Alquiler por almacenamiento y el futuro de la minería

Terminología Storage Rent: Alquiler por almacenamiento (se entenderá más adelante) Introducción Los mineros son la capa de con.

Ergo Platform (translated by Daniu, original version will always prevail)

27 de enero de 2022

ErgoHack III: Construyendo la privacidad y seguridad del mañana

ErgoHack III: Construyendo la privacidad y seguridad del mañana

Ergo es una plataforma PoW de contratos inteligentes de código abierto basada en principios económicos de base.

Ergo Foundation (translated by Daniu, original version will always prevail)

20 de enero de 2022

Ergo & Blockchain: Escalabilidad y adopción

Ergo & Blockchain: Escalabilidad y adopción

En este episodio de la serie Ergo & Blockchain, veremos varios aspectos de escalabilidad y por qué son cruciales para la adopció.

Ergo Platform (translated by Daniu, original version will always prevail)

18 de enero de 2022

ErgoHack III Información para registrarse

ErgoHack III Información para registrarse

ErgoHack III tendrá lugar en Febrero 11-13, 2022 Registros abiertos hasta el 31 de Enero, 2022 Con el registro ya abierto, exi.

Ergo Foundation (translated by Daniu, original version will always prevail)

6 de enero de 2022

Ergo Rewards de minería: primera reducción de la emisión

Ergo Rewards de minería: primera reducción de la emisión

Las recompensas de la minería Ergo experimentaron su primera caída en el calendario de emisiones el 2 de enero de 2022 con el bl.

Ergo Platform (translated by Daniu, original version will always prevail)

4 de enero de 2022

¡Hola! soy nuevo, ¿por qué es Ergo un buen proyecto?

¡Hola! soy nuevo, ¿por qué es Ergo un buen proyecto?

¿Qué encontrarás en este artículo? Son numerosas las veces que un nuevo ergonauta en potencia entra a uno de los grupos en españo.

Daniu

1 de enero de 2022

Ergo Platform 2021: Resumen de este año

Ergo Platform 2021: Resumen de este año

A medida que el mundo intenta recuperarse de los efectos de Covid y las diferentes etapas de las restricciones de bloqueo, las c.

Ergo Platform (translated by Daniu, original version will always prevail)

30 de diciembre de 2021

Ergo y Blockchain: Tecnología e Innovación

Ergo y Blockchain: Tecnología e Innovación

La idea inicial detrás de Bitcoin se basó en la promesa de un comercio protegido de puntos centralizados de falla.

Ergo Platform (translated by Daniu, original version will always prevail)

28 de diciembre de 2021

Minería en Ergo: Herramientas de descentralización

Minería en Ergo: Herramientas de descentralización

Ergo es una cadena de bloques PoW (Prueba de trabajo) en el modelo de consenso llamado Autolykos.

Ergo Platform (translated by Daniu, original version will always prevail)

23 de diciembre de 2021