Coldtill Get Coldtill

Fee shares

Paste into Claude Code, Codex, Cursor or your favourite coding agent. View Markdown

The Free and Standard editions of Coldtill charge a sweep fee: 2% on Free, 1% on Standard, nothing on Pro. The fee is taken on chain, by the same contract that moves a payment from its deposit address to your cold wallet. It is not sent to a company account. Each chain has 100 fee-share NFTs, and every share is entitled to exactly 1% of all the fees collected on that chain, in every coin and token, for as long as the contracts exist.

This page explains where the fee goes, how holders get paid, which addresses to check, and the risks.

How a fee travels

  1. A customer pays to a deposit address. On Ethereum-style chains and Tron this is a CREATE2 address of your own fee factory. On Solana it is an address of the Coldtill deposit program.
  2. A sweep moves the balance out. The deposit wallet sends the fee to the factory (on Solana, the fee vault) and the rest to your cold wallet in the same transaction. The fee rate is fixed in the factory when it's deployed, and the contracts refuse anything above 2%.
  3. Anyone can call withdrawFees on the factory (on Solana, withdraw_sol_fees / withdraw_token_fees). This sends the accumulated fees to the fee shares contract.
  4. The fee shares contract splits everything it has ever received 100 ways. Each share can take its 1% whenever its holder likes.

The fee shares address is built into each factory and can't be changed later. A separate FeeConfig contract holds an emergency override: its owner can point fees somewhere else, for example if a bug were found in the shares contract, and clear the override again. Once the contracts have had an outside audit, FeeConfig will be locked. Locking requires the override to be cleared first, so after that the fee shares contract is the permanent destination and nobody can redirect fees.

Getting paid

Fees build up inside the shares contract until someone releases them. Unclaimed fees stay with the NFT: if you sell a share, the buyer gets whatever it hasn't paid out yet.

Chain Pay the current owner (anyone can call) Pay somewhere else (owner signs)
Ethereum, Base, Polygon, BNB Chain release(token, ids) claim(token, ids, to)
Tron release(token, ids) claim(token, ids, to)
Solana release_sol / release_token claim_sol / claim_token

Use token = 0x0000000000000000000000000000000000000000 for the native coin (ETH, POL, BNB or TRX), or the token's contract address, for example USDC. releasable(token, id) shows what a share can take right now.

Contract wallets and escrows. release only pushes money to ordinary wallets (on Ethereum-style chains, EIP-7702 smart wallets count as ordinary). If a share sits in a contract, such as a marketplace escrow, a lending vault or a bridge, a stranger's release skips it. The fees wait until the share is back in a wallet, or the contract claims them itself. On Solana the same rule applies to program addresses (OwnerNotWallet). That's why you should claim before you list a share for sale in an escrow: whoever buys it gets what you leave behind.

Example with Foundry's cast on Linux, releasing USDC on Base for shares 1 to 3 to whoever owns them:

cast send --rpc-url https://mainnet.base.org --interactive \
  <fee shares address> "release(address,uint256[])" \
  0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 "[1,2,3]"

On Tron, call the same functions from Tronscan's contract page. On Solana, any wallet or script can send the instructions. The program's IDL is published with the source.

Energy and gas. Each share released writes to storage, so large batches are expensive. On Tron, release 20 shares or fewer per transaction to stay within normal wallet fee limits.

Addresses

Each address is filled in here once it's deployed and verified on that chain's explorer. These are the planned deterministic addresses, so you can check them before deployment.

Address
Fee shares, Ethereum-style chains (same address on Ethereum, Base, Polygon and BNB Chain) 0x4F812E3472d97bdc56683Fc5018d58c95e2F8178
FeeConfig, Ethereum-style chains 0xF743d7225E5ad4e645bFa25d6AB2b7750D3d2b9b
Fee shares, Tron Published at deployment
FeeConfig, Tron Published at deployment
Solana fee shares program B6tSSnbUQ75Z1aGSu1buZuZF4gezbgzUzMUG7uWXLTpt
Solana distributor (receives the fees) 6wf24krP6jU7MEek9ENWggv9vHzaxUCnjJ5EzeWkHRJv
Solana collection Published at deployment
Solana deposit program EuGW7oFaoXT2acbTyNUzhRjs4sY1W8iq7BPKkGWZ1bk8
Solana fee vault 2uJo9cLWjPqe9iPxNzr98XFcwuqE6aNi6NFm9hwMCQen

To check an Ethereum-style address yourself, build the coldtill-fees tool from the repository. It derives the address from the published bytecode:

cd app && go run ./cmd/coldtill-fees predict-shares 0x3aCE43fF471b342Cd64206F08A1C6Ce9b654E548

The dashboard's fee page shows the FeeConfig and fee shares addresses compiled into your build. A fee factory won't deploy against an address with no contract code, so a build carrying the wrong network's addresses fails safely.

Rules fixed in the contracts

  • Exactly 100 shares per chain. No minting, no burning through the contract, no owner and no upgrade path on Ethereum-style chains or Tron.
  • Shares can't be sent to the shares contract itself.
  • Payouts are worked out from balances: everything received equals the current balance plus everything already paid out. Up to 99 base units per token can sit undistributed until more fees arrive.
  • On Solana the 100 assets are a Metaplex Core collection. The collection's update authority is given to the System Program after minting, so nobody can add assets or move them out of the collection. The distributor's list of 100 assets is closed for good once registration is finalised.

Risks

  • Not independently audited yet. The contracts went through an internal review with automated tools, fuzzing, mutation testing and three AI-assisted reviews. See the fee contracts audit report. Nothing is locked until an outside firm has reviewed them.
  • Override and upgrade keys. Until FeeConfig is locked, its owner can redirect future fees. The Solana programs stay upgradeable until the audit. These keys move to a multisig before locking.
  • Front-running. withdrawFees is permissionless, so someone can withdraw to the current destination just before an override change takes effect.
  • Unusual tokens. Fee-on-transfer, rebasing and double-address tokens, Tron TRC10 tokens, and Solana Token-2022 mints with transfer hooks or permanent delegates aren't supported. Coldtill only sweeps native coins, USDC and USDT, so in practice fees arrive only in those.
  • Burned or lost shares. On Solana, burning a share forfeits its 1% forever. On every chain, a share sent to an address nobody controls is lost with its fees.
  • Blocked holders. If a stablecoin issuer blocks a holder's address, that holder can claim to another address. Other holders aren't affected.