Commit Graph

109 Commits

Author SHA1 Message Date
Ali Behjati 60a69d3e83
Update terra contract to use new pyth sdk + new wiring format (#193)
* Update terra contract and terra relayer
2022-04-28 16:33:52 +02:00
Stanisław Drozd a4c749b99c
pyth2wormhole: implement wire format v3rev0 (#189)
* pyth2wormhole: implement wire format v3rev0

commit-id:c106d3b3

* pyth.js: Run prettier formatting

commit-id:fc9fb160

* ethereum: Fix tab indentation in Pyth contracts

commit-id:3d2ab7d8

* p2w-terra contract: fix formatting

commit-id:685dd14f

* p2w-sdk: Use wasm in the JS package, detect bundler/node via `window`

This commit makes sure that our wasm usage is more robust. We ensure
that the JSON representation renders all important numbers in their
string decimal form. b

commit-id:75f9c224

* p2w-sdk: review suggestions: field ranems, limit serde attributes

commit-id:9f596b80

* p2w-sdk/rust: Remove utils.rs and the helper type

commit-id:e72c6345
2022-04-25 18:32:25 +02:00
Stanisław Drozd b41708e863
pyth2wormhole: Add compatible metadata, handle EVM fwd-compat (#165)
* pyth2wormhole: Add compatible metadata, handle EVM fwd-compat

commit-id:d92b42b5

* EVM unit tests: test the non-breaking format change fields

commit-id:3a26e554
2022-04-15 21:09:20 +02:00
Ali Behjati 352fa64653
Merge Dev.v2 into main (#181)
* Move js sdk on p2w-sdk to js folder

Also modifies other dependencies to correct path

* Reversed removal of wasm build for nodejs

* Add newline to a file

* pyth2wormhole: Fix attestation validation bug

commit-id:567942d7

* Add p2w sdk

It uses Pyth clients structs and cleans some of definitions for Pyth2Wormhole structures.

* Add emitter type and add wasm function for it

- It requires solitaire and it requires nightly rust
- No logic is applied, code is from p2w solana contract. (Eventually will be removed from there)

* Add new line

* Move WASM gen docker to root

It is because wasm is going to be used for p2w-sdk too.

* Fix unchanged cache mount paths

* Move terra relayer into the repo

* Update readme

* p2w-client: Add lib target, make helpers into lib functions there

commit-id:3aeb9ee6

* pyth2wormhole-client: Implement retries

commit-id:462677a2

* Make p2w-sdk js use p2w-sdk rust wasm bindings (#65)

* Make p2w-sdk js use p2w-sdk rust wasm bindings (instead of solana contract bindings)
- Removes `wasm.rs` in solana contract too.

* p2w attester contract use p2w-sdk (#68)

* Make solana pyth2wormhole contract to use the sdk

* Use threadpool to set up price symbols (#69)

* Add solana feature flag for p2w sdk (#71)

* Pyth bridge terra contract support batch attestation + use p2w sdk (#72)

* Make terra contract to use pyth2wormhole-sdk and support batch attestation

* Update packages + code format

* Move terra dockerfile out to support third-party dependency

* pyth2wormhole-client: Add polling-based concurrent tx confirmation

commit-id:5d16d035

* chore: p2w spy guarding improve Dockerfile

* fix: p2w_autoattest don't die after initialization

also minimal formatting

* add P2W_EXIT_ON_ERROR

* set P2W_EXIT_ON_ERROR default to True

* Remove bool test

* hopefully this time.

* add tilt p2w-attest P2W_EXIT_ON_ERROR

* convert P2W_EXIT_ON_ERROR to "true"

* Fix pyth test publisher (#76)

* Fix test pyth publisher to actually publish price

- Uses newer pyth images and removes existing hacks for old versions. It essentially makes dockers cleaner.
- Also improve some adds in dockers to cache more efficiently

* Support Batch Price attestation for terra relay (#75)

* Support Batch Price attestation for terra relay

* Abehjati/update p2w sdk to pyth sdk (#83)

* Make p2w-sdk use pyth-sdk

* Correct test values to reflect .env.test

* update p2w sdk to use ema instead of twa (#84)

* Rename twa to ema in terra relay (#85)

* Bring PythStructs.PriceAttestation struct in line with new API

* Add ability to parse batch price attestations

* Pyth terra remove wormhole governance (#87)

* Pyth in terra: remove wormhole governance

* [WIP] p2w-relay-iface: Add NPM package with relayer interface PoC

commit-id:efcb9b34

* Define Pyth SDK Price struct

* Define internal PythStructs.PriceInfo struct

* Cache price updates in standardised PriceInfo format

* Cache price updates from batch attestations

* p2w-relay-iface -> p2w-relay-terra/src/relay/iface.ts

commit-id:ed9846e3

* p2w relay interface: remove config from Relay iface

commit-id:0359d886

* Remove now unnused parsePriceAttestation function

* Pyth terra bridge: add contract deployment script (#88)

* Add pyth deployment script

- Also updates build.sh to build pyth completely
- Add a readme for deployment guide

* Add test for partial update behaviour

* update p2w sdk to new pyth (#91)

* p2w-sdk/rust use pyth sdk solana v2

* Dockerfile.client: solana 1.8.1 -> 1.9.4

commit-id:643299d3

* p2w-terra-relay: ignore lib and node, own project dir in docker

commit-id:b084bc40

* p2w-terra-relay: iface.ts review nits, naive impl for Terra

commit-id:0ecbfdd6

* Terra contract public api (#79)

* Use pyth-sdk in terra contract
* Update terra contract according to agreed API
- Also adds v2 suffix to price_info key because this migration is breaking.

* p2w-terra-relay: apply review nits

commit-id:aec39c85

* p2w-terra-relay: make worker.ts generic w.r.t. Relay interface

commit-id:5937a08c

* terra.ts: add missing return statement

commit-id:ba0365e6

* Update worket to handle timeout in callback correctly (#97)

* Remove wormhole-based governance

* Remove now unused legacy governance state and variables

* Remove Pyth Implementation implementation

* p2w-terra-relay: run formatter

commit-id:df311e23

* p2w-terra-relay: apply review nits

commit-id:5034b061

* Run formatter to trigger CI

commit-id:7c643d79

* p2w-terra-relay: EVM boilerplate

commit-id:8ad73ded

* Remove old PythProxy inheritance hierarchy

* Remove now unnused initialized implementations map

* Remove old mock bridge implementation

* Remove dependency to wormhole sdk as path and cleanup wrong eth copies (#104)

* Dockerfile.pyth_relay: Fix lockfile issue in ethereum

This commit fixes a lockfile issue resulting from newer NPM in our
container.

Specifically, our Dockerfile is pinned, relaxes Ethereum's
lockfile (npm ci -> npm install) and hardens our lockfile (npm install
-> npm ci)

commit-id:3381c8ec

* p2w-terra-relay: Admit loss against mkdir -p

commit-id:3abdb58d

* Remove unused components from wormhole (#108)

* Remove unused components from wormhole

Removes the following:
- explorer
- e2e
- bridge_ui
- algorand stuff (teal dockerfile and third_party/algorand)
- ci_tests (testing directory)  which are for JS/Bridge UI

* Remove unused terra contracts (#109)

- Note: Terra contract addresses are changed by this PR due to deterministic ordering.
- Removed unused nft and token bridge, and migration contracts in Terra
- Modified documentation to remove info regarding removed contracts.(docs/devnet.md)

* Remove unused solana contracts and their wasm creations (#110)

Removes token bridge, nft bridge, migration. Also removes them from deployments and docs.

* Add fee estimate for terra relay (#112)

* Removes directores which are not related to p2w (#111)

Removes
- audits
- dashboards (dashboard is removed from Tilt)
- event_database (all of it's dependencies are removed from Tilt and it's not for p2w)
- lp_ui: a project (pressumably liquidity pool) not related to p2w
- sdk: wormhole sdk, p2w depends on it's npm package and there is no dependency to rust one
- spydk: it's not anywhere in p2w
- staging/algorand: these are for alrogrand which is not used in p2w
- whitepapers: these are for wormhole

* Add and update openzeppelin packages

* Add initializer to Pyth contract

* Add upgradable PythProxy contract

* Update tests to work with new proxy setup

* Update migrate script to work with new proxy setup

* Add tests for new proxy setup

* Inline PythStorage.Provider struct

* Make Pyth.verifyPythVM function internal

* Fix struct field names

* Rename Price to PriceFeed to be consistent with SDK

* Replace PythGetters.latestPriceInfo with Pyth.queryPriceFeed in public API

* p2w-terra-relay: Add a query() EVM call and Tilt boilerplate

commit-id:f97d0c16

* Clarify test comments

* Add health probe (#107)

* Rename PythProxy to PythUpgradable

* p2w-evm-relay: Backport the proxy address change from debug session

commit-id:55b63ed5

* p2w-terra-relay -> p2w-relay, split EVM relay into new service

commit-id:36d0db6e

* Tiltfile: typo

commit-id:3bbba986

* p2w-evm-relay.yaml: typo

commit-id:35c87c79

* p2w-evm-relay.yaml: typo 2: electric boogaloo

commit-id:40892265

* Add build folder to dockerignore

* Rename attestPriceBatch to updatePriceBatchFromVm

* Update comment on time check

* Trigger Build

* Tiltfile: Fix port forwards for p2w-evm-relay

commit-id:6e5e9c14

* p2w-relay: PythImplementation -> PythUpgradable

commit-id:bfea7eb5

* Remove unused Pyth Chain ID metadata

* Add the query() call

commit-id:02966ce5

* p2w-terra-relay: Fix evm.ts after contract rename

commit-id:87381bec

* Make truffle migrations directory configurable

* p2w-evm-relay: Fix wrong EVM contract ID, add a check for it

This commit takes care of an outdated pyth2wormhole EVM contract
address and implements a contract/non-contract check using
web3.eth.getCode() (empty for non-contracts).

This problem cost us several hours of debugging and resulted from an
EVM gotcha - a contract call to a non-contract address will simply
ignore the call payload and make a plain transfer. Additionally, ETH
accounts don't have a notion of initialization - used and unused
addresses are equally valid tx recipients. Resulting from both
properties, any unused address could potentially yield wrongly
successful calls, wasting funds and debug time over p2w-relay. Thus
the heuristic to protect us from this is to see if the address' code
storage is populated.

commit-id:b655a720

* p2w-relay: Also implement the contract check in EVM relay()

commit-id:e28709e5

* evm.ts: Fix wording in changed/unchanged logs

commit-id:13c81625

* Make terra relayer more resillient (#120)

- Increase retry attempts (4 to 6) and retry_delay (250ms to 1s) to be more resillient
  - This is because when account sequence mismatch happens it might take some time be fixed
- Removed estimate fee because it's being done in wallet.createAndSignTx (less requests)
- Improved logging on when error happens

* Update dockerfile to chown less files (#121)

* Update dockerfile to chown sooner

* p2w-relay: review nits

* p2w-evm-relay: make feed verification queries configurable

* p2w-relay: cache wormhole import

* p2w-relay: formatter, remove getcode() from relay(), add comments

commit-id:1a65c52c

* p2w-relay: typos and leftovers

commit-id:9b523b25

* Change websocket to json socket to support bsc testnet + improves env vars (#139)

* Change websocket to json socket to support bsc testnet + imporving env vars

* Add unit test to Pyth Terra Contract (#123)

* Add unit test to the terra contract

- Refactors the code into multiple functions to make unit testing easier
- Adds build and test of terra contract to CI according to #73

* p2w-relay: harden exception handling, yell about uncaught stuff

commit-id:24e14835

* p2w-relay: Correct outdated comment

commit-id:d0b57d33

* p2w-evm-relay: s/async (e)/(e)/

commit-id:11b3a474

* Modify proto docker and tiltfile to stop creating unnecessary files (#144)

* Remove sdk/spydk from wasm and remove buf gen web yaml (#145)

* Remove wormhole contract from wasm generation (#160)

* pyth2wormhole: Add num_publishers to libraries and contracts

commit-id:f7263eed

* pyth2wormhole: add max_num_publishers to cross-chain metadata

commit-id:7550fa50

* Move p2w relayer parsing to p2w sdk js (#162)

* Move Price Attestation parsing logic to the sdk

* pyth2wormhole: Add contract testing boilerplate for attest()

commit-id:51949fbe

* Create p2w-api base (from p2w-relay) (#142)

* Create p2w-api base (from p2w-relay)

* Refactor project structure

* Rename p2w to pyth price service (#166)

* Abehjati/price-service-add-rest-layer (#167)

* Add rest api for latest vaa

Co-authored-by: Stan Drozd <stan@nexantic.com>
Co-authored-by: Eran Davidovich <edavidovich@jumptrading.com>
Co-authored-by: Eran Davidovich <erancx@users.noreply.github.com>
Co-authored-by: Tom Pointon <tom@teepeestudios.net>
Co-authored-by: Stan Drozd <drozdziak1@gmail.com>
2022-04-11 18:15:20 +02:00
Leopold Schabel 870d15d483
*: bump pyth-client to 0.2.2 (#873)
The v2 branch on the Git origin disappeared. Use the crate instead.
Updated lockfiles using `cargo update -w`.

commit-id:d2655ef8
2022-02-18 00:01:13 -06:00
Evan Gray 075defa634 feat: improve bridge_ui tilt
properly cache npm ci in Docker container image
support hotloading outside ci
2022-02-14 07:56:38 -05:00
Evan Gray bb1402367c fix: terra-contracts readiness 2022-02-14 07:56:38 -05:00
Kevin Peters 27e8952c8b sdk/js: Updated terra dependencies
Changed devnet terra tax rate to zero to reflect mainnet and testnet
2022-02-10 16:15:06 -05:00
Csongor Kiss 3fc065846e Add terra migrate instructions 2022-02-10 15:37:19 -05:00
Csongor Kiss 99e2d4ac09 Add terra build & deploy instructions 2022-02-10 15:37:19 -05:00
Csongor Kiss 0044bb5e44 terra/token_bridge: remove migration code
This migration handler has successfuly completed (txn:
67E8FCFF48EEFE11BF6A975E621B6866BA930F9D2A85BC9AC5A70F009EE354C7) so
we can remove it.
2022-01-28 10:44:10 +00:00
Csongor Kiss 52562cacb0 terra/token_bridge: reentrancy protection
commit-id:2c0bdfaf
2022-01-28 10:44:10 +00:00
Csongor Kiss 5d90af5195
terra/token_bridge: fix cw20 migrations (#745)
commit-id:c8aac03a
2022-01-20 19:06:34 +00:00
Reisen e561d6de02 sdk: fixes to types and builds
Change-Id: I10b753450445cc021dbeb9f28ddb0384070e9635
2022-01-14 13:09:12 +00:00
Reisen d21f08d2cb rust: rename wormhole libraries
Change-Id: I9bf5255c13b13d3724d7f8809489b04612b90747
2022-01-14 13:09:12 +00:00
Csongor Kiss 7e212fa739
terra/nft_bridge: Implement nft-bridge for terra (#698)
commit-id:0b547fa5
2022-01-07 16:47:33 +01:00
Csongor Kiss 089d7cde97
terra/nft_bridge: Implement cw721-wrapped (#697)
Wrapped NFT contract

commit-id:42e63984
2022-01-07 16:46:06 +01:00
Csongor Kiss 40837778a7
terra/nft_bridge: vendor cw721 and cw721-base (#696)
The most recent released versions of these libraries use a different
version of the cosmwasm than the rest of the wormhole projects, which
leads to a linker error. So we vendor these libraries and downgrade
their cosmwasm-std dependency to match the rest.

commit-id:a1a5c20b
2022-01-07 16:43:53 +01:00
Hendrik Hofstadt 91b58d7b64 fix: Use price id instead of product id in pyth on terra
Change-Id: Ic567803fd2bf798e0e4150c2a123bbc4788535f0
2021-12-29 20:57:54 -05:00
Evan Gray 98cb787512 terra: fix tax calculation on withdraw_tokens 2021-12-23 15:03:04 -05:00
Hendrik Hofstadt a91fe7797d
Pyth to Wormhole on Terra (#629)
* More checks in P2W on Terra

Change-Id: Icbe5d75504f947b741cee1c797740b71456964fe

* Auto-deploy P2W on Terra

Change-Id: I202536fd278aca938e3b8b3cb0a4ceeca314158f

* Don't do replay protection on price updates

We already use the sequence number for replay and rollback protection and can save storage this way

Change-Id: I9e655956aab1ed8dd86b9d821ece2f57900f6c78
2021-12-22 12:22:08 +01:00
Hendrik Hofstadt 0c747199ab Implement pyth2wormhole for Terra
Change-Id: I3c206cf9850818c1fc012a593ad057e07b5dfa3e
2021-12-02 14:56:02 +00:00
Evan Gray 92aa657630 terra: remove tiltfile
Change-Id: I320a6f4501492acde39c193b8623bc083537f3b6
2021-11-23 01:11:02 +00:00
Reisen 7415fda312 terra/token_bridge: migration prep
Change-Id: I3bc054265e6296ce2fa4191c0395ca8531b0f4a8
2021-10-29 16:51:34 +00:00
Reisen c832b123fc terra: cw20 migrations
Change-Id: I3c75291a0d3016a197a15d9ee0717b16b3b479d3
2021-10-27 19:55:42 +00:00
Reisen 17ba6b12d0 terra: post migration fee change
Change-Id: I9e1517cf3038f80836b58810e11bddc1b58e6fbf
2021-10-19 15:25:01 +00:00
Reisen fc1c91a4b4 terra/token_bridge: set code_id to deployed cw20_wrapped
Change-Id: I275cb38a049290e8399f3fdc5f304c3fc12551f6
2021-10-11 16:53:07 +00:00
Reisen 2a63d08b88 terra: test token_bridge migrate
Change-Id: I4baa721d4aa506a84c8b3ad80e1e9aa35633f975
2021-10-11 16:38:19 +00:00
Reisen ddf43b85d7 terra: migrations for lower bridge fee
Change-Id: Ic83b321d42c9148f3915a365d195298ff052eda2
2021-10-11 16:32:56 +00:00
Reisen 91087bdb66 terra/token_bridge: allow newer sequenced vaa metadata
Change-Id: Ie81584abe6671595118082796df57bcea75a8fd3
2021-10-11 16:24:36 +00:00
Reisen e2a16b6756 terra: migrations for cw20
Change-Id: I201021ed763e8b94a2d029d79ba5ce7e3d3868e3
2021-10-11 16:21:33 +00:00
Reisen b9a61a152e terra/token_bridge: remove tax from native transfers
Change-Id: Ia40808508c08b13a2f1bd1b43c0102eabb2c54f6
2021-10-05 14:57:16 +00:00
Reisen 3607884556 terra/token_bridge: upgradability
Change-Id: Ib41583c0d99aad0e77fb970bc9ee0f7be56f6b4e
2021-10-05 10:41:09 +00:00
Reisen b662de4efb terra: columbus-5 contracts by default
Change-Id: I007689b032c6182e35421b47b56787a657a6919c
2021-10-04 16:41:31 +00:00
Reisen 4933f35213 terra: add columbus-5 deploy script
Change-Id: I33eead9ed1fd818dc8d6ff6e71230bda4b3d3c64
2021-10-04 16:41:31 +00:00
Reisen 2163f420c9 terra/devnet: update to bombay network
Change-Id: I2169adc1b0df9103b10dc50ba6e7470e38ad8fe9
2021-10-04 16:41:31 +00:00
Reisen d2c976b04c terra/token_bridge: subtract tax from deposited tokens
Change-Id: Ib1647a4b3757054fc91fe4dd51317a5095a526a2
2021-10-04 16:41:31 +00:00
Reisen 56c1b43280 bridge_ui: deposit tokens in terra flow
Change-Id: If64963644e638dbb24c1334eebbc207b415e5a3a
2021-10-04 16:41:31 +00:00
Reisen a9e98247bc terra/token_bridge: transfer native
Change-Id: I53fb27b467c96474f2980d495232ac955187775a
2021-10-04 16:41:31 +00:00
Hendrik Hofstadt 18f3262b89 Add second eth devnet to emulate bsc
Change-Id: Ia28078cdd843540bc6d5d2a3db4787637c752245
2021-09-30 15:00:27 +00:00
chase-45 a79ef81721 fixed non-deterministic terra dev environment items
Change-Id: Ie97c43a4f6fb562e9b546793d216a1be2ba302eb
2021-09-07 16:17:30 -04:00
Reisen c04fe95859 terra/contracts: columbus-5 migration for wormhole
Change-Id: I6772a49d3d667633b27d74eb7f349e01c849f505
2021-09-07 03:02:49 +00:00
Reisen c92442e3ce terra/contracts: columbus-5 migration for token-bridge
Change-Id: I5b2466d72c8dd98a14729125ddc3495589871d9f
2021-09-07 02:55:57 +00:00
Reisen 3cbbc6f2b8 terra/contracts: columbus-5 migration for cw20-wrapped
Change-Id: I32a703cdeb60dcf288907df6318ae504171fc5f0
2021-09-06 14:58:48 +00:00
Reisen ce6d92bb2b terra/contracts: add columbus-5 clone
Change-Id: I83c2387bd85f524962229e7b0ec72976f25d3396
2021-09-06 14:58:48 +00:00
Reisen 50bd0355fd terra/contracts: rustfmt in line with solana
Change-Id: I566dc2c4504bf7014d11a6d18775c4eec896b42f
2021-09-06 14:58:48 +00:00
Evan Gray ba9112ff14 devnet: enable contract logging
Change-Id: I3953921cb55923c87ef610488d587bf5d85e44e1
2021-08-31 16:06:07 +00:00
Leo 9a85dbafe5 Add Go linting stage to CI
rustfmt appears to be a little more complicated since it wants to
download dependencies and needs nightly Rust.

Change-Id: Ia348def30a6459ae2ab6c29a8c3a413216f5eb4b
2021-08-31 08:58:17 +00:00
Reisen a69d76494c devnet: add terra chain registrations
Change-Id: Icc45674147b42d462e6e4b89c8cd43f9d1ddb49e
2021-08-30 11:11:38 +00:00
Reisen 37baca1e32 terra/token_bridge: correct transfer payload
Change-Id: I724e4182e29a89a966896f89df4387d7aa8caac3
2021-08-30 11:11:17 +00:00