WEB3DEV

Cover image for Interagindo com a Blockchain Cardano usando o JavaScript
Paulo Gio
Paulo Gio

Posted on

Interagindo com a Blockchain Cardano usando o JavaScript

Cardano é uma rede blockchain pública, descentralizada e de terceira geração, fundada em 2015 pelo cofundador da Ethereum, Charles Hoskinson.

A blockchain Cardano foi construída para promover a interoperabilidade entre blockchains, escalabilidade e descentralização, para assim promover a adoção em massa.

O desenvolvimento na Cardano é nativo em Plutus, Marlowe ou Glow. No entanto, a comunidade Cardano fornece um SDK para desenvolvimento em JavaScript e outras linguagens de programação.

Este tutorial irá guiá-lo nos primeiros passos com o desenvolvimento na Cardano em Javascript, usando Cardanocli-js e Cardano-wallet-js.

  • Cardanocli-JS e Cardano WalletJS. O que são?
  • Introdução ao uso do Cardanocli-js
    • Conectando-se a um nó Cardano com Cardanocli-js
    • Desenvolvimento Cardano Usando Cardanocli-js
    • Criando uma Carteira Cardano usando Cardanocli-js
    • Consultando saldos da carteira usando Cardanocli-js
  • Criando um Pool de Participação usando Cardanocli-js
    • Criando uma Carteira usando Cardano-wallet-js
    • Consultando Informações na Blockchain Cardano
    • Consultando Transações de Endereço de Carteira
    • Consultando Detalhes Específicos da Transação

Cardanocli-JS e Cardano WalletJS. O que são?

Cardanocli-js é o SDK Javascript mais popular para o desenvolvimento na blockchain Cardano. Ele oferece suporte a uma ampla gama de funcionalidades que você precisará para desenvolver na blockchain Cardano, incluindo a criação de NFTs.

Cardano-wallet-js é um SDK Javascript para o desenvolvimento na blockchain Cardano com suporte para Typescript. Ele pode ser usado para criar tokens nativos e NFTs, e para diversas outras funcionalidades.

Nesta publicação, você aprenderá como integrar as funcionalidades da blockchain Cardano, como criar carteiras, pools de participação (staking pools) e obter informações de rede em seus aplicativos Javascript.

Pré-requisitos

Para começar, você precisará ter estas ferramentas abaixo instaladas em seu computador/máquina:

  • Baixe e instale o NodeJs a partir de seu site oficial. Baixe a versão LTS mais recente do NodeJS.
  • Baixe e instale o executável CardanoCli em sua máquina. Esta é uma dependência do SDK CardanoCli-JS, pois ajuda na conexão com os nós da Cardano que você precisa consultar e desenvolver na blockchain.
  • O Cardanocli-JS pode ser instalado usando este comando após a instalação do NodeJs: npm install cardanocli-js
  • Cardano-wallet-js pode ser instalado usando este comando npm: npm install cardano-wallet-js

Cardano-wallet-js requer que você tenha um servidor cardano-wallet em execução. Você pode usar o Docker para iniciar um servidor executando o comando abaixo ou seguir estas instruções para colocar um servidor de carteira cardano-wallet em funcionamento.

wget <https://raw.githubusercontent.com/input-output-hk/cardano-wallet/master/docker-compose.yml>

NETWORK=testnet docker-compose up
Enter fullscreen mode Exit fullscreen mode

Escolha um editor de texto ou IDE de sua preferência. Usarei o Jetbrains Webstorm neste tutorial.

Depois de executar todas essas configurações, crie um arquivo javascript em seu espaço de trabalho para este tutorial.

Estou usando o sistema operacional Ubuntu, se você estiver usando Windows ou macOS, pode haver pequenas diferenças na configuração.

Introdução ao uso do Cardanocli-js

Conectando-se a um nó Cardano com Cardanocli-js

Obtenha um número de compilação do nó para o site da IOHK. O número de compilação do nó é o número contido no URL que aparece quando você abre o link em seu navegador.

Crie um script bash em seu espaço de trabalho e digite esses comandos.

wget -N <https://hydra.iohk.io/build/${NBM}/download/1/mainnet-shelley-genesis.json>
Enter fullscreen mode Exit fullscreen mode

Substitua ${NBM} pelo número de compilação do nó do site e execute o script bash usando este comando em seu terminal.

chmod +x fileName.sh

./fileName.sh
Enter fullscreen mode Exit fullscreen mode

A primeira linha altera as permissões para tornar o arquivo executável enquanto a segunda linha executa o arquivo, criando um arquivo de configuração JSON em seu espaço de trabalho com as configurações necessárias.

O arquivo de configuração ajuda na conexão com um nó Cardano na rede principal ou rede de teste, conforme a sua especificação no programa.

Desenvolvimento Cardano Usando Cardanocli-js

Primeiro, importe o SDK cardanocli-js para usar em seu programa. Neste caso, ele é chamado de clijs.

const clijs = require("cardanocli-js")
Enter fullscreen mode Exit fullscreen mode

Em seguida, você deve criar uma instância de importação onde será especificada a rede, o caminho do arquivo de configurações e um diretório de saída.

const cclijs = new cjs({
network: "mainnet",

directory: __dirname + "Diretório de saída aqui",

shelleyGenesisPath: __dirname + "caminho do arquivo de configuração aqui"
})
Enter fullscreen mode Exit fullscreen mode

A rede pode ser uma rede principal (mainnet) ou uma rede de teste (testnet), dependendo do seu caso de uso.

Você pode utilizar a rede de testes ao seguir este tutorial e a rede principal no desenvolvimento.

Agora que você configurou uma instância de conexão da blockchain, pode executar várias operações com o Cardanocli-js.

Criando uma carteira Cardano usando Cardanocli-js

Criar uma carteira Cardano é bem fácil; você deve especificar um nome de carteira como parâmetro nos métodos de sua instância cardanocli-js, conforme mostrado abaixo.

const createAWallet = (walletName) => {
cclijs.addressKeyGen(walletName)

cclijs.stakeAddressKeyGen(walletName)

cclijs.stakeAddressBuild(walletName)

cclijs.addressBuild(walletName)

return cclijs.wallet(walletName)

}
Enter fullscreen mode Exit fullscreen mode

A função acima cria uma carteira com o nome especificado quando a função é chamada.

console.log(createAWallet("nome da sua carteira aqui"))
Enter fullscreen mode Exit fullscreen mode

Uma vez que a função é chamada dentro da cadeia, um diretório chamado priv será criado em sua pasta de saída que foi especificada anteriormente, contendo a chave pública e a chave privada da carteira que você acabou de criar.

https://blog.logrocket.com/wp-content/uploads/2022/06/priv-directory-example.png

Consultando Saldos da Carteira usando Cardanocli-js

Você pode consultar os saldos da carteira especificando o nome da carteira no método wallet da sua instância cardanocli-js.

const getBalances = (walletName) => {
const query = cardano.wallet(walletName)

return query.balance()
}
Enter fullscreen mode Exit fullscreen mode

A função acima retorna o saldo da carteira do nome da carteira especificado em um formato JSON da seguinte forma.

{
utxo : [

    {

        txHash: "7436d178c092222396bd0b5cb71211bd87b098bb9e7e98d1a0f41390c1604711",

        txId: 0,

        amount: [Object]

    }

],

    amount:

{

    lovelace : 350000000

}
Enter fullscreen mode Exit fullscreen mode

Na saída acima, supõe-se que a carteira tenha $ADA, que é o ativo nativo da Cardano.

O saldo é exibido em Lovelaces, que podem ser convertidos em ADA dividindo o valor por um milhão.

Criando um Pool de Participação usando Cardanocli-js

Os pools de participação são os nomes personalizados para os nós Cardano. Eles operam de forma semelhante aos nós Ethereum, exceto que a Cardano é uma blockchain de prova de participação (Proof-of-Stake, PoS).

Os pools de participação podem ser públicos ou privados e têm um endereço público para o qual os participantes da rede podem delegar seus tokens ADA para recompensas.

Criar um pool de participação usando o Cardanocli-js é tão fácil quanto criar uma carteira.

const createAStakePool = (poolName) => {
cclijs.nodeKeyGenKES(poolName);

cclijs.nodeKeyGen(poolName);

cclijs.nodeIssueOpCert(poolName);

cclijs.nodeKeyGenVRF(poolName);

return cclijs.pool(poolName);
};
Enter fullscreen mode Exit fullscreen mode

A função acima cria um pool de participação associado ao nome que você especificou e gera arquivos em seu diretório especificado, assim como a função createAWallet fazia. A função retorna o nome do pool quando é chamada.

console.log(createAWallet('nome do seu pool de participação aqui"))
Enter fullscreen mode Exit fullscreen mode

Você criou com sucesso um pool de participação na Cardano e, assim como na criação da carteira logo ali acima, os arquivos foram criados em seu diretório de saída.

Introdução ao Cardano-wallet-js

Depois de instalar o Cardano-wallet-js, você pode importá-lo para utilização.

const { seed, WalletServer: walletserver } = require('cardano-wallet-js');

let walletServer = WalletServer.init('URL do host do seu servidor de carteira');
Enter fullscreen mode Exit fullscreen mode

A instância do servidor da carteira é criada e inicializada usando o link para seu servidor de carteira. A semente (seed) será usada para a criação da carteira.

Criando uma carteira usando Cardano-wallet-js

Criar uma carteira da Cardano usando o Cardano-wallet-js é mais prático do que usar o Cardanocli-js. Você pode criar uma carteira usando a função abaixo.

let recoveryPhrase = seed.generateRecoveryPhrase()

let passPhrase = "name"

let walletName = "name"

let wallet = await walletServer.createOrRestoreShelleyWallet(walletName, mnemonic, passPhrase)

console.log(seed.toMnemonicList(recoveryPhrase))
Enter fullscreen mode Exit fullscreen mode

No código acima, a semente é usada para gerar uma frase de recuperação, e as variáveis passPhrase e walletName são criadas e passadas para a variável wallet, que cria ou restaura uma carteira Shelley da Cardano.

A última linha registra a lista de mnemônicos no console. Os mnemônicos da carteira da era Shelley são 24 palavras.

Consultando Informações na Blockchain Cardano

Você pode consultar o estado da blockchain Cardano usando o método getNetworkInformation na instância do servidor de carteira que você criou.

let query = await walletServer.getNetworkInformation()

console.log(query)
Enter fullscreen mode Exit fullscreen mode

Isso deve gerar um JSON contendo vários parâmetros, como status da rede, informações do nó, progresso da sincronização da blockchain e informações da época (epoch), a partir das quais você pode selecionar os dados específicos de que precisa.

https://blog.logrocket.com/wp-content/uploads/2022/06/json-output-1.png

Consultando Transações de Endereço de Carteira

Consultar as transações de um endereço de carteira pode ser útil em muitos casos. Você pode fazer isso usando o método getTransactions, da instância wallet.

let transactions = await wallet.getTransactions();

console.log(transactions)
Enter fullscreen mode Exit fullscreen mode

Você pode passar um intervalo de datas ao método getTransactions para selecionar transações em um intervalo específico de datas.

Consultando detalhes específicos da transação

A funcionalidade para consultar detalhes específicos da transação pode ser feita ao passar o ID da transação.

let transaction = await wallet.getTransaction("ID da transação");
Enter fullscreen mode Exit fullscreen mode

O ID da transação é um conjunto de sequências aleatórias atribuídas após concluir uma transação, que pode ser copiado da carteira ou do provedor blockchain.

https://blog.logrocket.com/wp-content/uploads/2022/06/transaction-assurance.png

Conclusão

Os SDKs Cardanocli-js e Cardano-wallet-js facilitam a interação com a blockchain Cardano usando Javascript em vez de escrever em Plutus, Marlowe Glow ou Scripts Bash na interação com a blockchain.

No entanto, é impossível escrever contratos inteligentes nativos da Cardano em Javascript no momento. Você pode integrar os SDKs Cardanocli-js e Cardano-wallet-js em seus projetos Web3.0 e Web2.0 da forma que quiser.

Artigo original publicado por LogRocket. Traduzido por Paulinho Giovannini.

Top comments (0)