选择性加入费用替代法(Opt-in RBF)常见问答

总览

什么是选择性加入费用替代法?

选择性加入费用替代法(opt-in RBF)让交易被标记为可替换的,直到在区块中被确认。

是新的特性吗?

交易替换是由中本聪在第一次发布比特币软件时提出的,但之后由于拒绝服务而移除。选择性加入费用替换法(opt-in RBF)通过要求付更高的手续费来替换交易,解决了此问题。

它有什么用处?

在交易等待确认期间,一些钱包为了增加交易手续费(可能可以帮助更快被确认),希望可以更新这些交易,将多个交易压缩到一个,创建交易输入联结(以提升隐私性),或执行许多其他有用的操作。

它是怎样运作的?

选择性加入费用替换法是对于内存池和传播网络的一个改变,允许这些钱包在交易上选择性添加标记,来告知全节点这些特殊的交易可能会被更新(替代),直到在新的区块中被确认。

选择性加入费用替代法的执行会改变”非费用替代法”交易会被双花的可能性吗?

不.为了让选择性加入费用替代法启作用,需要被替换的交易必须标记为可替换(序列号小于 最大值-1)

选择性加入费用替代法会让骗人的支付情况更容易成功吗?

选择性加入费用替代法对那些不使用它和已确认的交易没有影响,也不会强制使用它。这意味着,担心未确认交易的用户,可以继续不使用加费用替代法。

选择性加入费用替代法本身会成为骗子的专用工具吗,假设人们接受未完成确认的交易?

目前,我们还没有理由相信他们,至少这种行为还不够明显。防止骗子使用已知的最有效的工具和做法。但是,如果他们(或直到更明确表示他们不是)接受者可以保护他们自己的资产,通过持续关注交易发非最大序列号与非最大序列号直到完成的方式,在此之前都是不安全的。

因为使用选择性加入费用替代法,可以帮助这些花更多费用的人,减少确认交易的等待时间,哪怕有许多交易还在等待确认。这不是强人所难地去要求需要接受这项服务才能让他们的交易完成确认。

为什么未完成确认的交易是不安全?

比特币交易是通过不同的分布系统,在这个系统中不是所有人都可以获得最快的速度。什么Alice看到的第一,Bob可能会看到第二个。比特币的设计不提供Alice和Bob的机制来哪个这些交易中真的来了第一份协议;他们所能做的就是等待,看看有哪些交易在最佳块链的有效块被证实。

如今很取巧的双花攻击者们使用的工具来连接网络,通过正常地查询冲突的支付交易,看到是在哪种版本在哪些商家以及哪个块出现。这种手法可以让他们的一笔交易变成两笔,其中一个他们发给他们的受害者,另外一个他们发送给矿工进行确认的两个版本。

不可替换性地支付给商家的存在阻止了他从节点了解双花,直到它通过只是被挖掘他们第一次看到的东西矿工开采块显示出来。这种简单的,常见的模式,有时进一步由其它技术扩增,例如使用未确认交易链,低的费用,或非标准的交易。

其结果是,绝大多数的安全性未确认的交易不是来自比特币系统内部,而是来自外部因素,如大多说诚实的比特币用户从来没有试图骗取他们的供应商,对于少量供应商之间的被宽容的欺诈,销售商进行诉诸法律体系或其他类型的追索,并对比特币协议的设计没法做什么(或威胁)。

所有这些事情对于选择性加入费用替代法都是同样真实的(就像在美国使用信用卡支付,几个月之前的交易很容易可以取消而让欺诈率变得更低,几乎所有重要的商人都接受)。同时,由于选择性加入费用替代法可以可以消除长网络延迟确认,一些商家不再需要像之前那样为减少欺诈风险,而被迫接受确认的交易以避免延误。

然而,没有人采用选择性加入费用替代法坚持认为你同意以上针对未确认交易安全的观点。选择性加入费用替代法是可选择性的,而且如果你不需要他,你完全可以不采用。

是谁发明了未确认交易的替换?这与比特币的“愿景”相冲突吗?

未确认交易的替换曾是“比特币发行之初的特点”(https://github.com/trottier/original-bitcoin/blob/master/src/main.cpp#L434),在设置了非最大序列号后,交易可将自己标记为可替换。之后,这项功能被废止了,因为有可能攻击者会用尽全节点间的所有带宽以引起拒绝服务的易损性,而对其自身的代价却很小。

此外,没有激励措施来使矿工遵循谈话并且接受替换,甚至还有可能因为一个更早版本的交易支付了更高的交易费而导致对谈话的违反。

这两个因素不断被更换被恢复持续了好几年,但在2013年Peter Todd建议 要求支付严格大于费用率的替换措施以及要求这项替换由增加一个最小交易费来生成交易来增加交易费率。这就同时消除了拒绝服务和激励相容的问题。

Peter最初的工作走的更远并且逻辑上导致了包含激励相容。因为在匿名、瞬息、自选择的矿工面前,只有对高额交易的可选择能指望。对高额交易费的倾向能够使节点在基于交易费比率的内存池中包含完整交易的集合成为可能,这对于只接受前一个版本的交易的节点来说并不可能。

因为以上的原因并且因为系统在可预期的方式中运作比在“不可预期但是在平均水平上更好”上运行更加的安全和可保护。他提议交易的替换在所有交易上都可发生,他同时提议一个以强激励相容的方式去除所有从双重花费中取得经济所得的协议,称为替换焦土:当有人试图对你双重花费,你可以把所有的钱当做交易费来防止攻击者得到。(但这是一个只有理论游戏者会喜欢的提议)

在Peter的建议之后,我们已经收到来自像Greenaddress 这样的钱包强烈地请求可选择交易费替换。他们确实的需要一个合理的途径来处理交易费,对交易费的可选择就是一个更好地方式,这也是为什么修改这项提议来符合中本聪最初的可选择的行为。

选择性加入手续费优先这个请求有争议吗?

并没有。在上个月进行了广泛的研讨后,PR在10月22日开始实行。之后,至少在四次比特币发展周会上也对此进行了讨论。(2015-11-05, 2015-11-12, 2015-11-19, and 2015-11-26

在PR讨论中,有19人发表了评论(他们代表了至少三个不同的钱包品牌),并有14人明确地表达支持,其中至少有一人曾在过去非常公开地反对完全费用替代法(full RBF)。此次会议召开期间,没有收到与会者(或是其它我们可了解的平台)对此项提案明确反对的反馈。

这些改变在何时会以何种方式启动呢?

选择性加入费用替代发(Opt-in RBF)代这一改变并没有一个真正的启动过程,因为这不是比特币共识的一部分。这只是一个本地的政策行为,所以这些改变会在人们应用新版软件的时候一次一个节点地发生。在网络上已经有有一段时间,可能按年计,有某些节点用各种方式实施了费用替代法(RBF)这一政策。

比特币核心0.12版本会在2016年2月发布,并且包含选择性加入费用替代法(opt-in RBF)这一政策。这之后在这一行为成为普遍之前可能会有几个月的时间。这一过程也可能会因为相关的有趣应用的开发而加快速度

选择性加入费用替代法(opt-in RBF)只在调整手续费上有用吗?

不,另一个钱包可以做的是在第一交易还没有确认之前将两个交易转换成一个交易。即使这种替换需要缴纳比原先更高的交易费,这仍能节省很大一部分字节和交易费。

选择性加入费用替代法(Opt-in RBF)也可以用来实行更加先进的合作稳定策略,比如直通式交易

众多智能合约也需要能够替换,但它们在没有替换机制的时候通常通过锁定时间来创建更健壮的订单和工作;这是被认为支持在比特币原本的设计中加入替换机制的动机。

尽管在仅调整费率之外还有其他更有趣的原因,然而调整费率的能力不可因此被低估。这意味着初始费用可以使用“最有可能”预估中的最低价,而非超额支付来“以防万一”。即使在替换交易鲜少出现的情况下,这也将导致较低的费用。

钱包需要保持在线以发布更高费率的替换交易吗?

不,替换交易可以被预计算、时间锁定并被传至始终在线的远程服务器以备之后的广播,且服务器不存在可盗用用户资金的风险。(最坏的情况就是广播失败)

例如,在第100个区块上,一个钱包想进行一笔交易并在3个区块中确认。在最佳预估了3个区块确认需要的费用后,钱包会在第101个区块上授权一笔交易。同时,它将在第104、105、106、107等等这些高度上授权锁定了时间的替换交易。在此假设高度上,后者的费用是前者的1.5倍。这些都将被传递到一个接受以锁定时间为交易优先顺序的节点上。

尽管矿工们了解未来他们可以得到更高的费用,理性来讲,他们仍更倾向于现在的方案。因为如果他们等待,就会有别的矿工来收取费用。这种按倍数增加的方式意味着最坏也不过是一笔交易可能被多付了50%,但是几笔交易下来也可以随机的达到高额的费用。

对交易费的可选择会增加懒人式交易被欺骗的风险吗?

看上去不是这样,至少不会特别重要因为这是设计上所允许的。对交易费的可选择利用nSequence域来标识,这个域只被用来标识可替换性。许多信任未确认交易的程序和平台总体上已经认为低序列的交易是可疑的并且忽视这些交易直到被确认。

现在有特别多的方式加快交易被确认的速度或者增加可靠度,以此增加成功进行双重交易的概率

  • 付更少的交易费
  • 实用非标准的标识或者版本
  • 花费未确认的输入
  • 行为符合任何一种拒绝式攻击的特征
  • 创建不符合规范的交易
  • 等等

这些判定标准会经常改变,并且取决于节点上用户可配置的某些规则。对于有关方面来说,想要尝试预测未确认的支付就需要追踪所有的这些,甚至是更多,并且他们还要对改变做出前瞻性的回应。早在几个月前,选择性加入费用替代法(Opt-in RBF)这个提案就被添加进来并被广泛探讨交流,甚至盖过了一些早就被检测到的行为。如果说在未确认交易警戒上需要有任何努力上的改变,那就应该归功于选择性加入费用替代法。

更别说,对交易费的可选择是否比非交易费可选择的对于欺骗性双重花费更有作用还是未知数,至少对于使用复杂工具的攻击者来说是这样的

有些施行未确认可信赖度分析的组织已经明确地表示它们已经准备好了, 如果有任何人意识到软件仍然需要改变,告知我们我们很乐意来帮忙

如果我觉得交易费优先就是非常糟糕呢?

那就不要用它:不要在自己的交易上设置这一标记并且把所有你接收的序列号小于MAX_INT-1的交易认为不存在(或者已经被双重花费)直到交易被确认

没有我们所知的常用的软件把它的序列号设置的比MAX_INT-1小,许多程序(包括“自信交易”)已经视低序列号为可能被双重花费的。毕竟被显式地标记为可被替换的交易,即使没有交易费优先,nLocktime仍可能导致交易确认的冲突。

如果有人发给你一个可被替换的交易并且你不想错过,它的可替换性能使它被想被多快确认就被多快确认。现存的有些情况例如发送者使用非标准的交易特性或者花费未被确认的产出已经客观上使得很多交易更加容易被双重花费—-更别说这些情况中还没有能让交易更快被确认的方法

交易费优先(RBF)是为满足成人的一项特性。如果你不想加入它,你不需要加入。你对它的不喜欢不是防止其他使用它的人来进行无关你的交易的理由

为什么是可选择的而不是让矿工可以替换任何交易?

现在没有什么能够阻止矿工替换甚至是非可选择的交易,并且有些矿工已经自己试验过交易费优先策略。推出标准的相关应用可以满足对这一特性的需求,这也有可能降低矿工替换任何高交易费交易的热情。

我听说选择性加入费用替代法(RBF)很少或没有被讨论

最近的一次费用替代法(RBF)的讨论要追溯到2015年5月。

Github:

添加先见安全费用替代法(replace-by-fee)逻辑到内存池 #6176 安排完全费用替代法(full-RBF)部署 #6352 基于序列完全费用替代法(Full-RBF opt-in) #6871

互联网中继聊天会议:

有许多其他日志 #bitcoin-dev and #bitcoin-core-dev

邮件列表讨论没有特定顺序。

中本聪首次介绍 未确认交易替换 但是后因DOS攻击被移除(Peter Todd通过对每个替代要求更高手续费的方式解决了该问题)。

##这可以用于对未采取措施的(旧)钱包进行双花吗?所有的钱包都要进行更新吗?

无论有没有费用优先发,未确认的交易永远可以被双花。骗局目前来说很容易,并且费用优先法也不能改变。

只有在如果他们想要使用选择性加入费用替代法时,才必须更新钱包。这给了钱包一个可以创新并为用户提供利益的新维度。

为什么不使用先见安全-费用替代法(FSS-RBF)

FSS-RBF意味着交易只有在之前所有的支出都被花掉的情况下才能被修改,这样就防止了重复交易,但其若被实行也将带来三个问题。

  1. 它导致交易增长,因为你必须添加新的输入到每一个替代中。

  2. 很多钱包没有多余的比特币,所以他们不能使用FSS-RBF。

  3. 它在几乎是永远提升支出改变的价值的同时降低了隐私性,因为对外来说支出被标记为改变。

CPFP是什么意思?

这是一种通过创建另一个基于第一个的交易来添加交易费的方式

为什么不用CPFP来替代RBF?

CPFP并不会解决同样的问题。RBF允许“消费者”增加手续费;CPFP是有用的因为它允许“接受者”增加交易费。

RBF比CPFP更有优势在于它并不必须地需要使用另外的区块空间,所以它大概增加30%~90% 的效率

计划是同时支持CPFP和可选择的RBF。