Skip to content

Commit 7448542

Browse files
committed
fix: allow passing optimistic timestamp from outside
1 parent e921a6b commit 7448542

File tree

5 files changed

+22
-17
lines changed

5 files changed

+22
-17
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
"@gearbox-protocol/eslint-config": "2.0.0-next.2",
2929
"@gearbox-protocol/liquidator-v2-contracts": "^2.2.2",
3030
"@gearbox-protocol/prettier-config": "2.0.0",
31-
"@gearbox-protocol/sdk": "3.0.0-vfour.237",
31+
"@gearbox-protocol/sdk": "3.0.0-vfour.249",
3232
"@gearbox-protocol/types": "^1.14.3",
3333
"@types/node": "^22.12.0",
3434
"@uniswap/sdk-core": "^7.5.0",

src/attachSDK.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -31,18 +31,18 @@ export default async function attachSDK(): Promise<CreditAccountsService> {
3131
// Also, when forking anvil->anvil (when running on testnets) block.timestamp can be in future because min ts for block is 1 seconds,
3232
// and scripts can take dozens of blocks (hundreds for faucet). So we take min value;
3333
const nowMs = new Date().getTime();
34-
const redstoneIntervalMs = 60_000;
35-
optimisticTimestamp =
36-
redstoneIntervalMs *
37-
Math.floor((Number(block.timestamp) * 1000) / redstoneIntervalMs);
38-
const deltaS = Math.floor((nowMs - optimisticTimestamp) / 1000);
39-
if (deltaS < 0) {
40-
optimisticTimestamp =
41-
Math.floor((nowMs - redstoneIntervalMs) / redstoneIntervalMs) *
42-
redstoneIntervalMs;
43-
} else if (deltaS * 1000 < redstoneIntervalMs) {
44-
optimisticTimestamp -= redstoneIntervalMs;
34+
if (config.optimisticTimestamp) {
35+
optimisticTimestamp = config.optimisticTimestamp;
36+
} else {
37+
const redstoneIntervalMs = 60_000;
38+
const anvilTsMs =
39+
redstoneIntervalMs *
40+
Math.floor((Number(block.timestamp) * 1000) / redstoneIntervalMs);
41+
const fromNowTsMs =
42+
redstoneIntervalMs * Math.floor(nowMs / redstoneIntervalMs - 1);
43+
optimisticTimestamp = Math.min(anvilTsMs, fromNowTsMs);
4544
}
45+
const deltaS = Math.floor((nowMs - optimisticTimestamp) / 1000);
4646
logger.info(
4747
{ tag: "timing" },
4848
`will use optimistic timestamp: ${new Date(optimisticTimestamp)} (${optimisticTimestamp}, delta: ${deltaS}s)`,

src/config/env.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ const envConfigMapping: Record<keyof ConfigSchema, string | string[]> = {
1919
minBalance: "MIN_BALANCE",
2020
oneInchApiKey: "ONE_INCH_API_KEY",
2121
optimistic: "OPTIMISTIC",
22+
optimisticTimestamp: "OPTIMISTIC_TIMESTAMP",
2223
outDir: "OUT_DIR",
2324
outEndpoint: "OUT_ENDPOINT",
2425
outHeaders: "OUT_HEADERS",

src/config/schema.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,10 @@ export const ConfigSchema = z.object({
7878
* Enable optimistic liquidations
7979
*/
8080
optimistic: booleanLike.pipe(z.boolean().optional()),
81+
/**
82+
* Optimistic timestamp to pass from external runner, in ms
83+
*/
84+
optimisticTimestamp: z.number().int().positive().nullish(),
8185
/**
8286
* Redstone gateways override
8387
* Set local caching proxies to avoid rate limiting in test environment

yarn.lock

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1730,7 +1730,7 @@ __metadata:
17301730
"@gearbox-protocol/eslint-config": "npm:2.0.0-next.2"
17311731
"@gearbox-protocol/liquidator-v2-contracts": "npm:^2.2.2"
17321732
"@gearbox-protocol/prettier-config": "npm:2.0.0"
1733-
"@gearbox-protocol/sdk": "npm:3.0.0-vfour.237"
1733+
"@gearbox-protocol/sdk": "npm:3.0.0-vfour.249"
17341734
"@gearbox-protocol/types": "npm:^1.14.3"
17351735
"@types/node": "npm:^22.12.0"
17361736
"@uniswap/sdk-core": "npm:^7.5.0"
@@ -1767,9 +1767,9 @@ __metadata:
17671767
languageName: node
17681768
linkType: hard
17691769

1770-
"@gearbox-protocol/sdk@npm:3.0.0-vfour.237":
1771-
version: 3.0.0-vfour.237
1772-
resolution: "@gearbox-protocol/sdk@npm:3.0.0-vfour.237"
1770+
"@gearbox-protocol/sdk@npm:3.0.0-vfour.249":
1771+
version: 3.0.0-vfour.249
1772+
resolution: "@gearbox-protocol/sdk@npm:3.0.0-vfour.249"
17731773
dependencies:
17741774
"@redstone-finance/evm-connector": "npm:^0.7.3"
17751775
"@redstone-finance/protocol": "npm:^0.7.3"
@@ -1779,7 +1779,7 @@ __metadata:
17791779
viem: "npm:>=2.21.0 <3.0.0"
17801780
peerDependencies:
17811781
axios: ^1.0.0
1782-
checksum: 10c0/57e6eea4641d1759952b4b9b892f9219574b7b9e8d79be9f65f6629155ed2ac23e59da1ec822a897b9dcf351e184ed77587c469c8e40d7a0c1c6f7b1e2ea0124
1782+
checksum: 10c0/83fef156ea311ed62abba9888a9044c173e94092e79da1bc75c2e6fcbea7f9799a8fa329d3d7d1b6562e685085d0f09dc53a0700e0904a93d62ace711027c4ca
17831783
languageName: node
17841784
linkType: hard
17851785

0 commit comments

Comments
 (0)