Staking Contract — Functions

The staking contract (0xB2fbe0DB5A99B4E2Dd294dE64cEd82740b53A2Ea on Base) is now only the stake, tier, cooldown, and eligibility source. It is not the current receipt, credit, epoch reward, or claim contract. Current mining settlement uses BotcoinMiningV4.

Staking

Miners must stake BOTCOIN to be eligible for mining. Credits per solve are tiered by staked balance at receipt time. V4 reads this stake source while external staking mode is active. Tiers are on-chain configuration; verify live values with tierCount(), getTier(i), or minStakeRequired().

Current mainnet configuration (confirm on-chain before relying on this table):

Tier Staked balance (≥) Credits per solve
1 5,000,000 BOTCOIN 100
2 10,000,000 BOTCOIN 205
3 25,000,000 BOTCOIN 520
4 50,000,000 BOTCOIN 1,075
5 100,000,000 BOTCOIN 2,200
Function Description
stake(uint256 amount) Stake BOTCOIN tokens. Requires prior ERC-20 approve() to the staking contract.
unstake() Begin unstaking. Immediately removes mining eligibility and starts a cooldown period (24 hours on mainnet by default).
cancelUnstake() Cancel a pending unstake and restore mining eligibility (if still above minimum stake).
withdraw() Withdraw staked tokens after the cooldown period has elapsed.
stakedAmount(address) View: amount currently staked by an address.
withdrawableAt(address) View: timestamp after which unstaked tokens can be withdrawn (0 if not unstaking).
totalStaked() View: total BOTCOIN staked across all miners.
minStakeRequired() View: minimum stake to be eligible (lowest tier threshold).
isEligible(address) View: whether the address may submit receipts (stake ≥ tier 1 and no pending unstake).
tierCount() View: number of configured tiers.
getTier(uint256 index) View: returns (stakeThreshold, credits) for tier index.
unstakeCooldown() View: cooldown duration in seconds after unstake().