You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
let hex_str = "01000000000100b441e497034be4ee82242a866461d5e6744082654f71301a96f579f629b6bf176cc0c1964cd7d4f792436b7a73fc7024d72b138869b4d81d449740bb08148238000000000100000000000100000000000000000000000000000000000000000000000000000000000000110000000000000001005054474d01010002010000000001009c9dc62e92fefe0806dce30b662a5d319417a62dccc700b5f2678306d39c005f7a5e74d11df287301d85d328a3d000c5d793c57161f3150c7eb1a17668946e6b010000000100000000000100000000000000000000000000000000000000000000000000000000000000110000000000000064005054474d0105000200000000";
235
+
let hex_str = "010000000001006fc27ac424b300c23a564bcabe1d7888a898cba92b8aec62468c35025baaf4a87056c50d443fbc172c3caa30d28ec57cefc0bbabf4590ffe98c44dff040d0e02000000000100000000000200000000000000000000000000000000000000000000000000000000000011110000000000000001005054474d0105000200000001";
236
236
let bytes = Vec::from_hex(hex_str).expect("Invalid hex string");
let hex_str = "0100000000010067940f58a6a44c93606bd721701539e0da93d5ea1583a735fbb13ecbcf9c01fc70240de519ea76869af14d067d68c5f3f2230f565f41b7009f3c3e63749353ed000000000100000000000100000000000000000000000000000000000000000000000000000000000000110000000000000001005054474d0103000200000000000000050000000000000003";
338
+
let bytes = Vec::from_hex(&hex_str).expect("Invalid hex string");
// Changed the magic signature to an invalid one (6064474d instead of 5054474d)
359
+
let hex_str = "0100000000010067940f58a6a44c93606bd721701539e0da93d5ea1583a735fbb13ecbcf9c01fc70240de519ea76869af14d067d68c5f3f2230f565f41b7009f3c3e63749353ed000000000100000000000100000000000000000000000000000000000000000000000000000000000000110000000000000001006064474d0103000200000000000000050000000000000003";
360
+
let bytes = Vec::from_hex(&hex_str).expect("Invalid hex string");
let hex_str = "0100000000010067940f58a676869af14d067d68c5f3f2230f565f41b7009f3c3e63749353ed000000000100000000000100000000000000000000000000000000000000000000000000000000000000110000000000000001005054474d0103000200000000000000050000000000000003";
381
+
let bytes = Vec::from_hex(&hex_str).expect("Invalid hex string");
// Changed the version number to an invalid one (2 instead of 1)
402
+
let hex_str = "0200000000010067940f58a6a44c93606bd721701539e0da93d5ea1583a735fbb13ecbcf9c01fc70240de519ea76869af14d067d68c5f3f2230f565f41b7009f3c3e63749353ed000000000100000000000100000000000000000000000000000000000000000000000000000000000000110000000000000001005054474d0103000200000000000000050000000000000003";
403
+
let bytes = Vec::from_hex(&hex_str).expect("Invalid hex string");
// Changed the emitter chain ID to a different one (2 instead of 1)
424
+
let hex_str = "0100000000010057940f58a6a44c93606bd721701539e0da93d5ea1583a735fbb13ecbcf9c01fc70240de519ea76869af14d067d68c5f3f2230f565f41b7009f3c3e63749353ed000000000100000000000200000000000000000000000000000000000000000000000000000000000000110000000000000001005054474d0103000200000000000000050000000000000003";
425
+
let bytes = Vec::from_hex(&hex_str).expect("Invalid hex string");
// Changed the emitter chain ID to a different one (...0011 to ...0022)
446
+
let hex_str = "0100000000010057940f58a6a44c93606bd721701539e0da93d5ea1583a735fbb13ecbcf9c01fc70240de519ea76869af14d067d68c5f3f2230f565f41b7009f3c3e63749353ed000000000100000000000100000000000000000000000000000000000000000000000000000000000000220000000000000001005054474d0103000200000000000000050000000000000003";
447
+
let bytes = Vec::from_hex(&hex_str).expect("Invalid hex string");
let hex_str = "0100000000010057940f58a6a44c93606bd721701539e0da93d5ea1583a735fbb13ecbcf9c01fc70240de519ea76869af14d067d68c5f3f2230f565f41b7009f3c3e63749353ed000000000100000000000100000000000000000000000000000000000000000000000000000000000000110000000000000001005054474d0103000200000000000000050000000000000003";
468
+
let bytes = Vec::from_hex(&hex_str).expect("Invalid hex string");
469
+
470
+
let result = pyth_contract
471
+
.sender(alice)
472
+
.execute_governance_instruction(bytes.clone());
473
+
474
+
assert!(
475
+
result.is_ok(),
476
+
"This is a valid VAA, should go through"
477
+
);
478
+
479
+
let result = pyth_contract
480
+
.sender(alice)
481
+
.execute_governance_instruction(bytes.clone());
482
+
483
+
assert!(
484
+
result.is_err(),
485
+
"Cannot execute the same sequence number again, should revert"
// This VAA is for a target chain ID of 1 (Solana), but the PythReceiver is on chain ID 1 (Ethereum)
498
+
let hex_str = "0100000000010057940f58a6a44c93606bd721701539e0da93d5ea1583a735fbb13ecbcf9c01fc70240de519ea76869af14d067d68c5f3f2230f565f41b7009f3c3e63749353ed000000000100000000000100000000000000000000000000000000000000000000000000000000000000110000000000000001005054474d0103000100000000000000050000000000000003";
499
+
let bytes = Vec::from_hex(&hex_str).expect("Invalid hex string");
500
+
501
+
let result = pyth_contract
502
+
.sender(alice)
503
+
.execute_governance_instruction(bytes.clone());
504
+
505
+
assert!(
506
+
result.is_err(),
507
+
"Incorrect target chain ID should revert the transaction"
// Changes this action to be a SetDataSources action instead of a SetFee action
520
+
let hex_str = "0100000000010057940f58a6a44c93606bd721701539e0da93d5ea1583a735fbb13ecbcf9c01fc70240de519ea76869af14d067d68c5f3f2230f565f41b7009f3c3e63749353ed000000000100000000000100000000000000000000000000000000000000000000000000000000000000110000000000000001005054474d0102000200000000000000050000000000000003";
521
+
let bytes = Vec::from_hex(&hex_str).expect("Invalid hex string");
522
+
523
+
let result = pyth_contract
524
+
.sender(alice)
525
+
.execute_governance_instruction(bytes.clone());
526
+
527
+
assert!(
528
+
result.is_err(),
529
+
"Wrong action expected should lead to bad parsing"
0 commit comments