Catapult: Contratos Inteligentes Desechables
Hola queridos NEMbers,
¡Este artículo debería darle una idea de cómo crear contratos inteligentes desechables con Catapult en sus aplicaciones de software y está escrito dentro del alcance del NEM2 Advent Calendar administrado por nuestra encantadora comunidad japonesa!
Como bien sabrán, Catapult se ha lanzado en su versión Release Candidate, de la que puede encontrar el código fuente en Github. Después de este lanzamiento, el Departamento de Tecnología de la Fundación NEM ha estado trabajando en herramientas para un Testnet público para Catapult.
Entorno de red
Utilizaremos un conjunto de bloques de construcción de la tecnología Catapult que incluyen espacios de nombres, mosaicos (activos), transacciones, bloques, cuentas, metadatos y restricciones. De hecho, escribir su primer contrato inteligente con Catapult es fácil y simple, como lo demostrará este breve caso de estudio.
Con el objetivo de facilitar la integración y ejecutar nuestros contratos inteligentes en Public Testnet for Catapult, utilizaremos el SDK de TypeScript para Catapult. Además, puede usar la aplicación cliente Explorer para verificar los datos que se publican / crean con nuestros contratos inteligentes.
¿Impaciente? Eche un vistazo al código fuente del software nem2-smart-Contract en Github.
En un Código
En la óptica de minimizar el tiempo requerido para la entrega de esta aplicación de estudio de caso, usaremos clime para crear una herramienta de línea de comando como resultado. Esta herramienta nos permitirá centrarnos en nuestro alcance de contratos inteligentes desechables.
El primer paso de este estudio de caso será instalar el software nem2-smart-contratos con su terminal, así como compilar el paquete de software para que pueda usarse en su máquina local. Este paso es bastante simple y puede hacerlo usando su terminal:
Preparando su entorno $ git clone https://github.com/evias/nem2-smart-contracts $ cd nem2-contratos inteligentes && npm install && npm run build |
Ahora podemos usar el paquete nem2-smart-Contract para crear contratos inteligentes desechables. Como verá, en este paquete hay algunos contratos inteligentes desechables que se pueden ejecutar de forma inmediata. Revisaremos cada uno de ellos durante este artículo.
Contrato Inteligente # 1: Creación de Activos Nombrados
Este primer contrato inteligente desechable nos permitirá crear un mosaico (activo), luego registrar un espacio de nombres y publicar un alias para el activo creado. Este contrato inteligente se puede utilizar para crear activos con nombre con Catapult.
Este contrato inteligente consiste en ejecutar los siguientes pasos – atómicamente:
- Crear y configurar un activo con mosaicos.
- Registre un espacio de nombres que caduque después de un año.
- Enlace el espacio de nombres creado al activo creado.
Estos pasos se ejecutarán en una transacción agregada que se transmitirá a Public Testnet for Catapult.
Contrato inteligente para la creación de activos nombrados Particularidad: la particularidad de este contrato inteligente es que después de su ejecución, es posible utilizar su activo recién creado al referirse a él por su nombre. |
Ejecución del contrato inteligente Este contrato inteligente se puede ejecutar varias veces para crear múltiples activos. Asegúrese de hacer una copia de seguridad de la clave privada de la cuenta que se utiliza para generar la cuenta del propietario. $ ./nem2-smart-contracts AssetCreation –name organization.asset –supply 1500000 |
Entradas de contrato inteligentes
Este contrato inteligente desechable acepta las siguientes entradas:
Parametro | Descripción | Ejemplo |
–Nombre | Configure un nombre familiar | --name evias.asset |
–Divisibilidad | Establezca la divisibilidad (número de lugares decimales) | --divisibilidad 2 |
–Circulación | Establezca el suministro inicial (número de unidades) | --supply 10 |
–Banderas | Configure los banderas los mosaicos | --flags SupplyMutable |
Smart Contract # 2: Fideicomiso de activos
Este segundo contrato inteligente desechable nos permitirá realizar un intercambio descentralizado de activos. Este contrato inteligente se puede usar para realizar un intercambio descentralizado de activos entre dos cuentas y usar dos mosaicos diferentes.
Este contrato inteligente consiste en ejecutar los siguientes pasos:
- Crea la transferencia del mosaico M1 de Alice a Bob.
- Crea la transferencia del mosaico M2 de Bob a Alice.
Estos pasos se ejecutarán en una transacción agregada que se transmitirá en la Tesnet Publica para Catapult.
Contrato inteligente para el fideicomiso de activos Particularidad: la particularidad de este contrato inteligente es que bloquea los fondos para ambas cuentas hasta que ambas partes hayan confirmado la intención del canje. |
Ejecución del contrato inteligente Este contrato inteligente se puede ejecutar varias veces para depositar fondos con diferentes partes. Los contratos de depósito caducan después de 48 horas si una de las dos partes involucradas no confirma la transacción. $ ./nem2-smart-contracts AssetEscrow –asset1 10 nem.xem –asset2 1 theater.ticket –taker 4574367DCF64AE285AEA5BA69B9EE7F507DB43FCA3CBB45C201DAC9639D4F3B4 |
Parametro | Descripción | Ejemplo |
–Asset1 | Establece el activo de la izquierda | --asset1 10 nem.xem |
–Asset2 | Establece el activo de la derecha | –asset2 1 theater.ticket |
–taker | Establece la clave pública de la cuenta derecha (taker) | --taker 4574...F3B4 |
–lock | Configure los banderas los mosaicos | --flags SupplyMutable |
Smart Contract # 3: Solicitar mosaico de un amigo
Este tercer contrato inteligente desechable nos permitirá solicitar mosaico a un amigo. Este contrato inteligente se puede utilizar para solicitar activos de otras cuentas.
Este contrato inteligente consiste en ejecutar los siguientes pasos:
- Crea una transacción de transferencia de tu amigo a tu dirección.
- Espere la confirmación de su amigo para la solicitud.
Estos pasos se ejecutarán en una transacción agregada que se transmitirá a través del testnet Publico para Catapult.
Contrato inteligente para la solicitud de mosaicos de un amigo Particularidad: la particularidad de este contrato inteligente es que le permite solicitar cualquier mosaico desde cualquier cuenta. De hecho, esto le permite crear una transacción que su amigo debe confirmar. De esta manera, es posible solicitar las tarifas necesarias para una transacción, como un primer paso de cualquier lógica de capa empresarial que requiera el pago de tarifas. |
Ejecución del contrato inteligente Este contrato inteligente se puede ejecutar varias veces para enviar múltiples solicitudes. La cuenta del emisor debe contener la moneda de la red, ya que primero debe enviar una transacción de bloqueo de hash (protección contra SPAM). $ ./nem2-smart-contracts AssetRequest –asset 10 nem.xem –de TDNNBX7B44CJZFQGU7XAG62SQSJQOWY4P5KACYPD |
Entradas para el Smart Contract
Este contrato inteligente desechable acepta las siguientes entradas:
Parametro | Descripción | Ejemplo |
–Asset | El activo a solicitar (cantidad y mosaico) | --asset1 10 nem.xem |
–from | Establece el destinatario de la solicitud. | --from TDNNBX7B44CJZFQGU7XAG62SQSJQOWY4P5KACYPD |
–lock | (Opcional) Establece el mosaico que se usa para la protección contra spam | --lock 10 nem.xem |
Contrato inteligente n. ° 4: envío de firmas de transacciones parciales
Este último contrato inteligente desechable nos permitirá enviar transacciones de firma conjunta para transacciones parciales. Este contrato inteligente se puede utilizar para completar transacciones parciales cuando todavía faltan las firmas compartidas.
Este contrato inteligente consiste en ejecutar los siguientes pasos:
- Leer transacciones no firmadas (parciales)
- Emición una transacción de firma conjunta para una transacción vinculada agregada principal
Estos pasos se ejecutarán en el paso que se transmitirá a Public Testnet for Catapult.
Contrato inteligente para la firma conjunta de transacciones parciales Particularidad: la particularidad de este contrato inteligente es que le permite enviar co-firmas para múltiples partes involucradas en una transacción parcial (agregado consolidado). Este contrato inteligente se puede usar siempre que una transacción parcial no tenga una firma conjunta de una de sus cuentas. |
Ejecución del contrato inteligente Este contrato inteligente se puede ejecutar varias veces para enviar múltiples firmas. Cuando no hay una transacción que falte en la firma conjunta, el contrato simplemente se cancelará. $ ./nem2-smart-contracts PartialCosignature –hash B38C791028F168FFC5F2DBDD3B89237BF4ABC7FCABF72C4A0B45A17F7AFB07C1 |
Entradas de contrato inteligentes
Este contrato inteligente desechable acepta las siguientes entradas:
Parametro | Descripción | Ejemplo |
—hash | Establece el hash agregado de la transacción vinculada | --hash B38C7910...07C1 |
Ejecución de transparente único
Lo que todos estos contratos inteligentes tienen en común es que pueden ejecutarse en cualquier momento, una y otra vez. Su ejecución está garantizada para tener éxito y ser verificable, o cancelar todas las acciones y dejar 0 rastros debido a la falla de uno o más de los pasos ejecutados por dicho contrato inteligente.
Este tipo de ejecución única de contratos inteligentes desechables preconfigurados permite ejecutar muchas acciones diferentes que afectan al estado en la cadena. Acciones, que van a tener éxito o fracasarán por completo. Se dice que estos contratos inteligentes son atómicos porque la ejecución de las acciones depende de la validez de todas las acciones ejecutadas una tras otra.
¡Ensambla los bloques de construcción!
Con esta piedra angular sobre cómo crear contratos inteligentes desechables con Catapult, es hora de que obtengamos ideas de contratos más útiles que luego puedan integrarse a este paquete de software. Básicamente, puede pensar en cualquier conjunto de transacciones para ejecutar en un contrato; siempre y cuando su idea pueda ejecutarse utilizando las funciones listas para usar de Catapult.
Como algunas ideas que se me ocurrieron durante la edición de este artículo, están los siguientes contratos inteligentes desechables:
- Transferir la propiedad de una cuenta
- Crear jerarquías de cuentas multinivel
- Crear cuentas con nombre
- Uso de lista blanca / lista negra de un activo (restricciones)
- ¡Siéntase libre de agregar a esta lista!
El principio principal con el paquete nem2-smart-Contract es que un contrato se ejecuta envolviendo todas las transacciones configuradas dentro de las transacciones agregadas. Esto significa que cualquier lista de transacciones válidas puede envolverse efectivamente como un contrato inteligente desechable.
Al usar bloques de construcción de Catapult como espacios de nombres, mosaicos (activos), transacciones, bloques, cuentas, metadatos y restricciones, es posible cubrir la lógica de negocios que anteriormente ni siquiera era ejecutable dentro de las transacciones de múltiples firmas.
De hecho, con las transacciones agregadas, Catapult agrega flexibilidad, capacidad de ampliación y atomicidad a un conjunto de características ya bien adornado. No se pierda estos contratos inteligentes desechables: envíenos una propuesta de contrato inteligente desechable en forma de problema en Github.
Fuentes de Código de Referencia
Porque, ¿cómo sería un artículo técnico sin una referencia de código fuente, verdad?
Paquete de Github nem2-smart-contracts |
Código fuente de contratos
Software Kernal
Gracias #NEM
Gracias por leer, Nembers. ¡Espero que hayas disfrutado este artículo del calendario de adviento!
Como de costumbre, espero sus opiniones, comentarios y / o solicitudes de propuestas.
¡Nos vemos pronto!
Fuente: Foro de NEM