
先区分原生资产与代币
区块链语境中的资产,首先是由网络协议或智能合约记录、转移和验证的一种数字化表示。原生资产直接由区块链的基础规则定义;代币则通常由智能合约发行和管理。两者都可能被钱包显示为余额,但底层记账方式并不相同。技术上的资产记录,也不自动等于现实法律上的所有权、债权或某种经济价值,具体权利还要看相关协议和适用规则。
ERC-20与同质化代币是什么意思
ERC-20不是某一种具体资产,而是一套面向同质化代币的智能合约接口标准。同质化表示同一代币体系中的单位,在协议层被视为同类并且可以互换。例如,一个符合该标准的代币单位与另一个同类单位具有相同的技术属性,但这并不表示不同代币之间可以互换,也不代表外部价值必然稳定。

ERC-20合约通常提供查询名称、符号、小数位、总供应量和某个地址余额的函数,也提供转账、授权和代授权转账等功能。transfer用于转移代币,approve用于设置第三方可支出的额度,allowance用于查询授权额度,transferFrom则在授权范围内完成代转。这些是合约接口约定,不是对代币用途、价值或发行方承诺的担保。

比特币交易中的输入、输出与UTXO
比特币采用以交易输出为核心的记账方式。一个一般交易至少包含输入和输出:输入引用此前交易中的某个输出,输出则记录金额以及后续花费所需满足的条件。尚未被后续输入花费的输出,称为未花费交易输出,即UTXO。
比特币常用satoshi作为计价单位。钱包所显示的余额,实质上通常是多个可花费UTXO中金额的合计,而不是账户里保存着一张独立的余额表。输入一般通过交易标识符txid和输出索引定位此前输出,并提供签名等数据来满足原输出设置的条件。验证通过后,旧的UTXO被消耗,新的交易输出等待下一次花费。
地址、余额与交易为何不能混为一谈
在比特币的P2PKH支付形式中,地址可以理解为经过编码的公钥哈希等支付信息。接收方后续花费相关输出时,需要提供能够满足脚本条件的公钥和签名。因此,地址更接近一种收款和支付条件的表达,不等于一张独立的账户余额凭证。
ERC-20余额则通常由代币合约维护。查询某个地址的余额,本质上是读取合约记录;执行代币转账,则是调用合约规定的函数并更新相关状态。相比之下,比特币转账是创建新交易、消耗旧输出并生成新输出。看到相同的“余额”或“转账”字样,并不意味着两种网络使用同一种记账模型。
适用范围与常见技术风险
上述解释主要适用于比特币的典型交易模型和以太坊ERC-20代币。非同质化代币、其他代币标准以及带有额外业务逻辑的合约,可能拥有不同的资产表示和转移规则,因此不能仅凭ERC-20或UTXO的概念推断所有区块链项目。
ERC-20标准本身没有要求接收方合约必须提供代币接收通知或处理函数。如果代币通过transfer或transferFrom发送到一个无法管理ERC-20的合约地址,代币可能停留在该地址而无法正常取回。对于合约设计而言,approve与transferFrom常用于需要先授权、再由合约扣取代币的场景,但具体行为仍取决于合约实现。
常见问题
问题一:ERC-20是不是一种币?答案是,ERC-20首先是一种接口标准。具体代币由某个智能合约按照自身规则记录供应量、余额和转移,标准只规定一组常用的交互方式。
问题二:UTXO是不是一个单独的币?更准确地说,UTXO是一条尚未花费的交易输出记录,其中包含金额和花费条件。钱包余额通常是多个UTXO的合计,交易时也可能同时消耗多个输入并生成多个输出。
问题三:代币转账成功是否代表接收方一定能使用?不一定。链上记录可能显示转账函数已经执行,但如果接收地址对应的合约没有处理这类代币的能力,代币仍可能无法按预期使用。因此,阅读资产术语时,应同时关注记账模型、合约接口和接收方的处理逻辑。