Delayed Proof of Work (dPoW) é um mecanismo de segurança projetado pelo projeto Komodo. O dPoW é, basicamente, uma versão modificada do algoritmo Proof of Work (PoW), que usa o hashpower da Bitcoin como uma forma de melhorar a segurança da rede. Usando o dPoW, os desenvolvedores do projeto Komodo são capazes de proteger não apenas sua própria rede blockchain, mas também qualquer rede de terceiros que se junte ao ecossistema da Komodo no futuro. Na realidade, o dPoW pode ser implementado em qualquer projeto que desenvolva uma blockchain independente, desde que seja baseada no modelo UTXO.
Como funciona o dPoW?
Tomando o caso Komodo como exemplo, o mecanismo de segurança dPoW foi desenvolvido e implementado no código base da Zcash, o que possibilitou o uso de provas de conhecimento-zero (zero-knowledge proofs) para maior privacidade, além de melhorar a segurança da rede através da hashrate do Bitcoin.
Em intervalos de dez minutos, o sistema Komodo faz um registro (snapshot) de sua própria blockchain. O snapshot é então gravado em um bloco na rede Bitcoin através de um processo chamado notarização (notarization). Basicamente, esse processo cria um backup de todo o sistema Komodo, que é registrado na blockchain da Bitcoin.
Em termos mais técnicos, a comunidade Komodo elege os nós (nodes) que farão esse processo de notarização. Esses nós são chamados de notary nodes e são responsáveis por registrar os hashs de bloco (block hash) de cada rede dPoW na blockchain Komodo. Para cada registro de notarização, uma transação é feita na blockchain da Komodo. Usando o comando OP_RETURN, os nodes de notarização registram um único hash de bloco na cadeia Komodo.
Os notary nodes selecionam um block hash que tenha sido criado a cerca de dez minutos. Isso garante que toda a rede esteja de acordo com a validade do bloco. Ainda assim, cada rede de blockchain precisa atingir um consenso em relação a cada bloco. Os notary nodes apenas registram o block hash de um bloco que já foi minerado anteriormente.
Em seguida, os nodes de notarização registram um hash de bloco da rede Komodo na rede da Bitcoin. De forma similar, o processo também depende de uma transação de BTC, usando o comando OP_RETURN para gravar os dados em um bloco na blockchain da Bitcoin.
Assim que o processo de notarização na rede da Bitcoin é concluído, os notary nodes da Komodo registram a informação daquele mesmo bloco da rede Bitcoin de volta em cada uma das outras blockchains que implementaram o mecanismo dPoW. Nesse momento, a rede não aceitará mais nenhum tipo de alteração do bloco notarizado (e nem de nenhum outro bloco que tenha sido criado antes do bloco notarizado mais recente).
PoW vs dPoW
A mineração das blockchains que usam PoW foi intencionalmente projetada para ser muito exigente e custosa. Os mineradores precisam resolver um quebra-cabeça criptográfico bastante completo para poderem minerar um novo bloco. Esse processo envolve um trabalho computacional muito intenso, que demanda muitos recursos em termos de hardware e eletricidade. A mineração não apenas protege a rede contra ataques, mas também verifica a legitimidade das transações e gera novas unidades de criptomoedas (como recompensa para o minerador que solucionou o quebra-cabeça).
Portanto, um dos motivos das blockchains de Proof of Work serem seguras é o fato do processo de mineração demandar um investimento muito alto de recursos financeiros, além de ser dependente de consenso da rede. Entretanto, é importante lembrar que a segurança das blockchains de PoW está diretamente relacionada com a quantidade de poder computacional (hash rate) dedicadas à elas. Isso significa que uma rede blockchain pequena não é tão segura quanto as grandes.
Tecnicamente, o dPoW “reseta” as regras de consenso de uma blockchain sempre que um novo bloco é notarizado. Por exemplo, a maioria das redes de PoW se baseiam na regra da “cadeia mais longa”. Então toda vez que uma rede blockchain recebe uma confirmação que o bloco XXX,XX1 foi notarizado, a regra da cadeia mais longa é reiniciada no bloco XXX,XX2. O sistema não vai aceitar uma cadeia que começe com o bloco XXX,XX0 ou anterior, mesmo que essa cadeia seja a mais longa.