Skip to content

Commit 32eb329

Browse files
authored
improve: do not force address coercion for spoke events (#856)
Signed-off-by: bennett <bennett@umaproject.org>
1 parent adb07ac commit 32eb329

File tree

3 files changed

+107
-2
lines changed

3 files changed

+107
-2
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@across-protocol/sdk",
33
"author": "UMA Team",
4-
"version": "3.4.19",
4+
"version": "3.4.20",
55
"license": "AGPL-3.0",
66
"homepage": "https://docs.across.to/reference/sdk",
77
"files": [

src/utils/EventUtils.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,12 @@ export function spreadEvent(args: Result | Record<string, unknown>): { [key: str
8686
// Truncate all fields which may be bytes32 into a bytes20 string.
8787
for (const field of knownExtendedAddressFields) {
8888
if (isDefined(returnedObject[field])) {
89-
returnedObject[field] = toAddress(String(returnedObject[field]));
89+
let address = String(returnedObject[field]);
90+
try {
91+
address = toAddress(address);
92+
// eslint-disable-next-line no-empty
93+
} catch (_) {}
94+
returnedObject[field] = address;
9095
}
9196
}
9297

test/SpokePoolClient.v3Events.ts

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -434,4 +434,104 @@ describe("SpokePoolClient: Event Filtering", function () {
434434
expect(slowFill.exclusiveRelayer).to.equal(toAddress(exclusiveRelayer));
435435
}
436436
});
437+
it("Does not throw when processing a bytes32 address", async function () {
438+
for (let i = 0; i < 10; ++i) {
439+
const [
440+
depositor,
441+
recipient,
442+
inputToken,
443+
outputToken,
444+
exclusiveRelayer,
445+
relayer,
446+
updatedRecipient,
447+
l2TokenAddress,
448+
] = Array(8)
449+
.fill(0)
450+
.map((_) => ethers.utils.hexlify(ethers.utils.randomBytes(32)));
451+
// Deposit
452+
originSpokePoolClient.depositV3({
453+
depositor,
454+
recipient,
455+
inputToken,
456+
outputToken,
457+
exclusiveRelayer,
458+
depositId: toBN(i),
459+
} as DepositWithBlock);
460+
// SpeedUpDeposit
461+
originSpokePoolClient.speedUpV3Deposit({
462+
depositor,
463+
updatedRecipient,
464+
depositId: toBN(i),
465+
updatedOutputAmount: toBN(i),
466+
} as SpeedUp);
467+
// FillV3Relay
468+
originSpokePoolClient.fillV3Relay({
469+
depositor,
470+
recipient,
471+
inputToken,
472+
outputToken,
473+
exclusiveRelayer,
474+
relayer,
475+
depositId: toBN(i),
476+
} as FillWithBlock);
477+
// TokensBridged
478+
originSpokePoolClient.setTokensBridged({ l2TokenAddress, chainId: i, leafId: i + 1 } as TokensBridged);
479+
// RequestV3SlowFill
480+
originSpokePoolClient.requestV3SlowFill({
481+
depositor,
482+
recipient,
483+
inputToken,
484+
outputToken,
485+
exclusiveRelayer,
486+
depositId: toBN(i),
487+
originChainId: 1,
488+
inputAmount: toBN(i),
489+
outputAmount: toBN(i),
490+
message: "0x",
491+
fillDeadline: 0,
492+
exclusivityDeadline: 0,
493+
} as SlowFillRequestWithBlock);
494+
await originSpokePoolClient.update([
495+
"V3FundsDeposited",
496+
"FilledV3Relay",
497+
"TokensBridged",
498+
"RequestedSpeedUpV3Deposit",
499+
"RequestedV3SlowFill",
500+
]);
501+
const slowFill = originSpokePoolClient.getSlowFillRequestsForOriginChain(1).at(-1);
502+
const tokensBridged = originSpokePoolClient.getTokensBridged().at(-1);
503+
const speedUp = originSpokePoolClient.getSpeedUps()[depositor][toBN(i)].at(-1);
504+
const relay = originSpokePoolClient.getFills().at(-1);
505+
const deposit = originSpokePoolClient.getDeposits().at(-1);
506+
507+
// SlowFill
508+
expect(slowFill.depositor).to.equal(depositor);
509+
expect(slowFill.recipient).to.equal(recipient);
510+
expect(slowFill.inputToken).to.equal(inputToken);
511+
expect(slowFill.outputToken).to.equal(outputToken);
512+
expect(slowFill.exclusiveRelayer).to.equal(exclusiveRelayer);
513+
514+
// Relay
515+
expect(relay.depositor).to.equal(depositor);
516+
expect(relay.recipient).to.equal(recipient);
517+
expect(relay.inputToken).to.equal(inputToken);
518+
expect(relay.outputToken).to.equal(outputToken);
519+
expect(relay.exclusiveRelayer).to.equal(exclusiveRelayer);
520+
expect(relay.relayer).to.equal(relayer);
521+
522+
// SpeedUp
523+
expect(speedUp.depositor).to.equal(depositor);
524+
expect(speedUp.updatedRecipient).to.equal(updatedRecipient);
525+
526+
// Deposit
527+
expect(deposit.depositor).to.equal(depositor);
528+
expect(deposit.recipient).to.equal(recipient);
529+
expect(deposit.inputToken).to.equal(inputToken);
530+
expect(deposit.outputToken).to.equal(outputToken);
531+
expect(deposit.exclusiveRelayer).to.equal(exclusiveRelayer);
532+
533+
// TokensBridged
534+
expect(tokensBridged.l2TokenAddress).to.equal(l2TokenAddress);
535+
}
536+
});
437537
});

0 commit comments

Comments
 (0)