* feat(eth): optimize ReceiverMessages parseAndVerifyVM
* test(eth): update test setups to use wormholeReceiver
* chore(eth): remove console logging
* feat(eth): optimize & revert return type for parseAndVerifyVM
* fix(eth): add index boundary checks
* perf(eth): optimize verifySignature by passing in primitives instead of structs
* test(eth): add wormhole tests related to guardian set validity
* test(eth): add more parseAndVerify failure test cases
* test(eth): add more failure tests for parseAndVerify
* test(eth): add empty forge test, refactor/deduplicate
The structure of the fake payload was not as expected.
Some tests were failing for the wrong reason but with the right error code.
Added one testcase to make sure the default behavior of the forging function
is correct.
* perf(ethereum): optimize gas & bytesize by changing some function parameters to use bytes memory
change parseWormholeMerkleHeaderNumUpdates & parsePriceFeedMessage to use bytes memory instead of
bytes calldata for function parameters
* perf(ethereum): more optimizations
use bytes memory for more functions, change parsePriceFeedMessage to use offset instead of copying a
slice
* [eth] Add unsafe calldata bytes lib (#888)
* Copy UnsafeBytesLib to UnsafeCalldataBytesLib
* [eth] Add UnsafeCalldataBytesLib and update code
---------
Co-authored-by: Ali Behjati <bahjatia@gmail.com>
* feat(ethereum): charge update fee per numUpdates for accumulator updates
* refactor(ethereum): refactor, add benchmarks for getUpdateFee
* refactor(ethereum): add back parseWormholeMerkleHeaderNumUpdates
* refactor: increment totalNumUdpates by 1 for batch prices
* test(ethereum): add test for checking getUpdateFee for accumulator, clean up unused code
This PR adds the support WormholeMerkle accumulator message to the ethereum contract while still supporting the old message format. The code is not optimized yet and with more optimizations we can achieve a better gas usage. Currently based on the gas benchmark below it has a 18% improvement with a single price feed. Although the cost of updating 5 feeds in the same batch is higher than the current approach but in reality the chances that all 5 feeds be in the same batch is very low.
* [eth] Add Canto mainnet
This deployment also enables contract rewards on canto. Since the
changed code is only specific to the Canto network and is used only
in initialization, only the diff is added as a file.
* Remove ds store
* Add some doc to deploying.md