* p2w-client: Add attestation config merging logic
This change adds code to append new symbols to an existing attestation
config. In conjunction with the mapping crawling logic, this will aid
in hot reloading attestation configs in runtime
* pyth2wormhole-client: Use the crawled mapping symbols
* move staleness to new endpoint
* actually send the response
* Add schema
* Fix freshness metric to use publish time instead of attestation Time
* Rename endpoint to /api/ + small fix
* Bump version
Co-authored-by: Jayant Krishnamurthy <jkrishnamurthy@jumptrading.com>
Co-authored-by: Ali Behjati <bahjatia@gmail.com>
* enable verbose property to return metadata for ws endpoint
* remove console log
* fix test cases failing
* fix spelling errors
* update callback and listener to use PriceInfo
* isolate verbose flag to each client and add tests
* isolate verbose flag from clients
This changeset adjusts p2w_autoattest.py commitment to confirmed and
fixes a get_transaction() failure that happened due to the upstream
default finalized commitment setting (RpcClient's set value is not
used). This is fixed by using the chosen commitment explicitly via
get_transaction_with_config()
* p2w-client: Fix silent logs, restore program log printing
For some time now, p2w-client error reporting would fail to show
daemon mode errors. The logs would only mention resends without ever
showing failed attempts.
with solana-program 1.10.31 came a newer, inferior program log
reporting which only says "N program logs" instead of saying what they
are. This changeset prints errors verbatim using formatted debug
"{:#?}" syntax.
* Docker: Improve p2w-attest/solana-devnet caching
This commit speeds up caching in two ways:
1. By severing the dependency on bridge-client in
Dockerfile.p2w-attest - mainly because of unnecessary `cargo install`
builds which even with target dir caching can take ~1 minute. The
bridge/token-bridge client binaries are not useful to p2w-client anyway.
2. By attaching cargo-install commands to a target dir cache via the
--target-dir option in cargo
* Use the cw sdk
* Fix clippy warnings
* Use Addr instead of String
* Format the code (cargo +nightly fmt)
* Depend on wormhole git instead of local dependency
* Add error enum
* refactor
* Refactor errors
* certusone->wormhole-foundation rename
It will fix some compile problems
* Build wormhole contract from their repo
* remove wormhole package
* Remove memmap2 patch
It was not needed anymore with the newer
verison of solana (wormhole removed it too)
* Rename pyth-bridge to pyth-cosmwasm
* pyth2wormhole: Implement reusable message PDAs
This changeset converts attest() to use a new PDA for
reusable/unreliable wormhole message account. Each PDA is tied to a
given attest() payer with an index that lets them rotate a number of
message accounts. Keeping the appropriate timing of the reuses is up
to the message owner, who should rotate a number of PDAs.
* pyth2wormhole-client: Add a message acc rotation impl
* p2w attest(): Integrate with bumped wormhole and fix call issues
* p2w-client: Format code, fix test_attest, refactor message index
* Dockerfile.client, Dockerfile.p2w-attest: Improve caching
The main improvement comes from running cargo-install from within a
workspace which lets us cache target/
* p2w-client: Make reusable messages configurable in yaml
* p2w on-chain: refactor to unreliable-only, adjust msg balance, nits
* p2w-client: P2WMessageIndex -> P2WMessageQueue, queue tests
* p2w-client: Add a hard limit to the message account queue
* Add out-of-tree dependency on wormhole v2.8.9
This lets us outsource all wormhole/solitaire code to the upstream
certusone repo
* Docker.client: Use cargo-install to install binaries from github
* p2w: fix solana-program wasm-bindgen
* pyth2wormhole: Fix code-level errors against newer solitaire
* p2w: Use upstream wormhole rust code, bump guardian to 2.8.9
* guardian: ensure solana is on, spy: bump image to 2.8.9
Co-authored-by: Reisen <reisen@morphism.org>
* Bump version of cw packages from 0.16.0 to 1.0.0
* Fix build
* Update wormhole details
* Update js packages
* Update dockers, configs, to use cosmwasm 2 in tilt
* Update wormhole and pyth addresses everywhere
The migration file is probably not necessary for us.
To be deleted later.
* Update gh action name
* pyth2wormhole-client: refactor into fully-async futures-based approach
commit-id:2ed35045
* p2w-client: Change inconsistent rpc constructor
commit-id:cb3b2ff2
* p2w-client: Move job creation to a function, simplify comment
commit-id:35328b38
* pyth2wormhole-client: Use get_multiple_accounts
commit-id:7fc85157
* Implement a rate-limited mutex for RPC client
commit-id:1a243063
* pyth2wormhole-client: only guard beginning new requests in RLMutex
commit-id:d8251474
* pyth2wormhole-client: RLMutex: ensure the inner guard is not dropped
commit-id:c3513f5e
* pyth2wormhole-client: Clarify attestation_sched_futs comment
commit-id:97033670
* pyth2wormhole-client: Use CommitmentConfig's native FromStr parsing
commit-id:835d7125
* pyth2wormhole-client: doc comment typo
commit-id:5ee388de
* pyth2wormhole-client: move closures to their own async functions
This makes the main.rs async attestation routines easier to read.
commit-id:3565a744
* pyth2wormhole-client: fix merge typo
* pyth2wormhole-client: Apply Tom's readability advice
* pyth2wormhole-client reword attestation_sched_job() comment
* pyth2wormhole-client: expand attestation_sched_job() comment
* pyth2wormhole-client: e x p a n d the comment
* Trigger CI
* p2w-client/main.rs: correct missing awaits after merge
SeqNum is not suitable for multiple sources, attestationTime is good
but we should be careful of solana clock falling behind
Also use this time for freshness metric because it's more useful.
* Add initial working ws
* Add tests
* Add prom metrics + improve logging
* Handle ids with leading 0x
* Add a multi client test
* Minor code format
* Fix Typo
* rename PriceFeedPriceInfo to PriceStore
It is because in the future we might have multiple spies and this
will be a middleware store
* format the code
* p2w-client: Implement additional trigger conditions
From now on, we support price change by a given percentage as well as
publish time changes for triggering attestations.
commit-id:9bd145e1
* p2w-client: Harden price_pct_change for negative values
commit-id:cb679208
* p2w-client: Make sure we always update each symbol's state
commit-id:27f276dc
* p2w-client: include resend state lookups in the RPC interval setting
commit-id:68de125f
* p2w-client: Improve local symbol state handling, min interval=60s
With this change, we update local state only if we meet a
condition. Additionally, the publish_time change becomes a
configurable minimal delta.
commit-id:f8139cd6
* p2w-client: Fix a state update bug for state updates
commit-id:29f44a39
* pyth2wormhole-client: Implement and use daemon mode
commit-id:7001bdf7
* pyth2wormhole-client: harden CLI, simplify attestation loop
commit-id:ad5e4857
* pyth2wormhole-client: Refactor symbol config into groups
This commit implements the notion of a symbol group - a collection of
symbols that are attested according to the specified set of
condition. Currently, only an attestation frequency is supported. In
the future, this value will serve as a fallback for symbols that
rarely trip other conditions.
commit-id:cf19cc41
* p2w_autoattest.py: Use symbol groups in config
commit-id:1153c5f7
* Dockerfile.client: bump toolchain version to mitigate compiler error
The previous compiler version encountered a bug when building
pyth2wormhole-client for testing. The error message mentioned serde,
which is tested inside the `attestation_cfg.rs` module.
commit-id:61c12427
* p2w_autoattest.py: Add another test group
commit-id:2e29583c
* p2w-client: Get rid of sent_at, clarify messages, add status setter
commit-id:87653ab1
* 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
* pyth2wormhole: Add compatible metadata, handle EVM fwd-compat
commit-id:d92b42b5
* EVM unit tests: test the non-breaking format change fields
commit-id:3a26e554
* Enable and fix Rust unit tests in Tilt for p2w-sdk and p2w-attest
commit-id:cae6ee05
* p2w-sdk/rust/src/lib.rs: comment about hex payload generation
commit-id:f9f3a249
* p2w-sdk/rust/src/lib.rs: Comment about hex payload generation
commit-id:352e74f9