Corda: cadea de bloques de código aberto para empresas

Corda é un Ledger distribuído para almacenar, xestionar e sincronizar obrigas financeiras entre diferentes organizacións financeiras.
Corda: cadea de bloques de código aberto para empresas
Corda ten bastante boa documentación con videoconferencias que se poden atopar aquí. Tentarei describir brevemente como funciona Corda dentro.

Vexamos as principais características de Corda e a súa singularidade entre outras cadeas de bloques:

  • Corda non ten a súa propia moeda criptográfica.
  • Corda non utiliza o concepto de minería e o sistema Proof-of-Work.
  • A transferencia de datos só ocorre entre as partes da transacción/contrato. Non hai transmisión global a todos os nodos da rede.
  • Non hai un controlador central que xestione todas as transaccións.
  • Corda apoia varios mecanismos de consenso.
  • O consenso conséguese entre os participantes a nivel de acordo/contrato individual, e non a nivel de todo o sistema.
  • Unha transacción é confirmada só polos participantes relacionados con ela.
  • Corda ofrece unha conexión directa entre a linguaxe legal humana formal e o código de contrato intelixente.

O libro maior

O concepto de libro maior en Corda é subxectivo. Non hai un único repositorio central de datos. En cambio, cada nodo mantén unha base de datos separada de feitos coñecidos por el.

Por exemplo, imaxina unha rede de 5 nodos, onde un círculo é un feito coñecido polo nodo.

Corda: cadea de bloques de código aberto para empresas

Como podemos ver, Ed, Carl e Demi coñecen o feito 3, pero Alice e Bob nin sequera son conscientes diso. Corda garante que os feitos comúns se almacenan na base de datos de cada nodo, e os datos serán idénticos.

Estados

Estado é inmutable un obxecto que representa un feito coñecido por un ou máis nodos da rede nun momento determinado.

Os estados poden almacenar datos arbitrarios, por exemplo, accións, bonos, préstamos, información de identificación.

Por exemplo, o seguinte estado representa un IOU, un acordo que Alice debe a Bob unha cantidade de X:

Corda: cadea de bloques de código aberto para empresas
O ciclo de vida dun feito ao longo do tempo está representado por unha secuencia de estados. Cando sexa necesario actualizar o estado actual, creamos un novo e marcamos o actual como histórico.

Corda: cadea de bloques de código aberto para empresas

Transaccións

As transaccións son propostas para actualizar o libro maior. Non se transmiten a todos os participantes do libro maior e só están dispoñibles para aqueles participantes da rede que teñan o dereito legal de velos e xestionalos.

Engadirase unha transacción ao libro maior se:

  • válido contractual
  • asinado por todos os participantes requiridos
  • non contén dobre gasto

Corda usa o modelo UTXO (unspent transaction output), no que cada estado do libro maior é inmutable.

Cando se crea unha transacción, o estado de saída da transacción anterior (por hash e índice) transfírese á entrada.

Corda: cadea de bloques de código aberto para empresas
Ciclo de vida da transacción:

  • Creación (De momento, a transacción é só unha proposta para actualizar o libro maior)
  • Recoller sinaturas (as partes obrigatorias da transacción aproban a proposta de actualización engadindo unha sinatura á transacción)
  • Confirmar transacción no libro maior

Unha vez que se engade unha transacción ao libro maior, os estados de entrada márcanse como históricos e non se poden usar en transaccións futuras.

Corda: cadea de bloques de código aberto para empresas
Ademais dos estados de entrada e saída, unha transacción pode conter:

  • Comandos (parámetro de transacción que indica o propósito da transacción)
  • Anexos (calendario de vacacións, conversor de divisas)
  • Ventás horarias (período de validez)
  • Notario (Notario, participantes especiais da rede que validan transaccións)

Corda: cadea de bloques de código aberto para empresas

Contratos

Cando falamos de validez de transacción, queremos dicir non só a presenza das sinaturas necesarias, senón tamén a validez contractual. Cada transacción está asociada a un contrato que a acepta e valida os estados de entrada e saída. Unha transacción considérase válida só se todos os seus estados son válidos.

Os contratos en Corda están escritos en calquera linguaxe JVM (por exemplo, Java, Kotlin).

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

É necesario herdar dunha clase Contrato e anular o método comprobar. Se a transacción non é válida, lanzarase unha excepción.

A validación da transacción debe ser determinista, é dicir. o contrato sempre debe aceptar ou rexeitar a transacción. En relación con isto, a validez da transacción non pode depender do tempo, números aleatorios, ficheiros host, etc.

En Corda, os contratos execútanse nunha chamada sandbox, unha JVM lixeiramente modificada que garante a execución determinista dos contratos.

regatos

Para automatizar a comunicación entre os nodos da rede, engadíronse fíos.

Un fluxo é unha secuencia de pasos que lle indica a un nodo como realizar unha actualización específica do libro maior e en que momento hai que asinar e validar a transacción.

Corda: cadea de bloques de código aberto para empresas

Ás veces, levan horas, días, ata que todas as partes asinan a transacción e entra no libro maior. Que pasa se desconectas un nodo que participa nunha transacción? Os fíos teñen puntos de control, nos que o estado do fío se escribe na base de datos do nodo. Cando un nodo se restaura á rede, continuará onde o deixou.

Consenso

Para entrar no libro maior, unha transacción debe alcanzar 2 consensos: validez e singularidade.

A decisión sobre a validez dunha transacción só toman as partes directamente implicadas nela.

Os nodos notariais verifican a unicidade da transacción e evitan o dobre gasto.

Imaxinemos que Bob ten $100 e quere transferir $80 a Charlie e $70 a Dan usando o mesmo estado de entrada.

Corda: cadea de bloques de código aberto para empresas

Corda non che permitirá facer tal truco. Aínda que a transacción pasará a verificación de validez, a verificación de unicidade fallará.

Conclusión

A plataforma Corda, desenvolvida polo consorcio blockchain R3, non é un caso de uso puro para a tecnoloxía blockchain. Corda é unha ferramenta altamente especializada para entidades financeiras.

Fonte: www.habr.com

Engadir un comentario