使用 Foundry 部署合约
Foundry 是一个快速、可复制的模块化工具包,适用于 Rust 语言编写的以太坊应用程序的开发。
先决条件
开始之前,需要安装以下工具:
安装 foundryup
foundryupFoundryup 是 Foundry 工具链的官方安装程序。
curl -L https://foundry.paradigm.xyz按照屏幕上的说明操作,安装 Foundryup,接下来便可以在本地 CLI 中使用 foundryup 命令。
安装 forge、cast、anvil 和 chisel 文件
forge、cast、anvil 和 chisel 文件foundryup创建 Foundry 示例项目
运行以下命令,使用 foundry-monad 模板,创建一个新的 foundry 项目:
forge init --template monad-developers/foundry-monad [project_name]或者,可以运行以下命令,创建默认的 foundry 项目:
forge init [project_name]修改 Foundry 配置
更新 foundry.toml 文件以添加 Monad 配置:
[profile.default]
src = "src"
out = "out"
libs = ["lib"]
# Monad Configuration
# TODO: Add RPC URL and Chain ID
eth-rpc-url="MONAD_RPC_URL"
chain_id = "MONAD_CHAIN_ID"
# TODO: Add Explorer URL and Chain ID
[etherscan]
monadDevnet = { key = "DUMMY_VALUE", url = "EXPLORER_URL", chain = MONAD_CHAIN_ID }编写智能合约
你可以在 src 文件夹下编写智能合约。此项目中已有一个 Counter 合约,位于 src/Counter.sol。
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;
contract Counter {
uint256 public number;
function setNumber(uint256 newNumber) public {
number = newNumber;
}
function increment() public {
number++;
}
}编译智能合约
forge compile编译结果输出在新创建的 out 目录下,其中包括 Contract ABI 和 bytecode。
部署智能合约
获取测试代币
部署智能合约需要测试网测试代币,可通过测试网水龙头领取。
部署智能合约
Keystore 是 Foundry 项目中使用私钥的一种更安全的方式,因为 keystore 会加密私钥,且可以在任何需要私钥的命令中引用。
运行以下命令,创建新的钱包密钥库:
cast wallet import <keystore_name> --interactive出现提示时,输入钱包私钥,并设置密码进行加密。
运行以下命令,部署智能合约:
forge create src/Counter.sol:Counter --account <keystore_name>结果输出如下示例,表示合约成功部署:
Deployer: 0xB1aB62fdFC104512F594fCa0EF6ddd93FcEAF67b
Deployed to: 0x67329e4dc233512f06c16cF362EC3D44Cdc800e0
Transaction hash: 0xa0a40c299170c9077d321a93ec20c71e91b8aff54dd9fa33f08d6b61f8953ee0运行以下命令,直接在终端中粘贴私钥,并部署智能合约。
forge create --private-key <your_private_key> src/Counter.sol:Counter结果输出如下示例,表示合约成功部署:
Deployer: 0xB1aB62fdFC104512F594fCa0EF6ddd93FcEAF67b
Deployed to: 0x67329e4dc233512f06c16cF362EC3D44Cdc800e0
Transaction hash: 0xa0a40c299170c9077d321a93ec20c71e91b8aff54dd9fa33f08d6b61f8953ee0后续步骤
了解如何在 Monad Explorer 上验证合约,请参阅 验证 Foundry 合约。
最后更新于