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.