Publicando tu primer Contrato Inteligente en IOST

in #iost6 years ago

Claves para entender IOST.png

Abajo encontrarás una guía sobre cómo construir un contrato inteligente (smart contract) y como publicarlo a través de la línea de comando en IOST. Esta guía es para desarrolladores interesados en crear contratos inteligentes de IOST usando JavaScript. Antes de entrar en código, vamos a ver los básicos de Aplicaciones Descentralizadas (DApps), evaluando las aplicaciones de contratos inteligentes.

El valor de las DApps

Las DApps dan valor economizando recursos digitales, creando medios para monetizar bienes digitales que de otra manera serían difíciles de intercambiar. Esto permite una presión competitiva que afecta el precio de los bienes digitales, incrementando los rangos de valores y permitiendo un mercado más amplio. Las aplicaciones descentralizadas permiten la distribución de tokens para desarrollos, recolectas de fondos y minería.

Las DApps son una alternativa para conducir transacciones y están siendo usadas para:

  • Permitir registros como contratos inteligentes;
  • Ayudar a prevenir fraudes por el uso de tokens;
  • Permitir la creación de corporaciones de distribución autónomas o DACs (siglas en inglés para “distributed autonomous corporations”).

Si buscas construir una DApp, aplica los siguientes criterios deben ser aplicados:

  • Una aplicación debe operar de forma autónoma, ser de código abierto, la aplicación no tiene capacidad de controlar la mayoría de sus tokens.
  • La aplicación debe ser descentralizada y aprovechar la tecnología blockchain.
  • La aplicación genera tokens (aplicando el algoritmo general criptográfico). Esto prueba que los nodos de valor están contribuyendo con la DApp.

Usando Contratos Inteligentes

Un contrato inteligente es una fuente de código que tiene la habilidad de regular, conducir e implementar un acuerdo. Al final, los contratos inteligentes son procesos lógicos dependientes de la blockchain con la que interactúan.

Contratos Inteligentes: Oportunidades

  • Certeza de código
  • Costo-efectividad con relación a transacciones continuas de bajo costo
  • La descentralización reduce el riesgo de pérdida permanente de datos y corrupción.
  • La transparencia puede asistir efectivamente en la regulación de mercados.

Contratos inteligentes: Contratiempos

  • No pueden aplicar ambigüedad deliberada.
  • Comparado a computos centralizados, la descentralización puede ser más ineficiente y de mayor costo.
  • La falta de control centralizado puede ser un problema para reguladores
  • Los inversionistas financieros pueden tener preocupaciones relacionadas con la transparencia

Crear un Contrato Inteligente en IOST usando la Línea de Comando

Para iniciar esta guía, instalamos iwallet, que es la herramienta para la línea de comando del blockchain de IOST. Puedes usar esta herramienta para conectar la blockchain IOST para transferir monedas, crear cuentas, consultar saldos o pedir contratos. Tanto iwallet como API usan RPC API internamente, y tienen características similares. Si quieres conocer iwallet, puedes encontrar nuestra guía de instalación (en inglés) aquí: Command Line Wallet Tool.

1. Importando la cuenta inicial para iwallet

Necesitas importar una cuenta antes de poder usar iwallet, intenta configurar un admin local usando el siguiente comando:
iwallet account import admin 2yquS3ySrGWPEKywCPzX4RTJugqRh7kJSo5aehsLYPEWkUxBWA39oMrZ7ZxuM4fgyXYs2cPwh5n8aNNpH5x2VyK1

2. Escribiendo tu primer contrato

Vamos a preparar tu primer contrato escribiendo un JavaScript class, por ejemplo HelloWorld.js

class HelloWorld { init() {} // necesita proveer una función init que será llamada durante el despliegue. hello(someone) { return “hello, “+ someone } } module.exports = HelloWorld;

IOST1.png

El contrato inteligente posee una interfaz que recibe lo ingresado, y luego regresa hello, + enter. Para permitir que esta interface llame al contrato inteligente externo, necesitas generar el archivo ABI usando la línea de comando (nota: por favor asegurate de tener instalado Node.js y correr npm installcommand dentro del archivo iwallet/contract:

iwallet compile HelloWorld.js

Esto generará un archivo HelloWorld.js.abi para ti, o alternativamente, puedes prepararlo de forma manual:

{ “lang”: “javascript”, “version”: “1.0.0”, “abi”: [ { “name”: “hello”, “args”: [ “string” ] } ] }

IOST2.png

3. Publiquemos nuestro contrato vía línea de comando:

Publicar al nodo de prueba local

iwallet \ — expiration 10000 — gas_limit 1000000 — gas_ratio 1 \ — server localhost:30002 \ — account admin \ — amount_limit ‘*:unlimited’ \ publish HelloWorld.js HelloWorld.js.abi

IOST3.png

Muestra de Salida

IOST4.png

Prueba el llamado ABI

iwallet \ — expiration 10000 — gas_limit 1000000 — gas_ratio 1 \ — server localhost:30002 \ — account admin \ — amount_limit ‘*:unlimited’ \ call “Contract96YFqvomoAnX6Zyj993fkv29D2HVfm8cjGhCEM1ymXGf” “hello” ‘[“developer”]’ # contract id needs to be changed to the id you received

IOST5.png

Salida

IOST6.png

Recibo de transacción

Luego de eso, puedes obtener el recibo TxReceipt en cualquier momento siguiendo el siguiente comando:
iwallet receipt GTUmtpWPdPMVvJdsVf8AiEPy9EzCBUwUCim9gqKjvFLc

O alternativamente, usando una solicitud HTTP

curl -X GET \ http://localhost:30001/getTxReceiptByTxHash/GTUmtpWPdPMVvJdsVf8AiEPy9EzCBUwUCim9gqKjvFLc

¡Felicidades!

Tu contrato debe estar activo en este instante, podrás ver en tu consola el regreso del comando ‘Hello World’. Esta llamada será registrada de forma permanente por IOST y no puede ser saboteada o corrompida. Ahora puedes construir un token digital intercambiable que pueda ser usada como moneda, representar un bien, una acción digital, la prueba de pertenencia o lo que desees.

PS: IOST desea presentar su agradecimiento sincero a @Corlyne O’Sullivan en la comunidad de desarrolladores de IOST por enviar amablemente este artículo a IOST.

Artículo orginalmente publicado en inglés aquí

Web oficial: https://iost.io

IOST Venezuela Servi Node


Mantente en contacto

Web
Discord
Telegram
Facebook
Twitter
Instagram
Reddit
Mail

Sort:  

Congratulations @iostvenezuela! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You received more than 250 upvotes. Your next target is to reach 500 upvotes.

You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

Do not miss the last post from @steemitboard:

The Steem blockchain survived its first virus plague!
Vote for @Steemitboard as a witness to get one more award and increased upvotes!