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
Image Modified
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 identificar /ou a carteira que será debitada na transferência.
  2. Criar Carteira (Botão): Chamar Chama a função de bloco que criará uma carteira;
  3. Informações da Carteira (Botão): Chamar a função de bloco que retornará retorna algumas informações sobre a carteira (itens 6, 7 e 8);
  4. Transferência (Botão): Abre o modal onde informaremos a conta que será creditada e o valor da transação;
  5. Endereço local da Carteira (Entrada de texto): Informará o endereço em que está armazenado o arquivo da carteira (*.wallet)
  6. para realizar uma transação;
  7. 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 fundosque realizarão transferências;
  8. Saldo da Carteira (Satoshi) (Entrada de texto): Informa o saldo da carteira em valor Satoshi (menor unidade do BitCoin);
  9. 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 7 6 campos (5 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

chamar

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 , basta arrastar para "AbrirModal", arraste o bloco "Exibir modal" (seção categoria Formulário) e selecionar selecione o Identificador do modal que criamos na nossa viewView. (Figura 5)

Image Modified
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 (
Seção
  1. 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" (
Sessão Blockchain Operation
  1. categoria Operando Bitcoin) e encaixe na variável
"novaCarteira" (4)
  1. que criamos 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
, nesse caso arrastar o bloco "Pasta da aplicação" e criar uma subpasta chamada "carteira", para isso basta concatenar o endereço da pasta da aplicação e adicionar "\carteiras" utilizando o bloco "criar texto com" (sessão texto) (5); o próximo
  1. . Arrastamos o bloco "criar texto com" (categoria Texto) e concatenamos o endereço local da aplicação usando o bloco "pasta da aplicação" (categoria Arquivo) com o bloco de texto (categoria Texto) informando "/carteiras" , assim será criado um novo diretório chamado "carteiras";
  2. 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
selecionamos
  1. selecione o identificador desse campo
(6), por fim, o
  1. ;
  2. O último parâmetro é a rede
Blockchain
  1. 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
arrastar
  1. alimentar o campo "Chave pública da Carteira" arrastando o bloco "Alterar valor do campo" e
selecionar
  1. 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" (
sessão
  1. categoria Funções) e
renomeando
  1. 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" (
Sessão Blockchain Operations
  1. categoria 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"
:
  1. (categoria Formulário) 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;
no segundo bloco
  1. No próximo bloco "Alterar valor do campo", arraste o identificador do "Saldo da Carteira (Satoshi)" no parâmetro campo e no segundo parâmetro (valor), arraste o bloco "Converter para texto" (
Sessão
  1. categoria Conversão) e
adicione
  1. encaixe a variável "saldoCarteira"
e para
  1. Para o último bloco "Alterar valor do campo", informe o identificador do "Saldo da Carteira (tBTC)" 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
" vamos SABER SE VAI PRECISAR FAZER A CONVERSÂO.
  1. divisor arraste o bloco "número" (categoria Matemática) informando o valor "100000000".

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 Operando Bitcoin) que possui 5 parâmetros:
  3. 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

 

local do
  1. arquivo *.wallet;
nome do arquivo, que será informado pelo usuário no
  1. Nome do arquivo: Arraste o bloco "Obter valor do campo" selecionando o identificador do campo "Nome da Carteira"
e a rede Blockchain, que nesse caso basta digitar
  1. , onde o usuário informou o nome da carteira;
  2. RedeBasta informar "test"
que a API reconhece que estamos trabalhando com a
  1. para usar a rede de teste
 Testnet.

ssssdfgsdxvxv

3. Função Enviar Fundos

No editor de texto rico do CronApp é possível desabilitar alguns ícones que aparecem na barra de tarefas e ocultar as barras de status e menu, além de estilizar o texto do usuário com o uso do CSS.

Essas personalizações podem ser feitas utilizando a propriedade Opções (options) do texto rico, como mostradas nas figura 3 e 4: Selecione o campo texto rico na tela (1), clique na subaba “CAMPO” na aba propriedades (2) e clique em “…” da propriedade Opções (3) para exibir a janela de “Opções do Editor Rico” e selecione a aba "Geral" para Ocultar as barras menu, status e estilizar o texto ou a aba "Barra de tarefas" para desabilitar algumas funcionalidades do editor (4).ddd

 

 

Painel
titleNesta Página
toc
  1. (Testnet) ou informar uma rede Bitcoin real;
  2. ValorArraste o bloco "Obter valor do campo" selecionando o identificador do campo "Valor (tBTC)" do modal e
  3. 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 8.

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) 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 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, selecione o modal que criamos anteriormente (como mostrado na figura 3), selecione o botão "Enviar" e chame o evento "EnviarFundos" (lado servidor).

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. 

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 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 no diretório carteiras que criamos: "CarteiraEdson.spvchain" (parte do "livro razão" da rede P2P da Blockchain que é atualizada de tempos em tempos) e "CarteiraEdson.wallet" (chave privada da carteira).


Informações
titleObservação

Realizar alguma ação em uma rede Bitcoin não costuma ser tão rápido, já que estamos trabalhando com servidores descentralizados e os mesmos precisam confirmar a ação. Por isso é comum que uma ação 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". (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.