39 个版本

0.4.0 2024年8月5日
0.4.0-rc.42024年7月26日
0.3.3 2024年7月25日
0.3.0-rc.32024年3月26日
0.2.0-rc32023年11月29日

#1947 in 魔法豆

Download history 44/week @ 2024-04-17 41/week @ 2024-04-24 95/week @ 2024-05-08 2/week @ 2024-05-15 80/week @ 2024-05-22 3/week @ 2024-06-05 93/week @ 2024-06-26 60/week @ 2024-07-03 55/week @ 2024-07-10 426/week @ 2024-07-17 264/week @ 2024-07-24 162/week @ 2024-07-31

每月下载量 907

MIT 许可证

565KB
12K SLoC

Fedimint

GitHub Actions CI Build Status Developer Discord Chat GitHub Discussion docs built from master Lines of code

Fedimint 是一个基于模块的系统,用于构建联盟应用。它旨在成为一个最小化信任、抗审查和隐私化的替代集中式应用。

Fedimint 是在 MIT 许可证下发布的 alpha 软件版本。这意味着软件是“按原样”提供的,没有任何类型的保证。我们是一个资源有限的小型开发团队。如果您因软件中的错误而损失资金,我们可能无法帮助您恢复资金。我们建议您在 mutinynet 等测试网上运行 Fedimint,或者在主网上使用少量资金运行。您可以在这里找到我们的最新版本。

Fedimint 随附 3 个默认模块 - BitcoinLightningChaumian Ecash - 以实现即插即用的私密和最小化信任的支付最佳实践。您可以为定义进一步的共识项目和交易类型编写自定义模块,利用支付模块构建自己的联盟应用。您可以编写自定义模块

Fedimint 开发者 Discord 是获取帮助和提问的最佳场所。加入 Discord(加入 Discord)并打个招呼!我们非常活跃,致力于将所有技能水平的开发者引入 Fedimint 及相关开源比特币项目。Fedimint 涉及比特币开发的许多不同领域,所以总有一款适合你。下面将提供更多关于如何参与的信息。

运行您自己的 Fedimint

设置和运行自己的联盟非常简单。Fedimint 被设计成 拜占庭容错,因此对联盟中 m 个恶意节点具有弹性,联盟节点数量为 3m + 1。如果您运行一个由 4 个守护者组成的联盟,则对 1 个恶意守护者的攻击具有弹性;如果您运行一个由 7 个守护者组成的联盟,则对 2 个守护者的攻击具有弹性,等等。

Fedimint 还可以以“单人模式”运行,只使用一个守护者。这对于测试和开发非常有用,但不建议用于生产环境。

要进行闪电支付,Fedimint 需要一个 闪电网关:一个愿意以 ecash 交换发送/接收闪电支付的联盟用户。闪电网关不是一个守护者,而是一个为联盟服务的不可信经济行为者。

在 Mutinynet 上运行 Fedimint

请参阅 Fedimint Mutinynet 设置指南。您可以根据需要修改配置选项来部署。

面向开发者

我们正在积极寻找开发者来帮助构建 Fedimint 及相关开源比特币项目。Fedimint 涉及比特币开发的许多不同领域,所以总有一款适合你。开始的最佳地点是

  • Fedimint 开发者 Discord:获取帮助和提问的最佳场所。
  • Fedimint 技术参考文档
  • Fedimint 贡献者日历:此日历包含所有开发者会议和活动。
  • Fedimint 开发者会议:我们每周一 UTC 4 点举行开发者会议,以审查 PR 并讨论当前的开发优先事项。作为一名新开发者,这是一个寻找好的入门问题和从核心团队获得指导以开始为 Fedimint 贡献的好地方。
  • PR 审查俱乐部:我们每周二 UTC 4 点举行 PR 审查会议。
  • 每周深入研究:我们每周四 UTC 4 点进行深入研究,深入讨论与 Fedimint 相关的技术主题:密码学、Rust 编程、共识、网络等。这是一个了解 Fedimint 和比特币内部的好地方。我们通常根据贡献者对 Fedimint 想要了解更多方面的请求来计划这些会议,所以如果您有任何想要了解的主题,请提出。

有关贡献指南、贡献领域以及如何参与,请参阅 贡献指南

Fedimint 存储库和可以贡献的项目

  • Fedimint:Fedimint 的核心存储库。这是核心共识和网络代码所在之处。Fedimint 是一个高级 Rust 项目,是学习 Rust、密码学、网络、共识和比特币开发的绝佳场所。我们有很多好的入门问题,乐于指导新开发者,并且始终在寻找有经验的 Rust 开发者来帮助核心代码库。
  • UI:Fedimint 默认的守护者和闪电网关界面。这些都是 TypeScript 和 React 项目。为该仓库贡献力量有助于 UI/UX 设计和开发,使 Fedimint 更易于使用。
  • 闪电网关:Fedimint 的闪电网关作为 HTLC 中断器实现,目前与 CLN、LND 和 LDK 的样本节点实现一起工作。我们一直在寻找闪电开发者来帮助闪电网关,尤其是在提高支付可靠性和添加更多闪电实现支持方面。
  • 自定义模块:Fedimint 随带 3 个默认模块:比特币、闪电和 Chaumian Ecash。您可以编写自定义模块,定义更多的共识项目和交易类型,利用支付模块来构建自己的联邦应用程序。我们一直在寻找开发者来构建自定义模块并帮助改进模块系统。

启动 Fedimint 开发环境

Fedimint 是一个 Rust 项目,并使用 Nix 软件包管理器 来管理依赖关系并构建项目。

本地开发

我们有一份详细的教程,介绍了如何使用命令行工具发送/接收 Ecash、闪电支付以及执行其他开发操作,请参阅 Fedimint 开发者教程

Fedimint 的开发环境和 Rust 构建管道通过 Nix Flakebox 管理。要开始,请安装 Nix。

curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install

然后分叉并克隆 Fedimint 仓库。

git clone https://github.com/your-username/fedimint.git

然后进入 nix 开发者环境。

nix develop

然后使用此命令启动一个本地 regtest 网络,包含 4 个守护者、一个比特币节点和一个闪电网关。

just mprocs

您可以使用命令行工具与守护者和闪电网关进行交互。有关如何使用命令行工具的更多信息,请参阅 Fedimint 开发者教程

如果您想运行带有 UI 的版本,请参阅 UI 仓库中的开发者环境说明。

维护者

领域 主要维护者 共同维护者 状态
项目负责人 @elsirion @dpc @joschisan X
核心服务器 @joschisan X 大部分已优化,无已知问题
核心共识 @joschisan @bradleystachurski 已完善并已文档化
闪电模块 @joschisan @m1sterc001guy 活跃开发,存在已知问题
铸造模块 @joschisan X 活跃开发,存在已知问题
钱包模块 @bradleystachurski @dpc @joschisan 活跃开发,存在关键问题
核心客户端 @dpc X X
闪电网关 @m1sterc001guy @joschisan X
数据库 @m1sterc001guy X X
网络 X X X
CI / Nix @dpc @maan2003 @bradleystachurski X
测试 @bradleystachurski X X
Devimint @maan2003 X X
配置生成 X X X

依赖

~40–55MB
~809K SLoC