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
每月下载量 119
在 2 crates 中使用
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