前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Foundry之部署合约本地网络

Foundry之部署合约本地网络

原创
作者头像
孟斯特
发布2025-01-17 14:57:07
发布2025-01-17 14:57:07
1010
举报
文章被收录于专栏:EthereumEthereum

在之前的文章里,我们介绍了如何使用Foundry来对我们的合约进行测试。现在合约测试完成后,我们需要将合约部署到本地网络上,以便其他用户可以调用。

准备工作

与测试合约类似,Foundry支持通过脚本的方式来部署合约到本地网络。首先,需要我们在之前的项目下新建script目录,并新建deploy.s.sol文件,内容如下:

代码语言:solidity
复制
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "../src/String.sol"; // 需要部署的合约
import "forge-std/Script.sol";

contract DeployString is Script{
    function run() public{
        uint256 deployerPrivateKey = vm.envUint("RAW_PRIVATE_KEY");
        vm.startBroadcast(deployerPrivateKey);

        SimpleStorage ss = new SimpleStorage();

        vm.stopBroadcast();

        console.log("SimpleStorage address: ",address(ss));
    }
}

在上面的脚本中,我们使用了环境变量RAW_PRIVATE_KEY来获取部署者的私钥,并使用vm.startBroadcast方法开启广播模式,然后使用new关键字创建了一个SimpleStorage合约的实例,并使用vm.stopBroadcast方法停止广播模式。最后,我们使用console.log方法输出了SimpleStorage合约的地址。

部署合约

在开始部署合约之前,我们还需要配置两个环境变量:

  • RAW_PRIVATE_KEY,存储部署者的私钥,格式为十六进制字符串。
  • ETH_RPC_URL,本地测试网络的RPC URL。

环境变量配置完成后,我们可以运行forge script命令来部署合约:

代码语言:bash
复制
$ forge script script/deployString.s.sol --broadcast --legacy
[⠢] Compiling...
No files changed, compilation skipped
Script ran successfully.

== Logs ==
  SimpleStorage address:  0xb9f4084fFef8e747dC607879dc87cdF4f0D7041C

## Setting up 1 EVM.

==========================

Chain 42958543

Estimated gas price: 0.000000001 gwei

Estimated total gas used for script: 332722

Estimated amount required: 0.000000000000332722 ETH

==========================

##### 42958543
✅  [Success] Hash: 0x46d38f9576fb621fab64ce51f62136ca0f98184e30ffd8a453ffbcd08e5348d9
Contract Address: 0xb9f4084fFef8e747dC607879dc87cdF4f0D7041C
Block: 26
Paid: 0.00000000000025594 ETH (255940 gas * 0.000000001 gwei)

✅ Sequence #1 on 42958543 | Total Paid: 0.00000000000025594 ETH (255940 gas * avg 0.000000001 gwei)


==========================

ONCHAIN EXECUTION COMPLETE & SUCCESSFUL.

Transactions saved to: /root/vscode/contract/broadcast/deployString.s.sol/42958543/run-latest.json

Sensitive values saved to: /root/vscode/contract/cache/deployString.s.sol/42958543/run-latest.json

部署成功后,我们可以看到SimpleStorage合约的地址。

因为我本地的测试网络不支持 EIP1559,所以使用--legacy参数

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备工作
  • 部署合约
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档