Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

O Bitcoin (símbolo monetário: BTC ou XBT) é uma criptomoeda descentralizada que forma um sistema econômico alternativo e utiliza como base a Blockchain para realizar a verificar da sua base de dados distribuída. 

Pré-requisitos

Antes de começar a seguir os passos do tutorial é preciso ter certeza de que se tem um ambiente minimamente preparado para reproduzir o exemplo. Abaixo estão os requisitos principais.

Requisitos:

  1. Projeto do tipo web criado. Caso haja dúvidas de como criar esse tipo de projeto acesse o link (Criando Projeto Web).
  2. Ter conhecimento básico sobre Bitcoin e Blockchain. Veja conteúdo a respeito nos links abaixo:
    1. Webinar do CronApp: Blockchain: Uma revolução em todos os setores.
    2. Bitcoin for beginners: The economics and use of BitcoinsBitcoin as a technology and network.
    3. Explain Bitcoin Like I’m Five.

Visão geral: exemplo

Nesse tutorial iremos criar uma pequena aplicação para criar uma carteira Bitcoin, obter informações dessa carteira e realizar transações entre carteiras. Utilizaremos uma rede Bitcoin de testes (Testnet) para adicionar fundos a uma dessas carteiras e realizar uma transação. (Figura 1).


Figura 1 - Aplicação gerada ao final desse tutorial.



Figura 2 - Modal para transação de fundos.

 

Como funciona a API

Quando criamos uma carteira em um rede Bitcoin são gerados: um arquivo *.wallet (carteira), que é a chave privada; uma chave pública e recebe uma parte da cadeia de blocos ou "livro-razão" da rede Bitcoin em um arquivo *.spvchain.

Quando vamos transferir recursos de uma carteira para outra, precisamos informar a chave privada da carteira que será debitada (equivalente ao número da conta e senha em um banco convencional) e a chave pública da carteira creditada (equivalente ao número da conta corrente).

Ao realizar a transação, uma chave hash única é gerada e disponibilizada na cadeia de blocos de toda a rede para que todos saibam, garantindo que a transação foi feita.

............................................................................................................

Criando a View da aplicação

Nessa aplicação teremos uma única tela e um modal que usaremos para realizar as transações. Vamos começar a trabalhar na tela principal, vamos utilizar a página home.view.html (Código Fonte / Principal / Código Fonte Cliente / views / logged / ), que já existe no projeto.

1. Editando os componentes

Arraste os seguintes componentes para a tela deixando como mostrado na Figura 1 e renomeie os rótulos de cada componente:

  1. Nome da Carteira (Entrada de texto): Usaremos para dar nomes as carteiras criadas, identificar o nome da carteira que iremos receber as informações ou a carteira que será debitada na transferência.
  2. Criar Carteira (Botão): Chama a função de bloco que criará uma carteira;
  3. Informações da Carteira (Botão): Chamar a função de bloco que retorna algumas informações sobre a carteira (itens 6, 7 e 8);
  4. Transferência (Botão): Abre o modal para realizar uma transação;
  5. Chave pública da Carteira (Entrada de texto): A chave pública da Carteira, esse é o endereço que será passado para as outras pessoas para que realizem transferência de Bitcoins;
  6. Saldo da Carteira (Satoshi) (Entrada de texto): Informa o saldo da carteira em valor Satoshi (menor unidade do BitCoin);
  7. Saldo da Carteira (tBTC) (Entrada de texto): Informa o saldo da carteira em valor tBTC (Bitcoin de teste);
Âncora
BTCtoSatoshi
BTCtoSatoshi
Informações
titleValor BTC e Satoshi

O valor Satoshi é a menor unidade do Bitcoin, assim como ocorre no real com o centavo. Porém, diferente do real que 100 centavos equivalem a R$1,00; no Bitcoin, 1 BTC equivale a 100.000.000 Satoshis.

Exemplo: 100,000 Satoshi = 0.00100000 ?


Se preferir, altere o nome dos identificadores dos campos de texto, facilitando nosso trabalho, já que vamos trabalhar com 6 campos (4 na tela e 2 no modal).

2. Criando o modal para transferência 

Para gerar um modal no CronApp, basta clicar no simbolo "+" (Adicionar modal), como mostra na Figura 3.

Âncora
AddModal
AddModal
Figura 3 - Criando um modal.


Arraste os componentes abaixo para modal, deixando como mostrado na Figura 2 e renomeie os rótulos de cada componente:

  1. Enviar Fundos (Texto): Adicionar no HEADER do modal;
  2. Chave da Carteira Creditada (Entrada de texto): Adicionar no BODY do moda para informar a chave pública da conta que iremos transferir;
  3. Valor (tBTC) (Entrada de texto): Adicionar no BODY do modal para o valor que será transferido em tBTC (Bitcoins de teste);
  4. Enviar (Botão): Adicionar no FOOTER do modal para chamar a função de bloco que irá transferir o valor de um carteira para outra.

Criando a função do lado Cliente

No lado Cliente vamos apenas criar um bloco que chamará a modal quando clicarmos no botão "Transferência". 

1. Função que chama o modal

Âncora
CriaFuncao
CriaFuncao
Clique com o botão direito do mouse na pasta Bloco de Programação ( localizada em "Código Fonte / Principal / Código Fonte Cliente / js /") e selecione Novo  Bloco de Programação. Ao abrir a janela "Novo", selecione a opção "Bloco de Programação Vazio" e Avance, em seguida adicione o nome do Arquivo e clique em finalizar. (Figura 4).

Figura 4 - Criando o bloco de programação para chamar o modal.

 

Para essa função de bloco de programação, renomeie para "AbrirMoral", arraste o bloco "Exibir modal" (categoria Formulário) e selecione o Identificador do modal que criamos na nossa View. (Figura 5)


Figura 5 - Chamada do modal.

Criando as funções do lado Servidor

Vamos criar 3 funções de bloco de programação do lado Servidor: "CriarCarteira", que irá criar uma carteira na rede Bitcoin e retornar a chave pública, além dos arquivos *.wallet e *.spvchain; "ObterInformações", para retornar o saldo e a chave pública da carteira e a função "EnviarFundos', responsável por realizar transações entre carteiras.

1. Função Criar Carteira

Da mesma forma que criamos uma função do lado Cliente, iremos fazer do lado Servidor.

Clique com o botão direito do mouse na pasta Bloco de Programação ( localizada em "Código Fonte / Principal / Código Fonte Servidor /") e selecione Novo  Bloco de Programação. Ao abrir a janela "Novo", selecione a opção "Bloco de Programação Vazio" e Avance, em seguida adicione o nome do Arquivo ("Carteira") e clique em finalizar.

Renomeie a função para "CriarCarteira" (1), crie uma nova variável (categoria Variáveis) com o nome "novaCarteira" (2) e arraste o bloco "definir novaCarteira para" (3). (figura 6 - Fazer ainda).

Continuando os passos da Figura 6, arraste o bloco "Criar carteira" (categoria Blockchain Operation) e encaixe na variável que criamos acima: "novaCarteira" (4). Esse bloco recebe 3 parâmetros: o primeiro é o endereço onde serão salvos os arquivos *.wallet e *.spvchain, arrastamos o bloco "criar texto com" (categoria Texto) para concatenar o endereço local da aplicação usando o bloco "pasta da aplicação" (categoria Arquivo) e no segundo parâmetro do bloco "criar texto com", informe "/carteiras" com o bloco texto (categoria Texto), assim será criado um novo diretório chamado "carteira"; o próximo parâmetro é o nome da carteira que será informado pelo usuário no campo "Nome da Carteira", arrastamos o bloco "Obter valor do campo" e selecione o identificador desse campo (6), por fim, o último parâmetro é a rede Bitcoin na qual iremos trabalhar, para esse tutorial iremos utilizar a rede Testnet, então basta digitar "test" que a API do CronApp já reconhecerá que estamos tratando de um teste na rede Testnet (7).

O bloco "Criar Carteira" retorna, além dos arquivos já informados, o endereço da chave pública que será armazenada na variável "novaCarteira" que criamos. Vamos informar o endereço no campo "Chave pública da Carteira" arrastando o bloco "Alterar valor do campo" e selecionando o identificador do campo "Chave pública da carteira" no primeiro parâmetro e a variável "novaCarteira" no último parâmetro, como no passo 8 da figura 6.

2. Função Obter informações

O objetivo dessa função é retornar informações como o saldo e a chave pública de uma carteira, passando para isso o local do arquivo *.wallet e a rede Bitcoin.

Crie uma nova função arrastando o bloco "Para" (categoria Funções) e renomeie para "ObterInformações".

Crie 2 variáveis ("saldoCarteira" e "enderecoCarteira") como fizemos no passo anterior e arraste-os. Arraste também os blocos "Obter saldo" e "Obter o chave pública" (categoria Blockchain Operations) encaixando-os em suas respectivas variáveis. Os parâmetros dos 2 blocos são idênticos:

  1. Diretório: Arraste o bloco "criar texto com" (categoria Texto) para concatenar o bloco "pasta da aplicação" e "/carteiras";
  2. Nome do arquivo: Arraste o bloco "Obter valor do campo" selecionando o identificador do campo "Nome da Carteira" e
  3. Rede: Basta informar "test" ou informar uma rede Bitcoin real.

Agora vamos alimentar os campos na tela. Arraste 3 blocos "Alterar valor do campo" (categoria Formulário):

  1. No primeiro informe o identificador do campo "Chave pública da Carteira" e informe a variável "EnderecoCarteira" no parâmetro valor;
  2. No próximo bloco "Alterar valor do campo", arraste o identificador do campo "Saldo da Carteira (Satoshi)" e no parâmetro valor, arraste o bloco "Converter para texto" (categoria Conversão) e encaixe a variável "saldoCarteira" e 
  3. Para o último bloco "Alterar valor do campo", informe o identificador do campo "Saldo da Carteira (Satoshi)"  e para o parâmetro valor, vamos ter que fazer um cálculo para converter unidades Satoshi em Bitcoin, como explicamos acima. Arraste o bloco "Operações matemáticas" e selecione "÷" (divisão), arrastando para o campo dividendo os blocos "Converte para Double", "Converter para texto" (categoria Conversão) e a variável "saldoCarteira" e no campo divisor arraste o bloco "número" (categoria Matemática) informando o valor "100000000".

3. Função Enviar Fundos

O objetivo dessa função é realizar uma transação entre 2 carteiras Bitcoins.

Crie uma nova função arrastando o bloco "Para" (categoria Funções) e renomeie para "EnviarFundos".

Arraste o bloco "Enviar moedas" (categoria Blockchain Operations) que possui 5 parâmetros:

  1. Diretório: Arraste o bloco "criar texto com" para concatenar o bloco "pasta da aplicação" e o texto "/carteiras" informando o local onde estão os arquivo *.wallet;
  2. Nome do arquivo: Arraste o bloco "Obter valor do campo" selecionando o identificador do campo "Nome da Carteira", onde o usuário informou o nome da carteira;
  3. Rede: Basta informar "test" para usar a rede de teste (Testnet) ou informar uma rede Bitcoin real;
  4. Valor: Arraste o bloco "Obter valor do campo" selecionando o identificador do campo "Valor (tBTC)" do modal e
  5. Endereço: Arraste o bloco "Obter valor do campo" selecionando o identificador do campo "Chave da Carteira Creditada" do modal.

Essa função deve ficar como na Figura XX.

 

FIGURA XX

Chamando os eventos nos botões

De volta a página "home.view.html", precisamos chamar os evento que acabamos de criar nos botões da página. Para isso, selecione o botão "Criar Carteira" (1), na aba eventos (2) selecione a propriedade "Ao Clicar" (3), clique no botão "…"  do campo "Selecione o Bloco de Programação" da janela "Events" (4) e selecione a função "CriarCarteira" (5).

Faça a mesma coisa para os outros botões: No botão "informações da Carteira" selecione a função "ObterInformações" e para o botão "Transferência", selecione a função do lado cliente "AbrirModal".

No dropdown dos Modais já adicionado/criado, selecione o moral que criamos anteriormente (como mostrado na figura 3), selecione o botão "Enviar" e chame o evento "EnviarFundos" (lado servidor).

FIGURA XX

Testando a Aplicação

Salve os arquivos alterados e execute a aplicação (F9) ou Debug (F11). Após abrir a aplicação, informe login e senha "admin" e confirme para acessar a página home.view.html. 

1.

......

Criação de Carteira

Primeiramente vamos ter que criar 2 carteiras para podermos testar a transferência. Informe o nome da primeira carteira no campo "Nome da Carteira", por exemplo "CarteiraEdson", e clique em "Criar Carteira". Após isso, deve ser exibido a chave pública no campo "Chave pública da Carteira" e serão criados 2 arquivos, ambos no diretório carteiras que criamos: "CarteiraEdson.spvchain" (parte do "livro razão" da rede P2P da Blockchain que é atualizada de tempo tempos em tempotempos) e "CarteiraEdson.wallet" (chave privada da carteira) . (Figura XX).

Informações
titleObservação

Realizar alguma ação em uma rede Bitcoin não costumar costuma ser tão rápido, já que estamos trabalhando com servidores descentralizados e os mesmos precisam confirmar aquela a ação. Por isso é comum uma ação de demorar demorare alguns minutos para ser validada.

Na rede de teste (Testnet) esses procedimentos costumam ser mais demorados ainda, já que possuem poucas pessoas minerando dados e os mesmos não recebem recompensas por essas minerações, como ocorre nas redes oficiais.

Próximo passo é criar uma segunda carteira, informe um nome no campo "Nome da Carteira", por exemplo "CarteiraIgor" e clique em "Criar Carteira". O mesmo procedimento deve ocorrer, uma chave única no campo "Chave pública da Carteira" e mais 2 arquivos no diretório "carteiras": "CarteiraIgor.spvchain" e "CarteiraIgor.wallet".

Nesse momentos já temos 2 carteiras criadas, porém para testarmos uma transferência, alguma das carteiras devem possuir fundos. Para isso vamos usar um site de testes para adicionar alguns Bitcoins ..... 

 

Adicionar fundos no testnet.manu.backend.ham....

 

 

ddd

 

 

Painel
titleNesta Página

Índice