Corda: blockchain de código abierto para empresas

Cuerda es un libro mayor distribuido para almacenar, gestionar y sincronizar obligaciones financieras entre diferentes organizaciones financieras.
Corda: blockchain de código abierto para empresas
Corda tiene documentación bastante buena con videoconferencias que se pueden encontrar aquí. Intentaré describir brevemente cómo funciona Corda por dentro.

Veamos las características principales de Corda y su singularidad entre otras cadenas de bloques:

  • Corda no tiene su propia criptomoneda.
  • Corda no utiliza el concepto de minería ni el sistema de prueba de trabajo.
  • La transferencia de datos se produce únicamente entre las partes de la transacción/contrato. No hay transmisión global a todos los nodos de la red.
  • No existe un controlador central que gestione todas las transacciones.
  • Corda admite varios mecanismos de consenso.
  • El consenso se logra entre los participantes a nivel de un acuerdo/contrato individual, y no a nivel de todo el sistema.
  • Una transacción es confirmada únicamente por los participantes relacionados con ella.
  • Corda ofrece una conexión directa entre el lenguaje jurídico humano formal y el código de contrato inteligente.

El libro mayor

El concepto de libro mayor en Corda es subjetivo. No existe un único depósito central de datos. En cambio, cada nodo mantiene una base de datos separada de los hechos que conoce.

Por ejemplo, imagine una red de 5 nodos, donde un círculo es un hecho conocido por el nodo.

Corda: blockchain de código abierto para empresas

Como podemos ver, Ed, Carl y Demi conocen el hecho 3, pero Alice y Bob ni siquiera son conscientes de ello. Corda garantiza que los hechos comunes se almacenan en la base de datos de cada nodo y que los datos serán idénticos.

Estados

El estado es inmutable un objeto que representa un hecho conocido por uno o más nodos de la red en un momento determinado.

Los estados pueden almacenar datos arbitrarios, por ejemplo, acciones, bonos, préstamos e información de identificación.

Por ejemplo, el siguiente estado representa un pagaré, un acuerdo por el que Alice le debe a Bob una cantidad de X:

Corda: blockchain de código abierto para empresas
El ciclo de vida de un hecho a lo largo del tiempo está representado por una secuencia de estados. Cuando es necesario actualizar el estado actual, creamos uno nuevo y marcamos el actual como histórico.

Corda: blockchain de código abierto para empresas

Transacciones

Las transacciones son propuestas para actualizar el libro mayor. No se transmiten a todos los participantes del libro mayor y solo están disponibles para aquellos participantes de la red que tienen el derecho legal de verlos y administrarlos.

Se agregará una transacción al libro mayor si:

  • contractualmente válido
  • firmado por todos los participantes requeridos
  • no contiene doble gasto

Corda utiliza el modelo UTXO (salida de transacciones no gastadas), en el que cada estado del libro mayor es inmutable.

Cuando se crea una transacción, el estado de salida de la transacción anterior (por hash e índice) se transfiere a la entrada.

Corda: blockchain de código abierto para empresas
Ciclo de vida de la transacción:

  • Creación (Por el momento, la transacción es solo una propuesta para actualizar el libro mayor)
  • Recopilar firmas (las partes requeridas en la transacción aprueban la propuesta de actualización agregando una firma a la transacción)
  • Confirmar transacción en el libro mayor

Una vez que se agrega una transacción al libro mayor, los estados de entrada se marcan como históricos y no se pueden usar en transacciones futuras.

Corda: blockchain de código abierto para empresas
Además de los estados de entrada y salida, una transacción puede contener:

  • Comandos (parámetro de transacción que indica el propósito de la transacción)
  • Adjuntos (calendario de vacaciones, conversor de moneda)
  • Ventanas de tiempo (período de validez)
  • Notario (Notario, participantes especiales de la red que validan transacciones)

Corda: blockchain de código abierto para empresas

Los contratos

Cuando hablamos de validez de transacción, nos referimos no sólo a la presencia de las firmas necesarias, sino también a la validez contractual. Cada transacción está asociada a un contrato que la acepta y valida los estados de entrada y salida. Una transacción se considera válida sólo si todos sus estados son válidos.

Los contratos en Corda están escritos en cualquier lenguaje JVM (por ejemplo, Java, Kotlin).

class CommercialPaper : Contract {
    override fun verify(tx: LedgerTransaction) {
        TODO()
    }
}

Es necesario heredar de una clase. Contrato y anular el método verificar. Si la transacción no es válida, se generará una excepción.

La validación de la transacción debe ser determinista, es decir. el contrato siempre debe aceptar o rechazar la transacción. En este sentido, la validez de la transacción no puede depender del tiempo, números aleatorios, archivos host, etc.

En Corda, los contratos se ejecutan en el llamado Sandbox, una JVM ligeramente modificada que garantiza la ejecución determinista de los contratos.

Corrientes

Para automatizar la comunicación entre los nodos de la red, se agregaron hilos.

Un flujo es una secuencia de pasos que le indica a un nodo cómo realizar una actualización del libro mayor específica y en qué punto se debe firmar y validar la transacción.

Corda: blockchain de código abierto para empresas

A veces se necesitan horas, días hasta que todas las partes firman la transacción y se registra en el libro mayor. ¿Qué sucede si desconecta un nodo que participa en una transacción? Los subprocesos tienen puntos de control en los que el estado del subproceso se escribe en la base de datos del nodo. Cuando un nodo se restablece en la red, continuará donde lo dejó.

Consenso

Para entrar en el libro mayor, una transacción debe alcanzar dos consensos: validez y unicidad.

La decisión sobre la validez de una transacción la toman únicamente las partes directamente involucradas en ella.

Los nodos notariales verifican la singularidad de la transacción y evitan el doble gasto.

Imaginemos que Bob tiene $100 y quiere transferir $80 a Charlie y $70 a Dan usando el mismo estado de entrada.

Corda: blockchain de código abierto para empresas

Corda no te permitirá realizar ese truco. Aunque la transacción pasará la verificación de validez, la verificación de unicidad fallará.

Conclusión

La plataforma Corda, desarrollada por el consorcio blockchain R3, no es un caso de uso puro para la tecnología blockchain. Corda es una herramienta altamente especializada para instituciones financieras.

Fuente: habr.com

Añadir un comentario