Bitcoin fix this

Posted on Jan 30, 2022Read on Mirror.xyz

解释Eltoo提案

英文原文

翻译:DeepL,Google Translate, 校对: 李林

阅读论文,它实际上很好,而且很小。你只读第4.2节的所有内容就足够了。

好吧,你不想这样做。或者你试过了,但仍然想读本文。

Eltoo是一种保持支付通道状态的方法,比Lightning中使用的原始方案效果更好。由于Lightning是一堆不同的协议粘在一起的,它可以只取代以前处理保持支付通道的部分。

Eltoo是这样工作的。A和B想要一个支付渠道,所以他们创建了一个多签的交易,有来自双方的存款–或者只有来自一方的存款,都无所谓。该交易只有在双方合作的情况下才可以使用。因此,如果其中一个人没有反应或不合作,另一个人必须有办法拿回他的资金,所以他们也创建了一个更新交易,但没有发布到区块链上。该更新交易花费到一个结算交易,然后按照他们的余额将钱分配回给A和B。

如果他们合作,他们可以改变渠道的余额,只需创建新的更新交易和结算交易,并对其进行编号,如1、2、3、4等。

实心的箭头意味着一个交易被预设为只能花掉之前的那个其他交易;虚线的箭头意味着它是一个浮动的交易,可以花掉之前的任何交易。

他们为什么需要和更新和结算交易??

因为如果B发布了更新2(他的余额更多),A需要一些时间来发布更新4(最新的,持有正确余额的状态)。

每个更新交易可以被任何较新的更新交易立即花费,或在一段时间后–或一些区块后,才被其自己的特定结算交易花费。

希望你能懂。

他们是如何关闭通道的?

如果他们是合作的,他们就可以同意把资金交易,也就是我提到的第一个多义词交易,花到他们想去的任何地方。如果一方不合作,另一方可以直接发布最新的更新交易,等待一段时间,然后发布其结算交易。

这比以前保持通道状态的方式有什么好处??

Eltoo更好,因为节点只需要保留最后一组更新和结算交易。之前他们不得不保留所有的中间状态更新。

如果它是如此的好,为什么他们不早做呢?

因为他们没想到。还因为他们需要对比特币协议进行更新,允许预签的更新交易花费之前的任何更新交易。这个协议更新被称为SIGHASH_NOINPUT1,你已经在外面看到这个名字。通过用SIGHASH_NOINPUT标记一个交易,它就进入了一个神秘的状态,成为一个浮动的交易,只要它的解锁脚本与锁定脚本匹配,就可以与任何其他交易绑定。

为什么update2不能将自己绑定到update4上,并花掉它?

好问题。它可以。但后来就不能了,因为Eltoo使用OP_CHECKLOCKTIMEVERIFY来确保它实际上不是检查锁定时间,而是检查一个序列。这都是很神秘的东西。

然后Eltoo 更新交易是有编号的,它们的锁/解锁脚本只有在一个交易被另一个比它大的交易花费时才会匹配。

渠道是否会过期?

他们在论文中谈到的 “链上协议 “是什么??

这只是一个例子,用来指导你了解链外协议的工作方式。仔细阅读或根本不读。链外机制与链上机制是不同的。重复一遍:链上协议在现实世界中是没有用的,它只是一个说教的工具。

译者注:在BitcoinOPcode中有一个提案(译),通过活用taproot实现了一部分这个文章的功能,但是不需要引入新的操作码。


  1. 后来SIGHASH_NOINPUT被修改,以更好地适应Taproot和Schnorr的签名,并改名为SIGHASH_ANYPREVOUT。 ↩︎