Escolar Documentos
Profissional Documentos
Cultura Documentos
Jauberth Abijaude Henrique Serra Rita Barreto Aprígio Bezerra Péricles Sobreira Fabíola Greve
jauberth@uesc.br haserra.cic@uesc.br rita.barretto@ufba.br aalbezerra@uesc.br pericles.delimasobreira@uqo.ca fabiola@ufba.br
Introdução
1
17/06/2021
AUTORES
Jauberth Weyll Abijaude Aprígio Bezerra
Doutorando em Ciência Universidade Autônoma de
da Computação – UFBA Barcelona – Espanha
Professor UESC Professor UESC
Péricles Sobreira
Doutor em Ciência da
Henrique Serra
Computação pela Université
Graduando em Ciência da
Grenoble Alpes, França
Computação – UESC
Professor University of Quebec at
Bolsista de IC
Outaouais e Granby College
Fabíola Greve
Rita Barretto Doutora em Informática pela
Doutoranda em Ciência da Université Rennes I e Laboratórios
Computação – UFBA IRISA-INRIA, França
Professora UFBA
INTRODUÇÃO
2
17/06/2021
INTRODUÇÃO
• Nosso objetivo é auxiliar no desenvolvimento das competências para criar DApps com
foco na plataforma Ethereum;
• Vamos apresentar neste seção:
• Blockchain;
• IoT;
• Contratos Inteligentes;
• Blockchain e IoT;
• DApps
Simpósio Brasileiro de computação Aplicada à Saúde - Minicurso Internet das coisas, blockchain e contratos inteligentes aplicados à saúde 5
HISTÓRICO BLOCKCHAIN
3
17/06/2021
Rede P2P
Máquina de Estados
Cadeia de blocos
7
Descentralização;
Disponibilidade e integridade;
Transparência e Auditabilidade;
Desintermediação;
Cooperação e Incentivos;
4
17/06/2021
TIPOS DE BLOCKCHAIN
PÚBLICA PRIVADA
• Não permissionada ou de acesso aberto; • Permissionada ou federada;
• Acesso anônimo; • Acesso autenticado;
• Sem confiança mútua. • Ambientes coorporativos.
ARQUITETURA
BLOCKCHAIN
10
10
5
17/06/2021
IOT
Extrair conhecimentos
Processar algoritmos e
disparar capturas
ZigBee, LoraWan,
Wi-fi, Bluetooth
Identificação, conjunto
de sensores
Equipamentos físicos
11
CONTRATOS INTELIGENTES
• CIs são simplesmente • Eles são imutáveis, por que • São determinísticos, pois o
programas de computador. uma vez implementado em resultado de sua execução é
A palavra contrato não uma rede Ethereum, o sempre o mesmo para
tem significado legal neste código não pode ser todos os que o executam,
contexto. alterado nem substituído. conservando-se o contexto
no momento da execução.
12
12
6
17/06/2021
API’s de IoT
Integração
Consenso
Compartilhamento
Armazenamento
BLOCKCHAIN Bicoin, Ethereum,
E IOT Hyperledger
Similar a Camada
de rede da
Blockchain
Mesma camada
da IoT
13
13
DAPPS
Transparência
Resistência
14
14
7
17/06/2021
PLATAFORMA ETHEREUM E
CONTRATOS INTELIGENTES
15
15
PLATAFORMA ETHEREUM E
CONTRATOS INTELIGENTES
• Plataforma Ethereum
• Redes Ethereum
• Transações
• Consenso
• Contratos Inteligentes
Simpósio Brasileiro de computação Aplicada à Saúde - Minicurso Internet das coisas, blockchain e contratos inteligentes aplicados à saúde 16
16
8
17/06/2021
REDE ETHEREUM
Rede Ethereum
Características
Usada para transferência de dinheiro digital
Existe mais de uma rede Ethereum
Executa programas chamados de smart contracts
Cada nó é uma máquina que possui um cliente Ethereum rodando
Qualquer um pode rodar um nó – associação de mineradores
Cada nó pode conter uma cópia completa da blockchain
17
17
Estrutura de dados –
Ethereum Virtual Machine (EVM) Armazenado em cada nó
– Máquina de estado que (Google’s LevelDB). Contém Algoritmo de Consenso –
COMPONENTES executa os bytecodes gerados
na compilação dos smart
transações e o estado do
mesmo consenso do Bitcoin
POW.
DA REDE contracts.
sistema na estrutura chamada
Merkle Patricia Tree.
ETHEREUM
Clientes Ethereum – Várias
O Ethereum atualmente usa implementações
um algoritmo PoW chamado interoperáveis. As mais
Ethash. conhecidas são Go-Ethereum
(Geth) e Parity.
18
18
9
17/06/2021
ESTÁGIOS DE DESENVOLVIMENTO
• Bloco #0 Frontier - O estágio inicial do Ethereum, durando de 30 de julho de 2015 a março de 2016.
• Bloco #200.000 Ice Age - Um hard fork para introduzir um aumento exponencial de dificuldade, preparando a transição para o
PoS.
• Bloco #1.150.000 Homestead - O segundo estágio do Ethereum, lançado em março de 2016.
• Bloco #1.192.000 DAO - Um hard fork que reembolsou as vítimas do contrato DAO hackeado e fez com que o
Ethereum e o Ethereum Classic se dividissem em dois sistemas concorrentes.
• Bloco #2.463.000 Tangerine Whistle - Uma hard fork para alterar o cálculo do gás para certas operações de E/S e para limpar
o estado acumulado de um ataque de negação de serviço (DoS) que explorou o baixo custo do gás dessas operações.
• Bloco #2.675.000 Spurious Dragon - Um hard fork para lidar com mais vetores de ataque DoS e outra limpeza de estado.
Além disso, um mecanismo de proteção contra ataques de repetição.
• Bloco #4.370.000 Byzantium - Recompensas de mineração é reduzida de 5 para 3 ETH.
• Bloco #7.280.000 Constantinople – Mudança significativa na rede, entre elas, ajustes para a implementação do
POS e ajustes no custo do gas. (2019).
• Bloco #12.244.000 Berlim - A atualização Berlim otimizou o custo do gás para certas ações de EVM e aumentou o suporte
para vários tipos de transação.
19
19
20
20
10
17/06/2021
CLIENTES ETHEREUM
21
21
22
11
17/06/2021
23
23
REDES ETHEREUM
Redes de Teste
Ropsten Rede pública de teste
0x1FA69f3Ee137fB2159bb
A852F6f29Cb53e11d733 Rede permissionada e protocolo de
Rinkeby consenso "Clique" com prova de autoridade Ethers
sem valor
Única conta, KOVAN rede permissionada e protocolo de financeiro
Todas as redes. consenso Aura com prova de autoridade
24
12
17/06/2021
METAMASK
Rede ativa
Conta ativa
• Ele fornece acesso a todas as redes da plataforma com uma
única conta.
• Instalado como extensão nos principais navegadores
• Ao instalar, você receberá 12 palavras mnemônicas (Guarde-
as sob sigilo)
• A ordem apresentada é importante
• Usadas para recuperar a sua conta
• Realizar transações usando a web3
• O procedimento para instalação do Metamask pode ser
acessado na página do curso
25
25
Campo Descrição
nonce Número de sequência, emitido pela origem, usado
para evitar a reprodução da mensagem
to Endereço para onde será enviada uma
quantidade de ether
value Quantidade de ether a ser enviada
GasPrice Valor que será pago por unidade de gas para
ESTRUTURA DA que a transação seja processada
TRANSAÇÃO GasLimit Quantidade de GAS que esta transação pode
consumir
v Peças criptográficas usadas para a validação do
r bloco.
s
Acesse https://andersbrownworth.com/ para
ver um exemplo
26
26
13
17/06/2021
NONCE
CASO 1
Piscina de Transações
nonce: 7
to: 0x1FA69f3Ee1378B1159b0A852F6f29Cb53e11d833
Rede Ethereum
value:
gasPrice: 12,3 nonce: 6
gasLimit: 30000 to: 0x1FA69f3Ee1378B1159b0A852F6f29Cb53e11d833
data: batimentos(80) value:
gasPrice: 12,3
gasLimit: 30000
nonce: 8 data: batimentos(80)
to: 0x1FA69f3Ee1378B1159b0A852F6f29Cb53e11d833
value:
gasPrice: 12,3
gasLimit: 30000
data: batimentos(80)
27
27
NONCE
CASO 2
Piscina de Transações
to: 0x1FA69f3Ee1378B1159b0A852F6f29Cb53e11d833
Rede Ethereum
value:
gasPrice: 12,3 to: 0x1FA69f3Ee1378B1159b0A852F6f29Cb53e11d833
gasLimit: 30000 value:
data: batimentos(80) gasPrice: 12,3
gasLimit: 30000
to: 0x1FA69f3Ee1378B1159b0A852F6f29Cb53e11d833 data: batimentos(80)
to: 0x1FA69f3Ee1378B1159b0A852F6f29Cb53e11d833
value:
to: 0x1FA69f3Ee1378B1159b0A852F6f29Cb53e11d833
value:
gasPrice:
to:12,3
value:0x1FA69f3Ee1378B1159b0A852F6f29Cb53e11d833
gasPrice:
gasLimit: to: 12,3
0x1FA69f3Ee1378B1159b0A852F6f29Cb53e11d833
30000
value:
gasPrice:
gasLimit: 12,3
data: bpm =30000
value:
80 12,3
gasPrice:
gasLimit:
data: bpm =30000
80 12,3
gasPrice:
data: bpm =30000
gasLimit: 80
gasLimit:
data: bpm =30000
80
data: batimentos(80)
28
28
14
17/06/2021
DATA E VALUE
nonce: 7 nonce: 7
to: 0x1FA69f3Ee1378B1159b0A852F6f29Cb53e11d833 to: 0x1FA69f3Ee1378B1159b0A852F6f29Cb53e11d833
value: value:
gasPrice: 12,3 gasPrice: 12,3
gasLimit: 30000 gasLimit: 30000
data: data: batimentos(80)
29
29
GASPRICE X GASLIMIT
30
30
15
17/06/2021
31
31
32
32
16
17/06/2021
CONTRATOS INTELIGENTES
Rede Principal
Realizar outra implementação
0x1FA69f3Ee13 Ropsten
Endereço da 7fB2159bbA852
Conta F6f29Cb53e11d Conta Conta Conta
Rinkeby
733 Contrato Contrato Contrato
Chave KOVAN
Pública
METAMASK Instanciar
Chave novo contrato
Privada
33
33
TIPOS DE
DADOS
34
34
17
17/06/2021
LINGUAGEM SOLIDITY
• Quando criamos uma transação e a enviamos para a rede, algumas informações podem ser encapsuladas na mensagem.
Estas opções são pré-definidas pelo Solidity e agrupadas em 3 categorias:
35
35
• O saldo do endereço, em • Transfere o valor (em wei) • Semelhante ao transfer, ele • pode construir uma
wei. para este endereço. retorna falso em caso de chamada de mensagem
erro. arbitrária com uma carga
de dados.
36
36
18
17/06/2021
DECLARAÇÃO DE FUNÇÕES
37
37
Construtoras
Modificadoras
Autodestrutivas
38
38
19
17/06/2021
https://remix.ethereum.org/
39
39
INBOX.SOL
Declara o construtor
40
40
20
17/06/2021
41
41
AMBIENTE DE DESENVOLVIMENTO
42
42
21
17/06/2021
PÁGINA DO
MINICURSO
• https://github.com/lifuesc/minic
urso-blockchain
• Códigos, instruções e material
complementar
• Sempre em atualização
43
43
solc
CONFIGURAÇÃO
DE AMBIENTE truffle-
LOC AL hdwallet- mocha
provider:
Node.js
ganache-
web3
cli
44
44
22
17/06/2021
ACIONANDO
UM NÓ
45
45
46
46
23
17/06/2021
Simpósio Brasileiro de computação Aplicada à Saúde - Minicurso Internet das coisas, blockchain e contratos inteligentes aplicados à saúde
47
47
1 1
0 10
01
1 10
01
01
01
00
11 Integridade
Não repudiação
Confidencialidade
Disponibilidade
48
48
24
17/06/2021
INTEROPERABILIDADE E
COMPARTILHAMENTO DE DADOS
Armazenamento centralizado
Diferenças de padrões entre sistemas
Legislação de proteção de dados
Ausência de IdenVficador comum
49
MOBILIDADE
50
50
25
17/06/2021
Latência
Vazão
Consumo energético
DESAFIOS
• Para blockchains que empregam o protocolo PoW, é preciso ponderar o
TÉCNICOS alto consumo energético durante o processo de mineração dos blocos
Centralização
Privacidade
51
PROTOCOLOS
DE
CONSENSO
52
52
26
17/06/2021
• Cada nó da rede precisa resolver um desafio computacional para poder propor à rede um bloco de transações
• Dois princípios básicos: a regra da cadeia mais longa e a regra de incentivo
53
53
• Considera a porcentagem do número total de moedas (ou recursos) que um nó envolvido na competição detém, e
eventualmente considera o tempo que o nó leva com o montante de moedas (ou recursos) para estabelecer uma
porcentagem de direito de participação no consenso.
Patel 2019
54
54
27
17/06/2021
• Pertencem a uma classe que conseguem obter um acordo em um sistema, onde os processadores podem falhar de
forma arbitrária, denominado Problema Geral Bizantino, descrito por [Lamport 1982]
• Foi o primeiro algoritmo prático a tolerar falhas bizantinas e adaptou-se para ser usado em ambientes assíncronos
• O BFT-Smart é oferecido pelo Hyperledger Fabric como camada de acordo
• Estrutura para gerenciar e • Usa o Hyperledger Fabric • Armazenamento • Permite que o paciente
compartilhar dados para para resolver problemas distribuído para registros forneça aos profissionais
atendimento a pacientes de interoperabilidade, eletrônicos de saúde e de saúde acesso aos
com câncer conteúdo, estrutura e informações de saúde registros e exames
consolidação de log protegidas médicos de forma
através do livro razão e auditável, transparente e
contratos inteligentes, segura empregando
padronizando o conteúdo MedTokens .
56
56
60
28
17/06/2021
Monitoramento confiável
Acesso seguro a registros
Pagamentos automatizados de serviços de atendimento
pessoais de saúde
a idosos
• Contratos inteligentes • A blockchain pode ser • Pacientes idosos podem
podem registrar e utilizada como plataforma permanecer em suas
autorizar usuários a para a realização de residências e serem
acessarem informações, pagamentos no setor da monitorados
em conformidade com a tele saúde, através da remotamente por
política de consentimento transferência direta de biossensores acoplados
de seus proprietários tokens sem intermediários em seus corpos [Kazmi e
[Shahnaz e outros 2019, [Albeyatti 2018, Halamka outros 2019, Salah e
Guo e outros 2019]. e outros 2019]. outros 2020].
61
61
62
62
29
17/06/2021
63
63
REDE NACIONAL
DE DADOS EM
SAÚDE
64
64
30
17/06/2021
DESENVOLVIMENTO DE
CONTRATOS INTELIGENTES
65
65
DESENVOLVIMENTO DE CONTRATOS
INTELIGENTES
Simpósio Brasileiro de computação Aplicada à Saúde - Minicurso Internet das coisas, blockchain e contratos inteligentes aplicados à saúde 66
66
31
17/06/2021
CONTRATO VACINA
-70o -73o
-78o
-82o -71o
-77o
67
67
Contrato
Vacina
Funções
Verificar se o
Prepara a Retorna gerente
instância do Insere dados dados da Destrói o
da viagem dispara o contrato
contrato viagem
sorteio
68
68
32
17/06/2021
Structs Variáveis
• Registros • owner
• perdaVacina • nome
• origem
• destino
• duracao
• condicao
• tempMax
• tempMin
69
69
VACINA.SOL E COMPILE.JS
70
70
33
17/06/2021
VACINA.SOL E COMPILE.JS
71
71
DEPLOY.JS
72
72
34
17/06/2021
Escrever o
contrato
Escrever a
Compilar
aplicação
Pegar o
endereço da Testar
implementação
Criar um
Implementar endereço no
nó infura 73
73
DESENVOLVIMENTO DE DAPPS
74
74
35
17/06/2021
DAPP VACINA
Rede IoT
getRegistro()
insertRegistro(-72,
Brasil, 16/10/2021 Usuário
20:00)
Rede Ethereum
75
75
CONTRATO DE LOTERIA
76
76
36
17/06/2021
ARQUIVOS
DO
MIDDLEWARE
77
77
src/contracts/vacina.contrats.js
src/app.js
src/index.js
• arquivo principal
78
78
37
17/06/2021
79
79
• Solidity
• Front-ent
• Back-end
Curso de Extensão
80
80
38
17/06/2021
81
81
CryptoZombies
Ethernaut
MAIS RECURSOS
Vyper Tutorials
Ethereum Studio
82
82
39
17/06/2021
DESAFIOS E PERSPECTIVAS
83
83
DESAFIOS E PERSPECTIVAS
• Os Desafios organizacionais para a adoção de blockchain esbarra nos sistemas tradicionais de telemedicina
• No entanto, a falta de consciência, imaturidade da tecnologia e indisponibilidade de padrões de segurança e privacidade
impedem os atores de empregar plenamente os benefícios da blockchain, inclusive os relacionados aos incentivos
monetários para as organizações participantes [Kolan e outros ].
• Os contratos inteligentes ainda possuem riscos de adulteração e segurança e isto pode afetar significativamente o
histórico médico de um paciente, como um ataque de vulnerabilidade [Liu e outros 2018];
• O emprego de sidechains ou uma camada na névoa pode ajudar a minimizar a taxa de transação [Debe e outros 2019].
• Construir plataformas de blockchain interoperáveis é desafiador devido a vários problemas, como diferenças nas
linguagens suportadas e protocolos de consenso das plataformas de blockchain [Herlihy 2018].
84
84
40
17/06/2021
PERGUNTAS
Jauberth Abijaude
jauberth@uesc.br
Henrique Serra
haserra.cic@uesc.br
85
85
41