Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
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
490
イーサリアムの技術 / Ethereum Technology
2019年2月6日(水)、ブロックチェーンハブ主催で開催されたブロックチェーンアカデミー「イーサリアムの技術」にて使用したスライドです。
Kenji Saito
PRO
February 06, 2019
Tweet
Share
More Decks by Kenji Saito
See All by Kenji Saito
スマートコントラクトと分散ファイナンス / Smart Contracts and Decentralized Finance
ks91
PRO
0
50
シン・ブロックチェーン / Truth of Blockchain
ks91
PRO
0
78
パスワード/パスフレーズと認証 / Password, Passphrase and Authentication
ks91
PRO
0
32
git と GitHub / git and GitHub
ks91
PRO
0
32
ソフトウェアの開発と保守 / Software Development and Maintenance
ks91
PRO
0
46
インターネットの特徴 / Features of the Internet
ks91
PRO
0
31
インターネットのガバナンス / Governance of the Internet
ks91
PRO
0
29
暗号学的ハッシュ関数 / Cryptographic Hash Function
ks91
PRO
0
35
デジタル署名 / Digital Signature
ks91
PRO
0
30
Other Decks in Technology
See All in Technology
ひとり情シスなCTOがLLMと始めるオペレーション最適化 / CTO's LLM-Powered Ops
yamitzky
0
430
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
26k
本が全く読めなかった過去の自分へ
genshun9
0
270
AWS CDK 実践的アプローチ N選 / aws-cdk-practical-approaches
gotok365
6
740
解析の定理証明実践@Lean 4
dec9ue
0
180
OpenHands🤲にContributeしてみた
kotauchisunsun
1
430
生成AIでwebアプリケーションを作ってみた
tajimon
2
150
登壇ネタの見つけ方 / How to find talk topics
pinkumohikan
5
440
A2Aのクライアントを自作する
rynsuke
1
170
Claude Code Actionを使ったコード品質改善の取り組み
potix2
PRO
6
2.2k
20250625 Snowflake Summit 2025活用事例 レポート / Nowcast Snowflake Summit 2025 Case Study Report
kkuv
1
310
Model Mondays S2E02: Model Context Protocol
nitya
0
220
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
53
7.7k
The Cult of Friendly URLs
andyhume
79
6.5k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.8k
Raft: Consensus for Rubyists
vanstee
140
7k
A Tale of Four Properties
chriscoyier
160
23k
Faster Mobile Websites
deanohume
307
31k
Visualization
eitanlees
146
16k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
124
52k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
5.9k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
700
GitHub's CSS Performance
jonrohan
1031
460k
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