Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Desmistificando Blockchains p/ Developers - Criciuma Dev Conf 2018

325 views

Published on

Explicando os conceitos principais de blockchains, criptomoedas e onde mais usar essas tecnologias no mundo real.

Published in: Software
  • Be the first to comment

Desmistificando Blockchains p/ Developers - Criciuma Dev Conf 2018

  1. 1. Fabio Akita @akitaonrails, @codeminer42, @theconf_br
  2. 2. 21-22 Set 2018
  3. 3.  > require "digest"  => true  > Digest::SHA256.hexdigest("hello world")  => "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"  > Digest::SHA256.hexdigest("hello world!")  => "7509e5bda0c762d2bac7f90d758b5b2263fa01ccbc542ab5e3df163be08e6ca9"
  4. 4.  > Digest::SHA256.hexdigest("Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc,")  => "4d0fcee44bd65ea0a0c983da992b053d6f5d94a25e91eae6a783f59fb5ef0cc1"
  5. 5.  De:  Para:  Valor: 0.01234567 BTC
  6. 6. git branch –b mempool git add panda_sapo.transaction git commit –m “de panda, p/ sapo, 0.0123456 BTC” git push origin mempool
  7. 7. git branch –b mempool git add panda_sapo.transaction git commit –m “de panda, p/ sapo, 0.0123456 BTC” git push origin mempool git checkout master git merge mempool
  8. 8. def compute_hash_with_proof_of_work( difficulty, hash ) nonce = 0 loop do signature = calc_hash_with_nonce( nonce, hash ) if signature.start_with?( difficulty ) return [nonce, signature] else nonce += 1 end end end def calc_hash_with_nonce( nonce, hash ) Digest::SHA256.new.tap do |sha| sha.update( nonce.to_s + hash ) sha.hexdigest end end
  9. 9. > hash = Digest::SHA256.hexdigest("hello world") > puts Benchmark.measure { compute_hash_with_proof_of_work("0000", hash) } 0.040000 0.000000 0.040000 ( 0.044949) > puts Benchmark.measure { compute_hash_with_proof_of_work("00000", hash) } 1.030000 0.000000 1.030000 ( 1.047740) > puts Benchmark.measure { compute_hash_with_proof_of_work("000000", hash) } 42.920000 0.040000 42.960000 ( 43.642561)
  10. 10. RICO COM MEU PC VELHO?  Para Bitcoin (SHA256): 980 MH/s (milhões de hash/seg)  > R$ 3.400  NÃO TEM ROI!
  11. 11.  Para Bitcoin (SHA256): 20 TH/s (TRILHÕES de hashes)  > R$ 14.000 (fila de espera)  > 1 ano e meio p/ ROI
  12. 12. 17.468 tubos a vácuo 70 mil resistors 1.500 relays 6.000 switches manuais 5 milhões de pontos de solda 167 m2 30 toneladas 180 kW 1.468 GWh/ano (DUAS ISLÂNDIAS)
  13. 13.  17 mil vezes mais BARATO  40 MILHÕES de vezes MENOR  400 MIL vezes menos energia  120 MIL vezes mais leve 1.300xmais PODEROSO!
  14. 14.  17 mil vezes mais BARATO  40 MILHÕES de vezes MENOR  400 MIL vezes menos energia  120 MIL vezes mais leve 1.300xmais PODEROSO!
  15. 15. Cada habitante da Terra precisaria doar USD 10 BILHÕES para minerar UM BITCOIN E levaria 35 MIL vezes a IDADE DO UNIVERSO até assinar 1 BLOCO
  16. 16. 334 mil habitantes
  17. 17. 700 GWh /ano
  18. 18. +14.500 GWh /ano
  19. 19. 99% renovável!
  20. 20. ~ 30 blocos por dia (1Mb/bloco) ~ 12 BTC por bloco ~ 360 BTC por dia (~ USD 3.6 milhões por dia) ~ 6.122 PH/s (= 6.2 milhões de GTX 1080 Ti)
  21. 21. pragma solidity ^0.4.19; contract BancoSimples { mapping (address => uint) private saldos; address public dono; function BancoSimples() public { dono = msg.sender; } function depositar() public payable returns (uint) { require(msg.value > 0); saldos[msg.sender] += msg.value; return saldos[msg.sender]; } function sacar(uint valor) public returns (uint) { require(valor <= saldos[msg.sender]); saldos[msg.sender] -= valor; msg.sender.transfer(valor); return saldos[msg.sender]; } function verSaldo() constant public returns (uint) { return saldos[msg.sender]; } }
  22. 22. pragma solidity ^0.4.19; contract BancoSimples { mapping (address => uint) private saldos; address public dono; function BancoSimples() public { dono = msg.sender; } …. function verSaldo() constant public returns (uint) { return saldos[msg.sender]; } }
  23. 23. pragma solidity ^0.4.19; contract BancoSimples { …. function depositar() public payable returns (uint) { require(msg.value > 0); saldos[msg.sender] += msg.value; return saldos[msg.sender]; } …. }
  24. 24. pragma solidity ^0.4.19; contract BancoSimples { …. function sacar(uint valor) public returns (uint) { require(valor <= saldos[msg.sender]); saldos[msg.sender] -= valor; msg.sender.transfer(valor); return saldos[msg.sender]; } … }
  25. 25.  Contratos Inteligentes  Identidade Digital  Armazenamento Distribuído  Registro de Terras  Eleições Digitais (de verdade)  Infraestrutura de pagamentos  Ativos digitais  Eficiência e Transparência no Governo  Basicamente, a extinção do Cartório  Basicamente, a extinção de todo centralizador de dados
  26. 26. OBRIGADO!

×