@@ -71,7 +71,10 @@ pub use self::std_principals::StandardPrincipalData;
71
71
mod std_principals {
72
72
use std:: fmt;
73
73
74
- use stacks_common:: address:: c32;
74
+ use stacks_common:: address:: {
75
+ c32, C32_ADDRESS_VERSION_MAINNET_MULTISIG , C32_ADDRESS_VERSION_MAINNET_SINGLESIG ,
76
+ C32_ADDRESS_VERSION_TESTNET_MULTISIG ,
77
+ } ;
75
78
76
79
use crate :: vm:: errors:: InterpreterError ;
77
80
@@ -118,6 +121,16 @@ mod std_principals {
118
121
let Self ( version, bytes) = self ;
119
122
( version, bytes)
120
123
}
124
+
125
+ pub fn is_mainnet ( self ) -> bool {
126
+ self . 0 == C32_ADDRESS_VERSION_MAINNET_MULTISIG
127
+ || self . 0 == C32_ADDRESS_VERSION_MAINNET_SINGLESIG
128
+ }
129
+
130
+ pub fn is_multisig ( self ) -> bool {
131
+ self . 0 == C32_ADDRESS_VERSION_MAINNET_MULTISIG
132
+ || self . 0 == C32_ADDRESS_VERSION_TESTNET_MULTISIG
133
+ }
121
134
}
122
135
123
136
impl fmt:: Display for StandardPrincipalData {
@@ -1863,4 +1876,50 @@ mod test {
1863
1876
} ) ) ;
1864
1877
let _ = buff. expect_buff ( 4 ) . unwrap ( ) ;
1865
1878
}
1879
+
1880
+ #[ test]
1881
+ fn principal_is_mainnet ( ) {
1882
+ let principal =
1883
+ PrincipalData :: parse_standard_principal ( "SPXACZ2NS34QHWCMAK1V2QJK0XB6WM6N5AB7RWYB" )
1884
+ . unwrap ( ) ;
1885
+ assert ! ( principal. is_mainnet( ) ) ;
1886
+
1887
+ let principal =
1888
+ PrincipalData :: parse_standard_principal ( "SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4" )
1889
+ . unwrap ( ) ;
1890
+ assert ! ( principal. is_mainnet( ) ) ;
1891
+
1892
+ let principal =
1893
+ PrincipalData :: parse_standard_principal ( "ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM" )
1894
+ . unwrap ( ) ;
1895
+ assert ! ( !principal. is_mainnet( ) ) ;
1896
+
1897
+ let principal =
1898
+ PrincipalData :: parse_standard_principal ( "SNBPC7AHXCBAQSW6RKGEXVG119H2933ZYR63HD32" )
1899
+ . unwrap ( ) ;
1900
+ assert ! ( !principal. is_mainnet( ) ) ;
1901
+ }
1902
+
1903
+ #[ test]
1904
+ fn principal_is_multisig ( ) {
1905
+ let principal =
1906
+ PrincipalData :: parse_standard_principal ( "SPXACZ2NS34QHWCMAK1V2QJK0XB6WM6N5AB7RWYB" )
1907
+ . unwrap ( ) ;
1908
+ assert ! ( !principal. is_multisig( ) ) ;
1909
+
1910
+ let principal =
1911
+ PrincipalData :: parse_standard_principal ( "SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4" )
1912
+ . unwrap ( ) ;
1913
+ assert ! ( principal. is_multisig( ) ) ;
1914
+
1915
+ let principal =
1916
+ PrincipalData :: parse_standard_principal ( "ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM" )
1917
+ . unwrap ( ) ;
1918
+ assert ! ( !principal. is_multisig( ) ) ;
1919
+
1920
+ let principal =
1921
+ PrincipalData :: parse_standard_principal ( "SNBPC7AHXCBAQSW6RKGEXVG119H2933ZYR63HD32" )
1922
+ . unwrap ( ) ;
1923
+ assert ! ( principal. is_multisig( ) ) ;
1924
+ }
1866
1925
}
0 commit comments