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(). |