抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

引言

官方文档

下载安装(Windows版)

📌 小插曲

本人用的是Windows系统的电脑,而网上的一些安装教学基本上都不好用。有的说要去下载最新版本的VSCode,有的说要去下载c++编译器,还有去下载rust等等。反正我兜兜转转一大圈回来,emmm,c盘莫名其妙少了10个G。最后还是在学长的建议中把foundry安装好了。

可以直接到GitHub上找到.exe文件,下载下来之后,将其配置到环境变量中即可。下载链接:LINK ,其中下载的是.zip那个压缩包。

image-20230907141359711

随后,在桌面打开命令行(win+cmd),输入forge test,运行结果应该为Nothing to compile

0x00. Foundry操作指令

  1. 初始化 Foundry项目
1
forge init [项目名字]
  1. 编译合约
1
forge compile
  1. 部署合约
  • 使用forge create指令
    • 配置临时环境变量(即当前窗口有效)
    • powershell:例如 => $env:PRIVATE_KEY=”xxxx”,取值:$env:PRIVATE_KEY
    • cmd: 例如 => set PRIVATE_KEY=”xxxx”,取值: %PRIVATE_KEY%
    • keystore的使用:link
1
2
3
4
5
6
7
8
9
10
11
forge create --rpc-url <your_rpc_url> --private-key <your_private_key> --constructor-args <arg1> <arg2> ... <argN> <contract_name>
## 配置环境变量之后

## powershell
forge create --rpc-url $env:RPC_URL --private-key $env:PRIVATE_KEY --constructor-args <arg1> <arg2> ... <argN> <contract_name>

##cmd
forge create --rpc-url %RPC_URL% --private-key %PRIVATE_KEY% --constructor-args <arg1> <arg2> ... <argN> <contract_name>

## 如果有合约同名的情况则需要使用文件路径来区分
forge create --rpc-url <your_rpc_url> --private-key <your_private_key> --constructor-args <arg1> <arg2> ... <argN> src/.../MyContract.sol:MyContract

image-20240722161236540

  • 使用 forge script指令
    • 同上假设已经配置好临时环境变量
    • 待部署合约为 script/DeploySimpleStorage.s.sol

DeploySimpleStorage.s.sol

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

import { Script } from "forge-std/Script.sol";
import { SimpleStorage } from "../src/SimpleStorage.sol";

contract DeploySimpleStorage is Script {

function run() external returns (SimpleStorage) {
vm.startBroadcast();
SimpleStorage simpleStorage = new SimpleStorage();
vm.stopBroadcast();
return simpleStorage;
}
}
1
forge script script/xxxx/xxx.s.sol:xxx --rpc-url $env:RPC_URL --broadcast  --private-key $env:PRIVATE_KEY

image-20240722160927664

  1. 调用合约函数
  • 调用写函数
1
cast send <contract_address> <function(args type)> <args...> --rpc-url $env:RPC_URL --private-key $env:PRIVATE_KEY

example:

image-20240722162909760

  • 调用读函数
1
cast call <contract_address> <function(args type)> <args...> --rpc-url $env:RPC_URL --private-key $env:PRIVATE_KEY

example:

image-20240722163627913

0x01. Deploy on L2

0x02. Foundy.toml

评论



政策 · 统计 | 本站使用 Volantis 主题设计