Delayed Proof of Work (dPoW) es un mecanismo de seguridad diseñado por el proyecto Komodo. Básicamente, es una versión modificada del algoritmo de consenso Proof of Work (PoW), que emplea el hashpower de la blockchain de Bitcoin como forma de incrementar la seguridad de la red. Mediante el uso de dPoW, los desarrolladores de Komodo no solo son capaces de asegurar su propia red, sino también la cadena de cualquier tercero que acabe uniéndose al ecosistema Komodo en un futuro. De hecho, dPoW puede ser implementado por cualquier proyecto que desarrolle una blockchain independiente utilizando un modelo UTXO.
¿Cómo funciona dPoW?
Si tomamos como ejemplo el caso de Komodo, vemos que el mecanismo de seguridad dPoW fue desarrollado e implementado en el código base de Zcash, permitiendo de esta forma disponer de privacidad “zero-knowledge” e incrementando la seguridad de la red mediante el aprovechamiento de la tasa hash de Bitcoin.
A intervalos de diez minutos, el sistema Komodo captura una instantánea de su propia blockchain. A continuación, la instantánea se registra en un bloque de la red Bitcoin, como parte de un proceso denominado “notarization” (notarización). Dicho proceso, básicamente, crea una copia de seguridad del sistema Komodo en su conjunto, que se guarda en la blockchain de Bitcoin.
Desde un punto de vista técnico, los nodos notario escogidos por la comunidad Komodo escriben, mediante una transacción en el libro contable (ledger) de Komodo, el “block hash” de cada blockchain protegida mediante dPoW. Utilizando el comando OP_RETURN, los nodos notario almacenan un block hash individual en la cadena de Komodo.
El motivo por el que los nodos notario seleccionan un block hash de aproximadamente diez minutos es para tener la certeza de que toda la red considera válido el bloque. La red de cada blockchain, sin embargo, sigue llegando a un consenso respecto a cada uno de los bloques. Los nodos notario simplemente se encargan de registrar un “block hash” de un bloque previamente minado.
A continuación, dichos nodos notario registran un “block hash” de la cadena Komodo en el libro contable (ledger) de Bitcoin. Este proceso se completa mediante la ejecución de una transacción de BTC y el uso de OP_RETURN para registrar los datos en un bloque de la cadena de Bitcoin.
Una vez ha tenido lugar este proceso de notarización en Bitcoin, los nodos notario de Komodo registran los datos del bloque de la cadena de BTC, de vuelta en cada una de las otras cadenas protegidas. Llegado este punto, la red no aceptará ninguna reorganización que intente modificar un bloque notarizado (o cualquiera creado con anterioridad al más reciente bloque notarizado).
PoW vs. dPoW
El minado, dentro de las blockchains basadas en PoW, es deliberadamente laborioso. Los mineros deben resolver complejos rompecabezas criptográficos para lograr minar un nuevo bloque. Dicho proceso conlleva un trabajo computacional muy intenso, y que resulta muy costoso en términos de hardware y electricidad. El proceso de minado no solo protege la red de ataques externos, sino que también permite verificar la legitimidad de las transacciones, así como generar nuevas unidades de la criptomoneda (en forma de recompensa para el minero que resuelve el rompecabezas).
Por lo tanto, una de las razones por las que las blockchains Proof of Work son seguras, es el hecho que el proceso de minado involucra una elevada inversión financiera blockchains y depende del consenso de la red. Sin embargo, es importante señalar que la seguridad de las blockchains PoW está directamente relacionada con la cantidad de potencia computacional (tasa de hash) que se les dedica, lo que significa que las redes blockchain pequeñas no son tan seguras como las grandes.
En efecto, dPoW "restablece" las reglas de consenso de una blockchain cada vez que un bloque se notariza. Por ejemplo, la mayoría de cadenas PoW emplean la “regla de la cadena más larga”. Así que cada vez que una red blockchain recibe la confirmación que el bloque XXX,XX1 ha sido notarizado, la regla de la cadena más larga empezará nuevamente a partir del bloque XXX,XX2. La red no aceptará una cadena que empiece en el bloque XXX,XX0, o anterior, incluso en el caso de que se trate de la más larga.