闪电网络是建立在小额支付通道的基础上的。 要了解闪电网络,首先要了解小额支付渠道。
下面我们来讨论一下小额支付通道的建立流程。
考虑如下场景:A是用户,B是数据提供者,B需要向A发送一个100G的大数据文件,价值100元。
为了降低风险,A不想一次性给B 100元,而是每收到1G数据就向B支付1元。
这需要 100 笔交易。 现在看看小支付渠道是如何解决这个问题的:
生成但不发起杠杆交易() 用户A生成杠杆交易,并向A和B控制的多重签名地址转账100元。这笔钱需要A和B两个人同时发行私钥时间以便提取资金。
生成并保存退款交易() 用户A以保证金交易为输入生成退款交易,然后将该交易发送给B进行签名,签名返回给A。验证保证金交易内容正确后,用户A提交步骤1生成保证金交易。
关于杠杆交易 1. 杠杆交易的值>0,表示该交易被持有,不会立即生效。
2、杠杆交易有两种输出:A、100元; B、0元。
3、杠杆交易的目的是保证第一步产生的杠杆交易不会被用户B锁定。
连续发起承诺交易的用户A复制退款交易,调整输出为:A,99元; B,1元,签名并发送给B。B保留这笔交易,不广播到网络。 这笔交易的目的是给用户B 1 元。 B收到用户提交的交易后,将1G文件发送给A; A收到B的1G文件后,重新调整输出,变为:A,98; B、2元。 A和B重新签名,A将交易发送给B。如此重复,直到结束。 这些交易不会广播到网络,而只会在 A 和 B 之间传递。
发起清算交易( )。 A收到最后1G文件后,发起清算交易。 本次交易的输出为:A,0元,B,100元。 它 = 0,B 接收此交易并将其广播到网络。 交易立即生效,B收到100元。
小额支付渠道的巧妙之处
整个过程中,只有第一步的保证金交易和最后一步的清算交易会广播到网络上,不会广播任何中间交易。
如何防止B跑路,A的钱被永远锁在对公账户里? 这是通过在确认退款交易正确后才发送存款交易来保证的。
如何防止A逃跑而B拿不到钱呢? 每笔承诺交易都有A和B的共同签名。如果A逃跑,B会将最新的交易广播到网络,交易将被执行,B将获得最新的钱。 承诺交易有一个特点。 每笔交易的规模逐渐缩小。 因此,B将最新的交易广播到网络后,肯定会先被打包执行。 之前的其他交易将不会被执行。
如何防止A、B篡改交易内容? 任何一笔交易,B都会先签名,然后返回给A,A再次签名,然后发送给B。每笔交易都包含A和B的双重签名。如果B改变了交易内容,就会与A的不匹配签名。 反之,如果A更改了交易内容,则与B的签名不匹配。 因此,A和B都无法更改或篡改交易内容! !
如何防止A重复花钱? 步骤2中,A收到退款交易。 A将交易广播到网络,拿回100元,然后花在其他地方? 做不到。 因为有退款交易,所以处于锁定状态。 而这个 > 是任何后续提交的事务的值。
小额支付渠道的缺点
它是单向的,只能用于将资金从 A 转移到 B。如果是相反的情况,则需要建立另一个从 B 到 A 的通道。
限制。 假设B逃跑,A必须等到退款交易到期才能拿回钱; 同样,假设A逃跑,B也必须等到承诺交易到期才能拿回自己的钱。 。