SDK: Relayer fixes for running tests in Tilt (#3178)

This commit is contained in:
derpy-duck 2023-07-06 15:41:13 -04:00 committed by GitHub
parent b350918214
commit 8d79fdd287
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 33 additions and 17 deletions

View File

@ -108,11 +108,13 @@ const optionalParams = {
environment: network,
sourceChainProvider: source.provider,
targetChainProviders: myMap,
wormholeRelayerAddress: source.wormholeRelayerAddress
};
const optionalParamsTarget = {
environment: network,
sourceChainProvider: target.provider,
targetChainProviders: myMap,
wormholeRelayerAddress: target.wormholeRelayerAddress
};
// for signing wormhole messages
@ -127,10 +129,15 @@ const REASONABLE_GAS_LIMIT = 500000;
const TOO_LOW_GAS_LIMIT = 10000;
const REASONABLE_GAS_LIMIT_FORWARDS = 900000;
const wormholeRelayerAddresses = new Map<ChainName, string>();
wormholeRelayerAddresses.set(sourceChain, source.wormholeRelayerAddress);
wormholeRelayerAddresses.set(targetChain, target.wormholeRelayerAddress);
const getStatus = async (
txHash: string,
_sourceChain?: ChainName
): Promise<string> => {
const info = (await relayer.getWormholeRelayerInfo(
_sourceChain || sourceChain,
txHash,
@ -138,6 +145,7 @@ const getStatus = async (
environment: network,
targetChainProviders: myMap,
sourceChainProvider: myMap.get(_sourceChain || sourceChain),
wormholeRelayerAddresses
}
)) as relayer.DeliveryInfo;
return info.targetChainStatus.events[0].status;
@ -420,7 +428,7 @@ describe("Wormhole Relayer Tests", () => {
const info = (await relayer.getWormholeRelayerInfo(
sourceChain,
tx.hash,
optionalParams
{wormholeRelayerAddresses, ...optionalParams}
)) as relayer.DeliveryInfo;
await waitForRelay();
@ -492,7 +500,7 @@ describe("Wormhole Relayer Tests", () => {
const info = (await relayer.getWormholeRelayerInfo(
sourceChain,
rx.transactionHash,
optionalParams
{wormholeRelayerAddresses, ...optionalParams}
)) as relayer.DeliveryInfo;
console.log("Redelivering message");
@ -516,11 +524,14 @@ describe("Wormhole Relayer Tests", () => {
value: value,
gasLimit: REASONABLE_GAS_LIMIT,
},
{ transport: NodeHttpTransport() }
{ transport: NodeHttpTransport() },
{wormholeRelayerAddress: source.wormholeRelayerAddress}
);
console.log("redelivery tx:", redeliveryReceipt.hash);
await redeliveryReceipt.wait();
await waitForRelay();
console.log("Checking if message was relayed after redelivery");

View File

@ -42,6 +42,7 @@ export type InfoRequestParams = {
export type GetPriceOptParams = {
environment?: Network;
receiverValue?: ethers.BigNumberish;
wormholeRelayerAddress?: string;
deliveryProviderAddress?: string;
sourceChainProvider?: ethers.providers.Provider;
};
@ -60,7 +61,7 @@ export async function getPriceAndRefundInfo(
throw Error(
"No default RPC for this chain; pass in your own provider (as sourceChainProvider)"
);
const wormholeRelayerAddress = getWormholeRelayerAddress(
const wormholeRelayerAddress = optionalParams?.wormholeRelayerAddress || getWormholeRelayerAddress(
sourceChain,
environment
);
@ -189,7 +190,7 @@ export function stringifyWormholeRelayerInfo(info: DeliveryInfo): string {
info.deliveryInstruction.targetAddress.toString("hex") !==
"0000000000000000000000000000000000000000000000000000000000000000"
) {
stringifiedInfo += `Found delivery request in transaction ${info.sourceTransactionHash} on ${info.sourceChain}\n`;
stringifiedInfo += `Found delivery request in transaction ${info.sourceTransactionHash} on ${info.sourceChain}\nfrom sender ${info.deliveryInstruction.senderAddress.toString("hex")} from ${info.sourceChain} with delivery sequence number ${info.sourceDeliverySequenceNumber}\n`;
const numMsgs = info.deliveryInstruction.vaaKeys.length;
const payload = info.deliveryInstruction.payload.toString("hex");

View File

@ -19,13 +19,14 @@ export async function resendRaw(
newGasLimit: BigNumber | number,
newReceiverValue: BigNumber | number,
deliveryProviderAddress: string,
overrides?: ethers.PayableOverrides
) {
overrides?: ethers.PayableOverrides,
wormholeRelayerAddress?: string,
): Promise<ethers.providers.TransactionResponse> {
const provider = signer.provider;
if (!provider) throw Error("No provider on signer");
const wormholeRelayer = getWormholeRelayer(sourceChain, environment, signer);
const wormholeRelayer = getWormholeRelayer(sourceChain, environment, signer, wormholeRelayerAddress);
return wormholeRelayer.resendToEvm(
vaaKeyToVaaKeyStruct(vaaKey),
@ -37,6 +38,10 @@ export async function resendRaw(
);
}
type ResendOptionalParams = {
wormholeRelayerAddress?: string;
}
export async function resend(
signer: ethers.Signer,
sourceChain: ChainName,
@ -48,8 +53,9 @@ export async function resend(
deliveryProviderAddress: string,
wormholeRPCs: string[],
overrides: ethers.PayableOverrides,
extraGrpcOpts = {}
) {
extraGrpcOpts = {},
optionalParams?: ResendOptionalParams
): Promise<ethers.providers.TransactionResponse> {
const targetChainId = CHAINS[targetChain];
const originalVAA = await getSignedVAAWithRetry(
wormholeRPCs,
@ -95,11 +101,7 @@ export async function resend(
);
}
const wormholeRelayer = getWormholeRelayer(sourceChain, environment, signer);
const deliveryProvider = getDeliveryProvider(
deliveryProviderAddress,
signer.provider!
);
const wormholeRelayer = getWormholeRelayer(sourceChain, environment, signer, optionalParams?.wormholeRelayerAddress);
const [deliveryPrice, refundPerUnitGas]: [BigNumber, BigNumber] =
await wormholeRelayer[
@ -132,6 +134,7 @@ export async function resend(
newGasLimit,
newReceiverValue,
deliveryProviderAddress,
overrides
overrides,
optionalParams?.wormholeRelayerAddress
);
}

View File

@ -22,6 +22,7 @@ export type SendOptionalParams = {
}
];
deliveryProviderAddress?: string;
wormholeRelayerAddress?: string;
consistencyLevel?: ethers.BigNumberish;
refundChainId?: ChainId;
refundAddress?: string;
@ -42,7 +43,7 @@ export async function sendToEvm(
const targetChainId = CHAINS[targetChain];
const environment = sendOptionalParams?.environment || "MAINNET";
const wormholeRelayerAddress = getWormholeRelayerAddress(
const wormholeRelayerAddress = sendOptionalParams?.wormholeRelayerAddress || getWormholeRelayerAddress(
sourceChain,
environment
);