Commit Graph

94 Commits

Author SHA1 Message Date
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
Dmitriy Fishman 0db91bf8c0 Fix a typo in operations.md 2022-02-10 14:51:02 -05:00
victorshevtsov d80da14852 docs: fixed broken
Fixed broken link to 0005_data_availability.md
2022-01-13 08:17:39 -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 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
Leo 00c046e81e Bump Go to 1.17.5
commit-id:359d3fb7
2021-12-13 15:38:17 +01:00
Leo d34e16be66 docs: point out that node keys should be persisted
Hi Joe

Change-Id: Id6434199ed3f96cd06cb4ef6d57216d79cef3dc6
2021-09-28 12:58:27 +00:00
Leo 7887c289d9 docs: undocument systemd sockets
We don't need zero-downtime restarts anymore, and the socket unit
lifecycle is annoying to deal with (the socket can't be enabled if
the unit is already started). Much easier to use the capability.

Change-Id: I9d3cb5428eb0e35554866e6e42b7759569b12efb
2021-09-28 12:58:27 +00:00
Hendrik Hofstadt 416a1e7227 Add a second test NFT on Solana
Change-Id: I7dce98cbc3df625d3ce071f179dc25cf873d2047
2021-09-21 11:21:12 +02:00
Chase Moran b39d72e32f bridge_ui: weth functionality
Change-Id: I1c6dc5f502232c32f4219a9a3be61f203c7be22a
2021-09-19 22:43:52 -04:00
Leo 8b0fbb60d2 docs: document --publicWeb
Change-Id: I84f52fac668c60750c08393a532a9bca9d10d452
2021-09-13 17:51:47 +00:00
Hendrik Hofstadt 88933d13e2 Build token migration program
Change-Id: I78b10931fb09f5bca457c1fb36095fdbcea9e65f
2021-09-13 14:01:16 +00:00
Hendrik Hofstadt 6ff21f8d01 add ethereum NFT bridge
Change-Id: I5cc8cfe431f5f9b043adc7baf662760ffe9e7a35
2021-09-10 23:43:14 +00:00
Hendrik Hofstadt a2b3d111f4 add nft bridge skeleton
Change-Id: I69449e95415cd94b7de4528fe4002b241e1e6b95
2021-09-10 17:12:42 +00:00
Leo 4f22a44969 Bump Go to 1.17
Change-Id: Ideb635db1a553c5de4a0b700a080f935249990fb
2021-08-31 08:58:17 +00:00
Leo e98463cfe3 node: rename bridge/ to node/
Calling guardiand a bridge dates back to v1 and no longer makes sense.

Change-Id: I27d24a5d7a64c3e37d6a5ce9c402c6248ad9c59e
2021-08-26 11:36:36 +02:00
valentin 5eea4cc51b update devnet addresses for new deployment
Change-Id: I51ea1fc2d15759e8c86ecdaf80e110d61cbe36ec
2021-08-19 18:21:08 +02:00
Evan Gray 5a6cfe034f win dev helpers
Change-Id: I57568cc7952ba630d9ff808f8c46d051b4367ba6
2021-08-11 12:49:30 +02:00
Stan Drozd 952a9d9db9 solana: Use a central location for well-known keypairs
Change-Id: Ibed0044bee47063ec0caa4b0c12e9e7037ed7e3b
2021-08-04 10:52:27 +00:00
Leo 053cf2e66a Add account indexing guidelines for concurrent usage with v1
Change-Id: Icfca131f55515f030e3af75364a37f91c40ef56c
2021-07-30 14:15:57 +00:00
Hendrik Hofstadt 1135fdacd1 Deploy terra FCD and test token
Change-Id: I0027b450c701031929b4aaba4941738d82c4247d
2021-07-29 14:50:04 +00:00
Leo d5e6c844e3 node/pkg/solana: add initial logic for block-by-block requests
CPI part is untested.

Commitment level is hardcoded to "finalized", but can be refactored
to use both "committed" and "finalized" later.

certusone/wormhole#248

Change-Id: I5ae7711c306b33650367e6f7a417ab9d88753612
2021-07-29 12:14:01 +00:00
Leo 89c1c92c7f docs: update operations.md
Change-Id: Ief25490d553430a679512f8135173bacc37b90be
2021-07-21 19:52:51 +00:00
Leo 5471d52613 docs: update overview diagram
https://i.imgur.com/o1z42iD.png

Change-Id: I50843041dc63813024e04afbb966eec8ec05e094
2021-07-21 19:52:51 +00:00
Leo 052d922036 Clean up docs and packages for v2
Change-Id: I1020e648f4a8bd51412cf06196e78665308efdac
2021-07-21 19:46:10 +02:00
Leo 60775101c5 docs: update to account for removed agent build
Change-Id: Iec5267ccf3b3dfbcd121800cc4f1d4bf5093a6f5
2021-07-20 23:17:47 +02:00
Leo 584bfcba2d node: remove terra fee payer
Change-Id: Iffdf5a790fd546b9b43137ee03018da3d94d3ac8
2021-07-20 23:17:47 +02:00
Leo ce6b39e3be devnet,docs: remove agent build and deployment
Change-Id: I04ab07f6db21918297e891de5475f61d22f58cc5
2021-07-20 23:17:47 +02:00
Leo 9fce2e9ded take an axe to the docs
Delete outdated documentation and generic-ify the remainder.

Change-Id: I4e11e59e6da00d49f9ea4fd5d1155769debda55e
2021-04-16 15:49:26 +02:00
Leo c51a2da83f Update operations.md 2021-02-04 20:09:33 +01:00
Leo 201581b1de Update operations.md 2021-02-01 23:56:50 +01:00
Leo 245f47f112 Document status server in operations.md 2021-01-27 15:07:27 +01:00
Leo cb7ddb5a90 docs/operations.md: fix typo
Fixes #158
2021-01-23 01:55:30 +01:00
Leo 2f9ed55b8c docs: document that PokeProposals are no longer needed 2021-01-21 12:00:16 +01:00
Leo b5d8993f44 devnet: Add new command line flags for native Solana poller 2021-01-21 11:40:58 +01:00
Leo 108f050c0e Clarify public keys vs public key's hashes in comments and docs 2021-01-21 00:59:50 +01:00
Leo f20ec49a0b Remove TODO from protocol.md 2021-01-20 23:46:43 +01:00
Leo 9f2f609bc1 Bump Go and pin all Docker images to digests 2021-01-19 16:15:54 +01:00
Hendrik Hofstadt efa03ef73c
Implement upgradeability (#151)
* Implement contract upgrade VAA action

* naming and (╯°□°)╯︵ ┻━┻

* Carefully unflip table and replace broken cutlery ┬─┬ノ( ◕◡◕ ノ)

* fix and automate upgradeability

* document contract upgrade call

* Update comments

* Exhaustiveness check in VAA payload switch

* Fix typo

Co-authored-by: Leo <leo@certus.one>
2021-01-19 13:01:45 +01:00
Leopold Schabel 2c8b411a6b
Update operations.md 2020-12-08 17:27:22 +01:00
Leo 1c4ed7839d Update operations.md 2020-12-07 21:28:55 +01:00
Leo 0f498df470 Update operations.md 2020-12-07 21:28:33 +01:00
Leo f58aa25dc8 Bump version 2020-12-07 18:05:41 +01:00
Leo 45b93f569f operations.md: os-level dependencies 2020-12-07 17:44:03 +01:00
Leo 477cde5da7 Bump version to v0.1.1 2020-12-07 11:17:53 +01:00
Leo 2a4ca51028 Clean up operations.md 2020-12-07 09:21:01 +01:00
Leo 89afda64bf Add systemd units to operations.md 2020-12-06 22:51:35 +01:00
Leo 3013f24d59 Update operations.md 2020-12-06 19:25:42 +01:00
Leo d015422be7 Add Makefile for production builds 2020-12-06 19:21:43 +01:00
Leo d1f572c70f operations.md: set capabilities 2020-12-01 11:58:41 +01:00