O desenvolvimento de aplicativos Bitcoin é muito simples, mesmo quando você precisa colocar as mãos no nível do código, se tiver algumas noções de programação. Se algo é complicado, é entender quais partes entram em jogo e como. O resto não muda em excesso de outro tipo de aplicações, onde em questão de horas você pode ter algo totalmente funcional.

Este artigo não é para lidar com um passo a passo como fazer um APP, mas para nos fazer um esboço mental das peças que formam uma APP básica e como eles interagem.

Claro que é aconselhável entender o básico do Bitcoin.

Vamos começar Temos que pensar de maneira modular. Por um lado, é o nosso aplicativo e outro Bitcoin.

Para interagir com o Bitcoin você pode fazer de duas maneiras: Instalando um próprio nó (node) do Bitcoin ou usando o nó de outros. Em ambos os casos, ele é  interagido por meio de uma API. Às vezes, algumas APIs mais simples, como o RESTful e outras um pouco mais complicadas no nível JSON-RPC. No entanto, e felizmente, os programadores já possuem bibliotecas reutilizáveis (open source) de código aberto para simplificar ambos os casos, se for desejado.

Neste caso, vamos imaginar que usamos a versão um pouco mais complexa, que é baseada no uso do seu próprio nó Bitcoin, que dá mais autonomia e dá uma melhor compreensão de como o Bitcoin funciona.

Nó Bitcoin

Um nó Bitcoin é composto por 3 peças notáveis:

  • O “demon”: Ele é conectado a outros nós, permitindo criar aquela rede P2P onde todos os eventos que ocorrem na rede são trocados por sockets.
  • Blockchain: o banco de dados que registra os eventos localmente em cada nó. Na verdade, seu aplicativo não usará esse banco de dados, se não o seu propio, se você precisar dele.
  • API: eventos são convertidos em uma resposta JSON e transmitidos por uma porta, podem ou não estar protegidos para ouvintes externos.
nodo-bitcoin

Estrutura muito simles do nó Bitcoin

O nó pode ser instalado em um computador Unix ou Windows e pode ser chamado ou escutado quando quiser através da porta que possui para ele, com ou sem autenticação (ao gosto), sendo um canal de comunicação bidirecional: Você pode receber em tempo real o que o que acontece no nó e você pode enviar informações para fazer coisas ou informá-lo das coisas. Como configurar o seu nó Bitcoin em menos de 10 minutos.

O aplicativo

É claro que pode ser desenvolvido na linguagem desejada e não necessariamente deve conhecer em excesso a operação do nó Bitcoin.

Um aplicativo simples é composto por um backend, um banco de dados e um frontend. Até lá nada de novo. Você pode colocar uma API ou não … o mesmo de sempre. O backend sempre que você quiser interagir com a rede Bitcoin pode chamar a API RPC do nó ou ouvi-la para tomar decisões.

app

Exemplo típico simplificado de um aplicativo da web

Nós juntamos peças: Aplicativo + Bitcoin Node

Nós juntamos peças: Application + Bitcoin NodeImagine que nós queremos fazer um explorador blockchain. Nós simplesmente temos que colocar nosso backend para ouvir todos os eventos que ocorrem em nosso nó (o que nos informa sobre o que está acontecendo na rede), guardar as informações que o nó nos passa em nosso banco de dados para mais consultas pela frente onde mostraremos o pedido

app-nodo-bitcoin

Estructura simplificada de una aplicación web interactuando con un nodo Bitcoin

Deve-se notar que ter um APP semelhante ao blockchain.info, um navegador blockchain, com sua própria API RESTful no modo privado ou público para interagir com seu aplicativo é questão de alguns minutos com o desenvolvimento do open source chamado BitPay Insight.

Outros detalhes

Enviar um pagamento para a rede também é muito simples, pois uma vez que a transação é preparada no back-end, o que é feito é enviá-la ao nó por meio da API JSON-RPC para que ela seja transmitida para o restante dos nós e outros e assim por diante até que se espalhe por toda a rede. É por isso que é importante ter o nó bem pareado e pares de qualidade, pois isso garante que uma transação seja retransmitida por toda a rede muito rapidamente e confirme as transações antes.

Os endereços e transações são preparados offline. Ou seja, o nó não é necessário para isso, apenas para obter as informações. Em seguida, a transação é preparada e enviada para a rede codificada.

Logicamente para quase todos os idiomas já existem bibliotecas que simplificam tudo onde, uma vez importados, seus métodos permitem o mesmo, mas com menos código.
No backend normalmente são usadas duas bibliotecas (embora ambas possam estar em uma, dependendo da biblioteca). O primeiro se comunica com o nó do Bitcoin, e o segundo é responsável por gerar endereços ou preparar transações.

Este é um exemplo simples e uma visão panorâmica de uma organização típica simples, e aqui a sua criatividade entra em ação, é o que nos permite criar novos casos de uso.

Em quase todas as criptomoedas, seu nó e como ele interage com eles no nível do esquema é muito semelhante. Montar um exchange de criptomoedas (tipo Coinbase ou OKCoin) não está longe dos princípios que foram expostos aqui, porém, replicando tudo: backends balanceados, múltiplos nós de cada criptomoeda no caso de um cair ou ficar fora de fase …

Uma dica: Se é a primeira vez que você desenvolve Bitcoin, é melhor alugar um servidor (por exemplo, um da OVH por € 5 / mês), é um pequeno investimento e eles oferecem uma máquina dedicada pronta para “quebrar” quantas vezes você precisar . Além disso, baixe o blockchain que será muito mais rápido e confortável. Em seguida, você pode desenvolver seu aplicativo localmente e usar a API do nó de bitcoin da máquina alugada.

Com isso, você tem o que é preciso para fazer um esboço mental de onde começar a criar seu aplicativo. Dependendo do idioma que você deseja usar, você deve procurar somente as bibliotecas necessárias. Por exemplo, para o NodeJS você pode usar o Bitcore, que tem tudo o que você precisa na mesma biblioteca. Também BitcoinJS, embora isso só incide sobre a parte do trabalho offline Bitcoin (criar endereços, preparar transações …)

Este articulo foi util?
Average Scoring: 0
➜ Share the knowledge and promote the decentralized revolution!