WEB3DEV

Cover image for Como desenvolver um DApp na VeChain (II): Configuração e demonstração
Diogo Jorge
Diogo Jorge

Posted on

Como desenvolver um DApp na VeChain (II): Configuração e demonstração

Sync: Ambiente de desktop para DApp VeChain .

Configuração em 3 minutos

Ótimo! Vejo que você sobreviveu ao último tutorial, agora é hora de começar a programar. A primeira coisa que precisamos é de um ambiente Sync.

Image description

Ok, agora vamos clonar o código-fonte do projeto Sync em um terminal e transformá-lo no modo dev:

   > mkdir playgrounds

    > cd playgrounds/

    > git clone [[email protected]](mailto:[email protected]):vechain/thor-sync.electron.git

    > cd thor-sync.electron/

    > node -v # Certifique-se de ter node.js >V10.0.0 instalado

    > npm install # Instalar dependências

    > npm run dev # Inicialize o Sync no modo dev
Enter fullscreen mode Exit fullscreen mode

Quando você vir a janela eletrônica do Sync aparecendo, estamos prontos!

Image description

Boot up: npm run dev

Pesquisar: Familiarizado com o Sync

Ok, agora vamos deixar o terminal de lado e focar mais na janela GUI. Sync é uma carteira semelhante a um navegador incorporada à biblioteca Connex.js, que pode oferecer à página da Web executada dentro dela a capacidade de se comunicar com a blockchain VeChain.

Crie uma carteira de teste

Primeiro, vamos configurar uma carteira de teste para nós mesmos:

Image description

Vá para o painel da carteira para ver as carteiras existentes.

Ótimo, agora clique no ícone “carteiras” no canto superior direito, se você estiver na rede de teste, já existem 3 carteiras disponíveis para teste: “Foo”, “Baz” e “Bar”. Deixe-as quietas, vamos clicar no botão "Criar" para criar uma nova.

Image description

Image description

Crie uma nova carteira para nossos testes

Você também pode importar sua carteira existente de Ethereum para o Sync, bem como usar um gerador de terceiros para criar uma carteira, como VeChain Address Generator no github.

Siga as instruções sobre Sincronização e agora tenho uma carteira com um endereço público, atualmente contém 0 VET e 0 VTHO:

0xa7a609b928c4eac077d0e5640f3fa650746c4fcf

Abasteça a carteira com VTHO

Em seguida, preenchemos a carteira recém-criada adicionando alguns fundos VTHO a ela. O VTHO é usado como a taxa que alimenta as transações e na rede de teste. Onde obtê-lo? A demonstração DApp da equipe principal do VeChain: faucet VET/VTHO!

Vá em frente, visite o URL da web: https://faucet.vecha.in no Sync, e você verá uma página da web interessante que fornece VTHO na rede de teste gratuitamente:

Image description

Image description

Get free VET/VTHO on test net

Siga o botão “Claim Tokens” no meio da página da web e vamos obter algum VET/VTHO grátis para teste. Lembre-se de escolher a carteira que você criou e inserir a senha de acordo para reivindicar os tokens. Já reivindiquei 500 VET com 500 VTHO. 😉

Image description

Brinque com as APIs do Connex.js

Agora que temos dinheiro na rede de teste, vamos explorar as funcionalidades da blockchain fornecidas pelo Sync, a biblioteca do connex.js. Vamos abrir uma nova guia em branco e alternar (toggle) as ferramentas do desenvolvedor para ver para que o connex é usado:

Image description

Image description

Abra as Ferramentas do desenvolvedor para visitar o Connex.

Uma vez no console das ferramentas do desenvolvedor (assim como as ferramentas do desenvolvedor do Chrome), digite o seguinte código:

   > connex

     {version: "1.2.0", thor: {…}, vendor: {…}}
    thor:{ticker: ƒ, account: ƒ, block: ƒ, …}
    vendor:{sign: ƒ, owned: ƒ}
    version:"1.2.0"
    __proto__:Object
Enter fullscreen mode Exit fullscreen mode

Sim, toda e qualquer janela já implantou o objeto connex na página da web. E este objeto connex pode fazer muitas coisas com a rede VeChain. Vamos explorar alguns simples:

Jogue com account()

    > var acc = connex.thor.account('0xa7a609b928c4eac077d0e5640f3fa650746c4fcf')

    > acc.get().then(info=>{console.log(info)})

    Promise {<pending>}
    {balance: "0x1b1ae4d6e2ef500000", energy: "0x1b1af7398584067000", hasCode: false}

    > parseInt('0x1b1ae4d6e2ef500000') 

    500000000000000000000

    > parseInt('0x1b1af7398584067000')

    500005175000000000000
Enter fullscreen mode Exit fullscreen mode

Aqui acabei de consultar minha carteira recém criada, que resulta em um objeto de resposta dos campos “saldo”, “energia” e “hasCode”. “saldo” é o VET que esta conta contém e “energia” é o valor do VTHO.

Jogue com o ticker()

Na rede VeChain, não sabemos exatamente quando um novo bloco é produzido, mas certamente queremos ser notificados quando ele for produzido. ticker nos dá essa espiada para ser notificado. Ainda usamos o console de depuração no Sync:

   > var t = connex.thor.ticker()
    undefined

    > t.next().then(()=>{console.log('new block!')})
    new block!
Enter fullscreen mode Exit fullscreen mode

Legal certo? Após cerca de 3 a 10 segundos, essa mensagem “novo bloco!” é impressa e sabemos que há um novo bloco adicionado ao topo da cadeia.

Ticker é uma Promise que nunca é rejeitada, então só precisamos fornecer uma função resolve. Não precisamos mais da função setTimeout!

Jogue com call()

Na verdade, o contrato VTHO em si é um contrato compatível com ERC20

/VIP180 vivendo no VeChain! E quer saber, eu sei o endereço dele na rede de teste: 😜

0x00000000000000000000000000000456e65726779

Para quem não entende ERC20/VIP180, um contrato é um objeto de vida longa na blockchain. Pensando nisso como um conjunto de instruções de programa e um armazenamento permanente simples de forma livre que o programa controla. Os contratos ERC20/VIP180 são programas simples de “banco virtual” que rastreiam cada cliente e seu saldo de uma moeda/token virtual específico.

Então, nós temos o endereço de um contrato, como chamamos? Muito simples.

   > const balanceOfABI = {
      'constant': true,
      'inputs': [
        { 
          'name': '_owner',
          'type': 'address'
        }
      ],    
      'name': 'balanceOf',
      'outputs': [
        { 
         ' name': 'balance',
         'type': 'uint256'
        }
      ],
      'payable': false,
      'stateMutability': 'view',
      'type': 'function'
    }

    > const balanceOfMethod = connex.thor.account(' 0x0000000000000000000000000000456e65726779').method(balanceOfABI)

    > const balanceInfo = await balanceOfMethod.call('0xa7a609b928c4eac077d0e5640f3fa650746c4fcf')

    > console.log(balanceInfo)
    {data: "0x00000000000000000000000000000000000000000000001b1b428acf29437000", events: Array(0), transfers: Array(0), gasUsed : 870, reverted: false, …}
Enter fullscreen mode Exit fullscreen mode

Primeiro fornecemos o método de contrato ABI (assinatura de função) e, em seguida, criamos um manipulador com o endereço de implantação do contrato. Por fim, chamamos o método contract com call() e fornecemos um parâmetro, um endereço da conta que nos interessa. Excelente! Agora temos o resultado!

Resumo

Chega de estudo por hoje!

Para recapitular, temos:

  1. Orientamos você durante a instalação do Sync.
  2. Execute um DApp de exemplo em sincronização e obtenha alguns VET/VTHO gratuitos.
  3. Jogue com a blockchain VeChain com o objeto connex javascript pré-implantado.

A partir do próximo tutorial, usaremos nosso conhecimento aprendido hoje e construiremos uma página da web (front-end) de um contrato inteligente existente, contrato VTHO (Sim, algum cara legal fez isso para nós, simplesmente pegamos emprestado). Esteja pronto e vamos lá!

Image description

Este artigo é parte 2 de 3, foi escrito por VeChain Docs e traduzido por Diogo Jorge. O artigo original pode ser encontrado aqui.

Top comments (0)