2 个稳定版本

1.0.1 2024年3月8日
1.0.0 2024年1月9日

#2252魔法豆

每月下载量 41

MIT 许可证

535KB
12K SLoC

cruzbit fun image


language

什么是cruzbit?

cruzbit 是一个简单的去中心化点对点账本实现。cruzbit 与 Bitcoin 非常相似,但有以下显著差异

  • 更新的加密 - 使用 Ed25519签名系统 对交易进行签名。该系统具有许多优点,可以保护用户免受ECDSA简单使用中存在的安全风险。应用中所有哈希操作(包括工作量证明函数,但不包括签名系统内部执行的哈希操作)都使用256位版本的 SHA-3哈希算法。据报道,当在硬件上实现时,它非常 快速。使用 NaCl Secretbox 对钱包私钥进行加密(不属于协议的一部分。)
  • 简化的交易格式 - 没有输入和输出。只有公钥发送者和接收者、时间、金额、显式费用、备忘录字段、伪随机nonce、序列号和签名。序列号大约每周增加一次,基于块高,以允许修剪交易历史。还包括两个可选字段,用于指定成熟度和到期时间,均为特定块高。
  • 没有UTXO集 - 这是第二个点的结果。这大大简化了账本的建设和管理,并要求钱包只知道其公钥余额和当前区块高度。它还允许账本更直接地映射到已充分理解的复式簿记系统的概念。在cruzbit中,所有公钥余额的总和必须等于当前区块高度的发行量。这并不是第一个摒弃UTXO集模型账本的,但我认为我们以一种独特而简单的方式进行。
  • 没有脚本 - 这是第二个点的另一个结果。签名仅仅是签名,而不是微小的脚本。这要简单一些,也许更安全。但它确实限制了功能,例如,没有原生的多签名交易概念,然而,根据您的需求,您可以使用cruzbit之外的机制来接近实现这一点。
  • 没有固定的区块大小限制 - 由于cruzbit中的交易大小大致固定,因此我们通过交易数量来限制区块大小,初始限制为10,000笔交易。这个区块交易限制通过“二倍增长之间的线性增长”增加。这意味着限制大约每两年通过区块高度加倍,并在加倍之间线性增加,直到硬限制2,147,483,647。这直接受到了BIP 101的启发。我们使用区块高度而不是时间,因为cruzbit的另一个变化是所有区块头都包含高度(以及总累积链工作量。)
  • 参考实现是用Go编写的 - 可能比C++更容易访问。希望这使区块链编程更容易理解,并吸引更广泛的开发者兴趣。
  • 友好的Web对等协议 - 对等通信通过安全的WebSockets进行。对等协议和所有原始数据都是用JSON结构化的。这应该使几乎每个现代开发环境都能轻松地与该协议一起工作。

开始挖矿

如果您错过了挖掘其他加密货币的机会,您可以尝试cruzbit!

1. 需要安装Rust

2. 需要安装cmake

  • macOS

    • brewinstall cmake
  • Debian Linux

    • apt install cmake
  • Windows

    • winget install Kitware.CMake

3. 运行客户端

注意:需要--release标志进行编译器优化

挖矿

与比特币类似,您挖掘的任何区块都需要在应用新的cruzbit到您的余额之前,在其上再挖掘100个区块。这是为了减轻在诚实区块链重组情况下的潜在不良用户体验。

使用多个密钥挖矿

cargorun --release ----datadir datadir --numminers 1 --keyfile keys.txt

您可以使用钱包生成多个密钥,并将公钥导出到一个文本文件,客户端将其接受为--keyfile参数。执行此操作的命令是genkeysdumpkeys

使用单个密钥挖矿

cargorun --release ----datadir datadir --numminers 1 --pubkey[钱包中的公钥]

使用OpenCL进行GPU挖矿

cargorun --release --功能opencl ----datadir datadir --numminers 1 --keyfile keys.txt

使用Cuda进行GPU挖矿

cargorun --release --功能cuda ----datadir clientdata --numminers 1 --keyfile keys.txt

不感兴趣挖矿,但想玩cruzbit?

没问题!您可以用--numminers 0运行客户端,使其作为您的钱包节点。

cargorun --release ----datadir datadir --numminers 0

4. 运行钱包

cargorun --release --binwallet ----walletdb walletdata

与golang cruzbit的数据库兼容性

  • 客户端数据库数据不兼容
  • 钱包数据库数据兼容

许可证

cruzbit遵循MIT许可证发布。更多信息请见LICENSE或访问https://opensource.org/licenses/MIT

加入我们的Discord

Cruzbit Discord进行一般聊天以及更新,包括开发状态。

依赖关系

~29–44MB
~766K SLoC