Por que não desenvolver todo o conceito da Blockchain via SMTP?

A pergunta acima foi feita lá na área de boas vindas. Resolvi abordar numa postagem separada alguns pontos básicos sobre a construção de um Blockchain para tentar esclarecer e ajudar os que eventualmente se disponham a pensar no tema.

Antes, falando basicamente sobre o SMTP

SMTP - Simple Mail Transfer Protocol nasceu lá pelos anos 1980. Sozinho ele funciona apenas para o envio das mensagens para os destinatários. Para “baixar” a mensagem localmente para um servidor ou um PC é necessário outro protocolo como por exemplo o IMAP - Internet Message Access Protocol ou POP3 – Post Office Protocol. Protocolo no caso em questão pode ser resumido como um conjunto de regras que controla e despacha (SMTP) as mensagens para fora do sistema de mensagem do remetente (Gmail, Outlook etc.) ou recebe (IMAP) num servidor ou no PC do usuário.

Fonte: O que é SMTP, IMAP e POP e qual a diferença? - Blog da KingHost

A topologia básica de um sistema completo de envio e recebimento de mensagens baseado nos protocolos SMTP e IMAP é suportado por servidores de e-mail geralmente centralizados. Tentar pesquisar alguma solução de envio e recebimento de e-mail baseado numa rede descentralizada do tipo P2P e de preferência que sejam criptografados pode ser um pouco difícil. Algumas propostas nesta linha já existem, como por exemplo o FlowingMail que funciona numa rede P2P ao invés de usar servidores centralizados.

Imagem da topologia básica de um sistema de e-mail


Imagem retirada em 03/03/2023 de: Mail Flow Topology

Na visão de quem não é programador acho que o protocolo SMTP até poderia fazer parte de um Blockchain, mas seria aplicada numa camada específica da estrutura de um Blockchain, no caso na camada de rede cuidando da comunicação entre os nós (equipamentos interconectados da rede Blockchain P2P) organizando e controlando os envios e recebimentos das transações.

O colega pode ter atirado no que viu e pode ter acertado no que não estava vendo. Pode ser novidade para alguns, mas um dos principais, e talvez o principal pilar do Bitcoin que é o PoW – Proof of Work (Prova de Trabalho) apareceu em 1993 num paper assinado por Cynthia Dwork e Moni Nor propondo uma solução para combater os spams ou lixo eletrônico que invade as caixas de e-mail. O título do paper é Pricing via Processing or Combatting Junk Mail que em tradução livre significa algo como Filtro para Combater ou Processar Lixo Eletrônico. Associar o protocolo SMTP ao nascimento do Blockchain não é exatamente uma surpresa.

https://bytecoin.org/blog/the-proof-of-work-in-cryptocurrencies-brief-history-part-1

Quando se fala em construção de Blockchain o uso de uma ou outra linguagem de programação é bem flexível. O Tiago que é o dono do site chegou a construir um Blockchain em Excel. Você pode conferir o vídeo lá no canal dele no YouTube, veja abaixo:

Discute-se na comunidade o fato do Blockchain ter nascido “à várias mãos” digamos assim, com colaboração de um grupo de pessoas não tendo sido obra exclusiva de Satoshi Nakamoto. Aliás, entre várias teorias conta-se que ele não era exatamente um programador excepcional. O que se sabe ao certo é que o Blockchain foi criado inicialmente em C++. Entre os anos de 1998 e 1999 o C++ era uma das linguagens mais populares, postei um link para um vídeo que mostra a evolução das linguagens de programação mais populares outro dia aqui no site. O Solidity, por exemplo, é uma linguagem de programação que foi desenvolvido por causa da implementação dos contratos inteligentes no Ethereum.

Eu acho que uma das melhores forma de entender um Blockchain, principalmente para quem ainda não tem muita afinidade com um Blockchain é mostrando sua construção no formato de camadas. Eu vi uma imagem parecida navegando por outros sites e construí uma imagem para uso aqui no site. Olhando um Blockchain a partir das várias camadas que fazem parte da sua construção podemos notar que no fundo o Blockchain como conceito é um sistema bem abrangente com vários processos sendo executados lá dentro.

Aplicativo ou Produto, consumido ou entregue: O criptoativo que a maioria das pessoas associa ao bitcoin é uma espécie de “produto final” ou resultado de muitos processos que foram executados dentro do Blockchain. Outros resultados que um Blockchain pode “entregar” para consumo, por exemplo, são: contratos inteligentes, tokens (que são diferentes de criptoativos), registros de propriedade, rastreamento da cadeia de produção, diplomas universitários etc. Caso alguém resolva entregar algum “produto” a partir de um Blockchain terá como argumento básico a confiabilidade do “produto” final cujos dados em tese são inalteráveis, sob risco de detecção da alteração.

Consenso ou Garantia de Segurança: Algoritmo que garante a segurança e a confiabilidade do sistema sendo os mais usados ou conhecidos o PoW – Proof of Work e o PoS – Proof of Stake.

Rede ou Comunicação: No caso do Bitcoin o formato de rede usada é o P2P (Ponto a Ponto), que é pública e de livre acesso a qualquer usuário que tenha instalado o programa conhecido como Bitcoin Core, que não serve exclusivamente para cuidar da comunicação. Existem tantos Blockchains hoje em dia que talvez não se saiba exatamente quantos existem. Até grandes empresas como IBM ou Oracle já oferecem soluções baseadas em Blockchain que rodam em redes privadas. Aqui não se falou em termos de equipamentos e sim em termos de organização e configuração da comunicação entre eles.

Tratamento e arquivo dos dados: os débitos e créditos, os saldos e as respectivas contas além das assinaturas digitais dos respectivos titulares são tratados e arquivados nesta camada. Aqui tem uma “mão de obra” bem grande garantida atualmente por um algoritmo chamado de Hash-256 que garante a integridade dos dados processados e guardados, em tese, por toda a eternidade sem possibilidade de alteração posterior.

Infraestrutura ou equipamentos: No caso do Ethereum, por exemplo, os contratos inteligentes rodam “fora” do Blockchain em máquinas virtuais. E quando se fala em Blockchain uma das coisas que vem na mente é a mineração. Os milhares de equipamentos que consomem energia sem dó fazem parte do ecossistema e estão interligados ao Blockchain durante o período de mineração. Outros equipamentos que estão conectados ao Blockchain são equipamentos das Corretoras de criptoativos que precisam acompanhar as transações, os aplicativos de carteira digital dos smartphones, os validadores dos blocos etc. Cada um pode desempenhar uma ou mais funções ao mesmo tempo e todos se conectam e formam o Blockchain como um todo.

Estrutura básica de um Blockchain visto sob a ótica das camadas:

Estrutura em Camadas

No fim do dia, mesmo não sendo um programador, eu sei que se já existe tudo feito e funcionando sem ter sido (supostamente) hackeado até hoje por qual motivo eu teria um trabalho gigante para fazer outro igual a partir do zero. Tudo que se refere ao primeiro Blockchain, do Bitcoin, foi feito, disponibilizado, mantido e é atualizado com acesso totalmente público para ser testado, checado, conferido e para qualquer um, literalmente qualquer um, propor melhorias ou correções. Está tudo disponível. Então por qual motivo alguém se dará ao trabalho de criar outro? Por um motivo tão antigo como o mundo. Principalmente por dinheiro já criaram mais de 20 mil Blockchains a partir do original e uns poucos para aprender ou por convicção e ideologia como é o caso do Ethereum.

Obrigado, Cecilio.

Seria possível substituir a parte de comunicação p2p por SMTP, porém teriam consequências no quesito performance e privacidade.

O SMTP é bastante “verboso” para se iniciar uma entrega de mensagem, especialmente quando o conteúdo é binário. Isto levaria rapidamente a centralização, pois não muitos operadores conseguiriam rodar nodes devido ao alto custo.

O Protocolo p2p do bitcoin é otimizado para somente transferir os dados estritamente necessários para o seu funcionamento.

Uma possível vantagem seria ofuscar o tráfego entre nodes e se passar como mensagens de email, porém é algo que já se consegue através de redes Tor.

Outro desafio seria implementar request/reply (comunicação sincrona) via SMTP.
O protocolo SMTP só serve para enviar mensagens em um sentido, e não receber respostas do servidor. Isto acontece bastante no protocolo p2p, especialmente quando nodes estão solicitando dados de outros para sincronização.

Então sim, tecnicamente seria possível conectar nodes através de SMTP para transmissão de mensagens, mas em geral, teria mais desvantagens do que vantagens.

1 curtida

Exatamente, até citei acima que já existem propostas de e-mail baseados em redes P2P usando criptografia como é o caso do FlowingMail e do Lemon. Tem alguma utilidade para governos, serviços de inteligência etc. Mas o uso do conceito SMTP se encaixaria na estrutura de comunicação e daria muito trabalho desenvolver aplicativos, algorítimos de segurança, prova de trabalho, carteira digital etc.
Abç.

1 curtida