| Crates.io | ore-program |
| lib.rs | ore-program |
| version | 1.2.1 |
| created_at | 2024-02-16 22:16:23.231952+00 |
| updated_at | 2024-04-08 02:42:29.556382+00 |
| description | Ore is a digital currency you can mine from anywhere, at home or on your phone. |
| homepage | https://ore.supply |
| repository | https://github.com/hardhatchad/ore |
| max_upload_size | |
| id | 1142832 |
| size | 971,987 |
Ore is a digital currency you can mine from anywhere, at home or on your phone. It uses a novel proof-of-work algorithm to guarantee no miner can ever be starved out from earning rewards.
The primary innovation of Ore 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, Ore 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.
Ore 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 ORE/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 ORE/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.
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.
Initialize – Initializes the Ore 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.
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.
To run the test suite, use the Solana toolchain:
cargo test-sbf
For line coverage, use llvm-cov:
cargo llvm-cov