如何在 Linux 系統建立自己的閃電網絡節點和通道

比特幣 支付 技術 鏈聞研究院 2018-07-25

鏈聞 ChainNews:

本文介紹在 Linux 系統先後通過同步比特幣網絡數據、運行閃電網絡節點、發送比特幣到你的閃電網絡地址、建立通道、收款和支付等步驟,建立閃電網絡節點和通道的實施步驟。

作者 | P2 PBUCKS

如何在 Linux 系統建立自己的閃電網絡節點和通道

下面你需要準備一個硬盤儲存大於 200 G 的 VPS 環境和 Ubuntu 16.04 系統。推薦用 DigitalOcean 的虛擬主機,文中的配置是 320G 硬盤 /6 核 /16GRAM。費用為 80$/ 月

uname -a
Linux docker-s-6vcpu-16 gb-sgp1-01 4.4.0-109-generic #132-Ubuntu SMP Tue Jan 9 19:52:39 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

另外,你需要安裝 docker 環境,如果你用的 DigitalOcean,請在 One-click APP 中選擇 Docker 17.12。

第一步,同步比特幣網絡數據

構建 docker 鏡像

git clone https://github.com/dougvk/lightning-node.git
cd lightning-node
docker build . -t dougvk/bitcoind

運行比特幣節點

mkdir -p /scratch/bitcoin/mainnet/bitcoind

docker run --name bitcoind_mainnet -d -v /scratch/bitcoin/mainnet/bitcoind:/data -p 8333:8333 -p 9735:9735 dougvk/bitcoind:latest

docker logs bitcoind_mainnet --tail "10"

將下列內容寫到文件 /usr/local/bin/bitcoin-cli

!/usr/bin/env bash

docker run --rm --network container:bitcoind_mainnet -v /scratch/bitcoin/mainnet/bitcoind:/data dougvk/bitcoind:latest bitcoin-cli "$@"

查看比特幣節點運行情況

chmod +x /usr/local/bin/bitcoin-cli
bitcoin-cli getinfo

等待比特幣網絡同步賬本,我用的新加坡節點大概 9 個小時同步完成

第二步,運行閃電網絡節點

現在我們需要運行你的閃電網絡節點了。用 tmux 或打開一個窗口監視閃電網絡日誌情況

mkdir -p /scratch/bitcoin/mainnet/clightning

docker run --rm --name lightning --network container:bitcoind_mainnet -v /scratch/bitcoin/mainnet/bitcoind:/root/.bitcoin -v /scratch/bitcoin/mainnet/clightning:/root/.lightning --entrypoint /usr/bin/lightningd cdecker/lightningd:master --network=bitcoin --log-level=debug

將下列內容寫到文件 /usr/local/bin/lightning-cli 中

!/usr/bin/env bash

docker run --rm -v /scratch/bitcoin/mainnet/clightning:/root/.lightning --entrypoint /usr/bin/lightning-cli cdecker/lightningd:master "$@"

運行

chmod +x /usr/local/bin/lightning-cli

檢查閃電網絡狀況

第三步,發送比特幣到你的閃電網絡地址

現在你需要將一點比特幣發送到你的閃電網絡地址上,我發了 0.001 BTC 到閃電網絡地址。現在閃電網絡還處於起步狀態,很多地方需要改進,所以不要發送大量比特幣。

lightning-cli newaddr

等待確認後查看資金情況

lightning-cli listfunds
{ "outputs" :
[
{ "txid" : "690652a94e13ae09e6a32556ce0a7b70043b321cdfb4db87ee144ce494dfd76e", "output" : 1, "value" : 100000 } ] }

現在你需要把自己連接到閃電網絡中了,去 https://lnmainnet.gaben.win/ 找到一個節點,點擊找到詳情。

然後用 lightning-cli 命令連接這個閃電網絡節點

lightning-cli connect 02c119d2fd2e98a88f50d0d2ee4213255b7b8ec2be3a95f9aabd6afb09dd25b083 98.186.249.155:9735

{ "id" : "02c119d2fd2e98a88f50d0d2ee4213255b7b8ec2be3a95f9aabd6afb09dd25b083" }

查看閃電網絡節點連接情況,我已經連接了兩個節點

lightning-cli getpeers

{ "peers" :
[
{ "state" : "GOSSIPING", "peerid" : "02f6725f9c1c40333b67faea92fd211c183050f28df32cac3f9d69685fe9665432", "netaddr" :
[ "104.198.32.198:9735" ], "connected" : true, "owner" : "lightning_gossipd" },
{ "state" : "GOSSIPING", "peerid" : "02c119d2fd2e98a88f50d0d2ee4213255b7b8ec2be3a95f9aabd6afb09dd25b083", "netaddr" :
[ "98.186.249.155:9735" ], "connected" : true, "owner" : "lightning_gossipd" } ] }

第四步,建立通道

在資金到賬後,下面我們需要和某個已存在的閃電網絡節點建立通道了。我選擇了節點 02f6725f9c1c40333b67faea92fd211c183050f28df32cac3f9d69685fe9665432 來建立閃電通道,其中 2000 satoshi 是通道建立費用

lightning-cli fundchannel 02f6725f9c1c40333b67faea92fd211c183050f28df32cac3f9d69685fe9665432 2000

{ "tx" : "020000000001016ed7df94e44c14ee87dbb4df1c323b04707b0ace5625a3e609ae134ea95206690100000017160014db08f81ac41d0c47ebff7ce173ddaa45b22d1253ffffffff02d007000000000000220020f92834320b66494ec5fefbf0a9052c7b4549730af446d004b477cc24ec9afb0d4750010000000000160014781b3864b779a54cf464e277a8fd93c38e8ab048024730440220549dc897e5a582a4c72a0ab8e1695b6ddc7d413e87b532b75f801d335e0e1ccf02205d5fec4bd7193dfbf6a22587ce6877bbcf9440998aaa7cd3a858a4e232cd17c601210301077c8d2e9e97fcf8f2e9a4d60bdf2c266da3b66f2103e8444ec0a7c358d88800000000" }

第五步,收款和支付

收款

如果你想通過閃電網絡收款的話可以運行以下命令。

lightning-cli invoice

其中 label 和 description 是支付的標籤和說明,amount 是數量,單位為聰。

lightning-cli invoice 100 fist myfistLNpayment

{ "rhash" : "e762cc7be38cad612a30cc076992d3c1c897971868fffc4ca6b1e825f6e5841e", "expiry_time" : 1516615363, "bolt11" : "lnbc1n1pdxt29npp5ua3vc7lr3jkkz23 sesrknyknc8yf09ccdrllcn9xk85ztah9 ss0qdqcd4ukv6 tnw3xyuurp09kk2 mn5cqpg987a88kj4 t6wzthvqx6ky9zyys8ued6p5y7eh2k74u9z4nsqr4l8fh5e38 gpch0 syv6 tuq7u83486c9 hk3xs9pfuzx8r48evn757y0 spd9fvph" }

這樣我們就生成了 bolt11 地址,即上面那個 JSON 結構中的 lnbcXXXX

bolt11 地址中包含了支付的所有信息,我們可以解碼一下這個地址

lightning-cli decodepay lnbc1n1pdxt29npp5ua3vc7lr3jkkz23 sesrknyknc8yf09ccdrllcn9xk85ztah9 ss0qdqcd4ukv6 tnw3xyuurp09kk2 mn5cqpg987a88kj4 t6wzthvqx6ky9zyys8ued6p5y7eh2k74u9z4nsqr4l8fh5e38 gpch0 syv6 tuq7u83486c9 hk3xs9pfuzx8r48evn757y0 spd9fvph

{ "currency" : "bc", "timestamp" : 1516611763, "expiry" : 3600, "payee" : "03c3fa4e2b2c11ab9d4a078e13f0dfb091423e0f06d7d9cc1d9c9ba3b9a5ad5d50", "msatoshi" : 100, "description" : "myfistLNpayment", "payment_hash" : "e762cc7be38cad612a30cc076992d3c1c897971868fffc4ca6b1e825f6e5841e", "signature" : "3044022029fdd39ed2aaf4e12eec01b5621444240fccb741a13d9baadeaf0a2ace001d7e022074de9989d01c5df02334be03dc3c6a7d60b7b44d02853c118e3a9f2c9fa9e23e" }

上面收款的金額和描述就顯示了出來

把上面的 bolt11 支付地址發給對方就可以等待收款了

支付

在我們知道了對方的 bolt11 支付地址後,我們就可以用以下命令進行支付了

lightning-cli pay bolt11_addr

在拿到付款方的 bolt11 地址後,我們用上面的 lightning-cli decodepay bolt11 解碼出收款方的 payee hash 然後查看通道

lightning-cli getroute 03c3fa4e2b2c11ab9d4a078e13f0dfb091423e0f06d7d9cc1d9c9ba3b9a5ad5d50

如果通道存在的話就可以付款了

lightning-cli pay lnbc1n1pdxt29npp5ua3vc7lr3jkkz23 sesrknyknc8yf09ccdrllcn9xk85ztah9 ss0qdqcd4ukv6 tnw3xyuurp09kk2 mn5cqpg987a88kj4 t6wzthvqx6ky9zyys8ued6p5y7eh2k74u9z4nsqr4l8fh5e38 gpch0 syv6 tuq7u83486c9 hk3x9pfuzx8r48evn757y0 spd9fvph

{ "preimage" : "xd2005e012ff32b79f88fe976599c5dceeb99b111b81aa5087b815f2e4cdc59a" }

這樣我們就完成了收付款的流程

參考說明

本文主要參考了 https://medium.com/@dougvk/run-your-own-mainnet-lightning-node-2d2eab628a8bhttps://github.com/ElementsProject/lightning#opening-a-channel-on-the-bitcoin-testnet

其他文檔包括:

閃電網絡測試網絡部署
https://interfect.github.io/#!/posts/009-Ride-the-Lightning.md

閃電網絡 windows 部署
https://medium.com/@jadmubaslat/bitcoin-lightning-network-node-easy-setup-tutorial-for-windows-desktop-users-a-how-to-guide-9937b5a8a669

更多精彩內容,關注鏈聞 ChainNews 公眾號(id:chainnewscom),或者來微博@ 鏈聞 ChainNews與我們互動!轉載請註明版權和原文鏈接!

相關推薦

推薦中...