42
Blockchain Autonomia e Blockchain Autonomia e Segurança para Smart Contracts Segurança para Smart Contracts Priscila Morais

Blockchain Autonomia e Segurança para Smart Contractsconfraria0day.com.br/wp-content/uploads/2016/09/blockchain... · Blockchain Bitcoin Bloco 0Bloco 0 Bloco 1Bloco 1 Bloco 2Bloco

  • Upload
    lytu

  • View
    217

  • Download
    1

Embed Size (px)

Citation preview

Blockchain Autonomia e Blockchain Autonomia e Segurança para Smart Contracts Segurança para Smart Contracts

Priscila Morais

Estrutura

● Blockchain;Blockchain;● Blockchain Bitcoin;Blockchain Bitcoin;● Smart Contracts;Smart Contracts;● Plataforma Ethereum;Plataforma Ethereum;

Blockchain Origens

Blockchain

Blockchain é uma implementação peer-to-peer, com Blockchain é uma implementação peer-to-peer, com

segurança garantida por meio de criptografia. Onde todas segurança garantida por meio de criptografia. Onde todas

as transações são públicas, todos os nós da rede, tem toda as transações são públicas, todos os nós da rede, tem toda

a cadeia de blocos e são capazes de verificar a veracidade a cadeia de blocos e são capazes de verificar a veracidade

de cada uma das transações e onde a validação das de cada uma das transações e onde a validação das

transações se dá por consenso. Garantindo uma transações se dá por consenso. Garantindo uma

infraestrutura autônoma, descentralizada, transparente e infraestrutura autônoma, descentralizada, transparente e

segura.segura.

Blockchain Definição

Bloco 0Bloco 0 Bloco 1Bloco 1 Bloco 2Bloco 2

Blockchain Características

● È formada por blocos de informações;È formada por blocos de informações;● O blocos são interligados por um O blocos são interligados por um

identificador único;identificador único;● Cadeia é distribuída entre os nós;Cadeia é distribuída entre os nós;● Motor com regras para geração dos blocos;Motor com regras para geração dos blocos;● Protocolo de consenso;Protocolo de consenso;

Blockchain Bitcoin

Blockchain BitcoinBlockchain Bitcoin

Função hash

sha256

Hash de 256 bits

Blockchain Bitcoin

Bloco 0Bloco 0 Bloco 1Bloco 1 Bloco 2Bloco 2

Hash do bloco anterior

Hash do bloco anterior

Hash do bloco anterior

Hash do bloco anterior

Bloco 0 Bitcoin - Genesis

Block #0

Output

Horário

Hash Bloco

4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b

2009-01-03 18:15:05

50 BTC

0000000000000000000000000000000000000000000000000000000000000000

Merkle Root

Hash Bloco Anterior

000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

Fonte: https://blockchain.infoFonte: https://blockchain.info

Bloco 0 Bitcoin - Genesis

Block #0

Output

Horário

Hash Bloco

4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b

2009-01-03 18:15:05

50 BTC

0000000000000000000000000000000000000000000000000000000000000000

Merkle Root

Hash Bloco Anterior

000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

Fonte: https://blockchain.infoFonte: https://blockchain.info

Transação Bitcoin

● Valores transferidos entre os usuários da Valores transferidos entre os usuários da rede.rede.

Transação: 3bce1fe32441b19df05dd5575af1e825c03747745f661428487980748aa791ca

147xKq8AWMUWAmQ5Emxr7v4XC7iQbJdCrV

De: Alice

Para: Bob e Jhon

1KD4mXadWsz83SKgjP7EGgbX3orTHuG3s5

1NwUqUxTLk5P5VAyyH7SVMoZqAw7SwDFry

Taxas: para o mineiro

50

Valor

19

30

1

Fonte: https://blockchain.infoFonte: https://blockchain.info

Criação dos BlocosMineiros

● São os nós responsáveis por captarem as transações São os nós responsáveis por captarem as transações da rede, e trabalharem para criar os blocos. Estes da rede, e trabalharem para criar os blocos. Estes são recompensados.são recompensados.

Criação do BlocosProva de Trabalho

Esforço computacional empregado em Esforço computacional empregado em encontrar o valor do hash do bloco que não encontrar o valor do hash do bloco que não ultrapasse o limite estabelecido.ultrapasse o limite estabelecido.

Bloco 3Bloco 3

Limite: 000010

Limite: 000010

Nonce: 0 Nonce: 0

Hash do bloco anterior

Hash do bloco anterior

Hash das transações

Hash das transações

Sha256

hash

00012

Criação do BlocosProva de Trabalho

Esforço computacional empregado em Esforço computacional empregado em encontrar o valor do hash do bloco que não encontrar o valor do hash do bloco que não ultrapasse o limite estabelecido.ultrapasse o limite estabelecido.

Bloco 3Bloco 3

Limite: 000010

Limite: 000010

Nonce: 1 Nonce: 1

Hash do bloco anterior

Hash do bloco anterior

Hash das transações

Hash das transações

Sha256

hash

000011

Criação do BlocosProva de Trabalho

Esforço computacional empregado em Esforço computacional empregado em encontrar o valor do hash do bloco que não encontrar o valor do hash do bloco que não ultrapasse o limite estabelecido.ultrapasse o limite estabelecido.

Bloco 3Bloco 3

Limite: 000010

Limite: 000010

Nonce: 2 Nonce: 2

Hash do bloco anterior

Hash do bloco anterior

Hash das transações

Hash das transações

Sha256

hash

000010

Criação do BlocosProva de Trabalho

Esforço computacional empregado em Esforço computacional empregado em encontrar o valor do hash do bloco que não encontrar o valor do hash do bloco que não ultrapasse o limite estabelecido.ultrapasse o limite estabelecido.

Bloco 3Bloco 3

Limite: 000010

Limite: 000010

Nonce: 3 Nonce: 3

Hash do bloco anterior

Hash do bloco anterior

Hash das transações

Hash das transações

Sha256

hash

000009

Bloco Bitcoin

Block #426135

Hash Bloco

f10b2491e655366dc88c051e52ce62f88c4b7fcb19e8ae7a693afff96010e393

33.891.096

000000000000000001eecbc26b21fb2d2d09182b904396ffc5d493a654b79503

Merkle Root

Hash Bloco Anterior

0000000000000000005671e6c0eeff5447516b929044cc14127926169dd6206a

Nonce

Dificuldade Bits 402984668 (para Hexa = 18050EDC Expoente = 0x18 coeficiente = 0x050EDC limite = coeficiente * 2^(8 * (expoente – 3)))

TimesTamp 2016-08-21 03:53:45TimesTamp

Fonte: https://blockchain.infoFonte: https://blockchain.info

Bloco Bitcoin

Block #426135

Hash Bloco

f10b2491e655366dc88c051e52ce62f88c4b7fcb19e8ae7a693afff96010e393

33.891.096

000000000000000001eecbc26b21fb2d2d09182b904396ffc5d493a654b79503

Merkle Root

Hash Bloco Anterior

0000000000000000005671e6c0eeff5447516b929044cc14127926169dd6206a

Nonce

Dificuldade Bits 402984668 (para Hexa = 18050EDC Expoente = 0x18 coeficiente = 0x050EDC limite = coeficiente * 2^(8 * (expoente – 3)))

TimesTamp 2016-08-21 03:53:45TimesTamp

Fonte: https://blockchain.infoFonte: https://blockchain.info

Criação do BlocosResumo

Blockchain Blockchain

Blockchain

Blockchain

Blockchain

Criação do BlocosResumo

Transação 1Transação 1

Bloco

Transação 2

Transação 1

Bloco

Transação 2

Transação 1

Bloco

Transação 2

Transação 2

Criação do BlocosResumo

Transação 1

Transação 2

Transação 1

Bloco

Transação 2

Onde consultar a Blockchain Bitcoin

● blockchain.infoblockchain.info

● blockexplorer.comblockexplorer.com

Blockchain Bitcoin

Limitações:Limitações:

● Falta de Turing Completo;Falta de Turing Completo;● Falta de estado;Falta de estado;

Smart Contracts

Smart ContractsSmart Contracts

Smart Contracts

● São contratos inteligentes que podem ser São contratos inteligentes que podem ser estabelecidos para facilitar a integração estabelecidos para facilitar a integração entre partes que desejam estabelecer um entre partes que desejam estabelecer um acordo garantido por criptografia e de acordo garantido por criptografia e de acordo com as características do negócio, acordo com as características do negócio, que possam ser formalizados por meios que possam ser formalizados por meios como a internet.como a internet.

Ethereum

Plataforma EthereumPlataforma Ethereum

Plataforma Ethereum

Pretende fornecer uma blockchain construída em Pretende fornecer uma blockchain construída em

linguagem de programação Turing completo que pode linguagem de programação Turing completo que pode

ser usada para criar "contratos" que podem ser ser usada para criar "contratos" que podem ser

utilizados para codificar funções arbitrárias de utilizados para codificar funções arbitrárias de

transição de estado, criar qualquer tipo de sistemas transição de estado, criar qualquer tipo de sistemas

baseados nestes contratos, simplesmente escrevendo baseados nestes contratos, simplesmente escrevendo

a lógica em algumas linhas de código.[Buterin 2014]a lógica em algumas linhas de código.[Buterin 2014]

DAOs

● Organizações Autônomas descentralizadas.Organizações Autônomas descentralizadas.

Fonte: https://slock.it/Fonte: https://slock.it/

Plataforma Ethereum

Transição de estado: Transição de estado: APLICAR (S, TX) -> S'APLICAR (S, TX) -> S'

Transação 14c5f8ba:

1024 eth

Estado

De: 14c5f88a

Para: bb75a980

Valor: 10

Dados: 142345fs, 10 Ass: 30452fdeb3d f7959f2ceb8

bb75a980:

77 eth

14c5f8ba:

1014 eth

Estado

bb75a980:

87 eth

Código do contrato

10 eth

Código do contrato

20 eth

EVM Ethereum

EVM - EthereumEVM - Ethereum

BlockchainEthereum

BlockchainEthereum

BlockchainEthereum

BlockchainEthereum

Ethereum Programação

LinguagensLinguagens● Solidity;Solidity;● Serpent;Serpent;

Clientes:Clientes:● geth;geth;● Mist;Mist;●

Contrato implementado

function CompraSeguraRemota() {function CompraSeguraRemota() {

vendedor = msg.sender;vendedor = msg.sender;

preco = msg.value / 2;preco = msg.value / 2;

if (2 * preco != msg.value) throw;if (2 * preco != msg.value) throw;

}}

function confirmaVenda()function confirmaVenda()

exigencia(msg.value == 2 * preco)exigencia(msg.value == 2 * preco)

Criação do contrato

●Estado

conta 1

642.07 Ether

conta 2

20 Ether

EVM - Ethereum

Código contratoem Solidity

Transação

De: conta 1

Para: criação do contrato

Valor: 10 Ether

Dados: Byte code do contrato

Mist

Onde consultar a Blockchain Ethereum

● etherchain.orgetherchain.org● etherscan.ioetherscan.io● testnet.etherscan.iotestnet.etherscan.io

Iniciativas Blockchain

Pontos Fracos Blockchain

● Tamanho da Blockchain;Tamanho da Blockchain;● Tempo para confirmação da transação;Tempo para confirmação da transação;● Perigo do ataque de 51%;Perigo do ataque de 51%;

Pontos Forte Blockchain

● Autonomia;Autonomia;● Segurança;Segurança;● Baixo custo de manutenção;Baixo custo de manutenção;

Dúvidas

Obrigada!

● Por participarem da minha 1ª Palestra Por participarem da minha 1ª Palestra externa;externa;

● No dia em que comemoro minha No dia em que comemoro minha chegada a versão 3.0.chegada a versão 3.0.

Contato: [email protected]: [email protected]

Referências

● [1] Andreas M Antonopoulos. Mastering Bitcoin: unlocking digital cryptocurrencies. [1] Andreas M Antonopoulos. Mastering Bitcoin: unlocking digital cryptocurrencies. "O’Reilly Media, Inc.", 2014."O’Reilly Media, Inc.", 2014.

● [2] Satoshi Nakamoto. Bitcoin: A peer-to-peer electronic cash system,2008.[2] Satoshi Nakamoto. Bitcoin: A peer-to-peer electronic cash system,2008.

● [3] Vitalik Buterin. A next-generation smart contract and decentralized application [3] Vitalik Buterin. A next-generation smart contract and decentralized application platform. white paper, 2014.platform. white paper, 2014.

● [4] Slock.it. https://slock.it/.[4] Slock.it. https://slock.it/.

● [5] r3cev.com. http://r3cev.com/. [5] r3cev.com. http://r3cev.com/.

● [6] Hyperledger project. https://www.hyperledger.org/.[6] Hyperledger project. https://www.hyperledger.org/.

● [7] Jacob Stenum Czepluch, Nikolaj Zangenberg Lollike, and Simon Oliver Malone. The [7] Jacob Stenum Czepluch, Nikolaj Zangenberg Lollike, and Simon Oliver Malone. The use of block chain technology in different application domains. 2015.use of block chain technology in different application domains. 2015.

● [8] bitcoin.org. https://bitcoin.org/pt_BR. [8] bitcoin.org. https://bitcoin.org/pt_BR.

● [9] bitcoinchain.com. https://bitcoinchain.com/. [9] bitcoinchain.com. https://bitcoinchain.com/.

● [10] ethereum-project. https://www.ethereum.org/.[10] ethereum-project. https://www.ethereum.org/.

● [11] Nick Szabo. Formalizing and securing relationships on public networks. First [11] Nick Szabo. Formalizing and securing relationships on public networks. First Monday, 2(9), 1997.Monday, 2(9), 1997.

Referências

● [12] ethereum-solidity-docs. https://solidity.readthedocs.io/en/latest/.[12] ethereum-solidity-docs. https://solidity.readthedocs.io/en/latest/.

● [13] Serpent-wiki-github. https://github.com/ethereum/wiki/wiki/Serpent.[13] Serpent-wiki-github. https://github.com/ethereum/wiki/wiki/Serpent.

● [14] solc-compiler-github. https://github.com/ethereum/solc-js. [14] solc-compiler-github. https://github.com/ethereum/solc-js.

● [15] go-ethereum-geth-repositorio. https://github.com/ethereum/go-ethereum.[15] go-ethereum-geth-repositorio. https://github.com/ethereum/go-ethereum.

● [16] ethereum-mist-repositorio. https://github.com/ethereum/mist. [16] ethereum-mist-repositorio. https://github.com/ethereum/mist.

● [17] ethereum-solidity-docs-examples. https://solidity.readthedocs.io/en/latest/solidity-by-[17] ethereum-solidity-docs-examples. https://solidity.readthedocs.io/en/latest/solidity-by-example.html. example.html.

● [18] Gavin Wood. Ethereum: A secure decentralised generalised transaction ledger.[18] Gavin Wood. Ethereum: A secure decentralised generalised transaction ledger.(2014). URL http://gavwood. com/paper. pdf, 2014.(2014). URL http://gavwood. com/paper. pdf, 2014.

● [19] Ethereum contract abi. [19] Ethereum contract abi. https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABIhttps://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI..

Se desejar cópia do artigo, que escrevi, originador desta apresentação pode solicitar por Se desejar cópia do artigo, que escrevi, originador desta apresentação pode solicitar por e-mail: [email protected] e-mail: [email protected]