Explorador de Blockchain do Bitcoin para o Terminal (Bash)

Explicando alguns pontos fundamentais da organização do Blockchain do Bitcoin e como explorá-lo, além de dicas de exploradores WEB e um programa de exploração para o Bash.

[ Hits: 5.280 ]

Por: Perfil removido em 31/07/2019


Organização e Exploração da Cadeia de Blocos



Explorando o Blockchain do Bitcoin

O Blockchain é o caderno contábil que grava as transações que acontecem com o Bitcoin. Ele pode ser analisado em quatro níveis:

  1. Blockchain propriamente dito;
  2. Blocos;
  3. Endereços;
  4. Transações.

Os mineradores mantêm as cópias dos cadernos. Cada minerador ou grupo de mineradores forma um "nó" na rede descentralizada do Bitcoin. Cada nó segura uma cópia o livro contábil do Bitcoin, e um novo bloco só é inserido no blockchain se a maioria dos mineradores aceitarem o novo bloco como válido.

Cada página de um livro contábil é como se fosse um bloco na cadeia do Bitcoin. Os usuários abrem uma conta no Bitcoin, ou seja, criam endereços privados através de uma "frase semente".

Essa frase semente, ou ainda chamada de chave privada de endereço, pode germinar infinitos novos endereços públicos de recebimento, para que as pessoas lhe mandem Bitcoin. De forma que, normalmente, se usa um único endereço para uma única transação para possibilitar que o receptor saiba quem lhe mandou o dinheiro, pois é no momento da negociação do preço que as partes envolvidas podem ter algum contato e se identificam de alguma forma. Por sua vez, no Blockchain, não há registro de dados que possam identificar as partes da transação, somente os endereços de partida e recebimento dos valores.

Todos os balancetes dos endereços de recebimento de uma conta de um usuário, irão se somar em um único balancete na chamada "carteira" do usuário.

Para poder identificar usuários envolvidos em uma cadeia de transações, é necessário informação externa sobre quem é o dono de pelo menos um dos endereços envolvidos. A partir daí, torna-se uma tarefa investigativa de detetives de Blockchain para resgatar pistas e elos que possam cada vez melhor identificar o dono de uma determinada carteira.

Em comparação, no papel-moeda tem-se o registro do número de série das cédulas, de qual banco elas saíram e até qual banco elas chegaram. Talvez registrem para quem foi o saque de cada cédula. Mas o caminho percorrido depois do primeiro recipiente até o antepenúltimo, só poderá saber se conseguir informações adicionais sobre quem teve a posse do dinheiro nesse meio termo para tentar fazer mais conexões.

Se usar ouro sem nenhuma marcação que o possa identificar, é praticamente impossível saber com certeza por quais caminhos a pepita percorreu. No máximo, suposições, mas daí teriam que saber o peso, aspecto e pureza de uma barra de ouro para tentar seguir o seu caminho em particular. O ouro é fundível e fungível, e nesse aspecto, o Bitcoin também o é.

No blockchain do Bitcoin, sempre haverá registros gerais das transações, de qual endereço ele veio e para qual foi. Um lavador de dinheiro poderá ter que esperar anos ou décadas, até conseguir usufruir do que roubou, pois sempre estará sendo vigiado, e se conseguirmos interceptar o receptor do dinheiro, mesmo que só de uma pequena parte do Bitcoin roubado, pode-se conseguir, talvez, mais uma dica da identidade do bandido. Nem mesmo um único Satoshi, que é a menor unidade de valor e representa 0,00000001 Bitcoin , deixa de ter uma mudança de mãos registrada!

Portanto, o Blockchain é tão vigiado e as transações deixam tantos registros, e cada vez ficará mais vigiado, que será constrangedor usá-lo para operações ilegais de grande porte, pelo menos o mesmo tanto de quando se usa malas com dinheiro papel-moeda para lavagem e se é pego!

O segundo nível de organização do Blockchain são os blocos. Os usuários solicitam transações para serem incluídas em um bloco e pagam uma pequena taxa para que os mineradores consigam achar um número de espalhamento (Hash) que possa conter sua transação.

Os números de espalhamento dos blocos da cadeia do Bitcoin precisam ser registros matemáticos de todas as transações contidas em um bloco, e são tanto mais difíceis de serem encontrados quanto mais mineradores procuram por eles.

A dificuldade para geração de um número de espalhamento é modificada a cada duas semanas, ou seja, há uma reobjetivação da dificuldade do número de espalhamento que redefine as características que ele deve ter para ser válido. É como se a dona/dono de casa espalhasse uma saca de feijão em cima da mesa, e fosse espalhando até encontrar um único grão de feijão com características peculiares.

No inglês, isso se chama "Retarget" da dificuldade e também serve para que, sempre, independentemente do número de mineradores, se ache um bloco a cada 10 minutos, mais ou menos. Estatisticamente, por exemplo em um período de duas semanas, a razão "(tempo decorrido) / (número de blocos encontrados)" deverá ser muito próxima de 10 min/bloco. Porém, observe que essa razão pode variar muito em um único dia.

Quando um minerador consegue achar um número de Hash adequado, ele pode gravar todas as transações específicas que ele separou no início e que também fizeram parte da definição das características do número de espalhamento, antes mesmo de se começar a procurar por ele. Além das taxas transacionais que os usuários pagam por esse serviço, o minerador ganha um prêmio por ter achado um novo bloco.

Os novos Bitcoins criados, atualmente 12,5 bitcoins por número de Hash descoberto, são criados do nada e são transaferidos para a conta (endereço) do minerador. Como nessa transação não tem um remetente de verdade, os Bitcoins criados são transferidos no que se conhece como a transação da "Coinbase", ou traduzindo livremente, "transação base de moedas". Não tem nada a ver com a Corretora Coinbase!

Na exploração da cadeia de blocos do Bitcoin, podemos explorar o terceiro nível de organização que são os endereços de recebimento e seus balancetes. Cada endereço do Bitcoin pode ser utilizado várias vezes, além do usuário poder gerar infinitos endereços de recebimento novos a partir de uma chave privada (semente).

O quarto nível de detalhes de exploração do Blockchain são as transações individuais. Por exemplo, se eu receber 0,00010000 BTC (ou 10 mil Satoshis) de alguém, haverá um registro no Blockchain do endereço do remetente. Assim, se se desejar verificar a transação antecedente que originou esse valor, também poderei verificar o registro básico dessa informação. De forma que se se for voltando no tempo e nas transações, chegará até as transações da "coinbase" que geraram aqueles Bitcoins!

Há mais uma observação relevante a ser esclarecida com relação às transações e os endereços. Quando se recebe uma quantidade de Bitcoins, eles ficam presos ao endereço de recebimento. Numa única conta, você tem vários endereços de recebimento. Se precisar usar um valor maior que o contido em um único endereço do usuário, poderá ser notado que a transação terá dois ou mais endereços de partida (ambos sob o domínio de um único usuário).

Além do fato que o usuário poderá enviar pagamento para vários endereços diferentes em uma única cada transação, também é de se notar que, se a soma de valores contidos nos endereços de partida do usuário for maior que o total que ele irá mandar para outra carteira, ele receberá um troco. Portanto, nas transações registradas, geralmente vê-se que o endereço de partida também recebe um valor como troco.

Cada bloco da cadeia pode ser identificado por um número de espalhamento, por sua altura no Blockchain (ou seja, o primeiro bloco é de altura 1, enquanto o segundo é de altura 2, e assim por diante..) ou ainda por um outro número chamado de "número de index" (ou número de ID). Já os endereços, só são identificáveis pelo seu próprio número de Hash.

As transações específicas podem ser identificadas por seu número de Hash, ou também, por um número de Index.

Nos exploradores de Bitcoin, o usuário geralmente poderá ver todo o caminho que os Bitcoins em questão percorreram até chegar a um determinado destinatário. Também poderá ver dados de cada bloco, como número de transações, taxas, tamanho do bloco (em bytes), hora que foi minerado, sua altura no Blockchain, etc.

Transações que foram pedidas par serem registradas, ficam na piscina de memória (mempool) do Bitcoin. Os mineradores pescam algumas transações ou escolhem quais querem inserir no bloco. Maiores taxas de transações chamam mais a atenção dos mineradores, porém, eles geralmente pegam desde transações com as maiores taxas até as transações com taxas bem pequenas. Mas depende muito se a piscina de memória está lotada ou não!

Se por acaso o usuário pedir para incluir uma transação e quiser pagar uma taxa baixa demais para os mineradores e a transação não for processada em três dias, mais ou menos, ela será excluída da mempool e o balancete do usuário volta a ser liberado com o mesmo saldo que tinha antes.

Endereços de contas do Bitcoin mais recentes, chamados de Segwit, usam uma tecnologia mais nova e alguns sites de exploradores de Blockchain não dão suporte ainda. O protocolo de Segwit só foi aderido por menos de 50% da comunidade até agora. O protocolo de Segwit permite que transações para destinatários múltiplos economizem espaço no bloco, gera economia nas taxas de transação e permitem que mais transações sejam incuidas por bloco.

Exploradores de interface WEB que eu recomendo do Blockchain do Bitcoin são:
Escrevi um programa em Bash para puxar as mesmas informações que esses sites oferecem. Assim, economizamos banda (sem propagandas!) e ficamos mais focados nas informações, sem precisar deixar o Terminal!

Puxo as mesmas informações disponíveis no Blockchain.com pelo API deles. O Blockchain.com, apesar de ser muito bom, ainda não oferece suporte a Segwit. Então, para puxar informações de endereços Segwit e das transações que tem endereços Segwit, há funções extras para puxar as informações pelo API do site Blockchair.com.

Utilização

Exemplos para se usar o programa (Bash script):

1. Ticker rolante do Blockchain com estatísticas das últimas 24-H:

binfo.sh -i

2. Informação detalhadas do bloco por seu número de espalhamento, ou ID:

binfo.sh -b 00000000000000000013cb9ca12e6c0ba8d7538bfd38d1f81f88a0f17c60b544

Ou:

binfo.sh -b 1774904

Ou, para puxar info do último bloco encontrado:

binfo.sh -b

3. Informação do bloco por altura do bloco:

binfo.sh -n 586576

4. Informações sumárias do última bloco (ID das transações do bloco + número de hash o bloco):

binfo.sh -l

5. Notificações para acompanhar quando acharem um novo bloco, e algumas informações dele:

binfo.sh -e

Obs.: precisa do programa WebSocat.

6. Informação de um endereço (pode não mostrar todas as informações se for endereço de Segwit de outras tecnologias mais recentes):

binfo.sh -a 1ADgkShKRsz5EwWmeeUhabYyeVuu6HwLpA

7. Informação sumárias de um endereço:

binfo.sh -s 1ADgkShKRsz5EwWmeeUhabYyeVuu6HwLpA

8. Informações de endereços do Blockchair.com (pode ser Segwit):

binfo.sh -c bc1qwl7jc00sngdnpmryfq4lyynehakz3q0qxxzzd8

9. Informação de transação pela sua Hash ou número de ID (se endereços Segwit estiverem envolvidos, podem não aparecer direito. Transações da coinbase também aparecem com destinatário "null"):

binfo.sh -t 211fe93efe9c02428c83a2b040afa7c84f7c57d685b4aa03a116e3b689fa1d09

10. Informação de transação pela sua Hash ou número de ID pelo Blockchair.com (mostra endereços Segwit e de outras tecnologias):

binfo.sh -x a928de66c4b7b0e431639fc4693ea3ad63fa73e091e0e85940fb8a78a51b2e07

11. Puxa a mempool da rede do Bitcoin (transações não-confirmadas):

binfo.sh -u

Link de download

Procure pelo arquivo "BINFO.SH" no repositório do GitHub abaixo:
Talvez, se quiser ver um vídeo onde eu falo do Blockchain e apresento as funções desse explorador em Bash, você poderá ver abaixo:
Se tiver algum bug, me perdoem. Provavelmente se achar um bug, vou dando uma consertada no código-fonte e atualizo no repo do GitHub.

Boa exploração!

   

Páginas do artigo
   1. Organização e Exploração da Cadeia de Blocos
Outros artigos deste autor

Instalando o maravilhoso Arch Linux

A camada de enlace de dados

Ubuntu 14.04 no AD com CiD

Karl Marx e a concorrência individual no Viva o Linux

Placa de TV/FM Pixelview Play TV PRO no Slackware 10.1

Leitura recomendada

Instalando o Nagios Core 3.2, Plugins, NRPE, NSClient (Ubuntu 10.4)

Asterisk - Configurando Ramais, Plano de Discagem e URA Simples

Zabbix Network Monitoring

Business Intelligence - Pentaho 3.5 com PostgreSQL

Sbopkg - Instalador de pacotes para Slackware

  
Comentários
[1] Comentário enviado por fabio em 31/07/2019 - 16:28h

Muito bom o artigo, meus parabéns!

[2] Comentário enviado por removido em 31/07/2019 - 17:54h

Faltou falar uma coisa muito importante: os bitcoins tem um fornecimento escasso e limitado.

Por isso são caros.

O limite máximo de bitcoins que serão gerados é de 21 milhões.

A cada 210 mil blocos, ou quatro anos, o prêmio de recompensa da mineração de cada bloco cai pela
metade. A cada quatro anos, metade do bitcoins restantes são minerados.

Em julho de 2019, já foram minerados 587 mil e 973 blocos e 17 milhões, 849 mil e 637.5 bitcoins.
(Poderá ver essas informações com o script que apresento, com a opção "-i")

Em 2140, praticamente todos os bitcoins já terão sido minerados, e os mineradores só receberão lucro
pela mineração por causa das taxas de transação.

[3] Comentário enviado por removido em 31/07/2019 - 17:57h

CONHEÇA O BITCOIN, O TOURO QUE ATACA

"Alguns subiram para os Céus, outros caíram no Abismo"


Cartoon liberado recentemente pelo Banco Central da China e traduzido por um membro do Reddit para o Inglês:
https://i.redd.it/ipi2qg41vuc31.jpg

Reportagem a respeito:
https://technode.com/2019/07/29/bank-of-china-infographic-bitcoin/


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts