[EVM]ウォレットのトークン残高を分析する
目標
EVMチェーンで全てのウォレットのERC20及びネイティブトークンの残高を追跡したい。イメージ的には一日の残高推移を全ウォレットに確認して、シャープレシオが高い順にソートしたい。
注意
具体的なコードとかはあんまり書かないと思う。あくまで抽象的な思考と結果をここに残していく。
最初の作戦
- ブロックナンバーXのステート取得
- ブロックナンバーX~Yまでのトランザクション取得
- ブロックナンバーYのステート取得
- ローカルEVMでX~Yまでのトランザクションを実行
- 取得したステートとローカル実行したステートが一致することを確認する
あんまり学びにならないかもしれないけどEthereum✖️Foundryでやってみる
左イーサ 右ハイリキ
Hyperliquid側、minerとstateRootは常に0x0っぽい。HyperBFTに橋渡ししてる関係でそうなってるのかな?ここはよくわからない
Hyperliquid
トランザクションに
to: "0x9436E82E06DE8Ff202C870dD9eEa22F56c5Ac25A"
input: "f6326fb3"
これが結構あるなーって思ったらHyperLendっぽい?
f6326fb3
はdepositETH()のセレクタ名らしい。有名セレクタっぽい
セレクタの辞書みたいなのもあるらしい: https://www.4byte.directory/
Foundryだとやっぱり便利になりすぎてて、中身がよくわからなさそうだからReth(Revm)あたりを見て内部がどうなってるのか見ながら動作を確認したい。
Reth: https://github.com/paradigmxyz/reth
Revm: https://github.com/bluealloy/revm
タスク
Ethereumのジェネシスブロックをローカル実行してStateRootハッシュの一致を確認
コンピュータについて色々理解したくて、すごい遠回りでコンピュータの理論と実装という本を読んでしまった https://www.oreilly.co.jp/books/9784814400874/
遠回りかと思ったけど色んな理解がかなり進んだ。シンプルにめっちゃ面白かったのでオススメしたい。