Commit Graph

97 Commits

Author SHA1 Message Date
Reptile bac99e912f
evm: add token and nft bridge interface (#1710)
* Add token and nft bridge interface

* Add wormhole method to nft and bridge interface

* ethereum: add test to ensure interface match

* Add all public methods to interfaces

Co-authored-by: gator-boi <gator-boi@users.noreply.github.com>
Co-authored-by: Evan Gray <battledingo@gmail.com>
2022-10-28 12:28:40 -04:00
Evan Gray cb161db5e0 ethereum: migration for ERC20Permit 2022-09-19 15:31:44 -04:00
Karl Kempe 9df96ac666 Fix domain separator and add more tests 2022-09-19 13:42:38 -04:00
Karl Kempe d8adb6a700 Add ERC20 permit 2022-09-19 13:42:38 -04:00
Drew 6c6b25ab2a add check for the zero address in storeGuardianSet
Change-Id: Ic3c5fce71f687d98380d39dc62923d9c6423e194
2022-09-15 10:39:39 -04:00
Kevin Peters cec5bc7528 ethereum: Added fork protection tests 2022-09-09 13:16:27 -05:00
Kevin Peters 099756fe68 ethereum: Use chainId() getter in initialize 2022-09-09 13:16:27 -05:00
Kevin Peters e21d701443 ethereum: Changed invalid fork error message 2022-09-09 13:16:27 -05:00
Kevin Peters b7535a8e5b ethereum: Added isFork() method 2022-09-09 13:16:27 -05:00
Kevin Peters b1081d7d93 ethereum: Simplified forked chain check
No longer need to return uint16 max in chainId() for forked chains
2022-09-09 13:16:27 -05:00
Kevin Peters 3f9c80a554 ethereum: Fixed comment typo 2022-09-09 13:16:27 -05:00
Kevin Peters cacf054f0b ethereum: Added RecoverChainId Governance Message
Used to set the `chainId` and `evmChainId` for "bad-fork" chains
2022-09-09 13:16:27 -05:00
Kevin Peters 9d477e0585 ethereum: EVM fork protection
Added a `uint256 evmChainId` state variable to the Core, Token and NFT Bridge
contracts. `evmChainId` is compared to `block.chainid` in the `chainId`
function. When they don't match, a "bad fork" Chain ID is returned,
otherwise the Wormhole Chain ID is returned.
2022-09-09 13:16:27 -05:00
tbjump 09548300a0
comment danger of potential future VM.version increases (#1401)
comment danger of potential future VM.version increases
2022-09-07 12:33:35 -07:00
Evan Gray a58c5ae950 ethereum: remove wormhole from token name 2022-08-31 17:21:52 -04:00
Csongor Kiss fd540c91b4
ethereum: Check that bytes32 fits into 20 bytes before truncating (#1457) 2022-08-23 14:41:03 -04:00
Csongor Kiss 9510bb47d9 ethereum: Add property test on quorum
It should always be possible to reach quorum
2022-08-23 15:06:04 +02:00
justinschuldt d7b102df70 add EVM contract for batched VAA development 2022-08-15 08:41:40 -05:00
Csongor Kiss 2e890f02b3 ethereum: be more explicit about invalid guardian + test 2022-08-09 20:02:47 +01:00
Jonathan Claudius 73307397bc
Comment Eth Governance contracts (#1325)
* Comment Eth Governance contracts

* Tweak comments per peer review

* Add replay to the list
2022-07-12 09:02:26 -04:00
Csongor Kiss c453f4cf6d evm: Make finality a state variable 2022-06-28 21:31:23 +01:00
Csongor Kiss 2c9f7c239e ethereum: fix core contract upgradeability
Missed initializer
2022-06-27 19:19:16 +01:00
Csongor Kiss b6ea70fde0 evm: Add fromAddress to TransferWithPayload and remove fee 2022-06-21 22:35:49 -04:00
Csongor Kiss 5a4ce6ab51 ethereum: whitespace + docs 2022-06-21 22:35:49 -04:00
Jonathan Claudius 8875735581
Move quorum out of verifyVM (#1162)
* Move quorum out of verifyVM

* Add stub out to demonstrate sol-based tests

* Remove unnecessary import

* Neaten up the quorum conditional

* Another iteration on figuring out the test logic

* Fix indentation

* Refactor quorum and setup unit-test cases

* fix return naming

* More variable name clean up

* Move length check inside loop structure

* Fix condition by wrapping

* Fix syntax error

* fix type definition for testCases

* Drop inline struct usage for simple 2d array

* Fix logic in quorum check

* Make test public and fully qualify quorum

* Make wormhole.sol fail

* Specify where to store testCases

* Define array directly

* Fix syntax error on array definition

* Fix variable name

* Move back to memory-based variable

* Add remove qualified quorum call

* Get really direct on quorum tests

* Simplify quorum logic

* Add test for 19 guardians
2022-06-07 09:45:47 -04:00
Evan Gray 73e15db866 eth: token bridge transfer with payload 2022-05-11 21:24:36 -04:00
Jonathan Claudius 5a987a8d2b
Comment ethereum messages (#1025)
* Add comments to Ethereum Messages.sol contract

* Remove current language, as it's a bit misleading

* Change comment formatting

* Switch to NatSpec comments

* Clean up comments for expired GuardianSet checks

* Clean up comments for expired GuardianSet checks, again
2022-04-19 21:07:08 -04:00
Csongor Kiss f22dfcece3 ethereum/nft-bridge: Transfer before burn
This is consistent with the token bridge
2022-03-18 13:14:32 +00:00
Evan Gray a3272dce4a remove pyth2wormhole 2022-03-07 10:23:34 -05:00
Stanisław Drozd 2ea41b8176
[WIP] Pr/drozdziak1/p2w batching/5e704f8b (#877)
* ethereum: p2w contract -> p2w emitter, fill in essential envs

Change-Id: I6fa9364a96738d2cc02ec829a31fedba0586d8e8

commit-id:0a56f1f8

* Add p2w-relay, a p2w-sdk integration test

commit-id:6bfab639

* p2w-sdk: Expand README

Change-Id: I17cb547d6aaddc240588923561c26d11a787df2e

commit-id:6ebd6a22

* p2w-sdk: don't build ETH contracts, only the types

Change-Id: I7cbd18328227700635d7688aa24a9671e8919fcd

commit-id:adf079f7

* p2w: configurability and sane envs

commit-id:f10fd90e

* Solitaire: Implement Option<T> support in structs

commit-id:31aa12d6

* bridge/governance.rs: Stop pestering about EMITTER_ADDRESS

commit-id:d5bd7234

* p2w-attest: price batching

This commit introduces support for multiple Pyth product/price pairs
per call. The initial maximum batch size is 5 and is enforced using a
`P2W_MAX_BATCH_SIZE` constant.

solana/pyth2wormhole/program:
* On-chain batching logic
* Batch message parsing logic

solana/pyth2wormhole/client:
* Off-chain batching logic - divides any number of symbols into
largest possible batches
* Use a multi-symbol config file instead of CLI arguments

third_party/pyth/p2w-sdk:
* Expose batch parsing logic

third_party/pyth/p2w-relay:
* Comment out target chain calls until ETH contract supports batching
* Test the batch parsing function

third_party/pyth/p2w_autoattest.py:
* Generate and use the symbol config file  with pyth2wormhole-client

third_party/pyth/pyth_publisher.py:
* Add a configurable number of mock Pyth symbols
* Adjust HTTP endpoint for multiple symbols

commit-id:73787a61

* p2w-attest: mention attestation size in batch

This commit ensures that no matter the attestation format, a batch
will never contain attestations of different sizes. This guarantee
enables forward compatibility by adding new constant-size fields at
the end of a batch at all times. An older implementation will simply
not consume the remaining newer values while respecting the stated
batch member alignment.

commit-id:210da230

* pyth2wormhole-client: use fresh blockhashes, harden batch errors

This commit makes sure we don't have to deal with expired transactions
due to stale blockhashes. The problem existed with larger symbol
configs as well as on Solana mainnet. Additionally, the attestation logic
now treats transaction errors as non-critical - a failure for a batch
does not prevent attestation attempts for batches farther in the queue

commit-id:5e704f8b
2022-02-23 19:12:16 +01:00
Evan Gray 608c724a76 evm/token_bridge: reentrancy protection 2022-01-28 10:44:10 +00:00
Evan Gray 7ecce0d302 eth: nft bridge impl initialize 2022-01-07 13:28:11 -05:00
Csongor Kiss 7e212fa739
terra/nft_bridge: Implement nft-bridge for terra (#698)
commit-id:0b547fa5
2022-01-07 16:47:33 +01:00
Hendrik Hofstadt e50541912b
Fix NFT URI length and parsing (#628)
* Fix NFT bridge parsing and limit URI length

Change-Id: I71e728bbe35cfb8f10b86d53475f7e1c68b2866a

* Update NFTBridge.sol

* Update NFTBridge.sol
2021-12-21 08:36:00 -05:00
valentin 1226f85461 support tokens with transfer fees
Change-Id: Ib6ef2f1680ac845ef0f05c51047846c2633b0d4b
2021-10-29 16:55:05 +00:00
valentin ffcdc3f3f2 add token migration contract
Change-Id: I2bc3fb4d99f5a08452bc2defd3597ec7ad300523
2021-09-28 10:35:34 +00:00
valentin 46440b3bf9 nft: add special case for spl naming, update tests
Change-Id: Ifbe9eeaad5d5604d52d75fdac6b018e94afa9d75
2021-09-20 15:16:57 +00:00
valentin 7e2cf1f981 pyth data bridge target chain module for EVM
Change-Id: Ieaeed6374e72a5348e05c40bd25598b74061a9a0
2021-09-16 13:46:51 +00:00
valentin 75ac0c9153 nft nits
Change-Id: Ie6265e1fcc8d91294dc416ad6bac18327f582c1e
2021-09-13 12:10:36 +02:00
Hendrik Hofstadt 6ff21f8d01 add ethereum NFT bridge
Change-Id: I5cc8cfe431f5f9b043adc7baf662760ffe9e7a35
2021-09-10 23:43:14 +00:00
Hendrik Hofstadt e6a51d0180 don't allow the chain to be registered multiple times
Change-Id: Ic757b4ea1316718ad492ca5bc446eaf60ebdf200
2021-09-01 13:54:21 +02:00
Hendrik Hofstadt 745ff0ba9b Allow to update meta on ETH, new token naming
This allows us to update the token name and symbol once solana adds the appropriate metadata.

Change-Id: Ibcabf2a644bcc2b2962ff779fa7fb3cb1f2cc626
2021-09-01 13:15:28 +02:00
Hendrik Hofstadt 50afa0fe9e Prefix wormhole token names
Change-Id: Ieea61ea2833f66c29a2fa0f52ae1a914a3956146
2021-08-26 14:19:19 +00:00
valentin 245409852f bridge: mint directly to recipient
Change-Id: Idfa06609c5b9982c885eaa14b402965514b2e143
2021-08-19 10:19:48 +00:00
valentin 45d22ce84f bridge: move evm state setup into a separate contract
Change-Id: Ibc790ba971be5144c0af65870d424c9c62b52039
2021-08-19 10:19:40 +00:00
valentin a055af1416 move EVM state setup into a seperate contract
Change-Id: Ie000dd042c4ebbd7084511d38d87a7555c5d8048
2021-08-19 10:19:26 +00:00
valentin 51e00dc1bf tokenbridge: decimal shifting & max outstanding
Change-Id: Ia9f27f317fe08c1d8dbb9eaa60e53633acfdd381
2021-07-27 11:43:44 +00:00
valentin 14e892300c tokenbridge: implement new governance packet spec
Change-Id: Iee4b596b6a8ca9dfc9c6ee8c6188a4083a05edeb
2021-07-27 08:59:32 +00:00
valentin 2e6a93b643 ethereum token bridge on wormhole
Change-Id: Iab8d6f6aae6163d1c65f7d5a7395a943c62cdb0c
2021-07-21 14:11:58 +00:00
valentin 05d6c41722 update wormhole interface
Change-Id: I821234d1d010d9efd15cefb412a35b8717c36fa7
2021-07-20 16:25:38 +02:00