LUD-03:`withdrawRequest` 基础规范

  • lnurl_
  • 发布于 2022-04-03 10:50
  • 阅读 16

该文档描述了闪电网络 LNURL 的一种特定协议,即 LUD-03,用于实现从服务提供商处提取资金的功能。此协议允许用户通过扫描 QR 码或访问链接,从服务中提取 Lightning invoices,简化了提款流程。

LUD-03: withdrawRequest 基础规范.

作者: akumaigorodski 图表: johnpaulkiser


从服务中提取资金

现在,用户需要向服务提供一个用于提款的闪电网络发票。这需要一些努力,并且当用户尝试将资金提取到移动钱包中,同时使用桌面网站时,尤其令人痛苦。服务可以显示一个包含专门的 LNURL 的“提款”二维码,而不是要求闪电网络发票。

钱包到服务的交互流程:

sequenceDiagram
    actor Alice
        participant Wallet
        participant LN Service
        Alice->>LN Service: 发起 LNURL withdrawRequest
    Note over LN Service: 显示 <br/>编码后的 LNURL
        Wallet->>LN Service: 扫描二维码或复制编码后的 LNURL
    Note over Wallet: 解码 LNURL
        Wallet->>Wallet: 对 LNURL 发起 GET 请求
        alt 成功
            LN Service--)Wallet: 返回 JSON 响应
            Note left of LN Service: {<br/>"callback": 字符串, <br /> "k1": 字符串, <br/> "minWithdrawable": 数字, <br/> "maxWithdrawable": 数字, <br/> ...<br/>}
            Wallet->>Alice: 显示提款对话框
            Alice->>Wallet: 指定确切的提款金额
            Note over Wallet: 创建 BOLT-11 发票
            Wallet->>LN Service: 对回调 URL 发起 GET 请求,带查询参数 k1 & pr=<BOLT-11 发票>
        alt 成功
                LN Service--)Wallet: 返回 JSON 响应
            Note left of LN Service: {"status": "OK"}
            Wallet--)Wallet: 等待付款
            Wallet->>Alice: 通知提款成功
            Note over Alice: 结束
        else 失败
            LN Service--)Wallet: 返回 JSON 响应
                        Note left of LN Service: {<br/>"status": "ERROR", <br /> "reason": 字符串 <br/> }
                        Wallet->>Alice: 通知提款失败
            Note over Alice: 结束
        end
    else 失败
            LN Service--)Wallet: 返回 JSON 响应
            Note left of LN Service: {<br/>"status": "ERROR", <br /> "reason": 字符串 <br/> }
            Wallet->>Alice: 通知提款失败
            Note over Alice: 结束
    end 
  1. 用户使用 LN 钱包 扫描 LNURL 二维码或访问 lightning:LNURL.. 链接,并且 LN 钱包 解码 LNURL。
  2. LN 钱包 使用解码后的 LNURL 对 LN 服务 发起 GET 请求。
  3. LN 钱包LN 服务 获得 JSON 响应,格式如下:

    {
        "tag": "withdrawRequest", // LNURL 的类型
        "callback": string, // LN 服务将接受提款闪电网络发票作为查询参数的 URL
        "k1": string, // 在使用回调 URL 时,用于标识用户 LN 钱包的随机或非随机字符串
        "defaultDescription": string, // 默认的提款发票描述
        "minWithdrawable": number, // 用户可以从 LN 服务提取的最小金额(以毫聪为单位),或 0
        "maxWithdrawable": number, // 用户可以从 LN 服务提取的最大金额(以毫聪为单位),如果用户对金额没有选择权,则等于 minWithdrawable
    }

    {"status": "ERROR", "reason": "错误详情..."}
  4. LN 钱包 显示提款对话框,用户可以在其中指定要提取的确切金额,该金额将受以下因素限制:
    最大可接收金额 = min(maxWithdrawable, 本地估计可以路由到钱包的金额)
    最小可接收金额 = max(minWithdrawable, 钱包允许的本地最小值)
  5. 一旦被用户接受,LN 钱包 以以下形式向 LN 服务 发送 GET 请求
    <callback>
      <?|&> // 取决于回调中是否已经存在查询字符串,使用 '?' 或 '&'
       k1=<k1> // 上述响应中指定的 k1
      &pr=<闪电网络发票> // 钱包生成的支付请求
  6. LN 服务 发送 {"status": "OK"}{"status": "ERROR", "reason": "错误详情..."} JSON 响应,然后尝试异步支付发票。
  7. 如果响应成功,LN 钱包 等待传入的付款。

请注意,服务会将资金提取到任何可以提供有效的临时 k1 的人。为了加强这一点,服务可能需要在显示提款二维码之前要求授权(LNURL-auth,电子邮件链接等)。

  • 原文链接: github.com/lnurl/luds/bl...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
lnurl_
lnurl_
江湖只有他的大名,没有他的介绍。