1
+ #![ cfg_attr( not( feature = "std" ) , no_std, no_main) ]
1
2
extern crate alloc;
2
3
4
+ #[ cfg( not( feature = "std" ) ) ]
3
5
#[ global_allocator]
4
6
static ALLOC : mini_alloc:: MiniAlloc = mini_alloc:: MiniAlloc :: INIT ;
5
7
8
+ #[ cfg( not( feature = "std" ) ) ]
9
+ #[ panic_handler]
10
+ fn panic ( _info : & core:: panic:: PanicInfo ) -> ! {
11
+ loop { }
12
+ }
13
+
6
14
7
15
use alloc:: { vec, vec:: Vec } ;
8
16
use stylus_sdk:: {
@@ -58,8 +66,8 @@ pub enum WormholeError {
58
66
}
59
67
60
68
impl core:: fmt:: Debug for WormholeError {
61
- fn fmt ( & self , f : & mut core:: fmt:: Formatter < ' _ > ) -> core:: fmt:: Result {
62
- f . write_str ( "" )
69
+ fn fmt ( & self , _ : & mut core:: fmt:: Formatter < ' _ > ) -> core:: fmt:: Result {
70
+ Ok ( ( ) )
63
71
}
64
72
}
65
73
@@ -486,28 +494,31 @@ mod tests {
486
494
use core:: str:: FromStr ;
487
495
use k256:: ecdsa:: SigningKey ;
488
496
use stylus_sdk:: alloy_primitives:: keccak256;
497
+
498
+ #[ cfg( test) ]
489
499
use base64:: engine:: general_purpose;
500
+ #[ cfg( test) ]
490
501
use base64:: Engine ;
491
502
492
503
const CHAIN_ID : u16 = 60051 ;
493
504
const GOVERNANCE_CHAIN_ID : u16 = 1 ;
494
505
const GOVERNANCE_CONTRACT : U256 = U256 :: from_limbs ( [ 4 , 0 , 0 , 0 ] ) ;
495
506
507
+ #[ cfg( test) ]
496
508
fn test_wormhole_vaa ( ) -> Vec < u8 > {
497
- let vaa_raw_base64 = "AQAAAAQNAKPLun8KH+IfCb2c9rlKrXV8wDcZUeMtLeoxoJLHAu7kH40xE1IY5uaJLT4PRsWDDv+7GHNT8rDP+4hUaJNHMtkBAvbQ7aUofV+VAoXjfqrU+V4Vzgvkpwuowaj0BMzNTSp2PkKz5BsnfvC7cxVwOw9sJnQfPvN8KrmhA0IXgQdkQDIBA/0sVNcwZm1oic2G6r7c3x5DyEO9sRF2sTDyM4nuiOtaWPbgolaK6iU3yTx2bEzjdKsdVD2z3qs/QReV8ZxtA5MBBKSm2RKacsgdvwwNZPB3Ifw3P2niCAhZA435PkYeZpDBd8GQ4hALy+42lffR+AXJu19pNs+thWSxq7GRxF5oKz8BBYYS1n9/PJOybDhuWS+PI6YU0CFVTC9pTFSFTlMcEpjsUbT+cUKYCcFU63YaeVGUEPmhFYKeUeRhhQ5g2cCPIegABqts6uHMo5hrdXujJHVEqngLCSaQpB2W9I32LcIvKBfxLcx9IZTjxJ36tyNo7VJ6Fu1FbXnLW0lzaSIbmVmlGukABzpn+9z3bHT6g16HeroSW/YWNlZD5Jo6Zuw9/LT4VD0ET3DgFZtzytkWlJJKAuEB26wRHZbzLAKXfRl+j8kylWQACTTiIiCjZxmEUWjWzWe3JvvPKMNRvYkGkdGaQ7bWVvdiZvxoDq1XHB2H7WnqaAU6xY2pLyf6JG+lV+XZ/GEY+7YBDD/NU/C/gNZP9RP+UujaeJFWt2dau+/g2vtnX/gs2sgBf+yMYm6/dFaT0TiJAcG42zqOi24DLpsdVefaUV1G7CABDjmSRpA//pdAOL5ZxEFG1ia7TnwslsgsvVOa4pKUp5HSZv1JEUO6xMDkTOrBBt5vv9n6zYp3tpYHgUB/fZDh/qUBDzHxNtrQuL/n8a2HOY34yqljpBOCigAbHj+xQmu85u8ieUyge/2zqTn8PYMcka3pW1WTzOAOZf1pLHO+oPEfkTMBEGUS9UOAeY6IUabiEtAQ6qnR47WgPPHYSZUtKBkU0JscDgW0cFq47qmet9OCo79183dRDYE0kFIhnJDk/r7Cq4ABEfBBD83OEF2LJKKkJIBL/KBiD/Mjh3jwKXqqj28EJt1lKCYiGlPhqOCqRArydP94c37MSdrrPlkh0bhcFYs3deMAaEhJXwAAAAAABQAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkRAAAAAAAEDRXIAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMN2oOke3QAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABu3yoHkAEAAAAAAAAAAAAAAAAPpLFVLLUvQgzfCF8uDxxgOpZXNaAAAAAAAAAAAAAAAAegpThHd29+lMw1dClxrLIhew24EAAAAAAAAAAAAAAAB6ClOEd3b36UzDV0KXGssiF7DbgQAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkRAA==" ;
498
- let vaa_bytes = general_purpose:: STANDARD . decode ( vaa_raw_base64) . unwrap ( ) ;
499
- let vaa: Vec < u8 > = vaa_bytes;
500
- vaa
509
+ general_purpose:: STANDARD . decode ( "AQAAAAQNAKPLun8KH+IfCb2c9rlKrXV8wDcZUeMtLeoxoJLHAu7kH40xE1IY5uaJLT4PRsWDDv+7GHNT8rDP+4hUaJNHMtkBAvbQ7aUofV+VAoXjfqrU+V4Vzgvkpwuowaj0BMzNTSp2PkKz5BsnfvC7cxVwOw9sJnQfPvN8KrmhA0IXgQdkQDIBA/0sVNcwZm1oic2G6r7c3x5DyEO9sRF2sTDyM4nuiOtaWPbgolaK6iU3yTx2bEzjdKsdVD2z3qs/QReV8ZxtA5MBBKSm2RKacsgdvwwNZPB3Ifw3P2niCAhZA435PkYeZpDBd8GQ4hALy+42lffR+AXJu19pNs+thWSxq7GRxF5oKz8BBYYS1n9/PJOybDhuWS+PI6YU0CFVTC9pTFSFTlMcEpjsUbT+cUKYCcFU63YaeVGUEPmhFYKeUeRhhQ5g2cCPIegABqts6uHMo5hrdXujJHVEqngLCSaQpB2W9I32LcIvKBfxLcx9IZTjxJ36tyNo7VJ6Fu1FbXnLW0lzaSIbmVmlGukABzpn+9z3bHT6g16HeroSW/YWNlZD5Jo6Zuw9/LT4VD0ET3DgFZtzytkWlJJKAuEB26wRHZbzLAKXfRl+j8kylWQACTTiIiCjZxmEUWjWzWe3JvvPKMNRvYkGkdGaQ7bWVvdiZvxoDq1XHB2H7WnqaAU6xY2pLyf6JG+lV+XZ/GEY+7YBDD/NU/C/gNZP9RP+UujaeJFWt2dau+/g2vtnX/gs2sgBf+yMYm6/dFaT0TiJAcG42zqOi24DLpsdVefaUV1G7CABDjmSRpA//pdAOL5ZxEFG1ia7TnwslsgsvVOa4pKUp5HSZv1JEUO6xMDkTOrBBt5vv9n6zYp3tpYHgUB/fZDh/qUBDzHxNtrQuL/n8a2HOY34yqljpBOCigAbHj+xQmu85u8ieUyge/2zqTn8PYMcka3pW1WTzOAOZf1pLHO+oPEfkTMBEGUS9UOAeY6IUabiEtAQ6qnR47WgPPHYSZUtKBkU0JscDgW0cFq47qmet9OCo79183dRDYE0kFIhnJDk/r7Cq4ABEfBBD83OEF2LJKKkJIBL/KBiD/Mjh3jwKXqqj28EJt1lKCYiGlPhqOCqRArydP94c37MSdrrPlkh0bhcFYs3deMAaEhJXwAAAAAABQAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkRAAAAAAAEDRXIAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMN2oOke3QAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABu3yoHkAEAAAAAAAAAAAAAAAAPpLFVLLUvQgzfCF8uDxxgOpZXNaAAAAAAAAAAAAAAAAegpThHd29+lMw1dClxrLIhew24EAAAAAAAAAAAAAAAB6ClOEd3b36UzDV0KXGssiF7DbgQAAAAAAAAAAAAAAACdCjdLT3TKk1/fEl+qqIxMNiUkRAA==" ) . unwrap ( )
501
510
}
502
511
512
+ #[ cfg( test) ]
503
513
fn create_vaa_bytes ( input_string : & str ) -> Vec < u8 > {
504
514
let vaa_bytes = general_purpose:: STANDARD
505
515
. decode ( input_string)
506
- . expect ( "dec" ) ;
516
+ . unwrap ( ) ;
507
517
let vaa: Vec < u8 > = vaa_bytes;
508
518
vaa
509
519
}
510
520
521
+ #[ cfg( test) ]
511
522
fn test_guardian_secret1 ( ) -> [ u8 ; 32 ] {
512
523
[
513
524
0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 , 0x08 ,
@@ -517,6 +528,7 @@ mod tests {
517
528
]
518
529
}
519
530
531
+ #[ cfg( test) ]
520
532
fn test_guardian_secret2 ( ) -> [ u8 ; 32 ] {
521
533
[
522
534
0x21 , 0x22 , 0x23 , 0x24 , 0x25 , 0x26 , 0x27 , 0x28 ,
@@ -526,6 +538,7 @@ mod tests {
526
538
]
527
539
}
528
540
541
+ #[ cfg( test) ]
529
542
fn test_guardian_address1 ( ) -> Address {
530
543
let secret = test_guardian_secret1 ( ) ;
531
544
let signing_key = SigningKey :: from_bytes ( & secret. into ( ) ) . expect ( "key" ) ;
@@ -538,6 +551,7 @@ mod tests {
538
551
}
539
552
540
553
554
+ #[ cfg( test) ]
541
555
fn test_guardian_address2 ( ) -> Address {
542
556
let secret = test_guardian_secret2 ( ) ;
543
557
let signing_key = SigningKey :: from_bytes ( & secret. into ( ) ) . expect ( "key" ) ;
@@ -549,18 +563,20 @@ mod tests {
549
563
Address :: from ( address_bytes)
550
564
}
551
565
566
+ #[ cfg( test) ]
552
567
fn deploy_with_test_guardian ( ) -> WormholeContract {
553
568
let mut contract = WormholeContract :: default ( ) ;
554
569
let guardians = vec ! [ test_guardian_address1( ) ] ;
555
570
let governance_contract = Address :: from_slice ( & GOVERNANCE_CONTRACT . to_be_bytes :: < 32 > ( ) [ 12 ..32 ] ) ;
556
571
match contract. store_gs ( 0 , guardians. clone ( ) , 0 ) {
557
572
Ok ( _) => { }
558
- Err ( _) => panic ! ( "s" ) ,
573
+ Err ( _) => unreachable ! ( ) ,
559
574
}
560
575
contract. initialize ( guardians, CHAIN_ID , GOVERNANCE_CHAIN_ID , governance_contract) . unwrap ( ) ;
561
576
contract
562
577
}
563
578
579
+ #[ cfg( test) ]
564
580
fn deploy_with_current_guardians ( ) -> WormholeContract {
565
581
let mut contract = WormholeContract :: default ( ) ;
566
582
let guardians = mock_guardian_set13 ( ) ;
@@ -570,6 +586,7 @@ mod tests {
570
586
contract
571
587
}
572
588
589
+ #[ cfg( test) ]
573
590
fn deploy_with_mainnet_guardian_set0 ( ) -> WormholeContract {
574
591
let mut contract = WormholeContract :: default ( ) ;
575
592
let guardians = guardian_set0 ( ) ;
@@ -580,6 +597,7 @@ mod tests {
580
597
581
598
582
599
600
+ #[ cfg( test) ]
583
601
fn deploy_with_mainnet_guardians ( ) -> WormholeContract {
584
602
let mut contract = WormholeContract :: default ( ) ;
585
603
let guardians = guardian_set4 ( ) ;
@@ -588,10 +606,12 @@ mod tests {
588
606
contract
589
607
}
590
608
609
+ #[ cfg( test) ]
591
610
fn guardian_set0 ( ) -> Vec < Address > {
592
611
vec ! [ Address :: from_str( "0x58CC3AE5C097b213cE3c81979e1B9f9570746AA5" ) . unwrap( ) ]
593
612
}
594
613
614
+ #[ cfg( test) ]
595
615
fn guardian_set4 ( ) -> Vec < Address > {
596
616
vec ! [
597
617
Address :: from_str( "0x5893B5A76c3f739645648885bDCcC06cd70a3Cd3" ) . unwrap( ) ,
@@ -600,13 +620,15 @@ mod tests {
600
620
]
601
621
}
602
622
623
+ #[ cfg( test) ]
603
624
fn mock_guardian_set13 ( ) -> Vec < Address > {
604
625
vec ! [
605
626
Address :: from( [ 0x58 , 0x93 , 0xB5 , 0xA7 , 0x6c , 0x3f , 0x73 , 0x96 , 0x45 , 0x64 , 0x88 , 0x85 , 0xbD , 0xCc , 0xC0 , 0x6c , 0xd7 , 0x0a , 0x3C , 0xd3 ] ) ,
606
627
Address :: from( [ 0xff , 0x6C , 0xB9 , 0x52 , 0x58 , 0x9B , 0xDE , 0x86 , 0x2c , 0x25 , 0xEf , 0x43 , 0x92 , 0x13 , 0x2f , 0xb9 , 0xD4 , 0xA4 , 0x21 , 0x57 ] ) ,
607
628
]
608
629
}
609
630
631
+ #[ cfg( test) ]
610
632
fn corrupted_vaa ( mut real_data : Vec < u8 > , pos : usize , random1 : u8 , random2 : u8 ) -> Vec < u8 > {
611
633
if real_data. len ( ) < 2 {
612
634
return real_data;
@@ -680,6 +702,7 @@ mod tests {
680
702
} )
681
703
}
682
704
705
+ #[ cfg( test) ]
683
706
fn create_guardian_signature ( guardian_index : u8 ) -> GuardianSignature {
684
707
GuardianSignature {
685
708
guardian_index,
@@ -703,7 +726,7 @@ mod tests {
703
726
let vaa_vec = test_wormhole_vaa ( ) ;
704
727
let result = match WormholeContract :: parse_vm_static ( & vaa_vec) {
705
728
Ok ( vaa) => vaa,
706
- Err ( _) => panic ! ( "p" ) ,
729
+ Err ( _) => unreachable ! ( ) ,
707
730
} ;
708
731
assert_eq ! ( result. signatures. len( ) , 13 )
709
732
}
@@ -767,7 +790,7 @@ mod tests {
767
790
] ;
768
791
match contract. store_gs ( 0 , guardians. clone ( ) , 0 ) {
769
792
Ok ( _) => { } ,
770
- Err ( _) => panic ! ( "s" ) ,
793
+ Err ( _) => unreachable ! ( ) ,
771
794
}
772
795
773
796
let signatures = vec ! [
@@ -877,7 +900,7 @@ mod tests {
877
900
let i_u8: u8 = match i. try_into ( ) {
878
901
Ok ( val) => val,
879
902
Err ( _) => {
880
- panic ! ( "i" ) ;
903
+ unreachable ! ( ) ;
881
904
}
882
905
} ;
883
906
let corrupted_data = corrupted_vaa ( vec ! [ 1 , 0 , 0 , 1 , 0 , 0 ] , i, i_u8, i_u8 * 2 ) ;
@@ -894,7 +917,7 @@ mod tests {
894
917
let i_u8: u8 = match i. try_into ( ) {
895
918
Ok ( val) => val,
896
919
Err ( _) => {
897
- panic ! ( "i" ) ;
920
+ unreachable ! ( ) ;
898
921
}
899
922
} ;
900
923
let base_vaa = vec ! [ 1 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
@@ -954,15 +977,15 @@ mod tests {
954
977
955
978
contract
956
979
. store_gs ( 0 , guardian_set0 ( ) , 0 )
957
- . unwrap_or_else ( |_| panic ! ( "sf" ) ) ;
980
+ . unwrap ( ) ;
958
981
contract
959
982
. store_gs ( 4 , guardian_set4 ( ) , 0 )
960
- . unwrap_or_else ( |_| panic ! ( "sf" ) ) ;
983
+ . unwrap ( ) ;
961
984
962
985
let set0 = contract. get_gs_internal ( 0 )
963
- . unwrap_or_else ( || panic ! ( "gf" ) ) ;
986
+ . unwrap ( ) ;
964
987
let set4 = contract. get_gs_internal ( 4 )
965
- . unwrap_or_else ( || panic ! ( "gf" ) ) ;
988
+ . unwrap ( ) ;
966
989
967
990
assert_eq ! ( set0. keys, guardian_set0( ) ) ;
968
991
assert_eq ! ( set4. keys, guardian_set4( ) ) ;
@@ -977,7 +1000,7 @@ mod tests {
977
1000
] ;
978
1001
match contract. store_gs ( 0 , guardians. clone ( ) , 0 ) {
979
1002
Ok ( ( ) ) => ( ) ,
980
- Err ( _) => panic ! ( "s" ) ,
1003
+ Err ( _) => unreachable ! ( ) ,
981
1004
}
982
1005
let hash = FixedBytes :: < 32 > :: from ( [ 0x42u8 ; 32 ] ) ;
983
1006
0 commit comments