Coleta de dados em tempo real: Node.js e insights de programação assíncrona

Coleta de Dados com API
Coleta de Dados
Javascript
Node.js
Coleta de Dados em tempo real
Pesquisa
Blockchain
Data de Publicação

28 de junho de 2024

Thumbnail feita por Freepik.

Introdução

Quando comecei minha pesquisa sobre Ethereum, comecei estudando os trabalhos de pesquisadores que me precederam. Feito isso, comecei a replicá-los para aprender sobre e experimentar em cima de seus resultados. Um estudo específico se destacou nesse cenário: Azevedo Sousa et al. (2021). O objetivo era correlacionar o tempo pendente para transações Ethereum com a taxa de gás oferecida.


Veja no Github:

Alguma teoria por trás disso

Antes de prosseguir com os problemas que enfrentei, é essencial entender os conceitos de tempo pendente e taxa de gás nas transações Ethereum. O tempo pendente refere-se ao tempo que uma transação passa esperando na fila para ser incluída na rede. A taxa do gás, por outro lado, é o incentivo pago aos mineradores para processar e validar transações. Sabe-se que taxas de gás mais altas normalmente levam a tempos de transação mais rápidos, já que os mineradores priorizam transações que oferecem maiores recompensas. Esse conhecimento geral era o que o estudo tentava validar.

Exemplo de uma transação aguardando para ser aceita na Blockchain

Os desafios

Tentei analisar dados de transações mais recentes usando a mesma metodologia, para ver se as tendências identificadas no estudo anterior ainda se mantinham. No entanto, encontrei um obstáculo significativo: as APIs disponíveis para dados Ethereum não forneciam informações sobre tempo pendente. Além disso, não consegui mais extrair os dados antigos devido a mudanças na infraestrutura da web. O que eu poderia fazer então?

Crawler em tempo real

Para superar essa limitação, decidi desenvolver um crawler que rastreasse novas transações em tempo real. Com essa abordagem, pude calcular o tempo que levou para cada transação ser aprovada e adicionada ao blockchain. Para esta tarefa, utilizei a biblioteca web3.eth para web3js. Este foi meu primeiro contato com o Node.js, que me foi mostrado como uma nova curva de aprendizado.

Um dos aspectos mais desafiadores deste projeto foi lidar com a programação assíncrona. Eu precisava armazenar dados em tempo real e, ao mesmo tempo, rastrear novas transações. Gerenciar esses processos simultâneos exigiu que eu aprendesse técnicas de programação assíncrona, o que foi uma curva de aprendizado acentuada para mim naquele momento.

O que eu ganhei com isso

Embora os dados coletados neste projeto não tenham sido utilizados em nenhum artigo publicado, a experiência foi extremamente valiosa para o meu crescimento pessoal e profissional. Ele me proporcionou experiência prática em rastreamento de dados em tempo real, programação assíncrona e trabalho com novas tecnologias. Este projeto também serve como uma base para possíveis esforços futuros de pesquisa na área de blockchain e criptomoedas. Quaisquer comentários ou sugestões são bem-vindos! O projeto está disponível no Github.

Referências

Azevedo Sousa, José Eduardo de, Vinı́cius Oliveira, Júlia Valadares, Glauber Dias Goncalves, Saulo Moraes Villela, Heder Soares Bernardino, e Alex Borges Vieira. 2021. «An analysis of the fees and pending time correlation in Ethereum». International Journal of Network Management 31 (3): e2113.