基本步骤:
- 1.上传两个运行文件到目录下
/usr/local/bin/,这样就可以直接在终端使用命令了,就是他们的文件名 - 2.先使用命令+参数运行一次,这样会生成文件夹,并等待一段时间等待同步,并同时另外打开一个终端使用lncli创建钱包(如果是测试网,就要加测试网命令)。
- 3.创建好钱包后结束lnd守护进程,进入/.lnd/文件夹,创建lnd.conf文件,指定解密钱包和其他配置文件
- 4.继续运行lnd,这次直接不加参数,它会自动读取配置文件,这次让它运行久一点,直到同步完成。
- 5.为钱包创建一个收款地址,如果是测试网则添加测试网参数
- 6.如果是测试网,可以尝试进入
https://faucet.lightning.community/水龙头打开通道了,在页面顶部找到一个哈希+@+IP地址的,使用lncli --network=testnet connect命令建立通道,等待三个区块确认就可以
windows中微子模式
将 lncli和lnd运行文件放入c盘lnd目录,然后在该目录下创建启动参数bat
lnd.exe --bitcoin.active --bitcoin.testnet --debuglevel=debug --bitcoin.node=neutrino --neutrino.addpeer=faucet.lightning.community
运行后,在cmd中进行管理,使用cd C:\lnd\进入文件目录,就可以使用lncli 命令进行管理了
linux下运行LND
运行命令:
lnd --bitcoin.active --bitcoin.testnet --debuglevel=debug --bitcoin.node=neutrino --neutrino.addpeer=faucet.lightning.community
可选创建lnd.conf文件:
文件路径:~/.lnd/lnd.conf
如果是root用户,则应该在/root/.lnd/目录下,如果是ubuntu,则因该在/home/ubuntu/.lnd/
[Application Options]
debuglevel=warn //日志级别
maxpendingchannels=10
alias=MyAwesomeNode//为我的闪电节点设置别名
maxlogfilesize=10 //日志允许的最大MB容量
acceptortimeout=15s //请求节点允许的最大超时时间
tlscertpath=~/.lnd/tls.cert //API的证书路径
tlskeypath=~/.lnd/tls.key //私钥路径
no-macaroons=true //取消马卡龙认证
tlsextradomain=3kj.online //指定域名访问,二选一,如果选择了此项需指定externalip公网IP
tlsextraip=0.0.0.0 //指定IP访问,二选一
externalip=129.150.36.255
adminmacaroonpath=~/.lnd/data/chain/bitcoin/${network}/admin.macaroon //指定马卡龙路径
listen=:9735 //指定监听接口
listen=0.0.0.0:9735 //可以指定多个监听接口
payments-expiration-grace-period=30s //付款超时宽限期
rpclisten=localhost:10009 //指定RPC监听端口IPV4
rpclisten=[::1]:10010 //指定RPC监听端口IPV6
restlisten=localhost:443 //同上监听RESTful API端口
norest=true //禁用RESTful API
no-rest-tls=true //禁用RESTful ssl访问
wallet-unlock-password-file=/tmp/example.password //钱包自动解锁文件
db.bolt.auto-compact=true //启用数据库压缩
protocol.option-scid-alias=true //别人可以查看我的名称
protocol.zero-conf=true //开启广播后立即确认交易,而不等待区块确认
bitcoin.node=neutrino //中微子节点,可以全部添加
neutrino.addpeer=mainnet2-btcd.zaphq.io
neutrino.addpeer=mainnet1-btcd.zaphq.io
neutrino.addpeer=btcd-mainnet.lightning.computer
neutrino.addpeer=mainnet1-btcd.zaphq.io
neutrino.addpeer=mainnet2-btcd.zaphq.io
neutrino.addpeer=mainnet3-btcd.zaphq.io
neutrino.addpeer=mainnet4-btcd.zaphq.io
neutrino.addpeer=faucet.lightning.community
lnd.conf详细解说地址:https://github.com/lightningnetwork/lnd/blob/master/sample-lnd.conf
lnd.conf示范
bitcoin.active=true
bitcoin.testnet=true
tlsextradomain=3kj.online
externalip=129.150.36.255
debuglevel=info
maxlogfilesize=10
bitcoin.node=neutrino
listen=0.0.0.0:9735
rpclisten=localhost:10009
restlisten=0.0.0.0:8080
db.bolt.auto-compact=true
neutrino.addpeer=faucet.lightning.community
wallet-unlock-password-file=/home/lnd/password
wallet-unlock-allow-create=true
alias=btcmaiNode
注意
每次启动lnd都需要等待一段时间才可使用lncli命令
lncli命令
钱包管理
钱包在lnd被保存在数据库中,linux路径是:
~/.lnd/data/chain/bitcoin/mainnet/wallet.db
其中包含了地址和私钥
lncli create 创建钱包命令,输入一个启动密码,然后回答问题来创建钱包
lncli unlock 解锁钱包,输入密码即可
更改钱包密码:lncli changepassword //只能在钱包锁定时进行
查看交易记录:lncli listinvoices
生成发票:lncli addinvoice <amount_in_satoshis>
查看请求状态:lncli listpayments
创建钱包地址:lncli newaddress p2tr
查询钱包余额:lncli walletbalance
通道大小:lncli channelbalance
创建一个地址:lncli newaddress p2tr
查看节点信息:lncli getinfo
查看连接节点:lncli listpeers
测试网和水龙头建立通道:lncli connect 0270685ca81a8e4d4d01beec5781f4cc924684072ae52c507f8ebe9daf0caaab7b@159.203.125.125
查看未确认通道: lncli pendingchannels
查看已确认通道:lncli listchannels
查看已关闭通道信息:lncli closedchannels
获取闪电网络整体信息:lncli getnetworkinfo
查看对方节点信息:lncli getnodeinfo <对方节点ID>
交易管理
列出未验证btc链交易:lncli listunspent #找到其中的outpoint
查看打开通道的交易:lncli pendingchannels 找到其中的channel_point
增加交易手续费:lncli wallet bumpfee --sat_per_byte 190 02ee658b91420058ff48b8a9fff8fd167e935372b4973427ec27c9a9f69c2174:1
lncli命令
查看状态:lncli getinfo
停止lnd:lncli stop
中微子模式选项
--neutrino.addpeer=节点地址
--neutrino.connect=连接时只连接到指定的节点
--neutrino.maxpeers=出入站节点连接最大数
--neutrino.banduration=封禁有效的时间单位为{s,m,h}。至少1秒
--neutrino.banthreshold=封禁前允许的最高禁令分数
--neutrino.useragentname=自己的昵称
--neutrino.useragentversion=昵称版本
//最佳费率
feeurl=https://nodes.lightning.computer/fees/v1/btc-fee-estimates.json
迁移时需要备份的文件
备份整个lnd文件夹
钱包种子短语
Macaroons:admin.macaroon、readonly.macaroon、invoice.macaroon
TLS 证书
Channel 数据
配置文件lnd.conf
graph/mainnet/channel.db
地址类型
lncli addinvoice --amt=<要收款的金额> --expiry=<发票过期时间秒数> 发票
p2tr 新版隔离见证,长期收款地址,推荐,费用最低,lnd代码TAPROOT_PUBKEY
p2wkh 本机隔离见证,更现代,推荐,费用较低,lnd代码WITNESS_PUBKEY_HASH
np2wkh 旧版隔离见证,对旧版更兼容,不推荐,除非是不支持上面的地址
p2wsh 多重签名,隔离见证,这个是建立通道的时候用到,没得选
后台运行
运行 nohup lnd &
查看ps aux | grep lnd
默认占用端口
127.0.0.1:8080 RESTful 端口,内部接口
127.0.0.1:10009 gRPC 端口,LND程序之间通信的主要端口,内部接口
:::9735 Lightning Network P2P 端口,用于其他节点建立连接,外部接口
钱包地址,节点,通道概念
闪电网络并没有专属的收款地址,创建的钱包地址也是btc链的地址。
节点就是服务器运行的服务,钱包地址只有在自己节点要和其他节点建立通道的时候才需要用到,需要用钱包地址转入一笔资金。
闪电网络的所有交易都在通道之间进行,只有在通道关闭后才需要将btc取出到btc链的地址
当开启一个通道,实际就是两个节点之间创建了一个多签名的钱包地址,需要双方的私钥签名就能完成记账,假如当我要存入一笔资金的时候,我会用我节点进行签名生成这笔交易,然后经由对方签名确认,这样来区分是我转入的资金。
支付方式有多种:
单跳支付: 单跳支付是指直接从源节点到目标节点的支付
多跳支付: 多跳支付是通过多个中继节点转发支付的方式。
原子多路径支付:AMP(Atomic Multi-Path Payments)它允许将支付拆分成多个小额支付,并通过不同的路径进行传输。这样可以提高支付的成功率和网络的容错性。