The Ultimate Corda Tutorial 2021

Quer se tornar um especialista em Corda? O seguinte tutorial corda cobrirá tudo que você precisa saber sobre o desenvolvimento de um aplicativo Corda.

Blockchain percorreu um longo caminho. A ideia de tecnologia de razão distribuída resolveu muitos pontos problemáticos pelos quais as organizações atuais passam. O principal objetivo é se tornar mais eficiente, seguro e escalonável sem investir milhões de dólares.

Corda é uma plataforma de blockchain de código aberto que fornece um ecossistema global de blockchain. Oferece privacidade estrita com o uso de contratos inteligentes. Também ajuda a empresa a realizar transações diretas e fornece uma abordagem econômica para agilizar as operações de negócios.

A principal diferença é como o Corda lida com as transações. É um DLT que deseja melhorar a viabilidade, a velocidade e a escalabilidade do blockchain por não ter um livro razão completo com cada par. Se uma transação puder ser concluída entre dois pares sem informar toda a rede, o Corda usará essa abordagem. Também é projetado para incluir outras partes que tornam mais fácil acompanhar a transação e ver sua validade. É uma tecnologia de razão distribuída para o negócio.

Vamos começar com nosso tutorial de blockchain do Corda agora!

Em breve: Guia para iniciantes do curso de desenvolvimento de Corda

Como o tutorial de desenvolvimento do Corda é estruturado?

Cobriremos Corda em detalhes. Na maioria das seções, tentaremos cobrir os conceitos importantes de Corda.

Os principais conceitos que iremos cobrir incluem o seguinte.

  • Estado
  • Contrato
  • Seções de fluxo

Nosso tutorial criará um aplicativo IOU. IOU significa “Eu te devo”. Esta é uma apresentação simples do fato de que uma pessoa possui dinheiro de outra pessoa. Abordaremos o conceito com mais detalhes posteriormente.

Para tornar as coisas mais simples, usaremos a linguagem de programação Kotlin. Como aluno, seria ótimo se você conhecesse Kotlin, mas não é uma habilidade necessária para seguir o tutorial.

Ferramentas

Antes de começarmos com o tutorial do Corda para iniciantes, precisaremos das seguintes ferramentas. Existem também ferramentas de blockchain que o desenvolvedor adora usar com frequência. No entanto, não vamos abordá-los hoje.

  • Kotlin
  • Gradle
  • Git
  • IntelliJ
  • Linha de comando

A partir do ambiente de desenvolvimento integrado, usaremos o IntelliJ. Isso simplificará nosso desenvolvimento.

Tutorial Corda

O que é corda?

Blockchain Corda é melhor definido como um código-fonte aberto que resolve problemas de negócios ao fornecer uma rede blockchain interoperável. Seus principais recursos incluem privacidade, eficiência e transações diretas usando tecnologia de contrato inteligente.

Os contratos inteligentes usados ​​em Corda podem ser escritos usando linguagens JVM ou Java. Os dApps na plataforma Corda são conhecidos como CorDapps. Além disso, eles oferecem rede de nós ponto a ponto com a capacidade de usar a infraestrutura do Notário. A infraestrutura é usada para validar e sequenciar transações sem a necessidade de transmitir os detalhes da transação para todos os pares na rede.

Outro componente importante usado pelo blockchain inclui o framework Flow, que gerencia a negociação e comunicação entre os participantes.

Compreendendo o Corda Ledger

O Corda Ledger não é semelhante ao sistema de razão utilizado pelas tecnologias tradicionais de blockchain. É por isso que precisamos ter uma compreensão clara de como funciona e entendê-lo do ponto de vista funcional e da perspectiva de dados.

O livro razão Corda funciona como um gráfico. Todos os nós em um grafo são conectados uns aos outros, seja diretamente ou por meio de alguns outros nós. Todos os nós podem se comunicar uns com os outros, se quiserem. O uso do gráfico significa que não há necessidade de transmitir a transação globalmente.

Descoberta de nós

Então, como os nós descobrem uns aos outros? Eles usam um mapa de rede para se encontrar. Você pode pensar nisso, semelhante a uma lista telefônica. O mapa de rede contém os metadados para localizar cada um desses serviços e, portanto, fornece uma boa maneira de descobrir o mapa.

Como funciona?

O maior desafio em uma rede blockchain de broadcast não global é o consenso. Então, como os nós se conhecem e verificam essas informações?

A resposta aqui são fatos compartilhados. Cada nó se sobrepõe a qualquer outro nó de uma forma ou de outra. Os fatos compartilhados são armazenados no livro razão Corda, que pode então ser usado para verificar as informações. O livro razão Corda contém um conjunto desses conjuntos. Como não há um nó central, esses nós atuam como proxy quando há necessidade de verificar as coisas. Para armazenar essa informação, cada nó possui um cofre que contém o fato que não pode ser alterado. É assim que os desenvolvedores implementam o blockchain.

Estados

Os estados no blockchain Corda são imutáveis. Eles são usados ​​para armazenar fatos compartilhados sobre uma transação, acordo ou contrato em um ponto específico do tempo.

Parece técnico? Vamos tentar dividir em palavras mais simples.

Fatos compartilhados

Vamos pegar duas pessoas usando o livro razão Corda. Vamos chamá-los de Alpha e Bravo.

Ambos compartilham um fato. O fato compartilhado é um IOU (I Own You). O IOU é usado quando um credor tem dinheiro devido ao credor. Para tornar o fato compartilhado, ambos têm as mesmas informações compartilhadas representadas no IOU.

Representar qualquer coisa

Os estados podem ser usados ​​para representar qualquer coisa. Isso significa que ele pode armazenar qualquer forma de informação para diferentes casos de uso da corda. Como desenvolvedor, você pode usar estados para armazenar informações KYC, instrumentos financeiros, empréstimos sindicados e assim por diante.

Além disso, os estados podem ser usados ​​para armazenar vários atributos. Mas há uma limitação para estados. A limitação é que, uma vez que um estado seja fornecido, seu tipo não pode ser alterado. Se você criar um estado IOU, ele terá que definir o estado IOU para o resto de sua vida.

Imutável e em evolução

Os estados são criados para serem imutáveis. No entanto, sua imutabilidade diz respeito ao tempo. Um estado é apresentado em um determinado momento.

Isso significa que um novo estado pode ser criado além do estado original. Isso é feito quando há uma nova alteração feita no estado que precisa ser armazenada. O antigo estado é então denominado como histórico.

Por exemplo, se Alpha quitar sua dívida com a Bravo, então um novo estado será criado, citando o fato de que Alpha liquidou a dívida. Além disso, se o estado for concluído, o IOU expirará. Em termos simples, o ciclo de vida do estado, neste caso, é o seguinte.

  1. Um primeiro estado é criado para mostrar que a Alpha está em dívida com a Bravo. Esses estados também compartilham mais informações sobre o IoU, incluindo a data, hora, taxa de juros, o valor emprestado e outras informações úteis exigidas para o IoU.
  2. Agora, quando Alfa resolve a dívida, é criado um novo estado que atualiza as novas informações. O antigo estado não é tocado de forma alguma, pois é imutável.
  3. O novo estado agora é atualizado nos fatos compartilhados entre os dois usuários.
  4. Agora, o antigo estado é denominado histórico. Pode haver vários estados históricos em uma única transação. Isso pode levar à criação de uma sequência de estados.
  5. Um cabeçalho de sequência é criado, que se refere ao estado mais recente. Além disso, os últimos estados também são denominados como não consumidos.

Consulte Mais informação: Guia de comparação Hyperledger vs Corda vs Ethereum

Preparando o ambiente de desenvolvimento

Agora, de acordo com o guia de desenvolvimento dApp, o ambiente deve estar pronto para o tutorial de desenvolvimento Corda. Você precisa das seguintes ferramentas para começar.

  • Oracle JDK 8 JVM – v8u171 ou superior.
  • Git
  • IntelliJ IDEA

Repositório Git de clonagem

A melhor maneira de começar nossa jornada é rodar um exemplo de CorDapp em nosso ambiente de desenvolvimento. A boa notícia é que Corda oferece um exemplo de CorDapp que você pode baixar e executar localmente.

Você pode clonar o repositório localmente usando o comando git clone conforme abaixo.

git clone http://github.com/roger3cev/corda-training-template.git

Para o tutorial, vamos usar o IntelliJ para importar o repositório git. Abra o IntelliJ. Depois de fazer isso, você verá a opção de fazer check-out no Controle de versão. Clique nele e clone o repositório no seu computador.

Você pode escolher salvar o projeto; você encontrará o repositório do projeto como abaixo.

No canto inferior direito, você encontrará uma notificação dizendo, importe o Projeto Gradle, como abaixo. É importante que nosso tutorial de Corda funcione.

Clique em “Import Gradle Project.”

Você também precisa configurar o SDK do projeto. Vá para as configurações do projeto e selecione a versão mais recente do Java. No meu caso, foi definido como Java 11.0.5.

Se você encontrar algum erro para executar, atualize seu Gradle e deixe-o importar os repositórios necessários para fazê-lo funcionar. Isso levará algum tempo. Então, sente-se no banco de trás e espere que ele seja concluído.

Para mim, demorou cerca de 20 minutos para concluir todas as atualizações de dependências do Gradle.

Vamos examinar rapidamente a estrutura de nosso projeto de tutorial do Corda. Nosso repositório principal é o arquivo src. Como estamos usando o Kotlin, usaremos a pasta Kotlin-source; você encontrará a pasta src abaixo dela. Por favor, não o confunda com a pasta java-source.

Aqui, você encontrará todos os arquivos necessários na pasta de treinamento. Há também uma pasta de “teste” que contém as unidades de teste para o aplicativo.

Outro arquivo importante que precisamos saber é o IOUState.kt. Ele está localizado dentro do treinamento > Estado.

Fazendo os testes de unidades de estado funcionarem

A classe IOUState parece muito básica. Ainda não está concluído. Vamos usar uma metodologia de desenvolvimento orientada a testes para desenvolver a classe e prepará-la para o trabalho.

O desenvolvimento orientado a testes é uma ótima abordagem quando se trata de práticas de desenvolvimento modernas. Ajuda a eliminar bugs ou outros problemas desde o início.

É por isso que o modelo que você baixou já tem testes correspondentes para cada uma das classes, incluindo contrato, fluxo e estado.

Para começar, precisamos ir para os testes > Kotlin> internet > Corda > Treinamento > Estado > IOUStateTests

Lá você encontrará testes já escritos. Ele também vem com toneladas de documentação. A equipe R3 Corda dedicou seu tempo para criar o modelo.

Você precisa descomentar a seção, conforme mostrado abaixo, para fazer um único teste a ser executado.

Selecione o código e pressione Ctrl + / para descomentar. Se você usa MAC, use CMD + / para descomentar.

Agora, é hora de executarmos o teste de unidade.

Como nossa classe IOUState está quase vazia, os testes falharão e você obterá o seguinte erro de teste.

Como você pode ver, está dizendo que o Kotlin-source: test falhou devido à NoSuchFieldException. Isso significa que o teste está esperando a variável de quantidade onde não encontrou.

Para consertar, precisamos voltar ao nosso arquivo IOUState.kt e editá-lo. Se você sabe como construir um aplicativo blockchain, então será uma tarefa fácil para você.

Antes de prosseguirmos, precisamos entender melhor o Kotlin. Para entender o código que vamos editar, é melhor obter uma introdução. Kotlin é uma linguagem de programação densa. Além disso, o Kotlin será convertido em uma máquina virtual JVM, então devemos estar bem com o uso dele em nosso tutorial.

  • classe de dados IOUState → Esta palavra-chave significa que definimos uma classe de dados chamada “IOUState”.
  • dados val → declaração de variável. O nome do campo é data
  • String = “dados” → define o valor padrão da variável de dados se nada for definido.
  • ContractState → Interface

Se você fez todas as alterações no arquivo IOUState.kt de acordo com o teste, a classe IOUState terá a aparência abaixo.

classe de dados IOUState (val montante: montante,

                   val credor: Party,

                   val mutuário: Parte,

                   val pago: Quantia = Quantia (0, quantia.token),

                   substituir val linearId: UniqueIdentifier = UniqueIdentifier ()): LinearState {

   / **

    * Esta propriedade contém uma lista de nós que podem “usar” este estado em uma transação válida. Neste caso, o

    * Credor ou devedor.

    * /

   substituir val participantes: lista obter() = listOf (credor, devedor)

   / **

    * Métodos auxiliares para quando construir transações para liquidar e transferir IOUs.

    * – [pagar] adiciona um valor à propriedade paga. Não faz validação.

    * – [withNewLender] cria uma cópia do estado atual com um credor recém-especificado. Para usar durante a transferência.

    * /

   Diversão pay (amountToPay: Amount) = cópia (paid = paid.plus (amountToPay))

   Diversão withNewLender (newLender: Party) = copiar (credor = newLender)

}

Agora, você deve ser capaz de adicionar métodos auxiliares de acordo com os comentários acima.

Quer se tornar um especialista em Corda? Aqui está um guia para a certificação R3 Corda que irá guiá-lo através do seu processo de certificação.

Contatos Corda

Aprendemos que os Estados podem evoluir para novos Estados. Os desenvolvedores podem controlar a evolução do estado do livro-razão usando contratos. Nesta seção, aprenderemos sobre contratos em detalhes.

Como o R3 Corda não depende da transmissão de mensagens para toda a rede, ele utiliza uma definição de verificação de transação comum para cada tipo de estado. Desta forma, a rede Corda verifica a transação e obtém consenso. É bastante semelhante a como outras transações de registros de blockchain.

Os contratos Corda são implementados por meio de funções. Você pode pensar em estados como unidades de armazenamento de dados e contratos é uma forma de verificar os dados e suas mudanças de estado. Essas funções de verificação são específicas para o tipo de estado.

Para garantir que os estados possam ser verificados e passíveis de manutenção, cada estado precisa ser referenciado por um contrato.

Cada contrato contém dois itens, incluindo código de contrato e prosa legal.

Para entender isso, vamos dar uma olhada na imagem a seguir.

Como você pode ver, o contrato contém dois itens e, no estado, há uma referência de contrato IOU para esse código.

Prosa Legal: Prosa legal é usada como uma referência ao contrato legal para o acordo. É usado para garantir que a estrutura legal e o sistema judicial existentes possam ser usados ​​em caso de disputa.

Outras características principais dos Contratos Corda incluem o seguinte

  • Vários contratos podem fazer referência a um contrato. Além disso, um contrato pode conter vários tipos de estado
  • Corda utiliza uma função de verificação para verificar uma transação proposta
  • A assinatura do método de verificação é a seguinte
  • verificação divertida (tx: Transação): Unidade
  • O método de verificação verifica a transação executando todas as restrições. Se a restrição falhar, uma exceção será lançada; caso contrário, a transação será considerada válida.
  • A função de verificação é determinística.

O Os modelos de blockchain também contêm o código para os contratos Corda. Você também deve abordar os contratos de Corda semelhantes aos dos estados. Ajudaria se você fosse às unidades de teste do Corda e, em seguida, adicionasse o código necessário na classe de contrato.

Transações Corda

Nossa próxima parada é Corda Transactions. São as transações que possibilitam as mudanças de estado.

Então, o que é uma transação? Ele pode ser melhor definido como um contêiner que contém referências de estado de entrada (0 ou mais). Eles também produzem estados (0 ou mais).

As transações permitem que a rede tenha um desempenho ideal, possibilitando que vários pares interajam entre si em tempo real. Ele possibilita que duas partes façam uma troca atômica sem prejudicar as atividades de outros pares. Além disso, as transações são atômicas por natureza. Isso significa que uma transação nunca pode ser reduzida ou dividida.

Existem também três tipos de transações: Seguros, Atualizações e Saídas. Cada um tem sua própria agenda. Vamos listá-los abaixo.

  • Seguro → Cria novos estados
  • Atualizações → Propriedades de mudança de estado
  • Saídas → Remover estados do livro-razão

Corda Flows

Fluxos de Corda são as etapas necessárias para que os pares realizem (executem) uma transação bem-sucedida.

O fluxo determina a lógica de negócios principal do CorDapp. É responsável por garantir que as transações sejam executadas na ordem correta e nos parâmetros corretos. Como as transações são de natureza complexa, os fluxos são necessários para garantir que tudo funcione como pretendido.

O controle de fluxo garante quando comunicar, o que comunicar e com quem comunicar.

Isso é o oposto de outras tecnologias de razão distribuída que se concentram na transmissão dos detalhes da transação para toda a rede. Corda prospera em transações ponto a ponto onde as transações precisam ter dois parâmetros importantes, remetente e receptor.

Principais coisas que você deve saber sobre fluxos

  • Os fluxos podem ser concluídos em segundos ou podem levar vários dias para serem concluídos
  • Eles são completamente autônomos
  • Os Flows dormem antes de encontrarem uma espera por uma resposta
  • Os fluxos seguem o Flow Framework, que fornece um mecanismo para os desenvolvedores garantirem o desenvolvimento adequado das máquinas de estado.
  • Os fluxos podem ser emparelhados e unilaterais
  • Os desenvolvedores também podem codificar subfluxos para tornar o código mais simples

Quer subir um degrau e se tornar um especialista? Aqui está um guia de como construir um blockchain em Python.

Consenso

De todas as coisas interessantes que discutimos até agora, o que o Corda é especial é como ele atinge o consenso. O Corda tem uma abordagem única e, portanto, torna-o viável para empresas lá fora.

Em primeiro lugar, o Corda utiliza dois algoritmos de consenso. Inclui o seguinte

  • Consenso de exclusividade → Este método de consenso garante que nenhum conflito aconteça no livro-razão
  • Consenso de verificação → O consenso de verificação lida com as transações e garante que nenhum conflito aconteça de acordo com o código do contrato. Facilita a evolução de um estado compartilhado dentro da rede.

Principais coisas que você deve sobre o Consenso Corda:

  • O consenso exclusivo garante que as atualizações do razão sejam sempre exclusivas. Além disso, garante que o razão é válido quando a atualização está sendo feita.
  • O consenso de verificação garante que a atualização é válida.

Nodo Corda

A última seção de Corda que discutiremos aqui é o Nodo Corda. Corda Node é uma vista de alto nível de Corda.

Então, o que exatamente é o nó Corda?

Um nó Corda é uma entidade executada em Java Virtual Machine. Envolve o seguinte

  • Oferece serviços de armazenamento e cofres
  • SQL DB faz backup dos cofres e serviços de armazenamento
  • Pastas dedicadas são usadas para armazenar anexos
  • Oferece funcionalidade personalizada e extensões integradas conhecidas como CorDapps
  • Oferece estrutura de cliente RPC

É assim que se parece o nó Corda.

Como você pode ver, ele contém todos os aspectos necessários para operar a rede Corda. Eles interagem com o fluxo e fornecem funcionalidade CorDapp personalizada.

Conclusão

Isso nos leva ao final do nosso tutorial Corda. Aqui, olhamos para o Corda e tentamos ver um IoU CorDapp. Discutimos suas diferentes seções usando o treinamento de modelo disponível no repositório Corda GitHub.

Nosso foco é começar com Corda sem tentar explicar tudo o que Corda oferece. Para isso, você sempre pode usar a documentação do Corda. Também temos um próximo curso no tutorial de desenvolvimento do Corda. Você certamente deve dar uma olhada se quiser precisar de um guia de desenvolvimento completo.