Open adrena-orex opened 2 months ago
Yes, same question, is it correct to launch on mainnet (or TestNet)? In my local solana-test-validator, the size is also 136
hey guys, thank you for the question
@aditya520 @guibescos could you take a look please?
I'm pretty confused about this. The size of the struct is 134, we even have a test to check this https://github.com/pyth-network/pyth-crosschain/blob/main/target_chains/solana/pyth_solana_receiver_sdk/src/price_update.rs#L238.
The reason why AnchorDeserialize::try_from_slice(data) fails is because it expects the PriceUpdateV2 to start at the beginning of the bytes but instead there's the Anchor 8 bytes discriminator. PriceUpdateV2::try_deserialize handles the discriminator properly.
Yes, this is really strange.
I checked the class in vscode and found that the size is 136.
At the same time, I wrote a mock pyth program and found that the solana log output of executing this method is also 136
size of price_update_v2: 136
Version:
pyth-solana-receiver-sdk ="0.3"
My Device: I use a macbook pro M2 max, and develop with anchor 0.30.1, solana-cli 1.18.17 (src:b685182a; feat:4215500110, client:SolanaLabs)
Issue
Deserializing an
PriceUpdateV2
account info usingAnchorDeserialize::try_from_slice(data)
fails.Note: Using
PriceUpdateV2::try_deserialize(&mut data)
works.Cause
The
PriceUpdateV2
structure have a size of 136 bytes, whileLEN
is 134 and onchain accounts are 134 bytes.Onchain Account Example
https://explorer.solana.com/address/7UVimffxr9ow1uXYxsr4LHAcV58mLzhmwaeKvJ1pjLiE?cluster=devnet
PriceUpdateV2 struct in the code