foundryをインストールしてSolidityで書かれたスマートコントラクトをブロックチェーンにデプロイ&実行するまでの流れ

素人プログラミング備忘録ですので自己責任でお願いします。
Ubuntu22.04

foundryのインストール

参考:
https://book.getfoundry.sh/getting-started/installation

インストール

以下の方法で最新版がインストールされる。

curl -L https://foundry.paradigm.xyz | bash
実行結果

パスを通すように書いてあるので、画像の「Run 'source /home/lisk/bashrc'」を参考に私の場合は下記を打ち込んで実行。
ちなみに、その後「インストールするには'foundryup'と打ち込んでね」、とも書かれています。

source /home/lisk/.bashrc

インストール

foundryup
実行結果

これでインストール完了したはず。

インストール完了確認(テストプロジェクトを作ってみる)

デフォルトテンプレートでhello_foundryプロジェクトを作成

forge init hello_foundry

下記のディレクトリやファイルが作成される

ビルドする

forge build

テストする

forge test

ちなみに、コントラクトの中身は、
・setNumber関数で数字をセット
・increment関数で数字を+1する
だけでした。

そして、forge buildしたときに表れたoutディレクトリ内のCounter.solディレクトリ内にABIがありました。

ブロックチェーンにデプロイする

スマートコントラクト(・数字をセット、・数字を+1するだけのコントラクト)をブロックチェーン上にデプロイしてみます

Base mainnetにデプロイしてみました。
<my_rpc_url>はmetamask等のwalletでrpc urlとして指定しているurl
<my_private_key>はmetamask等のwalletで使用している秘密鍵
<my_api_key>はBaseScanにSign in(未登録であればSign upから)してAPIキーを発行すると得られます(コマンドでコントラクトにアクセスする場合は不要かも?)

forge create --rpc-url <my_rpc_url> --private-key <my_private_key> --etherscan-api-key <my_api_key> --verify src/Counter.sol:Counter

※APIキーの発行

デプロイされるとTransaction hashが発行されるので、BaseScanで確認してみました。

https://basescan.org/tx/0xba53f5ff92c14414de46ab47a28a2bc778d24e1855a84faf3478ef6e3d2ef8b2

To: の項目にコントラクトアドレスが表示されていますので、クリックして飛んでみます。

Contractタブに行くとRead ContractとWrite Contractがあります。

Write Contract

まさに、
・数字をセットする関数
・数字を+1する関数
が存在します(当初と順番は逆ですが)

Connect to Web3でMetamaskに接続できるので、setNumberで「5」をセットしてみました。

今度はincrementを実行してみました。

Read Contract

setNumberで「5」をセットし、incrementしたので「6」がnumberに入っているはずです。

確認できました(ページ再読み込みをしないと反映されませんでした)。

(foundryでコントラクトを実行)

setNumber

cast send <contract_address> "setNumber(uint256)" <number> --rpc-url <my_rpc_url> --private-key <my_private_key> 

<contract_address>は今回の場合は0x48B4e9051ecC1a4464063eDaaF736856E8616C70
<number>は任意の数字(例えば7)

increment

cast send <contract_address> "increment()" --rpc-url <my_rpc_url> --private-key <my_private_key>


いいなと思ったら応援しよう!