$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
イーサリアムの技術 / Ethereum Technology
Search
Kenji Saito
PRO
February 06, 2019
Technology
1
520
イーサリアムの技術 / Ethereum Technology
2019年2月6日(水)、ブロックチェーンハブ主催で開催されたブロックチェーンアカデミー「イーサリアムの技術」にて使用したスライドです。
Kenji Saito
PRO
February 06, 2019
Tweet
Share
More Decks by Kenji Saito
See All by Kenji Saito
成果 / Achievements
ks91
PRO
0
6
意思決定 / Decision-Making
ks91
PRO
0
10
ファンディングとデジタル市民社会 / Funding and Digital Civil Society
ks91
PRO
0
15
生成AI による論文執筆サポート・ワークショップ 論文執筆・推敲編 / Generative AI-Assisted Paper Writing Support Workshop: Drafting and Revision Edition
ks91
PRO
0
28
私たちの前提は揺るがないのか / Are Our Premises Unshakeable?
ks91
PRO
0
22
貨幣無き世界への過程 / The Process Towards a World without Money
ks91
PRO
0
10
ファンディング / Funding
ks91
PRO
0
8
デジタル市民社会 / Digital Civil Society
ks91
PRO
0
11
発表と総括 / Presentations and Summary
ks91
PRO
0
6
Other Decks in Technology
See All in Technology
IAMユーザーゼロの運用は果たして可能なのか
yama3133
1
320
AIと二人三脚で育てた、個人開発アプリグロース術
zozotech
PRO
1
730
WordPress は終わったのか ~今のWordPress の制作手法ってなにがあんねん?~ / Is WordPress Over? How We Build with WordPress Today
tbshiki
1
770
MLflowで始めるプロンプト管理、評価、最適化
databricksjapan
1
230
Database イノベーショントークを振り返る/reinvent-2025-database-innovation-talk-recap
emiki
0
180
エンジニアリングをやめたくないので問い続ける
estie
2
1.2k
Lookerで実現するセキュアな外部データ提供
zozotech
PRO
0
110
今からでも間に合う!速習Devin入門とその活用方法
ismk
1
710
re:Invent2025 コンテナ系アップデート振り返り(+CloudWatchログのアップデート紹介)
masukawa
0
370
ログ管理の新たな可能性?CloudWatchの新機能をご紹介
ikumi_ono
1
750
「Managed Instances」と「durable functions」で広がるAWS Lambdaのユースケース
lamaglama39
0
320
AWS Security Agentの紹介/introducing-aws-security-agent
tomoki10
0
250
Featured
See All Featured
Designing Experiences People Love
moore
143
24k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
Code Review Best Practice
trishagee
74
19k
Scaling GitHub
holman
464
140k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
A Tale of Four Properties
chriscoyier
162
23k
How to Ace a Technical Interview
jacobian
280
24k
Building Applications with DynamoDB
mza
96
6.8k
Practical Orchestrator
shlominoach
190
11k
KATA
mclloyd
PRO
33
15k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Transcript
ΠʔαϦΞϜͷٕज़ ϒϩοΫνΣʔϯج൫ٕज़ʲϒϩοΫνΣʔϯͷԠ༻ج൫ʳ ϒϩοΫνΣʔϯϋϒ CSO / ܚጯٛक़େֶ SFC ݚڀॴ ্੮ॴһ ੪౻
ݡ࣐
[email protected]
ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.1/28
؆୯ͳࣗݾհ ੪౻ ݡ࣐ (͍͞ͱ͏ ͚Μ͡) ܚጯٛक़େֶ SFC ݚڀॴ ্੮ॴһɾڥใֶ෦ ߨࢣ
(ඇৗۈ) גࣜձࣾϒϩοΫνΣʔϯϋϒ CSO (Chief Science Officer) Ұൠࣾஂ๏ਓϏϤϯυϒϩοΫνΣʔϯ දཧࣄ Ұൠࣾஂ๏ਓΞΧσϛʔΩϟϯϓ දཧࣄ ܦྺ 1993 ɺίʔωϧେֶΑΓֶम࢜߸औಘ (ίϯϐϡʔλαΠΤϯε) 2006 ɺܚጯٛक़େֶΑΓσδλϧ௨՟ͷݚڀͰത࢜߸औಘ (ࡦɾϝσΟΞ) ܚጯٛक़େֶ େֶӃ ࡦɾϝσΟΞݚڀՊ SFC ݚڀॴʹͯ 18 Ҏ্ʹΘͨΓ P2P (Peer-to-Peer) ͓Αͼσδλϧ௨՟ͷݚڀʹैࣄ 2011 ՆΑΓౡͷ͜ͲͨͪͷͨΊͷʮΞΧσϛʔΩϟϯϓʯΛؒΒͱ։࠵ ࡢՆ SFC ʹͯ ΞΧσϛʔΩϟϯϓ 2018 ՆʮΦοέʔάʔάϧɺ॓ͬͱ͍ͯʂʯΛ࣮ࢪ ࠓिɺΞΧσϛʔΩϟϯϓ 2019 ౙʮԵঁͷͨΊͷΦʔτϝʔγϣϯ ∼ ΧϫΠΠࣗಈԽͰ͖ΔʂʯΛ༧ఆ → ࢲͷ಄ͷதͰͭͳ͕͍ͬͯ·͢ (͜Ε͔ΒͷࣾձͷσβΠϯ͜ͲͨͪͱҰॹʹ) ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.2/28
ࠓճͷςʔϚ ϒϩοΫνΣʔϯʹΑΔΞϓϦέʔγϣϯͷج൫ͱͯ͠։ൃ͞Ε͍ͯΔ ΠʔαϦΞϜʹ͍ͭͯɺ ΠʔαϦΞϜԾϚγϯ (EVM)ɺ ֎෦ΞΫλʔɺ ࣗΦϒδΣΫτͳͲͷ֓೦ɺ ࣮ํࣜͷಛɺਐԽͷํ ͳͲʹ͍ͭͯղઆ͠·͢ ΠʔαϦΞϜͷٕज़
— ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.3/28
ΠʔαϦΞϜ (Ethereum) ͷ֓ཁ ϒϩοΫνΣʔϯͱঢ়ଶભҠ EVM (Ethereum Virtual Machine) ΠʔαϦΞϜͷٕज़ —
ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.4/28
ΠʔαϦΞϜͱʁ Vitalik Buterin, “Ethereum White Paper: A NEXT GENERATION SMART
CONTRACT & DECENTRALIZED APPLICATION PLATFORM” ϒϩοΫνΣʔϯٕज़ΛԠ༻ ฏۉϒϩοΫִؒ 15 ඵΛඪ ͦ͜ʹϓϩάϥϛϯάݴޠΛࡌͤΔ νϡʔϦϯάશ ࢄΞϓϦέʔγϣϯͷͨΊͷج൫ ͨͩ͠ػೳࢄ͢ΔΘ͚Ͱͳ͍ͷͰɺDApps ͱݺΜͰ͠·ͬͨํ͕ଥ͔ ݱࡏͷۚ༥ɾ՟ฎܦࡁγεςϜΛ࣌Εʹ͠Α͏ͱ͢Δҙਤ͕ݟ͑Δ εϚʔτίϯτϥΫτ ͱͦͦͦ͏͍͏ͷ σδλϧࢿ࢈ͷҠసঢ়ଶભҠΛࣗಈԽ͢Δ ৄ͘͠ʮεϚʔτίϯτϥΫτʯͷճͰ ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.5/28
ϒϩοΫνΣʔϯͱঢ়ଶભҠ ϒϩοΫνΣʔϯ = ঢ়ଶϚγϯͷ run ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06
– p.6/28
༻ޠମܥ Ether Ethereum ʹ͓͚Δ௨՟ ֎෦ΞΫλʔ σδλϧॺ໊Ͱ͖Δ࣮ࡏͰɺΞΧϯτΛͭ EOA : Externally-Owned Account
ࣗΦϒδΣΫτ γεςϜͰࣗಈ࡞͠ɺΞΧϯτΛͭ ͱݴ͏ͷͷɺϝοηʔδΛૹΒͳ͍ͱಈ͔ͳ͍ ΞΧϯτ Ether ߴΛͪɺετϨʔδ EVM ίʔυΛͯΔ EVM ίʔυ εϚʔτίϯτϥΫτͷϓϩάϥϜ ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.7/28
EVM : Ethereum Virtual Machine ࣗΦϒδΣΫτ͕ϝοηʔδΛड͚Δͱىಈ͠ɺίϯτϥΫτΛ࣮ߦɺঢ়ଶΛมԽͤ͞Δ ࣮ߦεςοϓຖʹ Gas ͷڙڅ͕ඞཁ ΠʔαϦΞϜͷٕज़
— ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.8/28
ΠʔαϦΞϜͷόʔδϣϯ Frontier (2015) Homestead (2016) Metropolis Byzantium (2017) ← ࠓ·ͩίί
zkSNARKs (θϩࣝূ໌) → Zcash on Ethereum (ZoE) ϒϩοΫใुͷݮগԽ Constantinople (2019) Serenity ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.9/28
ϒϩοΫνΣʔϯͷ՝ͱΠʔαϦΞϜ ॾʑͷϒϩοΫνΣʔϯͷ՝ʹରͯ͠ɺݱࡏͷϒϩοΫνΣʔϯͷߟ͑ํͷ ԆͰऔΓΉ ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.10/28
ϒϩοΫνΣʔϯͷٕज़తͳ՝ͷཧ ඇ࣮࣌ؒੑ (֬తಈ࡞) ൿಗͷࠔੑ (ສਓͷݕূՄೳੑͷ୲อ) ϫϯωε (ࢄ vs. ෳ) εέʔϥϏϦςΟ͕ͳ͍
(શࢀՃऀʹෳ͞ΕΔͳΒεέʔϧ͠ͳ͍) ਐԽͷΨόφϯε͕ࠔ (શһ͕ҰؙͱͳΔඞཁ͕͋ΔͳΒมΘΕͳ͍) ΠϯηϯςΟϒෆ߹ੑ ωΠςΟϒ௨՟ͷՁͰࢧ͑ΒΕ͍ͯΔ (མ͢Δͱͯ͢ͷԠ༻͕ࢭ·Δ) ⇒ θϩϕʔεͰઃܭͤ͠ղ͚Δ ࣮ࡍʹਐߦதͰ͢ (ྫ : BBc-1) ଟ͘ͷ DLT θϩϕʔεͰߟ͍͑ͯͳ͍ͱ͜Ζ͕ ྫ : ࡞ۀূ໌ͷ͔ͳ͍ϋογϡνΣʔϯվ͟Μ͠์ ྫ : ৽ฉϞσϧͰɺۀքࢴࣾใʹࡌͤΔΑ͏ͳ͜ͱΛͯ͠ଘࡏূ໌ʹͳΒͳ͍ ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.11/28
ΠʔαϦΞϜͲ͏औΓΉ͔ ඇ࣮࣌ؒੑ (֬తಈ࡞) ⇒ τϥϯβΫγϣϯΛϑΝΠφϥΠζ͢ΔΈ (Casper) ൿಗͷࠔੑ (ສਓͷݕূՄೳੑͷ୲อ) ⇒ ZoE
(Zcash on Ethereum) ϫϯωε (ࢄ vs. ෳ) εέʔϥϏϦςΟ͕ͳ͍ (શࢀՃऀʹෳ͞ΕΔͳΒεέʔϧ͠ͳ͍) ⇒ γϟʔσΟϯάɺPlasma ਐԽͷΨόφϯε͕ࠔ (શһ͕ҰؙͱͳΔඞཁ͕͋ΔͳΒมΘΕͳ͍) ⇒ ༏͍͠ಠࡋऀ (ۤস) (Benevolent Dictator For Life (BDFL)) ΠϯηϯςΟϒෆ߹ੑ ωΠςΟϒ௨՟ͷՁͰࢧ͑ΒΕ͍ͯΔ (མ͢Δͱͯ͢ͷԠ༻͕ࢭ·Δ) ⇒ ΞϓϦΛ࣮ߦ͍ͨ͠ਓʑ͕ങ͍ࢧ͑Δʁ ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.12/28
ΠʔαϦΞϜͷٕज़ͷಛ Proof of Work + φΧϞτίϯηϯαε ͔Β ચ࿅͞Εͨ Proof of
Stake + ߹੍ٞ ·ͣݱঢ়ͷઆ໌͔Β ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.13/28
҉߸ֶతϋογϡؔ ϏοτίΠϯ 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
GHOST (Greedy Heaviest Observed Subtree) ฏۉϒϩοΫִؒΛ͘ઃఆ͢Δͱ ແବΛ౿ΉϚΠφʔ͕૿͑Δ ແବΛ౿·ͳ͍ϚΠφʔ͕ूத͍͢͠ ⇒ GHOST
ʹΑΓղܾΛࢦ͢ ܥͷखલͷϒϩοΫ () ͚ͩͰͳ͘ɺੜͨ͠ΦʔϑΝϯͰ͋Δ “uncles” Λࢀর্ͨ͠Ͱɺproof of work ͷίετΛܭࢉ͠ɺ࠷ॏ͍ίετ͕ ͔͔ͬͨͷΛશһ͕બ͢Δ (มܗͨ͠φΧϞτίϯηϯαε) ߋʹɺuncle ϚΠχϯάใुΛड͚औΔ ΠʔαϦΞϜͰ uncles ͷࢀরΛ 7 ஈ֊લ·Ͱʹ੍ݶͨ͠ GHOST Λ࠾༻ ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.15/28
มܗϚʔΫϧɾύτϦγΞ IUUQTFOXJLJQFEJBPSHXJLJ3BEJY@USFF ύτϦγΞͷྫ 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
ΠʔαϦΞϜͷਐԽͷํ Proof of Stake ͷظͱ՝ Casper γϟʔσΟϯά ͦͷଞͷٕज़ಈ ΠʔαϦΞϜͷٕज़ —
ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.17/28
Proof of Stake ͱʁ ϒϩοΫΛੜͰ͖Δ͕֬ɺ֘ίΠϯͷ࣋ͪͷଟ͞ʹԠ্ͯ͡ঢ͢Δ ࣍ͷརΛͭͱݴΘΕΔ ΤωϧΪʔফඅ͕͍ (ແࢹͰ͖Δ) ू͕ΑΓࠔ (ίΠϯͷաΛॴ༗Ͱ͖Δ͔)
ϐΞίΠϯͳͲͰ࠾༻͞ΕΔ ΠʔαϦΞϜҠߦ ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.18/28
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
Proof of Stake ͷ 3ͭͷ 1. ίΠϯͷཷΊࠐΈ 2. “Nothing at
Stake” ظత ظత 3. ίετ 51% ߈ܸ ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.20/28
ίΠϯͷཷΊࠐΈ ͕࣋ͪଟ͍ํ͕༗རͳͷͰɺίΠϯཷΊࠐ·ΕɺΘΕͳ͍͕ੜ͡Δ ՟ฎϝσΟΞͱͯ͠ͷجຊػೳ્͕͞ΕΔ ରࡦ : Proof of Stake Velocity ݹ͍ίΠϯͷ࣋ͪධՁΛԼ͛Δ
Reddcoin ͳͲͰ࠾༻͞ΕΔ ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.21/28
Nothing at Stake - ظత ࣄނ·ͨނҙʹνΣΠϯ͕ذͨ͠߹ɺࢀՃऀʹࣄଶΛऩर͢Δಈػ͕ͳ͍ Կౌ͚͍ͯͳ͍ φΧϞτɾίϯηϯαε͕ҙਤ௨Γʹಇ͔ͳ͍ φΧϞτɾίϯηϯαε =
վ͟Μίετ͕࠷େ͖͍ྺ࢙Λ࠾༻͢Δ ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.22/28
Nothing at Stake - ظత γεςϜΛ։࢝ͨ͠ऀԿͰશମΛΓͤΔ δΣωγεϒϩοΫͷ࣌Ͱ࣋ͪ 100% ͦͷଞͷࢀՃऀɺ࣋ͪ͑͋͞Ε͔ͦ͜ΒΓͤΔ ૉͷ
Proof of Stake ͰِΛࢭͰ͖ͳ͍ ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.23/28
ίετ 51% ߈ܸ ίΠϯͷաΛऔಘ͢ΔҙࢥͱɺͦͷͨΊͷेͳࢿۚͷূڌΛද໌͢Δ ͢ΔͱɺγεςϜͷਖ਼ৗͳҡ͕࣋ظͰ͖ͳ͍ͱ༧͞ΕΔͨΊɺ ίΠϯͷՁ͕֨ٸམ͢Δ ͦ͜ͰίΠϯΛങ͍ΊΔ ݪཧతʹɺ΄ͱΜͲίετΛΘͣʹίΠϯͷաΛೖखͰ͖Δ ΠʔαϦΞϜͷٕज़ —
ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.24/28
Casper : ΠʔαϦΞϜͰͷऔΓΈ Nothing at Stake ͷରࡦ ࠾༻͞Εͳ͔ͬͨνΣʔϯͰϒϩοΫΛೝΊͨݕূऀΛേ͢Δ (Slasher) σϙδοτΛཱͬͯީิ͢ΔݕূऀͨͪʹΑΔථํࣜ
100 ϒϩοΫߴຖʹʮνΣ οΫϙΠϯτʯΛઃ͚ɺσϙδοτֹʹԠͨ͡ॏΈ ͖ͷථͰਖ਼ͳνΣʔϯΛܾΊΔ ࣍ͷνΣ οΫϙΠϯτ͕ਖ਼Խ͞ΕΔͱɺखલͷνΣ οΫϙΠϯτʮ֬ఆʯ ͱͳΔ ⇒ Ͳ͜·ͰຽओతͰ͍ΒΕΔ͔ʁ ωοτϫʔΫͷஅ͕ى͖͍ͯͳ͍͜ͱ͕લఏʹࢥ͑Δ ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.25/28
γϟʔσΟϯά (ਫฏׂ) ݕূ࡞ۀͷݖԽ εέʔϥϏϦςΟʹ͚ͨΞϓϩʔν γϟʔυͷࢀՃΛΊ͙ΔઓུతߦಈΛݗ੍͢ΔͨΊ PoS ͕લఏ ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़
— 2019-02-06 – p.26/28
ͦͷଞͷٕज़ಈ µRaiden ϖΠϝϯτνϟωϧ Raiden Network ϖΠϝϯτνϟωϧؒΛϗοϓ͢Δ Plasma ϒϩοΫνΣʔϯͷ֊Խ ϒϩοΫνΣʔϯͷ՝ղܾʹ͚ͯݕ౼͞Ε͍ͯΔٕज़ͷʮશ෦ͷͤʯ ͋Δҙຯɺ࣮ݧγεςϜͱͯ͠ͷ໘༂
ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.27/28
࣭ٞ͝Λ ΠʔαϦΞϜͷٕज़ — ϒϩοΫνΣʔϯج൫ٕज़ — 2019-02-06 – p.28/28