WEB3DEV Español

Cover image for sbt-ethereum — Una Herramienta para Interactuar con Ethereum Blockchain a través de la Línea de Comandos
Paulo Gio
Paulo Gio

Posted on

sbt-ethereum — Una Herramienta para Interactuar con Ethereum Blockchain a través de la Línea de Comandos

¡Una forma simple y elegante de desarrollar/desplegar contratos inteligentes y más!

https://miro.medium.com/v2/resize:fit:2000/format:webp/1*kR1YJKx8rTXqCgyVwT1JVg.jpeg

Foto de Hannah Joshua en Unsplash

Hoy vamos a hablar de una increíble herramienta de desarrollo de Ethereum, que cambiará su vida como desarrollador de Ethereum para siempre 😎

sbt es una herramienta de construcción de código abierto para proyectos de Scala y Java, similar a Maven y Ant de Java.

sbt-ethereum

sbt-ethereum es una excelente herramienta que permite a desarrolladores y aficionados empezar a trabajar con Ethereum en cuestión de minutos.

sbt-ethereum tiene como objetivo los siguientes objetivos:

  • Una plataforma de texto interactivo en la que los "aficionados", personas que no son programadores, pero que están dispuestas a dedicar un poco de tiempo a aprender, pueden interactuar con Ethereum (y otras blockchains compatibles), y hacerlo con un gran nivel de potencia y sofisticación.
  • Una herramienta de publicación para aplicaciones de contratos inteligentes de Ethereum, ya que los repositorios de sbt-ethereum se esfuerzan por ser portátiles, y permitir tanto la implementación de nuevas instancias de contratos inteligentes como la interacción conveniente con los contratos inteligentes ya implementados.
  • Para aquellos que son (o desean ser) programadores, un rico entorno de desarrollo para los contratos inteligentes de Ethereum.
  • Una herramienta de integración, que facilita el desarrollo de bibliotecas y aplicaciones Scala de alto rendimiento que interactúan con los contratos inteligentes de Ethereum.

Si eres un desarrollador principiante, la principal fricción surge al configurar el nuevo proyecto/tecnología. sbt minimiza esa dificultad y te enseña a trabajar con la blockchain de Ethereum a través de la interfaz de línea de comandos (CLI).

¿Línea de comandos? ¿No es difícil?

No, sbt mantiene las cosas básicas y maneja mucho detrás de escena para mantener las cosas simples.

¿Qué proporciona sbt-ethereum?

  • Funcionalidad de billetera
  • Funcionalidad de desarrollo de contratos inteligentes
  • Interacciones con la blockchain de Ethereum
  • Soporte ENS
  • Integración de Etherscan

¡Sí! Todo lo anterior a través de la línea de comandos. Ahora veamos sbt-ethereum en acción.

Instalación

Usaremos Ubunsu (si estás utilizando Windows, sigue estas instrucciones).

Clona este repositorio de GitHub:

git clone https://github.com/swaldman/eth-command-line.git --branch 0.1.10
Enter fullscreen mode Exit fullscreen mode

Ahora, ve dentro del directorio:

$ cd eth-command-line
Enter fullscreen mode Exit fullscreen mode

Si haces ls, puedes ver los siguientes archivos:

$ ls 
LICENSE    README.md    build.sbt    
project    sbtw
Enter fullscreen mode Exit fullscreen mode

Aquí, sbtw es un script contenedor que instalará sbt.

$ ./sbtw
Enter fullscreen mode Exit fullscreen mode

Como sbt-ethereum es una herramienta interactiva, durante la instalación hará algunas preguntas para configurar su billetera. También puedes configurar una billetera más tarde, pero por ahora, verás preguntas como 👇

There are no wallets in the sbt-ethereum keystore. Would you like to generate one? [y/n] y

Would you like the new address
'0x1144f4f7aad0c463c667e0f8d73fc13f1e7e86a2' to be the default sender on chain with ID 1? [y/n] y
Enter fullscreen mode Exit fullscreen mode

Ejecutando Comandos en sbt-ethereum

sbt-ethereum busca la simplicidad y proporciona comandos fáciles de leer. Por ejemplo, utiliza ethAddressAlias en lugar de algo como etaa, eta. Esto hace que los comandos sean más grandes y difíciles de escribir, por eso sbt admite finalización de pestañas enriquecidas (rich tab completions). Puedes consultar la lista completa de comandos sbt aquí.

Haciendo Respaldos

Sus billeteras y alias de direcciones, así como otra información como su historial de transacciones, compilaciones de contratos inteligentes, y ABIs de contratos con los que interactúa, se almacenan en la "shoebox" (caja de zapatos) de sbt-ethereum, a la que querrá acostumbrarse a hacer respaldos. Por ello, se recomienda usar el comando ethShoeboxBackup (que no acepta argumentos).

El comando es interactivo. Nos pedirá un directorio en el que nos gustaría almacenar las copias de seguridad (que se conservarán — ¡en la shoebox! — para su posible reutilización en el futuro). Proporciona un directorio adecuado para su sistema. Puedes querer hacer una copia de seguridad en una unidad flash o un disco externo, así que si algo le sucede al disco duro de su computadora, tienes una copia en otro lugar.

Podemos restaurar nuestra shoebox, si algo malo sucede, desde el archivo generado utilizando ethShoeboxRestore.

Conecta su QuikNode a sbt-ethereum

Podemos conectar nuestro nodo Ethereum a sbt-ethereum (sbt puede tener un nodo ETH predeterminado que puedes usar para pruebas, sin embargo, su documentación recomienda usar un nodo personal para fiabilidad y rendimiento).

Regístrate en QuikNode, si quieres la experiencia más rápida y mejor para interactuar con un nodo Ethereum.

Recuerda que puedes usar TAB para completar tus comandos. Vamos a conectar a nuestro nodo Ethereum (oculté mi URL Web3 de QuikNode, puedes obtener la suya aquí.)

sbt:eth-command-line> ethNodeUrlDefaultSet https://xxxx-xxxx-xxxx.quiknode.io/uuid/token/
Enter fullscreen mode Exit fullscreen mode

Para verificar el URL del nodo actual, ejecutemos el comando para verificar el número de bloque más reciente:

sbt:eth-command-line> ethNodeBlockNumberPrint
Enter fullscreen mode Exit fullscreen mode

Puedes anular o cambiar su configuración de Nodo predeterminada siempre que quieras.

Para eso, sbt proporciona los siguientes comandos:

ethNodeBlockNumberPrint ethNodeChainId 
ethNodeChainIdDefaultDrop ethNodeChainIdDefaultPrint ethNodeChainIdDefaultSet
ethNodeChainIdOverride ethNodeChainIdOverrideDrop ethNodeChainIdOverridePrint ethNodeChainIdOverrideSet ethNodeChainIdPrint
ethNodeUrl ethNodeUrlDefaultDrop 
ethNodeUrlDefaultPrint ethNodeUrlDefaultSet 
ethNodeUrlOverride
ethNodeUrlOverrideDrop ethNodeUrlOverridePrint 
ethNodeUrlOverrideSet ethNodeUrlPrint
Enter fullscreen mode Exit fullscreen mode

Usando Alias

Todos saben que trabajar con direcciones puede ser problemático. Nosotros, los humanos, no estamos diseñados para trabajar con valores hexadecimales (las máquinas sí) — por lo que recordarlos o incluso emparejarlos correctamente puede ser difícil. Es por eso que sbt utiliza alias para direcciones. Ya agregó un alias para su dirección predeterminada: para comprobarlo, ejecuta el siguiente comando:

sbt:eth-command-line> ethAddressAliasList
Enter fullscreen mode Exit fullscreen mode

Verás un "default-sender" delante de su dirección. Para agregar un nuevo alias para una dirección o un alias existente, simplemente utiliza este comando:

ethAddressAliasSet new-name default-sender
Enter fullscreen mode Exit fullscreen mode

Para verificar un alias, puedes ejecutar ethAddressAliasList nuevamente.

Comandos de billetera

Para administrar billeteras, direcciones y claves, vamos a revisar algunos comandos proporcionados por sbt.

Crear una nueva billetera

ethKeystoreWalletV3Create
Enter fullscreen mode Exit fullscreen mode

Este comando crea una nueva billetera JSON "v3" eth-rpc que representa una dirección de Ethereum y una clave privada cifrada con código de acceso en el almacén de claves (keystore) "shoebox" de sbt-ethereum.

El comando ethKeystoreList muestra las direcciones de Ethereum en el almacén de claves "shoebox" de sbt-ethereum y cualquier alias asociado con esas direcciones.

Para verificar la clave privada de su billetera, utiliza el siguiente comando:

ethKeystorePrivateKeyReveal <dirección hexadecimal> o <nombre de alias>
Enter fullscreen mode Exit fullscreen mode

Importar billetera

Hay varias formas de importar una billetera a sbt. Veamos una por una:

1.Utilizando claves privadas: puedes importar una billetera a sbt utilizando claves privadas.

ethKeystoreWalletV3FromPrivateKeyImport
Enter fullscreen mode Exit fullscreen mode

2.Usando JSON v3 de eth-rpc

> ethKeystoreWalletV3FromJsonImportV3 Wallet JSON: {"address":"d78fe1d978ad8cc5a94484725d059bec694f215e","crypto":{"mac":"98c53c7d05c7daeb1b8d2bef6af8643bf679a73a34d014f09a45f7035088f89b","kdf":"pbkdf2","cipherparams":{"iv":"70c4340f5305dca3fad9e54d47db4a2b"},"ciphertext":"9a2fc0212827877068d5a54f0ad64fab8767d52849535305e984682db25be23d","cipher":"aes-128-ctr","kdfparams":{"salt":"b9562670465f5ec13a4babe91aea6bd41d3400dfb0f97b1fb21617cbd62e9782","dklen":32,"c":262144,"prf":"hmac-sha256"}},"id":"f2f3bad7-4da0-424b-a363-fde7a6e3cb49","version":3}
[info] Imported JSON wallet for address '0xd78fe1d978ad8cc5a94484725d059bec694f215e', but have not validated it.
[info] Consider validating the JSON using 'ethKeystoreWalletV3Validate 0xd78fe1d978ad8cc5a94484725d059bec694f215e'.
[success] Total time: 3 s, completed Mar 16, 2019 12:35:14 AM
Enter fullscreen mode Exit fullscreen mode

¡Valide siempre su billetera después de importarla! Para validar la billetera, use el siguiente comando:

ethKeystoreWalletV3Validate <dirección hexadecimal> o <nombre de alias>
Enter fullscreen mode Exit fullscreen mode

Para imprimir el JSON de la billetera (v3), ejecuta el siguiente comando:

ethKeystoreWalletV3Print <dirección hexadecimal> o <nombre de alias>
Enter fullscreen mode Exit fullscreen mode

Conclusión

sbt ofrece una funcionalidad rica y profundizaremos en ella en futuros artículos. Podemos crear contratos inteligentes y también nombres ENS utilizando la herramienta de línea de comandos sbt. En el próximo artículo, crearemos, implementaremos y leeremos un contrato inteligente utilizando sbt-ethereum.

Lectura adicional:

Acerca de QuikNode

QuikNode está construyendo infraestructura para apoyar el futuro de Web3. Desde 2017, hemos trabajado con cientos de desarrolladores y empresas, ayudando a escalar dApps y proporcionando nodos Ethereum de alto rendimiento. Estamos trabajando en algo interesante desde hace meses y lanzaremos pronto, ¡así que suscríbase a nuestro boletín para obtener más actualizaciones! 😃

Artículo original publicado por Gaurav Agrawal. Traducido por Paulinho Giovannini.

Discussion (0)