lnd 和 Bluewallet LndHub 集成錯誤
我正在嘗試通過 docker-compose 使用 Pi3 設置 LndHub。在 bitcoind 區塊鏈同步完成後,從
lnd
(Lightning) 和的日誌來看LndHub
,似乎在解碼來自(粘貼在下面的日誌)LndHub
的消息時遇到了問題?lnd
以前有人遇到過這種問題嗎?或者有什麼建議?
我知道這更像是一個 JS/RPC 問題,但認為這裡的 ppl 可能對 lnd 和 LndHub 使用的庫有更多經驗。
我想我的下一步可能是在 LndHub 程式碼的某處添加一些列印語句。我這樣做後會更新這篇文章。
lnd
日誌:2021-06-20 23:42:12.591 [INF] CRTR: Processed channels=38 updates=78 nodes=32 in last 59.874156103s 2021-06-20 23:42:13.955 [ERR] RPCS: [/lnrpc.Lightning/SubscribeInvoices]: encoding/hex: invalid byte: U+002F '/' 2021-06-20 23:42:13.956 [ERR] RPCS: [/lnrpc.Lightning/GetInfo]: encoding/hex: invalid byte: U+002F '/' 2021-06-20 23:42:13.958 [ERR] RPCS: [/lnrpc.Lightning/GetInfo]: encoding/hex: invalid byte: U+002F '/' 2021-06-20 23:42:13.961 [ERR] RPCS: [/lnrpc.Lightning/ListChannels]: encoding/hex: invalid byte: U+002F '/'
LndHub
日誌:updateLightning() updated 2021-06-20T22:50:34.595Z : info: [BOOTING UP] : "Listening on port 3000" Node NOT Exiting... { Error: 2 UNKNOWN: encoding/hex: invalid byte: U+002F '/' at Object.callErrorFromStatus (/opt/LndHub/build/node_modules/@grpc/grpc-js/build/src/call.js:31:26) at Object.onReceiveStatus (/opt/LndHub/build/node_modules/@grpc/grpc-js/build/src/client.js:327:49) at Object.onReceiveStatus (/opt/LndHub/build/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:299:181) at process.nextTick (/opt/LndHub/build/node_modules/@grpc/grpc-js/build/src/call-stream.js:130:78) at process._tickCallback (internal/process/next_tick.js:61:11) code: 2, details: 'encoding/hex: invalid byte: U+002F \'/\'', metadata: Metadata { internalRepr: Map { 'content-type' => [Array] }, options: {} } } lnd failure
軟體版本:
Hardware: Raspberry Pi 3 OS: Raspbian Buster 10 Docker Base Image: Ubuntu 18.04 Bitcoin: 0.21.1 Lnd: v0.13.0-beta LndHub: v1.3.0 (Node: v10.15.3)
Dockerfile 和 docker-compose 文件:
https://github.com/pangyuteng/bitcoin-lndhub/blob/main/docker-compose.yml bictoind: https://github.com/pangyuteng/bitcoin-lndhub/blob/main/bitcoind/Dockerfile lnd: https://github.com/pangyuteng/bitcoin-lndhub/blob/main/lnd/Dockerfile LndHub: https://github.com/pangyuteng/bitcoin-lndhub/blob/main/hub/Dockerfile
— 編輯 2021-09-22 —
我將比特幣核心更新到 v22。現在lnd給出了一個不同的錯誤
rpcperms/interceptor.go
……我必須弄清楚如何讓rpc為lnd執行,如下所示似乎表明“rpc沒有執行”……export LND_DIR=/mnt/hdd/lnd export MACAROON_HEADER="Grpc-Metadata-macaroon: $(sudo xxd -ps -u -c 1000 $LND_DIR/data/chain/bitcoin/mainnet/admin.macaroon)" curl -X GET --cacert $LND_DIR/tls.cert --header "$MACAROON_HEADER" https://localhost:8080/v1/balance/blockchain {"error":"the RPC server is in the process of starting up, but not yet ready to accept calls","code":2,"message":"the RPC server is in the process of starting up, but not yet ready to accept calls","details":[]}
— 編輯 2021-09-27 —
結果我的 bitcoind 沒有同步,因為有足夠的交換和伺服器不斷關閉/核心恐慌。
同步並重新啟用交換後……它返回到原始錯誤消息但在不同的位置(
node:internal/process/task_queues:78:11
),並且 lndhub 與 bitcoind 之間似乎正在進行一些通信!:)bitcoind getblockchaininfo: { result: { chain: 'main', blocks: 702459, headers: 702459, bestblockhash: '0000000000000000000a45d676fc178cc7603ca7908af2ed1701137a848db5d3', difficulty: 18997641161758.95, mediantime: 1632764543, verificationprogress: 0.9999990028709793, initialblockdownload: false, chainwork: '0000000000000000000000000000000000000000221092943f73a5bddde80438', size_on_disk: 416306659033, pruned: false, softforks: { bip34: [Object], bip66: [Object], bip65: [Object], csv: [Object], segwit: [Object], taproot: [Object] }, warnings: '' }, error: null, id: '883e89b6-7c7e-4cd5-aa8e-a6e54879ae62' } lnd failure Error: 2 UNKNOWN: encoding/hex: invalid byte: U+002F '/' at Object.callErrorFromStatus (/opt/LndHub/node_modules/@grpc/grpc-js/src/call.ts:81:24) at Object.onReceiveStatus (/opt/LndHub/node_modules/@grpc/grpc-js/src/client.ts:338:36) at Object.onReceiveStatus (/opt/LndHub/node_modules/@grpc/grpc-js/src/client-interceptors.ts:426:34) at Object.onReceiveStatus (/opt/LndHub/node_modules/@grpc/grpc-js/src/client-interceptors.ts:389:48) at /opt/LndHub/node_modules/@grpc/grpc-js/src/call-stream.ts:276:24 at processTicksAndRejections (node:internal/process/task_queues:78:11) { code: 2, details: "encoding/hex: invalid byte: U+002F '/'", metadata: Metadata { internalRepr: Map(1) { 'content-type' => [Array] }, options: {} } }
一直以來,這都是我在 docker-compose 文件中的配置錯誤,而且我沒有足夠的耐心等待核心節點同步,因為那是
lnd
願意能夠與核心節點“交談”的時候。值得注意的是,我了解到你不能只關閉這些服務docker-compose down
,理想情況下你需要先通過優雅地關閉比特幣核心bitcoin-cli stop
,然後你可以做一個docker-compose down
- 潛在的影響是比特幣區塊鏈文件會損壞,因此需要您同步/重新索引區塊鏈。volumes: + - /lnd/tls.cert:/opt/LndHub/tls.cert:ro + - /lnd/admin.macaroon:/opt/LndHub/admin.macaroon:ro environment: CONFIG: ${HUBCONFIG} - TLSCERT: "/lnd/tls.cert" - MACAROON: "/lnd/admin.macaroon"
(
git diff
如上圖所示)環境變數
TLSCERT
不MACAROON
應該是文件路徑,而是應該假設它位於 lnd-hub 文件夾中,因此安裝到所述位置。或者從官方網站,如果你願意,你也可以將相應的十六進制編碼文件內容定義為TLSCERT
和MACAROON
。下面提供了 docker-compose 和相應的文件。 <https://github.com/pangyuteng/bitcoin-lndhub>