1个稳定版本
1.2.0 | 2024年4月20日 |
---|
#49 in #mining
195KB
2.5K SLoC
包含 (ELF 可执行文件/库, 795KB) tests/buffers/metadata_program.bpf
Orz
ORZ是具有相同代码的ORE去中心化版本。它使用一种新颖的工作量证明算法,以保证没有矿工会因奖励而被饿死。
与ORE的修改
Consts
– 替换了元数据和PDAs。Entrypoint
– 替换了declare_id。Errors
- 添加了总供应量错误。Processor
– 添加了2100万的总供应量。
如何开始
只需使用您的solana RPC运行orz-cli
如何工作
Orz的主要创新是提供非独占的挖掘奖励。这意味着一个矿工找到有效的解决方案并不会阻止另一个矿工也找到。Orz不是将所有矿工设置在相互竞争的对决中,而是为每个矿工提供个性化的计算挑战。只要矿工为自己的个人挑战提供有效的解决方案,协议就保证他们能获得供应的一部分。由于没有矿工可以从网络中被审查,且有效解决方案是非独占的,因此避免了饥饿。
供应
Orz旨在保护持有者免受供应通胀的失控。无论世界上有多少矿工活跃,供应增长都被严格限制在每分钟0 ≤ R ≤ 2 ORZ/min
的比率。换句话说,是线性的。挖掘奖励率——对每个有效解决方案支付的金额——每60秒动态调整,以维持平均供应增长率为1 ORZ/min
。这个水平被选择是因为它的简单性、可扩展性和在指数通胀的一端和停滞不前的通货紧缩之间取得平衡。
- 每分钟1或z,上限2100万。
- 每5000个持有者增加1倍难度,上限32倍。
- 投票治理,永不关闭。
程序
Consts
– 程序常量。Entrypoint
– 程序入口点。Errors
– 自定义程序错误。Idl
– 客户端、浏览器和程序的接口。Instruction
– 声明的指令和参数。Loaders
– 加载Solana账户的验证逻辑。
指令
Initialize
– 初始化Orz程序,创建总线、铸造和财政部账户。Reset
– 为新的时代重置程序。Register
– 为潜在的矿工创建一个新的证明账户。Mine
– 验证矿工提供的散列并发放可领取的奖励。Claim
– 将可领取的奖励作为代币从财政部分配给矿工。UpdateAdmin
– 更新管理权限。UpdateDifficulty
- 更新哈希难度。
状态
Bus
- 一个账户(总计8个),用于跟踪和限制每个时代挖掘的奖励数量。Proof
- 一个账户(每个矿工1个),用于跟踪矿工的散列、可领取的奖励和终身统计数据。Treasury
– 一个单一账户,用于管理程序范围内的变量和权限。
测试
要运行测试套件,请使用Solana工具链
cargo test-sbf
对于行覆盖率,请使用llvm-cov
cargo llvm-cov
依赖项
~26–36MB
~594K SLoC