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>