本文是关于基于拟议的Taproot协议升级的技术概念的。如果您还不了解Taproot的工作原理,建议您先阅读此解释器.
Taproot是比特币核心贡献者Gregory Maxwell首次提出的对比特币协议的潜在升级,处于开发的后期阶段。该技术由巧妙的加密技巧组合组成,可让用户将复杂的智能合约隐藏在常规交易中—仅当合约双方不合作时,这种复杂性才会被揭示出来。.
利用这个想法,比特币核心贡献者包括(但不限于)杰里米·鲁宾(Jeremy Rubin),安托万·里阿尔德(Antoine Riard),格莱布·瑙缅科(Gleb Naumenko)和格雷戈里·麦克斯韦(Gregory Maxwell)本人一直在猜测一个称为“ 付款池, 联合池 或硬币池. 这些池-我们现在将其称为支付池-将允许用户组共享与比特币区块链上记录的相同硬币(技术上:UTXO)的所有权,同时让这些用户中的任何一个进行(或接收)付款跟他们。当小组及其成员“隐藏”在Taproot结构中时,他们所有人都享有更多的隐私,智能合约灵活性和其他好处……而且他们甚至有可能在链下享受这些好处,从而使支付池成为新的第二层解决方案。.
尽管设计细节从一个“支付池”提案到另一个“支付池”提案有所不同,但是总体概念是相同的。这是基本思路…
分享硬币
首先,要创建一个支付池,用户通过将硬币(一部分)聚集在它们之间共享的Taproot地址中来组合它们。因此,假设爱丽丝拥有3个硬币,鲍勃拥有2个硬币,而卡罗尔拥有1个硬币,总共有6个。他们一起创建了一个交易,将这些硬币发送到共享地址,使其成为具有六个硬币的支付池.
在区块链上,支付池地址看起来像一个常规的比特币地址,现在拥有六个硬币。但在表面之下,爱丽丝(Alice),鲍勃(Bob)和卡罗尔(Carol)巧妙地使用了Taproot,以确保他们每个人都能控制自己在支付池中所占份额的硬币。爱丽丝可以在任何时候从该地址索要三枚硬币,鲍勃可以在任何时候从索取地址二枚和卡罗尔.
这是因为只有两个主要选项可以从地址中消费硬币.
第一种选择是直接从地址上支出,就技术术语而言,Taproot密钥路径。这需要所有三个参与者的合作(即:加密签名)。如果爱丽丝(Alice),鲍勃(Bob)和卡罗尔(Carol)都同意,那么可以随意使用这六个硬币,这看起来就像比特币网络上的任何其他常规交易一样。例如,三人组可以决定将其各自的余额发送回各个地址:三个代表爱丽丝,两个代表鲍勃,一个代表卡罗尔。但是,如果他们愿意的话,他们也可以合作将全部六个硬币捐赠给朱利安,或者以他们可能会同意的任何其他方式花费。重要的是他们三个都需要参与,因此没有他或她自己的合作就不会花费任何平衡.
第二个主要选项实际上由几个子选项组成。在将硬币发送到付款池之前,爱丽丝,鲍勃和卡罗尔将某些东西藏在Taproot地址后面的加密树中:它们包括了从付款池中汇款的其他方法。 (当前,这可以通过让所有三个参与者从这些路径上进行预签名交易来实现,这将需要一定的复杂度才能设置所有选项,并且扩展性不太好;建议的协议升级可能会在将来使此变得更容易)
如果其中一位参与者选择通过备用Taproot路径在支付池中花费硬币,他们通常会将与该参与者的余额相对应的金额发送到他们选择的地址,例如他们控制的单个地址。 (在爱丽丝的情况下,三个硬币到她自己的住所,在鲍勃的情况下,两个到他的住所,而卡罗尔的情况下的一个。)
使用此替代路径,剩余的硬币也会自动用完。可以根据支付池的设计以几种方式完成此操作,从而在复杂性和可伸缩性方面提供不同的权衡.
最简单的解决方案是将所有其他参与者也要分享自己的硬币份额到他们选择的地址。换句话说:如果一个用户退出池,那么每个人都退出池.
Riard和Naumenko首选的第二种解决方案是将所有剩余硬币发送到新的支付池,该池看起来像第一个支付池,只是从涉及现有用户的所有东西中剥离了。此设计可提供最佳的用户体验,但最难扩展,因为最重要的是,有必要为所有可能的退出方案做准备,包括所有潜在新池的所有可能的退出方案。但是,可以通过尚未公开的潜在比特币协议升级来实现规模扩展,以确保将先前付款池中的规则转移到任何新的付款池中.
鲁宾(Rubin)认为,第二种解决方案是不切实际的,并且倾向于在第一种和第二种解决方案之间寻求帮助:一些参与者会立即将其代币发送到他们选择的地址,其他参与者将其代币发送到新的付款池。这种设计提供的用户体验不太理想,但是会更好地扩展,而潜在的OP_CHECKTEMPLATEVERIFY协议升级将有助于简化设计并进一步扩大规模。 (退出将通过Tree Payments进行;本文将进一步探讨这些类型的付款。)
(在第二个和第三个解决方案之间要进行更多的权衡,但是所有优缺点的详细信息不在本文讨论范围之内;请阅读 bitcoin-dev邮件列表讨论 有关详细信息。)
要查看将剩余硬币发送到新的付款池时的含义,假设爱丽丝,鲍勃和卡罗尔选择了第二个选项,将所有剩余硬币发送到新的付款池。如果在这种设计中,爱丽丝退出第一个付款池,则将三个硬币发送到她选择的地址,而其他三个硬币发送到Bob和Carol之间的新付款池。那时,爱丽丝再次完全控制自己的硬币,而鲍勃和卡罗尔并没有太大的改变。两者仍然可以合作,按照自己的意愿花费剩余的三个硬币,或者像爱丽丝之前所做的那样,它们中的任何一个都可以单边退出.
如果鲍勃随后单方面从第二个付款池中退出,则他将两个硬币发送到自己选择的地址,将一个硬币发送到一个新的付款池(第三个),而仅卡罗尔就离开了。 (当然,在这个简化的示例中,将最后一个付款池替换为Carol选择的地址的设计实际上更有意义,但这只是实现细节。)
重要的一点是,付款池中的参与者可以合作从他们想要的池中进行任何类型的支付,而他们中的任何一个都可以在任何时候带着自己的硬币退出,从而让其他参与者可以控制自己的钱币.
将付款放入付款池
因此,我们确定所有参与者都可以分别从付款池中提取余额,或者(如果他们都同意)从池中提取费用。这是第二个选项,实际上可以提供一些巧妙的功能:付款池可以动态化。只要所有参与者都同意,他们不仅可以偿还自己的资金或偿还其他人(如朱利安),还可以做一些更有趣的事情。他们可以将资金转移到具有不同设计的付款池的新版本中.
例如,这允许他们中的任何一个在游泳池中消费.
假设爱丽丝(Alice)正在购买一辆新车,并想用一个比特币来支付。然后,Alice,Bob和Carol可以在付款池中创建一笔交易,该交易将一个硬币发送给汽车经销店,然后将剩余的五枚硬币发送到一个与第一个相同的新付款池,但这次Alice只能退出从它单方面带着两枚硬币,比以前少一枚.
同时,该交易看起来与任何其他常规比特币交易一样。汽车经销店(或区块链间谍)可能会得出结论,爱丽丝拥有全部六枚硬币,只用其中一个来购买汽车,而其余的五枚作为零钱。他们根本不知道其中一些硬币属于Bob和Carol,或者根本不参与交易。.
下次,当鲍勃(Bob)付款并且爱丽丝(Alice)和卡罗尔(Carol)合作时,它是在同一个付款池中进行的,再次看起来像是与外界进行的普通比特币交易。在付款池的最终迭代中,Bob可以用一个硬币而不是两个硬币退出。同时,相同的区块链间谍可能曾以为爱丽丝会再次付款,从而使他们进一步困惑。 (即使区块链间谍会以某种方式弄清楚该地址确实是Alice,Bob和Carol之间的付款池,他们仍然无法分辨这三个人中哪个是最近一次付款。)
每次爱丽丝(Alice),鲍勃(Bob)或卡罗尔(Carol)花费硬币时,交易可能来自其中的任何一个,并且支付池外的任何人都无法分辨出差额.
付款池不仅允许支出。如果爱丽丝想在付款池中增加她的“余额”,她也可以这样做。在这种情况下,爱丽丝(Alice),鲍勃(Bob)和卡罗尔(Carol)将合作将当前的五枚硬币移动到新的Taproot地址,在同一笔交易中,爱丽丝将从她自己的(个人)地址中再发送一个硬币。新的Taproot地址将再次包含6个硬币,其中3个属于Alice,这反映在她的单边退出选项中.
同样,全新的用户也可以加入支付池。如果爱丽丝(Alice),鲍勃(Bob)和卡罗尔(Carol)同意让戴夫(Dave)参加,他们三人将与戴夫(Dave)合作创建一项交易,该交易将支付池资金以及戴夫(Dave)的新硬币发送到新的支付池中,旨在让戴夫(Dave)参与并退出如果他愿意的话.
此外,付款池中的参与者可以选择互相付款。例如,如果爱丽丝(Alice)付给鲍勃(Bob)一枚硬币,那么三人可以合作将资金发送到新的付款池,在那里,爱丽丝(Alice)从她的余额中减去了一个硬币,而鲍勃(Bob)添加了一个硬币。再次,在区块链上,这看起来像是常规付款,而区块链间谍则不知道是谁付了钱,或付了多少钱。 (值得指出的是,Dave可以通过从一名现有参与者处收到内部付款来以类似的方式进入该池。)
有了一点额外的复杂性(理想情况下,至少要进行至少一个像Noinput这样的比特币协议升级),转移甚至也可以在链下完成。当爱丽丝向鲍勃付款时,所有参与者在这种情况下都将创建一笔交易,花费相同的资金到一个新的支付池中,但是该交易只能在他们之间共享-不会广播到网络(除非有人试图作弊)。这样,爱丽丝(Alice),鲍勃(Bob)和卡罗尔(Carol)可以“在内部”保持平衡,甚至在某个时候让戴夫(Dave)进入游泳池。当所有人都同意关闭资金池时,他们可以创建一个从原始付款池中支出的最终交易,并奖励每个客户最新的余额.
与称为“通道工厂”的较早概念类似,这些类型的支付池最终甚至可以用来托管雷电通道,保险库或其他第二层协议。这可能提供“包装”此类池中任何类型的附加协议层的潜力,从而将它们的所有复杂性隐藏在相同且规则的交易中.