Skip to content

Commit cc33e75

Browse files
authored
ETA adjustments (#672)
* add 5 sec of padding to ETAs for guardian network * raise Ethereum finality threshold
1 parent 45f4376 commit cc33e75

File tree

4 files changed

+9
-5
lines changed

4 files changed

+9
-5
lines changed

connect/src/protocols/cctp/cctpTransfer.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { Chain, Network } from "@wormhole-foundation/sdk-base";
2-
import { circle, encoding, finality, toChain } from "@wormhole-foundation/sdk-base";
2+
import { circle, encoding, finality, guardians, toChain } from "@wormhole-foundation/sdk-base";
33
import type {
44
Attestation,
55
AttestationId,
@@ -592,7 +592,7 @@ export namespace CircleTransfer {
592592

593593
// https://developers.circle.com/stablecoins/docs/required-block-confirmations
594594
const eta =
595-
srcChain.chain === "Polygon" ? 2_000 * 200 : finality.estimateFinalityTime(srcChain.chain);
595+
(srcChain.chain === "Polygon" ? 2_000 * 200 : finality.estimateFinalityTime(srcChain.chain)) + guardians.guardianAttestationEta;
596596
if (!transfer.automatic) {
597597
return {
598598
sourceToken: { token: srcToken, amount: transfer.amount },

connect/src/protocols/tokenBridge/tokenTransfer.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { Chain, Network } from "@wormhole-foundation/sdk-base";
2-
import { amount, encoding, finality, toChain as toChainName } from "@wormhole-foundation/sdk-base";
2+
import { amount, encoding, finality, guardians, toChain as toChainName } from "@wormhole-foundation/sdk-base";
33
import type {
44
AttestationId,
55
AutomaticTokenBridge,
@@ -717,7 +717,7 @@ export namespace TokenTransfer {
717717
const dstDecimals = await dstChain.getDecimals(dstToken.address);
718718
const dstAmountReceivable = amount.scale(srcAmountTruncated, dstDecimals);
719719

720-
const eta = finality.estimateFinalityTime(srcChain.chain);
720+
const eta = finality.estimateFinalityTime(srcChain.chain) + guardians.guardianAttestationEta;
721721
if (!transfer.automatic) {
722722
return {
723723
sourceToken: {

core/base/src/constants/finality.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export const safeThreshold = constMap(safeThresholds);
2626
// Number of blocks before a transaction is considered "final"
2727
const finalityThresholds = [
2828
["Solana", 32],
29-
["Ethereum", 64],
29+
["Ethereum", 96],
3030
["Bsc", 15],
3131
// Checkpointed to L1 after ~512 blocks
3232
["Optimism", 512],

core/base/src/constants/guardians.ts

+4
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,7 @@ export const guardianKeyToName = constMap(guardianKeyAndNameEntries, [1, [0, 2]]
3838

3939
export const devnetGuardianPrivateKey =
4040
"cfb12303a19cde580bb4dd771639b0d26bc68353645571a8cff516ab2ee113a0";
41+
42+
// Number of seconds we expect to wait for attestation
43+
// Used for eta calculation in route code
44+
export const guardianAttestationEta = 5;

0 commit comments

Comments
 (0)