Skip to content

[MEX-965] farms & staking reward per second#1745

Draft
claudiulataretu wants to merge 13 commits intofeat/state-rpcfrom
MEX-965-farms-reward-per-second
Draft

[MEX-965] farms & staking reward per second#1745
claudiulataretu wants to merge 13 commits intofeat/state-rpcfrom
MEX-965-farms-reward-per-second

Conversation

@claudiulataretu
Copy link
Collaborator

Reasoning

  • Farm V2 and staking smart contracts have migrated from block-based reward distribution to time-based (per-second) reward distribution
  • The service layer needs to match the updated contract endpoints (getPerSecondRewardAmount, getLastRewardTimestamp) replacing the old block-based ones (getPerBlockRewardAmount, getLastRewardBlockNonce)
  • Farm V1.x contracts remain block-based and are intentionally unchanged

Proposed Changes

  • Add SECONDS_IN_YEAR, SECONDS_IN_WEEK, SECONDS_IN_DAY constants and rename staking gas config key
  • Update V2 farm and staking ABI JSON files with new per-second endpoints
  • Migrate staking module: model, ABI service, compute service, setter, transactions, and resolver to per-second rewards
  • Migrate farm V2 module: model, ABI service (with guards that throw on block-based calls), compute service (including computeAnualRewardsUSD override), setter with new cache key methods
  • Update state sync services and dex-state microservice compute services
  • Update cache warmers with V1/V2 branching logic to call the correct setter methods per farm version
  • Update proto definitions, mocks, and test files

How to test

  • Verify staking APR calculations return correct values using per-second reward rates
  • Verify farm V2 APR and boosted rewards calculations use time-based logic
  • Verify farm V1.x farms continue to work with block-based logic unchanged
  • Verify cache warmers correctly branch between V1 (block-based) and V2 (time-based) setters
  • Verify calling rewardsPerBlock() on a V2 farm instance throws a clear error

Signed-off-by: Claudiu Lataretu <claudiu.lataretu@gmail.com>
Signed-off-by: Claudiu Lataretu <claudiu.lataretu@gmail.com>
Signed-off-by: Claudiu Lataretu <claudiu.lataretu@gmail.com>
Signed-off-by: Claudiu Lataretu <claudiu.lataretu@gmail.com>
Signed-off-by: Claudiu Lataretu <claudiu.lataretu@gmail.com>
Signed-off-by: Claudiu Lataretu <claudiu.lataretu@gmail.com>
@codecov
Copy link

codecov bot commented Mar 2, 2026

Codecov Report

❌ Patch coverage is 25.92593% with 80 lines in your changes missing coverage. Please review.
✅ Project coverage is 53.87%. Comparing base (cb3f8a9) to head (a43d64e).
⚠️ Report is 27 commits behind head on feat/state-rpc.

Files with missing lines Patch % Lines
...odules/farm/v2/services/farm.v2.compute.service.ts 0.00% 20 Missing ⚠️
...rc/modules/farm/v2/services/farm.v2.abi.service.ts 11.11% 16 Missing ⚠️
...odules/staking/services/staking.compute.service.ts 60.71% 11 Missing ⚠️
src/common.app.module.ts 9.09% 8 Missing and 2 partials ⚠️
...rc/modules/staking/services/staking.abi.service.ts 22.22% 7 Missing ⚠️
...es/analytics/services/analytics.compute.service.ts 44.44% 5 Missing ⚠️
src/modules/farm/mocks/farm.v2.abi.service.mock.ts 20.00% 4 Missing ⚠️
src/modules/pair/services/pair.abi.service.ts 0.00% 3 Missing ⚠️
.../modules/staking/mocks/staking.abi.service.mock.ts 0.00% 2 Missing ⚠️
src/modules/farm/v2/services/farm.v2.service.ts 0.00% 1 Missing ⚠️
... and 1 more
Additional details and impacted files
@@                Coverage Diff                 @@
##           feat/state-rpc    #1745      +/-   ##
==================================================
- Coverage           54.02%   53.87%   -0.15%     
==================================================
  Files                 302      302              
  Lines               14402    14434      +32     
  Branches             1926     1935       +9     
==================================================
- Hits                 7780     7776       -4     
+ Misses               6616     6353     -263     
- Partials                6      305     +299     
Flag Coverage Δ
unittests 53.87% <25.92%> (-0.15%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@claudiulataretu claudiulataretu marked this pull request as draft March 3, 2026 09:54
Signed-off-by: Claudiu Lataretu <claudiu.lataretu@gmail.com>
Signed-off-by: Claudiu Lataretu <claudiu.lataretu@gmail.com>
Signed-off-by: Claudiu Lataretu <claudiu.lataretu@gmail.com>
Signed-off-by: Claudiu Lataretu <claudiu.lataretu@gmail.com>
Signed-off-by: Claudiu Lataretu <claudiu.lataretu@gmail.com>
Signed-off-by: Claudiu Lataretu <claudiu.lataretu@gmail.com>
Signed-off-by: Claudiu Lataretu <claudiu.lataretu@gmail.com>
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.

1 participant