diff --git a/relayer_engine/pkgs/sdk/src/structs.ts b/relayer_engine/pkgs/sdk/src/structs.ts index 43fc7b6..81d43e5 100644 --- a/relayer_engine/pkgs/sdk/src/structs.ts +++ b/relayer_engine/pkgs/sdk/src/structs.ts @@ -1,4 +1,4 @@ -import { BigNumber, ethers} from "ethers" +import { BigNumber, ethers } from "ethers" import { arrayify } from "ethers/lib/utils" export enum RelayerPayloadId { @@ -34,6 +34,8 @@ export interface RedeliveryByTxHashInstruction { sourceTxHash: Buffer sourceNonce: BigNumber targetChain: number + deliveryIndex: number + multisendIndex: number newMaximumRefundTarget: BigNumber newApplicationBudgetTarget: BigNumber executionParameters: ExecutionParameters @@ -123,13 +125,23 @@ export function parseRedeliveryByTxHashInstruction( const sourceNonce = BigNumber.from(bytes.slice(idx, idx + 32)) idx += 32 + const targetChain = bytes.readUInt16BE(idx) idx += 2 + + const deliveryIndex = bytes.readUint8(idx) + idx += 1 + + const multisendIndex = bytes.readUint8(idx) + idx += 1 + // note: confirmed that BigNumber.from() assumes big endian const newMaximumRefundTarget = BigNumber.from(bytes.slice(idx, idx + 32)) idx += 32 + const newApplicationBudgetTarget = BigNumber.from(bytes.slice(idx, idx + 32)) idx += 32 + const executionParameters = parseExecutionParameters(bytes, idx) return { payloadId, @@ -137,6 +149,8 @@ export function parseRedeliveryByTxHashInstruction( sourceTxHash, sourceNonce, targetChain, + deliveryIndex, + multisendIndex, newMaximumRefundTarget, newApplicationBudgetTarget, executionParameters, diff --git a/relayer_engine/src/plugin/src/plugin.ts b/relayer_engine/src/plugin/src/plugin.ts index 4115d03..a7229d5 100644 --- a/relayer_engine/src/plugin/src/plugin.ts +++ b/relayer_engine/src/plugin/src/plugin.ts @@ -282,9 +282,6 @@ export class GenericRelayerPlugin implements Plugin { ).toString("base64")}` ) const payloadId = parsePayloadType(coreRelayerVaa.payload) - if (payloadId !== RelayerPayloadId.Delivery) { - // todo: support redelivery - } switch (payloadId) { case RelayerPayloadId.Delivery: return this.consumeDeliveryEvent(coreRelayerVaa, db) @@ -561,7 +558,7 @@ export class GenericRelayerPlugin implements Plugin { encodedVMs: payload.vaas, deliveryIndex: payload.deliveryVaaIndex, multisendIndex: i, - relayerRefundAddress: relayProvider.address, + relayerRefundAddress: wallet.address, } if (!(await relayProvider.approvedSender(wallet.address))) { @@ -611,8 +608,8 @@ export class GenericRelayerPlugin implements Plugin { const budget = newApplicationBudgetTarget.add(newMaximumRefundTarget).add(100) const input: CoreRelayerStructs.TargetRedeliveryByTxHashParamsSingleStruct = { sourceEncodedVMs: payload.vaas, - deliveryIndex: payload.deliveryVaaIndex, - multisendIndex: redelivery.ix.mul, + redeliveryVM: redelivery.vaa.bytes, + relayerRefundAddress: wallet.address, } relayProvider diff --git a/sdk/src/structs.ts b/sdk/src/structs.ts index 43fc7b6..81d43e5 100644 --- a/sdk/src/structs.ts +++ b/sdk/src/structs.ts @@ -1,4 +1,4 @@ -import { BigNumber, ethers} from "ethers" +import { BigNumber, ethers } from "ethers" import { arrayify } from "ethers/lib/utils" export enum RelayerPayloadId { @@ -34,6 +34,8 @@ export interface RedeliveryByTxHashInstruction { sourceTxHash: Buffer sourceNonce: BigNumber targetChain: number + deliveryIndex: number + multisendIndex: number newMaximumRefundTarget: BigNumber newApplicationBudgetTarget: BigNumber executionParameters: ExecutionParameters @@ -123,13 +125,23 @@ export function parseRedeliveryByTxHashInstruction( const sourceNonce = BigNumber.from(bytes.slice(idx, idx + 32)) idx += 32 + const targetChain = bytes.readUInt16BE(idx) idx += 2 + + const deliveryIndex = bytes.readUint8(idx) + idx += 1 + + const multisendIndex = bytes.readUint8(idx) + idx += 1 + // note: confirmed that BigNumber.from() assumes big endian const newMaximumRefundTarget = BigNumber.from(bytes.slice(idx, idx + 32)) idx += 32 + const newApplicationBudgetTarget = BigNumber.from(bytes.slice(idx, idx + 32)) idx += 32 + const executionParameters = parseExecutionParameters(bytes, idx) return { payloadId, @@ -137,6 +149,8 @@ export function parseRedeliveryByTxHashInstruction( sourceTxHash, sourceNonce, targetChain, + deliveryIndex, + multisendIndex, newMaximumRefundTarget, newApplicationBudgetTarget, executionParameters,