Commit Graph

3207 Commits

Author SHA1 Message Date
derpy-duck 1d5a1bc220 Fix Delivery Provider Pricing and add a test 2023-06-09 21:43:06 +00:00
derpy-duck 81da5d890f
Fix to PR 3043 (#3066) 2023-06-08 20:08:21 -04:00
derpy-duck ee9c0209e1
Wormhole message fee now part of quoteDeliveryPrice (#3043) 2023-06-08 14:01:34 -04:00
Joe Howarth c3b7bdcbd9
relayer: fix messageTest + rm lib/forge-std + rm lib/openzeppelin (#3044)
* relayer: fix messageTest + rm lib/forge-std + rm lib/openzeppelin

* save

* useLastRun -> false
2023-06-06 17:05:48 -03:00
derpy-duck 85a0d15c3d
Forward uses same refund chain id and refund address (#3034)
* WIP

* Fixes

* Forward uses same refund chain id and refund address

* Updated interfaces
2023-06-06 13:49:09 -04:00
derpy-duck 73b7d559e3
Relayer: Natspec documentation in IWormholeRelayer (#3032)
* WIP

* Fixes

* Updated interfaces
2023-06-06 13:19:12 -04:00
derpy-duck 7a2e5da490
redis share config (#3030)
* redis share config

* small change remove docker build redis-relayer

* reorg redis image build

* it works

---------

Co-authored-by: Joe Howarth <jhowarth@jumptrading.com>
2023-06-02 17:55:46 -07:00
derpy-duck a745c9466c
remove output files (#3031) 2023-06-02 18:40:41 -04:00
derpy-duck 8b8f307f9d
relayer: Fixes to get ready to merge (#3029)
* fixes

* remove sh bash changes
2023-06-02 17:06:07 -04:00
derpy-duck e4360c8cfe
gRelayer: Rename CoreRelayer to WormholeRelayer in the guardian code (#3026)
* core relayer -> wormhole relayer

* push wormholerelayermodulestr

* fix sdk/vaa test

* Wormhole relayer tests
2023-06-02 16:01:19 -04:00
derpy-duck e15ad23e9c remove 'lib' from make clean 2023-06-02 18:10:19 +00:00
derpy-duck 23b5cb5124 Remove test that didn't pass and doesn't exist in main branch 2023-06-02 17:51:34 +00:00
derpy-duck bc6716966a remove test.txt 2023-06-02 17:17:23 +00:00
derpy-duck 034c82e716 test 2023-06-02 17:17:01 +00:00
derpy-duck 94e1afe2f6 fixed package.json of sdk 2023-06-02 16:46:29 +00:00
derpy-duck 6b788fccaf optional: true 2023-06-02 16:40:32 +00:00
derpy-duck e71d793187 injective optional dependencies 2023-06-02 16:24:48 +00:00
derpy-duck d90d090285 node 19.6.1 2023-06-02 16:15:58 +00:00
derpy-duck 3569f1ac8d test 2023-06-02 16:08:19 +00:00
derpy-duck c28bfdcb9e lets see 2023-06-02 16:00:23 +00:00
derpy-duck dee4bd3f48 Lets see if this works 2023-06-02 15:53:54 +00:00
derpy-duck afa790a17b Merge conflict 2023-06-02 15:47:58 +00:00
derpy-duck b438ebc47b merge confliect 2023-06-02 15:44:16 +00:00
derpy-duck 6636254e30 fix rebase 2023-06-02 15:42:22 +00:00
derpy-duck 2e400fbb6f remove build-forge from commit 2023-06-02 15:42:22 +00:00
derpy-duck bb11d69772 make generate 2023-06-02 15:42:22 +00:00
derpy-duck 0ebbc6708d merge conflict 2023-06-02 15:42:22 +00:00
derpy-duck 071fddf858 Testnet deploy! (#3011) 2023-06-02 15:42:22 +00:00
derpy-duck b0c7bf7d08 Relayer: Remove incorrect comments, change uint32->Gas, SetDefaultRelayProvider->SetDefaultDeliveryProvider (#3005)
* gRelayer: Uses calls upper bounded on return data length for deliveries.

This prevents excessive gas usage from contracts that return big and
complex errors or even maliciously crafted revert buffers.

* gRelayer: Basic test for large return/revert buffers in `executeInstruction`.

* gRelayer: simplifies `executeInstruction` interface.

This avoids duplicate data and the need to ensure consistency between
struct fields or arguments.
It also results in gas savings for large payloads.

* gRelayer: simplifies attack forward mechanism test.

* gRelayer: adds test with custom revert on wormhole message received.

* gRelayer: ensure payment calls are upper bounded on return data length.

* gRelayer: a few renames and comment fixes.

* gRelayer: simplifies condition in low level call.

* gRelayer: adds upper bound as a parameter to the low level call function

Also fixes `call` invocation to use lengths for the calldata and return
data instead of past the end indices.

* gRelayer: introduces struct for `executeInstruction` to minimize calldata.

* WormholeRelayerGovernance comments

* compiles

* merge

* remove incorrect comment

* WormholeRelayerSetDefaultDeliveryProvider

* make generate

* setdefaultdeliveryprovider

* format

* gasUsed bignumber

* BigNumber gasLimit

* Modify IWormholeRelayerTyped

---------

Co-authored-by: Sebastián Claudio Nale <sebinale@gmail.com>
2023-06-02 15:42:20 +00:00
scnale 1d6f3a6dd2 gRelayer: Uses calls upper bounded on return data length for deliveries. (#2934)
* gRelayer: Uses calls upper bounded on return data length for deliveries.

This prevents excessive gas usage from contracts that return big and
complex errors or even maliciously crafted revert buffers.

* gRelayer: Basic test for large return/revert buffers in `executeInstruction`.

* gRelayer: simplifies `executeInstruction` interface.

This avoids duplicate data and the need to ensure consistency between
struct fields or arguments.
It also results in gas savings for large payloads.

* gRelayer: simplifies attack forward mechanism test.

* gRelayer: adds test with custom revert on wormhole message received.

* gRelayer: ensure payment calls are upper bounded on return data length.

* gRelayer: a few renames and comment fixes.

* gRelayer: simplifies condition in low level call.

* gRelayer: adds upper bound as a parameter to the low level call function

Also fixes `call` invocation to use lengths for the calldata and return
data instead of past the end indices.

* gRelayer: introduces struct for `executeInstruction` to minimize calldata.
2023-06-02 15:41:53 +00:00
Joe Howarth e7303e508b Relayer: pre-audit renames (#3003)
* relayer: overloads + remove DeliveryData

* relayer: {source,target}ChainId -> {source,target}Chain, quoteDeliveryEvmPrice includes wh message fee

* relayer: rename CoreRelayer -> WormholeRelayer

* relayer: refundChainId -> refundChain

* relayer: IWormholeRelayer -> IWormholeRelayerTyped, same for relayProvider

* relayer: RelayProvider -> DeliveryProvider

* relayer: introduce TargetNative

* relayer: introduce LocalNative for Wei

* relayer: convert quote funcs to typed

* Fix forge tests

* gRelayer: Remove unnecessary check + Apply renaming changes to Typescript (#3004)

* Remove unnecessary check

* Rename for offchain

* Typescript fixes

* rename files

* add wormhole to constructor

* More renamings + fix deploy script names

* rename config files

* coreRelayer -> wormholeRelayer in env file

* more fixes in deployWormholeRelayer.ts

* Rename configure json

* fix typescirpt compile error in test

---------

Co-authored-by: derpy-duck <115193320+derpy-duck@users.noreply.github.com>
2023-06-02 15:41:53 +00:00
derpy-duck 7cc7423737 relayer: Catches executeInstruction reverts & Deals with bad reward addresses (#2998)
* We now revert if address is unable to be paid, and we don't decode errors for which we do not know the selector

* check for length of revert data

* nit

* merge

* address comments

* address coment
2023-06-02 15:41:53 +00:00
derpy-duck 71274a45f8 Add refund status tests + re-introduce attack forward integration test (#3000)
* Remove DRY from tests

* Remove DRY

* Two more tests

* More tests :)
2023-06-02 15:41:53 +00:00
derpy-duck e54c7e0fa0 gRelayer: make tests more DRY (#2999)
* Remove DRY from tests

* Remove DRY
2023-06-02 15:41:53 +00:00
derpy-duck 616da7f9f2 Relayer/forge test improvements 5 25 (#2993)
* Unit test send resend

* More tests

* More tests

* delete coverage files
2023-06-02 15:41:53 +00:00
derpy-duck b5583e8e23 gRelayer: Proposal to improve scalability of interface (#2963)
* WIP (IWormholeRelayer.sol interface, IRelayProvider.sol interface, RelayProvider implementation)

* Reorder fields to match

* Send-end implementation (of send, resend, forward)

* Part of CoreRelayerSerde

* relayer: create ExecutionParamters.sol and update IRelayProvider.sol

* relayer: remove evmExecutionParamters from IWormholeRelayer interface

* relayer: execution paramters have version

* relyaer: typo

* Fix interface files post discussion

* Interfaces locked

* Add QuoteParams

* CoreRelayerSend and CoreRelayerSerde implmeneted

* relayer: relay provider impl draft

* Fix build errors

* CoreRelayerDelivery modified

* relayer: fix up types

* Contracts build!

* MockRelayerIntegration builds

* Send and forward pass!

* Resend works

* Funds Correct for Send and Forward

* Forward Failure funds test

* Test multiforwards

* Funds correct for a resend

* relayer: fix ts-scripts

* Cross chain refund test

* Relayer: Cleanup interfaces and add untyped ifaces (#2967)

* relayer: create untyped interfaces, move utils to libraries dir, remove vaakey type

* merge

* relayer: run erase-types

* Combining quoteparams and executionparams

* relayer: fix 'Gas' type erasure

* Fix all typescript

* Typescript fixes

* Try to make change to ExecutionParameters to encodePacked

* Back to encoding normally because tests didn't pass

* Delivery failure test fix

* Change gas limit for multiforward test

* Redelivery test fix

* Nits

* 800000->900000 for forwarding gas amount

* aptos: pin tag instead of deleted branch

---------

Co-authored-by: Joe Howarth <josephehowarth@gmail.com>
Co-authored-by: Joe Howarth <jhowarth@jumptrading.com>
Co-authored-by: heyitaki <akshath@live.com>
2023-06-02 15:41:53 +00:00
derpy-duck fc56908109 gRelayer: CI tests (#2932)
* relayer: Update truffle compile contracts directory to exclude the relayer interfaces

* relayer: Add *.sol back into contracts_directory

* Lets see if CI tests are run

* Move typescript tests to SDK

* tests in CI use right RPC links

* Wait until relayer engine ready to run SDK tests

* Specify env in tilt-ci in package.json of SDK

* Use correct RPC links in CI

* Upgrade contract test

* Fix test

* Tests all work hopefully!

* small modifications formatting

* Moved tests into one file

* gRelayer: Use two guardians for CI

* 40 min

* relayer: Integration test code cleanup

* correct truffle config

* Update test to new deployment

* gRelayer: Fix forge test

* less code duplication

* Tests pass

* Remove hardcoded conversions from test file, use SDK instead

* Bugfix

* Emit event when refunds are executed
2023-06-02 15:41:53 +00:00
Andreas 994205e173 add defaultRelayProvider as a parameter to initialize() and replace the current kludge (#2952)
* remove immutable initializeDefaultRelayer kludge in favor of a proper parameter

* update ts-scripts to correctly call initialize
2023-06-02 15:41:53 +00:00
derpy-duck 498786d82a relayer: Fix typescript to make PR 2391 Pass (#2937)
* relayer: Update truffle compile contracts directory to exclude the relayer interfaces

* relayer: SDK fix typescript errors related to removal of send struct

* relayer: Add *.sol back into contracts_directory

* relayer: nits
2023-06-02 15:41:53 +00:00
Joe Howarth 2c09d22d26 Relayer: udvt experiment (#2931)
* relayer: Use typed units, remove send struct from interface

* evm: fixes truffle compile pipeline.

We use brace expansion in the `contracts_directory` config field.
This seems to be respected by the internal profiler that truffle uses.

* relayer: cleanup, make udvt's u256

* relayer: review feedback: move constructSend, remove uin128 const

---------

Co-authored-by: Sebastián Claudio Nale <sebinale@gmail.com>
2023-06-02 15:41:53 +00:00
Andreas 3da392e8c0 additional improvements / clean-up (#2936)
* refactor conversion code to vastly improve readability

* harden contract upgrade path and improve documentation of governance actions

* adjust GOVERNANCE_ACTION_UPDATE_DEFAULT_PROVIDER value from 4 to 3

* distinguish between payload ids and versions + add doc

* change name of checkPayloadId to checkUint8 to reflect payload/version change

* perform checks before explicit enum casting to avoid Panic

* improve code and comment uniformity, remove outdated TODOs

* accept suggestion to replace abi.encodeWithSelector with encodeCall
Co-authored-by: scnale <sebinale@gmail.com>

---------

Co-authored-by: scnale <sebinale@gmail.com>
Co-authored-by: derpy-duck <115193320+derpy-duck@users.noreply.github.com>
2023-06-02 15:41:53 +00:00
derpy-duck f7e97ff4c5 ganache-cli args long form (#2927)
* ganache-cli args long form

* fix
2023-06-02 15:41:53 +00:00
Joe Howarth 76ac194323 Relayer: CoreRelayer large refactor (#2897)
* wip: huge refactor of coreRelayer codebase, contracts compile, tests next

* wip: fix incorrect use of abi.decode, clean up further

* fix: tests (all but 1 pass again)

* test: reduce lower threshold of gasAmount on testFundsCorrectForARedelivery

* gRelayer: nits

* Upgrades truffle to latest released version.

* gRelayer: Separates out `BytesParsing` library.

This helps separate out bits that require solc v0.8.13 or greater.

* Sets up truffle compile pipeline to use v0.8.4.

* Replaces implicit build step with an explicit one for all truffle scripts.

With this, we avoid compilations that include the generic relayer
contracts.

* gRelayer: Relay provider calls now done externally for cross-chain refund (#2898)

* evm: Removes obsolete packages.

`truffle-assertions` is not used.
`ganache-cli` is now part of `truffle`.

* evm: Fixes `ganache-cli` invocation for newest release.

- Adds show VM error flag to get revert buffers.
- Sources `.env` to set expected evm chain id in tests.

* gRelayer: Fixes foundry.toml settings for build output directory.

* gRelayer: Separates out forge output to `build-forge` directory.

* evm: Removes more obsolete packages.

- `solc`: truffle downloads native solc binaries on its own and falls
  back to downloading the emscripten builds when no native binaries are
found.
- `caver-js`: had only one reference in `truffle-config.js` but was an
  unused `require`.
- `@openzeppelin/test-environment`: no references to this package.
- `@openzeppelin/test-helpers`: no references to this package.

* bridge: Adds missing `await` in test.

* gRelayer: Removes `Structs` contract.

* evm: Fixes tests for core, token bridge and nft bridge.

* gRelayer: simplify forward logic (#2902)

* Remove increaseMaxTransactionFee and transactionFeeRefundAmountPostForward

* gRelayer: move emitForward to inside instruction executor

* gRelayer: tests pass

* gRelayer: address some TODOs (#2899)

* gRelayer: address some TODOs

* gRelayer: remove extraneous abi encodes

* getDefaultRelayParams pure -> view

* gRelayer: fix typo

* gRelayer: fast iteration! (#2909)

* Import IWormholeRelayer seperately

* import IWormholeRelayer seperately

* gRelayer: some typescript fixes related to importing from ethers (#2910)

* gRelayer: some typescript fixes related to importing from ethers

* gRelayer: Fix import in helpers.ts

* specify chainId

* gRelayer: fix ganache broken change

* wip deployment script update

* add SDK to relayer engine tilt job

* Add SDK to relayer engine dockerfile

* Move add SDK line to correct place

* Move add SDK line to correct place II

* Modify package lock for optional dependencies

* gRelayer: get SDK built in relayer engine dockerfile

* Fix typechain command in relayer engine dockerfile

* Avoid the extra test.sol file in typechain

* npm ci -> npm install

* Note in Relayer engine docker file

* fix relayer engine version bump - storage

* Update address for tilt/devnet/SDK for CoreRelayer

* gRelayer: fix relayer engine

* gRelayer: update addresses for mock integration

* Final changes to get tests to pass except one

---------

Co-authored-by: Joe Howarth <jhowarth@jumptrading.com>

* relayer engine dockerfile fix (#2923)

* gRelayer: fix sdk aptos test in tilt job (#2924)

* gRelayer: async request processing false

* gRelayer: update ganache-CLI arguments

* Fix ethereum makefile invocation of ganache-cli as well

* Fix ethereum makefile invocation of ganache-cli as well

* Change payload id of WormholeSetDefaultRelayProvider to 3, and remove the register chain action (#2926)

* gRelayer: increase build timeout to 30 min

---------

Co-authored-by: nonergodic <nonergodic@gmail.com>
Co-authored-by: derpy-duck <115193320+derpy-duck@users.noreply.github.com>
Co-authored-by: Sebastián Claudio Nale <sebinale@gmail.com>
2023-06-02 15:41:53 +00:00
Joe Howarth 3e7501c7e6 relayer: import sdk locally for gr relayer engine app (#2879)
* relayer: use tsx instead of ts-node for faster script start time

* relayer: import sdk locally for gr relayer engine app

* typo

* cleanup package.json re
2023-06-02 15:41:53 +00:00
derpy-duck 70056864e2 gRelayer: improve iwormholereceiver interface comments (#2889)
* gRelayer: improve IWormholeReceiver interface

* gRelayer: small grammar mistakes

* gRelayer: small grammar mistakes II
2023-06-02 15:41:53 +00:00
derpy-duck 30ede5047c gRelayer: revert if extra funds (#2882)
* gRelayer: Fix truncate bug

* gRelayer: revert if msg.value not correct

* gRelayer: naming nit
2023-06-02 15:41:53 +00:00
derpy-duck 42aeb746dc gRelayer: guardian changes (#2788)
* Adding wormhole relayer governance VAA injection methods

* Fix bugs - successfully builds

* Fix typo

* Add template command

* Added serialization test + Fixed bugs and tested a governance action in Tilt which worked!

* gRelayer: run make generate

* Fix compile error

* Change 18->21, Remove Merge message

* gRelayer: rebase

* gRelayer: remove merge messages

* gRelayer: remove file

* gRelayer: fix unintended change

* gRelayer: tests pass

* gRelayer-correct-action-numbers

* gRelayer-fix-compilation-error

* gRelayer: lint formatting

* gRelayer: fix forge tests for governance

* gRelayer: Add new governance message type to contracts - Migrate contract

* gRelayer: Worm CLI update

* gRelayer: tests pass

* gRelayer: tests pass
2023-06-02 15:41:51 +00:00
derpy-duck 0df6c8e96e Allow to specify your own CoreRelayer addresses in SDK (#2868)
* Allow to specify your own CoreRelayer addresses in SDK

* gRelayer: allow different core relayer addresses SDK changes
2023-06-02 15:40:33 +00:00
derpy-duck 0e5cf82634 gRelayer: Fix truncate bug (#2878) 2023-06-02 15:40:33 +00:00
chase-45 9ab65bad81 adding send event to contracts (#2859)
Co-authored-by: Joe Howarth <jhowarth@jumptrading.com>
2023-06-02 15:40:33 +00:00