Skip to content

Commit

Permalink
fix(bridges): Rename l1Gateway to l1Gateways and return string[] alwa…
Browse files Browse the repository at this point in the history
…ys (#1477)

* fix(bridges): Ensure l1Tokens and bridges are same length

## OpStackAdapter fix:
- If `bridges` is type string, we can't call .length on it otherwise we'll inadvertently use the char count of the string

## PolygonAdapter fix:
- Must add WETH to l1Token list before early exiting

* rename l1Gateway to l1Gateways
  • Loading branch information
nicholaspai authored May 3, 2024
1 parent 6696a1a commit c800b60
Show file tree
Hide file tree
Showing 9 changed files with 15 additions and 14 deletions.
1 change: 1 addition & 0 deletions src/clients/bridges/PolygonAdapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -277,6 +277,7 @@ export class PolygonAdapter extends CCTPAdapter {
return [];
}
if (this.isWeth(l1Token)) {
l1TokenListToApprove.push(l1Token);
return [this.getL1TokenGateway(l1Token)?.address];
}
const bridgeAddresses: string[] = [];
Expand Down
4 changes: 2 additions & 2 deletions src/clients/bridges/op-stack/DefaultErc20Bridge.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ export class DefaultERC20Bridge implements OpStackBridge {
this.l2Bridge = new Contract(l2Address, l2Abi, l2SignerOrProvider);
}

get l1Gateway(): string {
return this.l1Bridge.address;
get l1Gateways(): string[] {
return [this.l1Bridge.address];
}

constructL1ToL2Txn(
Expand Down
2 changes: 1 addition & 1 deletion src/clients/bridges/op-stack/OpStackAdapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ export class OpStackAdapter extends BaseAdapter {
const l1TokenListToApprove = [];
// We need to approve the Atomic depositor to bridge WETH to optimism via the ETH route.
const associatedL1Bridges = l1Tokens.flatMap((l1Token) => {
const bridges = this.getBridge(l1Token).l1Gateway;
const bridges = this.getBridge(l1Token).l1Gateways;
// Push the l1 token to the list of tokens to approve N times, where N is the number of bridges.
// I.e. the arrays have to be parallel.
l1TokenListToApprove.push(...Array(bridges.length).fill(l1Token));
Expand Down
2 changes: 1 addition & 1 deletion src/clients/bridges/op-stack/OpStackBridgeInterface.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ export interface BridgeTransactionDetails {
}

export interface OpStackBridge {
readonly l1Gateway: string | string[];
readonly l1Gateways: string[];
constructL1ToL2Txn(
toAddress: string,
l1Token: string,
Expand Down
4 changes: 2 additions & 2 deletions src/clients/bridges/op-stack/UsdcCCTPBridge.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ export class UsdcCCTPBridge implements OpStackBridge {
return TOKEN_SYMBOLS_MAP._USDC.addresses[this.l2chainId];
}

get l1Gateway(): string {
return this.l1CctpTokenBridge.address;
get l1Gateways(): string[] {
return [this.l1CctpTokenBridge.address];
}

constructL1ToL2Txn(
Expand Down
4 changes: 2 additions & 2 deletions src/clients/bridges/op-stack/UsdcTokenSplitterBridge.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ export class UsdcTokenSplitterBridge implements OpStackBridge {
return events.flat();
}

get l1Gateway(): string[] {
return [this.cctpBridge.l1Gateway, this.canonicalBridge.l1Gateway];
get l1Gateways(): string[] {
return [...this.cctpBridge.l1Gateways, ...this.canonicalBridge.l1Gateways];
}
}
4 changes: 2 additions & 2 deletions src/clients/bridges/op-stack/WethBridge.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ export class WethBridge implements OpStackBridge {
this.atomicDepositor = new Contract(atomicDepositorAddress, atomicDepositorAbi, l1Signer);
}

get l1Gateway(): string {
return this.atomicDepositor.address;
get l1Gateways(): string[] {
return [this.atomicDepositor.address];
}

constructL1ToL2Txn(
Expand Down
4 changes: 2 additions & 2 deletions src/clients/bridges/op-stack/optimism/DaiOptimismBridge.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ export class DaiOptimismBridge implements OpStackBridge {
this.l2Bridge = new Contract(l2Address, l2Abi, l2SignerOrProvider);
}

get l1Gateway(): string {
return this.l1Bridge.address;
get l1Gateways(): string[] {
return [this.l1Bridge.address];
}

constructL1ToL2Txn(
Expand Down
4 changes: 2 additions & 2 deletions src/clients/bridges/op-stack/optimism/SnxOptimismBridge.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ export class SnxOptimismBridge implements OpStackBridge {
this.l2Bridge = new Contract(l2Address, l2Abi, l2SignerOrProvider);
}

get l1Gateway(): string {
return this.l1Bridge.address;
get l1Gateways(): string[] {
return [this.l1Bridge.address];
}

constructL1ToL2Txn(
Expand Down

0 comments on commit c800b60

Please sign in to comment.