【Uzumaki勉強会】⁠Ethereum実行クライアント「Geth」のソースコードを読み解く

Uzumaki勉強会 · 16 May 2025 · 1:01:30

A guided reading of Geth traces transactions from JSON-RPC requests and peer broadcasts into validation, transaction pools and block construction. The session also explores Engine API interactions, debugging tools and the organization of Ethereum execution-client code.

Speakers

Topics

From Uzumaki勉強会, hosted by Nyx Foundation.

Transcript

じゃ、ゲストのコード読んでみため。 はい。木前こんな感じで最初に イーイサリアムについて簡単に説明して ゲスとは何かっていう話をしてゲスを実際 にユーザーに沿って読んでみたっていうの で、ま、主に3つのユーザーフロー、 RPCエンドポイントからの トランザクションリクエストとピアからの トランザクションブロードキャストとあと エンジンAPIっていう3つをね、みんな で順番にこういう流れで進んでくんです よっていうのをさってくっていう話になっ てます。ま、イサリアムは、ま、皆さん お馴染みの通りこういう感じになっていて 、バリデーターから当選された プロポーザーがブロックを生成されて生成

して、で、そのブロックの中にはいくつも のトランザクションが含まれてると。で、 そのブロックをバリデーターが実行検証し た後に、え、ブロックチェーンに追加 するっていう、ま、そういうシステムに なってますと。で、このうち エグゼキューションレイヤーの役割として はこの2番と4番ですね、もう生成と実行 検証っていう結構1番重要なところになっ てるのがエグゼキューションレイヤーに なっていますと。で、それ以外にも ユーザーからのトランザクションの受付 だったりとかトランザクションプール、ま 、ブロックに含まれる前の トランザクションのプールを管理するって ところもエグゼキューションレイヤーの 役割になってます 。 で、ゲストはそのエグゼキューションレイヤの 1 実装で、ま、1番古いですよね。

うん。うん。 みたいな で合原業言語で記述されてますと。 で、機能としてはEVMのランタイム、 EVM を実行する環境がついてたり、TX プールたり、ストレージがついてたり、 RPC サーバー、ま、サーバーの機能がついてたりっていうで、シェアとしては今 56.9% のシェアを占めてる感じになってます。で、しょうか。 で、開発状況としてマスターの麻雀はもう ほぼ毎日起きてて、これ5月14日の スクショですけど、14日に1コミット マージされて、13日に2コミット回され て、12日にも回しされてっていう感じで 、ほぼ毎日何かしら回じされてるっていう

感じになってます。で、このリンクからふ のフォークっていうのの、え、開発の進捗 も見れてて、ま、結構ピアダスはなんか もうプルリク3本ぐらい出てて、まあ、 なんかクローズしては新しく立ててみる みたい。ほぼ1人が実装してるんですけど 。で、一応その一緒に6月9日までに ふォークはデブネット0 実装っていう風に書かれてるんで、ま、 結構もう割と着々と進んでる感じになって ます。え、これって聞いていいんだっけ? あ、もう途中で聞いてほしい。 マスターマージされてるのはどういうなんかちっちゃいバグフィックスとかそういうどういう系?

ま、ま、結構色々ある。はい。はい。 ま、ま、バグフィックスが多いっすね。ま、あんまりちょっと深く 読んでないですけど。うん。 あんまりなんか、ま、使用変更はほぼないんですけど、本当にこの辺がフィックス インコレクトデスクリプションとか はいはいはいはい。リファクターとかも、 ま、そうですね。リファクターとか はありますね。 ま、この辺4、KG484 とか書いてるのとかは暗号のライブラリーの修正とか なるほど。 他にはこの辺りで大丈夫ですか?はい。 で、これはデバックに関するメモですけど 、EVMトレーシングっていう機能がもう

付いてて、これをオンにするとEVMに よって実行された内容っていうのを正確に レポートしてくれるようになってます。 あとダッシュボードですね。ま、あの、 よく画面出してますけど、グラファナで 貸視化して今ゲスがどういう事己してるの かみたいなのを見れるようになってます。 あとイサスタッツっていう、ま、これなん か実際にウェブサイトあるんですけど、 ゲスのノード全体のパフォーマンスみたい なのを見れるようになってて、ま、ここに なんか2位のゲスクライアントがログを 吐き出すとイサスタッツでなんかみんなで ログ見れるパフォーマンスが見れるみたい な感じになってます。で、もしデバックし て修正するってなったら、ちゃんと フォルダーごとにテストコードがファイル

で分けられてあるんで、ま、それを順番に さってくみたいな形になるのか 。で、大まかなユーザーフローとして、ま 、さっき説明した3つの方向からあります と、まず1番下ユーザーからRPCエンド ポイントを通じてトランザクションの リクエストが来ます。ま、これ別に トランザクション以外にもゲットバランス とかいろんなリクエストがユーザーから 飛んでくる。で、2番目がPAアto PIAからのブロードキャスト。ゲスは他 のゲスト基本的に繋がってますと。ま、 ゲス以外に他のELと繋がってますと。で 、他のELから、え、トランザクション 上げるみたいな感じで受け取 るっていうのが2つ。で、あとはCLから

のエンジンAPI経由でのリクエスト。 電ジは基本的にCLがリクエスト投げて ELがレスレスポンス返すみたいなこう いうあの形になってます。ゲスの方から リクエスト投げるみたいなのは基本的に ない。なんでまエンジンペアはリクエスト 飛んできたら何かしらレスポンス返して 感じます。 [音楽] じゃあ実際に読んでみたっていうとこに進みますけど、この時点でなんか質問ありますか? 2Pのうん。 トランダクションブロードキャストはそのゲス以外のクライントからも あ、来る、来る、来る。通信できる。 はい。うん。もちろん。 もうこれは企画化されてるんで うん。

あの、特にちゃんと、ま、あの、別にゲスじゃなくても関係なくなります。 じゃあまず第1弾RPCエンドポイント からのトランザクションリクエストですが 、ま、全体のフローしてこんな感じになっ てて、まず最初に、えっと、RPCの、ま 、EAPIっていうところにAPIが定義 されてて、ここにセンドトランザクション と鮮度ロートランザクションっていう、ま 、2つの関数が入ってますと。で、RPC エンドポイント受け取ると、ま、この関数 が発する。で、その後、あの、EA フォルダーの中のAPIバックが呼ばれて 、ま、あの、トランザクションを処理する

んだけど、ま、その後結局 トランザクションプールに追加する処理が 走る時はコアフォルダーのTXプールの中 のTXP.GOっていうところで トランザクションプールに追加してねって 、で、トランザクションプールに追加する と、ま、あの、基本的にサブプールって いうとこに追加されて、ま、これ別に トランザクションプールとなんか回層的 ってわけじゃ んだけど、要はあのトランザクションのタイプがレガシータイプかブロブタイプかって 2 つがあるんだよ。ブロブかなんか従来のトランザクションかっていう で、レガシーだったらレガシーのトランザクションプールに追加してプロブだったらブロブのプールに追加してっていう処理が走る。 1559はレガシーという。 レガシー。基本的にレガシー。4484

以前はもうレガシー。オッケーです。 で、サブスクライ、え、で、あの、 トランザクションプロに追加されたら自動 的にあのサブスクライブ トランザクションズのイベントが発行され て、で、このイベントを受け取ったら、え 、ブロードキャストされると。で、他の ELに自分がトランザクションプルに追加 したトランザクションを、ま、ある程度 溜まったらバッチの形式でPAPで投げて くっていうのが全体の流れになってます。 いいでしょうか ?ではセンドトランザクションのやってる こと。ま、これこっちが鮮度ロー トランザクションでこっちが鮮度

トランザクションですけど待ってこれ誰か 入退させられる可能性がある。 ちょっと待ってね 。 あれ、これどうやってシェアするんだっけ?このリンクを、あ、このリンクを誰かに投げたら あ、じゃあテお願いします。 入れますかね。 お、全然大丈夫だ。これで大丈夫ですか?

うん、行け、行けて。そう オッケ。 はい。なんかでかくなっちゃった。ま、いいや。 で、えっと、ま、センドトランザクションとセンドロートランザクションの違いはセンドロートランザクションは署名済みのトランザクションが来た時にで、センドトランザクションはただのトランザクションが来た時にこっちで署名も生成する時に作るいう違いがあります。 なんで先動トランザクションの時はなんかゲスが自分のアカウントで証明するって感じ。 へえ。 ですね。

[音楽] で、ま、基本的に最初にナンス、ナンスチェックして、ちゃんとそのアカウントのナンスが順番順番になってるか、前最初 0から始まって、前のトランザクションが 6だったら次7 のトランザクションが来てるかっていうのをチェックする。 で、これが同じナンスだったら弾くようになってるので、ま、最初にナンスをロックしてあげると。 で、あの、もしなんか あのEIP484に、ま、これサポートさ れてなければエラーを返すんですけど、 これは別にトランザクションがブロブか どうかじゃなくて、なんかリクエストの バージョンがあのEP484に準拠した バージョンがチェックしてるって感じ。

うん。で、その後に、ま、自分で作るんで 、ま、ガスフィーとかガスリミットとか ナンスとかデフォルト地に設定して トランザクションオブジェクトを作って あげて、署名し、サイントランザクション で署名してサブmトランザクションてで センドロードトランザクションの方はもう ただサブmトランザクションを呼び出して あげるっていう感じです。 の署名は秘密がそのクライアントのってる。 えっと秘密がこれゲスが持ってる自分の秘密鍵で作ってるんだと。 あ、マジか。なるほど。そんなことある。面白。 あ、ま、うん。そうっすね。一応なんかフロムで指定されてるんですけど。 これ結局自分が

秘密持っ、ああ、確か。 署名、署名を持ってないと あ、復言できないんで、 英語自分が署名を知ってるアカウントをこのアカウントアカウントでインスタンス化してあげるっていう。 なるほど。あり、 ま、そっか。自分でも作れるっていうある当たり前。 そう、そう、そうすね。 で、次にサブミット トランザクション見ていきますが、ま、 これ主にやってるのは最初ガスリミットに ちゃんとガスフィが収まってるかチェック してあげて、で、あとはリプレイ攻撃って いう同じ署名を使い回せない、使い回し ちゃう攻撃があるんですね。で、これ主に Eサリアムで作った証明を例えば水とか別 のチェーンで同じECDSAだったら同じ

署明使い回せちゃう可能性があって、これ を保護されてるかっていうチェックをして ます。で、これ主にチェインIDがその 役割りになってて、署名のメッセージに チェインID含めてあげる。そうすると イサリアメインデートチェインID1で、 ま、水が2だとしたら別のチェインID だったら署名のが変わるはずなんであの リプレイ攻撃を保護できるっていう 。で、その後に、え、セドTXっていう、 え、関数なんでいう感じですね。 で、なんかここでリプレイ方の、ま、なんかロジックが結構面白くて、ま、ま、ちょっと、ま、めんどくさいからいいか。 サクっと。うん。ま、めんどくさいから。

あ、 ですね。で、SendoTXは、ま、ま、 単純にTXP.ADが、ま、ほぼ呼ばれ てるだけで、その後になんかローカル トラックみたいな、ま、ま、あの、ログを 出す時のための関数が実行ほぼ実行され てる だけで、TXプールを呼ばれると、まず 最初にどのサブプールに入れるかみたいな のをチェックして、レガシーだったら レガシープール、ブロブだったらブロブ プール選択して、で、サブpズ.呼ばれて 、ま、 このサブールズがレガシだったらレガシーのサブプールみたいなのがインスタンス化された変数があってその後のカ数が呼ばれる でブロブールはまだサブールはこんな感じでコアの

TX プールの中にブロブールだったらブロブール. GO っていう感じでサブールが定義されてる。で、ここのアドカン数ではまず最初にプールをロックする。 ま、ここ履た制御でもしトランザクション する時になんか別のトランザクションが 同時に来たりしたらなんか整合性取れなく てエラーになっちゃったりすることがある んで、ま、ちゃんと順序を保通うっていう ので、あのこの関数が終わるまでロックし ますよみたいなを明治的に指定する。で、 次にバリデートTX っていう、ま、トランザクションを検証 する関数がここで初めて走ります。で、ま 、ま、バリエットトランザクションの中身

はちょっと後で説明するんですけど、その 後に送信者特定してなんか今までこ、ま、 知らないアカウントから来たらなんか予約 みたいな取得して あげるで、ま、RLPエンコードしてあげ てストレージに保存するっていう流れです 。で、ま、その後にブロブのメタデータ みたいなのをブニューブロブTXメタ みたいなメタデータを作っ てで計算してなんか5から前の数が5なの に7とかなってギャップがあったらその ギャップを埋めるための施みたいな処理

がうんあります。6 にしてあげるっていう。で、痴漢、痴漢処理した後に新しいトランザクションを追加する。 うん。あそこで自分で署名するみたい。 それはもう署名はされてないんじゃないかな。もうここはね、あのナンスに対しての署名はなかったんだよね。 なるほど。 だから実際にナンスチェックしてるのはもうこのアルゴリズムでしかなくて 署名で厳密には 定義されてないみたい。なるほどね。 そうだからちゃんとあのブロックの検証の時もナンスチェックが走ってて同じナンスじゃないかっていう うん。うん。 だリプレイ攻撃ってま実はそのさっきのチェイン

ID は署名でちゃんとチェックするけどチェックはもうなんかアルゴリズムで制御してくていう ここを飛ばしたら結構危ない。 うん。 で、その後に追放っていう処理があって、 これはもうなんかストレージ いっぱいいっぱいになっちゃったら消し ましょうっていう。で、この時になんか 優先度みたいのがトランザクションつけ られて、で、例えばこ、ま、この アカウントからも何回も送られてるみたい な。 送られてる回数が敷地超えてるとかだとそのアカウントは優先度がめちゃくちゃ低くなっていってそのアカウントから順番にトランゼクション消されるとかあるいはガスフィーやたら小さいトランジクション食らてたらそれも優先度低くなってたりそういうのを順番に消してくっていう これはストレージ容量っていうのはさっきの遠した部分をストレージに貯めていってそれを超えた場合っていうまえっとそうだねされた部分

を、ま、容量って言うけど、ま、なんか決められたなんか数えたら、あ、そうだね。 6とか 指定された。そう、数がもう超えちゃったら消してくっていう。 うん。ああ。あれ、これって 直接の クライアントに送られたトランザクションだけだっけ?関係ないか。あの、 P2Pで流れてくるのも全部この、 えっと、全部ある。 結局P2Pま、後で説明するけど、P2P も結局ここれるんだよね。 ああ、なるほど。 同じ関数が言ばれるから。あ、 同じ処理が。 じゃあもうめちゃくちゃ1 秒間の間何回も消しまくってそうなぐらいの呼ばれてる。 ま、もしだから、あの、もしなんかふ、溢れてたら消すって感じ。 ああ、はい。溢れてたらその分消される。 実際どのくらいがキャップなのか気になると。

ああ、確かにそれいいんじゃないかも。これだ。これ のサイズはま、チェスロ 6確かになんか6で切っちゃうと まうん。 次のスロットに一切回らなくなるから。 そうすね。き麗にもします。あ、そう。 あと優先度低いっていうのもその同じやつから何回もっていうよりはブログのフィーによって決まるのかな?そうではない。 あ、えっとそう。なんかいくつか条件があるでその中にブログフィとか ああ、なるほど。 ですね。他には大丈夫ですか?はい。で、あ、ちょっと優先順位付けロジックをちゃんとやりたかったんですけど、ちょっとまだここはできてない。ま、でもさっき言ったようなのが主もちょっとやってます。

はい。で、バリデートTXなんですけど、 ま、まず最初にバリデートTXベーシック スっていうのがあります。で、これ ブローブプールじゃなく、ブロブの トランザクションじゃなくてレガシーも この同じバリデートTXベーシックって いうのが最初に呼ばれて、ま、基本的な 検証がここで走りますと。で、ここでやっ てるのがまずタイェックって言われるやつ で、ま、これはなんか定義されてるタイプ ちゃん応としますかみたいな反範囲的な チェックで次にサイズチェックで トランザクションのサイズがちゃんと制限 内のサイズに収まってるチェックして、で 、次にルールチェックなんですけど、ま、 これはなんかフォークに対応してるか みたいなチェックがここで走って、例えば

ベルリン前のフォークだったらレガシー トランザクションしか通せませんよね みたい ロンドンより前だったらダイナミックフィータイプに対応してないよねみたいな。 なんかそういうあのフォーク今どのフォークにいるかみたいなのを元に なんかどのパラメーター対応してるしてないみたいなチェックを行う だからもしなここで結構後方互換性が割と重視されてて うんうん もし今ペクトラいるけど上海に戻りましたみたいな時にも今の最新のコードで最新の実装でも対応できるようにっていうの結構重視されてる もそんな感 あ、本当?うん。うん。ふん。

で、次にトランザクションの値が負じゃ ないかチェックして、ガスフィがちゃんと リミットに収まってるかチェックして、で 、えっと、TXの送信者と署名者が位置し てるってことをチェック するっていうのを、ま、基本的な検証で やりますと 。で、基本的な検証が終わったら次の検証 としてまず何ギャップがある時にここま ここでも治るのか、ま、次の何を計算する 処理を行っ てでアカウントの残りのトランザクション 数の制限なって、ま、これはまあ主になん

かドス対策みたいなもんでアカウントから 何回も何回もトランザクション送られてこ ないように残り何回送れますよみたいな数 を計算してあげで、で、既存のアカウント の支出計算してあげて、で、既存コストの 計算ってあったんですけど、これ何の コストかちょっと忘れちゃった 。ま、ここはだから検証ってよりはなんか 値をなんかチェックするための値を計算 するですね 。で、えっと、その後に、ま、ステートの 検証が走って、で、移任制限のチェックの 走って、もし、ま、なんかUSDCみたい

なトークとかって、あの、なんだっけ、 移任するじゃないですか、 トランザクションボールを 。で、そういうなんかちゃんと移任が適切 かみたいなチェックをここでやります。で 、えっと、既存のトランザクション痴漢が なんか痴漢されてたらちゃんと痴漢され、 正しい痴漢かみたいな検証します。で、 その後になんか価格のあのこの えっとトランザクション走らせた後にどの ぐらいガスピーのキャップが上昇するか みたいなそういうののチェックをしてあげ ます。 で、最小価格のチェックをしてあげるっていう、そういう最小価格うん。ですね。って感じです。 うん。

これが主バリエートランザクションです。 で、ま、ブロブはそんな感じで、レガシー プールADの場合は、ま、もうちょっと 単純でまず最初にプールにもし同じ トランザクションすでにあったらスキップ してで、バリデートベーシックス走らせて でプールを、ま、同じ配達制御でロックし てトランザクションに、あ、プールに追加 して、なんかその後にプールの再編成 みたいなのが走ってる で、えっと、ま、そのトランザクションへ

のプールの追加が終わりましたと。で、 そうするとハンドラー作動して、ま、まず 1番最初にノードを開始します。立てる時 にスタートっていう関数が走るんですね。 で、ここであのサブスクライブ トランザクションンっていうイベントを あの検知するサブスクライバーがちゃんと スタートしてると。 で、そのサブスクライブトンザクションイベントが走ったらこの TXブロードキャストループが呼ばれる ですね。で、こいつがブロードキャスト トランザクションを呼んで、で、そ、ま、 そのブロードキャストトランザクションは 何を入れるか、このエイシンク線の

トランザクションズっていう、ま、この ピアの実装が呼ばれて、で、この時に、ま 、なん かノーントランザクションズっていう、ま 、もこのトランザクション知ってるよって いうリストを追加するんですね。で、これ はなんかもう同じ知ってる トランザクション受け取っても無視するっ ていうもう最初に走らせるためにチェック してあげるとで、ま、その後にピアto ピアで先動されるという感じです 。ま、これで ほぼクションの追加の部分は終わりです。 テトラザクションっていうのはそれ送った 送ったのと送られてきたやつ

どっちも これってどんぐらい系並列で動いてる? えっとね実際に5 って並系並列処理を明示化する機能がなくて ほうほうほうほう動画あんまことない キャストだとレイオンとかで並列化書かなき 並列化しないんだけど。うん。うん。5 はそういうのがないから。 あ、裏側でやってくれてる。的に そらくちょっと俺5 の実装完全にわかんないけど。 ま、はいはい。そイメージ的に うん。 そう。ラストはそうレイオンとか呼ぶ出さないと絶対やってくれないんだけど。 あ、じゃあまずに うん。オッケーです。

ま、わかんない。このなんか関数のさらに奥で月かあるのかもしんないけど。 ああ。 て感じです。いいですか?はい。はい。 じゃ、次 Patiaからのブロードキャストでこれは、ま、 PAtoPia.サーバーってとこが別の EL からトランザクションを受け受けておりましたよっていう。 で、そうするとトランザクションのまず 検証をしてプルに保存してで、さらに自分 も別の人たちにブロードキャストするって 、ま、その3段階ですね 。で、流れとしてはまず最初に ハンドルトンザクションズっていうのが

呼ばれますと。で、ここでなんか最初 にアクセプトTXXみたいな、ま、 えっとのが呼ばれて、ま、みたいなんです けど 、ま、ま、結局ハンドルが呼ばれですね。 で、ハンドルが何してるかと言うと、えっ と 、ん、これ何のメモが 、ま、この円を、ま、呼ぶとで、円で、ま 、ちょっとこれちっちゃいんですけど、 まず、ま、トランザクション結構バッチ 単位で送る。ま、10個とか5個とかな、 ま、何個かわかんないですけど、バッチン

で基本受け取っていて、ま、わかんない。 中身は1個かもしんないけど。 で、このバッチごとにループ走らせて、ま、だから興奮基本書いてあるから多分この興奮が多分裏で リスカされてるんだろうね。されてそう。 うん。 で、えっと、この中で あの同じくTX プールアドが呼ばれるとなんで、ま、さっきの TXプアと全く同じロチックが走って、その中で同じくバリデートランザクション呼ばれる。 で、それが走った後になんかクリーン アップ処理みたいなのが走って、で、これ なんかちょっとよくわかんなかったんです

けど、ま、なんか届いたよっていうのを ちゃんと返してああげる仕組みなのかなっ て いう君のトランザクションを届きましたよ みたい なっていう感じですね。で、あとはもう 一緒です。Tブロードキャストして いいでしょ?なんかありますか? 大丈夫です。大丈夫でしょ。 ここで呼ばれる内容は全てさっきの1 番でも呼ばれてる。うん。 ほぼ呼ばれてるっていうのがなって共通部分はかなり多い。 そう。このTXプルアド以降は全く一緒。 ああ。オ。うん。 そう。これはもう全く同じ関数がある。 ですね。じゃあ最後にエンジンAPIから

の リクエストですけど、ま、エンジンAPI 主にサポされてるのは、ま、主に3つで、 ま、もうちょっとあるんですけど、 フォークchoアップデートっていうまず リクエストがあります。これはブロック ヘッドが更新されたよっていう フォークチョイス走ったよみたいな。で、 ここ中にたまにブロック構築開始してねっ ていうリクエストも一緒に含まれてること がある。うん。です。 で、それはあの、俺の次のスロット、俺がプロポーザーだからブロックポスク開始してくれよってのをこの関想一緒にリクエストしてあげるっていう。 うん。 [音楽] で、ニューペイロードはあのここでブロック構築開始してくれって言った時に 12 秒後に構築したやつくれって投げてくる。 うん。 で、ゲットペイロードはあのなんか別のプロポーザーから受け取ったブロックを検証してくれっていう検証のためのリクエストですね。

で、ま、それぞれ最初なんかノード デフォルトGOっていうところでエンジン APIのメソっと定義されてて、で、基本 的にコンセンサスからの処理は イサカリストAPI5っていうところで 実装されてて、そん中にフォークチョイス アップデートV1、V2、V3とニュー PayロードV1、V2、V3、V4と かゲットPLロードV1、V2、V34 みたいな数が定義されて るっていうですね 。で、フォークショスアップデート は主にブロックチェーンのヘッドブロック が更新されたことを検知し、検証を行うと で、もしペイロード属性が提供されている 場合新しいブロックコチを開始する。V1

、V2、V3つの関数があるけど、V1は パリスフォークまでの実装で、V2は上海 フォークまでで、ここで ウィズドロアルズっていう機能が追加され てると。で、V3 はそれ以降の全てでなんかビーコンルートっていうのが追加されてるよっていう。 あ、これベイロードのバージョン。 あ、違う違う。あのこのこのフォークチェイスアップデッド自体の ああ、 リクエストバージョン。リクエストのバージョン。 ああ、なんかS だとペイロードのバージョンが4 つぐらいあって確か。 あ、あ、でもペこっちもある。こっちもV 1V1Vある。全部。あ、全然API のバージョンみたいな。 あ、そうそうそうそう。 で、

フォークチイスアップデ は、ま、あの、なんか最初にちゃんと パラメーターにwithドロールズある みたいな、ビーコンデートあるみたいな、 そういうチェックをした後にフォーク ショスアップデドっていう関数を走らせる 。で、こなくtodo書いてあるんだけど 、本来はパラメーターが間違ってても アップデートがだけは適用されて正常な レスポンスを返すはずなんだけど、今 エラーを全部もうここでもあのニルじゃ ないともうエラーみたいなインバリット、 インバリット、インバリッド返さな本当は インバリトじゃなくて何かなんかバリット みたいな値を返さなきゃいけないんだけど もうなんか早期リターンしちゃってるで これは仕様と違いますよっていうのが 分かれてる

でこの仕様をちゃん 準拠去するためにはこのフォークチョイスアップデートっていうのをヘッドブロック更新の関数とブロック構築の 2 つの関数に分けてあげてねみたいなとこまでなんかちゃんと丁寧に書かれてるけど、 ま、それされてないってます。 で、フォクショアップデート関数では、ま 、まず最初にハト制御走って、ま、別の フォークチョイスアップデートが同時に来 ても無視するっていうのがちゃんと走って 、ま、これは結構57であのロックロック アンロックみたいな書いてあげる。 で、ゼロハッシュチェックみたいなして、なんか受け取ったなんかブロックのハッシュが 0、ハが0じゃないかみたいして、 で、最終受け取り時刻の更新して、ま、これはなんか結構なんかエンジン

API 止まってますよみたいな検知をするために最後に受け取った時刻みたいなをちゃんとログ取ってあげる。 で、ブロックの存在確認みたいなして存在 しなかったら、え、ブロックの祖先が、ま 、その前のブロックですねが向こうじゃ ないみたいなをチェックしてリモート ブロックっていう存在して、ま、この リモートブロックどこにあんのみたいな ちょっと疑問だったんですけど、なんか 多分何、何かしら進クして 、あの、必要なブロックをダウンロードし てあげる。だ、ここでなんかビーコン シンクみたいな関数がどっか で走っ てるですね。ま、こっか。ビーコンシン クっていう走ら せるです。で、ビーコンシ、あ、まだ、ま

、その続きか。で、続きでブロックがじゃ 、正規チェーンに所属してるかみたいなの をチェックして、で、ファイナライズされ たブロックかみたいなの次にチェックして 、で、セーフブロックハッシュっていうの が含まれてるかみたいなチェックする 。 で、最後にペイロード属性が含まれてる場合は、えっと、ここビルド、ビルド、ペイロードでブロック構築を開始、開始出しますっていう、これがフォークショップですね。 [音楽] ファイナライズはどういうこと?

[音楽] ファイナライズは、あの、ま、これ通常のファイナライズっていう意味だと思うけど、ま、ファイナライズされたブロックハッシュと一致してるかみたいなこでなんかちゃんとチェックしてるんですけど、ファイフズって前ぐらいだから [音楽] もあ、そう、そう、そう。 そのどういうこと? えっと、もしなんか自分が受け取ったブロックの うん。なんて言うの?3 がファイナルズされたブロックとなぜかなんか違うツリーに属してるみたいなことがないように。 あ、そう。ファイナライズに繋がってるかしてるみたいな。そう。 はい。そうすね。なるほどな。 そっから生えてるかどうか。 うん。

他には大丈夫ですか? せ、正規チェーンはこれはえっと、あ、ヘビエスとかをチェックしてるみたいなこと おそらく。うん。リゴーストさん。 うん。うん。 おす。で、ちょっと時間も ちょっとだけど なんかビーコンシンクさっきあったけど、ま、これはなんかスケルトンシンクみたいなのが呼ばれてて、なんかヘッターだけを進してますね。なんかヘッターだけのチェーンをなんかスケルトンチェーって呼ぶらしいです。 で、ビルドペイロードで実際にブロック

構築する時に、ま、まずこの呼ばれた時点 ではペイロードだけ作ってそれを返して あげる。ま、この時には実際にペイロード 含まれたね。で、バックグラウンド、この ゴンクっていうのでバックグラウンド処理 が走ってタイマーが12秒にセットされる 。しっかり12秒で12秒経ったらペイ ロードを返すみたいなので、ま、その スタートの時にジェネレーワークっていう のが呼ばれて、こいつが実際にブロック 構築する 。ジェネートワークでやることとしては、 まず最初に親ブロックを特定してタイム スタンプ検証してブロックヘッダーを作る 。その後にEIPの適用してもし1559 なんだったらベースフィートガスリミット

484だったらブロックガス4788だっ たらビーコンブロックルートの処理って そういうのを適用してあげると。で、次に えっと環境を準備するの管理とEVMの 環境準備が走ると。ま、これがなんか最初 にプリペアワークっていうところで呼ばれ てると 。で、その後にトランザクションを実際に ブロックに埋めてくフィル トランザクションて関数が呼ばれると。で 、フィルトランザクション終わったら ブロックボディ作ってリクエストハッシュ 設定してブロックを確定して組み立て るっていうですね 。で、フィルトランザクションではなんか まず設定の取得みたいな、ま、ガスの プライスとかここに書いてあるけど

プリオっていうのは多分プライオリティの 役でそういう設定をやって、で、次にペン ディングラベルが付いてる トランザクション。ま、これはもうこの トランザクション絶対通るよみたいな ペンディングラベルつけられるんですね、 最初に。で、こっから全部の トランザクションをまず全部取ってくる 。で、全部そうですね。全部、あの、まず 最初レガシープールから全部取ってきて、 え、ブローブプールから全部取ってきて 、で、その後に優先トランザクションと 通常トランザクションに分ける 。 で、優先。ま、それはさっきの優先順位付けを元につけるっていうで、優先トランザクションについて価格とナンスで相当で通常トランザクションで価格とナンスで相当で相当で上に来た順番から、え、コミットランザクション呼ばれていくと 優先順位は2つなんですか?これは

優先順位はあのさっきの最初の方で説明した優先順位 に従ってるから、えっと、ま、連続、連続というか、ま、細かく分けられて、 ま、一応、そう、一応ガスの設定とかアカウントから送られてきたトランザクション数が少ないかとかその辺です。 [音楽] じゃ、その中で優先の方に入る基準と、 えっと、通常の方に入る基準っていうのはさらに別であるっていうなんかどっかのなんか敷位置があって あ、そうっすね。うん。ふん。 ま、半々とかで分けてんのかな、これ。 あ、数で。

うん。 まあ、まあ、ちょっとわかんない。ま、ま、でもレンジプリってあるから多分あの優先 [音楽] 優先に入れる数っていうのがあらかじめ決まってて、その数だけ最初に優先トランザクションプールから うん、 引き出すっていう感じになってるんで。 ああ、そう。確かにいっすね。 うん。 確かにそっちのシっくり行く式位置ってよりはっていう うん。うん。なるほど ですね。オッケー。

うん。 じゃあコミットランザクションはと言うとまず最初にガスリミットチェックしてもうこのガス入らないっていう時は終了すると。ま、これなんかガスリミットなんか呼ぶだけ呼んじゃうんですよね。ああ、ちゃう違う。 コミントランザクションっていうのは、ま、さっき、さっきなんか優先と通常分けたけど、それ全部入るわけじゃなくて、もうなんか全部のプール取ってきて、全部とりあえずコミットランザクション読んであげる。で、コミットランザクションの中で入れなかったら終了するみたいな、そういう実想になってる。全部読て結構。 うん。実際にそうだね。全部 こいつは悪い。 うん。全部がね、実際にどれだけなんかトランザクションこの辺で終了してるかとか調べたら面白いか。

ああ、なるほど。 そうやね。で、ま、なんかそういうブロブ スペースチェックして入れなかったら 終わるみたいな、そういうのが何個かやっ てって、で、ガスフィ えっとなんかブローブとトラン通常 トランザクション比較してなんか高い方の ガスフィーを選択してそれをガスフィーに セットしてあげる。で、ガスが不足して ないかみたいなチェックして、ブロブの ガスチェックして、なんかTXリゾルブっ ていうのが呼ばれて 、で、リプレイ攻撃保護のチェックがここ

でも走って、最後にトランザクションの 実行アプライントクションwith EVMので実際にEVMのステート更新が 行われる という感じです。 あ、リプレイ方チェックとかって なんかメンプル周りでもあった気がするけど、もう 1回やる。そう。ここでももう1回やる。 ブロック構築でも。なるほど。うん。 で、ニューロードの方 は新しいブロック を、え、受け取る とん、コンセンスレイヤー

からそう。あれ、ニューロードが受け取る んだっけ?ニューロードって作ってねえ じゃなかったっけ ?あ、そうだ。作ってねえんだよね。 じゃ、これちょっと間違ってて 、ニューPayロードはコンセスレアから 新しいブロック構築のリクエストを 受け取る 。で、なんかバリデートリクエストみたい 最初に走ってなんかリクエストがじゃない こととか適当にチェックしてでニューペイ ロード走らせてペイロードを元に、え、 ブロック構築して、え、もしブロックが 存在してる場合はもうなんか検証された はずなんで検証スキップし

てでなんかんうん。また検証するのか なんかタイムスタンプの検証とかや るっていう感じですね 。で、その後にブロック挿入。あれ、これ ニューローだっけ?ま、いいや。あの、 ブロックを挿入してあげると 。で、ここでプロセスブロックが走って、 えー、まあ、なんかけ、ま、ま、ここでも 何個か検証が走ってブロック書き込まれる とで、チェーンヘッドが更新され

るっていう 。多分こんゲットブロックかな?ゲット ペードかも。 あ、うん。多分ここゲットペイロードの説明ですね。ブロックを検証する、検証してあの部分ですねがこんな感じで検証してるっていう感じでした。以上です。 うん。うん。 最後の書き込みはローカルのDB

というか、 そう、ローカル、ま、ゲスもブロックチェーンを、ま、ゲスの方でブロックチェーンのデータが持ってて、そこに、 そうだ、そこのDBに書き込まれてる。 ま、マークル3 とかもちょっと取れるよう。 そう、マークル3とかも。はい。 本当はマークル3 の実装とかも読みたかったけど。 そうね。ちょっといい。ですか。 なんかツリっていうI のっていうフォルダーがあって ああ、トライト マルシアっていう感じでした。 うん。

うん。 ここで紹介されてないこともいっぱいあるっていうことが いっぱいある。 今回トランダクションで注目したけどなんだろう?ピアノ発見の話とか。 そうだね。はい。いいね。 知らないことばっかだよ。ばっかやな。 なんかその並列かまやってるかどうかみたいなこともあるんですけど、 そのとかは 早いのがなわけで うん。 ゲスってどちらかというとなんか、ま、スタンダードになってきてるから食い方がて うん。うん。うん。 ま、その中でも企画できるところとか特徴があれば知りたいです。

ゲストレスで逆にこの別の他の役 あ、他の でも何でもこうならではとかま、さっきのロックの話とかやっぱ そうだな。逆にこれ聞いせなんかあったレス俺あんまレスまだ読めてないから。 あんまり他の実装わかんないんだよね。シンプル開発者が多いのか。そうだありそう。 それが1番うん。うん。なんかあのEF のチームの中にもゲスチームとかああ うん。そうだね。ゲスはEF が主導してるから。 うん。 はい

。 コンセンサス側だと割とVIP の議論とかあると思うんだけどゲスの方だと VIP とかそういう改善の議論って何がどういうの?そある? [音楽] いや、結構あれ、ま、ま、あるんじゃない?ま、 4844 とかもうどっちかというとゲス側で ああ、どうしよう。 ブロック、ま、トランザクションタイプと かが変わる時とかブロックのなんか構築 プロセスとかガスフィーとかその辺はもう ほぼうん。エグゼキューション側だね 。あと途中で出てきたRLP

っていうエコード方式があると思うんだけど、あれを SSZっていうあ、 何しようみたいなEPが結構出てる。 うん。へえ。 うん。そっちがわかんない。シンプルシリア。 ああ、 これランダランダもゲストか。ブロックボディに含まれる。 ランダを ブロックボディに多分ランダリビールが含まれてそれの ミックスの更新とかも多分実クライト側でやってるんじゃないかな。 あ、そうなんか。うん。 コンセンサス側でやってないと僕かな。ちょっと確かに ピンキはコンセンサスっぽい。

いや、ブロックボディ。 ああ、私ブロック。うん。ま、どうだろう。実際ペイロード、ま、ゲスがでもペイロードを返すからブロックボディはコンセ側で処理してるかもしれない。 ああ、そうだ。うん。 ブロック自体の構築は えっとね。はい。 はい。じゃあ ありがとうございました。 ありがとうございます。 [音楽] の

なん