WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

Commit cf278d2

Browse files
authored
Merge pull request #735 from yjshi2015/patch-1
优化 Foundry 相关内容
2 parents ce442b3 + ba2770c commit cf278d2

File tree

1 file changed

+36
-7
lines changed

1 file changed

+36
-7
lines changed

Topics/Tools/TOOL07_Foundry/readme.md

Lines changed: 36 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -336,8 +336,7 @@ cast block-number --rpc-url=$RPC_MAIN
336336
```
337337
15769241
338338
```
339-
340-
> 将环境变量的`ETH_RPC_URL`设置为 `--rpc-url` 你就不需要在每个命令行后面增加 `--rpc-url=$RPC_MAIN` 我这里直接设置为主网
339+
> 将环境变量的ETH_RPC_URL设置为 --rpc-url 你就不需要在每个命令行后面增加 --rpc-url=$RPC_MAIN 我这里直接设置为主网
341340
342341
### 查询区块信息
343342

@@ -596,9 +595,9 @@ cast etherscan-source 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 --etherscan-api
596595
cast etherscan-source $WETH -d ~/Downloads
597596
```
598597

599-
### 调用合约
598+
### 调用合约(读数据)
600599

601-
调用 WETH合约的`balanceOf`方法,查看`0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2`账号的余额
600+
`cast call` 用于从区块链上读取数据(调用只读函数),该操作不会改变区块链状态,也不需要支付 Gas 费用。下面我们调用 `WETH` 合约的`balanceOf`方法,查看 `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` 账号的余额
602601

603602
```shell
604603
#cast call [OPTIONS] [TO] [SIG] [ARGS]... [COMMAND] --rpc-url=$RPC
@@ -617,6 +616,18 @@ cast call $WETH "balanceOf(address)(uint256)" 0xC02aaA39b223FE8D0A0e5C4F27eAD908
617616

618617
```
619618

619+
### 调用合约(写数据)
620+
621+
`cast send` 用于发送交易并修改区块链状态(调用改变状态的函数),该操作会消耗 Gas 费用,需要签名并发送交易。
622+
623+
```shell
624+
#cast send [OPTIONS] [TO] [SIG] [ARGS]... [COMMAND] --rpc-url=$RPC
625+
626+
cast send 0x... "deposit(address,uint256)" 0x... 1 --rpc-url=$RPC
627+
628+
```
629+
630+
620631
### 解析ABI
621632

622633
可以根据ABI反向解析出solidity代码
@@ -645,7 +656,13 @@ cast --from-rlp
645656
## Tips
646657

647658
### 设置ETH_RPC_URL
648-
将环境变量的`ETH_RPC_URL`设置为 `--rpc-url` 你就不需要在每个命令行后面增加 `--rpc-url=$RPC_MAIN` 我这里直接设置为主网
659+
将环境变量的`ETH_RPC_URL`设置为 `--rpc-url`的值,这样你就不需要在每个命令行后面增加 `--rpc-url=$RPC_MAIN`,我这里直接设置为主网,如下:
660+
``` shell
661+
export ETH_RPC_URL=your_rpc_url
662+
source ~/.bashrc # 如果你使用的是 Bash
663+
source ~/.zshrc # 如果你使用的是 Zsh
664+
cast block-number # 不用再配置 --rpc-url 参数
665+
```
649666

650667
### 设置ETHERSCAN_API_KEY
651668
设置`ETHERSCAN_API_KEY`环境变量可以直接代替 `--etherscan-api-key`
@@ -1114,7 +1131,7 @@ forge script script/Counter.s.sol -vvvv --rpc-url=http://127.0.0.1:8545
11141131
正式部署:
11151132

11161133
```
1117-
forge script script/Counter.s.sol -vvvv --rpc-url=http://127.0.0.1:8545 --broadcast --private-key=privete_key
1134+
forge script script/Counter.s.sol -vvvv --rpc-url=$RPC_MAIN --broadcast --private-key=privete_key
11181135
```
11191136

11201137
部署完成之后会多一个broadcast文件夹,查看该文件夹有`run-latest.json`可以看到部署的相应信息。
@@ -1128,6 +1145,18 @@ forge script script/Counter.s.sol -vvvv --rpc-url=http://127.0.0.1:8545 --broadc
11281145
uint256 mainnet = vm.createFork(rpc);
11291146
```
11301147

1148+
## 命令行部署合约
1149+
1150+
部署并开源合约,其中 `--etherscan-api-key` 为以太坊浏览器(或其他 EVM 浏览器)中申请的 API key,`--verify` 为部署后开源合约。
1151+
```solidity
1152+
# forge create --rpc-url <your_rpc_url> --private-key <your_private_key> --etherscan-api-key <KEY> --verify src/YourContract.sol:YourContract --constructor-args <constructor_args>
1153+
forge create --rpc-url $RPC_MAIN \
1154+
--private-key privete_key \
1155+
--etherscan-api-key xxxx \
1156+
--verify \
1157+
src/Counter.sol:Counter
1158+
```
1159+
11311160
## Tips:
11321161

11331162
```shell
@@ -1160,4 +1189,4 @@ forge run --debug
11601189
## 参考
11611190
[使用 foundry 框架加速智能合约开发](https://www.youtube.com/watch?v=EXYeltwvftw)
11621191
[cast Commands - Foundry Book](https://book.getfoundry.sh/reference/cast/)
1163-
[https://twitter.com/wp__lai](https://twitter.com/wp__lai)
1192+
[https://twitter.com/wp__lai](https://twitter.com/wp__lai)

0 commit comments

Comments
 (0)