
先区分验证与挖矿
理解比特币挖矿验证交易的适用条件有哪些,首先要区分规则检查与工作量证明。Bitcoin Developer Guides介绍,全节点独立验证区块;普通交易使用未花费交易输出,输出金额不得超过输入金额;区块还须符合工作量证明等共识规则,有效分支之间按累计工作量选择。
因此,挖矿不能把无效交易变成有效交易。找到满足难度要求的区块哈希,只是区块被接受的必要条件之一,不代表其中所有交易自动通过检查。

交易层面的适用条件
普通交易必须引用可用的未花费交易输出,也就是UTXO。同一输出不能在链上被重复花费。判断某笔交易是否有效,需要结合它所处的链状态,不能只看交易数据是否完整。

金额也必须符合约束:普通交易不能凭空增加比特币,输入与输出之间的差额可作为手续费。这里的金额检查与防止重复花费是不同检查项,通过其中一项不意味着全部有效。
区块层面的适用条件
矿工构造的区块需要正确衔接前一区块,其区块头哈希须满足共识规定的目标值,同时区块内容仍须有效。工作量证明与交易规则共同约束区块,二者不能相互替代。
遇到竞争分支时,累计工作量的比较以分支有效为前提。工作量更多并不允许绕过交易有效性检查;交易所在区块也可能因分支切换退出当前采用的链。
哈希能够证明什么
NIST的FIPS 180-4说明,安全哈希算法生成消息摘要,可用于检测消息是否发生变化。这解释了哈希为何适合用于校验数据完整性,却不意味着摘要能够判断一笔支付是否符合比特币规则。
需要区分三个问题:数据是否变化、交易是否被某区块包含、交易是否有效。它们分别涉及摘要校验、包含证明和共识规则检查。证明交易被写入某个区块,不能代替完整的有效性验证。
常见问题
验证交易一定要挖矿吗?不需要。全节点可以执行验证而不参与挖矿。挖矿承担的是构造候选区块并寻找合格工作量证明的任务。
手续费能让不合规则的交易通过吗?不能。手续费不赋予交易突破输入、金额或其他共识约束的资格。
交易进入区块就绝对不可改变吗?不能这样理解。区块仍可能受到链重组影响。工作量证明提高修改历史的成本,但不提供绝对不变的保证。