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

イーサリアムの技術 / Ethereum Technology

イーサリアムの技術 / Ethereum Technology

2019年2月6日(水)、ブロックチェーンハブ主催で開催されたブロックチェーンアカデミー「イーサリアムの技術」にて使用したスライドです。

Kenji Saito
PRO

February 06, 2019
Tweet

More Decks by Kenji Saito

Other Decks in Technology

Transcript

  1. ΠʔαϦΞϜͷٕज़ ϒϩοΫνΣʔϯج൫ٕज़ʲϒϩοΫνΣʔϯͷԠ༻ج൫ʳ ϒϩοΫνΣʔϯϋϒ CSO / ܚጯٛक़େֶ SFC ݚڀॴ ্੮ॴһ ੪౻

    ݡ࣐ [email protected] ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.1/28
  2. ؆୯ͳࣗݾ঺հ ੪౻ ݡ࣐ (͍͞ͱ͏ ͚Μ͡) ܚጯٛक़େֶ SFC ݚڀॴ ্੮ॴһɾ؀ڥ৘ใֶ෦ ߨࢣ

    (ඇৗۈ) גࣜձࣾϒϩοΫνΣʔϯϋϒ CSO (Chief Science Officer) Ұൠࣾஂ๏ਓϏϤϯυϒϩοΫνΣʔϯ ୅දཧࣄ Ұൠࣾஂ๏ਓΞΧσϛʔΩϟϯϓ ୅දཧࣄ ܦྺ 1993 ೥ɺίʔωϧେֶΑΓ޻ֶम࢜߸औಘ (ίϯϐϡʔλαΠΤϯε) 2006 ೥ɺܚጯٛक़େֶΑΓσδλϧ௨՟ͷݚڀͰത࢜߸औಘ (੓ࡦɾϝσΟΞ) ܚጯٛक़େֶ େֶӃ ੓ࡦɾϝσΟΞݚڀՊ΍ SFC ݚڀॴʹͯ 18 ೥Ҏ্ʹΘͨΓ P2P (Peer-to-Peer) ͓Αͼσδλϧ௨՟౳ͷݚڀʹैࣄ 2011 ೥ՆΑΓ෱ౡͷ͜Ͳ΋ͨͪͷͨΊͷʮΞΧσϛʔΩϟϯϓʯΛ஥ؒΒͱ։࠵ ࡢՆ͸ SFC ʹͯ ΞΧσϛʔΩϟϯϓ 2018 ՆʮΦοέʔάʔάϧɺ॓୊΍ͬͱ͍ͯʂʯΛ࣮ࢪ ࠓि຤ɺΞΧσϛʔΩϟϯϓ 2019 ౙʮԵঁͷͨΊͷΦʔτϝʔγϣϯ ∼ ΧϫΠΠ͸ࣗಈԽͰ͖ΔʂʯΛ༧ఆ → ࢲͷ಄ͷதͰ͸ͭͳ͕͍ͬͯ·͢ (͜Ε͔ΒͷࣾձͷσβΠϯ͸͜Ͳ΋ͨͪͱҰॹʹ) ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.2/28
  3. ࠓճͷςʔϚ ϒϩοΫνΣʔϯʹΑΔΞϓϦέʔγϣϯͷج൫ͱͯ͠։ൃ͞Ε͍ͯΔ ΠʔαϦΞϜʹ͍ͭͯɺ ΠʔαϦΞϜԾ૝Ϛγϯ (EVM)ɺ ֎෦ΞΫλʔɺ ࣗ཯ΦϒδΣΫτͳͲͷ֓೦΍ɺ ࣮૷ํࣜͷಛ௃ɺਐԽͷํ޲ ͳͲʹ͍ͭͯղઆ͠·͢ ΠʔαϦΞϜͷٕज़

    — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.3/28
  4. ΠʔαϦΞϜ (Ethereum) ͷ֓ཁ ϒϩοΫνΣʔϯͱঢ়ଶભҠ EVM (Ethereum Virtual Machine) ΠʔαϦΞϜͷٕज़ —

    ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.4/28
  5. ΠʔαϦΞϜͱ͸ʁ Vitalik Buterin, “Ethereum White Paper: A NEXT GENERATION SMART

    CONTRACT & DECENTRALIZED APPLICATION PLATFORM” ϒϩοΫνΣʔϯٕज़ΛԠ༻ ฏۉϒϩοΫִؒ໿ 15 ඵΛ໨ඪ ͦ͜ʹϓϩάϥϛϯάݴޠΛࡌͤΔ νϡʔϦϯά׬શ ෼ࢄΞϓϦέʔγϣϯͷͨΊͷج൫ ͨͩ͠ػೳ෼ࢄ͢ΔΘ͚Ͱ͸ͳ͍ͷͰɺDApps ͱݺΜͰ͠·ͬͨํ͕ଥ౰͔΋ ݱࡏͷۚ༥ɾ՟ฎܦࡁγεςϜΛ࣌୅஗Εʹ͠Α͏ͱ͢Δҙਤ͕ݟ͑Δ εϚʔτίϯτϥΫτ ͱ͸ͦ΋ͦ΋ͦ͏͍͏΋ͷ σδλϧࢿ࢈ͷҠస΍ঢ়ଶભҠΛࣗಈԽ͢Δ ৄ͘͠͸ʮεϚʔτίϯτϥΫτʯͷճͰ ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.5/28
  6. ϒϩοΫνΣʔϯͱঢ়ଶભҠ ϒϩοΫνΣʔϯ = ঢ়ଶϚγϯͷ run ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06

    – p.6/28
  7. ༻ޠମܥ Ether Ethereum ʹ͓͚Δ௨՟ ֎෦ΞΫλʔ σδλϧॺ໊Ͱ͖Δ࣮ࡏͰɺΞΧ΢ϯτΛ΋ͭ EOA : Externally-Owned Account

    ࣗ཯ΦϒδΣΫτ γεςϜ಺Ͱࣗ཯ಈ࡞͠ɺΞΧ΢ϯτΛ΋ͭ ͱ͸ݴ͏΋ͷͷɺϝοηʔδΛૹΒͳ͍ͱಈ͔ͳ͍ ΞΧ΢ϯτ Ether ࢒ߴΛ΋ͪɺετϨʔδ΍ EVM ίʔυΛ΋ͯΔ EVM ίʔυ εϚʔτίϯτϥΫτͷϓϩάϥϜ ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.7/28
  8. EVM : Ethereum Virtual Machine ࣗ཯ΦϒδΣΫτ͕ϝοηʔδΛड͚Δͱىಈ͠ɺίϯτϥΫτΛ࣮ߦɺঢ়ଶΛมԽͤ͞Δ ࣮ߦεςοϓຖʹ Gas ͷڙڅ͕ඞཁ ΠʔαϦΞϜͷٕज़

    — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.8/28
  9. ΠʔαϦΞϜͷόʔδϣϯ Frontier (2015) Homestead (2016) Metropolis Byzantium (2017) ← ࠓ·ͩίί

    zkSNARKs (θϩ஌ࣝূ໌) → Zcash on Ethereum (ZoE) ϒϩοΫใुͷݮগԽ Constantinople (2019) Serenity ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.9/28
  10. ϒϩοΫνΣʔϯͷ՝୊ͱΠʔαϦΞϜ ॾʑͷϒϩοΫνΣʔϯͷ՝୊ʹରͯ͠ɺݱࡏͷϒϩοΫνΣʔϯͷߟ͑ํͷ Ԇ௕ͰऔΓ૊Ή ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.10/28

  11. ϒϩοΫνΣʔϯͷٕज़తͳ՝୊ͷ੔ཧ ඇ࣮࣌ؒੑ (֬཰తಈ࡞) ൿಗͷࠔ೉ੑ (ສਓ΁ͷݕূՄೳੑͷ୲อ) ϫϯωε (෼ࢄ vs. ෳ੡) εέʔϥϏϦςΟ͕ͳ͍

    (શࢀՃऀʹෳ੡͞ΕΔͳΒεέʔϧ͠ͳ͍) ਐԽͷΨόφϯε͕ࠔ೉ (શһ͕ҰؙͱͳΔඞཁ͕͋ΔͳΒมΘΕͳ͍) ΠϯηϯςΟϒෆ੔߹ੑ ωΠςΟϒ௨՟ͷՁ஋Ͱࢧ͑ΒΕ͍ͯΔ (๫མ͢Δͱ͢΂ͯͷԠ༻͕ࢭ·Δ) ⇒ θϩϕʔεͰઃܭ͠௚ͤ͹ղ͚Δ ࣮ࡍʹਐߦதͰ͢ (ྫ : BBc-1) ଟ͘ͷ DLT ͸θϩϕʔεͰߟ͍͑ͯͳ͍ͱ͜Ζ͕໰୊ ྫ : ࡞ۀূ໌ͷ෇͔ͳ͍ϋογϡνΣʔϯ͸վ͟Μ͠์୊ ྫ : ৽ฉϞσϧͰɺۀքࢴ΍ࣾ಺ใʹࡌͤΔΑ͏ͳ͜ͱΛͯ͠΋ଘࡏূ໌ʹͳΒͳ͍ ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.11/28
  12. ΠʔαϦΞϜ͸Ͳ͏औΓ૊Ή͔ ඇ࣮࣌ؒੑ (֬཰తಈ࡞) ⇒ τϥϯβΫγϣϯΛϑΝΠφϥΠζ͢Δ࢓૊Έ΁ (Casper) ൿಗͷࠔ೉ੑ (ສਓ΁ͷݕূՄೳੑͷ୲อ) ⇒ ZoE

    (Zcash on Ethereum) ϫϯωε (෼ࢄ vs. ෳ੡) εέʔϥϏϦςΟ͕ͳ͍ (શࢀՃऀʹෳ੡͞ΕΔͳΒεέʔϧ͠ͳ͍) ⇒ γϟʔσΟϯάɺPlasma ਐԽͷΨόφϯε͕ࠔ೉ (શһ͕ҰؙͱͳΔඞཁ͕͋ΔͳΒมΘΕͳ͍) ⇒ ༏͍͠ಠࡋऀ (ۤস) (Benevolent Dictator For Life (BDFL)) ΠϯηϯςΟϒෆ੔߹ੑ ωΠςΟϒ௨՟ͷՁ஋Ͱࢧ͑ΒΕ͍ͯΔ (๫མ͢Δͱ͢΂ͯͷԠ༻͕ࢭ·Δ) ⇒ ΞϓϦΛ࣮ߦ͍ͨ͠ਓʑ͕ങ͍ࢧ͑Δʁ ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.12/28
  13. ΠʔαϦΞϜͷٕज़ͷಛ௃ Proof of Work + φΧϞτίϯηϯαε ͔Β ચ࿅͞Εͨ Proof of

    Stake + ߹੍ٞ ΁ ·ͣ͸ݱঢ়ͷઆ໌͔Β ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.13/28
  14. ҉߸ֶతϋογϡؔ਺ ϏοτίΠϯ SHA-256 × SHA-256 SHA-256 × RIPEMD-160 ೋॏʹద༻͢Δ͜ͱͷҙຯ (1

    ஈ໨͕িಥͨ͠Βʁ) . . . ͳ͘Ͷʁ ઃܭҙਤͱҟͳΔ༻్ʹ༻͍Δ͜ͱʹΑΔ໰୊ ઃܭҙਤͱͯ͠͸ܭࢉίετ͕খ͘͞ͳΔΑ͏ʹ࡞ΒΕ͍ͯΔ ϥΠτίΠϯ scrypt (ϝϞϦΛ;ΜͩΜʹ࢖͏) ΠʔαϦΞϜ Ethash (Dagger-Hashimoto ͷਐԽܗ) DAG : Directed Acyclic Graph (༗޲ඇ८ճάϥϑ) https://github.com/ethereum/wiki/wiki/Ethash ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.14/28
  15. GHOST (Greedy Heaviest Observed Subtree) ฏۉϒϩοΫִؒΛ୹͘ઃఆ͢Δͱ ແବ଍Λ౿ΉϚΠφʔ͕૿͑Δ ແବ଍Λ౿·ͳ͍ϚΠφʔ͕ूத͠΍͍͢ ⇒ GHOST

    ʹΑΓղܾΛ໨ࢦ͢ ௚ܥͷखલͷϒϩοΫ (਌) ͚ͩͰͳ͘ɺ೿ੜͨ͠ΦʔϑΝϯͰ͋Δ “uncles” Λ΋ࢀর্ͨ͠Ͱɺproof of work ͷίετΛܭࢉ͠ɺ࠷΋ॏ͍ίετ͕ ͔͔ͬͨ΋ͷΛશһ͕બ୒͢Δ (มܗͨ͠φΧϞτίϯηϯαε) ߋʹɺuncle ΋ϚΠχϯάใुΛड͚औΔ ΠʔαϦΞϜͰ͸ uncles ͷࢀরΛ 7 ஈ֊લ·Ͱʹ੍ݶͨ͠ GHOST Λ࠾༻ ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.15/28
  16. มܗϚʔΫϧɾύτϦγΞ໦ IUUQTFOXJLJQFEJBPSHXJLJ[email protected] ύτϦγΞ໦ͷྫ key ͸೚ҙͷόΠτྻͰ΋ OK PATRICIA (Practical Algorithm To

    Retrieve Information Coded In Alphanumeric) Trie (τϥΠ໦) (key, value) Λදݱ͠ɺݕࡧͰ͖Δ τϥΠ໦ͷઅΛࢀর͢ΔͨΊʹμΠδΣετ͕࢖ΘΕΔ ௖఺ΛϚʔΫϧϧʔτͱͯ͠ѻ͑Δ ૬ҧɾվ͟Μ͸ݕग़͞ΕΔ ֤ཁૉ͸ RLP (recursive length prefix encoding) ʹΑΓ ූ߸Խ͞ΕΔ ΠʔαϦΞϜʹ͓͚Δঢ়ଶɺετϨʔδɺτϥϯβΫγϣϯ ͷϦετ౳ͷදݱʹ࢖ΘΕΔ ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.16/28
  17. ΠʔαϦΞϜͷਐԽͷํ޲ Proof of Stake ΁ͷظ଴ͱ՝୊ Casper γϟʔσΟϯά ͦͷଞͷٕज़ಈ޲ ΠʔαϦΞϜͷٕज़ —

    ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.17/28
  18. Proof of Stake ͱ͸ʁ ϒϩοΫΛੜ੒Ͱ͖Δ֬཰͕ɺ౰֘ίΠϯͷ࣋ͪ෼ͷଟ͞ʹԠ্ͯ͡ঢ͢Δ ࣍ͷར఺Λ΋ͭͱݴΘΕΔ ΤωϧΪʔফඅ͕௿͍ (ແࢹͰ͖Δ) ू໿͕ΑΓࠔ೉ (ίΠϯͷա൒਺Λॴ༗Ͱ͖Δ͔)

    ϐΞίΠϯͳͲͰ࠾༻͞ΕΔ ΠʔαϦΞϜ΋Ҡߦ΁ ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.18/28
  19. Proof of Stake ͷҰൠࣜ (ݹ͍ߟ͑ํ) Hn (PD + id +

    t + . . .) ≤ 2n × balance d Hn : n Ϗοτ஋Λग़ྗ͢Δ҉߸ֶతϋογϡؔ਺ (ex. SHA-256 (n = 256)) PD : ௚લͷϒϩοΫͷμΠδΣετ id : ΞΧ΢ϯτͷࣝผࢠ (ex. ެ։ݤͷμΠδΣετ) t : ࣌ࠁ (ex. UNIX ࣌ࠁ (ඵ)) balance : ౰֘ΞΧ΢ϯτͷ࢒ߴ d : ೉қ౓ (ex. ίΠϯͷ૯ྔ) μΠδΣετΛ༻͍Δ PoW ͷܗࣜͰද͞ΕΔ ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.19/28
  20. Proof of Stake ͷ 3ͭͷ໰୊ 1. ίΠϯͷཷΊࠐΈ 2. “Nothing at

    Stake” ୹ظత໰୊ ௕ظత໰୊ 3. ௿ίετ 51% ߈ܸ ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.20/28
  21. ίΠϯͷཷΊࠐΈ ࣋ͪ෼͕ଟ͍ํ͕༗རͳͷͰɺίΠϯ͸ཷΊࠐ·Εɺ࢖ΘΕͳ͍܏޲͕ੜ͡Δ ՟ฎϝσΟΞͱͯ͠ͷجຊػೳ્͕֐͞ΕΔ ରࡦ : Proof of Stake Velocity ݹ͍ίΠϯͷ࣋ͪ෼ධՁΛԼ͛Δ

    Reddcoin ͳͲͰ࠾༻͞ΕΔ ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.21/28
  22. Nothing at Stake - ୹ظత໰୊ ࣄނ·ͨ͸ނҙʹνΣΠϯ͕෼ذͨ͠৔߹ɺࢀՃऀʹ͸ࣄଶΛऩर͢Δಈػ͕ͳ͍ Կ΋ౌ͚͍ͯͳ͍ φΧϞτɾίϯηϯαε͕ҙਤ௨Γʹಇ͔ͳ͍ φΧϞτɾίϯηϯαε =

    վ͟Μίετ͕࠷΋େ͖͍ྺ࢙Λ࠾༻͢Δ ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.22/28
  23. Nothing at Stake - ௕ظత໰୊ γεςϜΛ։࢝ͨ͠ऀ͸Կ౓Ͱ΋શମΛ΍Γ௚ͤΔ δΣωγεϒϩοΫͷ࣌఺Ͱ࣋ͪ෼͸ 100% ͦͷଞͷࢀՃऀ΋ɺ࣋ͪ෼͑͋͞Ε͹͔ͦ͜Β΍Γ௚ͤΔ ૉͷ

    Proof of Stake Ͱ͸ِ଄Λ཈ࢭͰ͖ͳ͍ ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.23/28
  24. ௿ίετ 51% ߈ܸ ίΠϯͷա൒਺Λऔಘ͢ΔҙࢥͱɺͦͷͨΊͷे෼ͳࢿۚͷূڌΛද໌͢Δ ͢ΔͱɺγεςϜͷਖ਼ৗͳҡ͕࣋ظ଴Ͱ͖ͳ͍ͱ༧૝͞ΕΔͨΊɺ ίΠϯͷՁ͕֨ٸམ͢Δ ͦ͜ͰίΠϯΛങ͍઎ΊΔ ݪཧతʹ͸ɺ΄ͱΜͲίετΛ෷ΘͣʹίΠϯͷա൒਺ΛೖखͰ͖Δ ΠʔαϦΞϜͷٕज़ —

    ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.24/28
  25. Casper : ΠʔαϦΞϜͰͷऔΓ૊Έ Nothing at Stake ໰୊΁ͷରࡦ ࠾༻͞Εͳ͔ͬͨνΣʔϯͰϒϩοΫΛೝΊͨݕূऀΛേ͢Δ (Slasher) σϙδοτΛ෷ཱͬͯީิ͢ΔݕূऀͨͪʹΑΔ౤ථํࣜ

    100 ϒϩοΫߴຖʹʮνΣ οΫϙΠϯτʯΛઃ͚ɺσϙδοτֹʹԠͨ͡ॏΈ ෇͖ͷ౤ථͰਖ਼౰ͳνΣʔϯΛܾΊΔ ࣍ͷνΣ οΫϙΠϯτ͕ਖ਼౰Խ͞ΕΔͱɺखલͷνΣ οΫϙΠϯτ͸ʮ֬ఆʯ ͱͳΔ ⇒ Ͳ͜·ͰຽओతͰ͍ΒΕΔ͔ʁ ωοτϫʔΫͷ෼அ͕ى͖͍ͯͳ͍͜ͱ͕લఏʹࢥ͑Δ ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.25/28
  26. γϟʔσΟϯά (ਫฏ෼ׂ) ݕূ࡞ۀͷ෼ݖԽ εέʔϥϏϦςΟʹ޲͚ͨΞϓϩʔν γϟʔυ΁ͷࢀՃΛΊ͙ΔઓུతߦಈΛݗ੍͢ΔͨΊ PoS ͕લఏ ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़

    — 2019-02-06 – p.26/28
  27. ͦͷଞͷٕज़ಈ޲ µRaiden ϖΠϝϯτνϟωϧ Raiden Network ϖΠϝϯτνϟωϧؒΛϗοϓ͢Δ Plasma ϒϩοΫνΣʔϯͷ֊૚Խ ϒϩοΫνΣʔϯͷ՝୊ղܾʹ޲͚ͯݕ౼͞Ε͍ͯΔٕज़ͷʮશ෦ͷͤʯ ͋Δҙຯɺ࣮ݧγεςϜͱͯ͠ͷ໘໨༂೗

    ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.27/28
  28. ࣭͝໰΍ٞ࿦Λ ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.28/28