@@ -771,380 +771,3 @@ pub enum DescriptorType {
771
771
/// Tr Descriptor
772
772
Tr ,
773
773
}
774
-
775
- #[ cfg( test) ]
776
- mod tests {
777
- use crate :: bitcoin:: Address ;
778
- use crate :: bitcoin:: Network ;
779
- use crate :: bitcoin:: Psbt ;
780
-
781
- #[ test]
782
- fn test_is_valid_for_network ( ) {
783
- // ====Docs tests====
784
- // https://docs.rs/bitcoin/0.29.2/src/bitcoin/util/address.rs.html#798-802
785
-
786
- let docs_address_testnet_str = "2N83imGV3gPwBzKJQvWJ7cRUY2SpUyU6A5e" ;
787
- let docs_address_testnet =
788
- Address :: new ( docs_address_testnet_str. to_string ( ) , Network :: Testnet ) . unwrap ( ) ;
789
- assert ! (
790
- docs_address_testnet. is_valid_for_network( Network :: Testnet ) ,
791
- "Address should be valid for Testnet"
792
- ) ;
793
- assert ! (
794
- docs_address_testnet. is_valid_for_network( Network :: Signet ) ,
795
- "Address should be valid for Signet"
796
- ) ;
797
- assert ! (
798
- docs_address_testnet. is_valid_for_network( Network :: Regtest ) ,
799
- "Address should be valid for Regtest"
800
- ) ;
801
-
802
- let docs_address_mainnet_str = "32iVBEu4dxkUQk9dJbZUiBiQdmypcEyJRf" ;
803
- let docs_address_mainnet =
804
- Address :: new ( docs_address_mainnet_str. to_string ( ) , Network :: Bitcoin ) . unwrap ( ) ;
805
- assert ! (
806
- docs_address_mainnet. is_valid_for_network( Network :: Bitcoin ) ,
807
- "Address should be valid for Bitcoin"
808
- ) ;
809
-
810
- // ====Bech32====
811
-
812
- // | Network | Prefix | Address Type |
813
- // |-----------------|---------|--------------|
814
- // | Bitcoin Mainnet | `bc1` | Bech32 |
815
- // | Bitcoin Testnet | `tb1` | Bech32 |
816
- // | Bitcoin Signet | `tb1` | Bech32 |
817
- // | Bitcoin Regtest | `bcrt1` | Bech32 |
818
-
819
- // Bech32 - Bitcoin
820
- // Valid for:
821
- // - Bitcoin
822
- // Not valid for:
823
- // - Testnet
824
- // - Signet
825
- // - Regtest
826
- let bitcoin_mainnet_bech32_address_str = "bc1qxhmdufsvnuaaaer4ynz88fspdsxq2h9e9cetdj" ;
827
- let bitcoin_mainnet_bech32_address = Address :: new (
828
- bitcoin_mainnet_bech32_address_str. to_string ( ) ,
829
- Network :: Bitcoin ,
830
- )
831
- . unwrap ( ) ;
832
- assert ! (
833
- bitcoin_mainnet_bech32_address. is_valid_for_network( Network :: Bitcoin ) ,
834
- "Address should be valid for Bitcoin"
835
- ) ;
836
- assert ! (
837
- !bitcoin_mainnet_bech32_address. is_valid_for_network( Network :: Testnet ) ,
838
- "Address should not be valid for Testnet"
839
- ) ;
840
- assert ! (
841
- !bitcoin_mainnet_bech32_address. is_valid_for_network( Network :: Signet ) ,
842
- "Address should not be valid for Signet"
843
- ) ;
844
- assert ! (
845
- !bitcoin_mainnet_bech32_address. is_valid_for_network( Network :: Regtest ) ,
846
- "Address should not be valid for Regtest"
847
- ) ;
848
-
849
- // Bech32 - Testnet
850
- // Valid for:
851
- // - Testnet
852
- // - Regtest
853
- // Not valid for:
854
- // - Bitcoin
855
- // - Regtest
856
- let bitcoin_testnet_bech32_address_str =
857
- "tb1p4nel7wkc34raczk8c4jwk5cf9d47u2284rxn98rsjrs4w3p2sheqvjmfdh" ;
858
- let bitcoin_testnet_bech32_address = Address :: new (
859
- bitcoin_testnet_bech32_address_str. to_string ( ) ,
860
- Network :: Testnet ,
861
- )
862
- . unwrap ( ) ;
863
- assert ! (
864
- !bitcoin_testnet_bech32_address. is_valid_for_network( Network :: Bitcoin ) ,
865
- "Address should not be valid for Bitcoin"
866
- ) ;
867
- assert ! (
868
- bitcoin_testnet_bech32_address. is_valid_for_network( Network :: Testnet ) ,
869
- "Address should be valid for Testnet"
870
- ) ;
871
- assert ! (
872
- bitcoin_testnet_bech32_address. is_valid_for_network( Network :: Signet ) ,
873
- "Address should be valid for Signet"
874
- ) ;
875
- assert ! (
876
- !bitcoin_testnet_bech32_address. is_valid_for_network( Network :: Regtest ) ,
877
- "Address should not not be valid for Regtest"
878
- ) ;
879
-
880
- // Bech32 - Signet
881
- // Valid for:
882
- // - Signet
883
- // - Testnet
884
- // Not valid for:
885
- // - Bitcoin
886
- // - Regtest
887
- let bitcoin_signet_bech32_address_str =
888
- "tb1pwzv7fv35yl7ypwj8w7al2t8apd6yf4568cs772qjwper74xqc99sk8x7tk" ;
889
- let bitcoin_signet_bech32_address = Address :: new (
890
- bitcoin_signet_bech32_address_str. to_string ( ) ,
891
- Network :: Signet ,
892
- )
893
- . unwrap ( ) ;
894
- assert ! (
895
- !bitcoin_signet_bech32_address. is_valid_for_network( Network :: Bitcoin ) ,
896
- "Address should not be valid for Bitcoin"
897
- ) ;
898
- assert ! (
899
- bitcoin_signet_bech32_address. is_valid_for_network( Network :: Testnet ) ,
900
- "Address should be valid for Testnet"
901
- ) ;
902
- assert ! (
903
- bitcoin_signet_bech32_address. is_valid_for_network( Network :: Signet ) ,
904
- "Address should be valid for Signet"
905
- ) ;
906
- assert ! (
907
- !bitcoin_signet_bech32_address. is_valid_for_network( Network :: Regtest ) ,
908
- "Address should not not be valid for Regtest"
909
- ) ;
910
-
911
- // Bech32 - Regtest
912
- // Valid for:
913
- // - Regtest
914
- // Not valid for:
915
- // - Bitcoin
916
- // - Testnet
917
- // - Signet
918
- let bitcoin_regtest_bech32_address_str = "bcrt1q39c0vrwpgfjkhasu5mfke9wnym45nydfwaeems" ;
919
- let bitcoin_regtest_bech32_address = Address :: new (
920
- bitcoin_regtest_bech32_address_str. to_string ( ) ,
921
- Network :: Regtest ,
922
- )
923
- . unwrap ( ) ;
924
- assert ! (
925
- !bitcoin_regtest_bech32_address. is_valid_for_network( Network :: Bitcoin ) ,
926
- "Address should not be valid for Bitcoin"
927
- ) ;
928
- assert ! (
929
- !bitcoin_regtest_bech32_address. is_valid_for_network( Network :: Testnet ) ,
930
- "Address should not be valid for Testnet"
931
- ) ;
932
- assert ! (
933
- !bitcoin_regtest_bech32_address. is_valid_for_network( Network :: Signet ) ,
934
- "Address should not be valid for Signet"
935
- ) ;
936
- assert ! (
937
- bitcoin_regtest_bech32_address. is_valid_for_network( Network :: Regtest ) ,
938
- "Address should be valid for Regtest"
939
- ) ;
940
-
941
- // ====P2PKH====
942
-
943
- // | Network | Prefix for P2PKH | Prefix for P2SH |
944
- // |------------------------------------|------------------|-----------------|
945
- // | Bitcoin Mainnet | `1` | `3` |
946
- // | Bitcoin Testnet, Regtest, Signet | `m` or `n` | `2` |
947
-
948
- // P2PKH - Bitcoin
949
- // Valid for:
950
- // - Bitcoin
951
- // Not valid for:
952
- // - Testnet
953
- // - Regtest
954
- let bitcoin_mainnet_p2pkh_address_str = "1FfmbHfnpaZjKFvyi1okTjJJusN455paPH" ;
955
- let bitcoin_mainnet_p2pkh_address = Address :: new (
956
- bitcoin_mainnet_p2pkh_address_str. to_string ( ) ,
957
- Network :: Bitcoin ,
958
- )
959
- . unwrap ( ) ;
960
- assert ! (
961
- bitcoin_mainnet_p2pkh_address. is_valid_for_network( Network :: Bitcoin ) ,
962
- "Address should be valid for Bitcoin"
963
- ) ;
964
- assert ! (
965
- !bitcoin_mainnet_p2pkh_address. is_valid_for_network( Network :: Testnet ) ,
966
- "Address should not be valid for Testnet"
967
- ) ;
968
- assert ! (
969
- !bitcoin_mainnet_p2pkh_address. is_valid_for_network( Network :: Regtest ) ,
970
- "Address should not be valid for Regtest"
971
- ) ;
972
-
973
- // P2PKH - Testnet
974
- // Valid for:
975
- // - Testnet
976
- // - Regtest
977
- // Not valid for:
978
- // - Bitcoin
979
- let bitcoin_testnet_p2pkh_address_str = "mucFNhKMYoBQYUAEsrFVscQ1YaFQPekBpg" ;
980
- let bitcoin_testnet_p2pkh_address = Address :: new (
981
- bitcoin_testnet_p2pkh_address_str. to_string ( ) ,
982
- Network :: Testnet ,
983
- )
984
- . unwrap ( ) ;
985
- assert ! (
986
- !bitcoin_testnet_p2pkh_address. is_valid_for_network( Network :: Bitcoin ) ,
987
- "Address should not be valid for Bitcoin"
988
- ) ;
989
- assert ! (
990
- bitcoin_testnet_p2pkh_address. is_valid_for_network( Network :: Testnet ) ,
991
- "Address should be valid for Testnet"
992
- ) ;
993
- assert ! (
994
- bitcoin_testnet_p2pkh_address. is_valid_for_network( Network :: Regtest ) ,
995
- "Address should be valid for Regtest"
996
- ) ;
997
-
998
- // P2PKH - Regtest
999
- // Valid for:
1000
- // - Testnet
1001
- // - Regtest
1002
- // Not valid for:
1003
- // - Bitcoin
1004
- let bitcoin_regtest_p2pkh_address_str = "msiGFK1PjCk8E6FXeoGkQPTscmcpyBdkgS" ;
1005
- let bitcoin_regtest_p2pkh_address = Address :: new (
1006
- bitcoin_regtest_p2pkh_address_str. to_string ( ) ,
1007
- Network :: Regtest ,
1008
- )
1009
- . unwrap ( ) ;
1010
- assert ! (
1011
- !bitcoin_regtest_p2pkh_address. is_valid_for_network( Network :: Bitcoin ) ,
1012
- "Address should not be valid for Bitcoin"
1013
- ) ;
1014
- assert ! (
1015
- bitcoin_regtest_p2pkh_address. is_valid_for_network( Network :: Testnet ) ,
1016
- "Address should be valid for Testnet"
1017
- ) ;
1018
- assert ! (
1019
- bitcoin_regtest_p2pkh_address. is_valid_for_network( Network :: Regtest ) ,
1020
- "Address should be valid for Regtest"
1021
- ) ;
1022
-
1023
- // ====P2SH====
1024
-
1025
- // | Network | Prefix for P2PKH | Prefix for P2SH |
1026
- // |------------------------------------|------------------|-----------------|
1027
- // | Bitcoin Mainnet | `1` | `3` |
1028
- // | Bitcoin Testnet, Regtest, Signet | `m` or `n` | `2` |
1029
-
1030
- // P2SH - Bitcoin
1031
- // Valid for:
1032
- // - Bitcoin
1033
- // Not valid for:
1034
- // - Testnet
1035
- // - Regtest
1036
- let bitcoin_mainnet_p2sh_address_str = "3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy" ;
1037
- let bitcoin_mainnet_p2sh_address = Address :: new (
1038
- bitcoin_mainnet_p2sh_address_str. to_string ( ) ,
1039
- Network :: Bitcoin ,
1040
- )
1041
- . unwrap ( ) ;
1042
- assert ! (
1043
- bitcoin_mainnet_p2sh_address. is_valid_for_network( Network :: Bitcoin ) ,
1044
- "Address should be valid for Bitcoin"
1045
- ) ;
1046
- assert ! (
1047
- !bitcoin_mainnet_p2sh_address. is_valid_for_network( Network :: Testnet ) ,
1048
- "Address should not be valid for Testnet"
1049
- ) ;
1050
- assert ! (
1051
- !bitcoin_mainnet_p2sh_address. is_valid_for_network( Network :: Regtest ) ,
1052
- "Address should not be valid for Regtest"
1053
- ) ;
1054
-
1055
- // P2SH - Testnet
1056
- // Valid for:
1057
- // - Testnet
1058
- // - Regtest
1059
- // Not valid for:
1060
- // - Bitcoin
1061
- let bitcoin_testnet_p2sh_address_str = "2NFUBBRcTJbYc1D4HSCbJhKZp6YCV4PQFpQ" ;
1062
- let bitcoin_testnet_p2sh_address = Address :: new (
1063
- bitcoin_testnet_p2sh_address_str. to_string ( ) ,
1064
- Network :: Testnet ,
1065
- )
1066
- . unwrap ( ) ;
1067
- assert ! (
1068
- !bitcoin_testnet_p2sh_address. is_valid_for_network( Network :: Bitcoin ) ,
1069
- "Address should not be valid for Bitcoin"
1070
- ) ;
1071
- assert ! (
1072
- bitcoin_testnet_p2sh_address. is_valid_for_network( Network :: Testnet ) ,
1073
- "Address should be valid for Testnet"
1074
- ) ;
1075
- assert ! (
1076
- bitcoin_testnet_p2sh_address. is_valid_for_network( Network :: Regtest ) ,
1077
- "Address should be valid for Regtest"
1078
- ) ;
1079
-
1080
- // P2SH - Regtest
1081
- // Valid for:
1082
- // - Testnet
1083
- // - Regtest
1084
- // Not valid for:
1085
- // - Bitcoin
1086
- let bitcoin_regtest_p2sh_address_str = "2NEb8N5B9jhPUCBchz16BB7bkJk8VCZQjf3" ;
1087
- let bitcoin_regtest_p2sh_address = Address :: new (
1088
- bitcoin_regtest_p2sh_address_str. to_string ( ) ,
1089
- Network :: Regtest ,
1090
- )
1091
- . unwrap ( ) ;
1092
- assert ! (
1093
- !bitcoin_regtest_p2sh_address. is_valid_for_network( Network :: Bitcoin ) ,
1094
- "Address should not be valid for Bitcoin"
1095
- ) ;
1096
- assert ! (
1097
- bitcoin_regtest_p2sh_address. is_valid_for_network( Network :: Testnet ) ,
1098
- "Address should be valid for Testnet"
1099
- ) ;
1100
- assert ! (
1101
- bitcoin_regtest_p2sh_address. is_valid_for_network( Network :: Regtest ) ,
1102
- "Address should be valid for Regtest"
1103
- ) ;
1104
- }
1105
-
1106
- #[ test]
1107
- fn test_to_address_data ( ) {
1108
- // P2PKH address
1109
- let p2pkh = Address :: new (
1110
- "1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2" . to_string ( ) ,
1111
- Network :: Bitcoin ,
1112
- )
1113
- . unwrap ( ) ;
1114
- let p2pkh_data = p2pkh. to_address_data ( ) ;
1115
- println ! ( "P2PKH data: {:#?}" , p2pkh_data) ;
1116
-
1117
- // P2SH address
1118
- let p2sh = Address :: new (
1119
- "3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy" . to_string ( ) ,
1120
- Network :: Bitcoin ,
1121
- )
1122
- . unwrap ( ) ;
1123
- let p2sh_data = p2sh. to_address_data ( ) ;
1124
- println ! ( "P2SH data: {:#?}" , p2sh_data) ;
1125
-
1126
- // Segwit address (P2WPKH)
1127
- let segwit = Address :: new (
1128
- "bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4" . to_string ( ) ,
1129
- Network :: Bitcoin ,
1130
- )
1131
- . unwrap ( ) ;
1132
- let segwit_data = segwit. to_address_data ( ) ;
1133
- println ! ( "Segwit data: {:#?}" , segwit_data) ;
1134
- }
1135
-
1136
- #[ test]
1137
- fn test_psbt_spend_utxo ( ) {
1138
- let psbt = Psbt :: new ( "cHNidP8BAH0CAAAAAXHl8cCbj84lm1v42e54IGI6CQru/nBXwrPE3q2fiGO4AAAAAAD9////Ar4DAAAAAAAAIgAgYw/rnGd4Bifj8s7TaMgR2tal/lq+L1jVv2Sqd1mxMbJEEQAAAAAAABYAFNVpt8vHYUPZNSF6Hu07uP1YeHts4QsAAAABALUCAAAAAAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////BAJ+CwD/////AkAlAAAAAAAAIgAgQyrnn86L9D3vDiH959KJbPudDHc/bp6nI9E5EBLQD1YAAAAAAAAAACZqJKohqe3i9hw/cdHe/T+pmd+jaVN1XGkGiXmZYrSL69g2l06M+QEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQErQCUAAAAAAAAiACBDKuefzov0Pe8OIf3n0ols+50Mdz9unqcj0TkQEtAPViICAy4V+d/Qff71zzPXxK4FWG5x+wL/Ku93y/LG5p+0rI2xSDBFAiEA9b0OdASAs0P2uhQinjN7QGP5jX/b32LcShBmny8U0RUCIBebxvCDbpchCjqLAhOMjydT80DAzokaalGzV7XVTsbiASICA1tMY+46EgxIHU18bgHnUvAAlAkMq5LfwkpOGZ97sDKRRzBEAiBpmlZwJocNEiKLxexEX0Par6UgG8a89AklTG3/z9AHlAIgQH/ybCvfKJzr2dq0+IyueDebm7FamKIJdzBYWMXRr/wBIgID+aCzK9nclwhbbN7KbIVGUQGLWZsjcaqWPxk9gFeG+FxIMEUCIQDRPBzb0i9vaUmxCcs1yz8uq4tq1mdDAYvvYn3isKEhFAIgfmeTLLzMo0mmQ23ooMnyx6iPceE8xV5CvARuJsd88tEBAQVpUiEDW0xj7joSDEgdTXxuAedS8ACUCQyrkt/CSk4Zn3uwMpEhAy4V+d/Qff71zzPXxK4FWG5x+wL/Ku93y/LG5p+0rI2xIQP5oLMr2dyXCFts3spshUZRAYtZmyNxqpY/GT2AV4b4XFOuIgYDLhX539B9/vXPM9fErgVYbnH7Av8q73fL8sbmn7SsjbEYCapBE1QAAIABAACAAAAAgAAAAAAAAAAAIgYDW0xj7joSDEgdTXxuAedS8ACUCQyrkt/CSk4Zn3uwMpEY2bvrelQAAIABAACAAAAAgAAAAAAAAAAAIgYD+aCzK9nclwhbbN7KbIVGUQGLWZsjcaqWPxk9gFeG+FwYAKVFVFQAAIABAACAAAAAgAAAAAAAAAAAAAEBaVIhA7cr8fTHOPtE+t0zM3iWJvpfPvsNaVyQ0Sar6nIe9tQXIQMm7k7OY+q+Lsge3bVACuSa9r19Js+lNuTtEhehWkpe1iECelHmzmhzDsQTDnApIcnWRz3oFR68UX1ag8jfk/SKuopTriICAnpR5s5ocw7EEw5wKSHJ1kc96BUevFF9WoPI35P0irqKGAClRVRUAACAAQAAgAAAAIABAAAAAAAAACICAybuTs5j6r4uyB7dtUAK5Jr2vX0mz6U25O0SF6FaSl7WGAmqQRNUAACAAQAAgAAAAIABAAAAAAAAACICA7cr8fTHOPtE+t0zM3iWJvpfPvsNaVyQ0Sar6nIe9tQXGNm763pUAACAAQAAgAAAAIABAAAAAAAAAAAA" . to_string ( ) )
1139
- . unwrap ( ) ;
1140
- let psbt_utxo = psbt. spend_utxo ( 0 ) ;
1141
-
1142
- println ! ( "Psbt utxo: {:?}" , psbt_utxo) ;
1143
-
1144
- assert_eq ! (
1145
- psbt_utxo,
1146
- r#"{"value":9536,"script_pubkey":"0020432ae79fce8bf43def0e21fde7d2896cfb9d0c773f6e9ea723d1391012d00f56"}"# ,
1147
- "Psbt utxo does not match the expected value"
1148
- ) ;
1149
- }
1150
- }
0 commit comments