目前比特币lightning
网络有三大实现:c-lightning
,lnd
和Eclair
,其中c-lightning
是c语言写的,源码在Github。
注:
c-lightning
只有linux
实现,在win10上怎么搭建呢?别忘了win10提供了一个linux
子系统,我们可以利用这个子系统来搭建需要的环境。
开启ubuntu子系统
Windows10开启Ubuntu子系统简易步骤
如果你这一步已经完成则继续下一步。-
安装
bitcoind
在你的ubuntu
子系统窗口中输入一系列命令:sudo apt-get install software-properties-common sudo add-apt-repository ppa:bitcoin/bitcoin sudo apt-get update sudo apt-get install -y bitcoind
-
启动
bitcoind
来同步比特币区块链
由于闪电网络目前还不稳定,因此不推荐直接上main net
,我们这里用testnet
来进行测试。bitcoind -daemon -testnet -datadir=/mnt/f/temp/btctestnet
-daemon
表示bitcoind
后台运行
-testnet
表示测试网络
-datadir
设置区块链目录,用于存放同步下来的区块链数据,我这里用的是本机的f:\temp\btctestnet
目录
-
耐心等待区块链同步完成
同步进度可以用下面这个命令来查看:sky@willw:~/lightning$ bitcoin-cli -testnet -datadir=/mnt/f/temp/btctestnet getblockchaininfo { "chain": "test", "blocks": 1452356, "headers": 1452356, "bestblockhash": "00000000002a8df422bd35b36cd58a5fe6a28779fe2f52aec4212cf08ba5cdf6", "difficulty": 1, "mediantime": 1547457629, "verificationprogress": 0.9999935710959913, "initialblockdownload": false, "chainwork": "0000000000000000000000000000000000000000000000e71a1b804f38894edd", "size_on_disk": 23235751287, "pruned": false, "softforks": [ { "id": "bip34", "version": 2, "reject": { "status": true } }, { "id": "bip66", "version": 3, "reject": { "status": true } }, { "id": "bip65", "version": 4, "reject": { "status": true } } ], "bip9_softforks": { "csv": { "status": "active", "startTime": 1456790400, "timeout": 1493596800, "since": 770112 }, "segwit": { "status": "active", "startTime": 1462060800, "timeout": 1493596800, "since": 834624 } }, "warnings": "Warning: unknown new rules activated (versionbit 28)" }
注意其中的blocks
值,如果与smartbit中最新块相同,那么恭喜你可以进行下一步了。
注:如果你的区块链同步卡在4000多块,请使用老版本的
bitcoind
进行同步
-
安装
c-lightning
用以下一系列命令:sudo apt-get update sudo apt-get install -y \ autoconf automake build-essential git libtool libgmp-dev \ libsqlite3-dev python python3 net-tools zlib1g-dev git clone https://github.com/ElementsProject/lightning.git cd lightning ./configure make
-
启动
c-lightning
,并连接bitcoind
c-lightning
启动后会连接bitcoind
的RPC端口,默认是18332
。lightningd/lightningd --testnet --bitcoin-datadir=/mnt/f/temp/btctestnet --log-level=debug
这里没有用daemon
格式,便于我们观察窗口中打印的内容。
-
获取该
c-lightning
节点的信息
新开一个ubuntu
窗口,如果前面步骤没有出错,那么可以用下面这个命令获取该节点的一些信息:sky@willw:~/lightning$ cli/lightning-cli getinfo { "id": "03707f3ba87336a4571750f7d1f17d7261843ccf1310c122afbf70c01f0e22fe89", "alias": "VIOLENTGLEE", "color": "03707f", "num_peers": 3, "num_pending_channels": 0, "num_active_channels": 2, "num_inactive_channels": 2, "address": [ ], "binding": [ { "type": "ipv6", "address": "::", "port": 9735 }, { "type": "ipv4", "address": "0.0.0.0", "port": 9735 } ], "version": "v0.6.3rc1", "blockheight": 1452359, "network": "testnet", "msatoshi_fees_collected": 0 }
注意这里的id
是lightning node
的id
,连接节点时会用到。还有这里的binding
,表示绑定ip和端口,默认端口为9735
,支持IPv4
和IPv6
。
-
获取第一个比特币地址
在每个lightning
节点上有一个wallet
,这个wallet
会自我管理多个比特币地址,我们先获取第一个。sky@willw:~/lightning$ cli/lightning-cli newaddr { "address": "tb1qz7csjw3c97cgcxnq583mnqwrr4mrztk6cq56mq" }
-
向这个地址转账一定的比特币
因为是testnet
,因此可以在这个网站获取一定的测试币。
获取成功以后等待交易确认,然后就可以用listfunds
命令看到本节点的测试币了。sky@willw:~/lightning$ cli/lightning-cli listfunds { "outputs": [ { "txid": "986e8ee5bfcd7798f080edafff5cb91c69be3b7417518dfb90055d0004d5f8e6", "output": 1, "value": 19344078, "address": "tb1qz7csjw3c97cgcxnq583mnqwrr4mrztk6cq56mq", "status": "confirmed" } ], "channels": [ ] }
这个命令可以得到本节点上所有地址的比特币,这些比特币可能分散在不同地址上,开始时候只有我们刚才创建的地址。value
是比特币数量,单位为聪(satoshis
)。
好了,闪电网络的第一个节点就建好了。