Verify it yourself.
Every claim colouragent.fun makes, next to the on-chain proof on Solana. Nothing here asks for trust: open each link.
Reading the chain…
Contracts
Coming soonComing soon
No withdraw, no pause, no owner, no setters. The deployer's only power was one start() call, already used. A block is valid only when keccak256(challenge, beneficiary, nonce) is at or below the target.
Coming soon
Posts one payout root per epoch, never more than it holds; each miner claims with a merkle proof. No owner withdraw, no sweep, no setters.
Contracts with tests, the pool server, the CLI miner and this site. The miner served at colouragent.fun/api/miner.mjs has the same sha256 as the file on GitHub.
Sourcify recompiled the GitHub source (solc 0.8.26, optimizer 10,000 runs, EVM cancun) and matched both the creation and the runtime bytecode of both contracts: creationMatch: match · runtimeMatch: match. The label is "match" rather than "exact_match" only because the build strips the metadata hash (bytecode_hash = "none" in contracts/foundry.toml), so there is no metadata hash to compare. Pool JSON ↗
Reproduce it: git clone https://github.com/colourdotcodes/colourcodes && cd colourcodes/contracts && forge build, then compare with cast code 0x646721dA9c7E32d401a3FF8FA802edC20E0c0317 --rpc-url https://api.mainnet-beta.solana.com (immutables such as the token address and minHold are filled in at deploy time).
The mining cycle, on-chain
Coming soonThe whole dev balance went in. It can only leave as block rewards, halving every 12,960 blocks.
Digest 0x00000000 37b24e… : as a colour, #000000.
1,355.87 CCODE to 4 miners at 00:00 UTC, 17 Oct 2026.
Epoch 1, 239.16 CCODE, with a merkle proof.
Recent blocks, live
| Block | Colour | Reward | Miners credited | Tx |
|---|---|---|---|---|
| Loading… | ||||
Who mines
This is a pool. Miners hash in the browser or with the CLI and send shares to the pool, each share signed for their own wallet. When a share also meets the block target, the pool operator … sends mint() for the whole pool, so the block reward lands in the pool contract. The reward is then split across every wallet that sent shares (PPLNS), and paid out once a day as a merkle root on the pool contract. The miners are the wallets below, not the sender of mint().
Loading miners…
| Wallet | Shares, last 24h |
|---|---|
| Loading… | |
Daily payouts, leaf by leaf
Every wallet and amount in each payout is public. Hash them as OpenZeppelin StandardMerkleTree leaves and you get the same root the pool contract stores in epochRoot(epoch). One command does it: node tools/verify-epoch.mjs in the GitHub repo. Raw data: /api/pool/miners.
Loading payouts…