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

Dive deep into blockchain

Dive deep into blockchain

Blockchain became very popular due to the cryptocurrencies boom in the last few years. It is an interesting technology choice, but with every advantage comes a challenge that needs to be thoroughly reviewed and addressed. Feedback: https://joind.in/talk/2fdb3 .

Tomasz Kowalczyk

March 09, 2018

More Decks by Tomasz Kowalczyk

Other Decks in Technology


  1. blockchain dive deep into Tomasz Kowalczyk @tmmx

  2. None
  3. None
  4. blockwhat?

  5. database

  6. chain of blocks

  7. block of data

  8. data structure

  9. cryptocurrency

  10. general purpose

  11. blockwhy?

  12. immutability

  13. append only

  14. traceability

  15. verifiability

  16. tamper proof

  17. integrity

  18. reproducibility

  19. decentralization

  20. trust(less)

  21. transparency

  22. blockwhen?

  23. voting medical records cloud storage financial transactions decentralized messaging property

    registry land sales insurance digital wallets smart contracts crowdfunding property ownership social networking P2P finances virtual countries asset trading
  24. few hours later...

  25. loyalty programs internal currency regulatory reporting cross-border payments smart contracts

    ecommerce digital identity anti-counterfeiting mechanisms
  26. blockhow?

  27. public shared private

  28. cryptography

  29. addresses

  30. hash algorithm

  31. Merkle tree aka. binary hash tree

  32. A B C D HAB HCD R B Merkle path:

  33. genesis block

  34. consensus

  35. proof of work proof of stake

  36. example

  37. Hashchain?

  38. $storage = new SqliteStorage('chain.sq3'); $signer = new OpenSslSigner('private.key', 'public.key'); $genesis

    = new GenesisBlock('fiat lux'); $state = new State(); $chain = new Hashchain($storage, $signer, $genesis, $state); $chain->createBlock(new CreateAccount('A', 'Alpha')); $chain->createBlock(new CreateAccountWithCredits('Z', 'Zulu', 1000)); $chain->createBlock(new SendCredits('Z', 'A', 100));
  39. // Not enough credits: Z sent 100 to A and

    has only 900! $chain->createBlock(new SendCredits('Z', 'A', 1000)); // Sender X does not exist! $chain->createBlock(new SendCredits('X', 'A', 1000)); // Account Zulu already exists! $chain->createBlock(new CreateAccount('Z', 'Zulu'));
  40. challenges

  41. conflict resolution

  42. integration with existing systems

  43. performance scalability throughput

  44. mining and incentives rewards for maintaining network nodes

  45. security

  46. privacy

  47. hard forks

  48. summary

  49. right solution for the right kind of problem

  50. Event Sourcing (on steroids)

  51. scratching surface

  52. BlocQuestions?

  53. Slides https://speakerdeck.com/thunderer/dive-deep-into-blockchain Resources http://www.imponderablethings.com/2013/07/how-bitcoin-works-under-hood.html http://chimera.labs.oreilly.com/books/1234000001802/index.html (Mastering Bitcoin) https://www.coindesk.com/math-behind-bitcoin (EC) https://en.wikipedia.org/wiki/Four_Knights_Game

    (Chess) http://queue.acm.org/detail.cfm?id=3136559 (Bitcoin) https://blog.acolyer.org/2017/08/30/a-concurrent-perspective-on-smart-contracts (smart contracts) https://en.bitcoin.it/wiki/Secp256k1 (Bitcoin Elliptic Curve) Pictures (Creative Commons) https://www.flickr.com/photos/skyseeker/14404947216 (lightning) https://www.flickr.com/photos/atermath/3053484935 (stripes) https://www.flickr.com/photos/randnotizenorg/32110828536 (electronic) https://www.flickr.com/photos/23221002@N00/7204014842 (equations) https://www.flickr.com/photos/spookyamd/14184019077 (mountain) https://www.flickr.com/photos/s1ng0/5445857570 (trees) https://www.flickr.com/photos/95213174@N08/10329928973 (handshake) https://www.flickr.com/photos/wiertz/4563720850 (signature) https://www.flickr.com/photos/33279673@N03/5482493912 (chains)
  54. please rate the talk and give feedback on joind.in/talk/74cb2

  55. Thankschain! github /thunderer twitter @tmmx