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

生成FUCK代币,并用程序进行转账的过程

1.安装FORGE工具套装

foundry - Ethereum Development Framework

从这个地方下载foundry的全套工具,然后解压缩后,复制到/usr/local/bin目录下

https://github.com/foundry-rs/foundry/releases/download/nightly-ac0411d0e3b9632247c9aea9535472eda09a57ae/foundry_nightly_alpine_amd64.tar.gz

执行forge,有输出就说明安装好了。

2.安装node npm这一套

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash  
source ~/.bashrc  # 立即生效# 2. 安装 Node.js 22
nvm install 22  # 安装最新 22.x 版本 # 3. 验证和使用
nvm use 22      # 切换到 Node 22
node -v          # 检查版本

3.运行anvil, 单机链

输出一堆有ETH的测试账号。

(0) 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 (10000.000000000000000000 ETH) (1) 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 (10000.000000000000000000 ETH) (2) 0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC (10000.000000000000000000 ETH) (3) 0x90F79bf6EB2c4f870365E785982E1f101E93b906 (10000.000000000000000000 ETH) (4) 0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65 (10000.000000000000000000 ETH) (5) 0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc (10000.000000000000000000 ETH) (6) 0x976EA74026E726554dB657fA54763abd0C3a0aa9 (10000.000000000000000000 ETH) (7) 0x14dC79964da2C08b23698B3D3cc7Ca32193d9955 (10000.000000000000000000 ETH) (8) 0x23618e81E3f5cdF7f54C3d65f7FBc0aBf5B21E8f (10000.000000000000000000 ETH) (9) 0xa0Ee7A142d267C1f36714E4a8F75612F20a79720 (10000.000000000000000000 ETH)

账号对应的私钥:(hahaha,是不是眼睛直了)

(0) 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 (1) 0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d (2) 0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a (3) 0x7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6 (4) 0x47e179ec197488593b187f80a00eb0da91f1b9d0b13f8733639f19c30a34926a (5) 0x8b3a350cf5c34c9194ca85829a2df0ec3153be0318b5e2d3348e872092edffba (6) 0x92db14e403b83dfe3df233f83dfa3a0d7096f21ca9b0d6d6b8d88b2b4ec1564e (7) 0x4bbbf85ce3377467afe5d46f804f221813b2bb87f24d81f60f1fcdbf7cbf4356 (8) 0xdbda1821b80551c9d65939329250298aa3472ba22feea921c0cf5d620ea67b97 (9) 0x2a871d0798f97d79848a013d4936a73bf4cc922c825d33c1cf7073dff6d409c6

4.写一个ERC20合约

forge init

写一个合约,保存为src/MyToken.sol

// contracts/MyToken.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;import "openzeppelin-contracts/contracts/token/ERC20/ERC20.sol";contract MyToken is ERC20 {constructor() ERC20("MyToken", "FUCK") {_mint(msg.sender, 10000 ether); // 10000个}
}

forge  install 

forge build

5.部署合约

部署成功私钥我们就选第一个账户的

forge create --rpc-url http://127.0.0.1:8545 --private-key <Anvil账户私钥> src/MyToken.sol:MyTokenforge create --rpc-url http://127.0.0.1:8545 --private-key \0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80  \src/MyToken.sol:MyToken

部署成功后会返回一个合约地址:

[⠊] Compiling...
[⠢] Compiling 1 files with Solc 0.8.25
[⠆] Solc 0.8.25 finished in 118.05ms
Compiler run successful!
Deployer: 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
Deployed to: 0xa513E6E4b8f2a923D98304ec87F64353C4D5C853
Transaction hash: 0x88fffbc3fbdddb8967a2b4330d1ce65ecec31eb8b7c0070be88fb4ab75516715

这个就是合约的地址:

0xa513E6E4b8f2a923D98304ec87F64353C4D5C853

6. 写一个js程序进行转账。

初始代码,安装依赖

npm init -y
npm install ethers dotenv

建立.env文件,写入一些重要信息

PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80     # Anvil 启动时会打印出来的一组私钥
RPC_URL=http://127.0.0.1:8545
TOKEN_ADDRESS=0xa513E6E4b8f2a923D98304ec87F64353C4D5C853
TO_ADDRESS=0x70997970C51812dc3A010C7d01b50e0d17dc79C8

核心代码 t.js( 里面的内容不需要修改)

require("dotenv").config();
const { ethers } = require("ethers");// ERC-20 最小 ABI,只包含 transfer 方法
const ERC20_ABI = ["function transfer(address to, uint256 amount) public returns (bool)","function decimals() public view returns (uint8)"
];async function main() {// 连接本地 Anvil 节点const provider = new ethers.JsonRpcProvider(process.env.RPC_URL);// 用你的私钥创建 signerconst wallet = new ethers.Wallet(process.env.PRIVATE_KEY, provider);// 初始化合约对象const token = new ethers.Contract(process.env.TOKEN_ADDRESS, ERC20_ABI, wallet);// 获取 token 精度(例如 USDT 是 6,标准是 18)const decimals = await token.decimals();// 构造转账数量:10 * 10^decimalsconst amount = ethers.parseUnits("10", decimals);console.log(`Transferring 10 tokens to ${process.env.TO_ADDRESS}...`);// 发起交易const tx = await token.transfer(process.env.TO_ADDRESS, amount);console.log(`Transaction sent: ${tx.hash}`);// 等待上链await tx.wait();console.log(`✅ Transfer complete.`);
}main().catch((err) => {console.error(err);process.exit(1);
});

7.运行和查看

node t.js

查看需要安装一个插件来观察本地的anvil链。

google浏览器上安装一个Rivet的插件, (Developer wallet & DevTools for Ethereum)

查看账户的FUCK 代币。

http://www.lryc.cn/news/574455.html

相关文章:

  • C++字符串的行输入
  • 查询sqlserver数据库中,数据占的空间和索引占的空间
  • 鸿蒙HarmonyOS 5 开发实践:LazyForEach在通讯录应用中的高效渲染(附:代码)
  • 前端vue2每三十秒被动接受后端服务器发送过来得数据
  • 前端react使用 UmiJS 构建框架 在每次打包时候记录打包时间并在指定页面显示
  • Linux 启动过程流程图
  • PDF全能转换工具,支持图片转PDF,多图合并转PDF,word转PDF,PDF转WORD,PDF转图片
  • TouchDIVER Pro触觉手套:虚拟现实中的多模态交互新选择
  • Flask(五) 表单处理 request.form
  • 鸿蒙开发深入解析:Data Ability 数据共享机制全面指南
  • Java并发编程中高效缓存设计的哲学
  • 【格与代数系统】示例2
  • PyTorch 实现的 GlobalPMFSBlock_AP_Separate:嵌套注意力机制在多尺度特征聚合中的应用
  • 关于 pdd:anti_content参数分析与逆向
  • C#图书管理系统笔记(残缺版)
  • 【数据标注师】词性标注2
  • 【AI News | 20250623】每日AI进展
  • 基于 SpringBoot+JSP 的医疗预约与诊断系统设计与实现
  • 华为OD机试_2025 B卷_矩形相交的面积(Python,100分)(附详细解题思路)
  • leetcode82.删除排序链表中的重复元素II
  • EEG 分类攻略1- theta, alpha, beta和gamma频谱
  • C++语言发展历程-2025
  • python中学物理实验模拟:平抛运动和抛物运动
  • Python csv 模块
  • 数组题解——​轮转数组【LeetCode】
  • 华为云 Flexus+DeepSeek 征文|文案魔盒・Emoji 菌:基于华为云 CCE 集群 Dify 大模型,创意文案智能生成助手
  • 数组题解——​最大子数组和​【LeetCode】(更新版)
  • 黑马程序员苍穹外卖DAY1
  • 【软考高级系统架构论文】论数据分片技术及其应用
  • C指针总结复习(结合deepseek)