SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
Meetup - Blockchain & DLT
Conceitos - DLT
!
▪ Nós {participantes, Notaries, Oracle, CordApp, Doorman, Network Map} !
▪ Ledger {banco relacional, State, Vault, IOUs, shared facts}!
▪ Smart Contract {legal prose, business code, Java, Kotlin}!
▪ Transações {UTXO, validity, Commands, Attachment, Time Windows}!
▪ Flows {ponto a ponto, subflows, orquestração}!
▪ Consenso {RAFT, BFT, validity, uniqueness}
BANCO A BANCO B
1
7
• Não existe um “ledger central”
• Cada nó da rede mantém um vault de
facts.
• Facts são como linhas na tabela.
• Todos os nós armazenam “shared fact”
identico as cópias.
• Nem todos os facts no ledger serão
compartilhados com outros nós.
• O quadrado preto "11" é um exemplo de
um fato que não é compartilhado com
nenhum dos nós.
6
5
Id Fact
1 “Much consensus”
7 “So bilateral”
11 “Wow ledger”
Id Fact
1 “Much consensus”
6 “Very fact”
7 “So bilateral”
5 “amaze network”
11
Ledger
• O IOUState é um exemplo de um State que basicamente
possui um remetente, um destinatário e um valor
!
• Em um IOUState, os participantes – as partes envolvidas
são os remetentes e os destinatários.
IOU
From: Bank A
To: Bank B
Value: 100
PARTICIPANTS
Bank A
Bank B
IOU Contract
REF
State
Transações
• Uma nova transação IOU válida deve ter:
1. Nenhum inputs.
2. Um output.
3. Assinatura para ambos o remetente e o destinatario.
SIGBank A SIGBank B
IOU State
TRANSACTION
1
2
3
Contratos
CASH1
CASH0
CASH CONTRACT
REFERENCES
REFERENCES
VALIDATES
!
• A plataforma Corda usará todo o
código do contrato referenciado
para verificar uma transação
(proposta)
• A função de verificação está definida
no código do contrato.
!
fun verify(tx: Transaction): Unit In Kotlin, Unit is a
type with only one
value: the Unit
object. This type
corresponds to
the void type in
Java/C.
Flows
O fluxo de negócios entre duas partes
• Este é o fluxo que Banco A e o Banco B usam para concordar com
um IOU, em Corda pode ser chamado como um sub-fluxo.
INITIATOR
(Bank A)
SIGN TX
SEND(TX + SIG)
GET DATA
FROM
INTERNAL
SYSTEM
INSPECT
AND
VERIFY TX
SEND(TX + SIG)
CREATE TX
RESPONDER
(Bank B)
SIGN TX
INSPECT
AND
VERIFY TX
COMMIT TX
COMMIT TX
FLOW SUSPENDED AND
CHECKPOINTED
END
END
Flows
// Banco A !
tx = new Tx()!
peer = “Bank_B”!
sig = sign(tx)!
payload = (tx, sig)!
res = sendAndReceive(payload, peer)!
check(res.sigB)!
verify(res.tx)!
commit(res.tx)!
!
// Banco B
peer = “Bank_A”!
Res = receive(peer)
check(res.sigA)!
verify(res.tx)
sigB = sign(res.tx)
payload = (res.tx, sigB)!
send(payload, peer)
commit(res.tx)
Ao chamar a rede, a thread
do Banco A é suspensa e
serializada em disco (ou
marcada). Se o nó do Banco
A falhar ou reiniciar, ela pode
desserizar a therad e continuar
o fluxo quando o nó for
reiniciado
Consenso
Verification consensus
No Corda temos dois tipos de consenso:
Uniqueness consensus
• envolve a certeza de que uma
transação (e todas as suas
dependências) é assinada por
todos os nós requeridos e satisfaz
as restrições no código do
contrato
• RAFT / BFT / (Custom) • evita “double-spends”
• envolve a certeza de que os
outputState criados em uma
transação são os sucessores únicos
dos estados de inputState
referenciados por essa transação
Node Internals
Designing for Corda
CorDapp
FLOW
1. Build tx
IN2 OUT2
OUT1
IN1
2. Verify & sign
3. Gather sigs
4. Finalize
STATES CONTRACTS
APIs
NODE
EXTERNAL INTERNAL INTERNAL EXTERNAL
JDBC
EXTERNAL DB
NODE B
!
NODE Z
!
NOTARY
AMQP
…
…
RPC CALL
API
HTTP REQUEST
CordaRPCOps
startFlowDynamic()
vaultAndUpdates()
verifiedTransactions()
…
…
RPC CALL
RPC CALL
API
HTTP RESPONSE
ServiceHub
VAULT
KEY-VALUE STORE
TXS …
…
MESSAGING
Corda
Exemplo de um cenário
▪ Corda realizando transferência de dinheiro
entre os bancos…
!
NODE A
NOTARY
NODE
[Validity;Uniqueness]
DISTRIBUTED NOTARY
SERVICE
!
NODE B
!
NODE C
NODE D
Name: Banco A
Address: 192.168.0.3:10005
Public key: 5h54h5wv632vhy55
Name: Banco D
Address: 192.168.0.4:10005
Public key: 5hw03nnk43jknkj4n
Name: Banco C
Address: 192.168.0.2:10005
Public key: t453wv84bvt3cj5w3h
DOORMAN SERVICE
CERTIFICATE SIGNING
RAFT ou BFT
CORDA NETWORK - TRANSFERÊNCIA ENTRE BANCOS
NETWORK MAP SERVICE
ORACLE NODE
!
NODE A
NOTARY
NODE
[Validity;Uniqueness]
DISTRIBUTED NOTARY
SERVICE
!
NODE B
!
NODE C
NODE D
DOORMAN SERVICE
CERTIFICATE SIGNING
RAFT ou BFT
NETWORK MAP SERVICE
1. A chamado através de uma
API é feita ao Banco A com a
intenção de realizar uma
transferência de dinheiro para
o Banco D.
2. O Banco A inicia um fluxo,
criando uma nova proposta de
transação e assina.
ORACLE NODE
CORDA NETWORK - TRANSFERÊNCIA ENTRE BANCOS
!
NODE A
NOTARY
NODE
[Validity;Uniqueness]
DISTRIBUTED NOTARY
SERVICE
!
NODE B
!
NODE C
NODE D
DOORMAN SERVICE
CERTIFICATE SIGNING
RAFT ou BFT
NETWORK MAP SERVICE
3. Encaminha para o nó
destinatário Banco D
ORACLE NODE
CORDA NETWORK - TRANSFERÊNCIA ENTRE BANCOS
!
NODE A
NOTARY
NODE
[Validity;Uniqueness]
DISTRIBUTED NOTARY
SERVICE
!
NODE B
!
NODE C
NODE D
DOORMAN SERVICE
CERTIFICATE SIGNING
RAFT ou BFT
NETWORK MAP SERVICE
4. Banco D inspeciona a
proposta do Banco A, checa o
contrato e então assina.
ORACLE NODE
CORDA NETWORK - TRANSFERÊNCIA ENTRE BANCOS
!
NODE A
NOTARY
NODE
[Validity;Uniqueness]
DISTRIBUTED NOTARY
SERVICE
!
NODE B
!
NODE C
NODE D
DOORMAN SERVICE
CERTIFICATE SIGNING
RAFT ou BFT
NETWORK MAP SERVICE
5 Banco D envia de volta a
transação e sua assinatura
para o Banco A.
ORACLE NODE
CORDA NETWORK - TRANSFERÊNCIA ENTRE BANCOS
!
NODE A
NOTARY
NODE
[Validity;Uniqueness]
DISTRIBUTED NOTARY
SERVICE
!
NODE B
!
NODE C
NODE D
DOORMAN SERVICE
CERTIFICATE SIGNING
RAFT ou BFT
NETWORK MAP SERVICE
6. Banco A verifica a transação
e checa a assinatura do Banco
D.
ORACLE NODE
CORDA NETWORK - TRANSFERÊNCIA ENTRE BANCOS
Os nós não envolvidos não recebem
nenhuma das transações do Banco A ou
Banco D
!
NODE A
NOTARY
NODE
[Validity;Uniqueness]
DISTRIBUTED NOTARY
SERVICE
!
NODE B
!
NODE C
NODE D
DOORMAN SERVICE
CERTIFICATE SIGNING
RAFT ou BFT
NETWORK MAP SERVICE
8. Notary pode validar a transação através do
consenso (RAFT ou BFT) ou uniqueness evitando o
“double spending”.
ORACLE NODE
CORDA NETWORK - TRANSFERÊNCIA ENTRE BANCOS
!
NODE A
NOTARY
NODE
[Validity;Uniqueness]
DISTRIBUTED NOTARY
SERVICE
!
NODE B
!
NODE C
NODE D
DOORMAN SERVICE
CERTIFICATE SIGNING
RAFT ou BFT
NETWORK MAP SERVICE
9. Banco A recebe do Notary a transação validada, E
atualiza os ledgers de cada nó envolvido nessa
transação.
ORACLE NODE
CORDA NETWORK - TRANSFERÊNCIA ENTRE BANCOS
DEMO Bank of Corda TransferWorld
https://github.com/arthurmsouza/transferworld-cordapp
Obrigado!
https://vimeo.com/r3video/
https://vimeo.com/219983124
https://docs.corda.net
https://github.com/arthurmsouza/transferworld-cordapp
http://linkedin.com/in/arthurmirandasouza

Mais conteúdo relacionado

Semelhante a corda_apresentacao_meetup.pdf

Moedas virtuais Matheus Pavanetti
Moedas virtuais   Matheus PavanettiMoedas virtuais   Matheus Pavanetti
Moedas virtuais Matheus Pavanetti
Matheus Pavanetti
 

Semelhante a corda_apresentacao_meetup.pdf (20)

Moedas virtuais Matheus Pavanetti
Moedas virtuais   Matheus PavanettiMoedas virtuais   Matheus Pavanetti
Moedas virtuais Matheus Pavanetti
 
Blockchain: registros eletrônicos distribuídos, imutáveis e seguros
Blockchain: registros eletrônicos distribuídos, imutáveis e segurosBlockchain: registros eletrônicos distribuídos, imutáveis e seguros
Blockchain: registros eletrônicos distribuídos, imutáveis e seguros
 
Blockchain e Aplicações Descentralizadas - Fev/2017
Blockchain e Aplicações Descentralizadas - Fev/2017Blockchain e Aplicações Descentralizadas - Fev/2017
Blockchain e Aplicações Descentralizadas - Fev/2017
 
Blockchain e Aplicações Descentralizadas
Blockchain e Aplicações DescentralizadasBlockchain e Aplicações Descentralizadas
Blockchain e Aplicações Descentralizadas
 
Blockchain - O Futuro da Economia P2P
Blockchain - O Futuro da Economia P2PBlockchain - O Futuro da Economia P2P
Blockchain - O Futuro da Economia P2P
 
O que é Blockchain 2016
O que é Blockchain 2016O que é Blockchain 2016
O que é Blockchain 2016
 
Blockchain e registro eletrônico imobiliário no Brasil
Blockchain e registro eletrônico imobiliário no BrasilBlockchain e registro eletrônico imobiliário no Brasil
Blockchain e registro eletrônico imobiliário no Brasil
 
TechLaw Summit 2018 - Blockchain, o futuro da economia P2P
TechLaw Summit 2018 - Blockchain, o futuro da economia P2PTechLaw Summit 2018 - Blockchain, o futuro da economia P2P
TechLaw Summit 2018 - Blockchain, o futuro da economia P2P
 
Bitcoin e blockchain. Afinal, é uma moeda ou um ativo?
Bitcoin e blockchain. Afinal, é uma moeda ou um ativo?Bitcoin e blockchain. Afinal, é uma moeda ou um ativo?
Bitcoin e blockchain. Afinal, é uma moeda ou um ativo?
 
Guia Básico - RaiBlocks (Nano):
Guia Básico - RaiBlocks (Nano):Guia Básico - RaiBlocks (Nano):
Guia Básico - RaiBlocks (Nano):
 
Blockchain - Uma breve explicação
Blockchain - Uma breve explicaçãoBlockchain - Uma breve explicação
Blockchain - Uma breve explicação
 
Blockchain - Uma breve explicação
Blockchain - Uma breve explicaçãoBlockchain - Uma breve explicação
Blockchain - Uma breve explicação
 
Fundamentos de Blockchain
Fundamentos de BlockchainFundamentos de Blockchain
Fundamentos de Blockchain
 
Tecnologias de blockchain
Tecnologias de blockchainTecnologias de blockchain
Tecnologias de blockchain
 
Dossie halving-ripio
Dossie halving-ripioDossie halving-ripio
Dossie halving-ripio
 
Workshop COMJOVEM - Carlos Rischioto
Workshop COMJOVEM - Carlos RischiotoWorkshop COMJOVEM - Carlos Rischioto
Workshop COMJOVEM - Carlos Rischioto
 
Construindo a NuConta
Construindo a NuContaConstruindo a NuConta
Construindo a NuConta
 
140916 Conferência Blockchain RTM - Maurício Alban-Salas - Itaú Unibanco
140916 Conferência Blockchain RTM - Maurício Alban-Salas - Itaú Unibanco140916 Conferência Blockchain RTM - Maurício Alban-Salas - Itaú Unibanco
140916 Conferência Blockchain RTM - Maurício Alban-Salas - Itaú Unibanco
 
Criando uma blockchain com PHP
Criando uma blockchain com PHPCriando uma blockchain com PHP
Criando uma blockchain com PHP
 
Blockchains - Muito Além do Bitcoin
Blockchains - Muito Além do BitcoinBlockchains - Muito Além do Bitcoin
Blockchains - Muito Além do Bitcoin
 

Mais de Arthur Souza (7)

UNIT 2022 Metro.pptx
UNIT 2022 Metro.pptxUNIT 2022 Metro.pptx
UNIT 2022 Metro.pptx
 
FIA_ONLINE_MBA_BLOCKCHAIN_AULA02.pptx
FIA_ONLINE_MBA_BLOCKCHAIN_AULA02.pptxFIA_ONLINE_MBA_BLOCKCHAIN_AULA02.pptx
FIA_ONLINE_MBA_BLOCKCHAIN_AULA02.pptx
 
FIA_ONLINE_MBA_BLOCKCHAIN_AULA01.pptx
FIA_ONLINE_MBA_BLOCKCHAIN_AULA01.pptxFIA_ONLINE_MBA_BLOCKCHAIN_AULA01.pptx
FIA_ONLINE_MBA_BLOCKCHAIN_AULA01.pptx
 
Hackathon Blockchain Guide.docx
Hackathon  Blockchain Guide.docxHackathon  Blockchain Guide.docx
Hackathon Blockchain Guide.docx
 
AWS Summit 2019 - Abstract.pdf
AWS Summit 2019 - Abstract.pdfAWS Summit 2019 - Abstract.pdf
AWS Summit 2019 - Abstract.pdf
 
Meetup blockchain oportunidade_carreira.pptx
Meetup blockchain oportunidade_carreira.pptxMeetup blockchain oportunidade_carreira.pptx
Meetup blockchain oportunidade_carreira.pptx
 
Big data - Uma visão geral da coisa...
Big data - Uma visão geral da coisa...Big data - Uma visão geral da coisa...
Big data - Uma visão geral da coisa...
 

corda_apresentacao_meetup.pdf

  • 2. Conceitos - DLT ! ▪ Nós {participantes, Notaries, Oracle, CordApp, Doorman, Network Map} ! ▪ Ledger {banco relacional, State, Vault, IOUs, shared facts}! ▪ Smart Contract {legal prose, business code, Java, Kotlin}! ▪ Transações {UTXO, validity, Commands, Attachment, Time Windows}! ▪ Flows {ponto a ponto, subflows, orquestração}! ▪ Consenso {RAFT, BFT, validity, uniqueness}
  • 3. BANCO A BANCO B 1 7 • Não existe um “ledger central” • Cada nó da rede mantém um vault de facts. • Facts são como linhas na tabela. • Todos os nós armazenam “shared fact” identico as cópias. • Nem todos os facts no ledger serão compartilhados com outros nós. • O quadrado preto "11" é um exemplo de um fato que não é compartilhado com nenhum dos nós. 6 5 Id Fact 1 “Much consensus” 7 “So bilateral” 11 “Wow ledger” Id Fact 1 “Much consensus” 6 “Very fact” 7 “So bilateral” 5 “amaze network” 11 Ledger
  • 4. • O IOUState é um exemplo de um State que basicamente possui um remetente, um destinatário e um valor ! • Em um IOUState, os participantes – as partes envolvidas são os remetentes e os destinatários. IOU From: Bank A To: Bank B Value: 100 PARTICIPANTS Bank A Bank B IOU Contract REF State
  • 5. Transações • Uma nova transação IOU válida deve ter: 1. Nenhum inputs. 2. Um output. 3. Assinatura para ambos o remetente e o destinatario. SIGBank A SIGBank B IOU State TRANSACTION 1 2 3
  • 6. Contratos CASH1 CASH0 CASH CONTRACT REFERENCES REFERENCES VALIDATES ! • A plataforma Corda usará todo o código do contrato referenciado para verificar uma transação (proposta) • A função de verificação está definida no código do contrato. ! fun verify(tx: Transaction): Unit In Kotlin, Unit is a type with only one value: the Unit object. This type corresponds to the void type in Java/C.
  • 7. Flows O fluxo de negócios entre duas partes • Este é o fluxo que Banco A e o Banco B usam para concordar com um IOU, em Corda pode ser chamado como um sub-fluxo. INITIATOR (Bank A) SIGN TX SEND(TX + SIG) GET DATA FROM INTERNAL SYSTEM INSPECT AND VERIFY TX SEND(TX + SIG) CREATE TX RESPONDER (Bank B) SIGN TX INSPECT AND VERIFY TX COMMIT TX COMMIT TX FLOW SUSPENDED AND CHECKPOINTED END END
  • 8. Flows // Banco A ! tx = new Tx()! peer = “Bank_B”! sig = sign(tx)! payload = (tx, sig)! res = sendAndReceive(payload, peer)! check(res.sigB)! verify(res.tx)! commit(res.tx)! ! // Banco B peer = “Bank_A”! Res = receive(peer) check(res.sigA)! verify(res.tx) sigB = sign(res.tx) payload = (res.tx, sigB)! send(payload, peer) commit(res.tx) Ao chamar a rede, a thread do Banco A é suspensa e serializada em disco (ou marcada). Se o nó do Banco A falhar ou reiniciar, ela pode desserizar a therad e continuar o fluxo quando o nó for reiniciado
  • 9. Consenso Verification consensus No Corda temos dois tipos de consenso: Uniqueness consensus • envolve a certeza de que uma transação (e todas as suas dependências) é assinada por todos os nós requeridos e satisfaz as restrições no código do contrato • RAFT / BFT / (Custom) • evita “double-spends” • envolve a certeza de que os outputState criados em uma transação são os sucessores únicos dos estados de inputState referenciados por essa transação
  • 10.
  • 11.
  • 12. Node Internals Designing for Corda CorDapp FLOW 1. Build tx IN2 OUT2 OUT1 IN1 2. Verify & sign 3. Gather sigs 4. Finalize STATES CONTRACTS APIs NODE EXTERNAL INTERNAL INTERNAL EXTERNAL JDBC EXTERNAL DB NODE B ! NODE Z ! NOTARY AMQP … … RPC CALL API HTTP REQUEST CordaRPCOps startFlowDynamic() vaultAndUpdates() verifiedTransactions() … … RPC CALL RPC CALL API HTTP RESPONSE ServiceHub VAULT KEY-VALUE STORE TXS … … MESSAGING Corda
  • 13. Exemplo de um cenário ▪ Corda realizando transferência de dinheiro entre os bancos…
  • 14. ! NODE A NOTARY NODE [Validity;Uniqueness] DISTRIBUTED NOTARY SERVICE ! NODE B ! NODE C NODE D Name: Banco A Address: 192.168.0.3:10005 Public key: 5h54h5wv632vhy55 Name: Banco D Address: 192.168.0.4:10005 Public key: 5hw03nnk43jknkj4n Name: Banco C Address: 192.168.0.2:10005 Public key: t453wv84bvt3cj5w3h DOORMAN SERVICE CERTIFICATE SIGNING RAFT ou BFT CORDA NETWORK - TRANSFERÊNCIA ENTRE BANCOS NETWORK MAP SERVICE ORACLE NODE
  • 15. ! NODE A NOTARY NODE [Validity;Uniqueness] DISTRIBUTED NOTARY SERVICE ! NODE B ! NODE C NODE D DOORMAN SERVICE CERTIFICATE SIGNING RAFT ou BFT NETWORK MAP SERVICE 1. A chamado através de uma API é feita ao Banco A com a intenção de realizar uma transferência de dinheiro para o Banco D. 2. O Banco A inicia um fluxo, criando uma nova proposta de transação e assina. ORACLE NODE CORDA NETWORK - TRANSFERÊNCIA ENTRE BANCOS
  • 16. ! NODE A NOTARY NODE [Validity;Uniqueness] DISTRIBUTED NOTARY SERVICE ! NODE B ! NODE C NODE D DOORMAN SERVICE CERTIFICATE SIGNING RAFT ou BFT NETWORK MAP SERVICE 3. Encaminha para o nó destinatário Banco D ORACLE NODE CORDA NETWORK - TRANSFERÊNCIA ENTRE BANCOS
  • 17. ! NODE A NOTARY NODE [Validity;Uniqueness] DISTRIBUTED NOTARY SERVICE ! NODE B ! NODE C NODE D DOORMAN SERVICE CERTIFICATE SIGNING RAFT ou BFT NETWORK MAP SERVICE 4. Banco D inspeciona a proposta do Banco A, checa o contrato e então assina. ORACLE NODE CORDA NETWORK - TRANSFERÊNCIA ENTRE BANCOS
  • 18. ! NODE A NOTARY NODE [Validity;Uniqueness] DISTRIBUTED NOTARY SERVICE ! NODE B ! NODE C NODE D DOORMAN SERVICE CERTIFICATE SIGNING RAFT ou BFT NETWORK MAP SERVICE 5 Banco D envia de volta a transação e sua assinatura para o Banco A. ORACLE NODE CORDA NETWORK - TRANSFERÊNCIA ENTRE BANCOS
  • 19. ! NODE A NOTARY NODE [Validity;Uniqueness] DISTRIBUTED NOTARY SERVICE ! NODE B ! NODE C NODE D DOORMAN SERVICE CERTIFICATE SIGNING RAFT ou BFT NETWORK MAP SERVICE 6. Banco A verifica a transação e checa a assinatura do Banco D. ORACLE NODE CORDA NETWORK - TRANSFERÊNCIA ENTRE BANCOS Os nós não envolvidos não recebem nenhuma das transações do Banco A ou Banco D
  • 20. ! NODE A NOTARY NODE [Validity;Uniqueness] DISTRIBUTED NOTARY SERVICE ! NODE B ! NODE C NODE D DOORMAN SERVICE CERTIFICATE SIGNING RAFT ou BFT NETWORK MAP SERVICE 8. Notary pode validar a transação através do consenso (RAFT ou BFT) ou uniqueness evitando o “double spending”. ORACLE NODE CORDA NETWORK - TRANSFERÊNCIA ENTRE BANCOS
  • 21. ! NODE A NOTARY NODE [Validity;Uniqueness] DISTRIBUTED NOTARY SERVICE ! NODE B ! NODE C NODE D DOORMAN SERVICE CERTIFICATE SIGNING RAFT ou BFT NETWORK MAP SERVICE 9. Banco A recebe do Notary a transação validada, E atualiza os ledgers de cada nó envolvido nessa transação. ORACLE NODE CORDA NETWORK - TRANSFERÊNCIA ENTRE BANCOS
  • 22. DEMO Bank of Corda TransferWorld https://github.com/arthurmsouza/transferworld-cordapp