Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
120 commits
Select commit Hold shift + click to select a range
28db435
add transfer delegation functionality
randy-cro Mar 11, 2026
a239323
add tier and tier position structs
randy-cro Mar 12, 2026
8bef3e2
rename TierPosition to Position + add authority gated messages MsgAdd…
randy-cro Mar 12, 2026
9a3d59a
refactor and remove unneeded keeper wrapper methods
randy-cro Mar 13, 2026
7434edf
check if transfer delegation has valid positive amount
randy-cro Mar 13, 2026
befbfbe
add CreatePosition + some refactoring
randy-cro Mar 13, 2026
9b9ba8c
refactor AmountLocked to Amount
randy-cro Mar 13, 2026
caabd8f
fix TransferDelegation to only serve for same validator delegation tr…
randy-cro Mar 13, 2026
7c7f71b
implement MsgLockTier and MsgCommitDelegationToTier
randy-cro Mar 13, 2026
a1230d6
update transfer delegation to only allow transfer to bonded validator…
randy-cro Mar 13, 2026
b2d5614
MsgLockTier to only allow bonded validators only + add tests for MsgL…
randy-cro Mar 13, 2026
2fcb57b
delegateFromPosition should always be subtractAccount true because fu…
randy-cro Mar 13, 2026
8ddc212
clean up
randy-cro Mar 13, 2026
8a1c5f8
claim all rewards when validator unbonds (hooks)
randy-cro Mar 14, 2026
c7df19f
add BeforeValidatorSlashed and AfterValidatorBonded hooks
randy-cro Mar 14, 2026
1e068a2
register hooks in app.go
randy-cro Mar 14, 2026
305c2d8
add BaseRewardsPerShare for accounting base rewards
randy-cro Mar 16, 2026
a4ffea3
add defensive check for baserewardspershare negative diff
randy-cro Mar 16, 2026
cbfe94b
add common function for UpdateBaseRewardsPerShare and check validator…
randy-cro Mar 16, 2026
11def47
add setters for Position fields
randy-cro Mar 16, 2026
e8df2e9
slashing to use delegated tokens instead of position.Amount
randy-cro Mar 16, 2026
bbc7e68
add slash via unbonding id
randy-cro Mar 16, 2026
144df2f
fix use tokensfromShares instead
randy-cro Mar 16, 2026
bce3cb9
use delegated tokens for bonus rewards calculation
randy-cro Mar 16, 2026
58d06d5
minor refactor
randy-cro Mar 17, 2026
89562d3
add MsgTierDelegate, MsgTierUndelegate and MsgTierRedelgate
randy-cro Mar 17, 2026
31671b8
add MsgAddToTierPosition, MsgTriggerExitFromTier and MsgTriggerExitFr…
randy-cro Mar 17, 2026
aa2b1da
fix missing msgs in autocli
randy-cro Mar 17, 2026
3b1b9de
fix lint
randy-cro Mar 17, 2026
11514bb
update SDK dependency
JayT106 Mar 23, 2026
01fb46d
fix(tieredrewards): fix chain-halt on 100% slash, bonus pool and Begi…
JayT106 Mar 24, 2026
a543a89
Update nix.yml: replace go_1_24 with go_1_25 (go_1_24 was removed
JayT106 Mar 24, 2026
9a6f6bd
better error handling
thomas-nguy Mar 24, 2026
141350a
cleanup
thomas-nguy Mar 24, 2026
e49956b
fix integration test
thomas-nguy Mar 24, 2026
dc5ec95
fix lint
thomas-nguy Mar 24, 2026
77cece4
fix integrationt ests
thomas-nguy Mar 24, 2026
0b05e25
add position id in response
thomas-nguy Mar 24, 2026
3c511bb
feat(tieredrewards): merge PR #1243 — add remaining Msg handlers and …
JayT106 Mar 24, 2026
7e1fb17
fix lint
JayT106 Mar 24, 2026
579536f
add governance voting power from tiered positions
JayT106 Mar 18, 2026
4915626
fix(tieredrewards): harden governance voting power implementation
JayT106 Mar 23, 2026
f5bebd1
fix(tieredrewards): add missing grpc imports and lint fixes for PR #1…
JayT106 Mar 24, 2026
246273c
fix: update DelegatedShares on redelegation slash
JayT106 Mar 18, 2026
44054c3
track validator status when claiming rewards
JayT106 Mar 18, 2026
f87ca07
lint
JayT106 Mar 24, 2026
00333ce
add full genesis export/import for tieredrewards module
JayT106 Mar 20, 2026
a391050
lint fix
JayT106 Mar 24, 2026
bef9342
fix: align tieredrewards with ADR-006 deviations and codec registration
JayT106 Mar 24, 2026
64276a3
fix: update stale comment on GetVotingPowerForAddress
JayT106 Mar 24, 2026
d84b18b
chore: remove review issue numbers from code comments
JayT106 Mar 24, 2026
aac55f2
refactor: simplify tieredrewards module, remove redundant comments
JayT106 Mar 24, 2026
3453ec7
remove unnecessary doc
JayT106 Mar 24, 2026
e96357c
test: add tieredrewards integration tests (ADR-006)
JayT106 Mar 26, 2026
54727c1
merge feat/tokenomic
JayT106 Mar 26, 2026
08a0e78
remove unneed doc
JayT106 Mar 26, 2026
935d4c7
make transferDelegation internal
thomas-nguy Mar 26, 2026
8ca1998
make method private when possible
thomas-nguy Mar 26, 2026
df6582d
fail the tx in case of not enough token in pool
thomas-nguy Mar 26, 2026
7465c7d
lint
thomas-nguy Mar 26, 2026
6a2e206
avoid claiming reward if it was claimed already
thomas-nguy Mar 26, 2026
fe3c9f0
small todo
thomas-nguy Mar 26, 2026
f560445
Simplify integration tests, use unit tests to instead
JayT106 Mar 26, 2026
5d7cdee
remove unneed unit test
JayT106 Mar 26, 2026
2d496e4
fix: run black in lint-fix to auto-format Python integration tests
JayT106 Mar 26, 2026
95b9378
lint
JayT106 Mar 26, 2026
a816ab6
add todo
JayT106 Mar 26, 2026
89d6ecc
lint
JayT106 Mar 26, 2026
d53f588
add/update unit tests for slash/hooks/rewards
JayT106 Mar 27, 2026
a66dcef
FundTierPool only accepts bondDenom
JayT106 Mar 27, 2026
c585bd1
use collections.IndexedMap to replace collections.Map for better gc m…
JayT106 Mar 27, 2026
23a6fc3
add new message to clear position
thomas-nguy Mar 27, 2026
4ef48f7
add docs
thomas-nguy Mar 29, 2026
060a2be
cleanup
thomas-nguy Mar 29, 2026
4c4f9f6
more cleanup
thomas-nguy Mar 29, 2026
a47ec81
align ADR with implementation
thomas-nguy Mar 30, 2026
94b735b
Merge branch 'feat/tokenomic' into jt/pr1242-followup
randy-cro Mar 30, 2026
dd7dcb5
remove IsActiveForGovernance
randy-cro Mar 30, 2026
b7b3681
remove position_store, getPosition moves to position.go
randy-cro Mar 30, 2026
501334d
remove unused ctx in validateClaimRewards
randy-cro Mar 30, 2026
4ddb001
use GetPosition for WithdrawFromTier
randy-cro Mar 30, 2026
b7497d4
total voting power should be calculated by shares
randy-cro Mar 30, 2026
af4eb53
slashPositionByUnbondingId does not need to check for ErrNotFound sin…
randy-cro Mar 30, 2026
ac51f32
refactor all to use getPosition instead of Positions.Get for consistency
randy-cro Mar 30, 2026
630a4cc
remove outdated comments
randy-cro Mar 30, 2026
0da3fdc
remove unused parameters
randy-cro Mar 30, 2026
0be1ed3
fix ErrNotfound to use ErrPositionNotFound
randy-cro Mar 30, 2026
3d99a70
Remove ErrNotFound error from Collections.Remove
randy-cro Mar 30, 2026
4e28037
compute final amount left after slashing to prevent insolvency when w…
randy-cro Mar 30, 2026
d029a46
fix lint
randy-cro Mar 30, 2026
13448cb
fix share-to-token rounding insolvency and reconcile pos.Amount in de…
JayT106 Mar 30, 2026
faec0c5
fix tieredrewards test quality: use typed error checks and add missin…
JayT106 Mar 31, 2026
0f57a5f
revert MsgCommitDelegationToTier/MsgLockTier MinLock check when recon…
JayT106 Mar 31, 2026
1c06372
minor refinement
randy-cro Mar 31, 2026
a2684cc
move abci_test to keeper and convert the tests to use KeeperSuite
randy-cro Mar 31, 2026
314a0bc
add dust going to the last validator test
randy-cro Mar 31, 2026
95189ad
remove comment
randy-cro Mar 31, 2026
53e0126
reuse slashPositionByUnbondingId for slashRedelegationPosition
randy-cro Mar 31, 2026
05b02c8
add check for unbonding for withdraw from tier + split unbondingMappi…
randy-cro Mar 31, 2026
845409b
refactor AfterSlashUnbondingDelegation to AfterUnbondingDelegationSla…
randy-cro Mar 31, 2026
cc9537b
undelegate is allowed only when exit duration has elapsed
randy-cro Mar 31, 2026
b5fd181
lint
JayT106 Mar 31, 2026
788025b
fix tier hook bonus checkpoint persistence
JayT106 Mar 31, 2026
28fac7d
update ADR to align the implementation
JayT106 Mar 31, 2026
bca4f3d
reduce tier position write amplification
JayT106 Mar 31, 2026
065f8c1
reduce reward settlement passes
JayT106 Mar 31, 2026
96e3e3b
add coverage for reward settlement edge cases
JayT106 Mar 31, 2026
99a0de6
remove unused function
JayT106 Mar 31, 2026
92aece8
do not pass in pointer for position if unnecessary
randy-cro Apr 1, 2026
fdc7016
remove unneeded helper function
randy-cro Apr 1, 2026
15996a7
refactor: move slashing and delegation out from rewards.go
randy-cro Apr 1, 2026
3578933
refactor claimRewardsForPositions to settleRewardsForPositions
randy-cro Apr 1, 2026
6c3eaef
refactor hasActivePositionsForTier to hasPositionsForTier
randy-cro Apr 1, 2026
fc6cfa1
improve readability
randy-cro Apr 1, 2026
b45dd20
update export methods
randy-cro Apr 1, 2026
b3c2f0b
remove MsgTransferTierPosition from ADR
randy-cro Apr 1, 2026
5ba52c4
make validator compulsory for MsgLockTier
randy-cro Apr 1, 2026
d199ab2
fix lint
randy-cro Apr 1, 2026
7ec9eb4
expose TotalDelegatedVotingPower function to fit the ADR specs
JayT106 Apr 1, 2026
ecfb796
combine similar tests
JayT106 Apr 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@

## Features
- [#1236](https://github.com/crypto-org-chain/chain-main/pull/1236) Add inflation decay. Refactor maxsupply module to inflation module
- [#1237](https://github.com/crypto-org-chain/chain-main/pull/1237) Add tierrewards module with base rewards top up
- [#1237](https://github.com/crypto-org-chain/chain-main/pull/1237) Add basic code for tierrewards module with base rewards top up
- [#1250](https://github.com/crypto-org-chain/chain-main/pull/1250) Remove DecayStartHeight from inflation module
- [#1251](https://github.com/crypto-org-chain/chain-main/pull/1251) Remove unused decay_start_height field and move genesis to its own file
- [#1249](https://github.com/crypto-org-chain/chain-main/pull/1249) Implement tiered rewards module

### Improvements
- [#1169](https://github.com/crypto-org-chain/chain-main/pull/1169) Update linter and tidy up code
Expand Down
8 changes: 6 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,7 @@ lint-fix:
@echo "--> Running linter"
@golangci-lint run --fix
@go mod verify
@black --line-length 88 integration_tests/
@flake8 --show-source --count --statistics
@find . -name "*.nix" -type f | xargs nixfmt -c

Expand Down Expand Up @@ -308,8 +309,11 @@ nix-integration-test-gov: check-network
nix-integration-test-inflation: check-network
nix-shell ./integration_tests/shell.nix --run "pytest -v -m inflation"

nix-integration-test-base-rewards: check-network
nix-shell ./integration_tests/shell.nix --run "pytest -v -m base_rewards"
nix-integration-test-base-rewards: check-network
nix-shell ./integration_tests/shell.nix --run "pytest -v -m base_rewards"

nix-integration-test-tieredrewards: check-network
nix-shell ./integration_tests/shell.nix --run "pytest -v -m tieredrewards"

nix-integration-test-grpc: check-network make-proto
nix-shell ./integration_tests/shell.nix --run "pytest -v -m grpc"
Expand Down
9 changes: 9 additions & 0 deletions app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -162,12 +162,14 @@ var (
ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner},
icatypes.ModuleName: nil,
tieredrewardstypes.RewardsPoolName: nil,
tieredrewardstypes.ModuleName: {authtypes.Staking},
}
// moduleAccsAllowedToReceiveExternalFunds defines module accounts that can
// receive tokens from external accounts via MsgSend, bypassing the default
// block on sends to module accounts.
moduleAccsAllowedToReceiveExternalFunds = map[string]bool{
tieredrewardstypes.RewardsPoolName: true,
tieredrewardstypes.ModuleName: true,
}
)

Expand Down Expand Up @@ -401,6 +403,7 @@ func New(
app.StakingKeeper.SetHooks(stakingtypes.NewMultiStakingHooks(
app.DistrKeeper.Hooks(),
app.SlashingKeeper.Hooks(),
app.TieredRewardsKeeper.Hooks(),
))

app.AuthzKeeper = authzkeeper.NewKeeper(runtime.NewKVStoreService(keys[authzkeeper.StoreKey]), appCodec, app.MsgServiceRouter(), app.AccountKeeper)
Expand Down Expand Up @@ -433,12 +436,18 @@ func New(
Example of setting gov params:
govConfig.MaxMetadataLen = 10000
*/
tierTallyFn := tieredrewardskeeper.NewCalculateVoteResultsAndVotingPowerFn(
app.TieredRewardsKeeper,
app.StakingKeeper,
app.AccountKeeper,
)
govKeeper := govkeeper.NewKeeper(
appCodec,
runtime.NewKVStoreService(keys[govtypes.StoreKey]),
app.AccountKeeper, app.BankKeeper,
app.StakingKeeper, app.DistrKeeper,
app.MsgServiceRouter(), govConfig, authAddr,
govkeeper.WithCustomCalculateVoteResultsAndVotingPowerFn(tierTallyFn),
)
govKeeper.SetLegacyRouter(govRouter)
app.GovKeeper = *govKeeper.SetHooks(
Expand Down
2 changes: 1 addition & 1 deletion app/upgrades.go
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ func updateTieredRewardsParams(app *ChainApp, sdkCtx sdk.Context) error {
tieredrewardsParams := tieredrewardstypes.DefaultParams()
tieredrewardsParams.TargetBaseRewardsRate = math.LegacyMustNewDecFromStr("0.03") // 3%

if err := app.TieredRewardsKeeper.Params.Set(sdkCtx, tieredrewardsParams); err != nil {
if err := app.TieredRewardsKeeper.SetParams(sdkCtx, tieredrewardsParams); err != nil {
return err
}

Expand Down
2 changes: 1 addition & 1 deletion buf.work.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
version: v1
directories:
- proto
- third_party/ibc-go/proto
- third_party/ibc-go/proto
144 changes: 84 additions & 60 deletions doc/architecture/adr-006.md

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ require (
github.com/stretchr/testify v1.11.1
google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7
google.golang.org/grpc v1.75.0
google.golang.org/protobuf v1.36.10
gopkg.in/yaml.v2 v2.4.0
)

Expand Down Expand Up @@ -236,7 +237,6 @@ require (
google.golang.org/api v0.247.0 // indirect
google.golang.org/genproto v0.0.0-20250603155806-513f23925822 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect
google.golang.org/protobuf v1.36.10 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
gotest.tools/v3 v3.5.2 // indirect
nhooyr.io/websocket v1.8.11 // indirect
Expand All @@ -247,7 +247,7 @@ require (

replace github.com/crypto-org-chain/cronos-store/memiavl => github.com/crypto-org-chain/cronos-store/memiavl v0.0.0-20250912125026-c998a90e2881

replace github.com/cosmos/cosmos-sdk => github.com/crypto-org-chain/cosmos-sdk v0.0.0-20260311065045-34b487225358
replace github.com/cosmos/cosmos-sdk => github.com/randy-cro/cosmos-sdk v0.0.0-20260331080144-2685515a9e26

replace (
// use cosmos fork of keyring
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -918,8 +918,6 @@ github.com/creachadair/tomledit v0.0.24 h1:5Xjr25R2esu1rKCbQEmjZYlrhFkDspoAbAKb6
github.com/creachadair/tomledit v0.0.24/go.mod h1:9qHbShRWQzSCcn617cMzg4eab1vbLCOjOshAWSzWr8U=
github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/crypto-org-chain/cosmos-sdk v0.0.0-20260311065045-34b487225358 h1:hCOdp+XZwiw+0tIg+g4mlHgeWKaxwk+6yFJAqwKNfzk=
github.com/crypto-org-chain/cosmos-sdk v0.0.0-20260311065045-34b487225358/go.mod h1:N6YuprhAabInbT3YGumGDKONbvPX5dNro7RjHvkQoKE=
github.com/crypto-org-chain/cronos-store/memiavl v0.0.0-20250912125026-c998a90e2881 h1:EDyxlMIC50plAgvz+IY4Bu6ymLb/6BhNtQLc96VLQ14=
github.com/crypto-org-chain/cronos-store/memiavl v0.0.0-20250912125026-c998a90e2881/go.mod h1:Cgi3xIJ4py34GX6pr653a3BpAD9bLeq4kqkupow1T4g=
github.com/crypto-org-chain/cronos-store/store v0.0.0-20250912125026-c998a90e2881 h1:dl6VKXDHfMGZmadlh51nCiJoCPTLSRksN8F+P3y3ZtE=
Expand Down Expand Up @@ -1655,6 +1653,8 @@ github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1
github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg=
github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is=
github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
github.com/randy-cro/cosmos-sdk v0.0.0-20260331080144-2685515a9e26 h1:KhK6YvT2ajgDqrfhp3np8H8KY9gPmfKVjBDtgilg0zA=
github.com/randy-cro/cosmos-sdk v0.0.0-20260331080144-2685515a9e26/go.mod h1:N6YuprhAabInbT3YGumGDKONbvPX5dNro7RjHvkQoKE=
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM=
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
Expand Down
6 changes: 3 additions & 3 deletions gomod2nix.toml
Original file line number Diff line number Diff line change
Expand Up @@ -189,9 +189,9 @@ schema = 3
version = "v1.0.0-beta.5"
hash = "sha256-Fy/PbsOsd6iq0Njy3DVWK6HqWsogI+MkE8QslHGWyVg="
[mod."github.com/cosmos/cosmos-sdk"]
version = "v0.0.0-20260311065045-34b487225358"
hash = "sha256-C1rHn6NVMJUV+/bgeqkJjaT+BYXymVNQNGdggmkUon8="
replaced = "github.com/crypto-org-chain/cosmos-sdk"
version = "v0.0.0-20260331080144-2685515a9e26"
hash = "sha256-AAowre6PquPdYIiqICtebwrQn/ZfrZaDvBssAJZzMNk="
replaced = "github.com/randy-cro/cosmos-sdk"
[mod."github.com/cosmos/go-bip39"]
version = "v1.0.0"
hash = "sha256-Qm2aC2vaS8tjtMUbHmlBSagOSqbduEEDwc51qvQaBmA="
Expand Down
17 changes: 16 additions & 1 deletion integration_tests/configs/base_rewards.jsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,24 @@ local validator = import 'validator.jsonnet';
accounts: default.accounts + default.signers,
genesis+: genesis {
app_state+: {
// Pin max=min=0 so no new coins enter the fee collector during these tests.
mint: {
minter: {
inflation: '0.000000000000000000',
annual_provisions: '0.000000000000000000',
},
params: {
mint_denom: 'basecro',
inflation_rate_change: '0.130000000000000000',
inflation_max: '0.000000000000000000',
inflation_min: '0.000000000000000000',
goal_bonded: '0.670000000000000000',
blocks_per_year: '63115',
},
},
tieredrewards: {
params: {
target_base_rewards_rate: '100.000000000000000000',
target_base_rewards_rate: '1.000000000000000000',
},
},
},
Expand Down
65 changes: 65 additions & 0 deletions integration_tests/configs/tieredrewards.jsonnet
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
local default = import 'accounts.jsonnet';
local genesis = import 'genesis.jsonnet';
local validator = import 'validator.jsonnet';

{
'tieredrewards-test': {
validators: [validator {
commission_rate: '0.000000000000000000',
}, validator],
accounts: default.accounts + default.signers,
genesis+: genesis {
app_state+: {
// Increase voting_period so approve_proposal (deposit + 2 votes) completes
// within the window. genesis.jsonnet defaults to 10s which is too tight.
gov+: {
params+: {
voting_period: '30s',
max_deposit_period: '30s',
min_deposit: [{ denom: 'basecro', amount: '10000000' }],
},
},
// Disable mint inflation for clean reward accounting.
mint: {
minter: {
inflation: '0.000000000000000000',
annual_provisions: '0.000000000000000000',
},
params: {
mint_denom: 'basecro',
inflation_rate_change: '0.130000000000000000',
inflation_max: '0.000000000000000000',
inflation_min: '0.000000000000000000',
goal_bonded: '0.670000000000000000',
blocks_per_year: '63115',
},
},
tieredrewards: {
params: {
target_base_rewards_rate: '0.030000000000000000',
},
// Two tiers with short exit durations suitable for integration tests.
// Tier 1: 5s exit — used for full exit-flow tests.
// Tier 2: 30s exit — used for testing "exit not yet elapsed" rejection.
tiers: [
{
id: 1,
exit_duration: '5s',
bonus_apy: '0.040000000000000000',
min_lock_amount: '1000000',
close_only: false,
},
{
id: 2,
exit_duration: '30s',
bonus_apy: '0.020000000000000000',
min_lock_amount: '5000000',
close_only: false,
},
],
next_position_id: '1',
},
},
},
},
}
1 change: 1 addition & 0 deletions integration_tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ def pytest_configure(config):
config.addinivalue_line("markers", "byzantine: marks byzantine tests")
config.addinivalue_line("markers", "gov: marks gov tests")
config.addinivalue_line("markers", "solomachine: marks solomachine tests")
config.addinivalue_line("markers", "tieredrewards: marks tieredrewards tests")


@pytest.fixture(scope="session")
Expand Down
Loading
Loading