Skip to content

Commit 925f60a

Browse files
authored
Merge pull request #975 from ava-labs/fix/fee-tolerance
fix: fee tolerance range
2 parents fe6f66a + e3f0125 commit 925f60a

File tree

2 files changed

+9
-17
lines changed

2 files changed

+9
-17
lines changed

src/utils/validateBurnedAmount/validateDynamicBurnedAmount.test.ts

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,14 @@ import { validateDynamicBurnedAmount } from './validateDynamicBurnedAmount';
22
import { describe, it, expect } from 'vitest';
33

44
describe('validateDynamicBurnedAmount', () => {
5-
it('throws an expected error if feeTolerance is less than 1', () => {
5+
it('throws an expected error if feeTolerance is less than 0', () => {
66
expect(() =>
77
validateDynamicBurnedAmount({
88
burnedAmount: (280750n * 75n) / 100n, // 25% lower,
99
feeAmount: 280750n,
10-
feeTolerance: 0.5,
10+
feeTolerance: -1,
1111
}),
12-
).toThrowError('feeTolerance must be [1,100]');
13-
});
14-
it('throws an expected error if feeTolerance is greater than 100', () => {
15-
expect(() =>
16-
validateDynamicBurnedAmount({
17-
burnedAmount: (280750n * 75n) / 100n, // 25% lower,
18-
feeAmount: 280750n,
19-
feeTolerance: 101,
20-
}),
21-
).toThrowError('feeTolerance must be [1,100]');
12+
).toThrowError('feeTolerance must be be non-negative.');
2213
});
2314

2415
it('returns false if burned amount is over the tolerance range', () => {
@@ -59,7 +50,7 @@ describe('validateDynamicBurnedAmount', () => {
5950
const resultHigher = validateDynamicBurnedAmount({
6051
burnedAmount: (280750n * 125n) / 100n, // 25% higher
6152
feeAmount: 280750n,
62-
feeTolerance: 50.9,
53+
feeTolerance: 500.9,
6354
});
6455
expect(resultHigher).toStrictEqual({
6556
isValid: true,

src/utils/validateBurnedAmount/validateDynamicBurnedAmount.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,13 @@ export const validateDynamicBurnedAmount = ({
1818
}): { isValid: boolean; txFee: bigint } => {
1919
const feeToleranceInt = Math.floor(feeTolerance);
2020

21-
if (feeToleranceInt < 1 || feeToleranceInt > 100) {
22-
throw new Error('feeTolerance must be [1,100]');
21+
if (feeToleranceInt < 0) {
22+
throw new Error('feeTolerance must be be non-negative.');
2323
}
2424

25-
const min = (feeAmount * (100n - BigInt(feeToleranceInt))) / 100n;
26-
const max = (feeAmount * (100n + BigInt(feeToleranceInt))) / 100n;
25+
const delta = (feeAmount * BigInt(feeToleranceInt)) / 100n;
26+
const min = delta > feeAmount ? 0n : feeAmount - delta;
27+
const max = feeAmount + delta;
2728

2829
return {
2930
isValid: burnedAmount >= min && burnedAmount <= max,

0 commit comments

Comments
 (0)