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