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
340
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
170
OSSオープンソースソフトウェアの歴史からみるDAOについて
nekomatu
0
130
[Linuxカーネル] RTCドライバから学ぶ i2c の読書きについて
nekomatu
0
460
RTCドライバから学ぶLinuxカーネルについて
nekomatu
0
940
絶対わかる RME Babyface Pro 完全入門
nekomatu
1
5.4k
Other Decks in Programming
See All in Programming
ヤプリ新卒SREの オンボーディング
masaki12
0
100
シールドクラスをはじめよう / Getting Started with Sealed Classes
mackey0225
3
420
讓數據說話:用 Python、Prometheus 和 Grafana 講故事
eddie
0
380
WEBエンジニア向けAI活用入門
sutetotanuki
0
320
リアーキテクチャxDDD 1年間の取り組みと進化
hsawaji
1
180
推し活の ハイトラフィックに立ち向かう Railsとアーキテクチャ - Kaigi on Rails 2024
falcon8823
6
2.6k
カスタムしながら理解するGraphQL Connection
yanagii
1
1.4k
CSC509 Lecture 08
javiergs
PRO
0
110
破壊せよ!データ破壊駆動で考えるドメインモデリング / data-destroy-driven
minodriven
17
4.3k
色々なIaCツールを実際に触って比較してみる
iriikeita
0
310
광고 소재 심사 과정에 AI를 도입하여 광고 서비스 생산성 향상시키기
kakao
PRO
0
160
C#/.NETのこれまでのふりかえり
tomokusaba
1
180
Featured
See All Featured
For a Future-Friendly Web
brad_frost
175
9.4k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
The Cult of Friendly URLs
andyhume
78
6k
Mobile First: as difficult as doing things right
swwweet
222
8.9k
Visualization
eitanlees
145
15k
Testing 201, or: Great Expectations
jmmastey
38
7.1k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
GitHub's CSS Performance
jonrohan
1030
460k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Agile that works and the tools we love
rasmusluckow
327
21k
Into the Great Unknown - MozCon
thekraken
32
1.5k
The Art of Programming - Codeland 2020
erikaheidi
52
13k
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 •