#nano #cryptocurrency #decentralized #task-list

bin+lib feeless

A Nano (加密货币) 节点以及诸如 nano 地址、哈希区块、签名等工具

12 个版本

0.1.11 2021 年 3 月 29 日
0.1.10 2021 年 3 月 28 日
0.1.3 2021 年 2 月 15 日

#18#task-list

每月 29 次下载

MIT/Apache

345KB
7.5K SLoC

⋰·⋰ Feeless

Crates.io docs.rs GitHub last commit MIT OR Apache-2.0 Licence

什么是 Feeless?

Feeless 是一个 Nano 加密货币节点、钱包、工具和 Rust crate。这不是 Nano 的官方项目,而是一个用 Rust 编写的实现。官方 Nano 节点实现 在这里

🚸 这是一个正在进行中的项目。API 可能会在 v0.2 之前不通知地更改 🚸

我决定开始这个项目作为了解 Nano 的个人冒险。我不会对我完成这个项目的未来动力做出任何承诺 🤐。

文档

请访问文档网站以获取一般信息、功能、安装、CLI 使用等更多信息。

https://feeless.dev/

什么是 Nano?

Nano 是一种数字货币,它显著优于 Bitcoin 和其他加密货币。

Nano 的主要特性包括

  • 无交易费。

  • 发送货币极快——100% 确认时间少于 1 秒。

    Bitcoin 平均需要 10 分钟才能获得 ~80%1 确认。Nano 比Bitcoin 更异步——单个交易独立于网络其他部分进行投票。
  • 高度去中心化。

    使用 Nakamoto 系数测量,它比 Bitcoin2 3 更去中心化。

  • 无通胀。

  • 绿色——比 Bitcoin 节能。

有关 Nano 的更多信息,请参阅 Nano 文档:https://docs.nano.org/what-is-nano/overview/

Nano 还被称为:Nano 加密货币,Nano 币,RaiBlocks。

1. Bitcoin 白皮书第 11 节“计算”解释了,拥有 10% 矿工权力的攻击者有 ~80% 的机会超过最长的链。https://bitcoin.org/bitcoin.pdf 2. 使用多个指标和粒度衡量 Bitcoin 和 Ethereum 的去中心化 https://arxiv.org/pdf/2101.10699.pdf 3. 显示 Nakamoto 系数为 8 的代表性节点列表(写作时间 2021-02)https://nanocharts.info/

任务列表

一个中期任务列表

  • 种子
    • 助记词(单词列表)种子生成/解析(BIP39)
    • 从助记词中派生密钥(BIP33)
    • 十六进制种子
  • 密钥(ed25519/blake2b)
    • 私钥
    • 公钥
    • Nano 地址
      • 验证
      • 解析
      • 公钥之间的转换
  • 纳摩尔量转换
    • 原始
    • 纳摩尔
    • Mnano/NANO
  • 工作量证明(核心)
    • 与阈值进行验证
    • 生成
    • 动态阈值
  • 区块
    • 哈希
    • 工作
    • 状态区块
    • <v18 区块
  • 数据包解析器
    • 解析pcap文件
    • 将某些消息类型输出到控制台
    • 当所有数据包成功解码时标记为完成(见下文)
  • 节点
    • 配置
      • 初始命令行界面
      • 网络
      • 数据库
      • ...
    • 网络
      • 实时(别担心,我现在只连接到自己的节点!)
      • 测试
      • 测试版
    • 引导对等连接(peering.nano.org)
    • 验证给定的对等网络
    • 验证给定的对等版本
    • 多个对等连接(目前只连接到一个对等节点)
      • 可配置的最大对等连接限制
    • 头解析
      • 网络
      • 版本
      • 扩展
        • 握手查询/响应标志
        • 计数
        • 区块类型
        • 遥测大小
        • 存在扩展参数
    • 逻辑
      • 重新广播
      • 代表
      • 发布重试(难度变化)
      • 响应遥测请求
      • ...
    • 消息
      • 节点ID握手
        • 序列化(待办:需要小重构)
        • 反序列化
        • 发送cookie
        • cookie/对等存储和逻辑
        • 验证响应
        • 验证签名
      • 确认请求
        • 序列化
        • 反序列化
          • 哈希对
          • 区块选择器
        • 处理响应
      • 确认确认
        • 序列化
        • 反序列化
          • 按哈希投票
          • 区块
        • 验证签名
      • 保持活跃
        • 序列化
        • 反序列化
      • 发布
        • 序列化
        • 反序列化
          • 状态区块
          • 其他区块
      • 批量拉取
      • 批量拉取账户
      • 批量拉取区块
      • 批量推送
      • 遥测请求
        • 序列化
        • 反序列化
      • 遥测确认
        • 序列化
        • 反序列化
          • 大多数字段
          • 时间戳
          • 活动难度
        • 验证签名
      • 前端请求
        • 序列化
        • 反序列化
    • 存储
      • 基本键值存储到文件
      • 基本cookie/对等存储
      • 对等节点
      • 区块
      • ...
    • RPC
  • Rust
    • 寻求代码审查
    • 使用 zerocopy 或将所有核心类型存储为零拷贝并使用 [u8] 和方法作为访问器。当尝试时,zerocopy 对大多数事情都有效,但与枚举有问题。可能会重新考虑。
    • 在某些地方使用 thiserror 而不是 anyhow
    • Github actions CI(包括 cargo clippy
  • 未来事项
    • 与用户钱包相关的快速引导
    • 性能
      • 自动比较
    • 工作量证明
      • 服务器
      • GPU
    • WASM

致谢和参考

其他实现

许可证

您可以选择以下任一许可证

贡献

除非您明确表示,否则根据 Apache-2.0 许可证定义的,您有意提交以包含在作品中的任何贡献,将按上述方式双重许可,不附加任何额外条款或条件。

依赖

~14–25MB
~375K SLoC