brick
Docs · Mechanics

Builders rewards

Holders earn SOL every 24 hours, weighted by time held and builder rank. Here is the exact math.

Builders are a coin's holders. Every 24 hours the BRICK server pays the builders share of BRICK controlled fee proceeds to eligible holders in SOL, weighted by how much they held, for how long, and their rank.

Server managed, not trustless

Payout funds sit in the BRICK fee wallet and payouts are sent by the BRICK server. They are capped, can be run in dry run, and can be stopped by kill switches. No Solana program enforces them.

Ranks

Laborer
1x weight

Any eligible holder.

Mason
2x weight

After 3 days of continuous holding.

Architect
3x weight

After 7 days of continuous holding.

  • Rank depends on continuous holding time, measured from indexed token transfers, not from a single balance snapshot.
  • Any net decrease of a wallet's balance resets its rank to Laborer and restarts the clock. Selling counts, and so does sending tokens to another wallet.
  • Transfers between your own wallets also reset rank, because onchain they look the same as a sale.
  • A minimum balance applies. Time spent below it earns no weight.
  • Balance changes that land at the same timestamp are netted first, so the order of transfers inside one slot cannot change the result.

The formula

Each epoch is 24 hours. For each eligible wallet the server walks every balance change inside the epoch and sums balance times seconds held, times the rank multiplier that applied during that interval.

weight(w) = sum over intervals i of  balance_i x seconds_i x multiplier_i
W         = sum of weight(w) over all eligible wallets
payout(w) = floor( epoch_pool_lamports x weight(w) / W )
dust      = epoch_pool_lamports - sum of payout(w)   (carried over, never paid twice)
All values are integers: token balances in atoms, time in seconds, SOL in lamports. Same inputs always give the same outputs.

Worked example (illustrative inputs, not live data)

Suppose an epoch pool of 1,000,000,000 lamports (1 SOL) and two eligible wallets. Wallet A holds 100 tokens all day as an Architect (3x). Wallet B holds 300 tokens all day as a Laborer (1x). Token balances are shown in whole tokens to keep it short.

weight(A) = 100 x 86,400 x 3 = 25,920,000
weight(B) = 300 x 86,400 x 1 = 25,920,000
W         = 51,840,000
payout(A) = floor(1,000,000,000 x 25,920,000 / 51,840,000) = 500,000,000
payout(B) = 500,000,000
A third of B's balance earns the same as B because A's rank multiplier is three times higher.

Excluded accounts

  • The curve pool and the graduated pool, and the Meteora program authorities that hold their vaults.
  • The burn address and the BRICK partner fee wallet.
  • The creator wallet and any wallets the creator declared as linked.
  • LP positions.

Snapshots and payouts

  • At the end of each epoch the eligibility list and weights are frozen into an immutable snapshot, and its sha256 hash is published with the epoch.
  • Payouts are sent in batches of SOL transfers from the partner fee wallet, with a per run spend cap. Each payment row moves from unclaimed to sending to paid atomically, and payments stuck in sending are settled from chain, so a retry never pays twice.
  • While dry run is on, payouts are computed and recorded with status dry run, and no SOL moves.

Limitations

  • Splitting tokens across many wallets does not raise total weight, because weight is linear in balance. It does lose rank if done by transfer.
  • Plain SPL transfers do not name the mint in every instruction, so some are only picked up by the periodic full balance reconcile pass. Until then a balance can lag.
  • Wash transfers reset rank instead of gaining anything.
  • Rewards depend on BRICK actually claiming fees and on the server running. Check Status for job health.