trustless-generic-relayer/ethereum/ts-test/2_core_relayer.ts

243 lines
12 KiB
TypeScript
Raw Normal View History

Move development branch to main (#23) * refactoring for multidelivery * partial ts-test fixes * use typechain in integration tests, update prettier, fix remaining integration tests * run formatter on solidity files * gas refunding * gas forwarding logic * msg.send -> refundAmount * minor test refactor & additions * created relayer engine directory * more testing & tilt environment config for relayer engine * starting work on the xMint example contracts * additions for relayer engine * minor modifications & todos * fixed some errors * refactoring + cleaned up some TODOs * updated ICoreRelayer interface * adjusted tests for new interface * Working testSend * Merged refactoring + cleaned up some TODOs * updated ICoreRelayer interface * adjusted tests for new interface * Working testSend with new interface' * refactoring interfaces & files for single VAA design * GasOracle implementation of new interface * GasOracle compiles * Gas oracle upgradable * Fix compile errors in GasOracleGovernance * minor core relayer cleanup * Changes to getters, setters, state * implement quoteEvmDeliveryPrice, quoteTargetEvmGas, assetConversionAmount for corerelayer * Correcting interface inconsistencies between CoreRelayerStructs and ICoreRelayer * Fix encodeDeliveryRequestsContainer * added single vaa delivery entrypoint logic * Encode and Decode delivery instructions * Fixed many compile errors * First attempt at removing stacktoodeep error * Commenting out chunks of code to identify stack too deep error * Continue stack too deep quest * Revert "Commenting out chunks of code to identify stack too deep error" This reverts commit 8cd55d26cea2c49dc6e6bfa481c310f1a1c1143a. * Revert "Continue stack too deep quest" This reverts commit f0cde6871e26a7063e20d9a83b63b6a50e32bf37. * Fix stack too deep error in CoreRelayerMessages * tests compile, run, pass * fixing up fee collection assertions * GasOracle tests altering * Rename encodeDeliveryIntructions to convertToEncodedDeliveryInstructions because we are going from delivery request to delivery instruction * adding evm events to delivery execution * forwarding refactor for single vaa * relay provider name refactor * Test file slight refactor to allow for multiple chains * first impl of hub and spoke example * Forward test progress * Forwarding test passes! * More general parameters for test * Testing file more modular, calls 'generic relayer' * redelivery implementation * removing todos * Tests can use arbitrary amount of chains * Address various TODOs * refactored RelayProvider to be upgradeable via proxy * Add overhead inteface to RelayProvider & adjusted necessary fee calculations * added TODOs related to rewardAddress payout * provider price quoting changes * provider payments made at source * Fixed all compile errors * testForward and testSend pass again! * Switched quoteAssetConversion to quoteApplicationBudgetFee in CoreRelayer interface * First round of changes to support individual vaas in offchain relayer - Use new custom plugin event source api in relayer engine - Supports mulit delivery - Config for celo and fuji * contracts deploy successfully to tilt * bug fixes, contracts deploy to tilt * Starting the redelivery test * Tests pass again, with exception of the RelayProvider tests that tested reverts, and the new testRedelivery which isn't finished * small plugin changes * MockRelayerIntegration is used for sending * prepare offchain relayer to run in both tilt and testnet * update readme and npm scripts for offchain relayer * nit: remove console.log(argv) * solc version bump * Tests changed to pass (commented out the tests with differing require statements and kept redelivery incomplete * chain registration typescript scripts * Redeliver works! * Redelivery test works! * testnet deploy + relayer engine test * Testing two sends * Friday changes to round trip on testnet * Shortening current tests * Funds are correct! Relayer gets paid! * Remove extraneous comments * ts scripts for deployment and config * Wormhole Fee Test Co-authored-by: chase-45 <chasemoran45@gmail.com> Co-authored-by: derpy-duck <115193320+derpy-duck@users.noreply.github.com>
2023-01-05 14:26:27 -08:00
import { expect } from "chai";
import { ethers } from "ethers";
import { ChainId, tryNativeToHexString } from "@certusone/wormhole-sdk";
Add tests for send and deliver functionality (#9) * Complete send and deliver functionality * Clean up * Add tests for relayer send method * ethereum: remove interfaces * ethereum: fix test * ethereum: rename directory * ethereum: clean up; add ts tests * Add tests and clean up * ethereum: fix test * ethereum: fix output * Add reentrancy protection and reduce gas overhead for relayers * Add tests for full batch delivery * Update relayer contracts to reflect changes to batch VAA implementation * add rewards payout * implement redeliveries, replay protection * Complete full batch test suite * sdk: add sdk * sdk: fix package.json * Add partial batch unit test and add to integration test * Fix comments in integration test * sdk: fix tsconfig.json * ethereum: fix build * Add relayer registration to integration test * Finish integration test suite * ethereum: fix readAbi * ethereum: fix merge conflict * Complete full batch test suite * Add partial batch unit test and add to integration test * Finish integration test suite * Fix local validator test * Fix merge conflict * Add Makefile * Add documentation to relayer contracts * Fix Makefile * ethereum: clean up * ethereum: fix interface * ethereum: fix method names and tests * Prepare integration test for off-chain relayer changes * Refactor contracts Co-authored-by: Drew <dsterioti@users.noreply.github.com> Co-authored-by: Karl Kempe <karlkempe@users.noreply.github.com> Co-authored-by: valentin <valentinvonalbrecht@yahoo.de> Co-authored-by: justinschuldt <justinschuldt@gmail.com>
2022-09-30 09:18:49 -07:00
import {
RELAYER_DEPLOYER_PRIVATE_KEY,
} from "./helpers/consts";
import {
getSignedBatchVaaFromReceiptOnEth,
getSignedVaaFromReceiptOnEth,
verifyDeliveryStatusPayload,
} from "./helpers/utils";
Move development branch to main (#23) * refactoring for multidelivery * partial ts-test fixes * use typechain in integration tests, update prettier, fix remaining integration tests * run formatter on solidity files * gas refunding * gas forwarding logic * msg.send -> refundAmount * minor test refactor & additions * created relayer engine directory * more testing & tilt environment config for relayer engine * starting work on the xMint example contracts * additions for relayer engine * minor modifications & todos * fixed some errors * refactoring + cleaned up some TODOs * updated ICoreRelayer interface * adjusted tests for new interface * Working testSend * Merged refactoring + cleaned up some TODOs * updated ICoreRelayer interface * adjusted tests for new interface * Working testSend with new interface' * refactoring interfaces & files for single VAA design * GasOracle implementation of new interface * GasOracle compiles * Gas oracle upgradable * Fix compile errors in GasOracleGovernance * minor core relayer cleanup * Changes to getters, setters, state * implement quoteEvmDeliveryPrice, quoteTargetEvmGas, assetConversionAmount for corerelayer * Correcting interface inconsistencies between CoreRelayerStructs and ICoreRelayer * Fix encodeDeliveryRequestsContainer * added single vaa delivery entrypoint logic * Encode and Decode delivery instructions * Fixed many compile errors * First attempt at removing stacktoodeep error * Commenting out chunks of code to identify stack too deep error * Continue stack too deep quest * Revert "Commenting out chunks of code to identify stack too deep error" This reverts commit 8cd55d26cea2c49dc6e6bfa481c310f1a1c1143a. * Revert "Continue stack too deep quest" This reverts commit f0cde6871e26a7063e20d9a83b63b6a50e32bf37. * Fix stack too deep error in CoreRelayerMessages * tests compile, run, pass * fixing up fee collection assertions * GasOracle tests altering * Rename encodeDeliveryIntructions to convertToEncodedDeliveryInstructions because we are going from delivery request to delivery instruction * adding evm events to delivery execution * forwarding refactor for single vaa * relay provider name refactor * Test file slight refactor to allow for multiple chains * first impl of hub and spoke example * Forward test progress * Forwarding test passes! * More general parameters for test * Testing file more modular, calls 'generic relayer' * redelivery implementation * removing todos * Tests can use arbitrary amount of chains * Address various TODOs * refactored RelayProvider to be upgradeable via proxy * Add overhead inteface to RelayProvider & adjusted necessary fee calculations * added TODOs related to rewardAddress payout * provider price quoting changes * provider payments made at source * Fixed all compile errors * testForward and testSend pass again! * Switched quoteAssetConversion to quoteApplicationBudgetFee in CoreRelayer interface * First round of changes to support individual vaas in offchain relayer - Use new custom plugin event source api in relayer engine - Supports mulit delivery - Config for celo and fuji * contracts deploy successfully to tilt * bug fixes, contracts deploy to tilt * Starting the redelivery test * Tests pass again, with exception of the RelayProvider tests that tested reverts, and the new testRedelivery which isn't finished * small plugin changes * MockRelayerIntegration is used for sending * prepare offchain relayer to run in both tilt and testnet * update readme and npm scripts for offchain relayer * nit: remove console.log(argv) * solc version bump * Tests changed to pass (commented out the tests with differing require statements and kept redelivery incomplete * chain registration typescript scripts * Redeliver works! * Redelivery test works! * testnet deploy + relayer engine test * Testing two sends * Friday changes to round trip on testnet * Shortening current tests * Funds are correct! Relayer gets paid! * Remove extraneous comments * ts scripts for deployment and config * Wormhole Fee Test Co-authored-by: chase-45 <chasemoran45@gmail.com> Co-authored-by: derpy-duck <115193320+derpy-duck@users.noreply.github.com>
2023-01-05 14:26:27 -08:00
import { CoreRelayer__factory, MockRelayerIntegration__factory } from "../../sdk/src";
import { CoreRelayerStructs } from "../../sdk/src/ethers-contracts/CoreRelayer";
2023-02-08 12:47:54 -08:00
import { init, loadChains, loadCoreRelayers, loadMockIntegrations } from "../ts-scripts/helpers/env";
Add tests for send and deliver functionality (#9) * Complete send and deliver functionality * Clean up * Add tests for relayer send method * ethereum: remove interfaces * ethereum: fix test * ethereum: rename directory * ethereum: clean up; add ts tests * Add tests and clean up * ethereum: fix test * ethereum: fix output * Add reentrancy protection and reduce gas overhead for relayers * Add tests for full batch delivery * Update relayer contracts to reflect changes to batch VAA implementation * add rewards payout * implement redeliveries, replay protection * Complete full batch test suite * sdk: add sdk * sdk: fix package.json * Add partial batch unit test and add to integration test * Fix comments in integration test * sdk: fix tsconfig.json * ethereum: fix build * Add relayer registration to integration test * Finish integration test suite * ethereum: fix readAbi * ethereum: fix merge conflict * Complete full batch test suite * Add partial batch unit test and add to integration test * Finish integration test suite * Fix local validator test * Fix merge conflict * Add Makefile * Add documentation to relayer contracts * Fix Makefile * ethereum: clean up * ethereum: fix interface * ethereum: fix method names and tests * Prepare integration test for off-chain relayer changes * Refactor contracts Co-authored-by: Drew <dsterioti@users.noreply.github.com> Co-authored-by: Karl Kempe <karlkempe@users.noreply.github.com> Co-authored-by: valentin <valentinvonalbrecht@yahoo.de> Co-authored-by: justinschuldt <justinschuldt@gmail.com>
2022-09-30 09:18:49 -07:00
const ETHEREUM_ROOT = `${__dirname}/..`;
2023-02-08 12:47:54 -08:00
init()
const chains = loadChains();
const coreRelayers = loadCoreRelayers();
const mockIntegrations = loadMockIntegrations();
Add tests for send and deliver functionality (#9) * Complete send and deliver functionality * Clean up * Add tests for relayer send method * ethereum: remove interfaces * ethereum: fix test * ethereum: rename directory * ethereum: clean up; add ts tests * Add tests and clean up * ethereum: fix test * ethereum: fix output * Add reentrancy protection and reduce gas overhead for relayers * Add tests for full batch delivery * Update relayer contracts to reflect changes to batch VAA implementation * add rewards payout * implement redeliveries, replay protection * Complete full batch test suite * sdk: add sdk * sdk: fix package.json * Add partial batch unit test and add to integration test * Fix comments in integration test * sdk: fix tsconfig.json * ethereum: fix build * Add relayer registration to integration test * Finish integration test suite * ethereum: fix readAbi * ethereum: fix merge conflict * Complete full batch test suite * Add partial batch unit test and add to integration test * Finish integration test suite * Fix local validator test * Fix merge conflict * Add Makefile * Add documentation to relayer contracts * Fix Makefile * ethereum: clean up * ethereum: fix interface * ethereum: fix method names and tests * Prepare integration test for off-chain relayer changes * Refactor contracts Co-authored-by: Drew <dsterioti@users.noreply.github.com> Co-authored-by: Karl Kempe <karlkempe@users.noreply.github.com> Co-authored-by: valentin <valentinvonalbrecht@yahoo.de> Co-authored-by: justinschuldt <justinschuldt@gmail.com>
2022-09-30 09:18:49 -07:00
describe("Core Relayer Integration Test", () => {
2023-02-08 12:47:54 -08:00
const provider = new ethers.providers.StaticJsonRpcProvider(chains[0].rpc);
Add tests for send and deliver functionality (#9) * Complete send and deliver functionality * Clean up * Add tests for relayer send method * ethereum: remove interfaces * ethereum: fix test * ethereum: rename directory * ethereum: clean up; add ts tests * Add tests and clean up * ethereum: fix test * ethereum: fix output * Add reentrancy protection and reduce gas overhead for relayers * Add tests for full batch delivery * Update relayer contracts to reflect changes to batch VAA implementation * add rewards payout * implement redeliveries, replay protection * Complete full batch test suite * sdk: add sdk * sdk: fix package.json * Add partial batch unit test and add to integration test * Fix comments in integration test * sdk: fix tsconfig.json * ethereum: fix build * Add relayer registration to integration test * Finish integration test suite * ethereum: fix readAbi * ethereum: fix merge conflict * Complete full batch test suite * Add partial batch unit test and add to integration test * Finish integration test suite * Fix local validator test * Fix merge conflict * Add Makefile * Add documentation to relayer contracts * Fix Makefile * ethereum: clean up * ethereum: fix interface * ethereum: fix method names and tests * Prepare integration test for off-chain relayer changes * Refactor contracts Co-authored-by: Drew <dsterioti@users.noreply.github.com> Co-authored-by: Karl Kempe <karlkempe@users.noreply.github.com> Co-authored-by: valentin <valentinvonalbrecht@yahoo.de> Co-authored-by: justinschuldt <justinschuldt@gmail.com>
2022-09-30 09:18:49 -07:00
// signers
const wallet = new ethers.Wallet(RELAYER_DEPLOYER_PRIVATE_KEY, provider);
2023-02-08 12:47:54 -08:00
const coreRelayer = CoreRelayer__factory.connect(coreRelayers, wallet);
Move development branch to main (#23) * refactoring for multidelivery * partial ts-test fixes * use typechain in integration tests, update prettier, fix remaining integration tests * run formatter on solidity files * gas refunding * gas forwarding logic * msg.send -> refundAmount * minor test refactor & additions * created relayer engine directory * more testing & tilt environment config for relayer engine * starting work on the xMint example contracts * additions for relayer engine * minor modifications & todos * fixed some errors * refactoring + cleaned up some TODOs * updated ICoreRelayer interface * adjusted tests for new interface * Working testSend * Merged refactoring + cleaned up some TODOs * updated ICoreRelayer interface * adjusted tests for new interface * Working testSend with new interface' * refactoring interfaces & files for single VAA design * GasOracle implementation of new interface * GasOracle compiles * Gas oracle upgradable * Fix compile errors in GasOracleGovernance * minor core relayer cleanup * Changes to getters, setters, state * implement quoteEvmDeliveryPrice, quoteTargetEvmGas, assetConversionAmount for corerelayer * Correcting interface inconsistencies between CoreRelayerStructs and ICoreRelayer * Fix encodeDeliveryRequestsContainer * added single vaa delivery entrypoint logic * Encode and Decode delivery instructions * Fixed many compile errors * First attempt at removing stacktoodeep error * Commenting out chunks of code to identify stack too deep error * Continue stack too deep quest * Revert "Commenting out chunks of code to identify stack too deep error" This reverts commit 8cd55d26cea2c49dc6e6bfa481c310f1a1c1143a. * Revert "Continue stack too deep quest" This reverts commit f0cde6871e26a7063e20d9a83b63b6a50e32bf37. * Fix stack too deep error in CoreRelayerMessages * tests compile, run, pass * fixing up fee collection assertions * GasOracle tests altering * Rename encodeDeliveryIntructions to convertToEncodedDeliveryInstructions because we are going from delivery request to delivery instruction * adding evm events to delivery execution * forwarding refactor for single vaa * relay provider name refactor * Test file slight refactor to allow for multiple chains * first impl of hub and spoke example * Forward test progress * Forwarding test passes! * More general parameters for test * Testing file more modular, calls 'generic relayer' * redelivery implementation * removing todos * Tests can use arbitrary amount of chains * Address various TODOs * refactored RelayProvider to be upgradeable via proxy * Add overhead inteface to RelayProvider & adjusted necessary fee calculations * added TODOs related to rewardAddress payout * provider price quoting changes * provider payments made at source * Fixed all compile errors * testForward and testSend pass again! * Switched quoteAssetConversion to quoteApplicationBudgetFee in CoreRelayer interface * First round of changes to support individual vaas in offchain relayer - Use new custom plugin event source api in relayer engine - Supports mulit delivery - Config for celo and fuji * contracts deploy successfully to tilt * bug fixes, contracts deploy to tilt * Starting the redelivery test * Tests pass again, with exception of the RelayProvider tests that tested reverts, and the new testRedelivery which isn't finished * small plugin changes * MockRelayerIntegration is used for sending * prepare offchain relayer to run in both tilt and testnet * update readme and npm scripts for offchain relayer * nit: remove console.log(argv) * solc version bump * Tests changed to pass (commented out the tests with differing require statements and kept redelivery incomplete * chain registration typescript scripts * Redeliver works! * Redelivery test works! * testnet deploy + relayer engine test * Testing two sends * Friday changes to round trip on testnet * Shortening current tests * Funds are correct! Relayer gets paid! * Remove extraneous comments * ts scripts for deployment and config * Wormhole Fee Test Co-authored-by: chase-45 <chasemoran45@gmail.com> Co-authored-by: derpy-duck <115193320+derpy-duck@users.noreply.github.com>
2023-01-05 14:26:27 -08:00
const mockContract = MockRelayerIntegration__factory.connect(MOCK_RELAYER_INTEGRATION_ADDRESS, wallet);
Add tests for send and deliver functionality (#9) * Complete send and deliver functionality * Clean up * Add tests for relayer send method * ethereum: remove interfaces * ethereum: fix test * ethereum: rename directory * ethereum: clean up; add ts tests * Add tests and clean up * ethereum: fix test * ethereum: fix output * Add reentrancy protection and reduce gas overhead for relayers * Add tests for full batch delivery * Update relayer contracts to reflect changes to batch VAA implementation * add rewards payout * implement redeliveries, replay protection * Complete full batch test suite * sdk: add sdk * sdk: fix package.json * Add partial batch unit test and add to integration test * Fix comments in integration test * sdk: fix tsconfig.json * ethereum: fix build * Add relayer registration to integration test * Finish integration test suite * ethereum: fix readAbi * ethereum: fix merge conflict * Complete full batch test suite * Add partial batch unit test and add to integration test * Finish integration test suite * Fix local validator test * Fix merge conflict * Add Makefile * Add documentation to relayer contracts * Fix Makefile * ethereum: clean up * ethereum: fix interface * ethereum: fix method names and tests * Prepare integration test for off-chain relayer changes * Refactor contracts Co-authored-by: Drew <dsterioti@users.noreply.github.com> Co-authored-by: Karl Kempe <karlkempe@users.noreply.github.com> Co-authored-by: valentin <valentinvonalbrecht@yahoo.de> Co-authored-by: justinschuldt <justinschuldt@gmail.com>
2022-09-30 09:18:49 -07:00
// test batch VAA information
const batchVAAPayloads: ethers.BytesLike[] = [
ethers.utils.hexlify(ethers.utils.toUtf8Bytes("SuperCoolCrossChainStuff0")),
ethers.utils.hexlify(ethers.utils.toUtf8Bytes("SuperCoolCrossChainStuff1")),
ethers.utils.hexlify(ethers.utils.toUtf8Bytes("SuperCoolCrossChainStuff2")),
ethers.utils.hexlify(ethers.utils.toUtf8Bytes("SuperCoolCrossChainStuff3")),
ethers.utils.hexlify(ethers.utils.toUtf8Bytes("SuperCoolCrossChainStuff5")),
ethers.utils.hexlify(ethers.utils.toUtf8Bytes("SuperCoolCrossChainStuff6")),
ethers.utils.hexlify(ethers.utils.toUtf8Bytes("SuperCoolCrossChainStuff7")),
ethers.utils.hexlify(ethers.utils.toUtf8Bytes("SuperCoolCrossChainStuff8")),
];
const batchVAAConsistencyLevels: number[] = [15, 10, 2, 15, 1, 6, 3, 5];
const batchNonce: number = 69;
const deliveryVAAConsistencyLevel: number = 15;
describe("Core Relayer Interaction", () => {
// for the sake of this test, the target/source chain and address will be the same
const TARGET_CONTRACT_ADDRESS = MOCK_RELAYER_INTEGRATION_ADDRESS;
Move development branch to main (#23) * refactoring for multidelivery * partial ts-test fixes * use typechain in integration tests, update prettier, fix remaining integration tests * run formatter on solidity files * gas refunding * gas forwarding logic * msg.send -> refundAmount * minor test refactor & additions * created relayer engine directory * more testing & tilt environment config for relayer engine * starting work on the xMint example contracts * additions for relayer engine * minor modifications & todos * fixed some errors * refactoring + cleaned up some TODOs * updated ICoreRelayer interface * adjusted tests for new interface * Working testSend * Merged refactoring + cleaned up some TODOs * updated ICoreRelayer interface * adjusted tests for new interface * Working testSend with new interface' * refactoring interfaces & files for single VAA design * GasOracle implementation of new interface * GasOracle compiles * Gas oracle upgradable * Fix compile errors in GasOracleGovernance * minor core relayer cleanup * Changes to getters, setters, state * implement quoteEvmDeliveryPrice, quoteTargetEvmGas, assetConversionAmount for corerelayer * Correcting interface inconsistencies between CoreRelayerStructs and ICoreRelayer * Fix encodeDeliveryRequestsContainer * added single vaa delivery entrypoint logic * Encode and Decode delivery instructions * Fixed many compile errors * First attempt at removing stacktoodeep error * Commenting out chunks of code to identify stack too deep error * Continue stack too deep quest * Revert "Commenting out chunks of code to identify stack too deep error" This reverts commit 8cd55d26cea2c49dc6e6bfa481c310f1a1c1143a. * Revert "Continue stack too deep quest" This reverts commit f0cde6871e26a7063e20d9a83b63b6a50e32bf37. * Fix stack too deep error in CoreRelayerMessages * tests compile, run, pass * fixing up fee collection assertions * GasOracle tests altering * Rename encodeDeliveryIntructions to convertToEncodedDeliveryInstructions because we are going from delivery request to delivery instruction * adding evm events to delivery execution * forwarding refactor for single vaa * relay provider name refactor * Test file slight refactor to allow for multiple chains * first impl of hub and spoke example * Forward test progress * Forwarding test passes! * More general parameters for test * Testing file more modular, calls 'generic relayer' * redelivery implementation * removing todos * Tests can use arbitrary amount of chains * Address various TODOs * refactored RelayProvider to be upgradeable via proxy * Add overhead inteface to RelayProvider & adjusted necessary fee calculations * added TODOs related to rewardAddress payout * provider price quoting changes * provider payments made at source * Fixed all compile errors * testForward and testSend pass again! * Switched quoteAssetConversion to quoteApplicationBudgetFee in CoreRelayer interface * First round of changes to support individual vaas in offchain relayer - Use new custom plugin event source api in relayer engine - Supports mulit delivery - Config for celo and fuji * contracts deploy successfully to tilt * bug fixes, contracts deploy to tilt * Starting the redelivery test * Tests pass again, with exception of the RelayProvider tests that tested reverts, and the new testRedelivery which isn't finished * small plugin changes * MockRelayerIntegration is used for sending * prepare offchain relayer to run in both tilt and testnet * update readme and npm scripts for offchain relayer * nit: remove console.log(argv) * solc version bump * Tests changed to pass (commented out the tests with differing require statements and kept redelivery incomplete * chain registration typescript scripts * Redeliver works! * Redelivery test works! * testnet deploy + relayer engine test * Testing two sends * Friday changes to round trip on testnet * Shortening current tests * Funds are correct! Relayer gets paid! * Remove extraneous comments * ts scripts for deployment and config * Wormhole Fee Test Co-authored-by: chase-45 <chasemoran45@gmail.com> Co-authored-by: derpy-duck <115193320+derpy-duck@users.noreply.github.com>
2023-01-05 14:26:27 -08:00
const TARGET_REFUND_ADDRESS = "0x0000000000000000000000000000000000000001";
Add tests for send and deliver functionality (#9) * Complete send and deliver functionality * Clean up * Add tests for relayer send method * ethereum: remove interfaces * ethereum: fix test * ethereum: rename directory * ethereum: clean up; add ts tests * Add tests and clean up * ethereum: fix test * ethereum: fix output * Add reentrancy protection and reduce gas overhead for relayers * Add tests for full batch delivery * Update relayer contracts to reflect changes to batch VAA implementation * add rewards payout * implement redeliveries, replay protection * Complete full batch test suite * sdk: add sdk * sdk: fix package.json * Add partial batch unit test and add to integration test * Fix comments in integration test * sdk: fix tsconfig.json * ethereum: fix build * Add relayer registration to integration test * Finish integration test suite * ethereum: fix readAbi * ethereum: fix merge conflict * Complete full batch test suite * Add partial batch unit test and add to integration test * Finish integration test suite * Fix local validator test * Fix merge conflict * Add Makefile * Add documentation to relayer contracts * Fix Makefile * ethereum: clean up * ethereum: fix interface * ethereum: fix method names and tests * Prepare integration test for off-chain relayer changes * Refactor contracts Co-authored-by: Drew <dsterioti@users.noreply.github.com> Co-authored-by: Karl Kempe <karlkempe@users.noreply.github.com> Co-authored-by: valentin <valentinvonalbrecht@yahoo.de> Co-authored-by: justinschuldt <justinschuldt@gmail.com>
2022-09-30 09:18:49 -07:00
const TARGET_CHAIN_ID: ChainId = CHAIN_ID_ETH;
const SOURCE_CONTRACT_ADDRESS = TARGET_CONTRACT_ADDRESS;
const SOURCE_CHAIN_ID: ChainId = TARGET_CHAIN_ID;
const TARGET_GAS_LIMIT = 1000000;
const RELAYER_EMITTER_ADDRESS: ethers.utils.BytesLike = ethers.utils.hexlify(
"0x" + tryNativeToHexString(coreRelayer.address, SOURCE_CHAIN_ID)
);
// test variables that are used throughout the test suite
let fullBatchTest: TestResults = {} as TestResults;
let partialBatchTest: TestResults = {} as TestResults;
it("Should register a relayer contract", async () => {
// should register the target contract address
await coreRelayer
.registerChain(TARGET_CHAIN_ID, RELAYER_EMITTER_ADDRESS)
.then((tx: ethers.ContractTransaction) => tx.wait());
const actualRegisteredRelayer = await coreRelayer.registeredRelayer(SOURCE_CHAIN_ID);
const expectedRegisteredRelayer: ethers.utils.BytesLike = ethers.utils.hexlify(RELAYER_EMITTER_ADDRESS);
expect(actualRegisteredRelayer).to.equal(expectedRegisteredRelayer);
});
it("Should update EVM deliver gas overhead", async () => {
// the new evmGasOverhead value
const newEvmGasOverhead = 500000;
// query the EVM gas overhead before updating it
const evmGasOverheadBefore = await coreRelayer.evmDeliverGasOverhead();
expect(evmGasOverheadBefore).to.equal(0);
// should update the EVM gas overhead
await coreRelayer.updateEvmDeliverGasOverhead(newEvmGasOverhead);
// query the EVM gas overhead after updating it
const evmGasOverheadAfter = await coreRelayer.evmDeliverGasOverhead();
expect(evmGasOverheadAfter).to.equal(newEvmGasOverhead);
});
it("Should create a batch VAA with a DeliveryInstructions VAA", async () => {
// estimate the cost of submitting the batch on the target chain
fullBatchTest.targetChainGasEstimate = await coreRelayer.estimateEvmCost(TARGET_CHAIN_ID, TARGET_GAS_LIMIT);
Add tests for send and deliver functionality (#9) * Complete send and deliver functionality * Clean up * Add tests for relayer send method * ethereum: remove interfaces * ethereum: fix test * ethereum: rename directory * ethereum: clean up; add ts tests * Add tests and clean up * ethereum: fix test * ethereum: fix output * Add reentrancy protection and reduce gas overhead for relayers * Add tests for full batch delivery * Update relayer contracts to reflect changes to batch VAA implementation * add rewards payout * implement redeliveries, replay protection * Complete full batch test suite * sdk: add sdk * sdk: fix package.json * Add partial batch unit test and add to integration test * Fix comments in integration test * sdk: fix tsconfig.json * ethereum: fix build * Add relayer registration to integration test * Finish integration test suite * ethereum: fix readAbi * ethereum: fix merge conflict * Complete full batch test suite * Add partial batch unit test and add to integration test * Finish integration test suite * Fix local validator test * Fix merge conflict * Add Makefile * Add documentation to relayer contracts * Fix Makefile * ethereum: clean up * ethereum: fix interface * ethereum: fix method names and tests * Prepare integration test for off-chain relayer changes * Refactor contracts Co-authored-by: Drew <dsterioti@users.noreply.github.com> Co-authored-by: Karl Kempe <karlkempe@users.noreply.github.com> Co-authored-by: valentin <valentinvonalbrecht@yahoo.de> Co-authored-by: justinschuldt <justinschuldt@gmail.com>
2022-09-30 09:18:49 -07:00
// relayer args
fullBatchTest.relayerArgs = {
nonce: batchNonce,
targetChainId: TARGET_CHAIN_ID,
targetAddress: TARGET_CONTRACT_ADDRESS,
targetGasLimit: TARGET_GAS_LIMIT,
Move development branch to main (#23) * refactoring for multidelivery * partial ts-test fixes * use typechain in integration tests, update prettier, fix remaining integration tests * run formatter on solidity files * gas refunding * gas forwarding logic * msg.send -> refundAmount * minor test refactor & additions * created relayer engine directory * more testing & tilt environment config for relayer engine * starting work on the xMint example contracts * additions for relayer engine * minor modifications & todos * fixed some errors * refactoring + cleaned up some TODOs * updated ICoreRelayer interface * adjusted tests for new interface * Working testSend * Merged refactoring + cleaned up some TODOs * updated ICoreRelayer interface * adjusted tests for new interface * Working testSend with new interface' * refactoring interfaces & files for single VAA design * GasOracle implementation of new interface * GasOracle compiles * Gas oracle upgradable * Fix compile errors in GasOracleGovernance * minor core relayer cleanup * Changes to getters, setters, state * implement quoteEvmDeliveryPrice, quoteTargetEvmGas, assetConversionAmount for corerelayer * Correcting interface inconsistencies between CoreRelayerStructs and ICoreRelayer * Fix encodeDeliveryRequestsContainer * added single vaa delivery entrypoint logic * Encode and Decode delivery instructions * Fixed many compile errors * First attempt at removing stacktoodeep error * Commenting out chunks of code to identify stack too deep error * Continue stack too deep quest * Revert "Commenting out chunks of code to identify stack too deep error" This reverts commit 8cd55d26cea2c49dc6e6bfa481c310f1a1c1143a. * Revert "Continue stack too deep quest" This reverts commit f0cde6871e26a7063e20d9a83b63b6a50e32bf37. * Fix stack too deep error in CoreRelayerMessages * tests compile, run, pass * fixing up fee collection assertions * GasOracle tests altering * Rename encodeDeliveryIntructions to convertToEncodedDeliveryInstructions because we are going from delivery request to delivery instruction * adding evm events to delivery execution * forwarding refactor for single vaa * relay provider name refactor * Test file slight refactor to allow for multiple chains * first impl of hub and spoke example * Forward test progress * Forwarding test passes! * More general parameters for test * Testing file more modular, calls 'generic relayer' * redelivery implementation * removing todos * Tests can use arbitrary amount of chains * Address various TODOs * refactored RelayProvider to be upgradeable via proxy * Add overhead inteface to RelayProvider & adjusted necessary fee calculations * added TODOs related to rewardAddress payout * provider price quoting changes * provider payments made at source * Fixed all compile errors * testForward and testSend pass again! * Switched quoteAssetConversion to quoteApplicationBudgetFee in CoreRelayer interface * First round of changes to support individual vaas in offchain relayer - Use new custom plugin event source api in relayer engine - Supports mulit delivery - Config for celo and fuji * contracts deploy successfully to tilt * bug fixes, contracts deploy to tilt * Starting the redelivery test * Tests pass again, with exception of the RelayProvider tests that tested reverts, and the new testRedelivery which isn't finished * small plugin changes * MockRelayerIntegration is used for sending * prepare offchain relayer to run in both tilt and testnet * update readme and npm scripts for offchain relayer * nit: remove console.log(argv) * solc version bump * Tests changed to pass (commented out the tests with differing require statements and kept redelivery incomplete * chain registration typescript scripts * Redeliver works! * Redelivery test works! * testnet deploy + relayer engine test * Testing two sends * Friday changes to round trip on testnet * Shortening current tests * Funds are correct! Relayer gets paid! * Remove extraneous comments * ts scripts for deployment and config * Wormhole Fee Test Co-authored-by: chase-45 <chasemoran45@gmail.com> Co-authored-by: derpy-duck <115193320+derpy-duck@users.noreply.github.com>
2023-01-05 14:26:27 -08:00
refundAddress: TARGET_REFUND_ADDRESS,
Add tests for send and deliver functionality (#9) * Complete send and deliver functionality * Clean up * Add tests for relayer send method * ethereum: remove interfaces * ethereum: fix test * ethereum: rename directory * ethereum: clean up; add ts tests * Add tests and clean up * ethereum: fix test * ethereum: fix output * Add reentrancy protection and reduce gas overhead for relayers * Add tests for full batch delivery * Update relayer contracts to reflect changes to batch VAA implementation * add rewards payout * implement redeliveries, replay protection * Complete full batch test suite * sdk: add sdk * sdk: fix package.json * Add partial batch unit test and add to integration test * Fix comments in integration test * sdk: fix tsconfig.json * ethereum: fix build * Add relayer registration to integration test * Finish integration test suite * ethereum: fix readAbi * ethereum: fix merge conflict * Complete full batch test suite * Add partial batch unit test and add to integration test * Finish integration test suite * Fix local validator test * Fix merge conflict * Add Makefile * Add documentation to relayer contracts * Fix Makefile * ethereum: clean up * ethereum: fix interface * ethereum: fix method names and tests * Prepare integration test for off-chain relayer changes * Refactor contracts Co-authored-by: Drew <dsterioti@users.noreply.github.com> Co-authored-by: Karl Kempe <karlkempe@users.noreply.github.com> Co-authored-by: valentin <valentinvonalbrecht@yahoo.de> Co-authored-by: justinschuldt <justinschuldt@gmail.com>
2022-09-30 09:18:49 -07:00
consistencyLevel: deliveryVAAConsistencyLevel,
};
// call the mock integration contract to create a batch
const sendReceipt: ethers.ContractReceipt = await mockContract
.sendBatchToTargetChain(batchVAAPayloads, batchVAAConsistencyLevels, fullBatchTest.relayerArgs, {
value: fullBatchTest.targetChainGasEstimate,
})
.then((tx: ethers.ContractTransaction) => tx.wait());
// fetch the signedBatchVAA
fullBatchTest.signedBatchVM = await getSignedBatchVaaFromReceiptOnEth(
sendReceipt,
SOURCE_CHAIN_ID,
0 // guardianSetIndex
);
});
it("Should deserialize and validate the full batch DeliveryInstructions VAA values", async () => {
// parse the batchVM and verify the values
const parsedBatchVM = await mockContract.parseWormholeBatch(fullBatchTest.signedBatchVM);
Add tests for send and deliver functionality (#9) * Complete send and deliver functionality * Clean up * Add tests for relayer send method * ethereum: remove interfaces * ethereum: fix test * ethereum: rename directory * ethereum: clean up; add ts tests * Add tests and clean up * ethereum: fix test * ethereum: fix output * Add reentrancy protection and reduce gas overhead for relayers * Add tests for full batch delivery * Update relayer contracts to reflect changes to batch VAA implementation * add rewards payout * implement redeliveries, replay protection * Complete full batch test suite * sdk: add sdk * sdk: fix package.json * Add partial batch unit test and add to integration test * Fix comments in integration test * sdk: fix tsconfig.json * ethereum: fix build * Add relayer registration to integration test * Finish integration test suite * ethereum: fix readAbi * ethereum: fix merge conflict * Complete full batch test suite * Add partial batch unit test and add to integration test * Finish integration test suite * Fix local validator test * Fix merge conflict * Add Makefile * Add documentation to relayer contracts * Fix Makefile * ethereum: clean up * ethereum: fix interface * ethereum: fix method names and tests * Prepare integration test for off-chain relayer changes * Refactor contracts Co-authored-by: Drew <dsterioti@users.noreply.github.com> Co-authored-by: Karl Kempe <karlkempe@users.noreply.github.com> Co-authored-by: valentin <valentinvonalbrecht@yahoo.de> Co-authored-by: justinschuldt <justinschuldt@gmail.com>
2022-09-30 09:18:49 -07:00
// validate the individual messages
const observations = parsedBatchVM.observations;
const batchLen = parsedBatchVM.observations.length;
for (let i = 0; i < batchLen - 2; ++i) {
const parsedVM = await mockContract.parseWormholeObservation(observations[i]);
Add tests for send and deliver functionality (#9) * Complete send and deliver functionality * Clean up * Add tests for relayer send method * ethereum: remove interfaces * ethereum: fix test * ethereum: rename directory * ethereum: clean up; add ts tests * Add tests and clean up * ethereum: fix test * ethereum: fix output * Add reentrancy protection and reduce gas overhead for relayers * Add tests for full batch delivery * Update relayer contracts to reflect changes to batch VAA implementation * add rewards payout * implement redeliveries, replay protection * Complete full batch test suite * sdk: add sdk * sdk: fix package.json * Add partial batch unit test and add to integration test * Fix comments in integration test * sdk: fix tsconfig.json * ethereum: fix build * Add relayer registration to integration test * Finish integration test suite * ethereum: fix readAbi * ethereum: fix merge conflict * Complete full batch test suite * Add partial batch unit test and add to integration test * Finish integration test suite * Fix local validator test * Fix merge conflict * Add Makefile * Add documentation to relayer contracts * Fix Makefile * ethereum: clean up * ethereum: fix interface * ethereum: fix method names and tests * Prepare integration test for off-chain relayer changes * Refactor contracts Co-authored-by: Drew <dsterioti@users.noreply.github.com> Co-authored-by: Karl Kempe <karlkempe@users.noreply.github.com> Co-authored-by: valentin <valentinvonalbrecht@yahoo.de> Co-authored-by: justinschuldt <justinschuldt@gmail.com>
2022-09-30 09:18:49 -07:00
expect(parsedVM.nonce).to.equal(batchNonce);
expect(parsedVM.consistencyLevel).to.equal(batchVAAConsistencyLevels[i]);
expect(parsedVM.payload).to.equal(batchVAAPayloads[i]);
}
// validate the mock integration instructions
const integratorMessage = await mockContract.parseWormholeObservation(observations[batchLen - 2]);
expect(integratorMessage.nonce).to.equal(batchNonce);
expect(integratorMessage.consistencyLevel).to.equal(1);
const integratorMessagePayload = Buffer.from(ethers.utils.arrayify(integratorMessage.payload));
expect(integratorMessagePayload.readUInt16BE(0)).to.equal(2);
expect(integratorMessagePayload.readUInt8(2)).to.equal(batchLen - 2);
Add tests for send and deliver functionality (#9) * Complete send and deliver functionality * Clean up * Add tests for relayer send method * ethereum: remove interfaces * ethereum: fix test * ethereum: rename directory * ethereum: clean up; add ts tests * Add tests and clean up * ethereum: fix test * ethereum: fix output * Add reentrancy protection and reduce gas overhead for relayers * Add tests for full batch delivery * Update relayer contracts to reflect changes to batch VAA implementation * add rewards payout * implement redeliveries, replay protection * Complete full batch test suite * sdk: add sdk * sdk: fix package.json * Add partial batch unit test and add to integration test * Fix comments in integration test * sdk: fix tsconfig.json * ethereum: fix build * Add relayer registration to integration test * Finish integration test suite * ethereum: fix readAbi * ethereum: fix merge conflict * Complete full batch test suite * Add partial batch unit test and add to integration test * Finish integration test suite * Fix local validator test * Fix merge conflict * Add Makefile * Add documentation to relayer contracts * Fix Makefile * ethereum: clean up * ethereum: fix interface * ethereum: fix method names and tests * Prepare integration test for off-chain relayer changes * Refactor contracts Co-authored-by: Drew <dsterioti@users.noreply.github.com> Co-authored-by: Karl Kempe <karlkempe@users.noreply.github.com> Co-authored-by: valentin <valentinvonalbrecht@yahoo.de> Co-authored-by: justinschuldt <justinschuldt@gmail.com>
2022-09-30 09:18:49 -07:00
// validate the delivery instructions VAA
const deliveryVM = await mockContract.parseWormholeObservation(observations[batchLen - 1]);
Add tests for send and deliver functionality (#9) * Complete send and deliver functionality * Clean up * Add tests for relayer send method * ethereum: remove interfaces * ethereum: fix test * ethereum: rename directory * ethereum: clean up; add ts tests * Add tests and clean up * ethereum: fix test * ethereum: fix output * Add reentrancy protection and reduce gas overhead for relayers * Add tests for full batch delivery * Update relayer contracts to reflect changes to batch VAA implementation * add rewards payout * implement redeliveries, replay protection * Complete full batch test suite * sdk: add sdk * sdk: fix package.json * Add partial batch unit test and add to integration test * Fix comments in integration test * sdk: fix tsconfig.json * ethereum: fix build * Add relayer registration to integration test * Finish integration test suite * ethereum: fix readAbi * ethereum: fix merge conflict * Complete full batch test suite * Add partial batch unit test and add to integration test * Finish integration test suite * Fix local validator test * Fix merge conflict * Add Makefile * Add documentation to relayer contracts * Fix Makefile * ethereum: clean up * ethereum: fix interface * ethereum: fix method names and tests * Prepare integration test for off-chain relayer changes * Refactor contracts Co-authored-by: Drew <dsterioti@users.noreply.github.com> Co-authored-by: Karl Kempe <karlkempe@users.noreply.github.com> Co-authored-by: valentin <valentinvonalbrecht@yahoo.de> Co-authored-by: justinschuldt <justinschuldt@gmail.com>
2022-09-30 09:18:49 -07:00
expect(deliveryVM.nonce).to.equal(batchNonce);
expect(deliveryVM.consistencyLevel).to.equal(fullBatchTest.relayerArgs.consistencyLevel);
// deserialize the delivery instruction payload and validate the values
Move development branch to main (#23) * refactoring for multidelivery * partial ts-test fixes * use typechain in integration tests, update prettier, fix remaining integration tests * run formatter on solidity files * gas refunding * gas forwarding logic * msg.send -> refundAmount * minor test refactor & additions * created relayer engine directory * more testing & tilt environment config for relayer engine * starting work on the xMint example contracts * additions for relayer engine * minor modifications & todos * fixed some errors * refactoring + cleaned up some TODOs * updated ICoreRelayer interface * adjusted tests for new interface * Working testSend * Merged refactoring + cleaned up some TODOs * updated ICoreRelayer interface * adjusted tests for new interface * Working testSend with new interface' * refactoring interfaces & files for single VAA design * GasOracle implementation of new interface * GasOracle compiles * Gas oracle upgradable * Fix compile errors in GasOracleGovernance * minor core relayer cleanup * Changes to getters, setters, state * implement quoteEvmDeliveryPrice, quoteTargetEvmGas, assetConversionAmount for corerelayer * Correcting interface inconsistencies between CoreRelayerStructs and ICoreRelayer * Fix encodeDeliveryRequestsContainer * added single vaa delivery entrypoint logic * Encode and Decode delivery instructions * Fixed many compile errors * First attempt at removing stacktoodeep error * Commenting out chunks of code to identify stack too deep error * Continue stack too deep quest * Revert "Commenting out chunks of code to identify stack too deep error" This reverts commit 8cd55d26cea2c49dc6e6bfa481c310f1a1c1143a. * Revert "Continue stack too deep quest" This reverts commit f0cde6871e26a7063e20d9a83b63b6a50e32bf37. * Fix stack too deep error in CoreRelayerMessages * tests compile, run, pass * fixing up fee collection assertions * GasOracle tests altering * Rename encodeDeliveryIntructions to convertToEncodedDeliveryInstructions because we are going from delivery request to delivery instruction * adding evm events to delivery execution * forwarding refactor for single vaa * relay provider name refactor * Test file slight refactor to allow for multiple chains * first impl of hub and spoke example * Forward test progress * Forwarding test passes! * More general parameters for test * Testing file more modular, calls 'generic relayer' * redelivery implementation * removing todos * Tests can use arbitrary amount of chains * Address various TODOs * refactored RelayProvider to be upgradeable via proxy * Add overhead inteface to RelayProvider & adjusted necessary fee calculations * added TODOs related to rewardAddress payout * provider price quoting changes * provider payments made at source * Fixed all compile errors * testForward and testSend pass again! * Switched quoteAssetConversion to quoteApplicationBudgetFee in CoreRelayer interface * First round of changes to support individual vaas in offchain relayer - Use new custom plugin event source api in relayer engine - Supports mulit delivery - Config for celo and fuji * contracts deploy successfully to tilt * bug fixes, contracts deploy to tilt * Starting the redelivery test * Tests pass again, with exception of the RelayProvider tests that tested reverts, and the new testRedelivery which isn't finished * small plugin changes * MockRelayerIntegration is used for sending * prepare offchain relayer to run in both tilt and testnet * update readme and npm scripts for offchain relayer * nit: remove console.log(argv) * solc version bump * Tests changed to pass (commented out the tests with differing require statements and kept redelivery incomplete * chain registration typescript scripts * Redeliver works! * Redelivery test works! * testnet deploy + relayer engine test * Testing two sends * Friday changes to round trip on testnet * Shortening current tests * Funds are correct! Relayer gets paid! * Remove extraneous comments * ts scripts for deployment and config * Wormhole Fee Test Co-authored-by: chase-45 <chasemoran45@gmail.com> Co-authored-by: derpy-duck <115193320+derpy-duck@users.noreply.github.com>
2023-01-05 14:26:27 -08:00
const deliveryInstructionsContainer = await coreRelayer.decodeDeliveryInstructionsContainer(deliveryVM.payload);
expect(deliveryInstructionsContainer.payloadID).to.equal(1);
expect(deliveryInstructionsContainer.instructions.length).to.equal(1);
const instruction = deliveryInstructionsContainer.instructions[0];
expect(instruction.targetAddress).to.equal("0x" + tryNativeToHexString(TARGET_CONTRACT_ADDRESS, CHAIN_ID_ETH));
expect(instruction.targetChain).to.equal(TARGET_CHAIN_ID);
Add tests for send and deliver functionality (#9) * Complete send and deliver functionality * Clean up * Add tests for relayer send method * ethereum: remove interfaces * ethereum: fix test * ethereum: rename directory * ethereum: clean up; add ts tests * Add tests and clean up * ethereum: fix test * ethereum: fix output * Add reentrancy protection and reduce gas overhead for relayers * Add tests for full batch delivery * Update relayer contracts to reflect changes to batch VAA implementation * add rewards payout * implement redeliveries, replay protection * Complete full batch test suite * sdk: add sdk * sdk: fix package.json * Add partial batch unit test and add to integration test * Fix comments in integration test * sdk: fix tsconfig.json * ethereum: fix build * Add relayer registration to integration test * Finish integration test suite * ethereum: fix readAbi * ethereum: fix merge conflict * Complete full batch test suite * Add partial batch unit test and add to integration test * Finish integration test suite * Fix local validator test * Fix merge conflict * Add Makefile * Add documentation to relayer contracts * Fix Makefile * ethereum: clean up * ethereum: fix interface * ethereum: fix method names and tests * Prepare integration test for off-chain relayer changes * Refactor contracts Co-authored-by: Drew <dsterioti@users.noreply.github.com> Co-authored-by: Karl Kempe <karlkempe@users.noreply.github.com> Co-authored-by: valentin <valentinvonalbrecht@yahoo.de> Co-authored-by: justinschuldt <justinschuldt@gmail.com>
2022-09-30 09:18:49 -07:00
// deserialize the deliveryParameters and confirm the values
Move development branch to main (#23) * refactoring for multidelivery * partial ts-test fixes * use typechain in integration tests, update prettier, fix remaining integration tests * run formatter on solidity files * gas refunding * gas forwarding logic * msg.send -> refundAmount * minor test refactor & additions * created relayer engine directory * more testing & tilt environment config for relayer engine * starting work on the xMint example contracts * additions for relayer engine * minor modifications & todos * fixed some errors * refactoring + cleaned up some TODOs * updated ICoreRelayer interface * adjusted tests for new interface * Working testSend * Merged refactoring + cleaned up some TODOs * updated ICoreRelayer interface * adjusted tests for new interface * Working testSend with new interface' * refactoring interfaces & files for single VAA design * GasOracle implementation of new interface * GasOracle compiles * Gas oracle upgradable * Fix compile errors in GasOracleGovernance * minor core relayer cleanup * Changes to getters, setters, state * implement quoteEvmDeliveryPrice, quoteTargetEvmGas, assetConversionAmount for corerelayer * Correcting interface inconsistencies between CoreRelayerStructs and ICoreRelayer * Fix encodeDeliveryRequestsContainer * added single vaa delivery entrypoint logic * Encode and Decode delivery instructions * Fixed many compile errors * First attempt at removing stacktoodeep error * Commenting out chunks of code to identify stack too deep error * Continue stack too deep quest * Revert "Commenting out chunks of code to identify stack too deep error" This reverts commit 8cd55d26cea2c49dc6e6bfa481c310f1a1c1143a. * Revert "Continue stack too deep quest" This reverts commit f0cde6871e26a7063e20d9a83b63b6a50e32bf37. * Fix stack too deep error in CoreRelayerMessages * tests compile, run, pass * fixing up fee collection assertions * GasOracle tests altering * Rename encodeDeliveryIntructions to convertToEncodedDeliveryInstructions because we are going from delivery request to delivery instruction * adding evm events to delivery execution * forwarding refactor for single vaa * relay provider name refactor * Test file slight refactor to allow for multiple chains * first impl of hub and spoke example * Forward test progress * Forwarding test passes! * More general parameters for test * Testing file more modular, calls 'generic relayer' * redelivery implementation * removing todos * Tests can use arbitrary amount of chains * Address various TODOs * refactored RelayProvider to be upgradeable via proxy * Add overhead inteface to RelayProvider & adjusted necessary fee calculations * added TODOs related to rewardAddress payout * provider price quoting changes * provider payments made at source * Fixed all compile errors * testForward and testSend pass again! * Switched quoteAssetConversion to quoteApplicationBudgetFee in CoreRelayer interface * First round of changes to support individual vaas in offchain relayer - Use new custom plugin event source api in relayer engine - Supports mulit delivery - Config for celo and fuji * contracts deploy successfully to tilt * bug fixes, contracts deploy to tilt * Starting the redelivery test * Tests pass again, with exception of the RelayProvider tests that tested reverts, and the new testRedelivery which isn't finished * small plugin changes * MockRelayerIntegration is used for sending * prepare offchain relayer to run in both tilt and testnet * update readme and npm scripts for offchain relayer * nit: remove console.log(argv) * solc version bump * Tests changed to pass (commented out the tests with differing require statements and kept redelivery incomplete * chain registration typescript scripts * Redeliver works! * Redelivery test works! * testnet deploy + relayer engine test * Testing two sends * Friday changes to round trip on testnet * Shortening current tests * Funds are correct! Relayer gets paid! * Remove extraneous comments * ts scripts for deployment and config * Wormhole Fee Test Co-authored-by: chase-45 <chasemoran45@gmail.com> Co-authored-by: derpy-duck <115193320+derpy-duck@users.noreply.github.com>
2023-01-05 14:26:27 -08:00
const relayParameters = await coreRelayer.decodeRelayParameters(instruction.relayParameters);
Add tests for send and deliver functionality (#9) * Complete send and deliver functionality * Clean up * Add tests for relayer send method * ethereum: remove interfaces * ethereum: fix test * ethereum: rename directory * ethereum: clean up; add ts tests * Add tests and clean up * ethereum: fix test * ethereum: fix output * Add reentrancy protection and reduce gas overhead for relayers * Add tests for full batch delivery * Update relayer contracts to reflect changes to batch VAA implementation * add rewards payout * implement redeliveries, replay protection * Complete full batch test suite * sdk: add sdk * sdk: fix package.json * Add partial batch unit test and add to integration test * Fix comments in integration test * sdk: fix tsconfig.json * ethereum: fix build * Add relayer registration to integration test * Finish integration test suite * ethereum: fix readAbi * ethereum: fix merge conflict * Complete full batch test suite * Add partial batch unit test and add to integration test * Finish integration test suite * Fix local validator test * Fix merge conflict * Add Makefile * Add documentation to relayer contracts * Fix Makefile * ethereum: clean up * ethereum: fix interface * ethereum: fix method names and tests * Prepare integration test for off-chain relayer changes * Refactor contracts Co-authored-by: Drew <dsterioti@users.noreply.github.com> Co-authored-by: Karl Kempe <karlkempe@users.noreply.github.com> Co-authored-by: valentin <valentinvonalbrecht@yahoo.de> Co-authored-by: justinschuldt <justinschuldt@gmail.com>
2022-09-30 09:18:49 -07:00
expect(relayParameters.version).to.equal(1);
expect(relayParameters.deliveryGasLimit).to.equal(TARGET_GAS_LIMIT);
expect(relayParameters.nativePayment.toString()).to.equal(fullBatchTest.targetChainGasEstimate.toString());
});
it("Should deliver the batch VAA and call the wormholeReceiver endpoint on the mock contract", async () => {
// create the TargetDeliveryParameters
Move development branch to main (#23) * refactoring for multidelivery * partial ts-test fixes * use typechain in integration tests, update prettier, fix remaining integration tests * run formatter on solidity files * gas refunding * gas forwarding logic * msg.send -> refundAmount * minor test refactor & additions * created relayer engine directory * more testing & tilt environment config for relayer engine * starting work on the xMint example contracts * additions for relayer engine * minor modifications & todos * fixed some errors * refactoring + cleaned up some TODOs * updated ICoreRelayer interface * adjusted tests for new interface * Working testSend * Merged refactoring + cleaned up some TODOs * updated ICoreRelayer interface * adjusted tests for new interface * Working testSend with new interface' * refactoring interfaces & files for single VAA design * GasOracle implementation of new interface * GasOracle compiles * Gas oracle upgradable * Fix compile errors in GasOracleGovernance * minor core relayer cleanup * Changes to getters, setters, state * implement quoteEvmDeliveryPrice, quoteTargetEvmGas, assetConversionAmount for corerelayer * Correcting interface inconsistencies between CoreRelayerStructs and ICoreRelayer * Fix encodeDeliveryRequestsContainer * added single vaa delivery entrypoint logic * Encode and Decode delivery instructions * Fixed many compile errors * First attempt at removing stacktoodeep error * Commenting out chunks of code to identify stack too deep error * Continue stack too deep quest * Revert "Commenting out chunks of code to identify stack too deep error" This reverts commit 8cd55d26cea2c49dc6e6bfa481c310f1a1c1143a. * Revert "Continue stack too deep quest" This reverts commit f0cde6871e26a7063e20d9a83b63b6a50e32bf37. * Fix stack too deep error in CoreRelayerMessages * tests compile, run, pass * fixing up fee collection assertions * GasOracle tests altering * Rename encodeDeliveryIntructions to convertToEncodedDeliveryInstructions because we are going from delivery request to delivery instruction * adding evm events to delivery execution * forwarding refactor for single vaa * relay provider name refactor * Test file slight refactor to allow for multiple chains * first impl of hub and spoke example * Forward test progress * Forwarding test passes! * More general parameters for test * Testing file more modular, calls 'generic relayer' * redelivery implementation * removing todos * Tests can use arbitrary amount of chains * Address various TODOs * refactored RelayProvider to be upgradeable via proxy * Add overhead inteface to RelayProvider & adjusted necessary fee calculations * added TODOs related to rewardAddress payout * provider price quoting changes * provider payments made at source * Fixed all compile errors * testForward and testSend pass again! * Switched quoteAssetConversion to quoteApplicationBudgetFee in CoreRelayer interface * First round of changes to support individual vaas in offchain relayer - Use new custom plugin event source api in relayer engine - Supports mulit delivery - Config for celo and fuji * contracts deploy successfully to tilt * bug fixes, contracts deploy to tilt * Starting the redelivery test * Tests pass again, with exception of the RelayProvider tests that tested reverts, and the new testRedelivery which isn't finished * small plugin changes * MockRelayerIntegration is used for sending * prepare offchain relayer to run in both tilt and testnet * update readme and npm scripts for offchain relayer * nit: remove console.log(argv) * solc version bump * Tests changed to pass (commented out the tests with differing require statements and kept redelivery incomplete * chain registration typescript scripts * Redeliver works! * Redelivery test works! * testnet deploy + relayer engine test * Testing two sends * Friday changes to round trip on testnet * Shortening current tests * Funds are correct! Relayer gets paid! * Remove extraneous comments * ts scripts for deployment and config * Wormhole Fee Test Co-authored-by: chase-45 <chasemoran45@gmail.com> Co-authored-by: derpy-duck <115193320+derpy-duck@users.noreply.github.com>
2023-01-05 14:26:27 -08:00
const targetDeliveryParams: CoreRelayerStructs.TargetDeliveryParametersStruct = {
Add tests for send and deliver functionality (#9) * Complete send and deliver functionality * Clean up * Add tests for relayer send method * ethereum: remove interfaces * ethereum: fix test * ethereum: rename directory * ethereum: clean up; add ts tests * Add tests and clean up * ethereum: fix test * ethereum: fix output * Add reentrancy protection and reduce gas overhead for relayers * Add tests for full batch delivery * Update relayer contracts to reflect changes to batch VAA implementation * add rewards payout * implement redeliveries, replay protection * Complete full batch test suite * sdk: add sdk * sdk: fix package.json * Add partial batch unit test and add to integration test * Fix comments in integration test * sdk: fix tsconfig.json * ethereum: fix build * Add relayer registration to integration test * Finish integration test suite * ethereum: fix readAbi * ethereum: fix merge conflict * Complete full batch test suite * Add partial batch unit test and add to integration test * Finish integration test suite * Fix local validator test * Fix merge conflict * Add Makefile * Add documentation to relayer contracts * Fix Makefile * ethereum: clean up * ethereum: fix interface * ethereum: fix method names and tests * Prepare integration test for off-chain relayer changes * Refactor contracts Co-authored-by: Drew <dsterioti@users.noreply.github.com> Co-authored-by: Karl Kempe <karlkempe@users.noreply.github.com> Co-authored-by: valentin <valentinvonalbrecht@yahoo.de> Co-authored-by: justinschuldt <justinschuldt@gmail.com>
2022-09-30 09:18:49 -07:00
encodedVM: fullBatchTest.signedBatchVM,
deliveryIndex: batchVAAPayloads.length + 1,
Move development branch to main (#23) * refactoring for multidelivery * partial ts-test fixes * use typechain in integration tests, update prettier, fix remaining integration tests * run formatter on solidity files * gas refunding * gas forwarding logic * msg.send -> refundAmount * minor test refactor & additions * created relayer engine directory * more testing & tilt environment config for relayer engine * starting work on the xMint example contracts * additions for relayer engine * minor modifications & todos * fixed some errors * refactoring + cleaned up some TODOs * updated ICoreRelayer interface * adjusted tests for new interface * Working testSend * Merged refactoring + cleaned up some TODOs * updated ICoreRelayer interface * adjusted tests for new interface * Working testSend with new interface' * refactoring interfaces & files for single VAA design * GasOracle implementation of new interface * GasOracle compiles * Gas oracle upgradable * Fix compile errors in GasOracleGovernance * minor core relayer cleanup * Changes to getters, setters, state * implement quoteEvmDeliveryPrice, quoteTargetEvmGas, assetConversionAmount for corerelayer * Correcting interface inconsistencies between CoreRelayerStructs and ICoreRelayer * Fix encodeDeliveryRequestsContainer * added single vaa delivery entrypoint logic * Encode and Decode delivery instructions * Fixed many compile errors * First attempt at removing stacktoodeep error * Commenting out chunks of code to identify stack too deep error * Continue stack too deep quest * Revert "Commenting out chunks of code to identify stack too deep error" This reverts commit 8cd55d26cea2c49dc6e6bfa481c310f1a1c1143a. * Revert "Continue stack too deep quest" This reverts commit f0cde6871e26a7063e20d9a83b63b6a50e32bf37. * Fix stack too deep error in CoreRelayerMessages * tests compile, run, pass * fixing up fee collection assertions * GasOracle tests altering * Rename encodeDeliveryIntructions to convertToEncodedDeliveryInstructions because we are going from delivery request to delivery instruction * adding evm events to delivery execution * forwarding refactor for single vaa * relay provider name refactor * Test file slight refactor to allow for multiple chains * first impl of hub and spoke example * Forward test progress * Forwarding test passes! * More general parameters for test * Testing file more modular, calls 'generic relayer' * redelivery implementation * removing todos * Tests can use arbitrary amount of chains * Address various TODOs * refactored RelayProvider to be upgradeable via proxy * Add overhead inteface to RelayProvider & adjusted necessary fee calculations * added TODOs related to rewardAddress payout * provider price quoting changes * provider payments made at source * Fixed all compile errors * testForward and testSend pass again! * Switched quoteAssetConversion to quoteApplicationBudgetFee in CoreRelayer interface * First round of changes to support individual vaas in offchain relayer - Use new custom plugin event source api in relayer engine - Supports mulit delivery - Config for celo and fuji * contracts deploy successfully to tilt * bug fixes, contracts deploy to tilt * Starting the redelivery test * Tests pass again, with exception of the RelayProvider tests that tested reverts, and the new testRedelivery which isn't finished * small plugin changes * MockRelayerIntegration is used for sending * prepare offchain relayer to run in both tilt and testnet * update readme and npm scripts for offchain relayer * nit: remove console.log(argv) * solc version bump * Tests changed to pass (commented out the tests with differing require statements and kept redelivery incomplete * chain registration typescript scripts * Redeliver works! * Redelivery test works! * testnet deploy + relayer engine test * Testing two sends * Friday changes to round trip on testnet * Shortening current tests * Funds are correct! Relayer gets paid! * Remove extraneous comments * ts scripts for deployment and config * Wormhole Fee Test Co-authored-by: chase-45 <chasemoran45@gmail.com> Co-authored-by: derpy-duck <115193320+derpy-duck@users.noreply.github.com>
2023-01-05 14:26:27 -08:00
multisendIndex: 0,
Add tests for send and deliver functionality (#9) * Complete send and deliver functionality * Clean up * Add tests for relayer send method * ethereum: remove interfaces * ethereum: fix test * ethereum: rename directory * ethereum: clean up; add ts tests * Add tests and clean up * ethereum: fix test * ethereum: fix output * Add reentrancy protection and reduce gas overhead for relayers * Add tests for full batch delivery * Update relayer contracts to reflect changes to batch VAA implementation * add rewards payout * implement redeliveries, replay protection * Complete full batch test suite * sdk: add sdk * sdk: fix package.json * Add partial batch unit test and add to integration test * Fix comments in integration test * sdk: fix tsconfig.json * ethereum: fix build * Add relayer registration to integration test * Finish integration test suite * ethereum: fix readAbi * ethereum: fix merge conflict * Complete full batch test suite * Add partial batch unit test and add to integration test * Finish integration test suite * Fix local validator test * Fix merge conflict * Add Makefile * Add documentation to relayer contracts * Fix Makefile * ethereum: clean up * ethereum: fix interface * ethereum: fix method names and tests * Prepare integration test for off-chain relayer changes * Refactor contracts Co-authored-by: Drew <dsterioti@users.noreply.github.com> Co-authored-by: Karl Kempe <karlkempe@users.noreply.github.com> Co-authored-by: valentin <valentinvonalbrecht@yahoo.de> Co-authored-by: justinschuldt <justinschuldt@gmail.com>
2022-09-30 09:18:49 -07:00
targetCallGasOverride: ethers.BigNumber.from(TARGET_GAS_LIMIT),
};
Move development branch to main (#23) * refactoring for multidelivery * partial ts-test fixes * use typechain in integration tests, update prettier, fix remaining integration tests * run formatter on solidity files * gas refunding * gas forwarding logic * msg.send -> refundAmount * minor test refactor & additions * created relayer engine directory * more testing & tilt environment config for relayer engine * starting work on the xMint example contracts * additions for relayer engine * minor modifications & todos * fixed some errors * refactoring + cleaned up some TODOs * updated ICoreRelayer interface * adjusted tests for new interface * Working testSend * Merged refactoring + cleaned up some TODOs * updated ICoreRelayer interface * adjusted tests for new interface * Working testSend with new interface' * refactoring interfaces & files for single VAA design * GasOracle implementation of new interface * GasOracle compiles * Gas oracle upgradable * Fix compile errors in GasOracleGovernance * minor core relayer cleanup * Changes to getters, setters, state * implement quoteEvmDeliveryPrice, quoteTargetEvmGas, assetConversionAmount for corerelayer * Correcting interface inconsistencies between CoreRelayerStructs and ICoreRelayer * Fix encodeDeliveryRequestsContainer * added single vaa delivery entrypoint logic * Encode and Decode delivery instructions * Fixed many compile errors * First attempt at removing stacktoodeep error * Commenting out chunks of code to identify stack too deep error * Continue stack too deep quest * Revert "Commenting out chunks of code to identify stack too deep error" This reverts commit 8cd55d26cea2c49dc6e6bfa481c310f1a1c1143a. * Revert "Continue stack too deep quest" This reverts commit f0cde6871e26a7063e20d9a83b63b6a50e32bf37. * Fix stack too deep error in CoreRelayerMessages * tests compile, run, pass * fixing up fee collection assertions * GasOracle tests altering * Rename encodeDeliveryIntructions to convertToEncodedDeliveryInstructions because we are going from delivery request to delivery instruction * adding evm events to delivery execution * forwarding refactor for single vaa * relay provider name refactor * Test file slight refactor to allow for multiple chains * first impl of hub and spoke example * Forward test progress * Forwarding test passes! * More general parameters for test * Testing file more modular, calls 'generic relayer' * redelivery implementation * removing todos * Tests can use arbitrary amount of chains * Address various TODOs * refactored RelayProvider to be upgradeable via proxy * Add overhead inteface to RelayProvider & adjusted necessary fee calculations * added TODOs related to rewardAddress payout * provider price quoting changes * provider payments made at source * Fixed all compile errors * testForward and testSend pass again! * Switched quoteAssetConversion to quoteApplicationBudgetFee in CoreRelayer interface * First round of changes to support individual vaas in offchain relayer - Use new custom plugin event source api in relayer engine - Supports mulit delivery - Config for celo and fuji * contracts deploy successfully to tilt * bug fixes, contracts deploy to tilt * Starting the redelivery test * Tests pass again, with exception of the RelayProvider tests that tested reverts, and the new testRedelivery which isn't finished * small plugin changes * MockRelayerIntegration is used for sending * prepare offchain relayer to run in both tilt and testnet * update readme and npm scripts for offchain relayer * nit: remove console.log(argv) * solc version bump * Tests changed to pass (commented out the tests with differing require statements and kept redelivery incomplete * chain registration typescript scripts * Redeliver works! * Redelivery test works! * testnet deploy + relayer engine test * Testing two sends * Friday changes to round trip on testnet * Shortening current tests * Funds are correct! Relayer gets paid! * Remove extraneous comments * ts scripts for deployment and config * Wormhole Fee Test Co-authored-by: chase-45 <chasemoran45@gmail.com> Co-authored-by: derpy-duck <115193320+derpy-duck@users.noreply.github.com>
2023-01-05 14:26:27 -08:00
const parsedBatchVM = await mockContract.parseWormholeBatch(fullBatchTest.signedBatchVM);
const observations = parsedBatchVM.observations;
const deliveryVM = await mockContract.parseWormholeObservation(observations[observations.length - 1]);
const deliveryInstructionsContainer = await coreRelayer.decodeDeliveryInstructionsContainer(deliveryVM.payload);
const instruction = deliveryInstructionsContainer.instructions[0];
const relayParameters = await coreRelayer.decodeRelayParameters(instruction.relayParameters);
Add tests for send and deliver functionality (#9) * Complete send and deliver functionality * Clean up * Add tests for relayer send method * ethereum: remove interfaces * ethereum: fix test * ethereum: rename directory * ethereum: clean up; add ts tests * Add tests and clean up * ethereum: fix test * ethereum: fix output * Add reentrancy protection and reduce gas overhead for relayers * Add tests for full batch delivery * Update relayer contracts to reflect changes to batch VAA implementation * add rewards payout * implement redeliveries, replay protection * Complete full batch test suite * sdk: add sdk * sdk: fix package.json * Add partial batch unit test and add to integration test * Fix comments in integration test * sdk: fix tsconfig.json * ethereum: fix build * Add relayer registration to integration test * Finish integration test suite * ethereum: fix readAbi * ethereum: fix merge conflict * Complete full batch test suite * Add partial batch unit test and add to integration test * Finish integration test suite * Fix local validator test * Fix merge conflict * Add Makefile * Add documentation to relayer contracts * Fix Makefile * ethereum: clean up * ethereum: fix interface * ethereum: fix method names and tests * Prepare integration test for off-chain relayer changes * Refactor contracts Co-authored-by: Drew <dsterioti@users.noreply.github.com> Co-authored-by: Karl Kempe <karlkempe@users.noreply.github.com> Co-authored-by: valentin <valentinvonalbrecht@yahoo.de> Co-authored-by: justinschuldt <justinschuldt@gmail.com>
2022-09-30 09:18:49 -07:00
// call the deliver method on the relayer contract
const deliveryReceipt: ethers.ContractReceipt = await coreRelayer
Move development branch to main (#23) * refactoring for multidelivery * partial ts-test fixes * use typechain in integration tests, update prettier, fix remaining integration tests * run formatter on solidity files * gas refunding * gas forwarding logic * msg.send -> refundAmount * minor test refactor & additions * created relayer engine directory * more testing & tilt environment config for relayer engine * starting work on the xMint example contracts * additions for relayer engine * minor modifications & todos * fixed some errors * refactoring + cleaned up some TODOs * updated ICoreRelayer interface * adjusted tests for new interface * Working testSend * Merged refactoring + cleaned up some TODOs * updated ICoreRelayer interface * adjusted tests for new interface * Working testSend with new interface' * refactoring interfaces & files for single VAA design * GasOracle implementation of new interface * GasOracle compiles * Gas oracle upgradable * Fix compile errors in GasOracleGovernance * minor core relayer cleanup * Changes to getters, setters, state * implement quoteEvmDeliveryPrice, quoteTargetEvmGas, assetConversionAmount for corerelayer * Correcting interface inconsistencies between CoreRelayerStructs and ICoreRelayer * Fix encodeDeliveryRequestsContainer * added single vaa delivery entrypoint logic * Encode and Decode delivery instructions * Fixed many compile errors * First attempt at removing stacktoodeep error * Commenting out chunks of code to identify stack too deep error * Continue stack too deep quest * Revert "Commenting out chunks of code to identify stack too deep error" This reverts commit 8cd55d26cea2c49dc6e6bfa481c310f1a1c1143a. * Revert "Continue stack too deep quest" This reverts commit f0cde6871e26a7063e20d9a83b63b6a50e32bf37. * Fix stack too deep error in CoreRelayerMessages * tests compile, run, pass * fixing up fee collection assertions * GasOracle tests altering * Rename encodeDeliveryIntructions to convertToEncodedDeliveryInstructions because we are going from delivery request to delivery instruction * adding evm events to delivery execution * forwarding refactor for single vaa * relay provider name refactor * Test file slight refactor to allow for multiple chains * first impl of hub and spoke example * Forward test progress * Forwarding test passes! * More general parameters for test * Testing file more modular, calls 'generic relayer' * redelivery implementation * removing todos * Tests can use arbitrary amount of chains * Address various TODOs * refactored RelayProvider to be upgradeable via proxy * Add overhead inteface to RelayProvider & adjusted necessary fee calculations * added TODOs related to rewardAddress payout * provider price quoting changes * provider payments made at source * Fixed all compile errors * testForward and testSend pass again! * Switched quoteAssetConversion to quoteApplicationBudgetFee in CoreRelayer interface * First round of changes to support individual vaas in offchain relayer - Use new custom plugin event source api in relayer engine - Supports mulit delivery - Config for celo and fuji * contracts deploy successfully to tilt * bug fixes, contracts deploy to tilt * Starting the redelivery test * Tests pass again, with exception of the RelayProvider tests that tested reverts, and the new testRedelivery which isn't finished * small plugin changes * MockRelayerIntegration is used for sending * prepare offchain relayer to run in both tilt and testnet * update readme and npm scripts for offchain relayer * nit: remove console.log(argv) * solc version bump * Tests changed to pass (commented out the tests with differing require statements and kept redelivery incomplete * chain registration typescript scripts * Redeliver works! * Redelivery test works! * testnet deploy + relayer engine test * Testing two sends * Friday changes to round trip on testnet * Shortening current tests * Funds are correct! Relayer gets paid! * Remove extraneous comments * ts scripts for deployment and config * Wormhole Fee Test Co-authored-by: chase-45 <chasemoran45@gmail.com> Co-authored-by: derpy-duck <115193320+derpy-duck@users.noreply.github.com>
2023-01-05 14:26:27 -08:00
.deliver(targetDeliveryParams, {
value: await coreRelayer.estimateEvmCost(instruction.targetChain, relayParameters.deliveryGasLimit),
gasLimit: relayParameters.deliveryGasLimit * 10,
})
Add tests for send and deliver functionality (#9) * Complete send and deliver functionality * Clean up * Add tests for relayer send method * ethereum: remove interfaces * ethereum: fix test * ethereum: rename directory * ethereum: clean up; add ts tests * Add tests and clean up * ethereum: fix test * ethereum: fix output * Add reentrancy protection and reduce gas overhead for relayers * Add tests for full batch delivery * Update relayer contracts to reflect changes to batch VAA implementation * add rewards payout * implement redeliveries, replay protection * Complete full batch test suite * sdk: add sdk * sdk: fix package.json * Add partial batch unit test and add to integration test * Fix comments in integration test * sdk: fix tsconfig.json * ethereum: fix build * Add relayer registration to integration test * Finish integration test suite * ethereum: fix readAbi * ethereum: fix merge conflict * Complete full batch test suite * Add partial batch unit test and add to integration test * Finish integration test suite * Fix local validator test * Fix merge conflict * Add Makefile * Add documentation to relayer contracts * Fix Makefile * ethereum: clean up * ethereum: fix interface * ethereum: fix method names and tests * Prepare integration test for off-chain relayer changes * Refactor contracts Co-authored-by: Drew <dsterioti@users.noreply.github.com> Co-authored-by: Karl Kempe <karlkempe@users.noreply.github.com> Co-authored-by: valentin <valentinvonalbrecht@yahoo.de> Co-authored-by: justinschuldt <justinschuldt@gmail.com>
2022-09-30 09:18:49 -07:00
.then((tx: ethers.ContractTransaction) => tx.wait());
// confirm that the batch VAA payloads were stored in a map in the mock contract
const batchLen = observations.length;
for (let i = 0; i < batchLen - 1; ++i) {
const parsedVM = await mockContract.parseWormholeObservation(observations[i]);
Add tests for send and deliver functionality (#9) * Complete send and deliver functionality * Clean up * Add tests for relayer send method * ethereum: remove interfaces * ethereum: fix test * ethereum: rename directory * ethereum: clean up; add ts tests * Add tests and clean up * ethereum: fix test * ethereum: fix output * Add reentrancy protection and reduce gas overhead for relayers * Add tests for full batch delivery * Update relayer contracts to reflect changes to batch VAA implementation * add rewards payout * implement redeliveries, replay protection * Complete full batch test suite * sdk: add sdk * sdk: fix package.json * Add partial batch unit test and add to integration test * Fix comments in integration test * sdk: fix tsconfig.json * ethereum: fix build * Add relayer registration to integration test * Finish integration test suite * ethereum: fix readAbi * ethereum: fix merge conflict * Complete full batch test suite * Add partial batch unit test and add to integration test * Finish integration test suite * Fix local validator test * Fix merge conflict * Add Makefile * Add documentation to relayer contracts * Fix Makefile * ethereum: clean up * ethereum: fix interface * ethereum: fix method names and tests * Prepare integration test for off-chain relayer changes * Refactor contracts Co-authored-by: Drew <dsterioti@users.noreply.github.com> Co-authored-by: Karl Kempe <karlkempe@users.noreply.github.com> Co-authored-by: valentin <valentinvonalbrecht@yahoo.de> Co-authored-by: justinschuldt <justinschuldt@gmail.com>
2022-09-30 09:18:49 -07:00
// query the contract for the saved payload
const verifiedPayload = await mockContract.getPayload(parsedVM.hash);
expect(verifiedPayload).to.equal(parsedVM.payload);
// clear the payload from storage for future tests
await mockContract.clearPayload(parsedVM.hash).then((tx: ethers.ContractTransaction) => tx.wait());
// confirm that the payload was cleared
const emptyPayload = await mockContract.getPayload(parsedVM.hash);
expect(emptyPayload).to.equal("0x");
}
// fetch and save the delivery status VAA
fullBatchTest.deliveryStatusVM = await getSignedVaaFromReceiptOnEth(
deliveryReceipt,
TARGET_CHAIN_ID as ChainId,
0 // guardianSetIndex
);
});
it("Should correctly emit a DeliveryStatus message upon full batch delivery", async () => {
// parse the delivery status VAA payload
const parsedDeliveryStatus = await mockContract.parseWormholeObservation(fullBatchTest.deliveryStatusVM);
Add tests for send and deliver functionality (#9) * Complete send and deliver functionality * Clean up * Add tests for relayer send method * ethereum: remove interfaces * ethereum: fix test * ethereum: rename directory * ethereum: clean up; add ts tests * Add tests and clean up * ethereum: fix test * ethereum: fix output * Add reentrancy protection and reduce gas overhead for relayers * Add tests for full batch delivery * Update relayer contracts to reflect changes to batch VAA implementation * add rewards payout * implement redeliveries, replay protection * Complete full batch test suite * sdk: add sdk * sdk: fix package.json * Add partial batch unit test and add to integration test * Fix comments in integration test * sdk: fix tsconfig.json * ethereum: fix build * Add relayer registration to integration test * Finish integration test suite * ethereum: fix readAbi * ethereum: fix merge conflict * Complete full batch test suite * Add partial batch unit test and add to integration test * Finish integration test suite * Fix local validator test * Fix merge conflict * Add Makefile * Add documentation to relayer contracts * Fix Makefile * ethereum: clean up * ethereum: fix interface * ethereum: fix method names and tests * Prepare integration test for off-chain relayer changes * Refactor contracts Co-authored-by: Drew <dsterioti@users.noreply.github.com> Co-authored-by: Karl Kempe <karlkempe@users.noreply.github.com> Co-authored-by: valentin <valentinvonalbrecht@yahoo.de> Co-authored-by: justinschuldt <justinschuldt@gmail.com>
2022-09-30 09:18:49 -07:00
const deliveryStatusPayload = parsedDeliveryStatus.payload;
// parse the batch VAA (need to use the batch hash)
const parsedBatchVM = await mockContract.parseWormholeBatch(fullBatchTest.signedBatchVM);
Add tests for send and deliver functionality (#9) * Complete send and deliver functionality * Clean up * Add tests for relayer send method * ethereum: remove interfaces * ethereum: fix test * ethereum: rename directory * ethereum: clean up; add ts tests * Add tests and clean up * ethereum: fix test * ethereum: fix output * Add reentrancy protection and reduce gas overhead for relayers * Add tests for full batch delivery * Update relayer contracts to reflect changes to batch VAA implementation * add rewards payout * implement redeliveries, replay protection * Complete full batch test suite * sdk: add sdk * sdk: fix package.json * Add partial batch unit test and add to integration test * Fix comments in integration test * sdk: fix tsconfig.json * ethereum: fix build * Add relayer registration to integration test * Finish integration test suite * ethereum: fix readAbi * ethereum: fix merge conflict * Complete full batch test suite * Add partial batch unit test and add to integration test * Finish integration test suite * Fix local validator test * Fix merge conflict * Add Makefile * Add documentation to relayer contracts * Fix Makefile * ethereum: clean up * ethereum: fix interface * ethereum: fix method names and tests * Prepare integration test for off-chain relayer changes * Refactor contracts Co-authored-by: Drew <dsterioti@users.noreply.github.com> Co-authored-by: Karl Kempe <karlkempe@users.noreply.github.com> Co-authored-by: valentin <valentinvonalbrecht@yahoo.de> Co-authored-by: justinschuldt <justinschuldt@gmail.com>
2022-09-30 09:18:49 -07:00
// grab the deliveryVM index, which is the last VM in the batch
const deliveryVM = await mockContract.parseWormholeObservation(parsedBatchVM.observations.at(-1)!);
Add tests for send and deliver functionality (#9) * Complete send and deliver functionality * Clean up * Add tests for relayer send method * ethereum: remove interfaces * ethereum: fix test * ethereum: rename directory * ethereum: clean up; add ts tests * Add tests and clean up * ethereum: fix test * ethereum: fix output * Add reentrancy protection and reduce gas overhead for relayers * Add tests for full batch delivery * Update relayer contracts to reflect changes to batch VAA implementation * add rewards payout * implement redeliveries, replay protection * Complete full batch test suite * sdk: add sdk * sdk: fix package.json * Add partial batch unit test and add to integration test * Fix comments in integration test * sdk: fix tsconfig.json * ethereum: fix build * Add relayer registration to integration test * Finish integration test suite * ethereum: fix readAbi * ethereum: fix merge conflict * Complete full batch test suite * Add partial batch unit test and add to integration test * Finish integration test suite * Fix local validator test * Fix merge conflict * Add Makefile * Add documentation to relayer contracts * Fix Makefile * ethereum: clean up * ethereum: fix interface * ethereum: fix method names and tests * Prepare integration test for off-chain relayer changes * Refactor contracts Co-authored-by: Drew <dsterioti@users.noreply.github.com> Co-authored-by: Karl Kempe <karlkempe@users.noreply.github.com> Co-authored-by: valentin <valentinvonalbrecht@yahoo.de> Co-authored-by: justinschuldt <justinschuldt@gmail.com>
2022-09-30 09:18:49 -07:00
// expected values in the DeliveryStatus payload
const expectedDeliveryAttempts = 1;
const expectedSuccessBoolean = 1;
const success = verifyDeliveryStatusPayload(
deliveryStatusPayload,
parsedBatchVM.hash,
RELAYER_EMITTER_ADDRESS,
deliveryVM.sequence,
expectedDeliveryAttempts,
expectedSuccessBoolean
);
expect(success).to.be.true;
});
it("Should increment relayer fees upon delivery", async () => {
// query the contract to check the balance of the relayer fees
const queriedRelayerFees = await coreRelayer.relayerRewards(wallet.address, TARGET_CHAIN_ID);
expect(queriedRelayerFees.toString()).to.equal(fullBatchTest.targetChainGasEstimate.toString());
});
});
});