Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
イーサリアムの技術 / Ethereum Technology
Kenji Saito
PRO
February 06, 2019
Technology
1
310
イーサリアムの技術 / Ethereum Technology
2019年2月6日(水)、ブロックチェーンハブ主催で開催されたブロックチェーンアカデミー「イーサリアムの技術」にて使用したスライドです。
Kenji Saito
PRO
February 06, 2019
Tweet
Share
More Decks by Kenji Saito
See All by Kenji Saito
FinTech Lecture 15 : Presentations and Conclusions
ks91
PRO
0
49
FinTech Lecture 14 : Q & A
ks91
PRO
0
56
FinTech Lecture 13 : FinTech Ideathon
ks91
PRO
0
58
AI との対話 / Interacting with AI
ks91
PRO
0
17
FinTech Lecture 12 : Cyber-Physical Society and Future of Finance
ks91
PRO
0
59
FinTech Lecture 11 : Further Smart Contracts
ks91
PRO
0
56
評判システムと自律分散社会 / Reputation Systems and Decentralized Autonomous Society
ks91
PRO
0
13
FinTech Lecture 10 : Smart Contracts
ks91
PRO
0
35
ブロックチェーンと近未来の金融システム / Blockchain and Financial System of the Near Future
ks91
PRO
0
110
Other Decks in Technology
See All in Technology
2022年に起きたフロントエンドの変化
sakito
29
17k
Cloudflare Workersで動くOG画像生成器
aiji42
1
460
OVN-Kubernetes-Introduction-ja-2023-01-27.pdf
orimanabu
1
220
API連携に伴う規制と対応 / Regulations and responses to API linkage
moneyforward
0
110
ML PM, DS PMってどんな仕事をしているの?
line_developers
PRO
1
210
Multi-Cloud Gatewayでデータを統治せよ!/ Data Federation with MCG
tutsunom
1
140
cdk deployに必要な権限ってなんだ?
kinyok
0
130
オンプレk8sとEKSの並行運用の実際
ch1aki
0
150
IoT から見る AWS re:invent 2022 ― AWSのIoTの歴史を添えて/Point of view the AWS re:invent 2022 with IoT - with a history of IoT in AWS
ma2shita
0
210
PCL (Point Cloud Library)の基本となぜ点群処理か_2023年_第2版.pdf
cvmlexpertguide
0
130
Virtual Thread - 導入の背景と、効果的な使い方 -
skrb
3
250
lt53
98_justdoit
0
110
Featured
See All Featured
How GitHub Uses GitHub to Build GitHub
holman
465
280k
Stop Working from a Prison Cell
hatefulcrawdad
263
18k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
224
50k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
349
27k
Making Projects Easy
brettharned
102
4.8k
KATA
mclloyd
12
9.7k
Testing 201, or: Great Expectations
jmmastey
25
5.7k
WebSockets: Embracing the real-time Web
robhawkes
58
6k
Building Adaptive Systems
keathley
27
1.3k
Build your cross-platform service in a week with App Engine
jlugia
221
17k
Principles of Awesome APIs and How to Build Them.
keavy
117
15k
Why You Should Never Use an ORM
jnunemaker
PRO
49
7.9k
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
มܗϚʔΫϧɾύτϦγΞ 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
ΠʔαϦΞϜͷਐԽͷํ 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