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

06-01 1519阅读

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_KEYWeb3怎么开发?什么是钱包地址和合约地址-代币系统展示

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

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

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

        钱包公钥地址

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

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

        钱包私钥地址

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

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

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

        5如何获得 Sepolia 测试币?

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

        • Alchemy 水龙头:每天可领取 0.5 Sepolia ETH,需注册并登录 Alchemy 账户。

          • 链接:AlchemyCSDN 博客+2登链社区+2infinity.exchange+2

          • QuickNode 水龙头:每 12 小时可领取 0.05 Sepolia ETH,分享推文可再领取 0.05 ETH。

            • 链接:登链社区登链社区

            • Google Cloud 水龙头:无需注册,直接输入钱包地址即可领取。

              • 链接:Google CloudBinance+3登链社区+3infinity.exchange+3

              • PK910 水龙头:需通过 Gitcoin Passport 验证后领取。

                • 链接:登链社区登链社区

                  以Google Cloud水龙头为例子

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

                  进入后如下

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

                  6获得合约地址

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


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

                  🛠️ 准备工作

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

                    • 网络切换到 Sepolia 测试网。

                    • 没测试币?可以来这个水龙头领取:Ethereum Sepolia Faucet

                    • 打开 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」

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


                  🚀 第三步:部署合约

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

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

                    • Remix 会连接你的 MetaMask 钱包

                    • 在 Deploy 栏看到 initialSupply,输入你想发的总量(例如 1000)

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

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

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

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

                  填 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^18 的 MyToken 合约。

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

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

                        点击部署后的样子

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


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

                        部署成功后:

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

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

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

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

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

                          补充说明

                          合约地址部署可能的错误

                          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 设置单位是否报错合约需要什么
                                1Wei❌ 报错constructor 不是 payable
                                1Ether❌ 报错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 合约部署,可以不勾。但如果你打算以后把合约分享给别人或用在正式项目上,最好勾上。

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

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

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


                                    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 价格和时机

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码