Skip to content

Commit 52b25a8

Browse files
fix(dpp): correct stepwise distribution logic in evaluate.rs (#2636)
1 parent 3d5328e commit 52b25a8

File tree

14 files changed

+231
-6
lines changed

14 files changed

+231
-6
lines changed

packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/distribution_function/evaluate.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,12 +72,12 @@ impl DistributionFunction {
7272
return Ok(*distribution_start_amount);
7373
}
7474

75-
let steps_passed = (x - s_val) / (*step_count as u64);
75+
let era_intervals_passed = (x - s_val) / (*step_count as u64);
7676
let max_intervals = max_interval_count.unwrap_or(
7777
DEFAULT_STEP_DECREASING_AMOUNT_MAX_CYCLES_BEFORE_TRAILING_DISTRIBUTION,
7878
) as u64;
7979

80-
if steps_passed > max_intervals {
80+
if era_intervals_passed > max_intervals {
8181
return Ok(*trailing_distribution_interval_amount);
8282
}
8383

@@ -86,7 +86,7 @@ impl DistributionFunction {
8686
let reduction_numerator =
8787
denominator.saturating_sub(*decrease_per_interval_numerator as u64);
8888

89-
for _ in 0..steps_passed {
89+
for _ in 0..era_intervals_passed {
9090
numerator = numerator * reduction_numerator / denominator;
9191
}
9292

@@ -101,9 +101,12 @@ impl DistributionFunction {
101101
Ok(result)
102102
}
103103
DistributionFunction::Stepwise(steps) => {
104+
if x < contract_registration_step {
105+
return Ok(0);
106+
}
104107
// Return the emission corresponding to the greatest key <= x.
105108
Ok(steps
106-
.range(..=x)
109+
.range(..=(x - contract_registration_step))
107110
.next_back()
108111
.map(|(_, amount)| *amount)
109112
.unwrap_or(0))

packages/rs-drive-abci/src/execution/check_tx/v0/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3658,6 +3658,7 @@ mod tests {
36583658
)]
36593659
.into(),
36603660
),
3661+
None,
36613662
platform_version,
36623663
);
36633664

packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/creation.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3662,6 +3662,7 @@ mod creation_tests {
36623662
None::<fn(&mut TokenConfiguration)>,
36633663
None,
36643664
None,
3665+
None,
36653666
platform_version,
36663667
);
36673668

packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/burn/mod.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ mod token_burn_tests {
2525
None::<fn(&mut TokenConfiguration)>,
2626
None,
2727
None,
28+
None,
2829
platform_version,
2930
);
3031

@@ -110,6 +111,7 @@ mod token_burn_tests {
110111
None::<fn(&mut TokenConfiguration)>,
111112
None,
112113
None,
114+
None,
113115
platform_version,
114116
);
115117

@@ -202,6 +204,7 @@ mod token_burn_tests {
202204
None::<fn(&mut TokenConfiguration)>,
203205
None,
204206
None,
207+
None,
205208
platform_version,
206209
);
207210

@@ -321,6 +324,7 @@ mod token_burn_tests {
321324
)]
322325
.into(),
323326
),
327+
None,
324328
platform_version,
325329
);
326330

@@ -582,6 +586,7 @@ mod token_burn_tests {
582586
)]
583587
.into(),
584588
),
589+
None,
585590
platform_version,
586591
);
587592

packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/config_update/mod.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ mod token_config_update_tests {
4242
}),
4343
None,
4444
None,
45+
None,
4546
platform_version,
4647
);
4748

@@ -145,6 +146,7 @@ mod token_config_update_tests {
145146
}),
146147
None,
147148
None,
149+
None,
148150
platform_version,
149151
);
150152

@@ -291,6 +293,7 @@ mod token_config_update_tests {
291293
}),
292294
None,
293295
None,
296+
None,
294297
platform_version,
295298
);
296299

@@ -400,6 +403,7 @@ mod token_config_update_tests {
400403
}),
401404
None,
402405
None,
406+
None,
403407
platform_version,
404408
);
405409

@@ -553,6 +557,7 @@ mod token_config_update_tests {
553557
}),
554558
None,
555559
None,
560+
None,
556561
platform_version,
557562
);
558563

@@ -643,6 +648,7 @@ mod token_config_update_tests {
643648
}),
644649
None,
645650
None,
651+
None,
646652
platform_version,
647653
);
648654

@@ -733,6 +739,7 @@ mod token_config_update_tests {
733739
}),
734740
None,
735741
None,
742+
None,
736743
platform_version,
737744
);
738745

@@ -829,6 +836,7 @@ mod token_config_update_tests {
829836
)]
830837
.into(),
831838
),
839+
None,
832840
platform_version,
833841
);
834842

@@ -949,6 +957,7 @@ mod token_config_update_tests {
949957
)]
950958
.into(),
951959
),
960+
None,
952961
platform_version,
953962
);
954963

@@ -1065,6 +1074,7 @@ mod token_config_update_tests {
10651074
)]
10661075
.into(),
10671076
),
1077+
None,
10681078
platform_version,
10691079
);
10701080

@@ -1279,6 +1289,7 @@ mod token_config_update_tests {
12791289
]
12801290
.into(),
12811291
),
1292+
None,
12821293
platform_version,
12831294
);
12841295

@@ -1669,6 +1680,7 @@ mod token_config_update_tests {
16691680
]
16701681
.into(),
16711682
),
1683+
None,
16721684
platform_version,
16731685
);
16741686

@@ -2130,6 +2142,7 @@ mod token_config_update_tests {
21302142
]
21312143
.into(),
21322144
),
2145+
None,
21332146
platform_version,
21342147
);
21352148

@@ -2879,6 +2892,7 @@ mod token_config_update_tests {
28792892
)]
28802893
.into(),
28812894
),
2895+
None,
28822896
platform_version,
28832897
);
28842898

packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/direct_selling/mod.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ mod token_selling_tests {
197197
)]
198198
.into(),
199199
),
200+
None,
200201
platform_version,
201202
);
202203

@@ -268,6 +269,7 @@ mod token_selling_tests {
268269
}),
269270
None,
270271
None,
272+
None,
271273
platform_version,
272274
);
273275

@@ -386,6 +388,7 @@ mod token_selling_tests {
386388
}),
387389
None,
388390
None,
391+
None,
389392
platform_version,
390393
);
391394

@@ -619,6 +622,7 @@ mod token_selling_tests {
619622
}),
620623
None,
621624
None,
625+
None,
622626
platform_version,
623627
);
624628

packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/distribution/perpetual/block_based.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ mod perpetual_distribution_block {
5656
}),
5757
None,
5858
None,
59+
None,
5960
platform_version,
6061
);
6162

@@ -298,6 +299,7 @@ mod perpetual_distribution_block {
298299
}),
299300
None,
300301
None,
302+
None,
301303
platform_version,
302304
);
303305

@@ -419,6 +421,7 @@ mod perpetual_distribution_block {
419421
}),
420422
None,
421423
None,
424+
None,
422425
platform_version,
423426
);
424427

@@ -2695,6 +2698,7 @@ mod test_suite {
26952698
token_config_fn,
26962699
self.start_time,
26972700
None,
2701+
None,
26982702
self.platform_version,
26992703
);
27002704

0 commit comments

Comments
 (0)