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. . Ele permite transações financeiras sem intermediários, como bancos, e são validados pelos próprios usuários (nodos) através de uma rede chamada Blockchain.

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 mobile criado. Caso haja dúvidas de como criar esse tipo de projeto acesse o link (Criando Projeto Web) Criar novo projeto );
  2. Adicionar o Gluonsoft da API do Bitcoin.
  3. 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 Figuras 1 e 2).

Âncora
FiguraApp
FiguraApp

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


Âncora
FiguraModal
FiguraModal

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

 

Como funciona a API do Bitcoin

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

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

Ao realizar Após a transação, uma chave (hash) única é gerada referente aquela transação e disponibilizada na cadeia de blocos (livro-razão) de toda a rede para que todos saibam, garantindo que a transação foi feita.

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

Criando a View da aplicação

Por segurança, sempre que uma transferência é feita, as chaves públicas das carteiras são alteradas, permitindo o anonimato. Por isso, antes de uma transferência, o último endereço da carteira que será creditada deve ser solicitado, caso contrário a transação não será concluída.

Passo a passo

Na aplicação desse tutorial 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 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 Na página home.view.html, arraste os seguintes componentes para a tela deixando-a como mostrado na Figura 1 e renomeie  e renomeando 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 e/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 Bitcoinsque realizarão transferências;
  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 ? BTC


Se preferir, altere o nome dos identificadores dos campos de texto, facilitando nosso trabalho, já que vamos iremos 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
Image ModifiedFigura 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 o 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 Renomeie essa função de bloco de programação , renomeie para "AbrirMoralAbrirModal", 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

  1. CriarCarteira: Gera uma carteira na rede Bitcoin e retornar a chave pública, além dos arquivos *.wallet e *.spvchain;
"ObterInformações", para retornar
  1.  
  2. ObterInformações: Retornar o saldo e a chave pública da carteira
e a função "EnviarFundos',
  1. 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. Os passos a seguir se referem a Figura 6:

  1. Renomeie a função para "CriarCarteira"
(1), crie
  1. ;
  2. Crie uma nova variável (categoria Variáveis) com o nome "novaCarteira"
(2)
  1. e arraste o bloco "definir 'novaCarteira' para"
(3). (figura 6 - Fazer ainda).Continuando os passos da Figura 6, arraste
  1. ;
  2. Arraste o bloco "Criar carteira" (categoria
Blockchain Operation
  1. Operando Bitcoin) e encaixe na variável que criamos
acima: "novaCarteira" (4)
  1. no passo anterior. Esse bloco recebe 3 parâmetros
: o
  1. que informamos nos passos 4, 5 e 6;
  2. O primeiro é o endereço onde serão salvos os arquivos *.wallet e *.spvchain
, arrastamos
  1. . Arrastamos o bloco "criar texto com" (categoria Texto)
para concatenar
  1. e concatenamos 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"
  1. com o bloco
texto
  1. de texto (categoria Texto) informando "/carteiras" , assim será criado um novo diretório chamado "
carteira
  1. carteiras";
o próximo
  1. O segundo parâmetro é o nome da carteira que será informado pelo usuário no campo "Nome da Carteira",
arrastamos
  1. arraste o bloco "Obter valor do campo" e selecione o identificador desse campo
(6), por fim, o
  1. ;
  2. 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).
  1. ;
  2. A função de
O
  1. bloco "
Criar Carteira
  1. CriarCarteira"
retorna,
  1. além
dos
  1. de gerar os arquivos já informados, retorna o endereço da chave pública que será armazenada na variável "novaCarteira" que criamos. Vamos
informar
  1. alimentar o
endereço no
  1. 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.
  1. .

Image Added
Figura 6 - Passos da função de bloco Criar Carteira.

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 usada. Os passos a seguir são referente a Figura 7.1:

  1. Crie uma nova função arrastando o bloco "Para" (categoria Funções) e renomeie para "ObterInformações"
.
  1. ;
  2. Crie 2 variáveis ("saldoCarteira" e "enderecoCarteira") como fizemos no passo anterior e arraste-os
.
  1. Arraste também os blocos "Obter saldo" e "Obter o chave pública" (categoria
Blockchain Operations
  1. Operando Bitcoin) encaixando-os em suas respectivas variáveis.
    Os parâmetros dos 2 blocos são idênticos
:
  1. , basta seguir os passos 4, 5 e 6 informados abaixo.
  2. Diretório: Arraste o bloco "criar texto com" (categoria Texto) para concatenar o bloco "pasta da aplicação" e "/carteiras";
  3. Nome do arquivo: Arraste o bloco "Obter valor do campo" selecionando o identificador do campo "Nome da Carteira" e
  4. Rede: Basta informar "test" ou informar uma rede Bitcoin real.

Image Added
Figura 7.1 - Primeira parte da função de bloco Obter Informações


Continuando a implementação da função de bloco "ObterInformacoes", Agora vamos alimentar os campos na tela. Veja abaixo se referem a Figura 7.2:

  1. Arraste 3 blocos "Alterar valor do campo" (categoria Formulário)
:
  1. logo abaixo dos blocos que criamos no passo anterior;
  2. No primeiro, informe o identificador do campo "Chave pública da Carteira" no primeiro parâmetro e informe a variável "EnderecoCarteira" no parâmetro valor;
  3. No próximo bloco "Alterar valor do campo", arraste o identificador do campo "Saldo da Carteira (Satoshi)" no parâmetro campo e no segundo parâmetro (valor), arraste o bloco "Converter para texto" (categoria Conversão) e encaixe a variável "saldoCarteira" e 
  4. Para o último bloco "Alterar valor do campo", informe o identificador do campo "Saldo da Carteira (SatoshitBTC)"   e para o parâmetro valor, no parâmetro campo e no segundo 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" (categoria Matemática) e selecione "÷" (divisão), arrastando para o campo dividendo os blocos "Converte para Double", "Converter para texto" (ambos da categoria Conversão) e a variável "saldoCarteira" e por fim, no campo divisor arraste o bloco "número" (categoria Matemática) informando o valor "100000000".
3.

Image AddedFigura 7.2 - Segunda parte da função de bloco Obter Informações

Função Enviar Fundos

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

  1. Crie uma nova função arrastando o bloco "Para" (categoria Funções) e renomeie para "EnviarFundos".
  2. Arraste o bloco "Enviar moedas" (categoria
Blockchain Operations
  1. Operando Bitcoin) que possui 5 parâmetros:
  2. 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;
  3. 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;
  4. RedeBasta informar "test" para usar a rede de teste (Testnet) ou informar uma rede Bitcoin real;
  5. ValorArraste o bloco "Obter valor do campo" selecionando o identificador do campo "Valor (tBTC)" do modal e
  6. EndereçoArraste 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 XX8.

 

FIGURA XX

Image AddedFigura 8 - Função que envia Bitcoins entre carteiras.

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 pressione 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). (Figura 9)

Image AddedFigura 9 - Adicionando evento da função que criamos ao botão.


Faça a mesma coisa procedimento 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 modal 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 no botão "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 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 que uma ação de demorar demore 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". 

 

ddd

 

(Figura 10).

Image Added
Figura 10 - Carteiras criadas 

Adicionando Bitcoins a uma carteira

Nesse momentos já temos 2 carteiras criadas, porém para testarmos uma transferência é necessário que alguma carteira possua fundos. Por isso vamos usar um site de testes para adicionar alguns Bitcoins a carteira que criamos.

Informações
titleObservação

Lembramos que esses Bitcoins adicionados não possuem nenhum valor monetário, já que se trata de uma rede de testes. 


Acesse a aba Bitcoin Cash Faucet do site Bitcoin TestNet Sandbox informando a chave pública da carteira que deseja receber recursos, no nosso exemplo vamos utilizar a primeira carteira que criamos "CarteiraEdson", marque o checkbox do reCAPTCHA e clique em "Give me some coins" (Me dê algumas moedas). (Figura 11)

Após esse passo, uma janela de confirmação deve aparecer informando o hash da operação. (Figura 12)

 



Painel
titleNesta Página

Índice


Image Added

Image Added


Figura 11 e 12 - Adicionando alguns Bitcoins de testes a uma carteira e sua confirmação.



Se quiser verificar se a transação foi realizada, basta acessar o site Blocktrail, selecionar a área de desenvolvimento e no campo de pesquisa informar a chave pública da carteira, uma página será exibida com as informações das transações realizadas para essa carteira. (Figura 13)

Image AddedFigura 13 - Verificando a transação no site Blocktrail.

Âncora
TestePasso3
TestePasso3
Testando o botão de informações da carteira

De volta ao nosso sistema, informe o nome da carteira que adicionamos Bitcoin pelo site Bitcoin TestNet Sandbox no campo "Nome da Carteira" e clique no botão "Informações da Carteira". O sistema deve exibir além da chave pública, o saldo em tBTC e Satoshi em seus respectivos campos, veja o resulta na Figura 1.

Testando a transferência

Informe novamente o nome da carteira que recebeu os Bitcoins no campo "Nome da Carteira", clique no botão Transferência para abrir o modal e adicione a chave pública da segunda carteira que criamos, nesse exemplo foi "CarteiraIgor", insira também a quantidade de Bitcoins que deseja transferir e clique e Enviar. (Figura 2)

Caso não tenha anotado a chave pública da segunda carteira, basta adicionar o nome da carteira no campo "Nome da Carteira" e clicar em Informações da carteira, como fizemos no passo 3.

Espere alguns minutos e verifique os saldos das carteiras.