馃嚜馃嚫 Plutus: Aprende sobre Plutus

Plutus: Aprende sobre Plutus

Plutus es el lenguaje nativo de contratos inteligentes para Cardano. Es un lenguaje Turing-completo escrito en Haskell, y los contratos inteligentes de Plutus son efectivamente programas Haskell. Al utilizar Plutus, puedes estar seguro de la correcta ejecuci贸n de tus contratos inteligentes. Se basa en la investigaci贸n de lenguajes modernos para proporcionar un entorno de programaci贸n seguro y completo basado en Haskell, el principal lenguaje de programaci贸n puramente funcional.

La actualizaci贸n de Alonzo aporta capacidades interesantes y muy esperadas a Cardano mediante la integraci贸n de los scripts de Plutus en la blockchain. Estos scripts permiten ahora la implementaci贸n de contratos inteligentes en Cardano, posibilitando una serie de nuevos casos de uso para aplicaciones descentralizadas (DApps) por primera vez.

Si quieres empezar, visita el Plutus Playground para aprender a escribir programas en Plutus y utiliza los tutoriales para ayudarte. Tambi茅n deber铆as leer las explicaciones y tutoriales que se ofrecen aqu铆 y consultar las explicaciones de Plutus para aprender m谩s sobre el propio lenguaje Plutus.

隆Estamos aqu铆 para ayudar! Si necesitas soporte mientras usas Plutus, por favor registra un problema en el repositorio de Plutus e incluye todos los detalles que puedas.

Contratos inteligentes Plutus

Los contratos inteligentes de Plutus constan de partes que se ejecutan en la blockchain (c贸digo on-chain) y partes que se ejecutan en la m谩quina del usuario (c贸digo off-chain o cliente). El c贸digo fuera de la cadena puede escribirse utilizando el Plutus Application Framework (PAF), y este c贸digo es compilado por el GHC (Glasgow Haskell Compiler), mientras que el c贸digo en la cadena es compilado por el compilador de Plutus en Plutus Core.

plutus_lap1

Modelo contable utilizado por Plutus

Cardano utiliza el extended UTXO accounting model (EUTXO) que extiende el modelo contable de transacciones no gastadas (U) (TX) y salidas (O) (utilizado por Bitcoin). En el modelo UTXO, una transacci贸n tiene entradas y salidas , donde las entradas son salidas no gastadas de transacciones anteriores. En el momento en que una salida se utiliza como entrada en una transacci贸n, se gasta y no se puede volver a utilizar. La salida se especifica mediante una direcci贸n (una clave p煤blica o un hash de clave p煤blica) y un valor (consistente en una cantidad de ada y cantidades adicionales de tokens nativos opcionales).

EUTXO ampl铆a el modelo UTXO permitiendo que las direcciones de salida contengan una l贸gica compleja para decidir qu茅 transacciones pueden desbloquearlas, y a帽adiendo datos personalizados a todas las salidas. Este modelo ofrece ventajas 煤nicas sobre otros modelos de contabilidad. El 茅xito o el fracaso de la validaci贸n de las transacciones depende 煤nicamente de la propia transacci贸n y de sus entradas, y no de nada m谩s en la blockchain. En consecuencia, la validez de una transacci贸n puede comprobarse fuera de la cadena antes de que la transacci贸n se env铆e a la blockchain. Una transacci贸n a煤n puede fallar si alguna otra transacci贸n consume simult谩neamente una entrada que la transacci贸n est谩 esperando. Sin embargo, si todas las entradas siguen estando presentes, se garantiza el 茅xito de la transacci贸n.

Plutus Core

es el lenguaje de scripting utilizado por Cardano para implementar el modelo EUTXO. Es un lenguaje simple y funcional similar a Haskell, y un gran subconjunto de Haskell puede ser utilizado para escribir scripts de Plutus Core. Como autor de un contrato inteligente, t煤 no escribes ning煤n Plutus Core; m谩s bien, todos los scripts de Plutus Core son generados por un plugin compilador de Haskell.

Estos scripts ser谩n ejecutados por los nodos durante la validaci贸n de las transacciones 鈥渆n vivo鈥 en la cadena. Bloquear谩n los EUTXO en forma de validator scripts o como pol铆ticas de acu帽aci贸n, que controlan la acu帽aci贸n y quema de tokens nativos.

En la pr谩ctica, cuando se desarrollan contratos inteligentes, se escriben scripts validadores en Haskell, que luego se compilan autom谩ticamente en Plutus Core utilizando un plug-in de GHC llamado Plutus Tx.

Plutus Application Framework (PAF)

El PAF proporciona un f谩cil acceso a los servicios que son com煤nmente utilizados por las aplicaciones de Plutus. Las aplicaciones desplegadas utilizando las bibliotecas del marco pueden ejecutarse en el backend de la aplicaci贸n Plutus, que proporciona soporte en tiempo de ejecuci贸n para el acceso a la blockchain y otras funciones como la persistencia, el registro y la supervisi贸n. Las aplicaciones escritas sobre el PAF proporcionan autom谩ticamente una interfaz HTTP y WebSocket que puede interactuar con la aplicaci贸n desde el navegador web.

El estado on-chain de los scripts validadores s贸lo puede ser modificado por las transacciones que gastan y producen salidas de scripts. Al escribir una aplicaci贸n Plutus, tenemos que considerar no s贸lo la parte de la aplicaci贸n en la cadena (los scripts de Plutus Core), sino tambi茅n la parte fuera de la cadena que construye y env铆a transacciones.

El c贸digo fuera de la cadena est谩 escrito en Haskell, al igual que el c贸digo dentro de la cadena, a diferencia de Ethereum, donde el c贸digo dentro de la cadena est谩 escrito en Solidity, pero el c贸digo fuera de la cadena est谩 escrito en JavaScript. De este modo, la l贸gica de negocio s贸lo tiene que escribirse una vez. Esta l贸gica se puede utilizar en el script validador y en el c贸digo que construye las transacciones que ejecutan el script validador.

Plutus Application Backend (PAB)

El PAB se est谩 desarrollando actualmente y ejecutar谩 el componente off-chain de las aplicaciones Plutus. Gestionar谩 las peticiones de las aplicaciones al backend del monedero y al nodo, almacenar谩 el estado de las aplicaciones y ofrecer谩 una API HTTP para gestionar las instancias de las aplicaciones.

Plutus y tokens nativos

Cada token nativo viene con su propia pol铆tica de acu帽aci贸n, que determina las condiciones en las que los tokens pueden ser acu帽ados y quemados. Con el lanzamiento de Plutus, los usuarios podr谩n escribir pol铆ticas de acu帽aci贸n en Haskell y compilarlas en Plutus Core. Durante el proceso de acu帽aci贸n o quema, el script de la pol铆tica de Plutus Core se ejecutar谩 en el contexto de la transacci贸n de acu帽aci贸n o quema, y el script tendr谩 que aprobar o prohibir la acci贸n. Esta caracter铆stica acelerar谩 a煤n m谩s el crecimiento de los Tokens No Fungibles (NFTs) en Cardano, permitiendo la creaci贸n de pol铆ticas de acu帽aci贸n mucho m谩s complejas y permitiendo la creaci贸n de NFTs de una manera sin necesidad de confianza.

Ventajas de Plutus

Plutus proporciona considerables ventajas de seguridad. Ofrece una forma m谩s f谩cil y robusta de demostrar que tus contratos inteligentes son correctos y no encontrar谩n los problemas encontrados en lenguajes de contratos inteligentes anteriormente dise帽ados.

Plutus permite un novedoso enfoque integrado para el desarrollo de contratos inteligentes y aplicaciones distribuidas que es m谩s conveniente y seguro que las alternativas anteriores. Tanto el c贸digo on-chain como el off-chain est谩n basados en el mismo lenguaje. Se utiliza una base de c贸digo uniforme, que la cadena de herramientas de Plutus separa autom谩ticamente en c贸digo dentro y fuera de la cadena y lo empaqueta para su despliegue.

Adem谩s, a diferencia de Ethereum, Plutus soporta tokens definidos por el usuario (tanto fungibles como no fungibles) de forma nativa, lo que requiere mucho menos c贸digo.


Encuentra una copia oficial de este documento aqu铆:

https://docs.cardano.org/plutus/learn-about-plutus

M谩s traducciones de Cardano en: Home