闪电网络部署指南

lance 2022-05-14 AM 268℃ 0条

LND


闪电网络部署

闪电网络是构建在比特币网络上的第二层支付协议,用来解决比特币网络堵塞问题。其理念是,在区块链之外开通一条“绿色通道”,将大量高频的、小额的交易在区块链外进行,从而实现快速支付。


闪电网络优点

即时支付

闪电网络交易不需等待网络确认,因而交易可于几秒内迅速完成。

低成本

由于交易结算于链下进行,因而闪电网络转账手续费极低。

小额支付

手续费系按付款额比例来计算,因而对于小额交易不会产生不合理的高昂手续费。

可扩展性

闪电网络让比特币网络处理数百万笔交易变得可能。


环境要求

部署测试环境,磁盘空间要求不高,内存越高越好
系统:Ubuntu Server 21.10
配置:2H4G
磁盘:100GB 固态硬盘


开始部署

为方便操作,已经切换为 root 用户身份

部署 Zeromq

cd /usr/local/src/
wget https://github.com/zeromq/libzmq/releases/download/v4.3.4/zeromq-4.3.4.tar.gz
tar xvf zeromq-4.3.4.tar.gz
cd zeromq-4.3.4/ && ./configure && make && make install

部署 bitcoin 测试节点

wget https://bitcoincore.org/bin/bitcoin-core-23.0/bitcoin-23.0-x86_64-linux-gnu.tar.gz
tar xvf bitcoin-23.0-x86_64-linux-gnu.tar.gz
mv bitcoin-23.0 /usr/local/

vim /etc/profile
export PATH=$PATH:/usr/local/bitcoin-23.0/bin

source /etc/profile
mkdir -p /data/btc/data

vim /data/btc/bitcoin.conf
datadir=/data/btc/data
testnet=1
server=1
timeout=6000
datacache=10240
rpcuser=testnet
rpcpassword=ITsupport
zmqpubrawblock=tcp://127.0.0.1:28332
zmqpubrawtx=tcp://127.0.0.1:28333

nohup bitcoind -conf=/data/btc/bitcoin.conf >> /data/btc/output.log 2>&1 &

此时 BTC 测试节点就开始同步了,等待同步完成再继续下一步操作。


部署 Lnd (Lightning Network Daemon)

# 安装 go
wget https://dl.google.com/go/go1.18.linux-amd64.tar.gz
sha256sum go1.18.linux-amd64.tar.gz | awk -F " " '{ print $1 }'
tar -C /usr/local -xzf go1.18.linux-amd64.tar.gz

vim /etc/profile
export GO111MODULE=on
export GOPROXY=https://goproxy.cn
export PATH=$PATH:/usr/local/bitcoin-23.0/bin:/usr/local/go/bin

source /etc/profile
# 安装 lnd
cd /usr/local/src/
git clone https://github.com/lightningnetwork/lnd
cd lnd/
make install tags="signrpc walletrpc routerrpc invoicesrpc chainrpc"

mkdir -p /data/lnd
vim /data/lnd/lnd.conf
# Lnd 数据数据目录及日志目录
datadir=/data/lnd/data
logdir=/data/lnd/logs

# 修改默认端口为 9736,可不改,根据实际需求
listen=0.0.0.0:9736

# bitcoin 相关配置
bitcoin.active=true
bitcoin.testnet=true
bitcoin.node=bitcoind

bitcoind.rpcuser=testnet
bitcoind.rpcpass=ITsupport
bitcoind.zmqpubrawblock=tcp://127.0.0.1:28332
bitcoind.zmqpubrawtx=tcp://127.0.0.1:28333

# 外网 IP
externalip=183.2.xxx.xxx

vim /etc/profile
export PATH=$PATH:/usr/local/go/bin:/usr/local/bitcoin-23.0/bin:/root/go/bin

source /etc/profile
# 启动 lnd
nohup lnd -C /data/lnd/lnd.conf >> /data/lnd/output.log 2>&1 &

# 初始化配置
tail -f /data/lnd/output.log
2022-05-12 06:03:23.563 [INF] LTND: Waiting for wallet encryption password. Use `lncli create` to create a wallet, `lncli unlock` to unlock an existing wallet, or `lncli changepassword` to change the password of an existing wallet and unlock it.

# 按照提示创建 lnd 钱包
lncli create
Input wallet password: 
Confirm password: 

Do you have an existing cipher seed mnemonic or extended master root key you want to use?
Enter 'y' to use an existing cipher seed mnemonic, 'x' to use an extended master root key 
or 'n' to create a new seed (Enter y/x/n): n

Your cipher seed can optionally be encrypted.
Input your passphrase if you wish to encrypt it (or press enter to proceed without a cipher seed passphrase): 

Generating fresh cipher seed...

!!!YOU MUST WRITE DOWN THIS SEED TO BE ABLE TO RESTORE THE WALLET!!!

---------------BEGIN LND CIPHER SEED---------------
 1. abandon   2. XXX      3. element   4. business
 5. drip      6. outside   7. XXX    8. deer    
 9. XXX    10. extra    11. summer   12. faint   
13. auto     14. XXX  15. miss     16. emotion 
17. habit    18. barrel   19. XXX   20. angle   
21. bright   22. glare    23. sad      24. XXX 
---------------END LND CIPHER SEED-----------------

!!!YOU MUST WRITE DOWN THIS SEED TO BE ABLE TO RESTORE THE WALLET!!!

lnd successfully initialized!

ln -sf /data/lnd/data/chain/ /root/.lnd/data/

常用命令

# 停止 lnd
lncli --network testnet stop

# 生成钱包地址
lncli --network testnet newaddress np2wkh
{
    "address": "2MxBbzCHz*********68dQFNn"
}

# 查看 lnd 节点相关信息
lncli --network testnet getinfo

# 连接节点
lncli --network testnet connect {Public Key}@{IP}

# 打开通道
lncli --network testnet openchannel --node_key={Public Key} --local_amt=100000

# 确认通道信息
lncli --network testnet pendingchannels

部署 Tor

Tor 本身不是科学上网,所以部署 Tor 的前提是,得先部署好科学上网(此处不详述)。
Tor 可以使你的闪电网络节点匿名运行,提高安全性。

官网下载最新的 Tor 安装包:https://www.torproject.org/download/tor/
然后上传到服务器的 /usr/local/src 目录,再执行安装命令

cd /usr/local/src/ && tar xvf tor-0.4.7.7.tar.gz && cd tor-0.4.7.7/
apt-get install libevent-dev libssl-dev zlib1g-dev
./configure && make && make install

# 生成 HashedControlPassword
tor --hash-password ITsupport.0
May 12 07:18:41.619 [warn] You are running Tor as root. You don't need to, and you probably shouldn't.
16:1226B8802630808260**********1C0B8FF2C9267D

# 配置 Tor 配置文件
vim /usr/local/etc/tor/torrc
ControlPort 0.0.0.0:9051
SOCKSPort 0.0.0.0:9050
HashedControlPassword 16:1226B8802630808260**********1C0B8FF2C9267D
# 科学上网的地址
Socks5Proxy 10.18.193.105:1080
# 启用美国 Tor 节点,禁用中国 Tor 节点
ExitNodes {us}
ExcludeExitNodes {cn}

# 启动 Tor
# 进度条达到100%时,说明正常启动了 Tor
nohup tor >> /data/tor.logs.file 2>&1 &
tail -f /data/tor.logs.file

# 测试是否启动,可见 IP 已经变更
apt install torsocks
torify curl http://icanhazip.com/
199.249.230.147

# 因为 Ubuntu 源安装 torsocks 时会默认安装旧版本 tor,所以需要禁用旧版本的 tor
systemctl stop tor && systemctl disable tor

Lnd (Lightning Network Daemon) 接入 Tor 网络

# 停止 Lnd 节点
lncli --network testnet stop

# 修改配置文件
vim /data/lnd/lnd.conf
# 配置文件最后面添加 Tor 相关配置信息
tor.active=true
tor.socks=10.18.193.104:9050
tor.password=ITsupport.0
tor.v3=true
tor.control=10.18.193.104:9051
# 启用混合模式,即 Tor 网络、普通网络均可连接该闪电网络节点
tor.skip-proxy-for-clearnet-targets=1

# 启动 Lnd 节点
nohup lnd -C /data/lnd/lnd.conf >> /data/lnd/output.log 2>&1 &

tail -f /data/lnd/output.log
# 提示以下信息则说明当前闪电网络节点已经接入到 Tor 网络
Onion services are accessible via Tor! NOTE: Traffic to clearnet services is not routed via Tor.

至此,部署一个可用的并运行在 Tor 网络中的测试网闪电网络节点已经完成!
后续建立 Channal、支付、收款等操作,请自行参考官方文档!


参考资料

https://docs.lightning.engineering/lightning-network-tools/lnd/quick-tor-setup

https://hugongai.github.io/2020/02/10/tor%E4%BB%A3%E7%90%86%E6%90%AD%E5%BB%BA/

https://github.com/lightningnetwork/lnd/blob/master/docs/configuring_tor.md

https://github.com/lightningnetwork/lnd/blob/master/docs/INSTALL.md

非特殊说明,本博所有文章均为博主原创。

觉得文章不错,打赏一点吧,1分也是爱😀

WeChat Pay

微信打赏

Alipay

支付宝打赏

评论啦~