Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(Dataworker): Support pre-fill refunds and duplicate deposits #2010

Merged
merged 77 commits into from
Feb 3, 2025
Merged
Changes from all commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
e4d8275
feat(Dataworker): Support pre-fill refunds
nicholaspai Jan 23, 2025
fbb6147
Finish new tests
nicholaspai Jan 23, 2025
40ad15f
Update Dataworker.buildRoots.ts
nicholaspai Jan 23, 2025
cc956ac
Revert "Update Dataworker.buildRoots.ts"
nicholaspai Jan 23, 2025
b099cf0
Add test against duplicate deposits
nicholaspai Jan 23, 2025
3d4097d
Add unit tests for duplicate deposits
nicholaspai Jan 24, 2025
12673d8
Import beta sdk
nicholaspai Jan 24, 2025
79e8490
Merge branch 'master' into prefills
nicholaspai Jan 24, 2025
b7bf412
import sdk
nicholaspai Jan 24, 2025
1454f10
update import
nicholaspai Jan 24, 2025
8879124
Update package.json
nicholaspai Jan 24, 2025
6ffc950
Update config.yml
nicholaspai Jan 24, 2025
6e78182
wip
nicholaspai Jan 24, 2025
bc1669d
Fix tests
nicholaspai Jan 24, 2025
7f32c08
Update SpokePoolUtils.ts
nicholaspai Jan 24, 2025
9cd9007
Update SpokePoolUtils.ts
nicholaspai Jan 24, 2025
81e2ab4
Merge branch 'master' into prefills
nicholaspai Jan 24, 2025
284b243
Update Dataworker.loadData.prefill.ts
nicholaspai Jan 24, 2025
e203452
Merge branch 'master' into prefills
nicholaspai Jan 24, 2025
fdc2c87
Merge branch 'master' into prefills
nicholaspai Jan 24, 2025
68890bd
Add tests for zero value deposits
nicholaspai Jan 26, 2025
f3c5dd3
Merge branch 'master' into prefills
nicholaspai Jan 27, 2025
bac9f3a
Merge branch 'master' into prefills
nicholaspai Jan 27, 2025
72d2560
Merge branch 'master' into prefills
nicholaspai Jan 27, 2025
75e35bc
Split up tests to speed up CI
nicholaspai Jan 27, 2025
16702f1
Merge branch 'master' into prefills
nicholaspai Jan 27, 2025
f1bbc6e
import
nicholaspai Jan 27, 2025
cc902c5
Update package.json
nicholaspai Jan 27, 2025
5bd8e3e
Update yarn.lock
nicholaspai Jan 27, 2025
496e1b6
import
nicholaspai Jan 27, 2025
de14a4e
Fix tests
nicholaspai Jan 28, 2025
512937d
fix
nicholaspai Jan 29, 2025
95fac03
bump
nicholaspai Jan 29, 2025
1f7f2cd
Remove mocked version bump in non-prefill tests
nicholaspai Jan 29, 2025
ce657f5
wip
nicholaspai Jan 29, 2025
b5252cf
lint
nicholaspai Jan 29, 2025
d11e982
bump
nicholaspai Jan 29, 2025
cc5ed3e
Merge branch 'master' into prefills
nicholaspai Jan 29, 2025
9949679
bump
nicholaspai Jan 29, 2025
c46bcd2
fix
nicholaspai Jan 29, 2025
959b57f
import
nicholaspai Jan 30, 2025
b385670
fix
nicholaspai Jan 30, 2025
7d8ea1f
Merge branch 'master' into prefills
nicholaspai Jan 30, 2025
4cbfc5d
Update Dataworker.loadData.fill.ts
nicholaspai Jan 30, 2025
92ff83e
Fix tests
nicholaspai Jan 30, 2025
70ac78a
move some bytes32 invalid test cases to pre-fills because they hit pr…
nicholaspai Jan 30, 2025
763e27c
WIP
nicholaspai Jan 30, 2025
e552381
Update Dataworker.loadData.prefill.ts
nicholaspai Jan 30, 2025
96007bf
update
nicholaspai Jan 30, 2025
135a744
Merge branch 'master' into prefills
nicholaspai Jan 30, 2025
3f43367
WIP
nicholaspai Jan 30, 2025
f25b7c4
fix
nicholaspai Jan 30, 2025
18a2b9d
wip
nicholaspai Jan 31, 2025
649c5f3
update
nicholaspai Jan 31, 2025
43d73f5
fix
nicholaspai Jan 31, 2025
6c6c3d4
Merge branch 'master' into prefills
nicholaspai Jan 31, 2025
2694774
Update Dataworker.loadData.prefill.ts
nicholaspai Jan 31, 2025
8e3c775
fix
nicholaspai Jan 31, 2025
3bfc2e1
bump package to new duplicate refund version
nicholaspai Jan 31, 2025
e9c384d
Add test cases for historical deposit query when matched deposit is i…
nicholaspai Jan 31, 2025
9540e81
fix
nicholaspai Jan 31, 2025
5b060b1
Update Dataworker.loadData.fill.ts
nicholaspai Jan 31, 2025
a485768
Update Dataworker.loadData.fill.ts
nicholaspai Jan 31, 2025
45aa837
pay refunds to pre-filler unless slow fill
nicholaspai Jan 31, 2025
0f44c36
Update Dataworker.loadData.prefill.ts
nicholaspai Jan 31, 2025
5961af9
Update Dataworker.loadData.prefill.ts
nicholaspai Jan 31, 2025
2ee3df9
Merge branch 'master' into prefills
nicholaspai Jan 31, 2025
2e761eb
fix
nicholaspai Jan 31, 2025
6579181
Add verifyFillRepayment test for pre fills
nicholaspai Feb 1, 2025
f003ad5
add asserts
nicholaspai Feb 2, 2025
5532611
wip
nicholaspai Feb 3, 2025
dc1efcf
Merge branch 'master' into prefills
nicholaspai Feb 3, 2025
a9a4b5a
34
nicholaspai Feb 3, 2025
db032e7
fix test
nicholaspai Feb 3, 2025
a92ac5e
4.0.0
nicholaspai Feb 3, 2025
49538ee
Update Constants.ts
nicholaspai Feb 3, 2025
9476bc0
Merge branch 'master' into prefills
nicholaspai Feb 3, 2025
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
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -12,7 +12,7 @@
"dependencies": {
"@across-protocol/constants": "^3.1.30",
"@across-protocol/contracts": "^3.0.25",
"@across-protocol/sdk": "^3.4.20",
"@across-protocol/sdk": "^4.0.0",
"@arbitrum/sdk": "^4.0.2",
"@consensys/linea-sdk": "^0.2.1",
"@defi-wonderland/smock": "^2.3.5",
7 changes: 3 additions & 4 deletions scripts/withdrawFromOpStack.ts
Original file line number Diff line number Diff line change
@@ -97,8 +97,9 @@ export async function run(): Promise<void> {
"0x", // _data
];

const functionNameToCall = l1TokenInfo.symbol === "ETH" ? "bridgeETHTo" : "bridgeERC20To";
console.log(
`Submitting bridgeETHTo on the OVM standard bridge @ ${ovmStandardBridge.address} with the following args: `,
`Submitting ${functionNameToCall} on the OVM standard bridge @ ${ovmStandardBridge.address} with the following args: `,
...bridgeArgs
);

@@ -122,9 +123,7 @@ export async function run(): Promise<void> {
if (!(await askYesNoQuestion("\nDo you want to proceed?"))) {
return;
}
const withdrawal = await ovmStandardBridge[l1TokenInfo.symbol === "ETH" ? "bridgeETHTo" : "bridgeERC20To"](
...bridgeArgs
);
const withdrawal = await ovmStandardBridge[functionNameToCall](...bridgeArgs);
console.log(`Submitted withdrawal: ${blockExplorerLink(withdrawal.hash, chainId)}.`);
const receipt = await withdrawal.wait();
console.log("Receipt", receipt);
559 changes: 559 additions & 0 deletions test/Dataworker.loadData.deposit.ts

Large diffs are not rendered by default.

627 changes: 268 additions & 359 deletions test/Dataworker.loadData.fill.ts

Large diffs are not rendered by default.

775 changes: 775 additions & 0 deletions test/Dataworker.loadData.prefill.ts

Large diffs are not rendered by default.

585 changes: 134 additions & 451 deletions test/Dataworker.loadData.slowFill.ts

Large diffs are not rendered by default.

580 changes: 580 additions & 0 deletions test/Dataworker.loadData.unexecutableSlowFill.ts

Large diffs are not rendered by default.

19 changes: 18 additions & 1 deletion test/mocks/MockBundleDataClient.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
import { BundleDataClient } from "../../src/clients";
import { BundleDataClient, SpokePoolClient } from "../../src/clients";
import { CombinedRefunds } from "../../src/dataworker/DataworkerUtils";
import { DepositWithBlock, FillWithBlock } from "../../src/interfaces";

export class MockBundleDataClient extends BundleDataClient {
private pendingBundleRefunds: CombinedRefunds = {};
private nextBundleRefunds: CombinedRefunds = {};
private matchingFillEvents: Record<string, FillWithBlock> = {};

async getPendingRefundsFromValidBundles(): Promise<CombinedRefunds[]> {
return [this.pendingBundleRefunds];
@@ -28,4 +30,19 @@ export class MockBundleDataClient extends BundleDataClient {
getPersistedNextBundleRefunds(): Promise<CombinedRefunds | undefined> {
return Promise.resolve(undefined);
}

setMatchingFillEvent(deposit: DepositWithBlock, fill: FillWithBlock): void {
const relayDataHash = this.getRelayHashFromEvent(deposit);
this.matchingFillEvents[relayDataHash] = fill;
}

findMatchingFillEvent(
deposit: DepositWithBlock,
spokePoolClient: SpokePoolClient
): Promise<FillWithBlock | undefined> {
const relayDataHash = this.getRelayHashFromEvent(deposit);
return this.matchingFillEvents[relayDataHash]
? Promise.resolve(this.matchingFillEvents[relayDataHash])
: super.findMatchingFillEvent(deposit, spokePoolClient);
}
}
19 changes: 18 additions & 1 deletion test/mocks/MockSpokePoolClient.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import { clients } from "@across-protocol/sdk";
import { clients, interfaces } from "@across-protocol/sdk";
import { Deposit } from "../../src/interfaces";
export class MockSpokePoolClient extends clients.mocks.MockSpokePoolClient {
public maxFillDeadlineOverride?: number;
public oldestBlockTimestampOverride?: number;
private relayFillStatuses: Record<string, interfaces.FillStatus> = {};

public setMaxFillDeadlineOverride(maxFillDeadlineOverride?: number): void {
this.maxFillDeadlineOverride = maxFillDeadlineOverride;
@@ -18,4 +20,19 @@ export class MockSpokePoolClient extends clients.mocks.MockSpokePoolClient {
public getOldestTime(): number {
return this.oldestBlockTimestampOverride ?? super.getOldestTime();
}

public setRelayFillStatus(deposit: Deposit, fillStatus: interfaces.FillStatus): void {
const relayDataHash = deposit.depositId.toString();
this.relayFillStatuses[relayDataHash] = fillStatus;
}
public relayFillStatus(
relayData: interfaces.RelayData,
blockTag?: number | "latest",
destinationChainId?: number
): Promise<interfaces.FillStatus> {
const relayDataHash = relayData.depositId.toString();
return this.relayFillStatuses[relayDataHash]
? Promise.resolve(this.relayFillStatuses[relayDataHash])
: super.relayFillStatus(relayData, blockTag, destinationChainId);
}
}
8 changes: 4 additions & 4 deletions yarn.lock
Original file line number Diff line number Diff line change
@@ -53,10 +53,10 @@
yargs "^17.7.2"
zksync-web3 "^0.14.3"

"@across-protocol/sdk@^3.4.20":
version "3.4.20"
resolved "https://registry.yarnpkg.com/@across-protocol/sdk/-/sdk-3.4.20.tgz#0fa2b223e264fc8ff9ea47ab9e65ad9cd176848d"
integrity sha512-HUgWYfbH0haa2r9nl892IE6U+z+QtowcYwHzcimiBlux2+tn6Ztq80CEOpp1367GB4gBiWz1stL5TQfRi+vxtg==
"@across-protocol/sdk@^4.0.0":
version "4.0.0"
resolved "https://registry.yarnpkg.com/@across-protocol/sdk/-/sdk-4.0.0.tgz#83242907471577a8fe670dcee3d633b2338d15b9"
integrity sha512-qDkOYHlQy8KhT5WStRXJybp84pFuxQc4MgMwZzOOBTvvrGWtklSpWY9NT8Uu3Rd9v9Yn+oa/MRURdFmeMsJnrg==
dependencies:
"@across-protocol/across-token" "^1.0.0"
"@across-protocol/constants" "^3.1.30"