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:
- 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 );
- Adicionar o Gluonsoft da API do Bitcoin.
- Ter conhecimento básico sobre Bitcoin e Blockchain. Veja conteúdo a respeito nos links abaixo:
- Webinar do CronApp: Blockchain: Uma revolução em todos os setores.
- Bitcoin for beginners: The economics and use of Bitcoins e Bitcoin as a technology and network.
- 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:
- 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.
- Criar Carteira (Botão): Chama a função de bloco que criará uma carteira;
- 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);
- Transferência (Botão): Abre o modal para realizar uma transação;
- 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;
- Saldo da Carteira (Satoshi) (Entrada de texto): Informa o saldo da carteira em valor Satoshi (menor unidade do BitCoin);
- Saldo da Carteira (tBTC) (Entrada de texto): Informa o saldo da carteira em valor tBTC (Bitcoin de teste);
Âncora | ||||
---|---|---|---|---|
|
Informações | ||
---|---|---|
| ||
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).
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:
- Enviar Fundos (Texto): Adicionar no HEADER do modal;
- Chave da Carteira Creditada (Entrada de texto): Adicionar no BODY do moda para informar a chave pública da conta que iremos transferir;
- Valor (tBTC) (Entrada de texto): Adicionar no BODY do modal para o valor que será transferido em tBTC (Bitcoins de teste);
- 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
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). Âncora CriaFuncao CriaFuncao
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
- CriarCarteira: Gera uma carteira na rede Bitcoin e retornar a chave pública, além dos arquivos *.wallet e *.spvchain;
- ObterInformações: Retornar o saldo e a chave pública da carteira
- e
- EnviarFundos: responsável por realizar transações entre carteiras.
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:
- Renomeie a função para "CriarCarteira"
- ;
- Crie uma nova variável (categoria Variáveis) com o nome "novaCarteira"
- e arraste o bloco "definir 'novaCarteira' para"
- ;
- Arraste o bloco "Criar carteira" (categoria
- Operando Bitcoin) e encaixe na variável que criamos
- no passo anterior. Esse bloco recebe 3 parâmetros
- que informamos nos passos 4, 5 e 6;
- O primeiro é o endereço onde serão salvos os arquivos *.wallet e *.spvchain
- . 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";
- O segundo parâmetro é o nome da carteira que será informado pelo usuário no campo "Nome da Carteira",
- arraste o bloco "Obter valor do campo" e selecione o identificador desse campo
- ;
- 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
- ;
- A função de
- bloco "
- CriarCarteira"
- além
- de gerar os arquivos já informados, retorna o endereço da chave pública que será armazenada na variável "novaCarteira" que criamos. Vamos
- alimentar o
- 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
- .
Image Added
Figura 6 - Passos da função de bloco Criar Carteira.
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:
- 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
- Operando Bitcoin) encaixando-os em suas respectivas variáveis.
Os parâmetros dos 2 blocos são idênticos
- , basta seguir os passos 4, 5 e 6 informados abaixo.
- Diretório: Arraste o bloco "criar texto com" (categoria Texto) para concatenar o bloco "pasta da aplicação" e "/carteiras";
- Nome do arquivo: Arraste o bloco "Obter valor do campo" selecionando o identificador do campo "Nome da Carteira" e
- 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:
- Arraste 3 blocos "Alterar valor do campo" (categoria Formulário)
- logo abaixo dos blocos que criamos no passo anterior;
- 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 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
- 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".
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.
- Crie uma nova função arrastando o bloco "Para" (categoria Funções) e renomeie para "EnviarFundos".
- Arraste o bloco "Enviar moedas" (categoria
- Operando Bitcoin) que possui 5 parâmetros:
- 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;
- 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;
- Rede: Basta informar "test" para usar a rede de teste (Testnet) ou informar uma rede Bitcoin real;
- Valor: Arraste o bloco "Obter valor do campo" selecionando o identificador do campo "Valor (tBTC)" do modal e
- 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 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 | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
|
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
TestePasso3 | |
TestePasso3 |
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.