Você está na página 1de 41

17/06/2021

INTERNET DAS COISAS,


BLOCKCHAIN E CONTRATOS
INTELIGENTES APLICADOS À SAÚDE

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

Apresentação dos autores

Introdução

Plataforma Ethereum e Contratos Inteligentes

Desafios de Blockchain e IoT na área de Saúde

AGENDA Pesquisas e Aplicações Recentes

Integração de de IoT, Blockchain e Sistemas Web

Como montar um curso de IoT, Blockchain e Sistemas


Web
Desafio de Pesquisa e Conclusões

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

1997 – Nick Szabo – 2008 – Bitcoin – 2013 – Ethereum – Novas aplicações e


Contratos Satoshi Nakamoto Vitalik Buterin plataformas baseadas
Inteligentes em Blockchain
CIs são uma combinação de Habilidosa combinação de Transaciona uma criptomoeda Diversas criptomoedas,
protocolos com interfaces de técnicas para dar suporte à e códigos de programação mais protocolos de consenso e
usuário para formalizar e criptomoeda bitcoin avançados aplicações
proteger relacionamentos em
redes de computadores

3
17/06/2021

COMPONENTES DE UMA BLOCKCHAIN

Rede P2P

Mensagens Blockchain Pública


Mecanismo de
Protocolos de Consenso incentivo

Máquina de Estados

Cadeia de blocos
7

Descentralização;

Disponibilidade e integridade;

Transparência e Auditabilidade;

PROPRIEDADES Imutabilidade e Irrefutabilidade;


DA BLOCKCHAIN
Privacidade e Anonimidade;

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

Componentes da IoT Organização dos componentes


da IoT
11

11

CONTRATOS INTELIGENTES

• Os CIs, segundo Nick Szabo representam • Vitalik Buterin viabilizou a implementação


"um conjunto de promessas, especificado de tais contratos, que são programas de
em formato digital, incluindo protocolos nos computador imutáveis, executados de forma
quais as partes cumprem estas promessas" determinística, no contexto de uma EVM,
como parte do protocolo de rede Ethereum

• 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.

Linguagens de programação: são LLL, Serpent, Vyper, Bambu e Solidity

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

ARQUITETURA WEB ARQUITETURA WEB


COM BLOCKCHAIN
Resiliência

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

Rede P2P - A rede principal Regras de consenso – São Transações - As mensagens


Ethereum roda na porta TCP definidas na especificação de incluem: sender, recipient, value,
30303, e o protocolo ÐΞVp2p. referência - yellow paper. e data payload.

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

CONEXÃO COM A REDE ETHEREUM

Para Desenvolvedores Rede Ethereum


IPC (Usa o sistema de arquivo local)
Java, Android e Javascript
Websockets (mais rápido que HTTP)
HTTP (suportado pela maioria dos nós)
Web3
IPCProvider
WebsocketProvider
HTTPProvider

Para Clientes Não armazenam a blockchain Ethereum completa;


São mais rápidos de configurar;
Requerem menos armazenamento de dados;
Cliente
Remoto
Clientes remotos oferecem um subconjunto da
funcionalidade de um cliente completo

20

20

10
17/06/2021

CLIENTES ETHEREUM

Nós Clientes Clientes remotos Extensões

• Geth (Go) • Jaxx • Metamask


• Parity (Rust) • Status • Jaxx
• Cpp-ethereum(C++) • Trust Wallet • MyEtherWallet
• Pyethereum(Python) • Coinbase • Nifty Wallet
• Mantis(Scala) • MyCrypto
• Harmony(Java)

21

21

Gerenciar chaves privadas e endereços Ethereum em uma


carteira;
Criar, assinar e transmitir transações;

Interagir com contratos inteligentes, usando a carga útil de


dados;
Navegar e interagir com DApps;

Oferecer links para serviços externos, como exploradores de


CLIENTES blocos;
REMOTOS Converter unidades de ether e recuperar taxas de câmbio de
fontes externas;
Injetar uma instância web3 no navegador web como um
objeto Javascript;
Usar uma instância web3 fornecida/injetada no navegador por
outro cliente;
Acessar os serviços RPC em um nó Ethereum local ou
remoto.
22

22

11
17/06/2021

EVM – ETHEREUM VIRTUAL MACHINE

Implementa uma máquina de turing


virtual para processar os contratos
Inteligentes.

Usa o gas para controlar o uso da


Máquina de Turing

23

23

REDES ETHEREUM

METAMASK Rede Principal Ethers comprados com dólar

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

localhost 8545 A opção conecta-se a um nó em execução no mesmo


computador que o navegador.

Custom RPC Conecta a qualquer nó com uma interface de


Chamada de Procedimento Remoto (RPC)
compaHvel com Geth
24

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

Apenas consome gas Indica uma invocação

nonce: 7 nonce: 7
to: 0x1FA69f3Ee1378B1159b0A852F6f29Cb53e11d833 to: 0x1FA69f3Ee1378B1159b0A852F6f29Cb53e11d833
value: value:
gasPrice: 12,3 gasPrice: 12,3
gasLimit: 30000 gasLimit: 30000
data: data: batimentos(80)

Indica um pagamento Indica uma invocação e um pagamento


nonce: 7 nonce: 7
to: 0x1FA69f3Ee1378B1159b0A852F6f29Cb53e11d833 to: 0x1FA69f3Ee1378B1159b0A852F6f29Cb53e11d833
value: 2.3 value: 0,5
gasPrice: 12,3 gasPrice: 12,3
gasLimit: 30000 gasLimit: 30000
data: data: pag_exame()

29

29

GASPRICE X GASLIMIT

• O gas não é ether, é uma moeda separada usada para


pagamento das transações na rede
• Possui cotação própria em relação ao ether

GasLimit - indica qual o limite de gas a ser consumido pela


transação.

GasPrice - permite que o emissor da transação defina o preço


que está disposto a pagar para adquirir o gas.

30

30

15
17/06/2021

A Ethereum usa um protocolo de consenso de prova de


trabalho (PoW) - Etash.

A prova de trabalho é executada por mineradores, que


competem para criar novos blocos, com as transações
processadas.
O vencedor compartilha o novo bloco com o resto da rede e
ganha novos ethers recém-criados.

CONSENSO A corrida é ganha por quem resolver um quebra-cabeça


matemático mais rápido

A rede é mantida segura pelo fato de que você precisaria de


51% do poder de computação da rede para fraudar a cadeia.

Isso exigiria investimentos tão grandes em equipamentos e


energia, que provavelmente você gastaria mais do que
ganharia.

31

31

CICLO DE DESENVOLVIMENTO DOS CONTRATOS


INTELIGENTES

Código em bytes que


será implementado na
rede
Bytecodes

Contrato em Solidity Complidador Solidity

Application Binary Interface para


Interface (ABI) interagir com o
Existem diversas contrato após a
versões do compilador implementação
(Solc), com mudanças
significativas entre elas

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:

Objeto msg : OBJETO block :


•msg.sender: endereço que iniciou a chamada de contrato •block.blockhash(blockNumber): O hash de um bloco especifico. Em
•msg.value: O valor de ether enviado (em wei). desuso e subsMtuído pela função blockhash() no Solidity v0.4.22.
•msg.gas: A quantidade de gas restante no suprimento de gas desse •block.coinbase: O endereço do desMnatário das taxas do bloco atual e
ambiente de execução. Isso foi descontinuado no Solidity v0.4.21 e da recompensa do bloco.
substituído pela função gasleft(). •block.difficulty: A dificuldade (prova de trabalho) do bloco atual.
•msg.data: A carga útil de dados desta chamada no contrato. •block.gaslimit: A quanMdade máxima de gas que pode ser gasta em
todas as transações.
•block.number: O número do bloco atual.
Objeto tx : •block.Mmestamp: O carimbo de data/hora colocado no bloco atual
tx.gasprice: o preço do gas na transação de chamada. pelo minerador.
tx.origin: O endereço da conta Ethereum de origem para
esta transação.

35

35

MANIPULANDO ENDEREÇO DOS CONTRATOS

address.balance: address.transfer(quantidade) address.send(quantidade) address.call(payload):

• 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

• function FunctionName ([parâ metros]) public|private | internal|external [pure|constant|view|payable]


[modi:i:ier] [return (tipos de retorno)]
Func4onName é o nome usado para chamar a função. Uma
função podeOsser definida sem
parâmetros vêmum nome.
após Nesteespecificado
o nome, caso, é a função
os argumentos
de fallback, que
que devem
é chamada quando nenhuma
ser passados outracom
para a função, função
seusé nomes e
nomeada. Ela O padrão
fallback são funções
não pode As funções
publicas
ter argumentos que
ou external
podem
retornos. sersão como funções
chamadas por públicas, exceto que não
tipos. podem ser chamadas de dentro
outros contratos, transações de carteiras Ethereum, ou de do contrato, a menos que
dentro do contrato. explicitamente
Uma função pureprefixadas com grava
não lê nem a palavra-chave this.
nenhuma variável, apenas opera
As funções com o atributo private são como
argumentos funções
e retorna internal,
dados, sem referencia a dados armazenados.
mas não podem ser chamadas AsAsfunções
por com
contratos
funções atributo internal
derivados
constant ou view nãosão acessíveis
modificam apenasestado.
nenhum de
dentro do contrato
As funções payableou por contratos
podem derivados de outro
aceitar pagamentos.
contrato. Elas não podem ser chamadas por outro contrato ou
transações de carteiras Ethereum.

37

37

Construtoras

• São executadas apenas uma vez durante a criação do


contrato e possuem a palavra chave
constructor()

Modificadoras

FUN ÇÕ ES • São usadas para criar condições que se aplicam a


CO N ST R UT O R A S, muitas situações em um contrato. Desviam
M O D I FI CA D O R A S E temporariamente a execução de uma função para
A UT O DEST R UT IV A S uma rotina particular e possuem a palavra chave
modifier()

Autodestrutivas

• As funções de autodestruição possuem a palavra-


chave destroy() e são utilizadas para destruir o
contrato implementado

38

38

19
17/06/2021

CONSTRUINDO O PRIMEIRO CONTRATO


USANDO O REMIX

• Manipular mensagens Editor Remix


• Uma variável pública para receber
mensagens Código do
• Uma função para definir uma mensagem
Contrato
inicial
• Uma função para modificar a mensagem
inicial
Compilação
Implementação
Emulação de Browser
Instância do
Contrato

https://remix.ethereum.org/

39

39

INBOX.SOL

Identificador da licença do contrato


Informa a versão do compilador

Informa o nome do contrato e declara as


variáveis

Declara o construtor

Declara a função para modificar o valor


da variável

Declara a função para ler o valor da


variável
Os contratos somente executam funções se elas forem chamadas por uma
transação.
Os contratos nunca podem chamar a si próprios ou atuarem em
background, mas podem chamar outros contratos em cadeia.

40

40

20
17/06/2021

A transação envolvendo CIs contém dois campos: valor e dados. Estes


valores podem alternadamente serem preenchidos ou não. Quando o
endereço de destino de uma transação for relativa a um contrato, a EVM
executará o contrato e tentará chamar a função nomeada na carga útil de
dados da transação.

As transações são atômicas.


PA RT I CULA R I DA D E S
N A E XE CUÇÃ O
D O S CO NT R ATO S
I N T E LI GE NT ES A função getMessage neste exemplo é didática. Todas as variáveis
declaradas no contrato, automaticamente, terão uma função get associada
no momento da compilação.

Operações de leitura em contratos são gratuitas. Operações de


implementação de contratos ou modificação de valores nos contratos são
pagas.

41

41

AMBIENTE DE DESENVOLVIMENTO

Usando o Remix Usando um ambiente configurado

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

DESAFIOS DA BLOCKCHAIN E IOT NA


ÁREA DE SAÚDE

46

46

23
17/06/2021

DESAFIOS DA BLOCKCHAIN E IOT NA


ÁREA DE SAÚDE

• Principais requisitos • Protocolos de Consenso


• Controle de acesso e não repudiação
• PoW
• Interoperabilidade
• PoS
• Compartilhamento de dados
• PoX
• Mobilidade
• Desafios Técnicos • BFT
• DAG
• Latência
• Vazão
• Consumo de Energia
• Centralização
• Privacidade

Simpósio Brasileiro de computação Aplicada à Saúde - Minicurso Internet das coisas, blockchain e contratos inteligentes aplicados à saúde
47

47

CONTROLE DE ACESSO, AUTENTICAÇÃO


E NÃO REPUDIAÇÃO

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

Poucos conhecimentos adequados


Disponibilidade da rede
Autenticação de dados,
Confiabilidade
Localização.

50

50

25
17/06/2021

Latência

• É preciso levar em consideração o tempo de bloqueio das plataformas de


blockchain e a aplicação na qual será empregada

Vazão

• O incremento do número de transações e o tempo de bloqueio para


plataformas que usam algum tipo de prova podem diminuir a vazão e ser
um fator proibitivo para algumas aplicações.

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

• Alguns protocolos de consenso, apesar dos esforços e mecanismos para


manter a justiça, tendem a centralizar os mineradores.

Privacidade

• Os sistemas baseados em blockchain devem estar em conformidade com


o Regulamento Geral de Proteção de Dados (GDPR)
51

51

PROTOCOLOS
DE
CONSENSO

52

52

26
17/06/2021

POW – PROOF OF WORK

• 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

MedRec MedBChain Guo e outros 2018 Conceição e outros 2018

• Oferece aos pacientes • É um sistema de • Valida registros • Implementam uma


registros imutáveis e de gerenciamento de dados eletrônicos encapsulados arquitetura de informação
fácil acesso, gerenciando de saúde centrado no na blockchain empregando em larga escala para
autenticação, paciente usando um esquema de assinatura acessar registros
confidencialidade, blockchain como baseada em atributos com eletrônicos de saúde com
responsabilidade e armazenamento para várias autoridades para base em Contratos
compartilhamento obter privacidade endossar as informações Inteligentes.

53

53

POS – PROOF OF STAKE

• 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

• Framework para compartilhamento


de imagens entre domínios que
usam blockchain como
armazenamento de dados
distribuído, para estabelecer um
livro-razão de estudos radiológicos
e permissões de acesso definidas
pelo paciente.

54

54

27
17/06/2021

PBFT – PRACTICAL BYZANTINE FAULT TOLERANCE

• 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

Dubovitskaya e outros 2017 AuditChain MedChain Medicalchain

• 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

PESQUISAS E APLICAÇÕES RECENTES

Fonte: [Ahmad e outros 2021]


60

60

28
17/06/2021

PESQUISAS E APLICAÇÕES RECENTES


EXEMPLOS(2)

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

PESQUISAS E APLICAÇÕES RECENTES


EXEMPLOS(2)

Gerenciamento de dados Rastreabilidade de tratamento Rastreabilidade de kits e


clínicos do paciente remoto dispositivos médicos residenciais
• Informações altamente • O acompanhamento remoto • A adoção de kits e dispositivos
confidenciais compartilhadas de pacientes utiliza de teste para uso domiciliar
com segurança entre plataformas computacionais auxiliam no trata- mento
profissionais da área da saúde que permitem a troca de precoce de doenças,
(médicos, farmacêuticos, dados digitalizados que ajudam reduzindo os custos
hospitais, etc.) [Albeyatti 2018, especialistas na área de saúde associados a exames médicos
Saweros e Song 2019] a diagnosticar o estado clinico que antes eram realizados
de seus pacientes, auxiliando- apenas em laboratórios e
os em suas consultas e hospitais [Weissman e outros
procedimentos cirúrgicos 2018]
[Mannaro e outros 2018,
Hussien e outros 2021]

62

62

29
17/06/2021

PESQUISAS E APLICAÇÕES RECENTES


EXEMPLOS(3)

Serviços especialistas de Automação do serviço de


Rastreabilidade da entrega Serviços de plano de
recomendação baseados acompanhamento de
de medicamentos saúde confiáveis em reputação pacientes
• Medicamentos em • Clientes que mantenham • A telemedicina permite • A tecnologia blockchain
trânsito podem ser um seu estilo de vida que dados remotos de pode automatizar este
rastreados pela farmácia saudável monitorado por pacientes possam ser serviço por meio de
e pelo paciente, que dispositivos inteligentes acessados e analisados à contratos inteligentes
podem acompanhar o presentes em academia, distância por que disparar lembretes
trajeto realizado pela ou conectados ao especialistas ao paciente para o envio
encomenda [Thatcher e paciente, podem realizar multidisciplinares [Lee de exames no sistema,
Acharya 2018]. transações na blockchain 2019]. ou para que ele não se
para a persistência de esqueça do dia do
tais informações encontro remoto com o
[Raikwar e outros 2018, seu médico [Siyal e
Albeyatti 2018] outros 2019].

63

63

REDE NACIONAL
DE DADOS EM
SAÚDE

• Projeto estruturante do Conecte SUS, programa


do Ministério da Saúde (MS) do Governo Federal,
cujo objetivo é promover a troca de informações
entre os pontos da Rede de Atenção à Saúde,
permitindo a transição e continuidade do cuidado
nos setores público e privado
• A RNDS é o maior case de blockchain em saúde do
mundo com mais de 1 bilhão de transações
• Os documentos clínicos federados estão
disponíveis juntamente com a linha do tempo do
paciente, a qual está distribuída por meio da
tecnologia blockchain
• Enquadrada na Lei no 13.709 - Lei Geral de
Proteção a Dados (LGPD)

64

64

30
17/06/2021

DESENVOLVIMENTO DE
CONTRATOS INTELIGENTES

65

65

DESENVOLVIMENTO DE CONTRATOS
INTELIGENTES

• Construindo um contrato inteligente


• Configuração de ambiente local

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

FUNÇÕES DO SMART CONTRACT

Contrato
Vacina

Funções

construtora insertRegistro getRegistro verificaOwner close

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

VARIÁVEIS DO SMART CONTRACT

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

CICLO PARA DESENVOLVER UM CONTRATO

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

Middleware Web Server


{ "value":-72,
"local": ”Brasil"} Get HTTP

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

• Contém o endereço do contrato implementado na


rede Ethereum e a ABI do contrato.
ARQUIVOS
src/contrats/web3.js
DO
FRONTEND • Importa a web3 para a aplicação

src/app.js

• Contém o código javascrip que acessa a DApp e


cria a tela da aplicação

src/index.js

• arquivo principal
78

78

37
17/06/2021

COMO MONTAR UM CURSO DE


DESENVOLVIMENTO WEB COM
BLOCKCHAIN E CONTRATOS INTELIGENTES

79

79

Não é uma tarefa trivial

• Solidity
• Front-ent
• Back-end

Uma alternativa são as plataformas


MOOC (Massive Open Online Course)
COMO MONTAR • Coursera
UM CURSO • Udemy
• edX

Curso de Extensão

• Referencias no livro texto

80

80

38
17/06/2021

EXPERIÊNCIA DOS AUTORES

• 3 cursos - UFBA, UESC e UESB • Hardware


• Módulo Básico • Ambiente misto
• Teoria e conceitos básicos • processadores que vão desde Core2 Duo com
• Criação de um contrato simples 4Gb de RAM até Core i7 com 32 Mb de RAM.
• Criação de uma DApp single-page • Software
• Módulo Avançado • Node.js
• Emprego de conceitos de engenharia de software • Bibliotecas e Editores gratuitos
• Mais recursos da linguagem solidity • Carga Horária
• DApp multipágina
• 16h para o módulo Básico
• Módulo com IoT • 16h para o módulo Avançado
• Uso de IoT para gerar dados
• 20h para o módulo com IoT
• Emprego de um middleware como intermediário
• O Contrato pode gerar alertas

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

Dúvidas e mais informações:

Jauberth Abijaude
jauberth@uesc.br

Henrique Serra
haserra.cic@uesc.br

85

85

41

Você também pode gostar