
先确定记录属于哪种模型
区块链查记录入门需要了解什么,首先要回答的是:查到的字段代表什么。比特币的交易输入引用此前的输出;ERC-20 则通过代币合约提供余额、转移和授权等接口。两种模型的字段不能直接套用,读记录时应先确认所查对象。
比特币:交易标识与输出位置
比特币普通交易包含输入和输出。输入通过交易标识 txid 与输出索引定位此前的一项输出;索引从零开始。尚未被花费的输出称为 UTXO,钱包余额与其可支配的 UTXO 有关。矿工创建的 coinbase 交易存在特殊规则。
因此,追溯某笔输入的来源,需要同时看它引用的交易和输出位置。只知道 txid,可以定位交易,却不足以区分该交易中的多个输出。某项输出后来被花费,表示它被后续输入引用,不代表原有记录被删除。
ERC-20:余额、转移和授权分别看
ERC-20 的 balanceOf 表示账户在该代币合约中的余额;Transfer 事件记录代币转移。approve 设置授权额度,allowance 表示被授权者剩余可代为支配的额度。decimals 用于将原始整数换算为显示数量。
这些字段回答不同问题:余额描述持有数量,转移事件描述发生过的变化,授权描述代为支配的权限。阅读记录时,应将问题与字段对应起来,不能仅凭一条授权记录认定已经发生代币转移。
常见问题:为什么数量或授权看起来不一致
原始数量为什么与页面显示不同?检查是否应用了 decimals 换算。显示数量等于原始整数除以十的 decimals 次方;比较数量前,应确保使用同一种单位。
能否累加 Approval 事件推算剩余额度?不能保证。OpenZeppelin 的 ERC-20 实现中,代扣消耗额度时不一定发出新的 Approval 事件。因此,判断剩余额度应关注 allowance,不能把授权事件列表当作完整的当前状态。
适用条件与理解边界
上述比特币解释适用于其交易输入输出模型,ERC-20 部分适用于对应标准接口及文中明确提到的实现行为。具体代币可能扩展合约逻辑,不能把某个实现的细节推广到所有代币。入门时先辨认交易、输出、余额、事件和授权各自的含义,再判断记录能够支持什么结论。