Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JavaScript e Blockchain, onde eles se encontram

JavaScript e Blockchain, onde eles se encontram

Matheus Lima

July 13, 2018
Tweet

More Decks by Matheus Lima

Other Decks in Programming

Transcript

  1. Web 1.0 • 1996 • estática (HTML) • read-only •

    taxonomia • protocolos abertos (descentralização)
  2. Web 1.0 • 1996 • estática (HTML) • read-only •

    taxonomia • protocolos abertos (descentralização) • pouca inovação (pouco dinheiro)
  3. Web 2.0 • 2004 • dinâmica (php, asp, etc) •

    read-write • busca, keywords, categorias, tags
  4. Web 2.0 • 2004 • dinâmica (php, asp, etc) •

    read-write • busca, keywords, categorias, tags • protocolos fechados (centralização)
  5. Web 2.0 • 2004 • dinâmica (php, asp, etc) •

    read-write • busca, keywords, categorias, tags • protocolos fechados (centralização) • muita inovação (muito dinheiro)
  6. Problemas da Web 2.0 • Falta de privacidade • Monetização

    (regras mudam) • Termos de uso • Monopólios
  7. Problemas da Web 2.0 • Falta de privacidade • Monetização

    (regras mudam) • Termos de uso • Monopólios • Bolhas
  8. Problemas da Web 2.0 • Falta de privacidade • Monetização

    (regras mudam) • Termos de uso • Monopólios • Bolhas = Centralização
  9. Bloco #527324 Timestamp: 2018-06-13 21:43:25 PreviousHash: 0000...f478 Hash: 0000...7bae Transactions:

    [ { 26c7...9225: 1KFH...DbYY }, { 87f3...3cff: 1jkX...app7 }, … ]
  10. hash({ language: ‘JavaScript’, nonce: 0 }) = C7T0...743F hash({ language:

    ‘JavaScript’, nonce: 1 }) = D536...FDDB hash({ language: ‘JavaScript’, nonce: 2 }) = 31YA...0971
  11. hash({ language: ‘JavaScript’, nonce: 0 }) = C7T0...743F hash({ language:

    ‘JavaScript’, nonce: 1 }) = D536...FDDB hash({ language: ‘JavaScript’, nonce: 2 }) = 31YA...0971 hash({ language: ‘JavaScript’, nonce: 3 }) = F398...4B06
  12. hash({ language: ‘JavaScript’, nonce: 0 }) = C7T0...743F hash({ language:

    ‘JavaScript’, nonce: 1 }) = D536...FDDB hash({ language: ‘JavaScript’, nonce: 2 }) = 31YA...0971 hash({ language: ‘JavaScript’, nonce: 3 }) = F398...4B06 … hash({ language: ‘JavaScript’, nonce: 41087 }) = 0000...4B06
  13. Esse processo de buscar o hash ideal que comece com

    um número de zeros se chama...
  14. A mineração nada mais é do que uma busca, por

    tentativa e erro, do hash ideal de cada Bloco
  15. Bloco #527324 Timestamp: 2018-06-13 21:43:25 PreviousHash: 0000...f478 Hash: 0000...7bae Transactions:

    [ { 26c7...9225: 1KFH...DbYY }, { 87f3...3cff: 1jkX...app7 }, … ]
  16. Bloco #527324 Timestamp: 2018-06-13 21:43:25 PreviousHash: 0000...f478 Hash: 0000...7bae Transactions:

    [ { 26c7...9225: 1KFH...DbYY }, { 87f3...3cff: 1jkX...app7 }, … ] Nonce: 348270763
  17. Ponto importante: • Encontrar o nonce correto é demorado e

    computacionalmente caro • Mas verificar o resultado é rápido
  18. Consenso é a forma de garantir que os participantes não

    estão fraudando mesmo sem uma autoridade central
  19. Bloco #527325 Timestamp: 2018-06-13 21:53 PreviousHash: 0000...7bae Hash: 0000...6e4ef Transactions:

    [ { 310a...e98a: 10kla...010a }, { affa...bcc3: 1KkA...B113 }, … ] Nonce: 482791030 ... Bloco #527324 Timestamp: 2018-06-13 21:43 PreviousHash: 0000...f478 Hash: 0000...7bae Transactions: [ { 26c7...9225: 1KFH...DbYY }, { 87f3...3cff: 1jkX...app7 }, … ] Nonce: 348270763 ...
  20. Bloco #527325 Timestamp: 2018-06-13 21:53 PreviousHash: 0000...7bae Hash: 0000...6e4ef Transactions:

    [ { 310a...e98a: 10kla...010a }, { affa...bcc3: 1KkA...B113 }, … ] Nonce: 482791030 ... Bloco #527324 Timestamp: 2018-06-13 21:43 PreviousHash: 0000...f478 Hash: 0000...7bae Transactions: [ { 26c7...9225: 1KFH...DbYY }, { 87f3...3cff: 1jkX...app7 }, … ] Nonce: 348270763 ...
  21. Bloco #527325 Timestamp: 2018-06-13 21:53 PreviousHash: 0000...7bae Hash: 0000...6e4ef Transactions:

    [ { 310a...e98a: 10kla...010a }, { affa...bcc3: 1KkA...B113 }, … ] Nonce: 482791030 ... Bloco #527324 Timestamp: 2018-06-13 21:43 PreviousHash: 0000...f478 Hash: 0000...7bae Transactions: [ { 26c7...9225: 1KFH...DbYY }, { 87f3...3cff: 1jkX...app7 }, … ] Nonce: 348270763 ...
  22. Bloco #527325 Timestamp: 2018-06-13 21:53 PreviousHash: 0000...7bae Hash: 0000...6e4ef Transactions:

    [ { 310a...e98a: 10kla...010a }, { affa...bcc3: 1KkA...B113 }, … ] Nonce: 482791030 ... Bloco #527324 Timestamp: 2018-06-13 21:43 PreviousHash: 0000...f478 Hash: 0000...7bae Transactions: [ { 26c7...9225: 1oZ3... aEe1}, { 87f3...3cff: 1jkX...app7 }, … ] Nonce: 348270763 ...
  23. Bloco #527325 Timestamp: 2018-06-13 21:53 PreviousHash: 0000...7bae Hash: 0000...6e4ef Transactions:

    [ { 310a...e98a: 10kla...010a }, { affa...bcc3: 1KkA...B113 }, … ] Nonce: 482791030 ... Bloco #527324 Timestamp: 2018-06-13 21:43 PreviousHash: 0000...f478 Hash: 0000...Cb4t Transactions: [ { 26c7...9225: 1oZ3... aEe1}, { 87f3...3cff: 1jkX...app7 }, … ] Nonce: 348270763 ...
  24. Bloco #527325 Timestamp: 2018-06-13 21:53 PreviousHash: 0000...7bae Hash: 0000...6e4ef Transactions:

    [ { 310a...e98a: 10kla...010a }, { affa...bcc3: 1KkA...B113 }, … ] Nonce: 482791030 ... Bloco #527324 Timestamp: 2018-06-13 21:43 PreviousHash: 0000...f478 Hash: 0000...Cb4t Transactions: [ { 26c7...9225: 1oZ3... aEe1}, { 87f3...3cff: 1jkX...app7 }, … ] Nonce: 348270763 ...
  25. Bloco #527325 Timestamp: 2018-06-13 21:53 PreviousHash: 0000...7bae Hash: 0000...6e4ef Transactions:

    [ { 310a...e98a: 10kla...010a }, { affa...bcc3: 1KkA...B113 }, … ] Nonce: 482791030 ... Bloco #527324 Timestamp: 2018-06-13 21:43 PreviousHash: 0000...f478 Hash: 0000...Cb4t Transactions: [ { 26c7...9225: 1oZ3... aEe1}, { 87f3...3cff: 1jkX...app7 }, … ] Nonce: 348270763 ...
  26. Ou seja, se eu quiser alterar qualquer valor de um

    Bloco eu tenho que alterar de todos os posteriores
  27. 1. Os mineradores competem para encontrar um hash ideal de

    um Bloco antes de adicionar no Blockchain
  28. Um Smart Contract é contrato que ao invés de caneta

    e papel, funciona na base do código
  29. Fazer com que indivíduos, que não se confiam, consigam fazer

    negócios de maneira segura, barata e sem intermediários
  30. Problemas da Web 2.0 • Falta de privacidade • Monetização

    (regras mudam) • Termos de uso • Monopólios • Bolhas = Centralização
  31. 5. Os dApps podem impactar o modelo de negócios atual

    das grandes empresas de tecnologia