Slide 1

Slide 1 text

Ethereum について @nekomatu (2024-11-09)

Slide 2

Slide 2 text

自己紹介 @nekomatu ● Debian/Ubuntuユーザー ● 組込み系 Linux のソフトウェア開発者 ● 好きなOSSライセンスは GPLv2 ● 地方初参加で、実は発表も初めてです

Slide 3

Slide 3 text

Ethereum のEVMを調べてみた @nekomatu (2024-11-09)

Slide 4

Slide 4 text

神資料があったので即終了 ● https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf ● 1ページ1アニメーションによる図解で平易な英語コメントになっている ● 著者はTakenobu Taniさん ○ プログラマーのためのCPU 入門 ~CPU は如何にしてソフトウェアを高速に実行 するか~ の著者 ● 2018年3月の資料のため今は変化している部分もあるが入りとしては十分 ○ EIP-2718とか

Slide 5

Slide 5 text

他にもたくさんの良い資料がある ● Ethereum は2013年頃に誕生しており古参でありながら今なおメインストリーム の1つ ● そのため、既に多くの人がたくさんの良い資料を作ってくれている

Slide 6

Slide 6 text

他にもたくさんの良い資料がある ● Ethereum は2013年頃に誕生しており古参でありながら今なおメインストリーム の1つ ● そのため、既に多くの人がたくさんの良い資料を作ってくれている 私が発表する意味があるのだろうか…

Slide 7

Slide 7 text

他にもたくさんの良い資料がある ● Ethereum は2013年頃に誕生しており古参でありながら今なおメインストリーム の1つ ● そのため、既に多くの人がたくさんの良い資料を作ってくれている いや、Kernel/VMでクリプト系のトピックはなかったはず!

Slide 8

Slide 8 text

Ethereum について @nekomatu (2024-11-09)

Slide 9

Slide 9 text

お願いごと ● 正確性・妥当性等は細心の注意を払っていますが、細部間違っている事も多い かもしれません ○ 2024-11現在について調査しました ○ 古い情報の参照、誤解誤読、リファレンス不十分により最新仕様・実装と異なる 解説が含まれている可能性があります ○ 気付いた点等ありましたらご指摘の程よろしくお願いします。

Slide 10

Slide 10 text

皆様への質問! ● Q1. Ethereumという名前を知っている人? ○ 聞いたことあるよりは把握しているぐらいの温度感で ● Q2. BitcoinのProof of Work を何となく知っている人? ● Q3. DYOR を知っている人?

Slide 11

Slide 11 text

Ethereum とは ● ブロックチェーン技術をベースにして、任意のプログラム実行とストレージ基盤を 備えたP2Pなソリューション ● P2P ○ トラストレス (悪意あるノードが入り込んでもワークすること) ○ セキュリティ/ライブネス (システム停止しないこと) ● Bitcoinはコイン用途特化で任意のプログラムを実行できない仕様 ○ 元々、Bitcoinでプログラムを動かせるように提案したが却下されたので、 Ethereum が生まれたらしい

Slide 12

Slide 12 text

それブロ? それブロックチェーンでやる意味あるの?(それブロ問題) ● Q. ただAPIが公開されていて自由なサービスというだけではないか? ● A. 運営企業の解散によるサービス停止の懸念や検閲耐性に優れる ○ セキュリティ/ライブネス ->単一組織でなくみんなで運営しているから ○ 検閲耐性 -> トラストレスだから ○ ※完全にそうならないとはいっていない ■ 国家レベルなら圧をかけることは色々できるので …

Slide 13

Slide 13 text

それブロ? それブロックチェーンでやる意味あるの?(それブロ問題) ● Q. ただAPIが公開されていて自由なサービスというだけではないか? ● A. 運営企業の解散によるサービス停止の懸念解決や検閲耐性に優れる ○ セキュリティ/ライブネス -> みんなで運営しているから ○ 検閲耐性 -> トラストレスだから ○ ※完全にそうならないとはいっていない ■ 国家レベルなら圧をかけることは色々できるので … 自由に開発して公平に実行できるソリューションだから嬉しい 🤗

Slide 14

Slide 14 text

Ethereum の動き ユーザーがトランザクションを発行する バリデーターがブロック生成と実行検証する ネットワークが合意形成 (同期)する

Slide 15

Slide 15 text

Ethereum の動き ユーザーがトランザクションを発行する バリデーターがブロック生成と実行検証する p42 https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf validater proposer ネットワークが合意形成 (同期)する

Slide 16

Slide 16 text

実行レイヤー

Slide 17

Slide 17 text

StateとTransaction ● State ○ キーバリュー型のストレージ ○ smart contract と呼ぶ任意のプログラムも含まれている ● Transaction ○ Stateを更新するためのリクエスト ● ここに説明は冒頭の神資料に全てあるので割愛 ○ https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.p df

Slide 18

Slide 18 text

state は storage と code へのポインタを持っている p18 https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf

Slide 19

Slide 19 text

EVM と Gas ● Transaction を実行して State するのがEVM (Ethereum Virtual Machine) ○ そのプログラムを smart contract と呼んでいる ● Gasは、手数料であり、EVM opcode を実行すると消費されバリデーターの報酬 にもなる ● ユーザはGas feeを設定してトランザクション発行する ○ 停止性問題の解決とソリューションへのスパム排除(実費性) ■ ガス欠で止まる。DoSの緩和 ○ fee が高めなトランザクションから処理されていくインセンティブ設計 ■ 需要が増えると高い feeが必要になる

Slide 20

Slide 20 text

EVMがStateを更新する概念図 p46 https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf

Slide 21

Slide 21 text

同じStateと同じTransactionを当てれば同じ結果になるということ 関係ないけど、たくさんのHello worldスマートコントラクトがデプロイされているような …。 べきとう性がある

Slide 22

Slide 22 text

EVM と Smart contract ● https://ethereum.org/en/developers/docs/evm/ ● https://www.evm.codes/

Slide 23

Slide 23 text

合意形成レイヤー

Slide 24

Slide 24 text

Block ● 複数のトランザクションと1つ前のブロックハッシュを持った”かたまり”のこと ● ブロックレベルで合意形成をしていく ● https://ethereum.org/ja/developers/docs/blocks/

Slide 25

Slide 25 text

バリデーターがプールからトランザクションをかき集めてブロックを生成する図 p42 https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf

Slide 26

Slide 26 text

Proof of Work でブロックチェーンを作る方法 ● マイナーはトランザクションプールからGas feeが高い順に取り出してブロックを 生成する ● State更新の計算をして検証する ○ Gas feeはマイナー自身のウオレットに入るトランザクションがくっつく ● 条件一致するマジックナンバーを探索する(マイニング) ● 発見したらネットワークに早くブロードキャストして認めてもらう ● 新しいブロックを他のマイナーから受け取ったら検算し、実行中のマイニングを 破棄して最初に戻る ● 雑にいえば、一番チェーンが長いものが、正のチェーンという事になる ○ 実際にはもう少し複雑な条件で判定していたが割愛

Slide 27

Slide 27 text

PoWのポイント ● チェーンが同じタイミングで伸びてしまうことがある (unkle block) ○ しかし、6回ぐらい伸ばしていくと収束する(Bitcoinの場合は. )(Finality) ● マイナーはできるだけ早く新しいブロックを受け取りたい ○ さもないと意味のない計算コストを払うことになってしまうため ○ そのため発散ではなく収束する ● 利点はシンプルなこと ● 欠点は電気がかかってしまうこと ○ 一定時間に終わることを期待したいので意味ある計算をもたせにくい

Slide 28

Slide 28 text

Proof of Stakeでブロックチェーンを作る方法 ● Ethereum では 32 ETH (1000万円ぐらい?)をデポジットすることでバリデー ターになれる。マイナーはもういない。 ● バリデーターはランダムにブロックを作る権利がもらえる ● 他のバリデータに作成したブロックを送信し検証してもらう ● すると、Gas feeから一部手数料をもらえる

Slide 29

Slide 29 text

PoSのポイント ● 悪意ある動作をするとバリデーターに Slashing というペナルティが発生する ○ 32ETHを担保・人質にしているということ ● 利点はたくさん ● 欠点は複雑であること、ETHそのものの価値がないと機能しないこと ○ https://ethereum.org/en/developers/docs/consensus-mechanisms/pos/

Slide 30

Slide 30 text

PoW -> PoS PoW ● 電気代が安い国が有利であり地理的分散性(国家検閲耐性)に懸念がある ● ASICのような特別な機材の所有者が有利で分散性に懸念があるといえる ○ EthereumはASIC化しにくいアルゴリズムにするなどで緩和していた ● インセンティブのためETHをたくさん発行する必要がある ○ でも、発行するほど相対的に価値が下がってしまうジレンマ PoS ● ETHを持っていないと参加できない

Slide 31

Slide 31 text

バリデータの不正行為

Slide 32

Slide 32 text

困るのはメインネットのフォークを試みること いずれも意図的にフォークを狙っている操作 ● 同一スロットに、2つの異なるブロックを提案、署名した場合 ● あるブロックを「取り囲む」ブロックに対してアテステーションを提供した場合 (事実上、履 歴を変更した場合) ● 同一ブロックの2つの候補にアテステーションを提供することで、「二重投票」を行った場 合 ● https://ethereum.org/ja/developers/docs/consensus-mechanisms/pos/rewards -and-penalties/#slashing ○ 与太話として過去に、オペレーターキーを過って複数のインスタンスに展開してしまい 結果的に二重投票が走ってしまった という運用ミスがあったらしい

Slide 33

Slide 33 text

同時に2つ生成された場合 😫バリデーター「どっちが正しいブロックな んだ!?」 🤨「あいつ、2つのブロック提案してる悪い やつです!」 -> Slashing 提案 😎ブロック生成者「かく乱してやるぜ…!」

Slide 34

Slide 34 text

「取り囲む」ブロックに対してアテステーションを提供 した 😎ブロック生成者「履歴改ざんして稼ぐぜ」 😎結託したバリデーター「改ざんに乗っかるぞ」 😎「👍」 🤨「👎既存ブロックにつなごうとしている。おかしい」 システム「みんなが反対している提案に賛成している。悪いバリ データーか?」

Slide 35

Slide 35 text

「二重投票」を行った場合 😎悪いバリデーター「検証サボって手数料 ゲットだぜ」 🤨「2つのブロックに賛成してるやつがい る」 -> Slashing 提案 😎「👍」 😎「👍」

Slide 36

Slide 36 text

オフラインの場合は? 障害やメンテナンスでバリデータが投票やブロック生成を実行しない場合 ● ペナルティとして、発生する報酬と同額分の損失が発生 ○ ノードがオフラインまみれになると系全体は不安定になってしまうので簡単なペ ナルティが用意されている ○ ほとんどは稼働状態なのでそこから少し差し引くようなイメージ

Slide 37

Slide 37 text

おわりに

Slide 38

Slide 38 text

まとめ ● パブリックブロックチェーンのEthereum について紹介した ● 大きく分けて実行レイヤーと合意形成レイヤーがあることを述べ、簡単にそのメ カニズムや考え方を紹介した ● 経済的インセンティブ(ゲーム理論)を組み合わせることでソリューションとして ワークしていることを全体を通じて述べた

Slide 39

Slide 39 text

リファレンス ● https://ethereum.org/en/developers/docs/ ● https://ethereum.github.io/yellowpaper/paper.pdf ● https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf ●