
转账协议规定了什么
区块链转账协议是一组关于交易表达、授权验证和账本更新的规则。理解它,可以围绕三个问题展开:哪些资产可以被支配,谁有权支配,以及网络在什么条件下接受这次变更。钱包负责组织交易,网络节点依据规则验证交易。
以下以以太坊与比特币开发者文档介绍的基础机制为例。两者的交易结构不同,字段、费用规则和确认方式不能直接混用。

账户模型与UTXO模型
以太坊通过交易更新账户相关状态,普通ETH转账会改变发送方与接收方的余额。交易信息涉及接收地址、金额、签名、nonce、输入数据和Gas费用参数;nonce用于标识同一账户的交易顺序。

比特币普通交易通过输入引用此前的未花费交易输出,也就是UTXO,再生成新的输出。钱包余额可以来自多个UTXO。输入用此前交易的标识和输出序号定位资金,并提供满足其花费条件的数据。
因此,理解账户模型可从余额变化入手,理解UTXO模型则要追踪输出怎样被引用和花费。“余额”这一相同界面用语,背后可能对应不同的记账结构。
签名证明授权,脚本限定花费条件
数字签名让网络能够核验交易是否得到相应密钥控制者的授权,无须公开私钥。比特币文档中的P2PKH示例,还通过脚本检查公钥与签名是否满足此前输出设定的条件。该示例有特定适用范围,不能代表全部比特币交易类型。
签名验证回答的是授权是否有效,并不判断接收对象是否符合签名者的真实意愿。协议认可的交易与用户理解正确的交易,是两个需要分别考虑的问题。
金额、手续费与合约调用
以太坊的Gas衡量执行交易所需的计算工作,Gas上限与单位Gas价格属于不同维度,不能把Gas数量直接当成ETH费用。普通转账和合约调用执行的工作不同,费用也不能一概而论。
调用合约时,交易接收地址通常是合约地址,输入数据用于表达调用内容。因此,只看接收地址和ETH金额,可能无法理解完整操作;还需要结合合约对数据的解释。
常见问题:广播、入块就代表成功吗
广播表示交易已提交传播,尚不等于被区块收录。对以太坊合约交易而言,被收录也不必然意味着预期操作执行成功,还需区分执行结果与区块最终性。
交易哈希主要用于标识和查询交易,本身不能证明收款完成。入门时应分别理解提交状态、执行结果和确认程度,避免把这些不同层面的信息统称为“成功”。