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_.pdf
Search
nekomatu
November 09, 2024
Programming
0
760
Ethereum_.pdf
nekomatu
November 09, 2024
Tweet
Share
More Decks by nekomatu
See All by nekomatu
Web3 (DAO) from the perspective of the history of Open Source Software
nekomatu
0
220
OSSオープンソースソフトウェアの歴史からみるDAOについて
nekomatu
0
230
[Linuxカーネル] RTCドライバから学ぶ i2c の読書きについて
nekomatu
0
580
RTCドライバから学ぶLinuxカーネルについて
nekomatu
0
1.3k
絶対わかる RME Babyface Pro 完全入門
nekomatu
1
7.5k
Other Decks in Programming
See All in Programming
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
200
Vibe codingでおすすめの言語と開発手法
uyuki234
0
200
Basic Architectures
denyspoltorak
0
630
[AI Engineering Summit Tokyo 2025] LLMは計画業務のゲームチェンジャーか? 最適化業務における活⽤の可能性と限界
terryu16
2
540
高速開発のためのコード整理術
sutetotanuki
1
340
フロントエンド開発の勘所 -複数事業を経験して見えた判断軸の違い-
heimusu
7
2.7k
例外処理とどう使い分ける?Result型を使ったエラー設計 #burikaigi
kajitack
16
5.8k
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
1
220
MUSUBIXとは
nahisaho
0
100
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
3
130
コマンドとリード間の連携に対する脅威分析フレームワーク
pandayumi
1
420
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
920
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
174
15k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
110
Ruling the World: When Life Gets Gamed
codingconduct
0
130
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
570
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
1.1k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Agile that works and the tools we love
rasmusluckow
331
21k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Mind Mapping
helmedeiros
PRO
0
55
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
190
Transcript
Ethereum について @nekomatu (2024-11-09)
自己紹介 @nekomatu • Debian/Ubuntuユーザー • 組込み系 Linux のソフトウェア開発者 • 好きなOSSライセンスは
GPLv2 • 地方初参加で、実は発表も初めてです
Ethereum のEVMを調べてみた @nekomatu (2024-11-09)
神資料があったので即終了 • https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf • 1ページ1アニメーションによる図解で平易な英語コメントになっている • 著者はTakenobu Taniさん ◦ プログラマーのためのCPU
入門 ~CPU は如何にしてソフトウェアを高速に実行 するか~ の著者 • 2018年3月の資料のため今は変化している部分もあるが入りとしては十分 ◦ EIP-2718とか
他にもたくさんの良い資料がある • Ethereum は2013年頃に誕生しており古参でありながら今なおメインストリーム の1つ • そのため、既に多くの人がたくさんの良い資料を作ってくれている
他にもたくさんの良い資料がある • Ethereum は2013年頃に誕生しており古参でありながら今なおメインストリーム の1つ • そのため、既に多くの人がたくさんの良い資料を作ってくれている 私が発表する意味があるのだろうか…
他にもたくさんの良い資料がある • Ethereum は2013年頃に誕生しており古参でありながら今なおメインストリーム の1つ • そのため、既に多くの人がたくさんの良い資料を作ってくれている いや、Kernel/VMでクリプト系のトピックはなかったはず!
Ethereum について @nekomatu (2024-11-09)
お願いごと • 正確性・妥当性等は細心の注意を払っていますが、細部間違っている事も多い かもしれません ◦ 2024-11現在について調査しました ◦ 古い情報の参照、誤解誤読、リファレンス不十分により最新仕様・実装と異なる 解説が含まれている可能性があります ◦
気付いた点等ありましたらご指摘の程よろしくお願いします。
皆様への質問! • Q1. Ethereumという名前を知っている人? ◦ 聞いたことあるよりは把握しているぐらいの温度感で • Q2. BitcoinのProof of
Work を何となく知っている人? • Q3. DYOR を知っている人?
Ethereum とは • ブロックチェーン技術をベースにして、任意のプログラム実行とストレージ基盤を 備えたP2Pなソリューション • P2P ◦ トラストレス (悪意あるノードが入り込んでもワークすること)
◦ セキュリティ/ライブネス (システム停止しないこと) • Bitcoinはコイン用途特化で任意のプログラムを実行できない仕様 ◦ 元々、Bitcoinでプログラムを動かせるように提案したが却下されたので、 Ethereum が生まれたらしい
それブロ? それブロックチェーンでやる意味あるの?(それブロ問題) • Q. ただAPIが公開されていて自由なサービスというだけではないか? • A. 運営企業の解散によるサービス停止の懸念や検閲耐性に優れる ◦ セキュリティ/ライブネス
->単一組織でなくみんなで運営しているから ◦ 検閲耐性 -> トラストレスだから ◦ ※完全にそうならないとはいっていない ▪ 国家レベルなら圧をかけることは色々できるので …
それブロ? それブロックチェーンでやる意味あるの?(それブロ問題) • Q. ただAPIが公開されていて自由なサービスというだけではないか? • A. 運営企業の解散によるサービス停止の懸念解決や検閲耐性に優れる ◦ セキュリティ/ライブネス
-> みんなで運営しているから ◦ 検閲耐性 -> トラストレスだから ◦ ※完全にそうならないとはいっていない ▪ 国家レベルなら圧をかけることは色々できるので … 自由に開発して公平に実行できるソリューションだから嬉しい 🤗
Ethereum の動き ユーザーがトランザクションを発行する バリデーターがブロック生成と実行検証する ネットワークが合意形成 (同期)する
Ethereum の動き ユーザーがトランザクションを発行する バリデーターがブロック生成と実行検証する p42 https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf validater proposer ネットワークが合意形成 (同期)する
実行レイヤー
StateとTransaction • State ◦ キーバリュー型のストレージ ◦ smart contract と呼ぶ任意のプログラムも含まれている •
Transaction ◦ Stateを更新するためのリクエスト • ここに説明は冒頭の神資料に全てあるので割愛 ◦ https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.p df
state は storage と code へのポインタを持っている p18 https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf
EVM と Gas • Transaction を実行して State するのがEVM (Ethereum Virtual
Machine) ◦ そのプログラムを smart contract と呼んでいる • Gasは、手数料であり、EVM opcode を実行すると消費されバリデーターの報酬 にもなる • ユーザはGas feeを設定してトランザクション発行する ◦ 停止性問題の解決とソリューションへのスパム排除(実費性) ▪ ガス欠で止まる。DoSの緩和 ◦ fee が高めなトランザクションから処理されていくインセンティブ設計 ▪ 需要が増えると高い feeが必要になる
EVMがStateを更新する概念図 p46 https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf
同じStateと同じTransactionを当てれば同じ結果になるということ 関係ないけど、たくさんのHello worldスマートコントラクトがデプロイされているような …。 べきとう性がある
EVM と Smart contract • https://ethereum.org/en/developers/docs/evm/ • https://www.evm.codes/
合意形成レイヤー
Block • 複数のトランザクションと1つ前のブロックハッシュを持った”かたまり”のこと • ブロックレベルで合意形成をしていく • https://ethereum.org/ja/developers/docs/blocks/
バリデーターがプールからトランザクションをかき集めてブロックを生成する図 p42 https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf
Proof of Work でブロックチェーンを作る方法 • マイナーはトランザクションプールからGas feeが高い順に取り出してブロックを 生成する • State更新の計算をして検証する
◦ Gas feeはマイナー自身のウオレットに入るトランザクションがくっつく • 条件一致するマジックナンバーを探索する(マイニング) • 発見したらネットワークに早くブロードキャストして認めてもらう • 新しいブロックを他のマイナーから受け取ったら検算し、実行中のマイニングを 破棄して最初に戻る • 雑にいえば、一番チェーンが長いものが、正のチェーンという事になる ◦ 実際にはもう少し複雑な条件で判定していたが割愛
PoWのポイント • チェーンが同じタイミングで伸びてしまうことがある (unkle block) ◦ しかし、6回ぐらい伸ばしていくと収束する(Bitcoinの場合は. )(Finality) • マイナーはできるだけ早く新しいブロックを受け取りたい
◦ さもないと意味のない計算コストを払うことになってしまうため ◦ そのため発散ではなく収束する • 利点はシンプルなこと • 欠点は電気がかかってしまうこと ◦ 一定時間に終わることを期待したいので意味ある計算をもたせにくい
Proof of Stakeでブロックチェーンを作る方法 • Ethereum では 32 ETH (1000万円ぐらい?)をデポジットすることでバリデー ターになれる。マイナーはもういない。
• バリデーターはランダムにブロックを作る権利がもらえる • 他のバリデータに作成したブロックを送信し検証してもらう • すると、Gas feeから一部手数料をもらえる
PoSのポイント • 悪意ある動作をするとバリデーターに Slashing というペナルティが発生する ◦ 32ETHを担保・人質にしているということ • 利点はたくさん •
欠点は複雑であること、ETHそのものの価値がないと機能しないこと ◦ https://ethereum.org/en/developers/docs/consensus-mechanisms/pos/
PoW -> PoS PoW • 電気代が安い国が有利であり地理的分散性(国家検閲耐性)に懸念がある • ASICのような特別な機材の所有者が有利で分散性に懸念があるといえる ◦ EthereumはASIC化しにくいアルゴリズムにするなどで緩和していた
• インセンティブのためETHをたくさん発行する必要がある ◦ でも、発行するほど相対的に価値が下がってしまうジレンマ PoS • ETHを持っていないと参加できない
バリデータの不正行為
困るのはメインネットのフォークを試みること いずれも意図的にフォークを狙っている操作 • 同一スロットに、2つの異なるブロックを提案、署名した場合 • あるブロックを「取り囲む」ブロックに対してアテステーションを提供した場合 (事実上、履 歴を変更した場合) • 同一ブロックの2つの候補にアテステーションを提供することで、「二重投票」を行った場
合 • https://ethereum.org/ja/developers/docs/consensus-mechanisms/pos/rewards -and-penalties/#slashing ◦ 与太話として過去に、オペレーターキーを過って複数のインスタンスに展開してしまい 結果的に二重投票が走ってしまった という運用ミスがあったらしい
同時に2つ生成された場合 😫バリデーター「どっちが正しいブロックな んだ!?」 🤨「あいつ、2つのブロック提案してる悪い やつです!」 -> Slashing 提案 😎ブロック生成者「かく乱してやるぜ…!」
「取り囲む」ブロックに対してアテステーションを提供 した 😎ブロック生成者「履歴改ざんして稼ぐぜ」 😎結託したバリデーター「改ざんに乗っかるぞ」 😎「👍」 🤨「👎既存ブロックにつなごうとしている。おかしい」 システム「みんなが反対している提案に賛成している。悪いバリ データーか?」
「二重投票」を行った場合 😎悪いバリデーター「検証サボって手数料 ゲットだぜ」 🤨「2つのブロックに賛成してるやつがい る」 -> Slashing 提案 😎「👍」 😎「👍」
オフラインの場合は? 障害やメンテナンスでバリデータが投票やブロック生成を実行しない場合 • ペナルティとして、発生する報酬と同額分の損失が発生 ◦ ノードがオフラインまみれになると系全体は不安定になってしまうので簡単なペ ナルティが用意されている ◦ ほとんどは稼働状態なのでそこから少し差し引くようなイメージ
おわりに
まとめ • パブリックブロックチェーンのEthereum について紹介した • 大きく分けて実行レイヤーと合意形成レイヤーがあることを述べ、簡単にそのメ カニズムや考え方を紹介した • 経済的インセンティブ(ゲーム理論)を組み合わせることでソリューションとして ワークしていることを全体を通じて述べた
リファレンス • https://ethereum.org/en/developers/docs/ • https://ethereum.github.io/yellowpaper/paper.pdf • https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf •