Como implementar blockchain numa aplicação web

Fica a saber como blockchain e o bitcoin podem ser úteis para não seres enganado pelos sites de avaliações.

O nosso requisito inicial era garantir um timestamp confiável. Uma prova irrefutável de que uma avaliação foi publicada em determinado momento e que está disponível para verificação. Esta prova é necessária porque:

  • Alegadamente é normal outras plataformas apagarem avaliações negativas. Ainda que juram a pés juntos que não o fazem, há centenas de relatos na internet.

  • Datas de publicações alteradas para manter o conteúdo aparentemente recente.

  • Informações removidas, ou edições abusivas, dos textos pelas equipas editoriais.

Os 3 pontos são facilmente resolvidos com blockchain. Como leigos na matéria tivemos de fazer uma pesquisa sobre as várias alternativas disponíveis. Deste ter uma implementação própria, ou usar tecnologias como o Hyperledger, Bigchain DB ou serviços como o Originstamp ou Po.et.

Optamos pelo último porque é a solução que oferece menor impacto na arquitectura que já temos desenvolvida e dispõe do código open source (MIT License).

Arquitectura blockchain

De forma simplificada, o Teamlyzer (editor), uma vez por dia, cria um pedido para cada nova avaliação através da API.

O texto de cada avaliação e os respectivos metadados vão ser guardados numa rede distribuída chamada IPFS - sistema de ficheiros peer to peer, semelhante à rede bittorrent. Nesse momento o pedido vai receber um hash que funciona como identificador único para cada avaliação.

Internamente um nó do Po.et vai combinar múltiplos pedidos de múltiplos editores. Junta-os numa transacção única que ancora todos os pedidos recebidos num determinado espaço de tempo e envia-a para a blockchain do Bitcoin. A partir desse momento fica impossível alterar o timestamp.

O que é armazenado no blockchain é apenas um hash que agrega os outros hashes do directório IPFS.

O conteúdo em si, e os metadados, são arquivados na rede IPFS. O motivo é ser extremamente caro guardar informação directamente na blockchain do Bitcoin, e também, devido às limitações de protocolo.

Agregando múltiplos hashes de diferentes pedidos na mesma transacção os custos são reduzidos.

Em resumo, o Po.et usa a blockchain do Bitcoin para garantir que o hash do arquivo é permanentemente armazenado em uma estrutura de dados imutável, sem a necessidade de uma autoridade central de registro de data e hora.

Com esta implementação garantimos dois aspectos importantes. Primeiro conseguimos provar-te que as avaliações do Teamlyzer não são adulteradas. Segundo, conseguimos usar blockchain com um esforço reduzido de desenvolvimento, e assim, concentrar esforços em melhorar o site.