您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“Linux下怎么搭建比特幣閃電網絡節點”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Linux下怎么搭建比特幣閃電網絡節點”這篇文章吧。
Blockstream 用C語言實現的 Lightning,Lightning Labs 個用 Golang 實現的 Lightning Network Daemon (LND),ACINQ 用 Scala 實現的 Eclair。
截止目前(數據來源:
):節點數: 6838
通道數: 30823
網絡容量: 732.44 BTC
Linxu 服務器配置:
AWS Ubuntu 18.04
400G SSD
硬盤建議400G以上,因為目前比特幣主網數據已經200G+了,并且區塊數據還在不斷增加。
進入下載目錄
cd /work/bitcoin/
下載安裝包
wget https://bitcoincore.org/bin/bitcoin-core-0.17.1/bitcoin-0.17.1-x86_64-linux-gnu.tar.gz
解壓安裝包
tar zxf bitcoin-0.17.1-x86_64-linux-gnu.tar.gz
創建軟連接
ln -fs /work/bitcoin/bitcoin-0.17.1/bin/bitcoind /usr/local/bin/bitcoind ln -fs /work/bitcoin/bitcoin-0.17.1/bin/bitcoin-cli /usr/local/bin/bitcoin-cli
創建比特幣的數據存儲目錄
mkdir /work/bitcoin/datadir
比特幣配置存儲目錄默認就是 ~/.bitcoin 這里我們手動創建
mkdir ~/.bitcoin
創建比特幣的配置文件
vi ~/.bitcoin/bitcoin.conf # ~/.bitcoin/bitcoin.conf # 配置我們剛剛創建的數據存儲目錄 datadir=/work/bitcoin/datadir # 設置數據庫緩存大小 dbcache=10240 # 交易索引 txindex=1就代表全節點 txindex=1 # rpc訪問的user rpcuser=user # rpc訪問的password rpcpassword=password # 后臺啟動 daemon=1 server=1 rest=1 # 閃電網絡需要下面兩行配置的支持 # 允許在本機端口28332上廣播原始區塊信息 zmqpubrawblock=tcp://127.0.0.1:28332 # 允許在本機端口28333上廣播原始交易信息 zmqpubrawtx=tcp://127.0.0.1:28333
創建 service 文件
sudo touch /etc/systemd/system/bitcoind.service sudo chmod 664 /etc/systemd/system/bitcoind.service sudo vi /etc/systemd/system/bitcoind.service
文件中添加如下內容
[Unit] Description=Bitcoin deamon service After=network.target [Service] User=root Group=root Type=forking PIDFile=/root/.bitcoin/bitcoind.pid ExecStart=/disk2/bitcoin/bitcoin-0.17.1/bin/bitcoind -daemon -conf=/root/.bitcoin/bitcoin.conf -pid=/root/.bitcoin/bitcoind.pid Restart=on-failure KillMode=process Restart=always TimeoutSec=120 RestartSec=30 [Install] WantedBy=multi-user.target
保存后退出
啟動配置文件
sudo systemctl enable bitcoind.service sudo service bitcoind start
查看 bitcoind 是否啟動成功
systemctl status bitcoind.service
顯示結果如下代表 bitcoind 啟動成功( Ctrl-C 退出)
● bitcoind.service - Bitcoin deamon service Loaded: loaded (/etc/systemd/system/bitcoind.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2019-02-21 11:05:01 UTC; 3 weeks 3 days ago Main PID: 2542 (bitcoind)
這時可以使用下面的命令查看 bitcoin 節點的監控日志( Ctrl-C 退出)
tail -f /work/bitcoin/datadir/debug.log -n 200
如果一切順利這個時候就可以使用比特幣的 CLI 命令了
bitcoin-cli getblockchaininfo { "chain": "main", "blocks": 567623, "headers": 567623, "bestblockhash": "000000000000000000235ebe51a7ac77ccac3edacc69ec6f9a6358ddd169d3af", "difficulty": 6068891541676.553, "mediantime": 1552901770, "verificationprogress": 0.9999975005433924, "initialblockdownload": false, "chainwork": "000000000000000000000000000000000000000005794deb1981367c12085090", "size_on_disk": 237720626781, "pruned": false ... }
至此比特幣節點部分搭建完畢,剩下的就是漫長的等待節點數據同步了,我的大概同步了一天。
注意:
需要停止
bitcoind
程序的時候一定要正確停止,千萬不能直接殺進程,不然下次啟動的時候有可能需要很長時間來掃描數據庫,可以使用下面的命令來停止
bitcoind
服務
sudo service bitcoind stop
bitcoind 才啟動的時候可能會提示 verifying blocks, 這個是正常的,等一會就好。
進入用來存放閃電網絡的數據 lnd 目錄
cd /work/lnd
下載 lnd 編譯好的程序
wget https://github.com/lightningnetwork/lnd/releases/download/v0.5.2-beta/lnd-linux-amd64-v0.5.2-beta.tar.gz
解壓下載的文件
tar -xvf lnd-linux-amd64-v0.5.2-beta.tar.gz
解壓文件結構很簡單,里面只有兩個可運行的程序 lnd 、lncli
這里我們創建一個軟連接方便以后使用 lncli 命令
ln -fs /work/lnd/lnd-linux-amd64-v0.5.2-beta/lncli /usr/local/bin/lncli
接下來我們創建閃電網絡的配置文件,默認的目錄在 /root/.lnd,我們創建 lnd.conf 文件并填入下面的配置內容
# LND Mainnet: lnd configuration # /root/.lnd/lnd.conf [Application Options] # 閃電網絡的數據存儲目錄 如果不指定這個的話 默認在 /root/.lnd 路徑下 datadir=/work/lnd/datadir/data # 日志輸出目錄 logdir=/work/lnd/datadir/logs adminmacaroonpath=/work/lnd/datadir/data/chain/bitcoin/mainnet/admin.macaroon debuglevel=info debughtlc=false maxpendingchannels=20 # 別名 自己節點對外展示的名字 展示在1ml上 alias=xxx's LND color=#68F442 # rpc監聽的地址和端口 默認10009 rpclisten=localhost:10009 # 對外暴露的本機的外網ip 其他人可以通過這個ip地址連接我們的節點 externalip=xx.xx.xx.xx # 這兩個用于其它地方服務器通過rpc訪問節點 方便遠程調試 #tlsextraip=xx.xx.xx.xx #tlsextradomain=xxx.com [Bitcoin] bitcoin.active=1 # enable either testnet or mainnet #bitcoin.testnet=1 # 指定bitcoin主網運行 bitcoin.mainnet=1 bitcoin.node=bitcoind #自動駕駛模式 開啟之后可以自動幫我們連接節點 打開channel [autopilot] autopilot.active=1 autopilot.maxchannels=5 autopilot.allocation=0.1
更多的配置可以在這里
lnd : 閃電網絡后臺進程的守護程序,和比特幣的 bitcoind 類似
lncli:閃電網絡的 CLI 程序,用來通過命令行操作閃電網絡,和比特幣的 bitcoin-cli 類似
接下來我們創建閃電網絡的service
sudo touch /etc/systemd/system/lnd.service sudo chmod 664 /etc/systemd/system/lnd.service sudo vi /etc/systemd/system/lnd.service
配置如下
[Unit] Description=LND Lightning Daemon After=network.target [Service] User=root Group=root Type=simple PIDFile=/root/.lnd/lnd.pid ExecStart=/work/lnd/lnd-linux-amd64-v0.5.2-beta/lnd --configfile=~/.lnd/lnd.conf restart=on-failure KillMode=process TimeoutSec=180 RestartSec=60 [Install] WantedBy=multi-user.target
配置完成后就可以通過下面的命令來啟動 lnd
sudo systemctl enable lnd.service sudo service lnd start
之后可以通過這個命令來查看 lnd 程序有沒有啟動成功
ps -ef | grep lnd
能看到我們剛才的配置的話,lnd 就算啟動成功了。
這里我們可以等我們的比特幣區塊數據同步完成之后進行,因為后面的操作部分涉及上鏈。
我們先測試一下 CLI 是否已經完全配置好了, 正常的返回應該像下面這樣
root@test:~# lncli getinfo { "identity_pubkey": "0274a542b693385f9e38d7acf4017ed31748d00693ff219c54e1b337495xxxxxx", "alias": "xxx's LND, "num_pending_channels": 0, "num_active_channels": 21, "num_peers": 29, "block_height": 568269, "block_hash": "0000000000000000001082cd0456f576eb99ae71e289501274d139a0334ec413", "synced_to_chain": true, "testnet": false, "chains": [ "bitcoin" ], ... "best_header_timestamp": "1553248518", "version": "0.5.2-beta commit=v0.5.2-beta", "num_inactive_channels": 6 }
接下來就可以創建一個錢包了啦
root@test:~# lncli create Input wallet password: Confirm wallet password: Do you have an existing cipher seed mnemonic you want to use? (Enter y/n): n Your cipher seed can optionally be encrypted. Input your passphrase 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 xxxx ... 24 xxxx ---------------END LND CIPHER SEED----------------- !!!YOU MUST WRITE DOWN THIS SEED TO BE ABLE TO RESTORE THE WALLET!!! lnd successfully initialized!
基本流程就是輸入需要設置的錢包密碼,確認錢包密碼,輸入n選擇創建一個新的錢包,提示是否需要對 seed 加密,我選擇直接回車跳過,最后就是最重要的24個助記詞了,自行想辦法保存好,畢竟恢復錢包就靠它了。
錢包好了之后就該生成一個比特幣地址了,命令如下
root@test:~# lncli newaddress np2wkh { "address": "bitcoin address" }
然后就是找個有 btc 的錢包往這個地址轉點幣就好了(不要轉太少,100w Sats以上吧),剩下的就是等待區塊確認之后到賬, 可以使用下面的命令查看錢包余額是否到賬
root@test:~# lncli walletbalance { "total_balance": "2463978", "confirmed_balance": "2463978", "unconfirmed_balance": "0" }
在確認錢包到賬之后就可以連接其它的節點了。
我們去
上面找一個大一點的節點連它,我發現 這個節點連接的 Channel 最多,我們就連它了root@test:~# lncli connect 0331f80652fb840239df8dc99205792bba2e559a05469915804c08420230e23c7c@74.108.13.152:9735 { }
連上之后我們需要和這個節點建立一個 channel
root@test:~# lncli openchannel 0331f80652fb840239df8dc99205792bba2e559a05469915804c08420230e23c7c 397741 { "funding_txid": "4c02e76b315008db58686a433f20b264850cef36e33f18ea51f9afb946a21802" }
這里我們打開了一個容量為 397741 sats 的 channel , 返回一個 funding_txid 就代表成功了,剩下的就是等鏈上確認了,我們可以查看這個狀態
root@test:~# lncli pendingchannels { "total_limbo_balance": "0", "pending_open_channels": [ { "channel": { "remote_node_pub": "0331f80652fb840239df8dc99205792bba2e559a05469915804c08420230e23c7c", "channel_point": "4c02e76b315008db58686a433f20b264850cef36e33f18ea51f9afb946a21802:0", "capacity": "397741", "local_balance": "393282", "remote_balance": "0" }, "confirmation_height": 0, "commit_fee": "4459", "commit_weight": "600", "fee_per_kw": "6159" } ], "pending_closing_channels": [ ], "pending_force_closing_channels": [ ], "waiting_close_channels": [ ] }
接下來我們可以發送和接收 sats了,我們先接收一筆 sats
生成一張 15 sats 的 invoice
root@test:~# lncli addinvoice --amt 15 { "r_hash": "b94768e4e2e89a78ea9fcfdba9c7429236cc4ad3f97fb9fd617b4ecb6876c129", "pay_req": "lnbc150n1pwff3wcpp5h9rk3e8zazd8365leld6n36zjgmvcjknl9lmnltp0d8vk6rkcy5sdqqcqzys7mga69gjmqqumssmzw649868udsvt8l5q6y069fwkqp55z89hpj4cucrrge9yxmak6kw09j837nc7q3p98gjajvsld3zh3svyufu2qcpldu7fa", "add_index": 549 }
pay_req 就是我們生成的 invoice了,我們可以使用其它的閃電網絡錢包向這個 invoice 付款啦,可以通過下面的命令查看付款狀態
root@test:~# lncli listinvoices { "invoices": [ { "memo": "xxxx", ... "value": "15", "settled": true, "creation_date": "1553259149", "settle_date": "0", "payment_request": "lnbc150n1pwff3wcpp5h9rk3e8zazd8365leld6n36zjgmvcjknl9lmnltp0d8vk6rkcy5sdqqcqzys7mga69gjmqqumssmzw649868udsvt8l5q6y069fwkqp55z89hpj4cucrrge9yxmak6kw09j837nc7q3p98gjajvsld3zh3svyufu2qcpldu7fa", "description_hash": null, "expiry": "3600", ... "amt_paid_sat": "0", "amt_paid_msat": "0" } ] }
settled = true 標志著這筆交易已經付款成功,invoice 才生成的時候默認的狀態是 settled = false 。
我們去
找了一篇文章生成一張金額為 150 sats 收款的 invoice, 生成的 invoice 如下lnbc1500n1pwfmv52pp57whmew9gear9faxtwcq9k8kmp0kl82l96kck5l29vfpmlsts450qdp62fjkzep6ypxhjgrhd9nx2grhv9h8gueqvysyx6rfde3ks6tvd3sjut3wp5cqzysxqr23syfc86vht588l6s0g3y7xgd9wcf6jfc7eghcyxsrzy49pvsw3e73rfsgjctc4cd2vevef6eutlv67dyzjc70n4xkjm5zykvrld5chktspelxt0c
我們可以通過命令解析這張 invoice
root@test:~# lncli decodepayreq lnbc1500n1pwfmv52pp57whmew9gear9faxtwcq9k8kmp0kl82l96kck5l29vfpmlsts450qdp62fjkzep6ypxhjgrhd9nx2grhv9h8gueqvysyx6rfde3ks6tvd3sjut3wp5cqzysxqr23syfc86vht588l6s0g3y7xgd9wcf6jfc7eghcyxsrzy49pvsw3e73rfsgjctc4cd2vevef6eutlv67dyzjc70n4xkjm5zykvrld5chktspelxt0c { "destination": "03d06758583bb5154774a6eb221b1276c9e82d65bbaceca806d90e20c108f4b1c7", "payment_hash": "f3afbcb8a8cf4654f4cb76005b1edb0bedf3abe5d5b16a7d456243bfc170ad1e", "num_satoshis": "150", "timestamp": "1553838730", "expiry": "10800", "description": "Read: My wife wants a Chinchilla...\r", "description_hash": "", "fallback_addr": "", "cltv_expiry": "144", "route_hints": [ ] }
確認金額是 150 sats 后就可以付款了
root@test:~# lncli payinvoice lnbc1500n1pwfmv52pp57whmew9gear9faxtwcq9k8kmp0kl82l96kck5l29vfpmlsts450qdp62fjkzep6ypxhjgrhd9nx2grhv9h8gueqvysyx6rfde3ks6tvd3sjut3wp5cqzysxqr23syfc86vht588l6s0g3y7xgd9wcf6jfc7eghcyxsrzy49pvsw3e73rfsgjctc4cd2vevef6eutlv67dyzjc70n4xkjm5zykvrld5chktspelxt0c Description: Read: My wife wants a Chinchilla... Amount (in satoshis): 150 Destination: 03d06758583bb5154774a6eb221b1276c9e82d65bbaceca806d90e20c108f4b1c7 Confirm payment (yes/no): yes { "payment_error": "", "payment_preimage": "6bafcc544e72a63073da0fb7026e8d9962b1f85b2b357c8ccdbf720cba201dfa", "payment_route": { "total_time_lock": 569861, "total_amt": 150, "hops": [ { "chan_id": 620276290726395904, "chan_capacity": 150000, "amt_to_forward": 150, "expiry": 569717, "amt_to_forward_msat": 150001, "pub_key": "0395033b252c6f40e3756984162d68174e2bd8060a129c0d3462a9370471c6d28f" }, { "chan_id": 622138863466053632, "chan_capacity": 40000, "amt_to_forward": 150, "expiry": 569573, "amt_to_forward_msat": 150001, "pub_key": "037eb17d0fee2d20bacea3d78940b40f4ac61a5a7040a23b6e8280c80d7ebfb420" }, { "chan_id": 611030497408253952, "chan_capacity": 1000000, "amt_to_forward": 150, "expiry": 569429, "amt_to_forward_msat": 150000, "fee_msat": 1, "pub_key": "02e2670a2c2661a9eea13b7cfdcdd7f552f591b9ee60e5678b7abe77b7f9516f96" }, { "chan_id": 613156952970100736, "chan_capacity": 1000000, "amt_to_forward": 150, "expiry": 569419, "amt_to_forward_msat": 150000, "pub_key": "020e56a13babec99abdc2c4afbe34e1e44230d79b234c059fd4ff1e367765fdb1b" }, { "chan_id": 624006933702770688, "chan_capacity": 5000000, "amt_to_forward": 150, "expiry": 569419, "amt_to_forward_msat": 150000, "pub_key": "03d06758583bb5154774a6eb221b1276c9e82d65bbaceca806d90e20c108f4b1c7" } ], "total_fees_msat": 1, "total_amt_msat": 150001 } }
付款成功
可以通過 lncli -h
以上是“Linux下怎么搭建比特幣閃電網絡節點”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。