Skip to content

Commit 8202181

Browse files
authored
Solana receiver decode vaa accumulator (#1145)
* feat: impl postAccumulatorUpdateVaa and postUpdates and CLI test changes * feat: clean up * refactor: reorganize and fix tests * refactor: clean up * chore: add rust-toolchain for solana target contract dir * refactor: clean up and address feedback * refactor: make emitter chain & post vaa program configurable * feat: remove postAccUpdateVaa and use wh post_vaa in cli * fix: add check for emitter address, hardcode expected emitter chain/addr for now * chore: cleanup * chore: clean up * feat: address feedback, move checks from context into account, use signatureset for postupdates * feat: use pubkey and require_keys_eq! for emitter addr check * refactor: address feedback add documentation and todos, revert programsimulator to use upgradable bpf loader * feat: remove signature_set account from post_updates, update docs & readme * test: add lazy static for setting up pyth binary but still has same invalidaccountdata issue * chore: clean up * refactor: remove unused errors * feat: use UncheckedAccount for posted_vaa so owner can be checked dynamically against config
1 parent 99be611 commit 8202181

File tree

24 files changed

+1945
-1146
lines changed

24 files changed

+1945
-1146
lines changed

.pre-commit-config.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,15 +99,15 @@ repos:
9999
pass_filenames: false
100100
files: pythnet/pythnet_sdk
101101
# Hooks for solana receiver contract
102-
- id: cargo-fmt-solana-receiver
102+
- id: cargo-fmt-pyth-solana-receiver
103103
name: Cargo format for solana target chain contract
104104
language: "rust"
105105
entry: cargo +nightly-2023-03-01 fmt --manifest-path ./target_chains/solana/Cargo.toml --all -- --config-path rustfmt.toml
106106
pass_filenames: false
107107
files: target_chains/solana
108-
- id: cargo-clippy-solana-receiver
108+
- id: cargo-clippy-pyth-solana-receiver
109109
name: Cargo clippy for solana target chain contract
110110
language: "rust"
111-
entry: cargo +nightly-2023-03-01 clippy --manifest-path ./target_chains/solana/Cargo.toml --tests --fix --allow-dirty --allow-staged -- -D warnings
111+
entry: cargo +nightly-2023-03-01 clippy --manifest-path ./target_chains/solana/Cargo.toml --tests --fix --allow-dirty --allow-staged --features devnet -- -D warnings
112112
pass_filenames: false
113113
files: target_chains/solana

target_chains/solana/Anchor.toml

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ seeds = false
33
skip-lint = false
44

55
[programs.devnet]
6-
pyth_solana_receiver = "pythKkWXoywbvTQVcWrNDz5ENvWteF7tem7xzW52NBK"
6+
pyth_solana_receiver = "DvPfMBZJJwKgJsv2WJA8bFwUMn8nFd5Xpioc6foC3rse"
77

88
[registry]
99
url = "https://api.apr.dev"
@@ -13,7 +13,12 @@ cluster = "https://api.devnet.solana.com"
1313
wallet = "~/.config/solana/id.json"
1414

1515
[scripts]
16-
deploy = "anchor deploy --program-keypair program_address.json --program-name solana-receiver"
17-
cli_build = "cargo build --package pyth-solana-receiver-cli"
18-
cli_test = "cargo run --package pyth-solana-receiver-cli post-and-receive-vaa -v AQAAAAABABPz9W9ARa/V06ZBp68lkoGJ3tlnJRZ2/jYU4Wi1jdQAdQj3ZkPLKIMtzN3EqaCAjKrLG/sKqADTbPoaBtn9zKUBZAYEhwAAAAAAAfNGGVrALzfWDU24/6bvdMsb41UAR1Q6Sp7prPTXhpewAAAAAApC0/gBUDJXSAADAAEAAQIAAwCdfVoraihHxJUfK+NKfkJ4r4DsPSm8uMcxEWv1D/av5l7/DsJkQsV9dFZpW4Q2lOc3mxXPGyULJ+DkfmV/GVWq/wAAAAAAG8iMAAAAAAAAARb////7AAAAAAAbz04AAAAAAAABfQEAAAACAAAACwAAAABkBgSHAAAAAGQGBIcAAAAAZAYEhwAAAAAAG8hzAAAAAAAAAS8AAAAAZAYEhD3tPwvP5dgslVQroHu37+dlyxeoTqcDWIDDMUz5Y0KBMhuk1gj6dbp21tc9qnFavL3rnboCJX8FobWReLSfWZsAAAAAACBQdgAAAAAAAANS////+wAAAAAAID+JAAAAAAAAA00BAAAAAgAAAAsAAAAAZAYEhwAAAABkBgSHAAAAAGQGBIYAAAAAACBQKwAAAAAAAAOdAAAAAGQGBIRPu3srgFy1FVEoeBBWS6f74PhYsJvdbggVRmGyUzFy1DChkVj1pUwK34+3VgYnND8iobyFK4nVa+GszcXb+W0OAAAAAAAcQ44AAAAAAAAAhP////0AAAAAABxBSQAAAAAAAACXAQAAAAIAAAATAAAAAGQGBIcAAAAAZAYEhwAAAABkBgSGAAAAAAAcQ28AAAAAAAAAZgAAAABkBgSE"
19-
test = "anchor build && cargo test"
16+
deploy = "anchor deploy --program-keypair program_address.json --program-name pyth_solana_receiver"
17+
cli_build_mainnet = "cargo build --package pyth-solana-receiver-cli --features mainnet"
18+
cli_build_devnet = "cargo build --package pyth-solana-receiver-cli --features devnet"
19+
20+
21+
22+
cli_test_mainnet = "cargo run --package pyth-solana-receiver-cli --features mainnet post-and-receive-vaa -u https://api.mainnet-beta.solana.com -v UE5BVQEAAAADuAEAAAADDQAbXgddtAJnEhoLE4JAxcuyokAmnoTS4qSvkw0gJpNC+TtBZApwDqsQbCXgmYOuygk6QVsV1JpKYAUa72h95m0EAQNrHPMh1kCYvYyA/6J0qOp8nrtpzVFFoAagmMqJzKDmAV8MCVvpFuy5EPu69UO95UUnZZhX/hk4y7wdTfhedTYdAQR6SL0tbSGSlWHLSzs2wpWVx8N0RFtFULp9EkCSUnxAnma3UI/hFz/78fvtRp/qx1HT8M4/8zSEuVbwd8pdeBsvAQZoD/eilZ2nvs1eHoXKz7FhW3UxVCYUZbNnJmY/Iqc6hw6+7yIJ9sh1cKvWkI+ug1ZC9KiOK90/cxipRcbaa+9+AQd5SGi5/En6R/jIoNF+iqza6YbJht0CZ02NkcGl1LOU23sptShlj3rV8NbiP8n9hV995zVDpO4j4lxJRgEyveoKAQgOwavPcVLbTn45goFiKWw7qN+MALLOP42/j8g4am+1GU8+pwEWqWvyJX0Ja+sINXYzDuCmkIVRcTQ0KW+M6tjrAQpJJe4E6+cuA59wmC7sVn5EB3zL/ILaAR00viSmrZFIeTZwmFu/WXQDnM6KRdAydalvfLCFp69w7PXTsRZ6qZdcAQyMDRjaChbqarjOW1xDU2xa2RT0ZgZEphCdWjxhbeet+hdsjsSlR/EYjBZWiEPJybOcEHb8fHb0/IXk9HUstIC6AQ18kAn8R1EHEdpYQ/d91dE/fAyFw2ZdsoazNIO4A1wNMipxpZyt31XLpkSZwnIUpt65VpOzPjnfvo13cEO0JBGyAQ6MCCPDol1OWtcXcTyVV4nhjbKXf1HPaWXXe4Z3Z+4AdEf+o+020qlbqgHlZ78m10S63E3+EodWXRcFsjCWtYsZAQ9FcKjBl86Adz+MsTtRp/ixSVFn1C3YLgcJ0WXOur1LrSFY1Vx0L0/LE8UTkJDXjxr/Vjw9MJ+MO7636omRNf3WABEkYX/9G+cTxfg6IZYYR346LVwb/2DzoeGK+2leGriR7Wl2XWnoCRLzXAvMXRYVCOXvThf/tKOKT9tSNXaHdqabARIKYMpsCs8G3LEfi9M8wizeExT5NknDMPN1SLwimmvSf2EKFfujir9nPpZQ1Xfm1ZmycoGNM2UZaMrtRomrM9NeAGVcy4MAAAAAABrhAfrtrFhR4yubI7X5QRqMK6xKrj7U3XuBHdGnLqSqcQAAAAABlfAvAUFVV1YAAAAAAAabjpgAACcQ4m9pYxIYDwWSb17+tMjLME6z1owBAFUA5i32yLSoX+GmfbRNwS3l2zMPesZrctxliv7fD0pBW0MAAANQh+v0TQAAAABXLlbN////+AAAAABlXMuCAAAAAGVcy4IAAANY89SSgAAAAABcNVH+CnrtHqVfUZAj59jeC89ZKnqKwi74B/AarJjj0/XaRMzvndCZBCRp4O3CnbyoPb7CtEUsAMCzmXXT/QJrFiJoCVGC+Ept4uJzaIZi7gOgaefhMVFFe43MEVmHj17tWyDgL0yymOCPbv2+vINEkfK9P9PV2cjRGbo6LDGtSN9J0l3Ni3CwKjkpFlWw7/BQawHz7u8b9zgtwpVzkzQeWZr0UeJek937S8nxcNctJ8B2JyCzUY/1ocTDJTaia64Hha+JHscLjDj+BOOt"
23+
cli_test_devnet = "cargo run --package pyth-solana-receiver-cli --features devnet post-and-receive-vaa -u https://api.devnet.solana.com -v UE5BVQEAAAAAoAEAAAAAAQA5HAnlb9c9mxJyYjaipkSXji7fWeE7kWqS/aoQJTMMx3JMn4rzJpNAWg2PzwlViNL9du9ZuXhoXFRIRxsImFJyAWVo9ZAAAAAAABrhAfrtrFhR4yubI7X5QRqMK6xKrj7U3XuBHdGnLqSqcQAAAAACWTHgAUFVV1YAAAAAAAbI/MoAACcQghjxa3eGWegyGTcRe3hb+AWtRukBAFUAY1TWhcJH8e/Db5Z2F77/ouvVqV2P/hfeRJhQXJIwZ7gAAAAACQfWxQAAAAAAAyX0////+AAAAABlaPWPAAAAAGVo9Y8AAAAACQWIsAAAAAAAAtnsClhMs4QutUVUWf4MP2TAt3s897CE7aHQfUZdDzc3hmO6uBlJrKLEkWFAnnPf5r4nDuqFf+utZwB1Rra6ludn3meRfgxsSOE1ZrlVmr+tnhIDzymPEfK5vIXvkAbVpnNpcvjGwtHSFX5Jm6HnZWITim8D9nUcvCyqjg+N0ZLekHgAUAquAkWexwpH17ArhN9LyBXgdsunmKgU/hKb63bgfc9TegVV69FX6+c8tcjrT9Kq4q9pTbHrYBNlZ8ED084lKXZ3Z9gp4z2S"
24+
test = "anchor build -- --features devnet && cargo test --features devnet -- --show-output"

0 commit comments

Comments
 (0)