Skip to main content
MyTonCtrl automatically calculates the stake amount before submitting an election entry. The calculation balances operator preferences, staking mode, network-imposed limits, and fee reserves to produce a single integer value (in TON) sent to the elector contract.

Inputs

The calculation draws on several sources: Configure stake and stakePercent with the set command:
Retrieve current values with get stake or get stakePercent.

How the priority cascade works

MyTonCtrl evaluates stake sources in a fixed priority order. The first rule that produces a value wins; later rules are skipped.

Priority 1: Saved fixed stake

If the operator previously ran set stake <VALUE>, MyTonCtrl uses that stored amount directly. No additional fee reserve is subtracted at this stage; the value passes straight to the validation guards.

Priority 2: Nominator pool mode

When the node operates through a standard nominator pool (not a single nominator pool), MyTonCtrl sets:
The 20 TON reserve covers the higher fee overhead of pool operations (deploy, process, and distribute messages).

Priority 3: Liquid staking controller mode

When the node uses a liquid staking controller, MyTonCtrl sets:
The 50 TON reserve is the largest of all modes. Liquid staking controllers perform complex multi-step transactions (minting, burning, and balance adjustments), requiring a bigger fee cushion.

Priority 4: Percentage-based calculation (default)

If none of the above rules produce a value, MyTonCtrl falls back to percentage-based calculation using stakePercent. This is the most common path for single nominator pools and direct staking. The logic depends on whether the node already has active validators:
  • New validator (no active validators):
    The balance is halved. This solves a cold-start problem: on the first election, the elector locks the entire stake for a full validation round. By staking only half, the node keeps the other half available for the next election, which opens before the current round ends. Without halving, a new validator would be locked out of alternating rounds. Exception: if halving produces a value below minStake, MyTonCtrl abandons the halving and stakes the full percentage instead. Participating in one round is better than being rejected by the elector for staking too little.
  • Existing validator (active validators present):
    No halving is needed. The returning stake from the previous round replenishes the balance in time for the next election. Fee deduction at 100%: when stakePercent is exactly 100, MyTonCtrl subtracts 20 TON from the result to prevent draining the wallet completely. At lower percentages, the non-staked remainder covers fees implicitly.

Validation guards

After the stake amount is determined, three sequential checks run regardless of which priority rule produced the value: The asymmetry is intentional. Exceeding the maximum is recoverable — MyTonCtrl clamps and continues. Falling below the minimum or exceeding the available balance would waste transaction fees on a doomed submission, so MyTonCtrl aborts instead.

Safety reserves by mode

Each staking mode reserves a different amount for transaction fees:

Examples

New validator with 800,000 TON balance

Settings: stakePercent = 99, no fixed stake, single nominator pool mode.
  1. No saved fixed stake, not a standard nominator pool, not a controller.
  2. Falls through to percentage-based calculation (Priority 4).
  3. No active validators detected (new node): halving applies.
  4. stake = 800,000 * 99 / 100 / 2 = 396,000.
  5. 396,000 > minStake (300,000): halving is kept.
  6. Result: 396,000 TON is submitted. The remaining balance covers the next election.

Returning validator with 1,600,000 TON balance

Settings: stakePercent = 99, single nominator pool mode, already validating.
  1. Falls through to percentage-based calculation.
  2. Active validators present: no halving.
  3. stake = 1,600,000 * 99 / 100 = 1,584,000.
  4. Result: 1,584,000 TON is submitted.

New validator with exactly 600,100 TON (near minimum)

Settings: stakePercent = 100, single nominator pool mode.
  1. Falls through to percentage-based calculation.
  2. No active validators: halving would give 600,100 / 2 = 300,050.
  3. 300,050 > minStake (300,000): halving is kept.
  4. stakePercent == 100: 20 TON fee deduction applies: 300,050 - 20 = 300,030.
  5. Result: 300,030 TON is submitted.

New validator with exactly 500,000 TON (halving would go below minimum)

Settings: stakePercent = 100, single nominator pool mode.
  1. Falls through to percentage-based calculation.
  2. No active validators: halving would give 500,000 / 2 = 250,000.
  3. 250,000 < minStake (300,000): halving is abandoned.
  4. Full percentage is used: 500,000.
  5. stakePercent == 100: 20 TON fee deduction: 500,000 - 20 = 499,980.
  6. Result: 499,980 TON is submitted.

Nominator pool with 2,000,000 TON balance

Settings: standard nominator pool mode (not single nominator).
  1. Pool mode detected (Priority 2).
  2. stake = 2,000,000 - 20 = 1,999,980.
  3. Result: 1,999,980 TON is submitted.

See also