Pular para o conteúdo

Aprenda sobre Plutus

Por volta de 3 min

Por favor, note que os Documentos Cardano não são a principal fonte de consulta para documentação sobre Plutus. Veja a próxima seção 'Recursos Plutus' para encontrar links para informações e recursos essenciais relacionados ao Plutus.

Plutus é a linguagem nativa de contratos inteligentes para Cardano. É uma linguagem Turing-completa escrita em Haskell, e os contratos inteligentes Plutus são efetivamente programas Haskell. Usando Plutus, você pode ter confiança na execução correta dos seus contratos inteligentes. Ele se baseia em pesquisas modernas de linguagem para fornecer um ambiente de programação seguro e completo baseado em Haskell, a principal linguagem de programação puramente funcional.

Contratos inteligentes Plutus

Contratos inteligentes Plutus consistem em partes que rodam na blockchain (código on-chain) e partes que rodam na máquina do usuário (código off-chain ou código do cliente). O código off-chain pode ser escrito usando o Plutus Application Framework (PAF), e este código é então compilado pelo GHC (Glasgow Haskell Compiler), enquanto o código on-chain é compilado pelo compilador Plutus em Plutus Core.

Plutus_arch

Modelo de contabilidade usado pelo Plutus

Cardano usa o modelo de contabilidade UTXO estendido (EUTXO)open in new window que estende o modelo de contabilidade de output (O) de transação (TX) não gasto (U) (UTXO) (usado pelo Bitcoin). No modelo UTXO, uma transação tem entradas e saídas, onde as entradas são saídas não gastas de transações anteriores. Assim que uma saída é usada como entrada em uma transação, ela se torna gasta e nunca pode ser usada novamente. A saída é especificada por um endereço (uma chave pública ou hash de chave pública) e um valor (consistindo de uma quantidade de ada e, opcionalmente, quantidades adicionais de tokens nativos).

EUTXO estende o modelo UTXO permitindo que endereços de saída contenham lógica complexa para decidir quais transações podem desbloqueá-los e adicionando dados personalizados a todas as saídas. Este modelo oferece vantagens únicas em relação a outros modelos de contabilidade. O sucesso ou fracasso da validação de transação depende apenas da própria transação e de suas entradas e não de mais nada na blockchain. Consequentemente, a validade de uma transação pode ser verificada off-chain antes da transação ser enviada para a blockchain. Uma transação ainda pode falhar se alguma outra transação consumir concorrentemente uma entrada que a transação está esperando. No entanto, se todas as entradas ainda estiverem presentes, a transação é garantida para ter sucesso.

Plutus Core

Plutus Core é a linguagem de script usada pelo Cardano para implementar o modelo EUTXO. É uma linguagem simples e funcional semelhante ao Haskell, e um grande subconjunto do Haskell pode ser usado para escrever scripts Plutus Core. Como autor de contrato inteligente, você não escreve nenhum Plutus Core; em vez disso, todos os scripts Plutus Core são gerados por um plugin de compilador Haskell.

Esses scripts serão executados por nós durante a validação de transação 'ao vivo' na cadeia. Eles bloquearão EUTXOs na forma de scripts de validação ou como políticas de cunhagem, que controlam a cunhagem e queima de tokens nativos.

Na prática, ao desenvolver contratos inteligentes, você escreverá scripts de validação em Haskell, que serão automaticamente compilados em Plutus Core usando um plug-in GHC chamado Plutus Tx.

Plutus Application Framework (PAF)

O PAFopen in new window fornece acesso fácil a serviços que são comumente usados por aplicações Plutus. Aplicações implantadas usando as bibliotecas do framework podem ser executadas no backend de aplicação Plutus, que fornece suporte em tempo de execução para acesso à blockchain e outras preocupações, como persistência, registro e monitoramento. Aplicações escritas em cima do PAF automaticamente fornecem uma interface HTTP e WebSocket que pode interagir com a aplicação a partir do navegador da web.

O estado on-chain de scripts de validação só pode ser modificado por transações que gastam e produzem saída de script. Ao escrever uma aplicação Plutus, precisamos considerar não apenas a parte on-chain da aplicação (os scripts Plutus Core) mas também a parte off-chain que constrói e envia transações.

O código off-chain é escrito em Haskell, assim como o código on-chain, ao contrário do Ethereum, onde o código on-chain é escrito em Solidity, mas o código off-chain é escrito em JavaScript. Dessa forma, a lógica de negócios só precisa ser escrita uma vez. Essa lógica pode então ser usada no script de validação e no código que constrói as transações que executam o script de validação.

Plutus Application Backend (PAB)

O PAB está atualmente em desenvolvimento e executará o componente off-chain de aplicações Plutus. Ele gerenciará solicitações de aplicação para o backend da carteira e nó, armazenará o estado da aplicação e oferecerá uma API HTTP para gerenciar instâncias de aplicação.

Plutus e tokens nativos

Cada token nativo vem com sua própria política de cunhagem, que determina as condições sob as quais os tokens podem ser cunhados e queimados. Os usuários podem escrever políticas de cunhagem em Haskell e compilá-las para Plutus Core. Durante o processo de cunhagem ou queima, o script de política Plutus Core é executado no contexto da transação de cunhagem ou queima, e o script terá que aprovar ou proibir a ação. Esta funcionalidade acelera ainda mais o crescimento de tokens não fungíveis (NFTs) no Cardano, permitindo a criação de políticas de cunhagem muito mais complexas e permitindo a criação de NFTs de maneira confiável.

Vantagens do Plutus

Plutus oferece vantagens consideráveis de segurança. Ele fornece uma maneira mais fácil e mais robusta de mostrar que seus contratos inteligentes estão corretos e não encontrarão os problemas encontrados em designs anteriores de linguagem de contrato inteligente.

Plutus permite uma abordagem integrada inovadora para o desenvolvimento de contratos inteligentes e aplicações distribuídas que é mais conveniente e segura do que alternativas anteriores. Tanto o código on-chain quanto o off-chain são baseados na mesma linguagem. Você usa uma base de código uniforme, que a ferramenta Plutus então automaticamente separa em código on-chain e off-chain e pacotes para implantação.

Além disso, em contraste com o Ethereum, Plutus suporta tokens definidos pelo usuário (tanto fungíveis quanto não fungíveis) nativamente, o que não requer um contrato inteligente acompanhante.

Última atualização:
Contribuidores: cauechianca