WEB3DEV

Cover image for Implantando seu primeiro Dapp Bitcoin - Internet Computer
Fatima Lima
Fatima Lima

Posted on • Atualizado em

Implantando seu primeiro Dapp Bitcoin - Internet Computer

Este tutorial irá orientá-lo sobre como implantar um canister na Internet Computer que pode enviar e receber Bitcoin.

Vamos contar com o exemplo "Basic Bitcoin" no repositório de exemplos, que alavanca internamente o ECDSA API e o Bitcoin API da Internet Computer.

Implantação

  1. Clone o repositório examples
    git clone https://github.com/dfinity/examples

  2. Vá para o exemplo basic_bitcoin na linguagem de sua escolha

# Para motoko
cd examples/motoko/basic_bitcoin

# Para rust
cd examples/rust/basic_bitcoin
Enter fullscreen mode Exit fullscreen mode
  1. Inicialize o git submodules
    git submodule update --init --recursive

  2. Faça deploy do exemplo da Internet Computer. Estamos inicializando o canister com a variant { Testnet }, de modo que o canister conecte-se à testnet da Bitcoin.
    dfx deploy --network=ic basic_bitcoin --argument '(variant { Testnet })'

DICA
Para fazer deploy na Internet Computer são necessários os Cycles. Você pode ler mais sobre ciclos aqui. Você também pode obter cycles grátis na Faucet Cycles.

Se bem-sucedido, você vai obter um output que se parece com isto:

 Deploying: basic_bitcoin
 Building canisters...
 ...
 Deployed canisters.
 URLs:
 Candid:
     basic_bitcoin: https://a4gq6-oaaaa-aaaab-qaa4q-cai.raw.ic0.app/?id=<YOUR-CANISTER-ID>
Enter fullscreen mode Exit fullscreen mode

Seu canister está ativo e pronto para ser usado! Você pode interagir com ele usando ou a linha de comando ou a Candid UI (User Interface - interface do usuário), que é o link que você vê no output acima.

Gerando um Endereço Bitcoin​

A Bitcoin possui diferentes tipos de endereço (ex.: P2PKH, P2SH). A maioria desses endereços pode ser gerada de uma chave pública ECDSA. O código de exemplo mostra como sua canister pode gerar um endereço P2PKH usando a API ecdsa_public_key.

Na UI Candid do seu canister, clique no botão "Call" abaixo de get_p2pkh_address para gerar um endereço P2PKH Bitcoin:

Image description

Ou, se você prefere usar linha de comando:

dfx canister --network=ic call basic_bitcoin get_p2pkh_address

NOTA

  • O endereço Bitcoin que você vê será diferente daquele acima, porque a chave pública ECDSA que seu canister recupera é única.

  • Estamos gerando um endereço testnet Bitcoin, que só pode ser usado para enviar/receber Bitcoin na testnet Bitcoin.

Recebendo Bitcoin​

Agora que seu canister está implantado e você tem um endereço Bitcoin, é hora de receber alguns Bitcoins testnet. Você pode usar uma das faucets da Bitcoin, como esta, para receber alguns bitcoins.

Entre com seu endereço e clique em "Send testnet bitcoins". No exemplo abaixo, o canister vai receber 0.0001 BTC test.
Image description

Uma vez que a transação tenha pelo menos uma confirmação,o que pode levar alguns minutos, você poderá vê-la no saldo do seu canister.

Verificando Seu Saldo Bitcoin​

Você pode verificar o saldo de um endereço da Bitcoin usando o endpoint get_balance no seu canister.

Na UI Candid, cole no endereço do seu canister e clique em "Call":
Image description

Alternativamente, faça call usando a linha de comando:

dfx canister --network=ic call basic_bitcoin get_balance '("mheyfRsAQ1XrjtzjfU1cCH2B6G1KmNarNL")'

Enter fullscreen mode Exit fullscreen mode

A verificação do saldo de um endereço Bitcoin depende do API bitcoin_get_balance.

Enviando Bitcoin​

Você pode enviar Bitcoin usando o endpoint send no seu canister.

Na UI Candid, acrescente a um endereço de destino um valor para ser enviado. No exemplo abaixo, estamos enviando 4,321 Satoshi (0.00004321 BTC) de volta para a faucet testnet.
Image description

Por meio de linha de comando, a mesma chamada pareceria assim:

dfx canister --network=ic call basic_bitcoin send '(record { destination_address = "tb1ql7w62elx9ucw4pj5lgw4l028hmuw80sndtntxt"; amount_in_satoshi = 4321; })'
Enter fullscreen mode Exit fullscreen mode

O endpoint sendé capaz de enviar Bitcoin:

  1. Obtendo os percentis das taxas mais recentes na rede Bitcoin utilizando a API bitcoin_get_current_fee_percentiles.

  2. Obtendo suas saídas de transação não gastas (UTXOs), usando a API bitcoin_get_utxos.

  3. Construindo uma transação, usando alguns dos UTXOs da etapa 2 como entrada e o endereço de destino e valor a ser enviado como saída. Os percentis de taxa obtidos do passo 1 são usados para definir uma taxa apropriada.

  4. Assinando as entradas da transação usando a API sign_with_ecdsa.

  5. Enviando a transação assinada para a rede Bitcoin utilizando a API bitcoin_send_transaction.

O endpoint send retorna a identificação da transação que foi enviada para a rede. Você pode rastrear o status desta transação usando um explorador de blocos. Uma vez que a transação tenha pelo menos uma confirmação, você deverá ser capaz de vê-la em seu saldo atual.

Este artigo é da Internet Computer e foi traduzido por Fátima Lima. Seu original pode ser lido aqui.

Top comments (0)