桌面钱包Eclair是闪电网络最早的具有图形界面的桌面钱包。它运行独立的闪电网络节点,直接连入闪电网络。
Eclair需要和Bitcoin Core全节点同时运行,调用Bitcoin Core的 RPC 接口,使用Bitcoin Core钱包中的 BTC 创建支付通道。
操作方法
- 运行Bitcoin Core全节点
设置Bitcoin Core的配置文件bitcoin.conf
:
testnet=1 # 运行在testnet
server=1 # 接受 JSON-RPC 命令
txindex=1
rpcuser=yourusername # JSON-RPC连接的用户名
rpcpassword=yourpassword # JSON-RPC连接的密码
zmqpubrawblock=tcp://127.0.0.1:29000 # 在本地的29000端口公开区块信息
zmqpubrawtx=tcp://127.0.0.1:29000 # 在本地的29000端口公开交易信息
addresstype=p2sh-segwit
deprecatedrpc=signrawtransaction # eclair需要用到signrawtransaction这个命令
- 下载Eclair,修改配置文件
Windows 环境安装最方便,直接下载exe文件安装就行。
Mac/Linux环境下,需要Java运行环境(JRE)。而且特地需要JRE1.8,我试了最新版的JRE1.11,不行。
设置配置文件~/.eclair/eclair.conf
为:
eclair.chain=testnet
eclair.bitcoind.rpcuser=yourusername
eclair.bitcoind.rpcpassword=yourpassword
可以看到:
-
bitcoin.conf
的testnet=1 -
eclair.conf
的eclair.chain=testnet
这表示bitcoin core运行在testnet,因为testnet的全节点只需要20多 GB,同步更快,而且可以免费获得的testnet的 BTC用于测试,不用担心丢币,方便熟悉操作流程。
如果想改用mainnet,将这两个参数改为:
-
bitcoin.conf
的testnet=0 -
eclair.conf
的eclair.chain=mainnet
- 运行 Eclair
双击文件,或者运行命令:
java -jar eclair-node-gui-<version>-<commit_id>.jar
- 创建支付通道
Channel->Open Channel输入目标节点的URI,锁入通道中的 BTC 金额。
可以在节点浏览器找一个比较大的节点连接,主网的节点可以在这里找到:
测试网的节点可以在这里找到:
- 支付
以像素画板游戏为例,复制支付界面的payment request:
在Eclair打开支付界面,Channel->Send Payment,粘贴进来。
点击 send,弹出支付成功的提示,交易被展示在 Activity 栏。
计划
虽然把闪电网络手机、桌面钱包的操作学会了,但还有很多不清楚的地方,后面打算把这些问题搞清楚。
- 闪电网络支付时发生了什么?
- 为什么要和Bitcoin全节点一起运行,不能是Bitcion的轻钱包吗?
- 交易时为什么需要Payment Channel双方都在线?
- 交易为什么要先发起Payment Request?
- 节点浏览器是怎么统计到在线的闪电网络节点的?
- 交易是如何在网络内传播的?
- 闪电网络节点需要执行那些任务?
- 闪电网络手机钱包的设计难点在哪?