Orz
ORZ is the decentralized version of ORE with same code. It uses a novel proof-of-work algorithm to guarantee no miner can ever be starved out from earning rewards.
Modify vs ORE
Consts– Replaced metadata & PDAs.Entrypoint– Replaced declare_id.Errors- Added total supply error.Processor– Added total supply of 21M.
How to start
Just run orz-cli with your solana RPC
How it works
The primary innovation of Orz is to offer non-exclusive mining rewards. This means one miner finding a valid solution does not prevent another miner from finding one as well. Rather than setting up every miner in a winner-take-all competition against one another, Orz gives each miner a personalized computational challenge. As long as a miner provides a valid solution to their own individual challenge, the protocol guarantees they will earn a piece of the supply. Since no miner can be censored from the network and valid solutions are non-exclusive, starvation is avoided.
Supply
Orz is designed to protect holders from runaway supply inflation. Regardless of how many miners are active in the world, supply growth is strictly bounded to a rate of 0 ≤ R ≤ 2 ORZ/min. In other words, linear. The mining reward rate – amount paid out to miners per valid solution – is dynamically adjusted every 60 seconds to maintain an average supply growth of 1 ORZ/min. This level was chosen for its straightforward simplicity, scale agnosticism, and for striking a balance between the extremes of exponential inflation on one hand and stagnant deflation on the other.
- 1 orz per minute, capped at 21 million.
- 1x difficulty per 5k holders, capped at 32x.
- Voting governance, never close.
Program
Consts– Program constants.Entrypoint– The program entrypoint.Errors– Custom program errors.Idl– Interface for clients, explorers, and programs.Instruction– Declared instructions and arguments.Loaders– Validation logic for loading Solana accounts.
Instructions
Initialize– Initializes the Orz program, creating the bus, mint, and treasury accounts.Reset– Resets the program for a new epoch.Register– Creates a new proof account for a prospective miner.Mine– Verifies a hash provided by a miner and issues claimable rewards.Claim– Distributes claimable rewards as tokens from the treasury to a miner.UpdateAdmin– Updates the admin authority.UpdateDifficulty- Updates the hashing difficulty.
State
Bus- An account (8 total) which tracks and limits the amount mined rewards each epoch.Proof- An account (1 per miner) which tracks a miner's hash, claimable rewards, and lifetime stats.Treasury– A singleton account which manages program-wide variables and authorities.
Tests
To run the test suite, use the Solana toolchain:
cargo test-sbf
For line coverage, use llvm-cov:
cargo llvm-cov