DEV Community

Cover image for Corda Blockchain | Desafio R3 — Pensamentos sobre minha metodologia de aprender algo novo (Introdução)
Arthur Fonseca
Arthur Fonseca

Posted on • Updated on

Corda Blockchain | Desafio R3 — Pensamentos sobre minha metodologia de aprender algo novo (Introdução)

“Sem dúvidas o conhecimento das técnicas e dos truques de publicidade pode ser muito útil, possivelmente essencial.

Para falar a verdade, as pessoas procuram algo novo, mas às vezes, algo novo para copiar.

Para ser original, busque sua inspiração em fontes inesperadas.” Paul Arden

Essa é uma nova série de posts sobre Corda Blockchain, uma plataforma open-source de blockchain para negócios.

Se você espera encontrar nesses posts a resposta do porque usar Blockchain, gostaria de desapontar você um pouco :).

Meu ponto aqui não é nem falar que ele não deve ser usado, mas que ainda não consegui abstrair muito bem todos os conceitos envolvidos, de tal forma a enxergar explicitamente cenários em que esse pattern se aplica.

Não falo em nome do Corda ou R3 ou sou algum tipo de defensor de Blockchain (pelo menos não até o momento da escrita desse post), sendo assim, imagens como essas podem aparecer:

Alt Text

Para ser mais justo, imagens como essas também podem aparecer:

Alt Text

O ponto aqui é que eu não tenho um conceito totalmente definido sobre Blockchain. Estou em um momento, como o explicado na série de posts sobre o Paul Arden e liderança técnica, em que falo sobre experimentar coisas novas, mesmo não gostando (inicialmente).


Corda Blockchain, o que fazem, onde vivem, o que comem, hoje no…

Apesar de ouvir bastante sobre Blockchain nunca tive curiosidade de adentrar a esse mundo.

O “empurrão” que eu precisava era um desafio da FIAP junto à R3.

O trabalho era para ser entregue como parte da nota da matéria, porém, uma palavra mágica fez toda a diferença: COMPETIÇÃO!!!

A implementação de uma Prova de Conceito (PoC) para exemplificar os pontos definidos.

Alt Text

Nossas soluções estaríam concorrendo com outras, o que aflorou o meu instinto de querer participar!


Sobre Blockchain

De acordo com o Gartner em seu relatório de Hype Cycle sobre Blockchain:

Banking and investment services industries continue to experience significant levels of interest from innovators seeking to improve decades old operations and processes, however only 7.6% of respondents to the CIO Survey suggested that blockchain is a game-changing technology. That said, nearly 18% of banking and investment services CIOs said they have adopted or will adopt some form of blockchain technology within the next 12 months and nearly another 15% within two years.

“We see blockchain in several key areas in banking and investments services, primarily focused on permissioned ledgers,” said Mr. Furlonger. “We also expect continued developments in the creation and acceptance of digital tokens. However considerable work needs to be completed in nontechnology-related activities such as standards, regulatory frameworks and organization structures for blockchain capabilities to reach the Plateau of Productivity — the point at which mainstream adoption takes off, in this industry.

Uma das bases do Blockchain é a descentralização das informações, o que torna as transações mais seguras. Com isso, não há um ponto único de falha no sistema. Em um caso em que um nó deixa a rede, como os outros nós já possuem uma cópia exata da informação compartilhada, os dados não são perdidos.


Sobre Corda Blockchain

Em seu site a 101 Blockchains define o Corda como:

O Corda é um software de registro distribuída que processa e registra dados para promover um ambiente de rede descentralizado. Essencialmente o Corda é voltado para os setores financeiros. Sua arquitetura Corda R3 suporta principalmente contratos inteligentes que se assemelham à definição de Braine, Bakshi e Clack.

Richard Gendal Brown, CTO da R3 ainda menciona:

“We made some unexpected bets three and a half years ago. We challenged the idea that a blockchain should send data to all parties, that people would be willing to write their applications in a new untested language, and that you should throw away existing technology. Instead, we made a choice to build Corda on the JVM and we said the world needs a new platform. We did something unexpected by open sourcing Corda. These things that were surprising at the time have paid themselves over many times.”

Alt Text

Quando ouvi as palavras competição e… “você disse JVM!?” fiquei mais pilhado ainda…

Na AIS Digital atuo como líder da chapter de JVM, e assuntos como esse sempre são bem vindos para discussão… inclusive estou apenas escrevendo o que já irei agendar de levar para lá em um de nossos encontros.


O Desafio

O desafio proposto consistia em escolher um dos segmentos: finanças, seguros, saúde ou energia. Após a documentação de uma série de etapas, o seria necessário o desenvolvimento em Java ou Kotlin do Cordapp.

Pensei: Já trabalho com Java desde 2009, com Kotlin há uns 3 anos, só bora…

Buscando pelos repositórios do próprio Corda não foi complicado encontrar exemplos de códigos em Java e códigos em Kotlin.

Olhando os repositórios, descubro que as implementações estavam em Gradle.

Alt Text

Agora que eu não podia perder esse trabalho mesmo…


Sobre o problema e nossa solução

Nosso time, eu, Alexandre Santos e Conrado Basso, precisávamos de um nome para a competição, acabamos virando os Nameless.

Nossa solução atacou um problema sobre corretoras financeiras ao se negociar taxas. Resumindo o problema, poderíamos dizer que:

A negociação das taxas cambiais e os dados que compactuam uma operação cambial entre instituições financeiras se dá ainda hoje por telefone, email ou outros meios de comunicação, o problema deste modelo, é quando a corretora entende errado os dados passados pelo banco e emite uma operação cambial que não compactuam com as condições estipuladas pelo banco, sendo assim o banco pode não aceitar a operação e a corretora cambial deverá fazer esta operação novamente.

Alt Text

Alt Text

A PoC do nosso trabalho implementado pode ser encontrado no Github, e sobre ele gostaria de compartilhar com vocês alguns pontos sobre Gradle, Lint, testes de mutação, API First, dentre outras coisas…

Aguardo vocês nos próximos posts


Esse post faz parte de uma série sobre Corda Blockchain.

A série completa é:

  • Corda Blockchain | Desafio R3 — Pensamentos sobre minha metodologia de aprender algo novo (Introdução)
  • Corda Blockchain | Desafio R3 — Pensamentos sobre minha metodologia de aprender algo novo (Parte 1: Sobre Gradle)
  • Corda Blockchain | Desafio R3 — Pensamentos sobre minha metodologia de aprender algo novo (Parte 2: Sobre Documentação)
  • Corda Blockchain | Desafio R3 — Pensamentos sobre minha metodologia de aprender algo novo (Parte 3: Sobre Lint) [não publicado]
  • Corda Blockchain | Desafio R3 — Pensamentos sobre minha metodologia de aprender algo novo (Parte 4: Sobre Versões Desatualizadas de dependências) [não publicado]
  • Corda Blockchain | Desafio R3 — Pensamentos sobre minha metodologia de aprender algo novo (Parte 5: Sobre Vulnerabilidades de dependências) [não publicado]
  • Corda Blockchain | Desafio R3 — Pensamentos sobre minha metodologia de aprender algo novo (Parte 6: Sobre Github flow) [não publicado]
  • Corda Blockchain | Desafio R3 — Pensamentos sobre minha metodologia de aprender algo novo (Parte 7: Sobre desenvolvimento em Corda) [não publicado]
  • Corda Blockchain | Desafio R3 — Pensamentos sobre minha metodologia de aprender algo novo (Parte 8: Sobre testes em Corda) [não publicado]
  • Corda Blockchain | Desafio R3 — Pensamentos sobre minha metodologia de aprender algo novo (Parte 9: Sobre AssertJ) [não publicado]
  • Corda Blockchain | Desafio R3 — Pensamentos sobre minha metodologia de aprender algo novo (Parte 10: Sobre testes de arquitetura) [não publicado]
  • Corda Blockchain | Desafio R3 — Pensamentos sobre minha metodologia de aprender algo novo (Parte 11: Sobre testes de mutantes) [não publicado]
  • Corda Blockchain | Desafio R3 — Pensamentos sobre minha metodologia de aprender algo novo (Parte 12: Sobre JaCoCo) [não publicado]
  • Corda Blockchain | Desafio R3 — Pensamentos sobre minha metodologia de aprender algo novo (Parte 13: Sobre SonarQube) [não publicado]
  • Corda Blockchain | Desafio R3 — Pensamentos sobre minha metodologia de aprender algo novo (Parte 14: Sobre API First e OpenAPI 3) [não publicado]
  • Corda Blockchain | Desafio R3 — Pensamentos sobre minha metodologia de aprender algo novo (Parte 15: Sobre Springboot) [não publicado]
  • Corda Blockchain | Desafio R3 — Pensamentos sobre minha metodologia de aprender algo novo (Parte 16: Sobre Mapstruct) [não publicado]

Esse artigo foi escrito ouvindo-se Blessed By A Broken Heart

Original post published at Medium on September 14th, 2020.

Top comments (0)