37 lines
1.6 KiB
Markdown
37 lines
1.6 KiB
Markdown
# Solana program for receiving price VAA from Pythnet
|
|
|
|
The program under `cli` receives a VAA string from the shell, verifies the VAA with wormhole, posts the VAA on solana and then invokes the receiver program under `programs`.
|
|
The receiver program verifies that the VAA comes from wormhole (through the `owner` function in `state.rs`) and deserializes the price information (in `decode_posted_vaa` function of `lib.rs`).
|
|
|
|
```shell
|
|
# Generate the program key
|
|
# and use the key to replace the following two places
|
|
# "pyth_solana_receiver" in Anchor.toml
|
|
# "declare_id!()" in programs/solana-receiver/src/lib.rs
|
|
> solana-keygen new -o program_address.json
|
|
|
|
# Build and deploy the receiver program
|
|
> anchor build
|
|
> anchor run deploy
|
|
|
|
# Build and test the cli program
|
|
> anchor run cli_build
|
|
> anchor run cli_test
|
|
# Example output
|
|
...
|
|
[1/5] Decode the VAA
|
|
[2/5] Get wormhole guardian set configuration
|
|
[3/5] Invoke wormhole on solana to verify the VAA
|
|
Transaction successful : 3VbrqQBCf1RsNLxrcvxN3aTb5fZRht4n8XDUVPM8NKniRmo84NZQUu5iFw5groAQgQYox3YCqaMjKc2WTpPU1yqV
|
|
[4/5] Post the VAA data onto a solana account
|
|
Transaction successful : 3L1vxzSHQv6B6TwtoMv2Y6m7vFGz3hzqApGHEhHSLA9Jn5dNKeWRWKv29UDPDc3vsgt1mYueamUPPt6bHGGEkbxh
|
|
[5/5] Receive and deserialize the VAA on solana
|
|
Receiver program ID is 5dXnHcDXdXaiEp9QgknCDPsEhJStSqZqJ4ATirWfEqeY
|
|
Transaction successful : u5y9Hqc18so3BnjSUvZkLZR4mvA8zkiBgzGKHSEYyWkHQhH3uQatM7xWf4kdrhjZFVGbfBLdR8RJJUmuf28ePtG
|
|
```
|
|
|
|
## Unit tests
|
|
|
|
Run `anchor run test` to run the unit tests in the `src/tests/` directory.
|
|
**Warning**: do not confuse this command with `anchor test`, which doesn't do anything useful.
|