Skip to content

fix(staking): enforce unbonding period on claim, epoch rewards, and commission validation (closes #972) - #978

Open
area523ufo wants to merge 1 commit into
Sorokit:mainfrom
area523ufo:fix/staking-unbonding-epochs-commission-972
Open

area523ufo wants to merge 1 commit into
Sorokit:mainfrom
area523ufo:fix/staking-unbonding-epochs-commission-972

Conversation

@area523ufo

Copy link
Copy Markdown

Closes #972

Summary

Hardens src/lib/staking.ts staking manager calculations and validations:

  1. Enforce unbonding lockup before claim: Added claimUnbonded(positionId, now) and updated getClaimablePositions(now) to verify pos.status === 'unbonding' and now >= pos.unbondingEnd, transitioning claimed positions to 'claimed'.
  2. Commission rate validation (0–100%): Added validateCommission(commission) in addValidator and reward calculations so invalid/negative or >100% commission rates throw a descriptive error.
  3. Epoch-based reward calculation: Added calculateEpochReward(pos, validator, epochs, epochsPerYear) alongside time-based calculatePendingReward.

Verification

  • Added unit tests in src/lib/staking.test.ts covering unbonding period enforcement, commission bounds validation, and epoch reward calculations.
  • All unit tests pass via npx vitest run.

…ation compounding, and epoch-aligned unbonding (closes Sorokit#972)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support validator unbonding epochs and commission deduction in staking.ts

1 participant