
区块链支付究竟在处理什么
区块链支付的核心不是把一枚实体硬币从一个账户搬到另一个账户,而是由网络共同验证一条状态变化记录。例如,转账记录会说明谁有权支出某笔资产、资产应交给谁,以及这次操作是否符合网络规则。用户使用钱包发起支付后,交易会被广播给节点,节点验证交易,之后由出块参与者把交易纳入区块。只有经过网络接受并写入有效区块,支付才具备链上记录。
不同区块链的记账方式并不完全相同。比特币常用UTXO模型,余额由一个或多个尚未花费的交易输出组成;以太坊采用账户状态模型,账户余额和其他状态会随着交易执行而更新。因此,“余额”“输入”“输出”“nonce”等词在不同网络中的含义不能简单等同。

比特币支付中的常见术语
UTXO是“未花费交易输出”的缩写。上一笔交易的输出会指定数量和支出条件,尚未被后续交易使用时,就构成可花费的UTXO。钱包显示的余额,实际可能来自多个UTXO。发起支付时,交易输入会通过交易标识符txid和输出序号引用此前的特定输出;交易输出则写入收款金额及新的支出条件。

比特币地址通常由公钥相关数据编码形成,便于收款方提供给付款方。私钥用于证明支配权,公钥可以由私钥确定性生成,公钥哈希则可用于构造特定的支付条件。付款方把收款条件写入输出,未来的支出者需要提供符合条件的公钥和数字签名。
脚本是验证这些条件的规则集合。以常见的P2PKH支付为例,验证过程会先检查所提供公钥的哈希是否与输出中记录的哈希一致,再检查签名是否由对应私钥生成,并且签名覆盖了规定的交易内容。任一关键检查失败,交易就不能按该输出完成支出。
交易标识符txid通常用于定位一笔交易,输出序号用于定位该交易中的具体输出。两者合起来可以说明一笔新交易准备花费哪一项资产。输入和输出之间的金额关系还需要遵守网络规则,差额通常体现为交易费或找零输出,具体处理取决于钱包和交易结构。
以太坊支付中的常见术语
以太坊交易通常由外部拥有账户发起。普通转账会填写发送方、接收方、转账金额和签名等信息;如果接收方是智能合约,交易还可以携带数据,用于请求合约执行某个函数。合约账户能够响应调用,但不能像外部拥有账户那样主动发起一笔普通交易。
nonce是发送方账户使用的连续序号,用于标识交易顺序并防止同一笔授权被重复使用。签名由发送方私钥生成,用来证明交易获得了相应账户的授权。收款地址、value和input data分别可以理解为接收位置、转移的原生资产数量,以及可选的合约调用数据。
gas表示执行交易所需的计算资源单位。gasLimit规定交易最多允许消耗多少gas,费用参数则规定每单位gas愿意支付的金额。简单转账和复杂合约调用的计算量可能不同,因此手续费取决于实际执行所需的资源以及交易采用的费用规则。没有改变链上状态的查询通常可以通过节点的只读调用完成,不等同于提交一笔需要写入区块的交易。
以太坊交易也有交易哈希,节点可据此追踪交易。提交后,交易通常先进入待处理交易池,之后由验证者选择并放入区块。区块被后续网络规则进一步确认后,交易被篡改或回滚的可能性会降低;具体确认标准取决于网络机制和使用场景。
一笔支付从发起到确认的过程
第一步是构造交易。钱包根据收款信息、金额、网络规则和必要费用,生成符合该链格式的交易数据。比特币交易需要选择要花费的UTXO并创建新的输出;以太坊交易则需要填写账户序号、接收地址、金额、数据和gas相关参数。
第二步是签名。钱包使用私钥对规定内容进行数字签名。签名的作用是证明授权关系,并使交易的关键内容在传播过程中更容易被发现篡改。私钥本身不应作为交易内容发送给网络。
第三步是广播和验证。节点会检查格式、签名、余额或可支出资产、交易序号、脚本或合约执行条件等。通过初步检查的交易可能进入交易池,并继续向其他节点传播;验证失败的交易不会成为有效支付。
第四步是写入区块和等待确认。出块参与者把符合条件的交易纳入区块,网络随后验证该区块。用户看到“已提交”通常只代表交易已被广播或进入待处理状态,看到区块确认则表示交易已经获得链上收录。不同应用对确认数量或最终性要求可能不同。
适用条件与常见问题
这些术语适用于理解比特币、以太坊及其他采用相近交易模型的公链基础流程,但具体字段、脚本、费用规则和确认机制会因网络版本而变化。不能把比特币的UTXO、脚本验证方式直接套用到所有区块链,也不能把以太坊的gas和nonce解释成所有网络都具备的统一字段。
为什么付款后余额没有立即变化?可能是钱包仍在等待节点接收、交易尚未进入区块,或者界面正在同步。需要结合交易哈希、交易状态和区块确认情况判断,不能只看本地页面的短暂显示。
为什么交易显示成功但合约操作结果不同?转账交易成功表示交易被网络接受并执行到相应结果,合约内部逻辑仍可能根据输入数据、权限、余额或其他状态产生不同结果。查看交易的执行记录和事件信息,通常比只看转账金额更准确。
地址、私钥和签名有什么区别?地址是用于标识收款位置或账户的公开信息;私钥是控制支出或授权的秘密信息;签名是使用私钥对交易内容生成的授权证明。三者作用不同,地址公开并不等于私钥可以公开。