O que é um Directed Acyclic Graph (DAG) em Criptomoedas?
O que é um Directed Acyclic Graph (DAG) em Criptomoedas?
InícioArtigos

O que é um Directed Acyclic Graph (DAG) em Criptomoedas?

Intermediário
1w ago
7m

Introdução

Quando você pensa em criptomoedas, você provavelmente pensa nos termos "blockchain" ou "tecnologia de ledger/registro distribuído". Desde o lançamento do Bitcoin, centenas de outras criptomoedas foram criadas. A maioria delas conta com uma arquitetura de rede parecida. Suas estruturas de dados permitem que os usuários transfiram valores ou interajam com aplicativos descentralizados.
Em uma blockchain, um novo bloco é periodicamente adicionado a uma cadeia crescente de blocos. Cada bloco é conectado ao anterior com uma espécie de link criptográfico (um hash). Cada um desses blocos, contém transações recentes que foram transmitidas pelos usuários.
No entanto, geralmente existe um tempo de espera entre a transmissão de uma transação e a sua inclusão em um bloco. É como esperar um trem na estação. Dependendo do tamanho das carruagens (tamanho do bloco) e do número de pessoas aguardando (transações pendentes), talvez você não consiga pegar o próximo trem. Dependendo das circunstâncias, você pode ter de esperar por segundos ou horas para que a transação seja confirmada.
Para muitos, esse é um trade-off (uma troca) aceitável. Afinal, fornece um alto nível de segurança sem depender de um coordenador centralizado. Para outros, a tecnologia blockchain tem data de validade. Os detratores acreditam que, a longo prazo, os problemas de escalabilidade enfrentados pela tecnologia blockchain impedirão a sua adoção em massa.

Alguns acreditam que o futuro das redes de pagamentos de criptomoedas está em uma arquitetura totalmente diferente: os chamados Directed Acyclic Graphs (DAGs) - grafos acíclicos dirigidos.


O que é um DAG?

Um DAG é um tipo diferente de estrutura de dados – é como um banco de dados que conecta diferentes partes de informações. O termo "Directed acyclic graph" (grafo acíclico dirigido) pode parecer muito complicado, então vamos explicar com calma.


Directed Acyclic Graph.


A figura acima representa, conceitualmente, os DAGs. Eles são compostos de vértices (as esferas) e arestas (as linhas que os conectam). Eles são  direcionados pois seguem uma direção (as setas verdes). Eles são acíclicos (ou seja, não cíclicos) pois os vértices não retornam a si mesmos – partindo de um ponto no gráfico e seguindo o fluxo, não é possível retornar ao mesmo ponto. Em breve, isso ficará mais claro.

Essas estruturas de dados são geralmente usadas para modelagem dados. DAGs são usados em estudos científicos e médicos para analisar a relação entre variáveis e os impactos causados por essas relações. Por exemplo, uma análise que considera nutrição, ciclos de sono e sintomas físicos podem ajudar a determinar como essas variáveis e suas relações afetam um paciente.

No nosso caso, estamos mais interessados em como elas podem ajudar na obtenção de consenso em uma rede distribuída de criptomoedas.


Como funciona um DAG?

Para uma criptomoeda com base DAG, cada vértice da estrutura representa uma transação. Não existe a noção de blocos. A mineração também não é necessária para estender o banco de dados. Portanto, em vez de reunir transações em blocos, cada transação é construída em cima de outra. Ainda assim, existem operações Proof-of-Work que são realizadas quando um node (nó) envia uma transação. Isso garante que a rede não sofra com spam e também valida transações anteriores.

Para que uma nova transação seja adicionada, ela deve se basear nas anteriores. Suponha que Alice crie uma nova transação. Para ser reconhecida, essa transação deve fazer referência às anteriores. É semelhante a um bloco de Bitcoin que faz referência ao bloco anterior, mas nesse caso, existem várias transações referenciadas. 

Em alguns sistemas, um algoritmo seleciona quais transações ("tips") serão usadas para criar uma nova transação. As "tips" (extremidades) com maior probabilidade de serem selecionadas são aquelas que têm mais "peso acumulado" – medida do número de confirmações no caminho até aquela extremidade.

Alice irá utilizar transações não confirmadas como base. Entretanto, uma vez que Alice as referencia, elas se tornam confirmadas. Agora, a transação criada por Alice aparece como não confirmada. Portanto, para que a transação de Alice seja aceita, alguém deve criar outra transação usando a de Alice como base.

Para que o sistema continue crescendo, os usuários procuram confirmar transações que tenham "mais peso". Caso contrário, todos continuariam usando transações mais antigas como referência.

Em blockchains, a proteção contra double-spending (gastos duplicados) é bem simples. Os mesmos fundos não podem ser gastos duas vezes em um bloco – os nodes (nós) detectam facilmente qualquer tentativa e rejeitarão qualquer bloco que contenha transações conflitantes. Como a mineração de blocos custa muito caro para os mineradores, eles são incentivados a agir de forma honesta.

Os DAGs também têm um mecanismo para evitar double-spending. É algo parecido, mas sem mineradores. Quando um node (nó) confirma transações mais antigas, ele avalia um caminho completo até a primeira transação do DAG para confirmar se o remetente tem saldo suficiente. Pode haver vários caminhos, mas apenas um deles precisa ser verificado.



Caso usuários utilizem um caminho inválido, correm o risco de sua própria transação ser ignorada. Sua transação até poderia ser legítima, mas como a referência anterior não era, ninguém mais iria querer utilizar esse caminho.

A princípio, parece pouco intuitivo – não seria possível acabar em uma situação em que existem vários ramos que não sabem da existência um do outro? Ou seja, não seria possível gastar os mesmos fundos nesses diferentes ramos?



De fato, é uma possibilidade. Porém, essa questão é resolvida com um algoritmo de seleção que favorece Tips (extremidades) com maior peso acumulado. Isso significa que, com o tempo, você acabará tendo um ramo muito mais forte que o resto. Os mais fracos serão abandonados e a rede continuará construindo sobre o ramo mais pesado. 

Assim como nas blockchains, não existe uma finalidade absoluta – você nunca terá 100% de certeza de que uma transação não será revertida. É altamente improvável, mas é teoricamente possível "desfazer" um bloco de Bitcoin ou Ethereum, revertendo todas as transações internas. Quanto mais blocos forem adicionados após o processo da sua transação, mais confiança você terá nela. É por isso que é recomendável aguardar por seis confirmações antes de gastar os fundos de uma transação.
Em um DAG como o Tangle da IOTA, existe uma concepção de confiança na confirmação. O algoritmo de seleção é executado 100 vezes e você conta quantas vezes sua transação foi direta ou indiretamente aprovada nas Tips (extremidades) selecionadas. Quanto maior a porcentagem, mais confiança você tem de que sua transação permanecerá "estabelecida".

Pode parecer que esse sistema proporciona uma experiência ruim ao usuário, mas não é o caso. Se Alice envia a Bob 10 MagicDAGTokens, ela não precisa se preocupar em selecionar as Tips corretas do grafo. De forma oculta, sua carteira pode fazer o seguinte:

  • Selecionar Tips (extremidades) mais pesadas (lembre-se, são as que têm mais confirmações acumuladas).
  • Seguir o caminho de volta através das transações anteriores para verificar se as Tips possuem saldo suficiente para gastar.
  • Depois de atendidas as condições, elas adicionam suas transações ao DAG, confirmando as transações anteriores utilizadas como referência.
Para Alice, isso é parecido com o fluxo de trabalho regular das criptomoedas. Ela insere o endereço de Bob e o valor que deseja gastar, depois clica em enviar. A lista acima é o método de Proof of Work que todo participante executa ao criar uma transação.



Prós e contras dos DAGs

Vantagens dos DAGs

Velocidade

Sem restrições por tempo de bloco, qualquer pessoa pode transmitir e processar suas transações a qualquer momento. Não há limite para o número de transações que os usuários enviam, desde que confirmem as transações mais antigas.


Sem mineração

DAGs não usam algoritmos de consenso PoW da maneira que estamos acostumados. Portanto, sua Carbon Footprint (medida que calcula a emissão de carbono) é bem menor do que a das criptomoedas que dependem da mineração para funcionamento da rede blockchain.


Sem taxas de transação

Como não existem mineradores, os usuários não precisam pagar taxas para transmitir suas transações. Dito isto, alguns exigem que uma pequena taxa seja paga para tipos especiais de nodes (nós). Taxas baixas (ou melhor, taxas zero) são mais atraentes para pequenos pagamentos nesses sistemas, que perdem totalmente o propósito quando existem taxas da rede.


Sem problemas de escalabilidade

Como não possuem restrições por tempo de bloco, os DAGs podem processar muito mais transações por segundo do que as redes blockchain tradicionais. Muitos acreditam que isso os tornará valiosos nos casos de uso da Internet das Coisas (IoT), em que todos os tipos de máquinas interagem entre si.


Desvantagens dos DAGs

Não são totalmente descentralizados

Protocolos que dependem de DAGs têm vários elementos de centralização. Para alguns, é supostamente uma solução de curto prazo para inicializar a rede. Resta saber se os DAGs podem realmente prosperar sem a intervenção de terceiros. Caso contrário, eles se abrem para vetores de ataques que podem eventualmente prejudicar suas redes.


Não foram testados em larga escala 

Embora as criptomoedas baseadas em DAGs existam há alguns anos, elas ainda têm um longo caminho a percorrer antes de serem amplamente utilizadas. Sendo assim, é difícil prever quais incentivos os usuários podem ter para explorar esse sistema no futuro.


Considerações finais

Directed Acyclic Graphs são certamente uma tecnologia interessante para a construção de redes de criptomoedas. Até o momento, o número de projetos que usam essa estrutura de dados é relativamente baixo e ainda não estão completamente desenvolvidos. 
Dito isto, se eles puderem alcançar seu potencial, poderão alimentar ecossistemas de escalabilidade em massa. A tecnologia DAG possui inúmeros casos de uso em áreas que exigem altas taxas de transferência e isenção de taxas, como para a Internet das Coisas (IoT) ou para pagamentos de menores valores.