跳转到正文
buybitcoinsmart

术语表 /交易与手续费

标准交易

标准交易是什么?
标准交易是指普通节点同意转发并保存在各自内存池中的交易,这一要求比仅仅符合共识规则的有效性更为严格。

网络设有两道独立的关卡。共识决定一个区块可以包含什么,只能通过分叉来改变;标准性决定您的节点会向其对等节点转发什么,每次发布新版本时都可能改变。未通过第二道关卡的交易并非无效,而是不被接纳,必须通过其他途径送达矿工。

运作方式

标准性是每个节点各自执行的一份检查清单,而 Bitcoin Core 的这份清单位于一个源文件中,即 src/policy/policy.cpp。

主要条件如下。每个输出脚本必须符合某个已识别的模板:支付到公钥哈希、支付到脚本哈希、三种见证类型、密钥不超过三个的裸多重签名,或单个数据承载输出。交易的权重不得超过400,000权重单位,即100,000虚拟字节,相当于一个完整区块的四分之一。其版本必须在可接受的范围内。其手续费必须达到最低转发费率,默认为每虚拟字节1聪。任何输出都不得小于粉尘阈值,传统输出为546聪,原生 SegWit 输出为294聪。解锁脚本只能包含数据推送,不得包含操作码。

不满足上述任何一项,sendrawtransaction 都会返回特定的错误,通常以"non-mandatory-script-verify-flag"或"scriptpubkey"开头,该交易也不会扩散到您提交它的那个节点之外。

之所以存在策略层,是因为转发是免费的,而区块空间不是。任何人都可以用永远不会被打包的交易淹没网络,因此节点拒绝转发那些看起来像滥用、验证成本高昂或无法切实支付费用的交易形态。策略层同时也是在生态系统一致认定安全之前,把各种实验挡在普遍流通之外的地方,这也是为什么放宽一条策略规则可能像软分叉一样充满争议,尽管它完全不需要协调。

在哪里会遇到它

大多数人是通过一条错误信息接触到标准性的,而产生这条信息的钱包通常是在有意做一些不寻常的事情。

尝试发送300聪的输出会触发粉尘规则。把大型多重签名构建为裸脚本,而不是放在支付到脚本哈希之内,会触发模板规则。附加超过节点数据承载设置所允许的数据量,会触发该限制。这三种情况都会在任何内容到达网络之前,由您自己的节点返回拒绝。

非标准并不意味着不可能,如今还出现了绕过它的市场。2023年2月2日,矿池 Luxor 挖出了区块774,628,其中包含一笔3.94 MB的交易,没有任何节点会转发这笔交易,它是直接提交给矿池的。2024年,Marathon 随后把同样的想法做成了名为 Slipstream 的产品,接受非标准和超大交易以便直接打包。如果您是普通买家,永远不需要这类服务,而被要求使用这类服务,则是出现异常情况的强烈信号。

标准交易 vs 共识有效交易

共识有效性是整个网络必须达成一致的内容;标准性是单个节点选择提供协助的内容。一笔交易可以在共识上有效但不符合标准,此时矿工可以将其打包,所有节点也会毫无异议地接受由此产生的区块。反过来则不可能:任何违反共识的交易都不会被转发,因为它本来也无法被挖出。简单地说,标准性是通往矿工路径上的一道过滤,而共识是决定历史是否被正确延续的规则。

请勿混淆

常见问题

我的节点以“非标准”为由拒绝了一笔交易,它是无效的吗?

不一定。非标准是指您的节点拒绝转发它,通常是因为交易的大小、脚本形态、粉尘大小的输出或手续费过低。矿工仍然可以将其打包,但您必须直接联系某位矿工。

谁来决定哪些交易属于标准交易?

每个节点运营者都可以决定,方法是选择运行哪种软件和设置。Bitcoin Core 附带一套默认设置,Bitcoin Knots 附带一套更严格的设置,而网络的实际策略就是大多数转发节点碰巧接受的内容。

相关术语

交易与手续费中的更多术语

阅读本页英文版