Corda - blockchain de código aberto para empresas

Corda é um livro distribuído para armazenar, gerenciar e sincronizar obrigações financeiras entre várias instituições financeiras.

Corda tem uma documentação muito boa com palestras em vídeo, que podem ser encontradas aqui . Vou tentar descrever brevemente como o Corda é construído por dentro.

Considere os principais recursos do Corda e sua singularidade entre outros blockchains:

  • Corda não possui sua própria criptomoeda.
  • Corda não usa o conceito de mineração e o sistema de Prova de trabalho.
  • A transferência de dados ocorre apenas entre os participantes da transação / contrato. Não há transmissão global para todos os nós da rede.
  • Não há um controlador central que gerencia todas as transações.
  • Corda suporta vários mecanismos de consenso.
  • O consenso é alcançado entre os participantes no nível de um contrato / contrato separado, e não no nível de todo o sistema.
  • Uma transação é confirmada apenas pelos participantes relacionados a ela.
  • Corda oferece um link direto entre a linguagem jurídica humana formal e o código de contrato inteligente.

O livro


O conceito de contabilidade em Corda é subjetivo. Não há um único data warehouse central. Em vez disso, cada nó mantém um banco de dados separado de fatos conhecidos por ele.

Por exemplo, imagine uma rede de 5 nós, em que o círculo é um fato conhecido pelo nó.



Como podemos ver, Ed, Carl e Demi sabem sobre o fato 3, e Alice e Bob nem sequer suspeitam dele. Corda garante a preservação de fatos gerais no banco de dados de cada nó, e os dados serão idênticos.

Estados


Um estado é um objeto imutável , fato conhecido por um ou mais nós da rede em um determinado momento.

Os estados podem armazenar dados arbitrários, por exemplo, ações, títulos, empréstimos, informações de identificação.

Por exemplo, o seguinte estado é um IOU - um contrato que Alice deve a Bob a quantidade de X:


O ciclo de vida de um fato ao longo do tempo é representado por uma sequência de estados. Quando é necessário atualizar o estado atual, criamos um novo e marcamos o atual como histórico.



Transações


As transações são sugestões para atualizar o razão-a. Eles não são transmitidos a todos os participantes do razão e estão disponíveis apenas para os membros da rede que têm o direito legal de visualizá-los e gerenciá-los.

Uma transação será adicionada ao razão se:

  • contrato válido
  • assinado por todos os participantes necessários
  • não contém resíduos duplos (doble-gasts)

Corda usa o modelo UTXO (saída de transação não gasta), no qual cada estado do razão é imutável.

Quando uma transação é criada, o estado de entrada da transação anterior (por hash e índice) é transmitido para a entrada.


Ciclo de vida da transação:

  • Criação (no momento, a transação é apenas uma proposta para atualizar o razão-a)
  • Coleção de assinaturas (os participantes necessários na transação aprovam a proposta de atualização adicionando uma assinatura à transação)
  • Transmitir confirmação no razão

Após adicionar uma transação ao razão, os estados de entrada são marcados como históricos e não podem ser usados ​​em transações futuras.


Além dos estados de entrada e saída, uma transação pode conter:

  • Comandos (parâmetro de transação indicando o objetivo da transação)
  • Anexos (calendário de feriados, conversor de moeda)
  • Janelas temporárias (período de validade)
  • Notário (Notário, membros especiais da rede, validando transações)


Contratos


Quando falamos em validade de transação, queremos dizer não apenas a disponibilidade das assinaturas necessárias, mas também a validade do contrato. Cada transação é associada a um contrato que a aceita e valida os estados de entrada e saída. Uma transação é considerada válida apenas se todos os seus estados forem válidos.

Os contratos no Corda são escritos em qualquer linguagem da JVM (por exemplo, Java, Kotlin).

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

Você deve herdar da classe Contract e substituir o método de verificação . Em caso de validação inválida, uma exceção é lançada.

A vadidação das transações deve ser determinística, ou seja, O contrato deve sempre aceitar ou recusar a transação. Em conexão com isso, a validade de uma transação não pode depender de tempo, números aleatórios, arquivos de host etc.

Na Corda, os contratos são executados na chamada sandbox, uma JVM levemente modificada que garante a execução determinística dos contratos.

Streams


Para automatizar a comunicação de hosts, foram adicionados threads.

Um fluxo é uma sequência de etapas que informa ao nó como executar uma atualização específica do razão, momento em que é necessário assinar e validar a transação.



Às vezes, leva horas, dias, até a transação ser assinada por todas as partes e terminar no razão. O que acontece se você desconectar o nó envolvido na transação? Os fluxos têm pontos de interrupção nos quais o estado do fluxo é gravado no banco de dados do nó. Ao restaurar um nó na rede, ele continuará do local em que parou.

Consenso


Para entrar no razão, uma transação deve chegar a 2 consensos: validade e exclusividade.

A decisão sobre a validade de uma transação é tomada apenas pelas partes diretamente envolvidas.

Nós notarizados verificam a transação quanto à exclusividade, evitam gastos duplos.

Suponha que Bob tenha US $ 100 e ele queira transferir US $ 80 para Charlie e US $ 70 para Dan, usando o mesmo estado de entrada.



Este truque Corda não permitirá pôr em marcha. Embora a transação seja aprovada em uma verificação de validação, a verificação de exclusividade falhará.

Conclusão


A plataforma Corda, desenvolvida pelo consórcio blockchain R3, não é um exemplo puro do uso da tecnologia blockchain. Corda é uma ferramenta altamente especializada para instituições financeiras.

Source: https://habr.com/ru/post/pt452258/


All Articles