Forge tests pass!

This commit is contained in:
derpy-duck 2023-02-10 21:06:15 +00:00 committed by chase-45
parent 346df2e017
commit b8db370dde
5 changed files with 32 additions and 23 deletions

View File

@ -35,7 +35,7 @@ Generic relayers consist of three components:
## Detailed Design
The interface to the Generic Relayer can be found [here](https://github.com/certusone/generic-relayer/blob/relayer/ethereum/contracts/interfaces/ICoreRelayer.sol)
The interface to the Generic Relayer can be found [here](https://github.com/certusone/generic-relayer/blob/relayer/ethereum/contracts/interfaces/IWormholeRelayer.sol)
## Local Node Tests

View File

@ -731,13 +731,22 @@ contract TestCoreRelayer is Test {
}
}
event InvalidRedelivery(
bytes32 indexed redeliveryVaaHash,
event Delivery(
address indexed recipientContract,
uint16 sourceChain,
uint64 indexed sequence
uint16 indexed sourceChain,
uint64 indexed sequence,
bytes32 deliveryVaaHash,
uint8 status
);
enum DeliveryStatus {
SUCCESS,
RECEIVER_FAILURE,
FORWARD_REQUEST_FAILURE,
FORWARD_REQUEST_SUCCESS,
INVALID_REDELIVERY
}
function testRevertRedeliveryErrors(
GasParameters memory gasParams,
FeeParameters memory feeParams,
@ -882,7 +891,7 @@ contract TestCoreRelayer is Test {
bytes32 redeliveryVmHash = relayerWormhole.parseVM(stack.redeliveryVM).hash;
vm.expectEmit(true, true, true, true, address(setup.target.coreRelayer));
emit InvalidRedelivery(redeliveryVmHash, address(setup.target.integration), setup.sourceChainId, 1);
emit Delivery(address(setup.target.integration), setup.sourceChainId, 1, redeliveryVmHash, uint8(DeliveryStatus.INVALID_REDELIVERY));
setup.target.coreRelayerFull.redeliverSingle{value: stack.budget}(stack.package);
uint16 differentChainId = 2;
@ -891,7 +900,7 @@ contract TestCoreRelayer is Test {
}
vm.expectEmit(true, true, true, true, address(map[differentChainId].coreRelayer));
emit InvalidRedelivery(redeliveryVmHash, address(setup.target.integration), setup.sourceChainId, 1);
emit Delivery(address(setup.target.integration), setup.sourceChainId, 1, redeliveryVmHash, uint8(DeliveryStatus.INVALID_REDELIVERY));
vm.prank(setup.target.relayer);
map[differentChainId].coreRelayerFull.redeliverSingle{value: stack.budget}(stack.package);
@ -932,7 +941,7 @@ contract TestCoreRelayer is Test {
redeliveryVmHash = relayerWormhole.parseVM(fakeVM).hash;
vm.expectEmit(true, true, true, true, address(map[differentChainId].coreRelayer));
emit InvalidRedelivery(redeliveryVmHash, address(setup.target.integration), setup.sourceChainId, 3);
emit Delivery(address(setup.target.integration), setup.sourceChainId, 3, redeliveryVmHash, uint8(DeliveryStatus.INVALID_REDELIVERY));
vm.prank(setup.target.relayer);
map[differentChainId].coreRelayerFull.redeliverSingle{
value: stack.payment + map[differentChainId].wormhole.messageFee()

View File

@ -18,7 +18,7 @@ export interface DeliveryInstruction {
targetAddress: Buffer
refundAddress: Buffer
maximumRefundTarget: BigNumber
applicationBudgetTarget: BigNumber
receiverValueTarget: BigNumber
executionParameters: ExecutionParameters
}
@ -37,7 +37,7 @@ export interface RedeliveryByTxHashInstruction {
deliveryIndex: number
multisendIndex: number
newMaximumRefundTarget: BigNumber
newApplicationBudgetTarget: BigNumber
newReceiverValueTarget: BigNumber
executionParameters: ExecutionParameters
}
@ -81,7 +81,7 @@ export function parseDeliveryInstructionsContainer(
Uint8Array.prototype.subarray.call(bytes, idx, idx + 32)
)
idx += 32
const applicationBudgetTarget = ethers.BigNumber.from(
const receiverValueTarget = ethers.BigNumber.from(
Uint8Array.prototype.subarray.call(bytes, idx, idx + 32)
)
idx += 32
@ -93,7 +93,7 @@ export function parseDeliveryInstructionsContainer(
targetAddress,
refundAddress,
maximumRefundTarget,
applicationBudgetTarget,
receiverValueTarget,
executionParameters,
}
)
@ -139,7 +139,7 @@ export function parseRedeliveryByTxHashInstruction(
const newMaximumRefundTarget = BigNumber.from(bytes.slice(idx, idx + 32))
idx += 32
const newApplicationBudgetTarget = BigNumber.from(bytes.slice(idx, idx + 32))
const newReceiverValueTarget = BigNumber.from(bytes.slice(idx, idx + 32))
idx += 32
const executionParameters = parseExecutionParameters(bytes, idx)
@ -152,7 +152,7 @@ export function parseRedeliveryByTxHashInstruction(
deliveryIndex,
multisendIndex,
newMaximumRefundTarget,
newApplicationBudgetTarget,
newReceiverValueTarget,
executionParameters,
}
}

View File

@ -530,7 +530,7 @@ export class GenericRelayerPlugin implements Plugin<WorkflowPayload> {
for (let i = 0; i < payload.deliveryInstructionsContainer.instructions.length; i++) {
const ix = payload.deliveryInstructionsContainer.instructions[i]
const chainId = assertEvmChainId(ix.targetChain)
const budget = ix.applicationBudgetTarget.add(ix.maximumRefundTarget).add(100)
const budget = ix.receiverValueTarget.add(ix.maximumRefundTarget).add(100)
// todo: consider parallelizing this
await execute.onEVM({
@ -591,8 +591,8 @@ export class GenericRelayerPlugin implements Plugin<WorkflowPayload> {
return
}
const { newApplicationBudgetTarget, newMaximumRefundTarget } = redelivery.ix
const budget = newApplicationBudgetTarget.add(newMaximumRefundTarget).add(100)
const { newReceiverValueTarget, newMaximumRefundTarget } = redelivery.ix
const budget = newReceiverValueTarget.add(newMaximumRefundTarget).add(100)
const input: CoreRelayerStructs.TargetRedeliveryByTxHashParamsSingleStruct = {
sourceEncodedVMs: payload.vaas,
redeliveryVM: redelivery.vaa.bytes,

View File

@ -18,7 +18,7 @@ export interface DeliveryInstruction {
targetAddress: Buffer
refundAddress: Buffer
maximumRefundTarget: BigNumber
applicationBudgetTarget: BigNumber
receiverValueTarget: BigNumber
executionParameters: ExecutionParameters
}
@ -37,7 +37,7 @@ export interface RedeliveryByTxHashInstruction {
deliveryIndex: number
multisendIndex: number
newMaximumRefundTarget: BigNumber
newApplicationBudgetTarget: BigNumber
newReceiverValueTarget: BigNumber
executionParameters: ExecutionParameters
}
@ -81,7 +81,7 @@ export function parseDeliveryInstructionsContainer(
Uint8Array.prototype.subarray.call(bytes, idx, idx + 32)
)
idx += 32
const applicationBudgetTarget = ethers.BigNumber.from(
const receiverValueTarget = ethers.BigNumber.from(
Uint8Array.prototype.subarray.call(bytes, idx, idx + 32)
)
idx += 32
@ -93,7 +93,7 @@ export function parseDeliveryInstructionsContainer(
targetAddress,
refundAddress,
maximumRefundTarget,
applicationBudgetTarget,
receiverValueTarget,
executionParameters,
}
)
@ -139,7 +139,7 @@ export function parseRedeliveryByTxHashInstruction(
const newMaximumRefundTarget = BigNumber.from(bytes.slice(idx, idx + 32))
idx += 32
const newApplicationBudgetTarget = BigNumber.from(bytes.slice(idx, idx + 32))
const newReceiverValueTarget = BigNumber.from(bytes.slice(idx, idx + 32))
idx += 32
const executionParameters = parseExecutionParameters(bytes, idx)
@ -152,7 +152,7 @@ export function parseRedeliveryByTxHashInstruction(
deliveryIndex,
multisendIndex,
newMaximumRefundTarget,
newApplicationBudgetTarget,
newReceiverValueTarget,
executionParameters,
}
}