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
790
0
Share
Ethereum_.pdf
nekomatu
November 09, 2024
More Decks by nekomatu
See All by nekomatu
Web3 (DAO) from the perspective of the history of Open Source Software
nekomatu
0
230
OSSオープンソースソフトウェアの歴史からみるDAOについて
nekomatu
0
250
[Linuxカーネル] RTCドライバから学ぶ i2c の読書きについて
nekomatu
0
590
RTCドライバから学ぶLinuxカーネルについて
nekomatu
0
1.3k
絶対わかる RME Babyface Pro 完全入門
nekomatu
1
7.8k
Other Decks in Programming
See All in Programming
Coding as Prompting Since 2025
ragingwind
0
620
PHP でエミュレータを自作して Ubuntu を動かそう
m3m0r7
PRO
2
160
AWS×クラウドネイティブソフトウェア設計 / AWS x Cloud-Native Software Design
nrslib
16
3.5k
Claude Codeログ基盤の構築
giginet
PRO
7
3.8k
Codexに役割を持たせる 他のAIエージェントと組み合わせる実務Tips
o8n
4
1.5k
「接続」—パフォーマンスチューニングの最後の一手 〜点と点を結ぶ、その一瞬のために〜
kentaroutakeda
5
2.4k
AI時代の脳疲弊と向き合う ~言語学としてのPHP~
sakuraikotone
1
1.8k
事業会社でのセキュリティ長期インターンについて
masachikaura
0
130
飯MCP
yusukebe
0
450
Xdebug と IDE による デバッグ実行の仕組みを見る / Exploring-How-Debugging-Works-with-Xdebug-and-an-IDE
shin1x1
0
300
AIコードレビューの導入・運用と AI駆動開発における「AI4QA」の取り組みについて
hagevvashi
0
580
Coding at the Speed of Thought: The New Era of Symfony Docker
dunglas
0
4.1k
Featured
See All Featured
What does AI have to do with Human Rights?
axbom
PRO
1
2.1k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.2k
Prompt Engineering for Job Search
mfonobong
0
240
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Scaling GitHub
holman
464
140k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
Paper Plane (Part 1)
katiecoart
PRO
0
6.2k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
120
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
870
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 •