资讯专栏INFORMATION COLUMN

比特币闪电网络(Lighting Network)入门

TIGERB / 3667人阅读

摘要:比特币闪电网络什么是支付隧道支付隧道是用于在无信任环境中进行链下交易比特币的一种机制。因为绝大部分的交易都是在链下发生,所以就没有了像比特币一样的交易速度的限制,极大的提高了交易的速度。

比特币闪电网络 什么是支付隧道(Payment channels)

支付隧道是用于在无信任环境中进行链下交易比特币的一种机制。交易双方通过广播并锁定一笔由双方共同签名的链上交易。隧道(channel)只是一种虚拟的比喻,一个隧道由一个在链上的(on-chain)的funding transaction、一系列的链下(off-chain)的commitment transaction和最后一笔链上交易组成。因为绝大部分的交易都是在链下发生,所以就没有了像比特币一样的交易速度的限制,极大的提高了交易的速度。

最简单的单向支付隧道

比如一个视频点播app,用户(记作A)每播放1秒钟视频需要支付0.1个比特币给app开发者(记作B),在app界面上提供了一个基于用户和app开发者双重签名的地址,用户向该地址发送了360个比特币作为该支付隧道的funding transaction,这笔双重交易的输出初始状态是t0(A:360, B:0),随着视频的播放,双方每隔一秒钟就会有一笔新的commitment transaction生产,t1(A:359.9, B:0.1), t2(A:359.8, B:0.2)···,这些承诺交易都是不广播到链上的,最终用户点击了停止播放按钮,最后一笔交易的状态可能是tn(A:100,B:260),最后一笔交易就广播到了链上。整个交易完成,并且只在链上产生了两笔交易。

这个简单的单向支付隧道有两个明显的漏洞:

A发送第一笔资金交易后,B直接消失,那A永远也拿不回自己钱了。

A可以拿被B签名过后的任何一笔commitment transaction进行广播,从而减少自己费用。

这两个问题可以通过加一个timelock来解决

加了时间锁的单向支付隧道

在A发起funding transaction之前,A先让B签名一份有timelockrefund transaction,交易的输出的高度为当前的区块高度+3000。然后才开始接下来的funding transaction流程,如果B消失了,A可以通过refund transaction等待(3000个块)拿回自己的钱。接下来的每一次commitment transaction都带着时间锁,从refund transaction设定的区块高度递减,比如T+3000, T+2999, T+2000, T+1500。这样每一次签署最新的commitment transaction就相当于撤销了之前的交易(因为时间离T较近,可以优先广播出去)。这也就解决了上面说的A可以拿之前的一笔commitment transaction进行广播,然而B看到A广播了之前的区块,就可以拿时间较新的交易进行广播,从而让A的广播的交易失效。

简单的加了time lock的单向支付隧道虽然解决了上面两个问题,但还有几个问题没有解决:

如果B故意消失的话,A只能等到3000个区块后才能拿回自己的钱

因为添加了time lock,隧道的生命周期有了限制。

因为每一笔交易都是通过递减时间锁进行的,所以commitment transaction笔数有了限制。

为了解决这三个问题,接下来要引入叫Asymmetric Revocable Commitments

Asymmetric Revocable Commitments

和前面一样,我们先在链上广播一笔由双方签名的funding transacion,但接下来的commitment transaction和前面的不同,A和B双方各自生成一个commitment transaction,像下面这样:

A的commitment transaction:

Input: 2-of-2 funding output, signed by B

Output 0 <5 bitcoin>:
     CHECKSIG

Output 1 <5 bitcoin>:
    <1000 blocks>
    CHECKSEQUENCEVERIFY
    DROP
     CHECKSIG

B的commitment transaction:

Input: 2-of-2 funding output, signed by A

Output 0 <5 bitcoin>:
     CHECKSIG

Output 1 <5 bitcoin>:
    <1000 blocks>
    CHECKSEQUENCEVERIFY
    DROP
     CHECKSIG

因为双方都签名的交易可以马上拿回自己的币,而对方得等待1000个区块后才能拿回自己的币。所以双方都很愿意对交易进行签名。接下来要加入一个新的元素:Revocation Public Key每次发起commitment transaction前双方都会各自独立生成该密码的一半,把这个Key用在上面的第二个output上,变成这样:

A的commitment transaction:

Input: 2-of-2 funding output, signed by B

Output 0 <5 bitcoin>:
     CHECKSIG

Output 1 <5 bitcoin>:
IF
    # Revocation pernalty output
    
ELSE
    <1000 blocks>
    CHECKSEQUENCEVERIFY
    DROP
     CHECKSIG
ENDIF
CHECKSIG

B的commitment transaction:

Input: 2-of-2 funding output, signed by A

Output 0 <5 bitcoin>:
     CHECKSIG

Output 1 <5 bitcoin>:
IF
    # Revocation pernalty output
    
ELSE
    <1000 blocks>
    CHECKSEQUENCEVERIFY
    DROP
     CHECKSIG
ENDIF
CHECKSIG

有了Revocation key,在每次提议commitment transaction前都会交换前面一个commitment transactionRevocation public key,如果一方发现对方广播了前面的一笔commitment transaction就可以使用完整的Revocation Key拿到全部的币。通过使用了相对的time lock就可以极大提高单个隧道里面的commitment transaction

Hash Time Lock Contracts(HTLC)

HTLC是一种智能合约,它想到达到的效果就是由交易的接受人提供一个Hash过的密钥R作为output的的条件之一,如果谁能出示密钥R,就能获得这个交易的output的币。类似这样的输出:

IF
    # Payment if you have the secret R
    HASH160  EQUALVERIFY
ELSE
    # Refund after timeout.
     CHECKLOCKTIMEVERIFY DROP
     CHECKSIG
ENDIF
路由的支付隧道(Lighting Network)

在HTLC的机制基础上我们可以实现一个简单的闪电网络,在双方没有建立支付隧道的情况下完成一笔交易。例子如下图:

Alice想向Eric转账1BTC, 因为Alice并没有直接跟Eric建立隧道,他只知道Bob,所以他向Bob发起了一笔commitment transaction,一共1.003BTC,output指向持有Eric提供的密钥R的收款人。因为Bob并没有密钥R,所以他转而向跟他建立隧道的Carol发起一笔commitment transaction,一共1.002BTC,这样如果Carol能向他提供密钥R的话,他转可以获得1.003-1.002=0.001个BTC, 因为Carol也没有密钥R,所以他向Diana发起另外一笔1.001BTC的commitment transaction,期望Diana能给他密钥R,最后到达了Eirc,他提供了密钥R,因此所有人都获得了对应的commitment transaciont,交易完成。这就是最简单的闪电网络。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/24315.html

相关文章

  • 一块听听:Mixin 主网上线语音直播文字稿

    摘要:本文是在一块听听上的语音直播的文字精简版。主网上线的细节主网在北京时间年月日早上点正式完成了上线。目前主网上线工作已经完成,正在把测试网上的资产迁移到主网上。主网上线意味着什么真的是一个去中心化的区块链项目了。主网上线对来说只是一个起点。 本文是在一块听听上的语音直播的文字精简版。 Mixin Network的成绩,主网和展望 大家好,我是Mixin Network 的李林。非常高兴能...

    nanchen2251 评论0 收藏0
  • 区块链的跨链技术

    摘要:在区块链所面临的诸多问题中,区块链之间互通性极大程度的限制了区块链的应用空间。是在以太坊基金会支持之下诞生并成长起来的,它被认为是区块链上的第一个侧链。它旨在解决当今两大阻止区块链技术传播和接受的难题即时拓展性和延伸性。 在区块链所面临的诸多问题中,区块链之间互通性极大程度的限制了区块链的应用空间。对于公有链还是私有链来说,跨链技术就是实现区块链价值的关键,是区块链向外拓展和连接的桥梁...

    Snailclimb 评论0 收藏0
  • 比特Layer2对比:闪电网络对比Mixin(非技术角度)

    摘要:闪电网络和的相同之处都是为比特币服务。比特币占有整个加密货币市值的一半,而且比特币会承载越来越多的经济活动,放弃比特币的或者跨链是空中楼阁。都是点对点传输,没有发行对应比特币的证券化。 闪电网络 Mixin Network 节点数量 无限制 不超过50 建节点是否有限制条件 无条件 持有10000 xin token就可以 交易确认时间 小于 3 秒 小于 1 秒...

    William_Sang 评论0 收藏0
  • 比特闪电网络介绍

    摘要:闪电网络和通过可以在闪电网络任意节点之间安全转移价值而无需信任中介节点。相关比特币改善提案该为比特币 本文是作者有关区块链的系列文章之一,可通过如下链接下载原文:https://github.com/junahan/JU... 摘要 比特币闪电网络是一个去中心化的即时、大吞吐量微支付系统,该系统无需委托可信的第三方代管资金,也没有相应的风险。实现的方法是创新性的利用比特币内置脚本构...

    Harriet666 评论0 收藏0

发表评论

0条评论

TIGERB

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<