#fedimint #on-chain #module #rest #mint #cashu #command

app fedimint-http

为Fedimint客户端提供HTTP服务器,公开默认模块的REST和Websocket API

5个版本

0.1.5 2024年2月15日
0.1.4 2024年1月31日
0.1.3 2024年1月31日
0.1.2 2024年1月31日
0.0.0 2024年1月3日

#2427 in 魔法豆

MIT 许可证

395KB
2.5K SLoC

fedimint-http:Fedimint HTTP客户端(和Cashu代理)

fedimint-http公开了一个REST API以与Fedimint客户端交互。

通过复制.env来设置example.env中的变量,然后运行cargo run。它还设置为一个clap应用程序,因此您也可以通过命令行参数启动服务器。

Fedimint客户端端点

Fedimint客户端支持以下端点(在/fedimint/v2/ws处有原始的websocket支持,直到我改进界面。欢迎提交PR!)

  • /fedimint/v2/admin/info:显示钱包信息(持有,等级)。
  • /fedimint/v2/admin/backup:将(加密的)铸币笔记快照上传到联盟。
  • /fedimint/v2/admin/discover-version:发现与联盟通信时要使用的公共API版本。
  • /fedimint/v2/admin/restore:恢复之前创建的铸币笔记备份(使用backup命令)。
  • /fedimint/v2/admin/list-operations:列出操作。
  • /fedimint/v2/admin/module:调用模块子命令。
  • /fedimint/v2/admin/config:返回客户端配置。
  • /fedimint/v2/mint/reissue:重新发行从第三方接收的笔记以避免双重支出。
  • /fedimint/v2/mint/spend:准备发送给第三方的付款笔记。
  • /fedimint/v2/mint/validate:验证电子现金笔记的签名,但检查它们是否已被使用过。
  • /fedimint/v2/mint/split:将包含多个电子现金纸币的字符串(例如来自 spend 命令)分割成包含恰好一个纸币的字符串。
  • /fedimint/v2/mint/combine:合并两个或更多序列化的电子现金纸币字符串。
  • /fedimint/v2/ln/invoice:创建一个闪电发票,通过网关接收付款。
  • /fedimint/v2/ln/await-invoice:等待进来的发票被支付。
  • /fedimint/v2/ln/pay:通过网关支付闪电发票或 lnurl。
  • /fedimint/v2/ln/await-pay:等待闪电付款完成。
  • /fedimint/v2/ln/list-gateways:列出已注册的网关。
  • /fedimint/v2/ln/switch-gateway:切换活动网关。
  • /fedimint/v2/onchain/deposit-address:生成一个新的存款地址,发送到该地址的资金可以以后提取。
  • /fedimint/v2/onchain/await-deposit:等待先前生成的地址上的存款。
  • /fedimint/v2/onchain/withdraw:从联盟中提取资金。

即将推出(TM):将 Cashu NUT 端点映射到 fedimint 客户端。

支持的 Cashu NUT:注解、利用和术语

  • NUT-00:注解、利用和术语
    • Fedimint 电子现金目前不将联盟端点作为电子现金的一部分进行编码,只是联盟 ID。Fedimint 鼓励基于其信任模型建立长期关系,因此目前不支持即时发行/重新发行。可以强制进行映射,但并不完全匹配。返回联盟 ID 而不是
  • NUT-01:铸造公钥交换
    • /v1/keys:支持
    • /v1/keys/{keyset-id}:支持(fedimint 只维护 1 个密钥集)
    • Fedimint 目前不支持密钥集轮换。以 Cashu 格式响应单密钥集映射。
  • NUT-02:密钥集和密钥集 ID
    • /v1/keysets:支持
  • NUT-03:交换代币
    • /v1/swap:支持
    • 相当于 Fedimint 重新发行。证明略有不同,但功能等效。
  • NUT-04:铸造代币
    • /v1/mint/quote/{method}:支持
      • method=bolt11:通过 lngateway 支持
      • method=onchain:通过 pegin 支持
    • /v1/mint/quote/{method}/{quote_id}:支持
    • /v1/mint/{method}:支持
      • Fedimint 客户端对这些命令的处理略有不同,但可能可以强制执行流程,不明白为什么在状态完成后需要第二次轮次,应该直接返回那里。
  • NUT-05:熔化代币
    • /v1/melt/quote/{method}:支持
      • method=bolt11:通过 lngateway 支持
      • method=onchain:通过 pegout 支持
    • /v1/melt/quote/{method}/{quote_id}:支持
  • NUT-06:铸造信息
    • /v1/info:支持

依赖项

~97MB
~1.5M SLoC