2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Castコマンドラインツールの紹介 ~ Castはいいぞ!

Last updated at Posted at 2022-10-06

Castとは

Castは、Foundryというスマートコントラクト開発ツールに付属する、コマンドラインツールです。
Foundryをインストールするときに一緒についてきます。Foundryについては、この日本語の記事が参考になるでしょう。

image.png

どういうことができるのか

RPCコールの実行や変換をコマンドラインから行うことができます。
ターミナルから移動せずに、そのままコマンドを打つことで完結するので、時間の短縮を行うことができます。

正直、使用できるコマンドについてはこちらのreferenceを見れば分かります。
この記事ではcastが役に立つ状況や便利さを語りたいと思います。

例1: アドレスをチェックサムしたい

Solidityを書いているとき、定数のアドレスをハードコードしたい時があるでしょう。Solidityではアドレスはチェックサムされていないとコンパイルできません!! また、web3.pyはチェックサムされていないアドレスを引数に与えるとエラーが出ます。

image.png
Screen Shot 2022-10-06 at 19.35.14.png

castなら秒でチェックサムできます!!タターンッ(エンターキーを弾く)

> cast --to-checksum-address 0x6b175474e89094c44da98b954eedeac495271d0f
0x6B175474E89094C44Da98b954EedeAC495271d0F

例2:カッコいいアドレスを生成したい

先頭に0が続くカッコイイイvanityアドレスが欲しい。
castならコマンド一発です。

> cast wallet vanity --starts-with=0000 
Starting to generate vanity address...
Successfully found vanity address in 34 seconds.
Address: 0x00001bCd6F496eDbB5B45095801e8b17b02B0049
Private Key: 0xedbd9f7e259364837b982ea3742e1bd81956df90c713256ea928b7ee0c5b9312

:warning: ProfanityというVanity addressを生成する有名なツールに脆弱性がありました。秘密鍵生成ツールや生成方法にはバグがあった場合、資産の漏洩に直結します。コードをセルフauditするか、ツールの使用にはそのようなリスクが伴うことに留意するべきです。
A vulnerability disclosed in Profanity, an Ethereum vanity address tool

例3:16進数を10進数に変換したい

建てたノードが動作しているか確かめるために、eth_blockNumberを叩いてみたけど、レスポンスが16進数なので読みづらい!!いちいち、変換サイトを検索するのも億劫です。castで一発で変換できます。

> curl -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":51}' http://localhost:8585
{
  "jsonrpc" : "2.0",
  "id" : 51,
  "result" : "0xef6409"
}%   
> cast --to-dec 0xef6409                                                 
15688713

または

> cast block-number --rpc-url=$MAINNET_RPC_URL 
15688713

例4:Txnのトレースを見たい

テストのデバッグ時などトランザクションのトレースを見たい時ありますよね。

試しに、Uniswapのガバナンストークンの送金トランザクションを見てみましょう。
有名な関数セレクタならシグネチャtransfer(...)のように変換されて表示されます。

> cast run --rpc-url=$MAINNET_RPC_URL 0x721dacc87c412b3a1cf5e3d8226a19a7cb0aff9c93167187e648dc05fa89e67c
Executing previous transactions from the block.
Traces:
  [18462] 0x1f98…f984::transfer(0x91161424a172b777e4c3883ffeb79cb53405a021, 69218200000000000000) 
    ├─ emit Transfer(param0: 0xee91ae665be6a92a1241911cea3cae9d50fe658d, param1: 0x91161424a172b777e4c3883ffeb79cb53405a021, param2: 69218200000000000000)
    └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001


Transaction successfully executed.
Gas used: 40118

最後に

castコマンドラインツールはsmart contract開発におけるスイス・アーミーナイフです。

参考リンク

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?