Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Ethereum_.pdf
Search
nekomatu
November 09, 2024
Programming
840
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
250
OSSオープンソースソフトウェアの歴史からみるDAOについて
nekomatu
0
280
[Linuxカーネル] RTCドライバから学ぶ i2c の読書きについて
nekomatu
0
630
RTCドライバから学ぶLinuxカーネルについて
nekomatu
0
1.4k
絶対わかる RME Babyface Pro 完全入門
nekomatu
1
8.3k
Other Decks in Programming
See All in Programming
最近”作らせてる” ローカルAIアプリの話
akit37
0
460
SREの越境 / SRE Collaboration
y0hgi
2
300
速く作れる。その次は、速く確かめられる開発へ 〜AIネイティブ開発を支える、Shift Down〜 / Can build fast. Next, moving to development where we can verify fast.
rkaga
8
6k
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.9k
RAG の “R” を Swift で覗いてみる 〜「意味から探す」検索の仕組み〜
nao_randd
0
160
ChromeでローカルLLM
ryu1013
0
120
contenteditable と日本語入力に向き合う
colorful12
0
190
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
1
2.3k
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
480
AIに “答え“を書かせるのを やめてみた
___akari11
0
120
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
Kotlinの15年とServer-Side Kotlin
n_takehata
1
140
Featured
See All Featured
Prompt Engineering for Job Search
mfonobong
0
510
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
Music & Morning Musume
bryan
48
7.4k
Rails Girls Zürich Keynote
gr2m
96
14k
Designing Powerful Visuals for Engaging Learning
tmiket
1
600
Optimizing for Happiness
mojombo
378
71k
We Are The Robots
honzajavorek
0
400
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
Automating Front-end Workflow
addyosmani
1369
210k
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 •