standardness
标准性(Policy)与共识
实现中需要严格区分“共识规则”(consensus)与“中继/打包策略”(policy)。
共识(不可变更)
- 定义交易/区块有效性的硬规则:脚本求值、签名校验、PoW、大小/权重上限等
- 全网必须一致,否则将链分叉
策略(可调)
- 节点/矿工用于拒绝垃圾或易攻击交易的“门槛”:
- 标准脚本模板(P2PKH/P2SH/P2WPKH/P2WSH/P2TR)
- 严格 DER、低 S 值、最小 push、脚本大小/栈深限制
- RBF(BIP125)与包中继、孤儿交易限制、mempool 大小与 ancestor/descendant 限制
- 不影响已挖出区块的有效性;不同实现或版本可能差异
实践建议
- 钱包构造交易尽量“标准”:
- 避免非标准 opcodes 或奇异脚本模式
- 合理选择费率与输入/输出布局,避免触发策略拒绝
- 节点实现将策略与共识代码分层,避免误伤共识路径