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.

 

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 "en 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: https://cardanofortheworld.com/es-es/