【问题标题】:How to encode r_hash to check payment invoice using LND REST API如何使用 LND REST API 对 r_hash 进行编码以检查付款发票
【发布时间】:2021-11-11 12:36:44
【问题描述】:

我正在尝试使用 LND 创建发票然后进行检查。使用命令行很容易,但我被困在 HTTP API 中 r_hash 的编码上。文档可以在here找到。

如果我使用以下方式创建发票:

curl -X POST 'https://localhost:8080/v1/invoices' -k -H 'Grpc-metadata-macaroon: my-macaroon'

我得到了一些类似的东西

{
  "r_hash":"ud8NgqDTgCUri3sqb8D85YaRsnCtnQzY56iLwGWUXA4=",
  "payment_request":"lnbc1ps5xjcxpp5h80smq4q6wqz22ut0v4xls8uukrfrvns4kwsek884z9uqev5ts8qdqqcqzpgxqyz5vqsp5c0sxrfllt0hste83mevptfyvgcf9csg05rg8326vvhl9a0mfm73s9qyyssqgcehn536edaxhjpycu4hedl9klkqtkknnng653fdfqxxwpcdncus7gkmtxy9wpeezw9tupwh4nunpt9f0yg233233xgs0c2qpnlqe4sq7jlqxp",
  "add_index":"61",
  "payment_addr":"w+Bhp/9b7wXk8d5YFaSMRhJcQQ+g0HirTGX+Xr9p36M="
}

这里的 r_hash 与我查看发票时 cli 给我的不同:b9df0d82a0d380252b8b7b2a6fc0fce58691b270ad9d0cd8e7a88bc065945c0e

我的问题是我不知道如何在两者之间进行转换。我试过十六进制和base64。文档说 r_hash must be encoded as base64.

【问题讨论】:

    标签: base64 hex lnd


    【解决方案1】:

    知道了。 API 正在返回经过 base64 编码的哈希值,我能够让 API 接受它的十六进制编码。这需要解码和重新编码:

    import codecs, base64
    
    codecs.encode(base64.b64decode(h.encode('utf-8')), 'hex')
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-27
      • 2014-01-07
      • 2016-02-21
      • 2019-05-15
      • 1970-01-01
      • 2013-07-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多