Web3怎么开发?什么是钱包地址和合约地址-代币系统展示

1. 简易代币系统简介(ERC-20 Token)

目标 :部署一个可以"增发、转账、查询余额"的代币系统。
内容

  • 使用 Solidity 编写一个简化版 ERC-20 合约。

  • 提供 API(如通过 NestJS + web3.js 或 ethers.js):

    • GET /balance/:address:查询地址余额

    • POST /mint:管理员地址增发代币

    • POST /transfer:从某地址向另一地址转账

你将学习

  • 如何部署智能合约

  • 钱包签名与转账流程

  • 与合约交互的基本 API 编写

2需要API如下

变量名 获取方式
ETHEREUM_RPC_URL 你已经有了(Alchemy / Infura 给的)
ADMIN_PRIVATE_KEY 打开 MetaMask → 设置 → 安全与隐私 → 导出私钥(输入密码)
TOKEN_CONTRACT_ADDRESS 你需要先部署一个代币合约(我可以教你用 Remix 部署 ERC20)

以metamask为例(Infura已并入metamask)

https://developer.metamask.io/

3获得测试网api节点

https://sepolia.infura.io/v3/你的_INFURA_API_KEY

4钱包切换网络,获得钱包地址

一定要切换到测试网,别拿真实网络的钱包地址去测试了。

钱包公钥地址

下图中可以直接复制的钱包公钥地址

钱包私钥地址

点击account1右边的↓,再点新窗口的三个点,再点击账户详情。点击detail,点击显示私钥。

5如何获得 Sepolia 测试币?

以下是一些常用的 Sepolia 水龙头网站,你可以通过它们免费领取测试币:docs.scroll.io

Google Cloud水龙头为例子

https://cloud.google.com/application/web3/faucet/ethereum/sepolia

进入后如下

6获得合约地址

很好!我来一步步教你在 Sepolia 测试网 上部署一个简单的 ERC-20代币合约(完全免费,只需一些测试ETH)。


🧱 部署 ERC-20 代币合约步骤(使用 Remix + MetaMask)

🛠️ 准备工作

  1. 确保你已安装并登录 MetaMask

  2. 打开 Remix IDE(在线智能合约编辑器)

    👉 https://remix.ethereum.org


🧾 第一步:创建合约文件

  1. 在 Remix 左侧点击 📄 文件 → 新建一个文件,例如:MyToken.sol

  2. 复制以下代码粘贴进去 👇

    // SPDX-License-Identifier: MIT
    pragma solidity ^0.8.0;

    import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

    contract MyToken is ERC20 {
    constructor(uint256 initialSupply) ERC20("MyToken", "MTK") {
    _mint(msg.sender, initialSupply * (10 ** decimals()));
    }
    }


⚙️ 第二步:编译合约

  1. 左侧点击「🛠️ Compiler」

  2. 选 Solidity 0.8.x(确保与你合约版本一致)

  3. 点「Compile MyToken.sol」


🚀 第三步:部署合约

  1. 左侧点击「Ethereum 部署环境图标」▶️

  2. 在 Environment 里选择:Injected Provider - MetaMask

    • Remix 会连接你的 MetaMask 钱包
  3. 在 Deploy 栏看到 initialSupply,输入你想发的总量(例如 1000

  4. 点击「Deploy」,MetaMask 弹窗 → 签名确认

1000 作为 initialSupply 本身不会消耗你的测试币(SepoliaETH) ,真正消耗的是"部署合约"的 Gas 费用,和你填多少 supply 没直接关系。


✅ 部署一个标准 ERC20 合约的消耗量(大致):

  • 大约 0.003 ~ 0.015 SepoliaETH

  • 也就是 3 万 ~ 15 万 gas

  • 你钱包有 0.05 SepoliaETH,完全够用来部署几次


❗注意:

  • initialSupply 是合约初始化时铸造的代币数量(ERC20 代币),不是 ETH,也不影响 ETH 消耗。

  • 所有的初始代币会自动进入你当前钱包地址,成为你拥有的 MTK 代币。


✅ 示例:

你填 initialSupply = 1000

  • 会创建一个代币总量为 1000 * 10^18MyToken 合约。

  • 消耗 0.005 ETH 左右(仅部署 gas)

  • 你部署完之后,可以在 Remix 或 MetaMask 看到你钱包地址持有 1000 MTK(如果添加了代币地址)。

点击部署后的样子


✅ 第四步:获取代币合约地址

部署成功后:

  • Remix 底部会出现「Deployed Contracts」区域

  • 复制它的地址,例如:0xABC123...

  • 这个地址就是你 .env 中的 TOKEN_CONTRACT_ADDRESS

补充说明

合约地址部署可能的错误

Value记得填0

报错原因总结

你在 Remix 部署时设置了:

  • Value = 1,单位 = Wei

  • 但部署的是一个 ERC20 代币合约(不是 payable 合约)

🚨 这个部署报错的本质原因是:你往合约里转了 1 Wei(最小单位的 ETH),但这个合约的 constructor 并没有 payable,所以 Solidity 默认拒绝了这笔转账。


✅ 正确做法

✔ 在部署时:

  • Value 设置为 0(或者直接不填)

  • 单位 默认是 Wei,但因为是 0,就无所谓了

  • 只填 initialSupply,比如 1000000

不要往代币合约部署时发送 ETH,因为 ERC20 合约不是一个接收 ETH 的 payable 合约


❗扩展说明:什么时候用 Value?

场景 是否填 Value
部署 ERC20、NFT 合约 ❌ 不需要,留空或填 0
调用 payable 函数(如买 NFT) ✅ 需要,填入实际数值
转账 ETH 给地址或合约 ✅ 需要

✅ 解决你的问题操作步骤(Remix)

  1. 打开 Remix 的部署面板

  2. Value 输入框中,改成 0

  3. 只在 Constructor 参数中填写:

    initialSupply: 1000000

  4. 点击 Deploy 即可成功部署


如果你愿意,我可以直接为你写一个完整的 Remix 部署操作步骤截图或视频级别指南。是否需要?

那我填1Ether呢

如果你在 Remix 部署合约时填了:

  • Value = 1,单位选择 ether(即你尝试发送 1 ETH 给合约)

❌ 结果是:部署 仍然会报错


🚨 为什么?

因为你部署的是一个标准的 ERC20 合约,而它的构造函数(constructor)是这样的:

constructor(uint256 initialSupply) { _mint(msg.sender, initialSupply); }

没有加 payable,也就是说:

这个合约在部署时 拒绝接收 ETH(无论是 1 Wei 还是 1 Ether)

Solidity 默认行为是:如果你往一个 不带 payable 的构造函数转账 ETH,那么部署会直接失败,报错信息类似:

constructor is not payable


✅ 正确方式

除非你明确想让部署过程接收 ETH(这很罕见),否则部署时 Value 应该设为 0

部署步骤如下:

  1. 部署面板 中,Value 设置为 0

  2. 填入构造函数的参数:1000000(举例)

  3. 单位无所谓,默认是 Wei

  4. 点 Deploy 即可


✅ 如果你真要部署时接收 ETH,怎么办?

你必须修改合约,把 constructor 改成这样:

constructor(uint256 initialSupply) payable { _mint(msg.sender, initialSupply); }

这样部署时才允许你带 ETH,但:

⚠️ 这通常 没有必要,ERC20 合约通常不需要接收 ETH


✅ 小结

Value 设置 单位 是否报错 合约需要什么
1 Wei ❌ 报错 constructor 不是 payable
1 Ether ❌ 报错 constructor 不是 payable
0 无所谓 ✅ 不报错 constructor 不需要 payable

✅ 什么是 "Publish to IPFS"?

这表示 Remix 在你部署合约时,会将合约源码和元数据上传到 IPFS(去中心化存储网络),这样别人可以:

  • 查看你的合约源码

  • 验证合约在链上的部署和源码是否一致

  • 方便第三方服务(如 Etherscan)识别、验证你的合约


🤔 是否需要勾选?

你要做什么 是否建议勾选 Publish to IPFS
学习 / 本地测试 不需要,节省时间
练习部署 ERC20 等代币合约 ❌ 一般不需要,除非你想试试
部署正式合约到主网 / 测试网供他人使用 建议勾选,有利于开源透明
要通过 Etherscan 验证源码 ✅ 建议(也可以手动提交)

📝 需要注意的点

  • 勾选后 Remix 会花几秒钟上传数据到 IPFS,有时稍慢

  • 上传的内容是合约的源码和 ABI,不包含你部署的状态

  • 上传不会自动同步到 Etherscan,你还需要手动在 Etherscan 验证合约(或通过 Remix 插件操作)


✅ 小结建议

你的目的 建议是否勾选
初学者、本地测试 ❌ 不勾
做公开项目或开源合约 ✅ 勾上
要 Etherscan 自动识别合约 ✅ 勾上(但不是必须)

如果你只是测试 ERC20 或练习 Remix 合约部署,可以不勾 。但如果你打算以后把合约分享给别人或用在正式项目上,最好勾上

代币系统项目最终效果展示:

你做这个代币的意义和能干的事情,取决于你的目标和场景,简单来说,做代币通常有以下几个主要用途:


1. 发行数字资产(资产代币化)

你可以把代币当做一种数字资产,比如:

  • 游戏中的金币、道具

  • 社区积分、奖励

  • 代表某种权益或证书的凭证


2. 构建去中心化应用(DApp)

代币可以作为你DApp里核心的经济激励工具,比如:

  • 用代币奖励用户贡献内容

  • 用代币作为访问某些服务的"门票"

  • 做投票治理,持币者有投票权


3. 融资工具(ICO、IDO)

你可以发行代币给投资者,筹集资金,用于项目开发或运营。


4. 试验和学习

很多开发者自己做代币,是为了理解智能合约开发、区块链经济学、或者实验某些新的想法。


5. 打造社区经济

代币可以促进社区互动和价值传递,比如:

  • 激励社区成员参与讨论

  • 作为贡献奖励发放

  • 用代币进行兑换和交易


具体你可以做的事情举例:

  • 发行自己的稳定币或积分,让用户在你平台使用。

  • 做游戏内货币,买卖游戏道具。

  • 搭建NFT生态的支付媒介

  • 创建治理代币,让持币者决定项目方向。

  • 搭建去中心化交易所的流动性代币


总结

代币本质是区块链上的数字"货币"或"资产",它的意义在于:

  • 实现数字资产管理

  • 搭建新的经济激励体系

  • 让用户参与项目生态

  • 支撑区块链上的多样化应用场景

1. 代币本身"没有花钱"

  • 代币是智能合约里写的逻辑和数据,比如你写了"总共发行1000个代币",这只是链上合约的状态数据。

  • 代币数量、转账、余额这些操作本身是数据变化,没有"直接花钱",只是改变区块链里的数据。


2. 花钱的地方是部署和交易的 gas 费

  • 部署合约时,你需要向区块链支付"矿工费(gas费)",这是真实花掉的ETH(比如你说的0.0445 SepoliaETH)。

  • 代币的转账、调用合约方法等操作,也需要支付 gas 费。

  • gas 费是给验证和打包你操作的矿工(或验证者)的报酬。


3. 代币是链上数据,不是ETH

  • 代币数量不会直接消耗你的ETH。

  • 你拥有的ETH是链上真正的"货币",代币是你合约中的"余额记录"。


举个通俗的比喻

  • 你买了一台打印机(部署合约),花了钱买机器(gas费)。

  • 打印机印出1000张票(代币),印票不额外花钱(链上数据变化),但每次用打印机(调用合约)都要消耗墨水(gas费)。


所以只要你不频繁操作代币转账,或者不频繁调用合约方法,一般不会额外花ETH。主要费用是在部署合约和交易时支付。


如果你想更省钱,建议:

  • 用测试网(Sepolia)先试验,不花真钱

  • 优化合约代码,减少调用的 gas 量

  • 了解并选择合适的 gas 价格和时机

相关推荐
Black_mario9 小时前
解码 Skate:打造链间可组合应用栈,构建跨越虚拟机的无状态未来
区块链
阿雄不会写代码13 小时前
长安链合约操作 查询合约命令解析
区块链
广州正荣2 天前
百度量子蜘蛛3.0横空出世,搜索引擎迎来“量子跃迁“级革命
深度学习·百度·区块链
巅峰赛2000分以下是巅峰2 天前
PortSwigger-03-点击劫持
web3
悦数图数据库2 天前
Web3 风控挑战重重,图数据库为何成为破局关键-悦数图数据库
数据库·web3
穗余2 天前
WEB3—— 简易NFT铸造平台(ERC-721)-入门项目推荐
区块链
数据与人工智能律师2 天前
加密货币投资亏损后,能否以“欺诈”或“不当销售”索赔?
大数据·网络·算法·云计算·区块链
ClonBrowser2 天前
区块链与Web3:如何有效保障个人数据安全
web3·区块链·互联网·facebook·tiktok·instagram·clonbrowser
TinTin Land2 天前
扩容的未来:Web3 并行计算赛道全景图谱
web3