Skip to content

Commit 43bc28d

Browse files
authored
[Solana] readme update (#1217)
* Reuse accounts * Readme update * Readme udpate * revert this one
1 parent d0ceb07 commit 43bc28d

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

target_chains/solana/README.md

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,18 @@ This folder contains:
99

1010
Receiving a price update from Pythnet involves two steps:
1111

12-
- First, verifying the VAA i.e. verifying the Wormhole guardians' signatures on the accumulator root that contains all the price updates for a given Pythnet slot. This happens in the Wormhole receiver contract (Note: this contract is in the Wormhole monorepo, we're currently using this branch https://github.com/guibescos/wormhole/tree/variable-sigs).
13-
- Second, verifying the price update by providing an inclusion proof that proves the price update is part of the accumulator root that was verified in the first step. This happens in the Pyth receiver contract.
12+
- First, verifying the VAA i.e. verifying the Wormhole guardians' signatures on the accumulator root that contains all the price updates for a given Pythnet slot.
13+
- Second, verifying the price update by providing an inclusion proof that proves the price update is part of the accumulator root that was verified in the first step.
1414

15-
The Pyth receiver program:
15+
# Implementation
1616

17-
- verifies that the VAA has been verified by the Wormhole program (through the owner of the account that contains the VAA, the anchor discriminator and the field `verified_signatures`).
18-
- checks that the VAA was emitted by the right data source
19-
- checks the inclusion proof is valid
20-
- posts the price update to a `PriceUpdateV1` account
17+
This contract offers two ways to post a price update from Pythnet onto Solana:
18+
19+
- `post_updates` allows you to do it in 2 transactions and checks all the Wormhole guardian signatures (the quorum is currently 13 signatures). It relies on the Wormhole contract to verify the signatures.
20+
- `post_updates_atomic` allows you to do it in 1 transaction but only partially checks the Wormhole guardian signatures (5 signatures seems like the best it can currently do). Therefore it is less secure. It relies on a guardian set account from the Wormhole contract to check the signatures against the guardian keys.
21+
22+
`post_updates` is also a more efficient way to post updates if you're looking to post data for many different price feeds at a single point in time.
23+
This is because it persists a verified encoded VAA, so guardian signatures will only get checked once. Then that single posted VAA can be used to prove the price update for all price feeds for that given point in time.
2124

2225
# Devnet deployment
2326

@@ -41,6 +44,12 @@ curl "https://hermes.pyth.network/api/latest_vaas?ids[]=0xff61491a931112ddf1bd8
4144

4245
Post it to devnet:
4346

47+
```
48+
cargo run --package pyth-solana-receiver-cli -- --url https://api.devnet.solana.com --keypair ${PATH_TO_KEYPAIR} --wormhole HDwcJBJXjL9FpJ7UBsYBtaDjsBUhuLCUYoz3zr8SWWaQ post-price-update-atomic -p ${HERMES_UPDATE_IN_BASE_64}
49+
```
50+
51+
or
52+
4453
```
4554
cargo run --package pyth-solana-receiver-cli -- --url https://api.devnet.solana.com --keypair ${PATH_TO_KEYPAIR} --wormhole HDwcJBJXjL9FpJ7UBsYBtaDjsBUhuLCUYoz3zr8SWWaQ post-price-update -p ${HERMES_UPDATE_IN_BASE_64}
4655
```

0 commit comments

Comments
 (0)