当前位置: 首页 > news >正文

foundry创建项目

目标:用Foundry创建并部署一个ERC20代币​​
​​第一步:安装Foundry(5分钟)​​
​​打开终端(Mac/Linux)或WSL(Windows),逐行执行:​​

1. 安装Foundry

curl -L https://foundry.paradigm.xyz | bash

2. 重启终端,然后运行

foundryup

3. 验证安装(应该显示版本号)

forge --version
cast --version
anvil --version
​​如果看到版本号,恭喜!安装成功!​​
​​第二步:创建项目(2分钟)​​

1. 创建项目文件夹

mkdir my-first-token
cd my-first-token

2. 用Foundry初始化项目

forge init

3. 查看生成的文件结构

ls -la
​​你会看到这样的文件夹结构:​​
my-first-token/
├── src/ # 放智能合约代码
├── script/ # 放部署脚本
├── test/ # 放测试代码
├── lib/ # 依赖库
└── foundry.toml # 配置文件
​​第三步:写一个简单代币合约(5分钟)​​
​​在 src/MyToken.sol文件中写入:​​
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

import “forge-std/console.sol”; // 用于调试输出

contract MyToken {
string public name = “My First Token”;
string public symbol = “MFT”;
uint8 public decimals = 18;
uint256 public totalSupply = 1000000 * 10**18; // 100万代币

mapping(address => uint256) public balanceOf;event Transfer(address indexed from, address indexed to, uint256 value);constructor() {balanceOf[msg.sender] = totalSupply; // 部署者获得所有代币console.log("代币部署完成,总供应量:", totalSupply);
}function transfer(address to, uint256 amount) external returns (bool) {require(balanceOf[msg.sender] >= amount, "余额不足");balanceOf[msg.sender] -= amount;balanceOf[to] += amount;emit Transfer(msg.sender, to, amount);return true;
}

}
​​第四步:编译合约(1分钟)​​

在项目根目录执行

forge build
​​看到 Success表示编译成功!​​
​​第五步:测试合约(3分钟)​​
​​在 test/MyToken.t.sol文件中写入:​​
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

import “forge-std/Test.sol”;
import “…/src/MyToken.sol”;

contract MyTokenTest is Test {
MyToken token;
address owner = address(0x123); // 测试账户

function setUp() public {token = new MyToken(); // 每个测试前部署新合约
}function testInitialBalance() public {// 测试部署者是否有全部代币assertEq(token.balanceOf(address(this)), 1000000 * 10**18);
}function testTransfer() public {address alice = address(0x456);// 转账测试token.transfer(alice, 1000);// 验证余额assertEq(token.balanceOf(alice), 1000);assertEq(token.balanceOf(address(this)), 1000000 * 10**18 - 1000);
}

}
​​运行测试:​​
forge test
​​看到绿色对勾和PASS表示测试通过!​​
​​第六步:部署到测试网(10分钟)​​
​​6.1 启动本地测试网络​​

新开一个终端窗口

anvil
​​你会看到10个测试账户和私钥(记下第一个账户的私钥)​​
​​6.2 配置环境变量​​

回到原终端,设置环境变量

export PRIVATE_KEY=刚才记下的私钥(去掉0x前缀)
export RPC_URL=http://127.0.0.1:8545
​​6.3 部署合约​​
forge create src/MyToken.sol:MyToken --private-key $PRIVATE_KEY --rpc-url $RPC_URL
​​部署成功后,你会看到:​​
Deployed to: 0x5FbDB2315678afecb367f032d93F642f64180aa3
Transaction hash: 0x…
​​第七步:与合约交互(5分钟)​​
​​用cast工具测试转账:​​

1. 查询部署者余额

cast call <合约地址> “balanceOf(address)” --rpc-url $RPC_URL <部署者地址>

2. 转账给另一个账户

cast send <合约地址> “transfer(address,uint256)” <接收地址> 1000 --private-key $PRIVATE_KEY --rpc-url $RPC_URL

3. 验证转账成功

cast call <合约地址> “balanceOf(address)” --rpc-url $RPC_URL <接收地址>

部署:

1. 重新设置环境变量(根据图片中的指导)

export PRIVATE_KEY=ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 # 去掉0x前缀的私钥
export RPC_URL=http://127.0.0.1:8545

2. 验证变量是否设置成功

echo $RPC_URL # 应该显示 http://127.0.0.1:8545
echo $PRIVATE_KEY # 应该显示私钥内容

添加 --broadcast 参数进行真实部署

forge create src/MyToken.sol:MyToken --private-key $PRIVATE_KEY --rpc-url $RPC_URL --broadcast

在这里插入图片描述

测试
cast send 0x5FbDB2315678afecb367f032d93F642f64180aa3 “transfer(address,uint256)(bool)” 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 1000 --private-key ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 --rpc-url http://127.0.0.1:8545

http://www.dtcms.com/a/465693.html

相关文章:

  • 网站整体地图怎么做招设计师在哪里找
  • C#学习小笔记(完整版)—— Patience
  • 解决MySQL8.0及其更高版本的两个安全问题——及其配置MySQL实现SSL/TLS加密通信、caching_sha2_password通信
  • Node.js性能优化:从事件循环到内存管理
  • Node.js核心模块:fs、path与http详解
  • 企业级UDP文件传输工具如何重塑数据交换格局
  • 在JavaScript / Node.js中,Web服务器参数处理与编码指南
  • 佛山新网站建设服务网站中文域名好吗
  • Python打包成exe(windows)或者app(mac)
  • 网站开发都做什么小程序电商系统开发
  • 《电子商务网站开发实训》总结抖音代运营 广州
  • 《MySQL索引优化实战从B+树原理到慢查询性能提升》
  • 深入理解MySQL索引原理B+树如何提升查询性能
  • Spring Boot 整合 Thymeleaf 生成 HTML 页面教学
  • 深入解析MySQL索引优化从B+树原理到实战性能调优
  • MySQL索引优化的艺术从B+树原理到慢查询性能提升实践
  • 解密MySQL索引优化从B+树原理到实战性能提升
  • {title:深入解析MySQL索引优化从B+树原理到实战调优策略}
  • 深入解析MySQL索引优化从B+树原理到实战避坑指南
  • 古色古香网站模板加盟网络营销推广公司
  • 北京网站建设推荐q479185700上快给手机做网站的公司
  • wordpress建站视频静态网站可以申请域名吗
  • 3. 3层神经网络的实现
  • 【论文阅读 | TCSVT 2024 | CCAFusion: 用于红外与可见光图像融合的跨模态坐标注意力网络】
  • 中小企业网站建设客户需求调查问卷基于拍卖的拍卖网站开发
  • 百度收录提交接口谷歌优化的网络公司
  • 坯子插件库 v3.2.1 for SketchUp 2022-2024下载与安装教程
  • IT行业——如何将自己的技能重新包装,从“一堆零件”变成“一套解决问题的组合工具”*
  • 版本控制器 git(3)--- git 分支管理
  • freertos-软件模拟IIC读写at24c02