diff --git a/Cargo.lock b/Cargo.lock index cea585d..28e3daf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -62,7 +62,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72e23f5ede99065fa6957a633498d2728d51016d61dae23b69c866112b7c61ee" dependencies = [ "amplify_num", - "bitflags 2.5.0", + "bitflags 2.6.0", "wasm-bindgen", ] @@ -205,9 +205,9 @@ checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "aws-lc-rs" -version = "1.7.2" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "474d7cec9d0a1126fad1b224b767fcbf351c23b0309bb21ec210bcfd379926a5" +checksum = "a8a47f2fb521b70c11ce7369a6c5fa4bd6af7e5d62ec06303875bafe7c6ba245" dependencies = [ "aws-lc-sys", "mirai-annotations", @@ -217,9 +217,9 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.17.0" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7505fc3cb7acbf42699a43a79dd9caa4ed9e99861dfbb837c5c0fb5a0a8d2980" +checksum = "2927c7af777b460b7ccd95f8b67acd7b4c04ec8896bf0c8e80ba30523cffc057" dependencies = [ "bindgen", "cc", @@ -269,7 +269,7 @@ version = "0.69.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cexpr", "clang-sys", "itertools", @@ -282,7 +282,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.66", + "syn 2.0.71", "which", ] @@ -316,15 +316,15 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "blake3" -version = "1.5.1" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30cca6d3674597c30ddf2c587bf8d9d65c9a84d2326d941cc79c9842dfe0ef52" +checksum = "e9ec96fe9a81b5e365f9db71fe00edc4fe4ca2cc7dcb7861f0603012a7caa210" dependencies = [ "arrayref", "arrayvec", @@ -345,8 +345,7 @@ dependencies = [ [[package]] name = "bp-consensus" version = "0.11.0-beta.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f126ed462c6b054ccd027d3ed59fdc0eed5d720cbada79e4d8b7ef8e4779d9b8" +source = "git+https://github.com/BP-WG/bp-core?branch=master#1989b57875a33243070b387158f5061e5df5be49" dependencies = [ "amplify", "chrono", @@ -394,7 +393,7 @@ dependencies = [ [[package]] name = "bp-derive" version = "0.11.0-beta.6" -source = "git+https://github.com/BP-WG/bp-std.git?branch=master#c291e0b54e21482e432f6836c02474c10d6b014e" +source = "git+https://github.com/BP-WG/bp-std?branch=master#b664d65aeec68b11b42fa55d6b82d0e66228a0be" dependencies = [ "amplify", "bitcoin_hashes", @@ -416,7 +415,7 @@ dependencies = [ "byteorder", "libc", "log", - "rustls 0.23.9", + "rustls 0.23.11", "serde", "serde_json", "sha2", @@ -442,7 +441,7 @@ dependencies = [ [[package]] name = "bp-invoice" version = "0.11.0-beta.6" -source = "git+https://github.com/BP-WG/bp-std.git?branch=master#c291e0b54e21482e432f6836c02474c10d6b014e" +source = "git+https://github.com/BP-WG/bp-std?branch=master#b664d65aeec68b11b42fa55d6b82d0e66228a0be" dependencies = [ "amplify", "bech32", @@ -471,7 +470,7 @@ dependencies = [ [[package]] name = "bp-std" version = "0.11.0-beta.6" -source = "git+https://github.com/BP-WG/bp-std.git?branch=master#c291e0b54e21482e432f6836c02474c10d6b014e" +source = "git+https://github.com/BP-WG/bp-std?branch=master#b664d65aeec68b11b42fa55d6b82d0e66228a0be" dependencies = [ "amplify", "bp-consensus", @@ -479,13 +478,14 @@ dependencies = [ "bp-invoice", "descriptors", "psbt", + "secp256k1 0.29.0", "serde", ] [[package]] name = "bp-wallet" version = "0.11.0-beta.6.1" -source = "git+https://github.com/BP-WG/bp-wallet?branch=master#b63b7ac79771d9dc79d17d9de11c9e2ef53e4eac" +source = "git+https://github.com/BP-WG/bp-wallet?branch=master#4660bf3d79aad0e4ccfdccbe5f7463447abf0eec" dependencies = [ "amplify", "base64", @@ -493,6 +493,7 @@ dependencies = [ "bp-esplora", "bp-std", "clap", + "colored", "descriptors", "env_logger", "log", @@ -500,6 +501,7 @@ dependencies = [ "serde", "serde_json", "serde_yaml", + "sha2", "shellexpand", "strict_encoding", "toml", @@ -519,13 +521,12 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "cc" -version = "1.0.99" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" +checksum = "324c74f2155653c90b04f25b2a47a8a631360cb908f92a772695f430c7e31052" dependencies = [ "jobserver", "libc", - "once_cell", ] [[package]] @@ -555,7 +556,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -571,9 +572,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.6" +version = "4.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9689a29b593160de5bc4aacab7b5d54fb52231de70122626c178e6a368994c7" +checksum = "64acc1846d54c1fe936a78dc189c34e28d3f5afc348403f28ecf53660b9b8462" dependencies = [ "clap_builder", "clap_derive", @@ -581,9 +582,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.6" +version = "4.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e5387378c84f6faa26890ebf9f0a92989f8873d4d380467bcd0d8d8620424df" +checksum = "6fb8393d67ba2e7bfaf28a23458e4e2b543cc73a99595511eb207fdb8aede942" dependencies = [ "anstream", "anstyle", @@ -593,14 +594,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.5" +version = "4.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c780290ccf4fb26629baa7a1081e68ced113f1d3ec302fa5948f1c381ebf06c6" +checksum = "2bac35c6dafb060fd4d275d9a4ffae97917c13a6327903a8be2153cd964f7085" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -624,6 +625,16 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" +[[package]] +name = "colored" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf2150cce219b664a8a70df7a1f933836724b503f8a413af9365b4dcc4d90b8" +dependencies = [ + "lazy_static", + "windows-sys 0.48.0", +] + [[package]] name = "commit_encoding_derive" version = "0.11.0-beta.5" @@ -712,9 +723,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" dependencies = [ "darling_core", "darling_macro", @@ -722,27 +733,27 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] name = "darling_macro" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -758,7 +769,7 @@ dependencies = [ [[package]] name = "descriptors" version = "0.11.0-beta.6" -source = "git+https://github.com/BP-WG/bp-std.git?branch=master#c291e0b54e21482e432f6836c02474c10d6b014e" +source = "git+https://github.com/BP-WG/bp-std?branch=master#b664d65aeec68b11b42fa55d6b82d0e66228a0be" dependencies = [ "amplify", "bp-derive", @@ -805,9 +816,9 @@ checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" [[package]] name = "either" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "env_filter" @@ -1089,9 +1100,9 @@ dependencies = [ [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "lazycell" @@ -1107,12 +1118,12 @@ checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "libloading" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" +checksum = "e310b3a6b5907f99202fcdb4960ff45b93735d7c7d96b760fcff8db2dc0e103d" dependencies = [ "cfg-if", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -1121,7 +1132,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "libc", ] @@ -1133,15 +1144,15 @@ checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "log" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "memchr" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "mime" @@ -1157,9 +1168,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" dependencies = [ "adler", ] @@ -1244,14 +1255,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" dependencies = [ "proc-macro2", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] name = "proc-macro2" -version = "1.0.85" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -1259,7 +1270,7 @@ dependencies = [ [[package]] name = "psbt" version = "0.11.0-beta.6" -source = "git+https://github.com/BP-WG/bp-std.git?branch=master#c291e0b54e21482e432f6836c02474c10d6b014e" +source = "git+https://github.com/BP-WG/bp-std?branch=master#b664d65aeec68b11b42fa55d6b82d0e66228a0be" dependencies = [ "amplify", "base64", @@ -1325,9 +1336,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.4" +version = "1.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" dependencies = [ "aho-corasick", "memchr", @@ -1337,9 +1348,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ "aho-corasick", "memchr", @@ -1348,9 +1359,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "rgb-core" @@ -1536,7 +1547,7 @@ version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "errno", "libc", "linux-raw-sys", @@ -1559,9 +1570,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.9" +version = "0.23.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a218f0f6d05669de4eabfb24f31ce802035c952429d037507b4a4a39f0e60c5b" +checksum = "4828ea528154ae444e5a642dbb7d5623354030dc9822b83fd9bb79683c7399d0" dependencies = [ "aws-lc-rs", "log", @@ -1580,9 +1591,9 @@ checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" [[package]] name = "rustls-webpki" -version = "0.102.4" +version = "0.102.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff448f7e92e913c4b7d4c6d8e4540a1724b319b4152b8aef6d4cf8339712b33e" +checksum = "f9a6fccd794a42c2c105b513a2f62bc3fd8f3ba57a4593677ceb0bd035164d78" dependencies = [ "aws-lc-rs", "ring", @@ -1667,29 +1678,29 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.203" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" +checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.203" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" +checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] name = "serde_json" -version = "1.0.117" +version = "1.0.120" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" +checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" dependencies = [ "itoa", "ryu", @@ -1717,9 +1728,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.8.1" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" +checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" dependencies = [ "base64", "chrono", @@ -1735,14 +1746,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.8.1" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2" +checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -1873,9 +1884,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "subtle" -version = "2.5.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" @@ -1890,9 +1901,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.66" +version = "2.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" +checksum = "b146dcf730474b4bcd16c311627b31ede9ab149045db4d6088b3becaea046462" dependencies = [ "proc-macro2", "quote", @@ -1901,22 +1912,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.61" +version = "1.0.62" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +checksum = "f2675633b1499176c2dff06b0856a27976a8f9d436737b4cf4f312d4d91d8bbb" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.61" +version = "1.0.62" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +checksum = "d20468752b09f49e909e55a5d338caa8bedf615594e9d80bc4c565d30faf798c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -1952,9 +1963,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -1988,9 +1999,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.14" +version = "0.22.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38" +checksum = "d59a3a72298453f564e2b111fa896f8d07fabb36f51f06d7e875fc5e0b5a3ef1" dependencies = [ "indexmap 2.2.6", "serde", @@ -2055,14 +2066,14 @@ dependencies = [ "serde_json", "socks", "url", - "webpki-roots 0.26.2", + "webpki-roots 0.26.3", ] [[package]] name = "url" -version = "2.5.0" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna", @@ -2118,7 +2129,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", "wasm-bindgen-shared", ] @@ -2152,7 +2163,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2185,7 +2196,7 @@ checksum = "b7f89739351a2e03cb94beb799d47fb2cac01759b40ec441f7de39b00cbf7ef0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] [[package]] @@ -2206,9 +2217,9 @@ checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "webpki-roots" -version = "0.26.2" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c452ad30530b54a4d8e71952716a212b08efd0f3562baa66c29a618b07da7c3" +checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd" dependencies = [ "rustls-pki-types", ] @@ -2253,7 +2264,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -2271,7 +2282,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -2291,18 +2302,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.5", - "windows_aarch64_msvc 0.52.5", - "windows_i686_gnu 0.52.5", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", "windows_i686_gnullvm", - "windows_i686_msvc 0.52.5", - "windows_x86_64_gnu 0.52.5", - "windows_x86_64_gnullvm 0.52.5", - "windows_x86_64_msvc 0.52.5", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -2313,9 +2324,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -2325,9 +2336,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -2337,15 +2348,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -2355,9 +2366,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -2367,9 +2378,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -2379,9 +2390,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -2391,9 +2402,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" @@ -2421,5 +2432,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.71", ] diff --git a/Cargo.toml b/Cargo.toml index 8c79cca..3a39532 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -95,11 +95,14 @@ mempool_blocking = ["esplora_blocking"] features = ["all"] [patch.crates-io] +bp-consensus = { git = "https://github.com/BP-WG/bp-core", branch = "master" } +bp-derive = { git = "https://github.com/BP-WG/bp-std", branch = "master" } +bp-invoice = { git = "https://github.com/BP-WG/bp-std", branch = "master" } +descriptors = { git = "https://github.com/BP-WG/bp-std", branch = "master" } +psbt = { git = "https://github.com/BP-WG/bp-std", branch = "master" } +bp-std = { git = "https://github.com/BP-WG/bp-std", branch = "master" } bp-wallet = { git = "https://github.com/BP-WG/bp-wallet", branch = "master" } rgb-core = { git = "https://github.com/RGB-WG/rgb-core", branch = "master" } +rgb-invoice = { git = "https://github.com/RGB-WG/rgb-std", branch = "master" } rgb-std = { git = "https://github.com/RGB-WG/rgb-std", branch = "master" } -bp-std = { git = "https://github.com/BP-WG/bp-std.git", branch = "master" } -bp-invoice = { git = "https://github.com/BP-WG/bp-std.git", branch = "master"} -psbt = { git = "https://github.com/BP-WG/bp-std.git", branch = "master" } -descriptors = { git = "https://github.com/BP-WG/bp-std.git", branch = "master" } rgb-interfaces = { git = "https://github.com/RGB-WG/rgb-interfaces.git", branch = "master" } diff --git a/psbt/src/lib.rs b/psbt/src/lib.rs index d2f543b..c08669c 100644 --- a/psbt/src/lib.rs +++ b/psbt/src/lib.rs @@ -117,7 +117,7 @@ impl RgbPsbt for Psbt { (Some(tapret), Some(opret)) => AnchorSet::Double { tapret, opret }, }; // TODO: Use signed transaction here! - let witness = PubWitness::with(self.to_unsigned_tx().finalize()); + let witness = PubWitness::with(self.to_unsigned_tx().into()); Ok(Fascia { witness: XPubWitness::Bitcoin(witness), anchor, diff --git a/src/descriptor.rs b/src/descriptor.rs index a101354..7e4147a 100644 --- a/src/descriptor.rs +++ b/src/descriptor.rs @@ -20,6 +20,7 @@ // limitations under the License. use std::collections::{BTreeSet, HashMap}; +use std::fmt::{self, Display, Formatter}; use std::iter; use std::str::FromStr; @@ -27,13 +28,14 @@ use amplify::Wrapper; use bp::dbc::tapret::TapretCommitment; use bp::dbc::Method; use bp::seals::txout::CloseMethod; +use bp::{LegacyPk, SigScript, Witness}; use bpstd::{ - CompressedPk, Derive, DeriveCompr, DeriveSet, DeriveXOnly, DerivedScript, Idx, IdxBase, - IndexError, IndexParseError, KeyOrigin, Keychain, NormalIndex, TapDerivation, TapScript, - TapTree, Terminal, XOnlyPk, XpubDerivable, XpubSpec, + Derive, DeriveCompr, DeriveSet, DeriveXOnly, DerivedScript, Idx, IdxBase, IndexError, + IndexParseError, KeyOrigin, Keychain, NormalIndex, TapDerivation, TapScript, TapTree, Terminal, + XOnlyPk, XpubAccount, XpubDerivable, }; use commit_verify::CommitVerify; -use descriptors::{Descriptor, SpkClass, StdDescr, TrKey, Wpkh}; +use descriptors::{Descriptor, LegacyKeySig, SpkClass, StdDescr, TaprootKeySig, TrKey, Wpkh}; use indexmap::IndexMap; #[derive(Copy, Clone, Eq, PartialEq, Debug, Display, Error)] @@ -116,15 +118,32 @@ impl From for Keychain { serde(crate = "serde_crate", rename_all = "camelCase") )] pub struct TapretKey { - pub internal_key: K, + pub tr: TrKey, // TODO: Allow multiple tweaks per index by introducing derivation using new Terminal trait pub tweaks: HashMap, } +impl Display for TapretKey { + fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { + write!(f, "tapret({},tweaks(", self.tr.as_internal_key())?; + let mut iter = self.tweaks.iter().peekable(); + while let Some((term, tweak)) = iter.next() { + if term.keychain != RgbKeychain::Tapret.into() { + write!(f, "{}/", term.keychain)?; + } + write!(f, "{}={tweak}", term.index)?; + if iter.peek().is_some() { + f.write_str(";")?; + } + } + f.write_str("))") + } +} + impl TapretKey { pub fn new_unfunded(internal_key: K) -> Self { TapretKey { - internal_key, + tr: TrKey::from(internal_key), tweaks: empty!(), } } @@ -151,7 +170,7 @@ impl Derive for TapretKey { let keychain = keychain.into(); let index = index.into(); let terminal = Terminal::new(keychain, index); - let internal_key = self.internal_key.derive(keychain, index); + let internal_key = self.tr.as_internal_key().derive(keychain, index); if keychain.into_inner() == RgbKeychain::Tapret as u8 { if let Some(tweak) = self.tweaks.get(&terminal) { let script_commitment = TapScript::commit(tweak); @@ -164,9 +183,9 @@ impl Derive for TapretKey { } impl From for TapretKey { - fn from(tr: K) -> Self { + fn from(internal_key: K) -> Self { TapretKey { - internal_key: tr, + tr: TrKey::from(internal_key), tweaks: none!(), } } @@ -175,7 +194,7 @@ impl From for TapretKey { impl From> for TapretKey { fn from(tr: TrKey) -> Self { TapretKey { - internal_key: tr.into_internal_key(), + tr, tweaks: none!(), } } @@ -186,29 +205,31 @@ impl Descriptor for TapretKey { fn keys<'a>(&'a self) -> impl Iterator where K: 'a { - iter::once(&self.internal_key) + self.tr.keys() } fn vars<'a>(&'a self) -> impl Iterator where (): 'a { - iter::empty() + self.tr.vars() } - fn xpubs(&self) -> impl Iterator { iter::once(self.internal_key.xpub_spec()) } + fn xpubs(&self) -> impl Iterator { self.tr.xpubs() } - fn compr_keyset(&self, _terminal: Terminal) -> IndexMap { + fn legacy_keyset(&self, _terminal: Terminal) -> IndexMap { IndexMap::new() } fn xonly_keyset(&self, terminal: Terminal) -> IndexMap { - let mut map = IndexMap::with_capacity(1); - let key = self.internal_key.derive(terminal.keychain, terminal.index); - map.insert( - key, - TapDerivation::with_internal_pk( - self.internal_key.xpub_spec().origin().clone(), - terminal, - ), - ); - map + self.tr.xonly_keyset(terminal) + } + + fn legacy_witness( + &self, + _keysigs: HashMap<&KeyOrigin, LegacyKeySig>, + ) -> Option<(SigScript, Witness)> { + None + } + + fn taproot_witness(&self, keysigs: HashMap<&KeyOrigin, TaprootKeySig>) -> Option { + self.tr.taproot_witness(keysigs) } } @@ -249,6 +270,20 @@ pub enum RgbDescr { TapretKey(TapretKey), } +impl Display for RgbDescr +where + S::Legacy: Display, + S::Compr: Display, + S::XOnly: Display, +{ + fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { + match self { + RgbDescr::Wpkh(d) => Display::fmt(d, f), + RgbDescr::TapretKey(d) => Display::fmt(d, f), + } + } +} + impl Derive for RgbDescr { fn default_keychain(&self) -> Keychain { match self { @@ -296,7 +331,7 @@ where Self: Derive iter::empty() } - fn xpubs(&self) -> impl Iterator { + fn xpubs(&self) -> impl Iterator { match self { RgbDescr::Wpkh(d) => d.xpubs().collect::>(), RgbDescr::TapretKey(d) => d.xpubs().collect::>(), @@ -304,10 +339,10 @@ where Self: Derive .into_iter() } - fn compr_keyset(&self, terminal: Terminal) -> IndexMap { + fn legacy_keyset(&self, terminal: Terminal) -> IndexMap { match self { - RgbDescr::Wpkh(d) => d.compr_keyset(terminal), - RgbDescr::TapretKey(d) => d.compr_keyset(terminal), + RgbDescr::Wpkh(d) => d.legacy_keyset(terminal), + RgbDescr::TapretKey(d) => d.legacy_keyset(terminal), } } @@ -317,6 +352,23 @@ where Self: Derive RgbDescr::TapretKey(d) => d.xonly_keyset(terminal), } } + + fn legacy_witness( + &self, + keysigs: HashMap<&KeyOrigin, LegacyKeySig>, + ) -> Option<(SigScript, Witness)> { + match self { + RgbDescr::Wpkh(d) => d.legacy_witness(keysigs), + RgbDescr::TapretKey(d) => d.legacy_witness(keysigs), + } + } + + fn taproot_witness(&self, keysigs: HashMap<&KeyOrigin, TaprootKeySig>) -> Option { + match self { + RgbDescr::Wpkh(d) => d.taproot_witness(keysigs), + RgbDescr::TapretKey(d) => d.taproot_witness(keysigs), + } + } } impl + DeriveCompr + DeriveXOnly> DescriptorRgb diff --git a/src/indexers/mempool_blocking.rs b/src/indexers/mempool_blocking.rs index 3a1e440..2f5ce06 100644 --- a/src/indexers/mempool_blocking.rs +++ b/src/indexers/mempool_blocking.rs @@ -48,6 +48,7 @@ impl MemPoolClient { /// /// Returns a `Result` containing the `MemPoolClient` instance if /// successful, or an `Error` if an error occurred. + #[allow(clippy::result_large_err)] pub fn new(url: &str, config: Config) -> Result { let inner = BlockingClient::from_config(url, config)?; Ok(MemPoolClient { inner }) diff --git a/src/wallet.rs b/src/wallet.rs index 9c2f169..aa8a7bc 100644 --- a/src/wallet.rs +++ b/src/wallet.rs @@ -27,6 +27,7 @@ use std::path::{Path, PathBuf}; use bpstd::XpubDerivable; #[cfg(feature = "fs")] use bpwallet::fs::Warning; +#[cfg(feature = "fs")] use bpwallet::{Wallet, WalletDescr}; use psrgbt::{Psbt, PsbtMeta}; use rgbstd::containers::Transfer; @@ -54,6 +55,7 @@ pub struct RgbWallet< { stock: Stock, wallet: W, + #[cfg(feature = "fs")] warnings: Vec, #[getter(skip)] _phantom: PhantomData, @@ -93,6 +95,7 @@ where W::Descr: DescriptorRgb Self { stock, wallet, + #[cfg(feature = "fs")] warnings: none!(), _phantom: PhantomData, }