#lightning #fedimint #bitcoin #e-cash

multimint

一个用于管理跨多个联盟的 fedimint 客户端的库

20 个版本

0.3.7 2024年6月3日
0.3.6 2024年5月14日
0.3.3 2024年4月20日
0.1.12 2024年3月19日
0.0.0 2024年1月20日

#28#e-cash

Download history 21/week @ 2024-04-10 272/week @ 2024-04-17 23/week @ 2024-04-24 182/week @ 2024-05-01 254/week @ 2024-05-08 67/week @ 2024-05-15 30/week @ 2024-05-22 131/week @ 2024-05-29 44/week @ 2024-06-05 16/week @ 2024-06-12 18/week @ 2024-06-19 7/week @ 2024-07-03 3/week @ 2024-07-17 109/week @ 2024-07-24

每月下载量 119
2 crates 中使用

MIT 许可证

27KB
348

fedimint-clientd:Fedimint 客户端,用于服务器端应用

fedimint-clientd 运行一个 fedimint 客户端,包含 Ecash、Lightning 和 Onchain 模块,让服务器端应用能够使用 Fedimint 持有和使用比特币。它公开了 REST API,并提供了 typescript、python、golang 和 elixir 的包装器。它使用 multimint crate 来管理从单个 fedimint-clientd 实例连接到多个联盟的客户。

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

入门指南

您可以使用以下命令安装命令行应用程序: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 Clientd 端点

fedimint-clientd 支持以下端点(在 /fedimint/v2/ws 有简单的 websocket 支持,请参见代码的详细信息,直到我改进了接口。欢迎 PRs!)。所有端点都使用密码(从 CLI 或环境变量)的 Bearer 令牌进行认证。您可以使用 curl 来访问端点,或者使用 python/typescript/golang 包装器。

curl http://localhost: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:使用OpenTelemetry和Prometheus导出器导出API度量(仅请求数量、延迟、高级度量)。

依赖关系

~92MB
~1.5M SLoC