Um grafo acíclico dirigido (Directed acyclic graph DAG) é um tipo diferente de estrutura de dados — é como um banco de dados que conecta diferentes partes de informação. O termo “Directed acyclic graph” pode parecer muito complicado, então vamos tirar um momento para explicar.
Quando você pensa em criptomoedas, você provavelmente pensa nos termos “cadeia de blocos” ou tecnologia de registro ledger/registro. Desde o lançamento do Bitcoin, centenas de outras moedas criptografadas foram criadas.
A maioria delas depende de uma arquitetura de rede similar. Suas estruturas de dados permitem que os usuários transfiram valor ou interajam com aplicações descentralizadas.
Em uma cadeia de blocos, um novo bloco é periodicamente adicionado a uma cadeia crescente de blocos. Cada bloco é conectado ao anterior com uma espécie de elo criptográfico (um hash). Cada um desses blocos contém transações acontecido recentemente que foram enviados pelos usuários.
Entretanto, geralmente há um tempo de espera entre a transmissão de uma transação e sua inclusão em um bloco. É como esperar por um trem na estação. Dependendo do tamanho dos vagões (tamanho do bloco) e do número de pessoas esperando (transações pendentes), talvez você não consiga pegar o próximo trem.
Dependendo das circunstâncias, você pode ter que esperar por segundos ou horas para que a transação seja confirmada.
Para muitos, este é um compromisso aceitável. Afinal, ele proporciona um alto nível de segurança sem depender de um coordenador centralizado. Para outros, a tecnologia da cadeia de blocos tem uma data de validade. Os detratores acreditam que, a longo prazo, os problemas de escalabilidade enfrentados pela tecnologia de cadeia de blocos (Blockchain) impedirão sua adoção em massa.
Alguns acreditam que o futuro das redes de pagamento em criptomoedas está em uma arquitetura totalmente diferente: os chamados grafos acíclicos dirigidos. (DAGs).
Eles são acíclicos (isto é, não cíclicos) porque 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. Isto se tornará mais claro em breve.
Estas estruturas de dados são comumente usadas para modelagem de dados. Os DAGs são usados em estudos científicos e médicos para analisar a relação entre as 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 pode ajudar a determinar como essas variáveis e suas relações afetam um paciente.
Em nosso caso, estamos mais interessados em como elas podem ajudar na construção de um consenso em uma rede distribuída de moedas cripto.
Como Funciona um Grafo Acíclico Dirigido (DAG)?
Para uma moeda criptografada baseada em DAG, cada vértice da estrutura representa uma transação. Não há noção de blocos. A mineração também não é necessária para ampliar o banco de dados. Assim, em vez de reunir transações em blocos, cada transação é construída em cima de outra.
Ainda assim, existem operações de Proof of Work (PoW) que são realizadas quando um nó envia uma transação. Isto assegura que a rede não sofra com spam e também valida as transações anteriores.
Para que uma nova transação seja adicionada, ela deve ser construída sobre as anteriores. Suponhamos que a Maria crie uma nova transação. Para ser reconhecida, esta transação deve fazer referência às transações anteriores. Isto é semelhante a um bloco Bitcoin que faz referência ao bloco anterior, mas neste caso, há múltiplas transações referenciadas.
Em alguns sistemas, um algoritmo escolhe quais transações (“Tips”) serão utilizadas para criar uma nova transação. As “tips” mais prováveis de serem selecionadas são aquelas que têm o maior “peso acumulado” — uma medida do número de confirmações no caminho para esse fim.
Maria utilizará como base as transações não confirmadas. No entanto, uma vez que a Maria as menciona, elas se tornam confirmadas. Agora, a transação criada pela Maria aparece como não confirmada. Portanto, para que a transação da Maria seja aceita, alguém deve criar outra transação usando a transação da Maria como base.
Para que o sistema continue crescendo, os usuários tentam confirmar as transações que têm “mais peso”. Caso contrário, todos continuariam a usar as transações mais antigas como referência.
Em cadeias de blocos, a proteção contra despesas duplas é bastante simples. Os mesmos fundos não podem ser gastos duas vezes em um bloco — os nós (nodes) detectam facilmente qualquer tentativa e rejeitarão qualquer bloco que contenha transações conflitantes. Como a mineração em bloco é muito cara para os mineiros, eles são encorajados a agir honestamente.
Os DAGs também têm um mecanismo para evitar o gasto duplo (double-spending). Trata-se de algo semelhante, mas sem os mineiros.
Quando um node confirma transações mais antigas, ele avalia um caminho completo até a primeira transação DAG para confirmar que o remetente tem saldo suficiente. Pode haver muitos caminhos, mas apenas um deles precisa ser averiguado.
Se os usuários utilizam um caminho inválido, correm o risco de que sua própria transação seja ignorada. Sua transação pode até mesmo ser legítima, mas como a referência anterior não era, ninguém mais gostaria de usar este 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 conhecem a existência um do outro? Em outras palavras, não seria possível gastar os mesmos fundos com estes diferentes ramos?
De fato, é uma possibilidade. Entretanto, esta questão é resolvida com um algoritmo de seleção que favorece Tips com maior peso acumulado. Isto significa que com o tempo você acabará com um ramo muito mais forte que o resto. Os mais fracos serão abandonados e a rede continuará a construir sobre o ramo mais pesado.
Como no caso das correntes de blocos, não há 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 Bitcoin ou Ethereum, revertendo todas as transações internas.
Quanto mais blocos forem adicionados após seu processo de transação, mais confiança você terá nele. É por isso que é recomendado esperar por seis confirmações antes de gastar os fundos de uma transação.
Em um DAG como o Tangle IOTA, existe concepção de confirmação. O algoritmo de seleção é executado 100 vezes e você conta quantas vezes sua transação foi aprovada direta ou indiretamente nos Tips (extremidades) selecionadas. Maior sendo a porcentagem, mais confiança o usuário tem de que sua transação permanecerá “estabelecida”.
Pode parecer que este sistema proporciona uma má experiência ao usuário, mas este não é o caso. Se Maria envia João 10 MagicDAGTokens, ela não precisa se preocupar em selecionar Tips corretos no grafo. De forma oculta, sua carteira pode fazer o seguinte:
- Selecionar Tips mais pesados (lembre-se, estas são as que têm mais confirmações acumuladas).
- Siga o caminho de volta através das transações anteriores para verificar se os Tips têm saldo suficiente para gastar.
- Uma vez satisfeitas as condições, elas adicionam suas transações ao DAG, confirmando as transações anteriores utilizadas como referência.
Para Maria, isto é semelhante ao fluxo de trabalho normal de moedas virtuais. Ela digita o endereço de João e a quantia que deseja gastar, depois clica em enviar. A lista acima é o método de Proof of Work (Pow) que cada participante executa ao criar uma transação.
Prós e contras do Grafo Acíclico Dirigido (DAGs)
Vantagens dos DAGs
Velocidade
Sem restrições de tempo de bloco, qualquer pessoa pode transmitir e processar suas transações a qualquer momento. Sem limite para o número de transações enviadas pelos usuários, desde que eles confirmem as transações mais antigas.
Sem Mineração
Os DAGs não utilizam algoritmos de consenso PoW da forma como estamos acostumados. Portanto, sua Carbon Footprint (uma medida que calcula a emissão de carbono) é muito menor do que a das moedas cripto que dependem da mineração para a operação da rede de blockchain.
Sem Taxas de Transação
Como não há mineiros, os usuários não têm que pagar taxas para transmitir suas transações. Dito isto, alguns exigem que seja paga uma pequena taxa para tipos especiais de nós (nodes). Taxas baixas (ou melhor, taxas zero) são mais atraentes para pequenos pagamentos nestes sistemas, que perdem completamente seu propósito quando há taxas de rede.
Sem Problemas de Escalabilidade
Como eles não têm restrições de tempo de blocos, os DAGs podem processar muito mais transações por segundo do que as tradicionais redes de cadeias de blocos. Muitos acreditam que isto os tornará valiosos nos casos de uso da Internet das Coisas (IoT), onde todos os tipos de máquinas interagem umas com as outras.
Desvantagens dos Directed Acyclic Graph
Não são Totalmente Descentralizados
Os protocolos que dependem do Grafo Acíclico Dirigido (DAG) em Criptomoedas (DAG) têm vários elementos de centralização. Para alguns, é suposto ser uma solução de curto prazo para inicializar a rede. Resta saber se os Grafos Acíclicos Dirigidos podem realmente prosperar sem a intervenção de terceiros. Caso contrário, eles se abrem vetores de ataques que podem eventualmente atrapalhar suas redes.
Eles não Goram Testados em Grande Escala.
Embora as moedas cripto baseadas no Grafo Acíclico Dirigido (DAG) em Criptomoedas existam há alguns anos, elas ainda têm um longo caminho a percorrer antes de serem amplamente utilizadas. Como tal, é difícil prever que incentivos os usuários podem ter para explorar este sistema no futuro.
Concluindo Soble Grafo Acíclico Dirigido (DAG)
Grafo Acíclico Dirigido (Directed acyclic graph DAG) em criptomoedas são certamente uma tecnologia interessante para a construção de redes de moedas cripto. Até agora, o número de projetos que utilizam esta estrutura de dados é relativamente baixo e ainda não totalmente desenvolvido.
Dito isto, se eles puderem atingir seu potencial, eles poderiam alimentar ecossistemas massivamente escaláveis. A tecnologia Directed Acyclic Graphs tem inúmeros casos de uso em áreas que requerem alta produtividade e isenção de taxas, como para a Internet das Coisas (IoT) ou para pagamentos de valores mais baixos.