Lightning-Network

在不執行完整節點的情況下創建閃電發票

  • September 14, 2021

我正在嘗試建立一個使用閃電發票進行付款的小型網站。我想這樣做而不在我的伺服器上執行完整節點(或修剪節點,如果可能的話)以降低成本。我會對以下三種解決方案中的任何一種感到滿意:

  1. 使用 CLI 或 REST API 在我的伺服器上安裝託管閃電錢包,以生成和檢查閃電發票的狀態。Electrum可以工作,但我沒有在文件中看到發票生成。
  2. 我已經在 Umbrel 上執行了一個完整的節點,但我不確定如何安全地將lnd 的 http api公開到網際網路。
  3. 使用別人的完整比特幣節點來支持我的伺服器上的 lnd,或者使用帶有 api 的託管閃電錢包。

我樂於接受建議,我對這個領域很陌生,並且一直在學習很多東西。

正在進行的研究:

  • Lightning-charge使用c-lightning,它需要一個完整的節點。
  • FeatherLight看起來可以作為獨立服務執行我想要的操作,但同樣,我必須託管一個完整節點。
  • LightningHub API如果我設置一個 BlueWallet,它似乎可以工作。
  • LND Hub為多個使用者提供對單個 lnd 實例的訪問。

我最終為這個項目採用的方法是公開我的 Umbrel 的LND gRPC REST API

我的家庭網路不接受傳入的請求,而且我的整個 Umbrel 也不希望這樣,所以我使用ngrok代理對 LND 的請求。LND 僅接受 TLS 連接,因此bind_tls必須為 true,並且proto應設置為tls. Ngrok 有自己的 tls 設置,因此它不需要檢查 LND 的自簽名證書的有效性,因此不需要證書文件的路徑。

我還在使用限制性蛋白杏仁餅乾進行身份驗證——這對於安全性至關重要,因為如果管理員蛋白杏仁餅乾被洩露,你就會陷入困境。就我而言,我所要做的就是生成和檢查發票;./umbrel/bin/lncli bakemacaroon uri:/lnrpc.Lightning/AddInvoice uri:/lnrpc.Lightning/LookupInvoice就足夠了。

要向我的閃電節點發出請求,我所要做的就是類似於curl -X POST https://my-app.ngrok.io/v1/invoices -H "Grpc-Metadata-macaroon: my-macaroon" -d '{"amount":1000,"memo":"my-memo"}'. 這很好地轉換為來自我的應用程序伺服器的 python 請求呼叫。

我將嘗試在答案中解釋我的評論。沒有明確的方法來託管一個 lite ln 客戶端,只是為了恢復付款並顯示它,而不在伺服器上託管一個 ln 節點,使用比特幣核心後端。也許lnd你可以做一些事情(或生鏽閃電),但我不是這兩種實現的專家。

然而,在過去的幾個月裡,我一直在解決這個問題,因為我一直在尋找一些東西來讓我的 c-lightning 節點更精簡一些。使用 c-lightning,可以在其中執行自定義程式碼,並且我使用名為btcli4j的自定義外掛覆蓋比特幣後端,該外掛能夠以修剪模式執行 c-lightning,並且還使用與esplora API 兼容的 rest API預設情況下它使用 Blockstream API。

我開發了幾個工具來以精簡的方式執行 c-lightning 用於業務,所有程式碼都在儲存庫clightning4j下。

還有一個打包在一起的docker 鏡像(還包括一個用開放 API 記錄的 rest API)

我認為這是一個非常簡單的解決方案,因為它可以在帶有預設配置的樹莓派中執行(沒有 1TB 的空間)。詛咒,這些工具正在開發中,但有一個公開討論,您可以提出功能請求。

此處提供展示

跑過去在此處輸入圖像描述

引用自:https://bitcoin.stackexchange.com/questions/109585