3
月
在社区成长 3 月
LEVEL 1
1 XP
一、背景:为什么新手应该先从测试网开始
对刚接触 Web3 的用户来说,最容易产生困惑的并不是某一条命令,而是钱包、地址、网络、Gas、交易和智能合约之间究竟是什么关系。直接在主网尝试会带来真实资金损失风险,因此更合理的学习路径是:创建专用测试钱包,在本地开发链或公开测试网上完成查询、转账、合约部署和区块浏览器核验,再逐步理解授权与签名。
本文以 EVM 兼容网络中的 Sepolia 测试网为例。Sepolia 的链 ID 是 11155111,测试 ETH 仅用于支付该测试网的 Gas,不具有主网 ETH 的实际功能。不同区块链的账户和交易模型并不完全相同,本文中的命令与概念主要适用于以太坊及常见 EVM 兼容链。
二、基础原理
1. 钱包不直接“存币”
钱包主要管理私钥并生成签名。地址对应的余额、代币和合约状态记录在区块链上。更换钱包软件后,只要安全地恢复同一组密钥,通常仍可访问同一地址;反过来,丢失私钥或助记词,也无法依靠用户名、邮箱找回链上资产。
2. 地址、公钥与私钥
私钥用于签名,公钥可由私钥推导,地址通常由公钥进一步计算得到。地址可以公开,私钥和助记词绝不能公开。任何索要助记词、私钥或要求上传钱包备份文件的页面,都应直接视为高风险。
3. 交易与 Gas
转账、部署合约、修改合约状态都需要发送交易。交易一般包含发送方、接收方、金额、数据、nonce、Gas 参数和签名等信息。nonce 用于标识同一账户交易的顺序。Gas 是执行交易所需计算资源的计量单位,最终费用与实际消耗的 Gas 和费率有关。即使合约调用失败,也可能因节点已经执行和验证该交易而消耗 Gas。
4. 读取与写入的区别
读取余额、区块高度或合约只读函数通常通过 RPC 查询,不会修改链上状态,也不需要账户签名。转账、授权、部署合约和调用状态修改函数则需要签名并支付 Gas。
5. 确认数与最终性
交易广播后会先进入待处理状态,被区块收录后才能看到确认。区块浏览器显示 Success,通常代表交易执行成功;显示 Reverted 或 Failed,则表示执行失败。对于高价值操作,不能只看到交易哈希就认为完成,还应检查状态、区块确认数、目标地址、金额和事件日志。
三、前置条件
建议准备以下环境:
1. 一个全新的测试钱包,不要导入持有真实资产的助记词。
2. MetaMask、Rabby 等支持自定义 EVM 网络的钱包扩展,任选其一即可。
3. Sepolia RPC 地址。优先从钱包、节点服务商或项目官方文档获取,不要随意复制搜索结果中的未知 RPC。
4. 少量 Sepolia 测试 ETH,可从可信测试水龙头领取。水龙头可能有登录、限频或主网余额验证要求。
5. 可选:安装 Foundry,以便使用 cast 命令核验链上数据。安装时应以 Foundry 官方文档为准,并检查下载来源。
6. 可选:使用 Remix 部署练习合约。确认访问的是 Remix 官方站点,避免仿冒页面。
为了降低误操作风险,建议在钱包中给测试账户起一个明显名称,例如 Sepolia-Lab,并将测试钱包与主网钱包分开使用。
四、分步骤实践
步骤 1:确认当前网络
在钱包中切换到 Sepolia,检查网络名称、RPC 和链 ID。链 ID 必须是 11155111。网络名称可以自定义,但链 ID 决定交易实际发送到哪条链。
如果已经安装 cast,可以设置 RPC 环境变量并核验:
export RPC_URL=https://你的-sepolia-rpc
cast chain-id --rpc-url "$RPC_URL"
cast block-number --rpc-url "$RPC_URL"
第一条命令应返回 11155111,第二条命令应返回当前区块高度。如果请求失败,应检查 RPC 地址、网络连接和服务商额度,而不是反复在钱包中签名。
步骤 2:创建测试账户并备份
通过钱包创建新账户后,记录其公开地址。助记词应离线备份,不能存入聊天工具、云笔记、截图相册或代码仓库。测试账户也不应故意公开私钥,因为不安全的操作习惯很容易被带到主网环境。
如果使用 Foundry,可创建独立的本地测试密钥库:
cast wallet new
cast wallet import testnet --interactive
交互导入时应仅使用专门生成的测试私钥。不要把主网私钥粘贴到终端,也不要通过命令行参数直接输入私钥,因为参数可能被 shell 历史、进程列表或日志记录。
步骤 3:领取测试 ETH 并核验余额
从可信水龙头申请少量 Sepolia ETH。领取后不要只看网页提示,应通过钱包、RPC 或区块浏览器独立核验。
export ADDRESS=0x你的测试地址
cast balance "$ADDRESS" --ether --rpc-url "$RPC_URL"
如果余额暂未出现,可等待区块确认并确认以下三点:水龙头使用的是 Sepolia;提交的地址没有复制错误;区块浏览器中的交易状态确实成功。测试币不存在正规购买需求,任何声称需要高额付款才能解锁测试币的服务都应谨慎对待。
步骤 4:完成一笔小额测试转账
准备第二个自有测试地址,在钱包中发送极小金额,例如 0.0001 Sepolia ETH。签名前逐项检查:
1. 当前网络是否为 Sepolia。
2. 接收地址首尾字符是否正确。
3. 转账金额是否符合预期。
4. 钱包展示的是普通转账,还是包含额外 calldata 的合约交互。
5. Gas 费用是否异常偏高。
使用 cast 时,可以通过本地密钥库账户发送:
export TO=0x你的第二个测试地址
cast send "$TO" --value 0.0001ether --rpc-url "$RPC_URL" --account testnet
命令执行过程中会要求解锁本地密钥库。发送成功后保存交易哈希,并查询收据:
export TX_HASH=0x交易哈希
cast receipt "$TX_HASH" --rpc-url "$RPC_URL"
重点查看 status、blockNumber、from、to、gasUsed 等字段。status 为 1 通常表示执行成功,status 为 0 表示执行失败。还可以分别查询两个地址的余额,理解转出金额与 Gas 费用对发送方余额的共同影响。
步骤 5:部署一个最小测试合约
打开可信的 Remix 页面,新建 Counter.sol,输入以下代码:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
contract Counter {
uint256 public number;
event Increased(address indexed caller, uint256 newValue);
function increment() external {
number += 1;
emit Increased(msg.sender, number);
}
}
先在 Solidity Compiler 中选择兼容的 0.8.x 编译器完成编译。初学阶段可先在 Remix VM 本地环境部署,此时不会连接公开链,也不会消耗测试 ETH。确认合约功能无误后,再进入 Deploy & Run Transactions:
1. Environment 选择浏览器钱包提供者。
2. 检查钱包当前网络为 Sepolia。
3. 确认部署的是 Counter 合约。
4. 点击 Deploy,并在钱包中核对交易内容和预计 Gas。
5. 等待交易被打包,记录部署交易哈希和合约地址。
部署完成后,调用 number 是只读操作,初始值应为 0;调用 increment 会发送状态修改交易,需要签名并消耗测试 Gas。交易确认后再次读取 number,应变为 1。合约还会产生 Increased 事件,可在交易收据或区块浏览器日志中查看 caller 和 newValue。
这个实验展示了三个关键区别:部署合约会创建新的合约地址;只读调用不改变状态;写入调用必须通过交易执行,结果以链上状态和收据为准。
步骤 6:学习识别签名和授权
常见钱包请求大致分为四类:
1. 登录签名:通常用于证明地址控制权,不一定上链,也不直接消耗 Gas。
2. 普通交易:例如发送原生币,会显示接收地址和金额。
3. 合约调用:携带 calldata,可能执行交换、质押、铸造或授权等逻辑。
4. 代币授权或许可签名:approve 是常见链上授权;Permit、Permit2 等机制可能通过签名产生后续可使用的权限。
“签名不花 Gas”不等于“签名没有风险”。某些离线签名可以授权第三方在之后提交交易。遇到无法解释的 typed data、Permit、Operator、SetApprovalForAll 或无限额度授权时,不应盲签。
五、风险与注意事项
1. 永远不要在测试教程中使用主网钱包或真实资产私钥。
2. 不要把私钥写入源码、截图、论坛帖子、Git 仓库或公开的 .env 文件。提交代码前应配置 .gitignore,并检查历史提交。
3. 复制地址后应核对首尾多个字符。剪贴板恶意软件可能替换地址,仅依赖复制粘贴并不安全。
4. RPC 服务能够看到请求来源、查询地址和 IP 等信息。RPC 无法仅凭查询窃取私钥,但恶意 RPC 可能返回错误信息或误导网络状态,因此应使用可信服务并交叉核验关键结果。
5. 添加自定义代币只是在钱包中配置展示信息,不代表获得资产,也不代表该代币可信。
6. 测试网与主网地址格式可能相同。相同地址不代表资产跨链存在,也不能把 Sepolia 测试 ETH 当作主网 ETH 使用。
7. 合约源码名称、网页品牌和代币符号都可以被仿冒。关键操作应核对链 ID、合约地址和官方发布渠道。
8. 失败交易仍可能消耗 Gas。不要在原因未知时连续重试,应先查看失败原因、余额、nonce、Gas 限制及合约 revert 信息。
9. 本文实践仅限自己的测试账户、本地环境和公开测试网,不要探测、调用或干扰未经授权的第三方系统。
六、常见问题
问题 1:钱包显示有测试 ETH,但命令行余额为零怎么办?
优先检查钱包和 RPC 是否连接到同一网络,并确认查询地址完全一致。钱包缓存也可能尚未刷新,可用区块浏览器和第二个 RPC 交叉核验。
问题 2:交易长时间 Pending 怎么办?
可能原因包括 RPC 未成功广播、Gas 参数过低、前序 nonce 交易未确认或网络暂时拥堵。先查询该地址对应 nonce 和交易哈希,不要立即重复发送多笔相同交易。钱包提供的加速或取消功能,本质上通常是用相同 nonce 发送费用更高的新交易,并不保证一定成功。
问题 3:为什么调用 number 不弹钱包,调用 increment 会弹?
number 是自动生成的只读查询函数,只从节点读取状态;increment 会修改链上存储,必须形成交易并由账户签名。
问题 4:测试币可以跨到主网吗?
不可以。测试网和主网是不同账本。即使地址格式相同,资产状态也彼此独立。所谓把测试币兑换成等量主网资产的私聊邀请通常具有较高诈骗风险。
问题 5:撤销授权后就绝对安全吗?
撤销有效授权可以降低后续被转移代币的风险,但不能逆转已经发生的转账,也不能处理泄露的私钥。如果助记词或私钥已经泄露,应视为整个账户失陷,并迁移仍可控制的资产,而不是只撤销某一个授权。
七、总结
一次完整的 Web3 入门实践,不应止于“钱包里出现了测试币”。更重要的是建立可验证的操作闭环:先确认链 ID和 RPC,再核验地址与余额;发送最小金额交易后检查收据;部署合约时区分读取与写入;面对签名请求时识别交易、授权和离线许可的差异。
建议新手把每次操作都记录为五项:网络、地址、交易意图、交易哈希、最终状态。只有能够独立解释这五项,才算真正理解了一次链上交互。完成 Sepolia 实践后,可以继续在本地开发链上学习交易回滚、事件日志、Gas 估算和合约测试,但在进入主网前,仍应使用全新环境进行小额验证,并坚持最小权限和逐项核对原则。
对刚接触 Web3 的用户来说,最容易产生困惑的并不是某一条命令,而是钱包、地址、网络、Gas、交易和智能合约之间究竟是什么关系。直接在主网尝试会带来真实资金损失风险,因此更合理的学习路径是:创建专用测试钱包,在本地开发链或公开测试网上完成查询、转账、合约部署和区块浏览器核验,再逐步理解授权与签名。
本文以 EVM 兼容网络中的 Sepolia 测试网为例。Sepolia 的链 ID 是 11155111,测试 ETH 仅用于支付该测试网的 Gas,不具有主网 ETH 的实际功能。不同区块链的账户和交易模型并不完全相同,本文中的命令与概念主要适用于以太坊及常见 EVM 兼容链。
二、基础原理
1. 钱包不直接“存币”
钱包主要管理私钥并生成签名。地址对应的余额、代币和合约状态记录在区块链上。更换钱包软件后,只要安全地恢复同一组密钥,通常仍可访问同一地址;反过来,丢失私钥或助记词,也无法依靠用户名、邮箱找回链上资产。
2. 地址、公钥与私钥
私钥用于签名,公钥可由私钥推导,地址通常由公钥进一步计算得到。地址可以公开,私钥和助记词绝不能公开。任何索要助记词、私钥或要求上传钱包备份文件的页面,都应直接视为高风险。
3. 交易与 Gas
转账、部署合约、修改合约状态都需要发送交易。交易一般包含发送方、接收方、金额、数据、nonce、Gas 参数和签名等信息。nonce 用于标识同一账户交易的顺序。Gas 是执行交易所需计算资源的计量单位,最终费用与实际消耗的 Gas 和费率有关。即使合约调用失败,也可能因节点已经执行和验证该交易而消耗 Gas。
4. 读取与写入的区别
读取余额、区块高度或合约只读函数通常通过 RPC 查询,不会修改链上状态,也不需要账户签名。转账、授权、部署合约和调用状态修改函数则需要签名并支付 Gas。
5. 确认数与最终性
交易广播后会先进入待处理状态,被区块收录后才能看到确认。区块浏览器显示 Success,通常代表交易执行成功;显示 Reverted 或 Failed,则表示执行失败。对于高价值操作,不能只看到交易哈希就认为完成,还应检查状态、区块确认数、目标地址、金额和事件日志。
三、前置条件
建议准备以下环境:
1. 一个全新的测试钱包,不要导入持有真实资产的助记词。
2. MetaMask、Rabby 等支持自定义 EVM 网络的钱包扩展,任选其一即可。
3. Sepolia RPC 地址。优先从钱包、节点服务商或项目官方文档获取,不要随意复制搜索结果中的未知 RPC。
4. 少量 Sepolia 测试 ETH,可从可信测试水龙头领取。水龙头可能有登录、限频或主网余额验证要求。
5. 可选:安装 Foundry,以便使用 cast 命令核验链上数据。安装时应以 Foundry 官方文档为准,并检查下载来源。
6. 可选:使用 Remix 部署练习合约。确认访问的是 Remix 官方站点,避免仿冒页面。
为了降低误操作风险,建议在钱包中给测试账户起一个明显名称,例如 Sepolia-Lab,并将测试钱包与主网钱包分开使用。
四、分步骤实践
步骤 1:确认当前网络
在钱包中切换到 Sepolia,检查网络名称、RPC 和链 ID。链 ID 必须是 11155111。网络名称可以自定义,但链 ID 决定交易实际发送到哪条链。
如果已经安装 cast,可以设置 RPC 环境变量并核验:
export RPC_URL=https://你的-sepolia-rpc
cast chain-id --rpc-url "$RPC_URL"
cast block-number --rpc-url "$RPC_URL"
第一条命令应返回 11155111,第二条命令应返回当前区块高度。如果请求失败,应检查 RPC 地址、网络连接和服务商额度,而不是反复在钱包中签名。
步骤 2:创建测试账户并备份
通过钱包创建新账户后,记录其公开地址。助记词应离线备份,不能存入聊天工具、云笔记、截图相册或代码仓库。测试账户也不应故意公开私钥,因为不安全的操作习惯很容易被带到主网环境。
如果使用 Foundry,可创建独立的本地测试密钥库:
cast wallet new
cast wallet import testnet --interactive
交互导入时应仅使用专门生成的测试私钥。不要把主网私钥粘贴到终端,也不要通过命令行参数直接输入私钥,因为参数可能被 shell 历史、进程列表或日志记录。
步骤 3:领取测试 ETH 并核验余额
从可信水龙头申请少量 Sepolia ETH。领取后不要只看网页提示,应通过钱包、RPC 或区块浏览器独立核验。
export ADDRESS=0x你的测试地址
cast balance "$ADDRESS" --ether --rpc-url "$RPC_URL"
如果余额暂未出现,可等待区块确认并确认以下三点:水龙头使用的是 Sepolia;提交的地址没有复制错误;区块浏览器中的交易状态确实成功。测试币不存在正规购买需求,任何声称需要高额付款才能解锁测试币的服务都应谨慎对待。
步骤 4:完成一笔小额测试转账
准备第二个自有测试地址,在钱包中发送极小金额,例如 0.0001 Sepolia ETH。签名前逐项检查:
1. 当前网络是否为 Sepolia。
2. 接收地址首尾字符是否正确。
3. 转账金额是否符合预期。
4. 钱包展示的是普通转账,还是包含额外 calldata 的合约交互。
5. Gas 费用是否异常偏高。
使用 cast 时,可以通过本地密钥库账户发送:
export TO=0x你的第二个测试地址
cast send "$TO" --value 0.0001ether --rpc-url "$RPC_URL" --account testnet
命令执行过程中会要求解锁本地密钥库。发送成功后保存交易哈希,并查询收据:
export TX_HASH=0x交易哈希
cast receipt "$TX_HASH" --rpc-url "$RPC_URL"
重点查看 status、blockNumber、from、to、gasUsed 等字段。status 为 1 通常表示执行成功,status 为 0 表示执行失败。还可以分别查询两个地址的余额,理解转出金额与 Gas 费用对发送方余额的共同影响。
步骤 5:部署一个最小测试合约
打开可信的 Remix 页面,新建 Counter.sol,输入以下代码:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
contract Counter {
uint256 public number;
event Increased(address indexed caller, uint256 newValue);
function increment() external {
number += 1;
emit Increased(msg.sender, number);
}
}
先在 Solidity Compiler 中选择兼容的 0.8.x 编译器完成编译。初学阶段可先在 Remix VM 本地环境部署,此时不会连接公开链,也不会消耗测试 ETH。确认合约功能无误后,再进入 Deploy & Run Transactions:
1. Environment 选择浏览器钱包提供者。
2. 检查钱包当前网络为 Sepolia。
3. 确认部署的是 Counter 合约。
4. 点击 Deploy,并在钱包中核对交易内容和预计 Gas。
5. 等待交易被打包,记录部署交易哈希和合约地址。
部署完成后,调用 number 是只读操作,初始值应为 0;调用 increment 会发送状态修改交易,需要签名并消耗测试 Gas。交易确认后再次读取 number,应变为 1。合约还会产生 Increased 事件,可在交易收据或区块浏览器日志中查看 caller 和 newValue。
这个实验展示了三个关键区别:部署合约会创建新的合约地址;只读调用不改变状态;写入调用必须通过交易执行,结果以链上状态和收据为准。
步骤 6:学习识别签名和授权
常见钱包请求大致分为四类:
1. 登录签名:通常用于证明地址控制权,不一定上链,也不直接消耗 Gas。
2. 普通交易:例如发送原生币,会显示接收地址和金额。
3. 合约调用:携带 calldata,可能执行交换、质押、铸造或授权等逻辑。
4. 代币授权或许可签名:approve 是常见链上授权;Permit、Permit2 等机制可能通过签名产生后续可使用的权限。
“签名不花 Gas”不等于“签名没有风险”。某些离线签名可以授权第三方在之后提交交易。遇到无法解释的 typed data、Permit、Operator、SetApprovalForAll 或无限额度授权时,不应盲签。
五、风险与注意事项
1. 永远不要在测试教程中使用主网钱包或真实资产私钥。
2. 不要把私钥写入源码、截图、论坛帖子、Git 仓库或公开的 .env 文件。提交代码前应配置 .gitignore,并检查历史提交。
3. 复制地址后应核对首尾多个字符。剪贴板恶意软件可能替换地址,仅依赖复制粘贴并不安全。
4. RPC 服务能够看到请求来源、查询地址和 IP 等信息。RPC 无法仅凭查询窃取私钥,但恶意 RPC 可能返回错误信息或误导网络状态,因此应使用可信服务并交叉核验关键结果。
5. 添加自定义代币只是在钱包中配置展示信息,不代表获得资产,也不代表该代币可信。
6. 测试网与主网地址格式可能相同。相同地址不代表资产跨链存在,也不能把 Sepolia 测试 ETH 当作主网 ETH 使用。
7. 合约源码名称、网页品牌和代币符号都可以被仿冒。关键操作应核对链 ID、合约地址和官方发布渠道。
8. 失败交易仍可能消耗 Gas。不要在原因未知时连续重试,应先查看失败原因、余额、nonce、Gas 限制及合约 revert 信息。
9. 本文实践仅限自己的测试账户、本地环境和公开测试网,不要探测、调用或干扰未经授权的第三方系统。
六、常见问题
问题 1:钱包显示有测试 ETH,但命令行余额为零怎么办?
优先检查钱包和 RPC 是否连接到同一网络,并确认查询地址完全一致。钱包缓存也可能尚未刷新,可用区块浏览器和第二个 RPC 交叉核验。
问题 2:交易长时间 Pending 怎么办?
可能原因包括 RPC 未成功广播、Gas 参数过低、前序 nonce 交易未确认或网络暂时拥堵。先查询该地址对应 nonce 和交易哈希,不要立即重复发送多笔相同交易。钱包提供的加速或取消功能,本质上通常是用相同 nonce 发送费用更高的新交易,并不保证一定成功。
问题 3:为什么调用 number 不弹钱包,调用 increment 会弹?
number 是自动生成的只读查询函数,只从节点读取状态;increment 会修改链上存储,必须形成交易并由账户签名。
问题 4:测试币可以跨到主网吗?
不可以。测试网和主网是不同账本。即使地址格式相同,资产状态也彼此独立。所谓把测试币兑换成等量主网资产的私聊邀请通常具有较高诈骗风险。
问题 5:撤销授权后就绝对安全吗?
撤销有效授权可以降低后续被转移代币的风险,但不能逆转已经发生的转账,也不能处理泄露的私钥。如果助记词或私钥已经泄露,应视为整个账户失陷,并迁移仍可控制的资产,而不是只撤销某一个授权。
七、总结
一次完整的 Web3 入门实践,不应止于“钱包里出现了测试币”。更重要的是建立可验证的操作闭环:先确认链 ID和 RPC,再核验地址与余额;发送最小金额交易后检查收据;部署合约时区分读取与写入;面对签名请求时识别交易、授权和离线许可的差异。
建议新手把每次操作都记录为五项:网络、地址、交易意图、交易哈希、最终状态。只有能够独立解释这五项,才算真正理解了一次链上交互。完成 Sepolia 实践后,可以继续在本地开发链上学习交易回滚、事件日志、Gas 估算和合约测试,但在进入主网前,仍应使用全新环境进行小额验证,并坚持最小权限和逐项核对原则。