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 { TestResults } from "./helpers/structs";
|
|
|
|
import { ChainId, tryNativeToHexString } from "@certusone/wormhole-sdk";
|
2022-09-30 09:18:49 -07:00
|
|
|
import {
|
|
|
|
CHAIN_ID_ETH,
|
|
|
|
CORE_RELAYER_ADDRESS,
|
|
|
|
LOCALHOST,
|
|
|
|
RELAYER_DEPLOYER_PRIVATE_KEY,
|
|
|
|
MOCK_RELAYER_INTEGRATION_ADDRESS,
|
|
|
|
} 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";
|
2022-09-30 09:18:49 -07:00
|
|
|
|
|
|
|
const ETHEREUM_ROOT = `${__dirname}/..`;
|
|
|
|
|
|
|
|
describe("Core Relayer Integration Test", () => {
|
|
|
|
const provider = new ethers.providers.StaticJsonRpcProvider(LOCALHOST);
|
|
|
|
|
|
|
|
// signers
|
|
|
|
const wallet = new ethers.Wallet(RELAYER_DEPLOYER_PRIVATE_KEY, provider);
|
|
|
|
|
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 coreRelayer = CoreRelayer__factory.connect(CORE_RELAYER_ADDRESS, wallet);
|
|
|
|
const mockContract = MockRelayerIntegration__factory.connect(MOCK_RELAYER_INTEGRATION_ADDRESS, wallet);
|
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";
|
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
|
2022-10-06 10:16:57 -07:00
|
|
|
fullBatchTest.targetChainGasEstimate = await coreRelayer.estimateEvmCost(TARGET_CHAIN_ID, TARGET_GAS_LIMIT);
|
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,
|
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
|
2022-10-06 10:16:57 -07:00
|
|
|
const parsedBatchVM = await mockContract.parseWormholeBatch(fullBatchTest.signedBatchVM);
|
2022-09-30 09:18:49 -07:00
|
|
|
|
|
|
|
// validate the individual messages
|
2022-10-06 10:16:57 -07:00
|
|
|
const observations = parsedBatchVM.observations;
|
|
|
|
const batchLen = parsedBatchVM.observations.length;
|
|
|
|
for (let i = 0; i < batchLen - 2; ++i) {
|
|
|
|
const parsedVM = await mockContract.parseWormholeObservation(observations[i]);
|
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]);
|
|
|
|
}
|
|
|
|
|
2022-10-06 10:16:57 -07:00
|
|
|
// 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);
|
|
|
|
|
2022-09-30 09:18:49 -07:00
|
|
|
// validate the delivery instructions VAA
|
2022-10-06 10:16:57 -07:00
|
|
|
const deliveryVM = await mockContract.parseWormholeObservation(observations[batchLen - 1]);
|
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);
|
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);
|
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 = {
|
2022-09-30 09:18:49 -07:00
|
|
|
encodedVM: fullBatchTest.signedBatchVM,
|
2022-10-06 10:16:57 -07:00
|
|
|
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,
|
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);
|
|
|
|
|
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,
|
|
|
|
})
|
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
|
2022-10-06 10:16:57 -07:00
|
|
|
const batchLen = observations.length;
|
|
|
|
for (let i = 0; i < batchLen - 1; ++i) {
|
|
|
|
const parsedVM = await mockContract.parseWormholeObservation(observations[i]);
|
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
|
2022-10-06 10:16:57 -07:00
|
|
|
const parsedDeliveryStatus = await mockContract.parseWormholeObservation(fullBatchTest.deliveryStatusVM);
|
2022-09-30 09:18:49 -07:00
|
|
|
const deliveryStatusPayload = parsedDeliveryStatus.payload;
|
|
|
|
|
|
|
|
// parse the batch VAA (need to use the batch hash)
|
2022-10-06 10:16:57 -07:00
|
|
|
const parsedBatchVM = await mockContract.parseWormholeBatch(fullBatchTest.signedBatchVM);
|
2022-09-30 09:18:49 -07:00
|
|
|
|
|
|
|
// grab the deliveryVM index, which is the last VM in the batch
|
2022-10-06 10:16:57 -07:00
|
|
|
const deliveryVM = await mockContract.parseWormholeObservation(parsedBatchVM.observations.at(-1)!);
|
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());
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|