WEB3DEV

Cover image for Como Construir DApps na Blockchain Cardano
Panegali
Panegali

Posted on • Atualizado em

Como Construir DApps na Blockchain Cardano

A blockchain Cardano é uma das blockchains de crescimento mais rápido e mais usada em 2022. A blockchain Cardano é uma plataforma blockchain de prova de participação (proof-of-stake) de terceira geração e lar da criptomoeda ADA.

Neste tutorial, mostraremos como construir um DApp na ​​blockchain Cardano. Abordaremos o seguinte:


Sumário

  1. O que é Cardano
  2. O que é uma blockchain?
  3. O que são DApps
  4. O que é ADA?
  5. Cardano e tokens nativos
  6. O que é Plutus?
  7. Escrevendo contratos inteligentes usando Plutus
  8. Exemplo: Escrevendo um aplicativo “Hello, World!” em Plutus
  9. Exemplo: Usando a função sayInput
  10. Conclusão

Vamos começar!

O que é Cardano?

A blockchain Cardano é uma nova blockchain baseada no algoritmo de consenso Shelley. Ela foi projetada para ser uma plataforma segura, escalável e fácil de usar para criar e executar aplicativos descentralizados.

Shelley é uma pilha de software que fornece uma camada de abstração sobre as blockchains subjacentes.

O que é uma blockchain?

Uma blockchain é um banco de dados distribuído de registros vinculados por uma série de provas criptográficas. Os registros são chamados de blocos; a blockchain é uma coleção de blocos.

Ethereum é uma blockchain baseada na Máquina Virtual Ethereum. Para fazer transações na blockchain Ethereum, gastaremos alguns Ethers. Esta é a criptomoeda que é usada para pagar o gás na blockchain Ethereum.

Da mesma forma, na blockchain Cardano, gastaremos ADA para pagar as taxas de gás.

O que são DApps?

Um aplicativo descentralizado e distribuído é uma aplicação que não é controlada por uma entidade única. Caso contrário, um DApp seria como qualquer aplicativo convencional. Um DApp pode ser um aplicativo da Web, aplicativo de linha de comando, aplicativo de desktop ou dispositivo móvel.

A diferença entre um DApp e um aplicativo convencional é que o aplicativo convencional é controlado por uma entidade única. Um DApp tem uma blockchain como seu back-end.

Por exemplo, um aplicativo de tarefas React pode ter seus dados (as tarefas) armazenados em uma blockchain Ethereum. Ou você pode construir um sistema de votação em Angular e ter seus dados armazenados na blockchain Cardano.

O que é ADA?

Como mencionado acima, ADA é a criptomoeda nativa da blockchain Cardano. Você pode usar e transferir ADA na blockchain Cardano, assim como faria com ETH na blockchain Ethereum.

ADA pode ser usada tanto como criptomoeda quanto como token. ADA sendo usada como moeda nativa de Cardano significa que é:

  • Aceita como pagamento de taxa
  • Aceita para fazer depósitos
  • A única moeda em que as recompensas são distribuídas

Assim como o ETH é dividido em denominações (por exemplo, Wei), a ADA também possui denominações. Lovelace é a menor unidade de ADA; 1 ADA é igual a 10^(-18) Lovelace, que pode ser dividido em um total de 1.000.000 de Lovelaces.

Cardano e tokens nativos

A blockchain Cardano possibilita a construção de tokens nativos. Esses tokens podem ser usados ​​para representar um valor e negociar na blockchain Cardano.

Twitter post

Os tokens podem ser fungíveis ou não fungíveis. Os tokens fungíveis representam um valor, enquanto os tokens não fungíveis representam itens do mundo real (por exemplo, um carro ou uma obra de arte).

Nas seções a seguir, veremos como escrever e criar contratos inteligentes na blockchain Cardano usando a linguagem de programação Plutus.

O que é Plutus?

Plutus é uma linguagem de programação usada para escrever contratos inteligentes na blockchain Cardano. Outras linguagens de programação que você pode usar para a blockchain Cardano incluem Glow lang, Marlowe, etc., mas Plutus é a mais rápida entre elas.

Plutus é baseada em Haskell, portanto, usá-la requer conhecimento prévio de programação em Haskell.

Escrevendo contratos inteligentes usando Plutus

Vamos ver como escrever contratos inteligentes usando a linguagem de programação Plutus. Esses aplicativos podem ser executados off-chain e gerenciar instâncias de contrato ativos.

De acordo com a Cardano Testnets, os contratos Plutus consistem em partes que são executadas na blockchain (código on-chain) e partes que são executadas na máquina de um usuário (off-chain ou código do cliente). Escreveremos nossos contratos inteligentes em um editor e simulador online Plutus.

Um contrato inteligente Plutus é um código Haskell que é executado na carteira de um usuário e envia código para a blockchain para ser executado pelos nós na blockchain. Os contratos inteligentes são executados na blockchain, não na máquina do usuário.

Os contratos inteligentes Plutus têm definições que são usadas para definir o contrato inteligente e seu estado. Dentro dessas definições estão os pontos de extremidades, que definem o comportamento do contrato inteligente. Esses pontos de extremidades são funções executadas pela carteira. Eles são conhecidos como funções off-chain e são usados para construir transações e enviá-las para a blockchain.

Exemplo: Escrevendo um aplicativo “Hello, World!” em Plutus

Vamos escrever um DApp simples na blockchain Cardano usando a linguagem de programação Plutus.


Mais artigos excelentes da LogRocket: (Em inglês)


Vamos escrever um contrato inteligente que imprimirá “Hello, World!” para o console.

Abra o editor e simulador online do Plutus.

import Data.Text qualified as T
import Playground.Contract
import Plutus.Contract
import PlutusTx.Prelude
import Prelude qualified as Haskell

-- | Um 'Contrato' que registra uma mensagem.
hello :: Contract () EmptySchema T.Text ()
hello = logInfo @Haskell.String "Hello, world"

endpoints :: Contract () EmptySchema T.Text ()
endpoints = hello

type DummySchema = Endpoint "dummy" ()

mkSchemaDefinitions ''DummySchema


$(mkKnownCurrencies [])
Enter fullscreen mode Exit fullscreen mode

O acima mencionado já será preenchido para nós. Vamos ao código:

import Data.Text qualified as T
import Playground.Contract
import Plutus.Contract
import PlutusTx.Prelude
import Prelude qualified as Haskell
Enter fullscreen mode Exit fullscreen mode

Aqui, importamos as bibliotecas e funções internas que precisaremos:

  • A biblioteca Data.Texté usada para converter strings em texto
  • O Playground.Contractimporta as interfaces inteligentes do contrato definidas no playground
  • A biblioteca Plutus.Contracté usada para definir o contrato inteligente da biblioteca principal do Plutus
  • A biblioteca PlutusTx.PreludePlutusTxsubstitui a biblioteca Haskell Prelude normal e inclui funções que são refinadas e mais fáceis para o compilador compilar
hello :: Contract () EmptySchema T.Text ()
hello = logInfo @Haskell.String "Hello, world"
Enter fullscreen mode Exit fullscreen mode

O acima mencionado define uma função hello. O Contract () EmptySchema T.Text ()diz ao compilador que a função não retornará nada. A função logInfoé uma função interna que registra uma mensagem no console. Então, em resumo, a função helloserá registrada no console como Hello, world.

endpoints :: Contract () EmptySchema T.Text ()
endpoints = hello
Enter fullscreen mode Exit fullscreen mode

Isso cria uma função endpoints, que será usada para executar a função hello. Isso expõe a função hello à blockchain.

type DummySchema = Endpoint "dummy" ()

mkSchemaDefinitions ''DummySchema

$(mkKnownCurrencies [])
Enter fullscreen mode Exit fullscreen mode

O mencionado acima cria o tipo DummySchema, que é usado para definir o estado do contrato inteligente. Por fim, expõe os pontos de extremidades à blockchain.

Em nosso playground Plutus, podemos clicar no botão verde Compile para compilar nossos contratos. O botão azul Simulate abrirá uma página onde podemos executar os contratos inteligentes na blockchain.

Plutus Playground Compile

Clique no botão verde Compile. Após uma compilação bem-sucedida, o botão azul Simulale abrirá uma página onde podemos executar os contratos inteligentes na blockchain:

Plutus Playground Simulate

Você notará que temos duas carteiras, cada uma com um saldo aberto de 100 Lovelaces. As funções Available em cada carteira mostrarão as funções que estão disponíveis para serem utilizadas.

No nosso caso, vemos nossa função hello e outra funçãoPay to Wallet. A função Pay to Walleté usada para enviar fundos para outra carteira e é definida pelo contrato Plutus. Não conseguimos ver o código porque ele é adicionado lá quando importamos os módulos abaixo:

import Playground.Contract
import Plutus.Contract
Enter fullscreen mode Exit fullscreen mode

Se olharmos na parte abaixo da página, veremos uma seção de Actions. Esta seção é onde as funções que queremos executar são adicionadas quando o cartão de endereços da carteira acima é clicado.

Já temos um cartão na Actions, o cartão simula atraso na blockchain. Podemos remover este cartão clicando no ícone “X”.

Agora, clique no botão dummy e você verá um cartão aparecer na seção Actions:

Plutus Playground Dummy

Clique no botão verde Evaluate e você verá a função hello executada na blockchain. Depois de algum tempo, uma página Transactions aparecerá:

Plutus Playground Evaluate

Role para baixo até a seção Logs e você verá o registro da função hello, Hello, worldno console:

Logs do console

Exemplo: Usando a função sayInput

Vamos escrever outro programa que pegue uma string e a imprima no console.

Adicione o código abaixo ao seu editor online Plutus:

import Data.Text qualified as T
import Playground.Contract
import Plutus.Contract
import PlutusTx.Prelude
import Prelude qualified as Haskell

type Schema =
        Endpoint "sayInput" Haskell.String

contract :: AsContractError e => Contract () Schema e ()
contract = selectList [sayInput]

-- | O ponto de extremidade do contrato "sayInput".
sayInput :: AsContractError e => Promise () Schema e ()
sayInput = endpoint @"sayInput" $ \inputValue -> do
    logInfo @Haskell.String $ inputValue

endpoints :: AsContractError e => Contract () Schema e ()
endpoints = contract

mkSchemaDefinitions ''Schema

$(mkKnownCurrencies [])
Enter fullscreen mode Exit fullscreen mode

Já vimos a primeira parte do código; aqui, importamos as bibliotecas necessárias para executar o aplicativo.

Em seguida, definimos um tipo Schema. Esse tipo é usado para definir o estado do contrato inteligente. Depois disso, configuramos uma lista de pontos de extremidade do contrato e adicionamos o ponto de extremidade sayInput.

Também definimos o ponto de extremidade sayInput, que recebe uma string como entrada e a registra no console.

Por fim, disponibilizamos o ponto de extremidade para a blockchain.

Clique no botão verde Compile. Após uma compilação bem-sucedida, você deverá ver isto:

Plutus Playground Sucess Compile

Clique no botão azul Simulate. Isso abrirá uma página onde podemos executar os contratos inteligentes na blockchain.

Plutus Playground Contracts

Observe que temos a função sayInput nos endereços da carteira. Clique nisso.

A função sayInput aparecerá na seção Actions:

sayInput Actions

Agora, digite qualquer string no campo de entrada e clique no botão Evaluate:

String sayInput

Você verá a string que digitou na página Transactions.

Conclusão

Neste tutorial, demonstramos como escrever um DApp na ​​blockchain Cardano usando a linguagem de programação Plutus.

Começamos apresentando a blockchain Cardano e a linguagem de programação Plutus. Em seguida, explicamos sobre a Cardano comparando-a com a blockchain Ethereum. Em seguida, apresentamos a linguagem de programação Plutus e descrevemos como podemos usá-la para compilar e executar contratos inteligentes na blockchain Cardano.

Por fim, passamos por alguns exemplos de contratos inteligentes escritos na linguagem de programação Plutus e executados em uma blockchain Cardano simulada.

Junte-se a organizações como Bitso e Coinsquare que usam LogRocket para monitorar proativamente seus aplicativos Web3

Problemas do lado do cliente que afetam a capacidade dos usuários de ativar e realizar transações em seus aplicativos podem afetar drasticamente seus resultados. Se você estiver interessado em monitorar problemas de UX (experiência do usuário), exibir automaticamente erros de JavaScript e rastrear solicitações de rede lentas e tempo de carregamento de componentes, experimente o LogRocket.

LogRocket

https://logrocket.com/signup/

O LogRocket é como um DVR (gravador de vídeo digital) para aplicativos da web e aplicativos móveis, gravando tudo o que acontece em seu aplicativo ou site da web. Em vez de adivinhar por que os problemas acontecem, você pode agregar e relatar as principais métricas de desempenho de front-end, reproduzir sessões de usuário junto com o estado do aplicativo, registrar solicitações de rede e exibir automaticamente todos os erros.

Modernize a forma como você depura aplicativos móveis e da Web — comece a monitorar gratuitamente.

Artigo escrito por Chidume Nnamdi e traduzido por Marcelo Panegali


Abrace a oportunidade de elevar sua jornada de desenvolvimento para um nível superior.📚💡

A construção de DApps é apenas o começo; os builds incríveis da WEB3DEV representam a chave de entrada para o emocionante cenário web3. 🚀🧑‍💻

👉 Não perca tempo, inscreva-se agora mesmo e comece a desbravar o universo Blockchain! Seja também WEB3DEV 👈

Top comments (0)