闪电网络在今年的区块链世界是一个很热门的词。这个词乍听起来很酷炫,很深奥,它到底是什么呢?本文带你了解它。
闪电网络是什么
官方网站:http://lightning.network/
闪电网络(Lightning Network)是一个去中心化的系统。闪电网络的卓越之处在于,无需信任对方以及第三方即可实现实时的、海量的交易网络。这也就解决了比特币支付存在着拥堵的问题。
闪电网络是基于微支付通道演进而来,创造性的设计出了两种类型的交易合约:序列到期可撤销合约RSMC(Revocable Sequence Maturity Contract),哈希时间锁定合约HTLC(Hashed Timelock Contract)。
RSMC解决了通道中币单向流动问题,也就是链下交易的确认问题;HTLC解决了币跨节点传递的问题,也就是支付通道问题。这两个类型的交易组合构成了闪电网络。
1. 入门级文字:
- 用大白话解释:闪电网络是什么?
- 闪电网络详解
- 闪电网络入门:什么是闪电网络?它是如何运作的?
- 什么是闪电网络?干货都在这了!
- 区块链学堂——闪电网络是什么鬼(故事篇)?
- 区块链学堂——闪电网络是个什么鬼(技术篇)?
2. 如果不喜欢文字资料,还可以通过以下两个视频简单入门:
3. 白皮书:
4. 其他资料:
闪电网络的优缺点
闪电网络的优点
- 可以即时支付
- 对节点的性能需求并不高
- 通过路由系统自动寻径(寻找花费最少的路径),网络中的节点充分竞争使得交易费用可以低
- 匿名性(每一个节点只记录该通道内的交易)
闪电网络的缺点
- 如果换一种代币就需要重新开启通道,节点和用户的成本都相当的高
- 没有足够的商家支持闪电网络,使得作为节点的收益并不高,由于没有足够的商家支持,用户使用闪电网络的需求并不高
- 闪电网络是小额支付,开启通道是需要使用公网的,使用公网意味着要发起一次交易,如果只转入几百块,一次交易就需要几十块,可能就得不偿失了
- 关闭通道时,也需要发起交易,将通道中的币分配给通道以及用户,这又需要发起一次交易,又需要发起一次交易
- 其次每个节点都需要抵押一定的比特币,才能开启节点,长时间暴露在公网中,可能会存在私钥泄露的问题
- 现阶段闪电网络并不完善处于一个初始版本
闪电网络的浏览器
- 1ML
- Lightning network explorer
- Lightblock
- Robtex Bitcoin Lightning Explorer
- Lightning Explorer (explore casa)
- lndexplorer
- Lightning Explorerc(chaintools)
- Bitcoin Visuals
- rompert.com
- Bitcoin Exchange Rate
其他:
- lngraph - Personal private Lightning Network explorer using Neo4j Browser
- A (mostly) visual collection of the Lightning Network
闪电网络的钱包
闪电网络的钱包可以参考Lightning mobile wallets列表。
GitHub上开源的钱包项目:
桌面
- lightning-app - NodeJs实现
- lnd-gui - Swift实现
- eclair-node-gui - Java实现
- zap-desktop - Electron+React+Redux实现
- Presto - C++实现
- Lightning Peach Wallet - Electron+React+Redux实现
- spark-wallet - NodeJs实现
Web
- Discovery wallet - NodeJs实现
- fulmo - Python实现
- kugelblitz - Go实现
- lncli-web - NodeJS+Angular实现
- Ride The Lightning (RTL) - NodeJS+Angular7实现
移动端
可以参考Lightning mobile wallets中Open source
为yes
的项目。
闪电网络协议的实现
在闪电网络的实现方面,现在比较主流的有Lightning Network Daemon、eclair和c-lightning。这三个实现是兼容的。
Lightning Network Daemon (LND)
LND是论文《The Bitcoin Lightning Network: Scalable Off-Chain Instant Payments》中提出者的项目,使用Go语言编写,它比较适用于社区和开发者方面。
- 项目地址:https://github.com/lightningnetwork/lnd
- LND Developer Site: https://dev.lightning.community/
开发支持:
风险:目前LND还不支持导出私钥https://github.com/lightningnetwork/lnd/issues/732
eclair
Eclair(法语闪电)是闪电网络的Scala实现。它可以运行GUI,也可以不运行GUI,还可以使用JSON-RPC API。因为是Scala开发的,所以适用于所有的java语言,适合商业场景。
c-lightning
用C实现的一个规范兼容的闪电网络。
其他实现
- Raiden Network - Python实现
- lit - Go实现
- lightning-onion - Go实现
- ptarmigan - C实现