解释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实现了一部分这个文章的功能,但是不需要引入新的操作码。
-
后来SIGHASH_NOINPUT被修改,以更好地适应Taproot和Schnorr的签名,并改名为SIGHASH_ANYPREVOUT。 ↩︎