3个版本 (破坏性更改)
0.4.0 | 2022年11月5日 |
---|---|
0.3.0 | 2022年9月26日 |
0.2.0 | 2021年1月21日 |
#6 in #nakamoto
每月25次下载
用于 nakamoto
605KB
14K SLoC
nakamoto
Nakamoto是一个用Rust编写的隐私保护型Bitcoin轻客户端实现,重点关注低资源消耗、模块化和安全性。
该项目愿景是构建一套针对轻客户端功能的库,易于嵌入任何程序和任何平台,无论是移动设备还是桌面电脑。由于高效的运行时和最小化依赖项,Nakamoto拥有小巧的CPU、内存和代码占用。实现语言Rust为其他语言(例如Swift、Python、Java)编写的程序通过外部函数接口(FFI)直接绑定到它提供了可能。
[dependencies]
nakamoto = "0.4.0"
设计
Nakamoto被分为几个crate,每个crate处理轻客户端协议的不同方面。虽然这些crate设计成可以一起使用,但由于它们之间有明确的边界和特质的运用,因此实现交换是微不足道的。从高层次来看,我们有
nakamoto-client
:核心轻客户端库nakamoto-p2p
:协议状态机实现nakamoto-chain
:区块存储和分叉选择逻辑nakamoto-net
:由反应器实现使用的网络原语nakamoto-net-poll
:默认的基于poll的网络后端nakamoto-common
:所有crate使用的公共功能nakamoto-node
:一个独立的轻客户端守护进程nakamoto-wallet
:基于上述crate构建的一个非常基本的仅查看钱包
有关上述内容的概述,请参阅docs
文件夹中的架构图。
状态
虽然项目仍处于起步阶段,但基本功能已实现。Nakamoto能够发现对等点,下载和验证最长链,并处理分叉,同时实现了完整的头部验证协议。
客户端区块过滤(BIP 157/158)已实现并正在运行。请参考 nakamoto-wallet
以了解如何使用它。
点对点层加密(BIP 324),自 Bitcoin Core v26.0 版本以来可用,也将在 Nakamoto 中很快实现。
最后,将实现一个 C FFI,以便轻松将客户端嵌入移动应用程序中。
尽管将逐步添加钱包功能,但这不是本项目的重点,该项目位于钱包级别之下。
项目目标
-
高保证:应使用现代技术如 属性 和 基于模型的测试 以及 离散事件模拟 和 模糊测试 对库进行全面测试。这些方法受益于 I/O 和协议逻辑之间的清晰分离,并且已被证明比单元测试能够捕获更多错误。
-
安全性:作为可能进入钱包实现的库,主要目标是安全和可审计性。因此,我们尽量减少总依赖性足迹,保持代码易于阅读,并禁止任何不安全代码。
-
效率:区块链同步应尽可能高效,具有低内存、磁盘和带宽开销。我们针对资源受限的环境,例如移动设备。
-
隐私:在可能的情况下,应采用隐私保护技术。《客户端区块过滤》(BIP 157/158)应优于 bloom 过滤器(BIP 37)使用,以确保用户隐私并提供抗审查性。
运行测试
cargo test --all
运行守护进程
cargo run --release -p nakamoto-node -- --testnet
贡献
如果您想为 Nakamoto 的发展做出贡献,请与我们联系!否则,请阅读贡献指南。
捐赠
为了资助项目并确保其持续发展和维护,感谢您在以下地址提供比特币支持
bc1qa47tl4vmz8j82wdsdkmxex30r23c9ljs84fxah
动机
观察那些对轻客户端不友好的生态系统——例如以太坊——我们发现,绝大多数用户在网络上交易时被迫信任第三方。这与区块链的理念和 raison d'être 完全相反,并且带来了巨大的安全和隐私风险。遗憾的是,这归因于轻客户端在协议层面和可用实现方面的支持不足。轻客户端对于普通用户能够安全地与像以太坊或比特币这样的网络接口是必要的。
为此,Nakamoto 被设想为一个可以在任何移动设备上高效运行的客户端,在给定的限制下实现最高标准的隐私和安全。
许可
在 MIT 许可证下发布。© 2020 Alexis Sellier (https://cloudhead.io)
lib.rs
:
一个 TUI 比特币钱包。
依赖项
~23MB
~395K SLoC