
支付原理:授权改变链上记录
区块链支付涉及三件事:说明哪些资金发生变化,证明发起者有权作出变化,由网络按照规则验证并记录。交易是承载这些信息的数据结构,数字签名提供授权证明,区块承载被纳入链上的交易。
比特币开发者指南以交易输出解释资金流转;以太坊交易文档以账户状态变化解释转账。两种模型可以帮助理解支付,但各自字段与规则不能直接套用到所有区块链。
UTXO、输入与输出
在比特币中,UTXO是尚未被花费的交易输出。普通交易的输入引用旧输出,输出规定金额和后续花费条件。txid标识交易,vout标识其中某个输出的位置,二者共同定位所要花费的输出。
可以把这组关系理解为旧记录被消耗、新记录被建立。钱包显示的余额对应可用输出的金额汇总;输入与输出描述资金的承接关系,不是付款人和收款人的姓名。这里讨论普通交易,矿工创建的coinbase交易存在特殊规则。
地址、公钥、私钥与签名
地址用于表达收款目标,公钥用于参与验证,私钥用于生成签名。在传统比特币P2PKH模式中,输出锁定到公钥哈希,花费者提交公钥及有效签名,满足对应脚本条件。
签名证明对相应密钥的控制及对所签交易内容的授权,不直接证明现实身份。哈希与签名也有不同职责:交易哈希用于标识交易,签名用于验证授权。地址编码、签名算法和授权数据的位置,应按具体交易类型理解。
nonce与Gas分别解决什么问题
在以太坊账户模型中,nonce用于标记账户发出交易的顺序;value表示转移的ETH数量;data可承载合约调用信息。Gas衡量执行所需资源,gasLimit限制最多使用多少Gas,maxFeePerGas限制每单位Gas的费用。
资源数量与资源单价需要分开理解,费用上限也不等于实际费用。涉及合约时,交易的to字段指向被调用合约,最终资产接收者可能由调用参数指定,因此只看to和value未必能理解完整支付含义。
常见问题:广播是否等于到账
广播只是将交易传播给网络,仍需等待验证和区块收录。已有交易哈希不能单独证明支付完成;以太坊合约交易即使被收录,也需要区分执行成功与执行失败。
确认与最终确定性描述记录稳定程度,具体机制因链而异。理解一笔支付时,应分别辨认授权是否有效、交易是否被收录、执行结果如何,避免用单一状态代替整个支付过程。