843a30c2c7
* precommit * format |
||
---|---|---|
.. | ||
cli | ||
migrations | ||
programs/solana-receiver | ||
.gitignore | ||
.prettierignore | ||
Anchor.toml | ||
Cargo.lock | ||
Cargo.toml | ||
README.md | ||
program_address.json |
README.md
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
).
# 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.