#fedimint #lightning #bitcoin #e-cash #server-side #client-server

app fedimint-clientd

为服务器端应用程序提供的一种 Fedimint 客户端守护进程,用于持有、使用和管理比特币

4 个版本

0.3.6 2024 年 5 月 14 日
0.3.5 2024 年 5 月 11 日
0.3.3 2024 年 4 月 20 日
0.3.0 2024 年 4 月 6 日

1620魔法豆

Download history 93/week @ 2024-04-14 40/week @ 2024-04-21 1/week @ 2024-04-28 110/week @ 2024-05-05 177/week @ 2024-05-12 18/week @ 2024-05-19

248 每月下载量

MIT 许可证

115KB
2.5K SLoC

fedimint-clientd:Fedimint 服务器端应用程序客户端

fedimint-clientd 运行 fedimint 客户端,并具有 Ecash、Lightning 和 Onchain 模块,允许服务器端应用程序使用 Fedimint 持有和使用比特币。它公开 REST API 并提供 typescript、python、golang 和 elixir 的包装器。它使用 multimint 仓库来管理来自单个 fedimint-clientd 实例连接到多个联邦的客户。

该项目旨在为有兴趣在其应用程序中添加 Fedimint 客户端支持的开发者提供一个易于使用的起点。fedimint-clientd 仅公开 Fedimint 的默认模块,任何更复杂的 Fedimint 集成都需要使用 Fedimint 的 rust 仓库 进行自定义实现。

入门

您可以使用 cargo install fedimint-clientd 命令安装命令行应用程序,或者通过克隆仓库并在根目录中运行 cargo build --release 来安装。

fedimint-clientd 从命令行运行并接受一些参数,这些参数也作为环境变量提供。Fedimint 使用 rocksDB,一个嵌入式键值存储库来存储其状态。--fm_db_path 参数是必需的,并且应该是数据库存储的目录的绝对路径。

CLI USAGE:
fedimint-clientd \
  --db-path=/absolute/path/to/dir/to/store/database \
  --password="some-secure-password-that-becomes-the-bearer-token" \
  --addr="127.0.0.1:8080"
  --mode="rest"
  --invite-code="fed1-fedimint-invite-code"

ENV USAGE:
FEDIMINT_CLIENTD_DB_PATH=/absolute/path/to/dir/to/store/database
FEDIMINT_CLIENTD_PASSWORD="some-secure-password-that-becomes-the-bearer-token"
FEDIMINT_CLIENTD_ADDR="127.0.0.1:8080"
FEDIMINT_CLIENTD_MODE="rest"
FEDIMINT_CLIENTD_INVITE_CODE="fed1-fedimint-invite-code"

Fedimint 客户端守护进程端点

fedimint-clientd 支持以下端点(并在 /fedimint/v2/ws 提供了原始的 WebSocket 支持,详情请见代码。欢迎提交 PR 改进界面!)。所有端点都通过密码(从 CLI 或环境变量)生成的 Bearer 令牌进行身份验证。您可以使用 curl 访问端点,或使用 python/typescript/golang 封装库。

curl https://127.0.0.1:3333/fedimint/v2/admin/info -H 'Authorization: Bearer some-secure-password-that-becomes-the-bearer-token'
  • /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:从联盟提款。

其他端点

  • /health:健康检查端点。
  • /metrics:使用 Prometheus 导出程序导出 API 指标(请求数量、延迟,仅高级指标)。

依赖项

~101MB
~2M SLoC