colouragent.fun

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

$CCODE token, launched on PonsComing soon Coming soon
ColourcodeMiner, verified on SourcifyComing soon Coming 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.

ColourcodePool, verified on SourcifyComing soon 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.

All code is public, MITComing soon

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.

Source-to-bytecode matchComing soon

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

1 · Contracts deployedComing soon Coming soon
2 · Reserve funded: 2,928,672 CCODE into the minerComing soon

The whole dev balance went in. It can only leave as block rewards, halving every 12,960 blocks.

3 · start() called, mining openComing soon
4 · Block #1 mined through the poolComing soon

Digest 0x00000000 37b24e… : as a colour, #000000.

5 · First daily payout posted (epoch 1)Coming soon

1,355.87 CCODE to 4 miners at 00:00 UTC, 17 Oct 2026.

6 · A claim paid out from the poolComing soon

Epoch 1, 239.16 CCODE, with a merkle proof.

Recent blocks, live

BlockColourRewardMiners creditedTx
Loading…

Who mines

Why every mint() comes from one address

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…

WalletShares, last 24h
Loading…

Daily payouts, leaf by leaf

Recompute the root yourself

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…