paint-brush
Analise quase 1 bilhão de transações de Bitcoin em menos de 1 minuto usando esta ferramentaby@krieker
1,087
1,087

Analise quase 1 bilhão de transações de Bitcoin em menos de 1 minuto usando esta ferramenta

Alina Arsamakova5m2023/05/26
Read on Terminal Reader

Neste artigo, falaremos sobre a ferramenta secreta de análise de blockchain que ninguém conhece e que permite consultar dados úteis de blockchains na velocidade da luz. Daremos exemplos de consultas que podem ser feitas para obter dados úteis do blockchain e falaremos sobre a arquitetura da ferramenta que permite fazer análises em velocidades tão altas.
featured image - Analise quase 1 bilhão de transações de Bitcoin em menos de 1 minuto usando esta ferramenta
Alina Arsamakova HackerNoon profile picture
0-item
1-item
2-item

A imagem principal deste artigo foi gerada peloAI Image Generator do HackerNoon por meio do prompt "hashes de transação de blockchain em um quadro branco"



Neste artigo, falaremos sobre a ferramenta secreta de código aberto que ninguém conhece, que permite consultar dados úteis de blockchains na velocidade da luz.


Daremos exemplos de consultas que podem ser feitas para obter dados úteis do blockchain e falaremos sobre a arquitetura da ferramenta que permite fazer análises em velocidades tão altas.


Antes disso, vamos falar sobre por que você precisa analisar as transações do blockchain em primeiro lugar.


Cada transação Bitcoin contém o

  1. Endereço do remetente
  2. Endereço do destinatário
  3. Quantidade enviada


mas também


  1. saldo do remetente
  2. quanto tempo as moedas ficaram inativas na carteira do remetente
  3. saldo do destinatário


E a partir do exposto, você pode extrapolar e obter informações sobre


  • Quanto tempo o remetente geralmente mantém seu Bitcoin antes de enviá-lo
  • Qual é o saldo médio de todas as carteiras no blockchain
  • Tamanho médio da transação


e mais de 100 outras análises diferentes.


Como você pode ver, os dados que podemos obter sobre o mercado Bitcoin são muito mais abrangentes em comparação com os mercados legados. E o mais importante, a pessoa média pode ter acesso a ele. Por outro lado, apenas fundos de hedge e bancos têm acesso a dados como esse em mercados legados.


Portanto, ao analisar as transações no blockchain do Bitcoin, é possível entender melhor o mercado do Bitcoin e tomar melhores decisões de investimento com base nesses dados.


Além das aplicações de análise de blockchain para negociação e investimento, existem várias outras maneiras de usar a análise de blockchain:


  • Desanonimização de endereços de carteira
  • Identificando atividades ilícitas
  • Conformidade


Então, como essa ferramenta funciona?


Arquitetura do BlockSci

O BlockSci visa abordar três pontos problemáticos das ferramentas de análise de blockchain existentes:


  1. baixo desempenho,
  2. capacidades limitadas
  3. e uma interface de programação incômoda.


O desempenho ruim é o ponto problemático que o BlockSci resolve melhor. Por exemplo, a abordagem de força bruta para analisar transações Bitcoin também funcionaria. Você pode executar um nó Bitcoin em seu computador/servidor e consultar seu próprio nó diretamente. Mas essa abordagem é tão lenta que pode levar anos para processar todas as transações de 1 bilhão de Bitcoin.


Outras ferramentas existentes também sofrem de baixo desempenho, especialmente ao usar bancos de dados de gráficos de uso geral, o que os torna centenas de vezes mais lentos para consultas sequenciais e substancialmente mais lentos para todas as consultas, incluindo consultas de travessia de gráficos.


Fonte: https://www.usenix.org/system/files/sec20-kalodner.pdf


O design do BlockSci é predominantemente baseado no fato de que em blockchains, blocos no passado não podem ser alterados, e todos os novos dados que aparecem no blockchain são apenas anexados.


Isso significa que as propriedades ACID dos bancos de dados transacionais são desnecessárias, tornando um banco de dados analítico na memória a escolha natural. Usar memória em vez de armazenamento em disco acelera significativamente o processamento de dados, exatamente o que precisamos.


Na verdade, o BlockSci carrega todo o blockchain na memória para realizar cálculos e evita a abordagem de processamento distribuído. Isso é motivado pelo fato de que os dados do blockchain são estruturados em gráficos e, portanto, difíceis de particionar de forma eficaz.


A conjectura de seu designer foi que o uso de um banco de dados transacional distribuído tradicional para análise de blockchain tem CUSTO infinito (configuração que supera um único thread), no sentido de que nenhum nível de paralelismo pode superar uma implementação otimizada de thread único.


Ele também aplica várias técnicas, como converter ponteiros de hash em ponteiros reais e desduplicar dados de endereço, para aumentar ainda mais a velocidade e diminuir o tamanho dos dados.


Para importar dados do Node, o BlockSci usa seu próprio importador de alto desempenho que lê diretamente os dados brutos no disco e NÃO da interface JSON-RPC integrada. Mesmo assim, geralmente leva 24 horas para importar e indexar todos os dados do nó. Depois que os dados são analisados, as análises reais são rápidas.


A maneira como os blockchains são armazenados em discos não é fácil de analisar. Eles são feitos para fazer outras coisas, como verificar transações e encontrar dados em uma grande rede. Eles também são feitos para economizar espaço na memória, mantendo os blocos em um formato básico no disco. Mas precisamos alterar os dados para que caibam na memória, então o BlockSci tem um analisador que pode lidar com essa etapa. Foi garantido que este analisador está bem otimizado.


Outra maneira pela qual a ferramenta atinge velocidades tão altas é a “otimização do filtro bloom”. O filtro bloom é uma estrutura de dados probabilística que permite testar a associação em um conjunto. No contexto do blockchain , ele armazena todos os endereços vistos e garante a exatidão das pesquisas para endereços existentes, minimizando o número de consultas ao banco de dados para endereços inexistentes. Isso é alcançado com base no fato de que cerca de 88% das entradas gastam saídas criadas nos últimos 4.000 blocos e que apenas 8,6% dos endereços Bitcoin são usados mais de uma vez.


A última otimização mais importante que permite ao BlockSci atingir altas velocidades de análise é a estrutura de layout de dados que fornece altas velocidades de análise e não exige muito da memória.


O layout de dados do BlockSci divide os dados disponíveis em três categorias e os combina em um esquema híbrido. O gráfico de transação principal é necessário para a maioria das análises e sempre carregado na memória, armazenado em um formato baseado em linha. Scripts e dados adicionais necessários apenas para um subconjunto de análises são armazenados em um formato híbrido (parcialmente baseado em coluna, parcialmente baseado em linha) e carregados sob demanda. Os índices para procurar transações ou endereços individuais por hash são armazenados em um banco de dados separado no disco.


Além disso, ele usa codificações de tamanho fixo para campos de dados sempre que possível, otimiza o layout de memória para localidade de referência, vincula saídas a entradas para passagem eficiente e compartilha mapeamento e paralelismo de memória.



Por fim, aqui está a consulta que encontra todas as transações com uma taxa > 0,1 Bitcoins em menos de um minuto.


 chain.blocks.txes.where(lambda tx: tx.fee > 10**7).to_list()


Resumo

BlockSci é uma ferramenta de análise de blockchain que permite consultas rápidas de dados úteis de blockchains. Ao analisar as transações Bitcoin, pode-se entender melhor o mercado e tomar melhores decisões de investimento.


A arquitetura do BlockSci é baseada no fato de que os dados do blockchain são estruturados em gráficos e difíceis de particionar de forma eficaz, então ele carrega todo o blockchain na memória para realizar cálculos. Ele aplica várias técnicas para aumentar a velocidade, incluindo a conversão de ponteiros hash em ponteiros reais, desduplicação de dados de endereço e uso da otimização do filtro bloom. A estrutura de layout de dados oferece altas velocidades de análise e não exige muito da memória.