子弹OTC支付:区块链支付渠道的发展
脱链交易似乎是比特币扩展的最佳选择,尽管多家公司正在构建和测试脱链交易基础设施,但很少有人能体验到它们的工作方式。
问题
首先,为什么我们仍然需要在区块链之外进行交易?使用比特币的人们正在寻找安全性,而区块链无疑是实现安全交易的最佳方式。当然,问题在于,区块链非常昂贵且效率低下,因为网络中的每个参与者都存储了整个历史的副本,并且必须限制其使用以保持可持续的网络参与。
可以放在区块链上的有限数量的数据引发竞争,将交易包括在分类账中,从而推高了交易成本。因此,为了保持区块链层的轻巧和安全,我们需要尽可能少地使用它,并找到其他交易方式。
链下支付渠道
支付渠道基于交易替换的思想,可以在将未确认交易的状态广播到网络之前对其进行更新。这个概念比大多数人认为的要古老,实际上Satoshi自己在第一个比特币发行版中实现了类似的功能(但是他当时的目标不是提高可伸缩性,而是实现一组交易方之间的高频交易)。
通过在广播之前替换交易,无需使用昂贵且缓慢的区块链即可进行大量交易。脱链支付渠道可以分为三类:
单向支付渠道
基于时间的双向支付渠道
基于惩罚的双向支付渠道
单向支付渠道
单向支付渠道最早可追溯到2013年,当时Matt Corallo和Mike Hearn增加了对BitcoinJ的支持,但它们的用例非常有限,因为它们只允许您将资金从A转移到B,而不能反过来。
单向支付渠道的基本设计如下:
爱丽丝将1个BTC发送给爱丽丝和鲍勃之间的2 比 2 多重签名合同。
为了向Bob发送0.1 BTC,Alice创建并签名了一笔交易,该交易给她自己0.9 BTC,给Bob 0.1 BTC并将其发送给Bob。
要第二次发送其他0.2 BTC,爱丽丝更新通道的状态,创建另一个事务,该事务向自己发送0.7 BTC,向鲍勃发送0.3 BTC。
爱丽丝无法向网络广播,并且其中任何交易都包含在区块链中,因为她没有鲍勃的要求签名(请记住,资金已锁定在多重签名合同中)。
鲍勃总是被激励只广播频道的最后一个状态,因为这代表了他收到更多比特币的结果。
为了保护Alice免受Bob响应迟钝,不合作广播任何频道状态的风险(也阻塞Alice的资金)的风险,在多次签约合同开始时创建了一项限时交易,用于向Alice退还一个BTC。需要时间锁定以确保仅在Bob无响应的情况下Alice才能使用此事务。
在时间锁定期结束之前,Bob将广播通道的最后状态,以避免Alice广播时间锁定事务的风险。
但是,时间锁定事务不是理想的解决方案,因为它容易受到延展性攻击的影响。为了缓解这种情况,2015年协议升级引入了CLTV(检查锁定时间验证),该协议允许将时间锁定包括在合同本身的脚本中,而不是创建特定交易,从而避免了延展性问题。
注意:此类付款渠道有预定的有限使用期限,对于鲍勃来说,在时间锁定到期后继续使用该渠道确实是不安全的,需要在该日期之前关闭该渠道。
基于时间的双向支付渠道
虽然在单向支付渠道中,只有爱丽丝可以将钱汇给鲍勃,但不能相反,但在双向渠道中,资金流可以双向流动。
单向支付渠道的安全性是基于这样的事实,即鲍勃没有动机来广播该渠道的旧状态,因为它只会使爱丽丝受益(后者缺少鲍勃的签名,无法自己广播旧状态。 )。但是,在双向信道中,双方都可能有动机在不同时间广播信道的旧状态,因此需要不同的安全模型。为此,有两种不同的方法:基于时间的安全和基于惩罚的安全。我们将开始分析前者。
一个基于时间的通道通过时,锁定交易,这样通道的最后状态始终最低的时间锁定实现安全,这意味着它是第一个可以在blockchain播出。具有较低时间锁定的每个新事务都会使所有先前的事务无效,从而更新通道的状态。
为了使这种系统真正变得不信任,有必要创建第一笔交易,在将任何比特币转移到multisig之前将资金退还给双方,以防万一双方都不响应。但是,创建花费未经确认的交易的交易方会使各方面临延展性攻击的风险,这意味着在此过程中只能使用SegWit交易,因为与正常交易不同,它们不受延展性问题的影响。
然而,这种设计存在明显的问题,只有在第一个时间锁定期满之前,才能保证通道的安全性,然后必须将其关闭(即,将资金发送给两方),从而使通道具有预定的有限使用寿命。
为了克服这个问题,可以使用相对时间锁代替以前看到的绝对时间锁来实现略有不同的设计。具有相对时间锁定,只有在将事务包含在块中之后,时钟才会开始计时。为了使用相对的时间锁定来实现没有到期日期的渠道,我们需要构建一个由双方预先签署的特殊启动交易,以激活时间锁定(开始计时)。然后仅在当事方之一希望单方面关闭该频道时广播该广播(如果双方都同意,则他们可以使用正确的金额将简单的交易发送到相应的地址)。在启动交易发生之前,时间锁定被冻结,并且可以无限期地处于该状态。
尽管此设计极大地改善了支付渠道的使用寿命,但仍然存在巨大的局限性:如果您进行许多事务,您很快就会用光时间,因为每次渠道更改其状态时,时间锁定都会减少,直到达到零。幸运的是,有一个技巧可以进一步延长渠道的寿命:当交易的时间锁变得太短时,您无需再向两方汇款,而是将比特币再次汇入多签名,从而产生了另一个开端。一系列新的锁定交易的交易。可以根据需要多次重复此过程,以使频道保持活动状态,但是要权衡的是,要单方面关闭频道,必须广播更多交易,而费用可能很高。
这种结构需要一些区块链监控,以查看另一方是否广播了启动交易,因为在这种情况下,很重要的一点是,在广播之前的交易之前,准备好以最后一个状态关闭通道非常重要。
惩罚性支付渠道
创建没有到期日的渠道的另一种方法是将安全性基于对恶意交易对手的惩罚,而不是按时。这个想法仍然是将资金锁定在参与该渠道的两方之间的多重签名合同中,但是要保证尊重正确的行为,双方都要签署交易,而交易要花费更复杂的智能合约设计,以确保交易替换的安全。这种支付渠道设计就是用于照明网络的实现。
要设置频道,首先爱丽丝和鲍勃必须生成一个秘密(即随机数)并交换哈希。双方创建了一笔资金交易,并在2比2的多重签名合同中存入了一些硬币,假设他们各自投入0.5 BTC,但是在将其广播到网络之前,他们都创建了资金交易的后续交易,即所谓的承诺交易。在承诺交易中,爱丽丝向自己发送0.5个BTC,向合约发送0.5个BTC,在该合约中,鲍勃可以在预定时间后(例如,交易在区块链上进行一周之后)或由爱丽丝使用,包括交易中的硬币。鲍勃产生的秘密。
此时,Alice签署了交易并将其交给Bob,Bob现在也可以签署该交易,并在他希望关闭渠道的任何时候广播(以防Alice没有响应或他需要链上的流动性)。
同时,鲍勃创建了一个类似于爱丽丝的承诺交易,向自己发送了0.5 BTC,向合同发送了0.5 BTC,合约中的硬币可以由爱丽丝在一周后或由他自己使用,包括爱丽丝产生的秘密。
Alice的承诺交易脚本将遵循以下模板:
输出0:0.5 BTC到以下合同
OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG
产出1:下一个合约的0.5 BTC
OP_IF
“ +7天” OP_CHECKSEQUENCEVERIFY OP_DROP
<鲍勃公钥> OP_CHECKSIG
OP_ELSE
OP_SHA256 OP_EQUALVERIFY
<爱丽丝公钥> OP_CHECKSIG
OP_ENDIF
此时,资金交易可以发生,并在区块链上广播。现在,爱丽丝知道,如果交易对手对锁定在渠道中的资金失去反应,她可以单方面签署并发送由鲍勃(Bob)收到的交易,以收回比特币。但是,她必须等待一个星期才能使时限到期,但是在这段时间内,Bob无法花费合同的另一分支,因为他仍然不知道Alice的秘密。
多重签名地址Alice和Bob正在发送比特币的脚本将如下所示:
OP_2 OP_2 OP_CHECKMULTISIG
到目前为止,我们所要做的只是安全地建立通道,但是第一个真正的脱链交易仍然必须发生。与我们在基于时间的渠道中已经看到的类似,脱链支付是通过交易替换来实现的,但是这次旧交易将使用机密而不是时间锁来使无效。
当Bob想要向Alice支付0.1 BTC时,首先他们都需要生成一个新机密并共享相应的哈希,这将用于构建具有与前一个相同结构的新的承诺交易,而不是发送0.5 BTC。送给Alice,送给自己0.5,现在送给Alice 0.6 BTC,送给自己0.4 BTC。
现在存在两个不同但都是有效的承诺交易。由于Bob可以尝试在区块链上广播旧交易(这会给他0.1额外的BTC),因此使其无效并启用安全交易替换非常重要。为此,双方现在可以共享他们为先前交易生成的秘密。这样,如果Bob试图广播旧交易,Alice有整整一周的时间花在合同中锁定的资金,以提供Bob的机密,然后Bob才能将任何BTC移出。现在,鲍勃(Bob)受到极大的动力去尝试广播旧的交易,因为他会失去在频道上投入的所有资金。
所描述的过程实现了安全的交易替换,允许通道无限期地保持打开状态,在发生许多交易之后(不会优于基于时间的通道),结算成本不会增加,但是仍然需要进行一些区块链监控以确保安全性。
向前进
支付渠道是链下扩展解决方案的基础,但仅凭它们还不够,因为它们需要与您要与之进行交易的每个人开放一个渠道(并锁定流动性)。为了解决这个问题,闪电网络引入了一些额外的基于哈希锁的加密魔术,这些魔术使不同的支付渠道相互通信,形成一个网络(可以简化一下,您可以在此处了解有关闪电网络的更多信息)。
全球多个团队和开发人员正在探索提高比特币支付可扩展性的其他解决方案,例如帮助重新平衡支付渠道的渠道工厂,Schnorr签名和MAST脚本以减小规模(同时改善隐私性) )链上结算交易和许多其他了不起的建议。
扩大区块链规模并不容易,目前只有有限的资源可用于基础设施的改善。比特币要与主流集中式解决方案竞争可能要花费一些时间,但是比特币在这里已经存在了多个世纪,因此完全有必要等待适当开发所需的时间。
所以总结来说子弹OTC支付可以带来更加快捷的支付手段,