From 255fb17bada71ec9f5d7ce9f7e21046f6782f7ed Mon Sep 17 00:00:00 2001 From: Nadav Ivgi Date: Tue, 13 Feb 2024 14:01:55 +0200 Subject: [PATCH] Update rust-elements to v0.24 --- Cargo.lock | 477 +++++++++++++++++++++++++++++---------- Cargo.toml | 4 +- src/chain.rs | 11 +- src/elements/mod.rs | 35 +++ src/elements/peg.rs | 1 - src/new_index/fetch.rs | 2 + src/new_index/mempool.rs | 8 +- src/new_index/mod.rs | 4 +- src/new_index/schema.rs | 31 ++- src/rest.rs | 10 +- src/util/script.rs | 2 + 11 files changed, 434 insertions(+), 151 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a332abc10..eb2b25dda 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -17,6 +17,17 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "aes" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + [[package]] name = "aho-corasick" version = "1.1.2" @@ -142,6 +153,12 @@ dependencies = [ "byteorder", ] +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + [[package]] name = "bech32" version = "0.8.1" @@ -150,9 +167,9 @@ checksum = "cf9ff0bbfd639f15c74af777d81383cf53efb7c93613f6cab67c6c11e05bbf8b" [[package]] name = "bech32" -version = "0.9.1" +version = "0.10.0-beta" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" +checksum = "98f7eed2b2781a6f0b5c903471d48e15f56fb4e1165df8a9a2337fd1a59d45ea" [[package]] name = "bincode" @@ -165,9 +182,9 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.59.2" +version = "0.65.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bd2a9a458e8f4304c52c43ebb0cfbd520289f8379a52e329a38afda99bf8eb8" +checksum = "cfdf7b466f9a4903edc73f95d6d2bcd5baf8ae620638762244d3f60143643cc5" dependencies = [ "bitflags 1.3.2", "cexpr", @@ -175,11 +192,13 @@ dependencies = [ "lazy_static", "lazycell", "peeking_take_while", + "prettyplease", "proc-macro2", "quote", "regex", "rustc-hash", "shlex", + "syn 2.0.48", ] [[package]] @@ -196,15 +215,25 @@ dependencies = [ [[package]] name = "bitcoin" -version = "0.30.2" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1945a5048598e4189e239d3f809b19bdad4845c4b2ba400d304d2dcf26d2c462" +checksum = "fd00f3c09b5f21fb357abe32d29946eb8bb7a0862bae62c0b5e4a692acbbe73c" dependencies = [ - "bech32 0.9.1", - "bitcoin-private", - "bitcoin_hashes 0.12.0", + "bech32 0.10.0-beta", + "bitcoin-internals", + "bitcoin_hashes 0.13.0", + "hex-conservative", "hex_lit", - "secp256k1 0.27.0", + "secp256k1 0.28.2", + "serde", +] + +[[package]] +name = "bitcoin-internals" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9425c3bf7089c983facbae04de54513cce73b41c7f9ff8c845b54e7bc64ebbfb" +dependencies = [ "serde", ] @@ -225,42 +254,57 @@ dependencies = [ [[package]] name = "bitcoin_hashes" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90064b8dee6815a6470d60bad07bbbaee885c0e12d04177138fa3291a01b7bc4" +checksum = "5d7066118b13d4b20b23645932dfb3a81ce7e29f95726c2036fa33cd7b092501" +dependencies = [ + "bitcoin-private", +] [[package]] name = "bitcoin_hashes" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d7066118b13d4b20b23645932dfb3a81ce7e29f95726c2036fa33cd7b092501" +checksum = "1930a4dabfebb8d7d9992db18ebe3ae2876f0a305fab206fd168df931ede293b" dependencies = [ - "bitcoin-private", + "bitcoin-internals", + "hex-conservative", "serde", ] [[package]] -name = "bitcoind" -version = "0.30.0" +name = "bitcoincore-rpc" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e4a98e66bb7c1f81abf4f8d992e1839fc0f9cbc627effbff122aae7d5e493a0" +checksum = "8eb70725a621848c83b3809913d5314c0d20ca84877d99dd909504b564edab00" dependencies = [ - "anyhow", - "core-rpc", + "bitcoincore-rpc-json", + "jsonrpc 0.14.1", "log", - "tempfile", - "which", + "serde", + "serde_json", +] + +[[package]] +name = "bitcoincore-rpc-json" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "856ffbee2e492c23bca715d72ea34aae80d58400f2bda26a82015d6bc2ec3662" +dependencies = [ + "bitcoin 0.31.1", + "serde", + "serde_json", ] [[package]] name = "bitcoind" -version = "0.32.0" +version = "0.34.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee93e3628c679646a9f1cb2e4c55ec10fc3d477a2a8c26dcde4267dfb2e2109a" +checksum = "f50548a349632abb9a2007d431a302bf0401a786c91f809ff31765fba87e2397" dependencies = [ "anyhow", - "bitcoin_hashes 0.12.0", - "core-rpc", + "bitcoin_hashes 0.13.0", + "bitcoincore-rpc", "flate2", "log", "minreq", @@ -282,6 +326,15 @@ version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + [[package]] name = "bumpalo" version = "3.14.0" @@ -323,11 +376,10 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.83" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +checksum = "9b918671670962b48bc23753aef0c51d072dca6f52f01f800854ada6ddb7f7d3" dependencies = [ - "jobserver", "libc", ] @@ -348,9 +400,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.33" +version = "0.4.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f13690e35a5e4ace198e7beea2895d29f3a9cc55015fcebe6336bd2010af9eb" +checksum = "5bc015644b92d5890fab7489e49d21f879d5c990186827d42ec511919404f38b" dependencies = [ "android-tzdata", "iana-time-zone", @@ -366,6 +418,16 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e4de3bc4ea267985becf712dc6d9eed8b04c953b3fcfb339ebc87acd9804901" +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + [[package]] name = "clang-sys" version = "1.7.0" @@ -398,6 +460,12 @@ version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbdcdcb6d86f71c5e97409ad45898af11cbc995b4ee8112d59095a28d376c935" +[[package]] +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + [[package]] name = "cookie" version = "0.14.4" @@ -432,36 +500,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] -name = "core-rpc" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d77079e1b71c2778d6e1daf191adadcd4ff5ec3ccad8298a79061d865b235b" -dependencies = [ - "bitcoin-private", - "core-rpc-json", - "jsonrpc 0.13.0", - "log", - "serde", - "serde_json", -] - -[[package]] -name = "core-rpc-json" -version = "0.17.0" +name = "cpufeatures" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581898ed9a83f31c64731b1d8ca2dfffcfec14edf1635afacd5234cddbde3a41" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ - "bitcoin 0.30.2", - "bitcoin-private", - "serde", - "serde_json", + "libc", ] [[package]] name = "crc32fast" -version = "1.3.2" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" dependencies = [ "cfg-if", ] @@ -500,6 +551,16 @@ version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + [[package]] name = "deranged" version = "0.3.11" @@ -509,6 +570,17 @@ dependencies = [ "powerfmt", ] +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", + "subtle", +] + [[package]] name = "dirs" version = "5.0.1" @@ -538,9 +610,9 @@ checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" [[package]] name = "either" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" [[package]] name = "electrs" @@ -550,8 +622,8 @@ dependencies = [ "arrayref", "base64 0.21.7", "bincode", - "bitcoin 0.30.2", - "bitcoind 0.32.0", + "bitcoin 0.31.1", + "bitcoind", "clap", "crossbeam-channel", "dirs", @@ -572,8 +644,7 @@ dependencies = [ "page_size", "prometheus", "rayon", - "rocksdb 0.12.4", - "rocksdb 0.17.0", + "rocksdb", "rust-crypto", "serde", "serde_derive", @@ -586,7 +657,7 @@ dependencies = [ "time 0.3.34", "tiny_http", "tokio", - "ureq 2.9.1", + "ureq 2.9.5", "url", ] @@ -621,25 +692,24 @@ dependencies = [ [[package]] name = "elements" -version = "0.23.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686e85412860d3ac25988e55da4d65541714f1318bf10fd81711e08cbfdcf5b4" +checksum = "dd6b8388053196e6b2702a45418078a654680ce9e1fd91799f51f67a40118ff5" dependencies = [ - "bitcoin 0.30.2", + "bitcoin 0.31.1", "secp256k1-zkp", "serde", "serde_json", - "slip21", ] [[package]] name = "elementsd" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e29d7e41d2344815269c7c716c89b8c34758e670e90c00982506ded5d590b402" +checksum = "3ae67bd67005d700439d49468429ea4b4648f20fafe1192e528bda1b15bf164c" dependencies = [ "bitcoin_hashes 0.12.0", - "bitcoind 0.30.0", + "bitcoind", "flate2", "minreq", "tar", @@ -787,6 +857,16 @@ version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + [[package]] name = "getrandom" version = "0.2.12" @@ -843,6 +923,15 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3011d1213f159867b13cfd6ac92d2cd5f1345762c63be3554e84092d85a50bbd" +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + [[package]] name = "home" version = "0.5.9" @@ -852,6 +941,29 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "hoot" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df22a4d90f1b0e65fe3e0d6ee6a4608cc4d81f4b2eb3e670f44bb6bde711e452" +dependencies = [ + "httparse", + "log", +] + +[[package]] +name = "hootbin" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "354e60868e49ea1a39c44b9562ad207c4259dc6eabf9863bf3b0f058c55cfdb2" +dependencies = [ + "fastrand", + "hoot", + "serde", + "serde_json", + "thiserror", +] + [[package]] name = "http" version = "0.2.11" @@ -966,6 +1078,15 @@ dependencies = [ "unicode-normalization", ] +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array", +] + [[package]] name = "is-terminal" version = "0.4.12" @@ -992,15 +1113,6 @@ version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" -[[package]] -name = "jobserver" -version = "0.1.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6" -dependencies = [ - "libc", -] - [[package]] name = "js-sys" version = "0.3.68" @@ -1023,9 +1135,9 @@ dependencies = [ [[package]] name = "jsonrpc" -version = "0.13.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd8d6b3f301ba426b30feca834a2a18d48d5b54e5065496b5c1b05537bee3639" +checksum = "8128f36b47411cd3f044be8c1f5cc0c9e24d1d1bfdc45f0a57897b32513053f2" dependencies = [ "base64 0.13.1", "serde", @@ -1083,14 +1195,29 @@ dependencies = [ [[package]] name = "librocksdb-sys" -version = "6.20.3" +version = "0.11.0+8.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c309a9d2470844aceb9a4a098cf5286154d20596868b75a6b36357d2bb9ca25d" +checksum = "d3386f101bcb4bd252d8e9d2fb41ec3b0862a15a62b478c355b2982efa469e3e" dependencies = [ "bindgen", + "bzip2-sys", "cc", "glob", "libc", + "libz-sys", + "lz4-sys", + "zstd-sys", +] + +[[package]] +name = "libz-sys" +version = "1.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037731f5d3aaa87a5675e895b63ddff1a87624bc29f77004ea829809654e48f6" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", ] [[package]] @@ -1115,6 +1242,16 @@ version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +[[package]] +name = "lz4-sys" +version = "1.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900" +dependencies = [ + "cc", + "libc", +] + [[package]] name = "matches" version = "0.1.10" @@ -1255,6 +1392,29 @@ dependencies = [ "windows-targets 0.48.5", ] +[[package]] +name = "password-hash" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" +dependencies = [ + "base64ct", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest", + "hmac", + "password-hash", + "sha2", +] + [[package]] name = "peeking_take_while" version = "0.1.2" @@ -1317,6 +1477,16 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +[[package]] +name = "prettyplease" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5" +dependencies = [ + "proc-macro2", + "syn 2.0.48", +] + [[package]] name = "proc-macro-hack" version = "0.5.20+deprecated" @@ -1558,19 +1728,9 @@ dependencies = [ [[package]] name = "rocksdb" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d65bee9fe606c76fd90d6cc33b86bdafde0981b8a6b2d190ec1267e0d065baf8" -dependencies = [ - "libc", - "librocksdb-sys", -] - -[[package]] -name = "rocksdb" -version = "0.17.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a62eca5cacf2c8261128631bed9f045598d40bfbe4b29f5163f0f802f8f44a7" +checksum = "bb6f170a4041d50a0ce04b0d2e14916d6ca863ea2e422689a5b694395d299ffe" dependencies = [ "libc", "librocksdb-sys", @@ -1721,13 +1881,13 @@ dependencies = [ [[package]] name = "secp256k1" -version = "0.27.0" +version = "0.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" +checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10" dependencies = [ - "bitcoin_hashes 0.12.0", + "bitcoin_hashes 0.13.0", "rand 0.8.5", - "secp256k1-sys 0.8.1", + "secp256k1-sys 0.9.2", "serde", ] @@ -1742,34 +1902,34 @@ dependencies = [ [[package]] name = "secp256k1-sys" -version = "0.8.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e" +checksum = "e5d1746aae42c19d583c3c1a8c646bfad910498e2051c551a7f2e3c0c9fbb7eb" dependencies = [ "cc", ] [[package]] name = "secp256k1-zkp" -version = "0.9.2" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "026efcdacb95ee6aae5cc19144dc1549973eac36a4972700c28493de1ee5d69f" +checksum = "c4e48ef9c98bfbcb98bd15693ffa19676cb3e29426b75eda8b73c05cdd7959f8" dependencies = [ "bitcoin-private", "rand 0.8.5", - "secp256k1 0.27.0", + "secp256k1 0.28.2", "secp256k1-zkp-sys", "serde", ] [[package]] name = "secp256k1-zkp-sys" -version = "0.8.1" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d03ab1ca75a18e1899e8d9b8d28b5998ae1ddcb42fec5956769718543293c723" +checksum = "b4ead52f43074bae2ddbd1e0e66e6b170135e76117f5ea9916f33d7bd0b36e29" dependencies = [ "cc", - "secp256k1-sys 0.8.1", + "secp256k1-sys 0.9.2", ] [[package]] @@ -1827,12 +1987,34 @@ dependencies = [ "sha1_smol", ] +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + [[package]] name = "sha1_smol" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + [[package]] name = "shlex" version = "1.3.0" @@ -1867,15 +2049,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "slip21" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "516f52f3cec67962a9c414130251b512f2ff47f81980411ae01b6ce540b1ca6b" -dependencies = [ - "bitcoin_hashes 0.11.0", -] - [[package]] name = "smallvec" version = "1.13.1" @@ -1976,7 +2149,7 @@ dependencies = [ "serde", "serde_derive", "serde_json", - "sha1", + "sha1 0.6.1", "syn 1.0.109", ] @@ -1992,6 +2165,12 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" +[[package]] +name = "subtle" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" + [[package]] name = "syn" version = "1.0.109" @@ -2069,18 +2248,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.56" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" +checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.56" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" +checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" dependencies = [ "proc-macro2", "quote", @@ -2262,6 +2441,12 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + [[package]] name = "unicode-bidi" version = "0.3.15" @@ -2322,11 +2507,12 @@ dependencies = [ [[package]] name = "ureq" -version = "2.9.1" +version = "2.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8cdd25c339e200129fe4de81451814e5228c9b771d57378817d6117cc2b3f97" +checksum = "0b52731d03d6bb2fd18289d4028aee361d6c28d44977846793b994b13cdcc64d" dependencies = [ "base64 0.21.7", + "hootbin", "log", "once_cell", "serde", @@ -2345,6 +2531,12 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + [[package]] name = "vec_map" version = "0.8.2" @@ -2685,14 +2877,49 @@ dependencies = [ [[package]] name = "zip" -version = "0.5.13" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93ab48844d61251bb3835145c521d88aa4031d7139e8485990f60ca911fa0815" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" dependencies = [ + "aes", "byteorder", "bzip2", + "constant_time_eq", "crc32fast", + "crossbeam-utils", "flate2", - "thiserror", - "time 0.1.45", + "hmac", + "pbkdf2", + "sha1 0.10.6", + "time 0.3.34", + "zstd", +] + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.9+zstd.1.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" +dependencies = [ + "cc", + "pkg-config", ] diff --git a/Cargo.toml b/Cargo.toml index 0fea6f9eb..761421c94 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,7 @@ bitcoin = { version = "0.31", features = [ "serde" ] } clap = "2.33.3" crossbeam-channel = "0.5.0" dirs = "5.0.1" -elements = { version = "0.23.0", features = [ "serde" ], optional = true } +elements = { version = "0.24", features = [ "serde" ], optional = true } error-chain = "0.12.4" glob = "0.3" hex = { package = "hex-conservative", version = "0.1.1" } @@ -59,7 +59,7 @@ electrum-client = { version = "0.8", optional = true } [dev-dependencies] bitcoind = { version = "0.34", features = [ "25_0" ] } -elementsd = { version = "0.8.0", features = [ "22_1_1" ] } +elementsd = { version = "0.9", features = [ "22_1_1" ] } electrumd = { version = "0.1.0", features = [ "4_1_5" ] } ureq = { version = "2.9", default-features = false, features = [ "json" ] } tempfile = "3.10" diff --git a/src/chain.rs b/src/chain.rs index 57015543a..16ebe75da 100644 --- a/src/chain.rs +++ b/src/chain.rs @@ -41,15 +41,6 @@ pub enum Network { LiquidRegtest, } -#[cfg(feature = "liquid")] -pub const LIQUID_TESTNET_PARAMS: address::AddressParams = address::AddressParams { - p2pkh_prefix: 36, - p2sh_prefix: 19, - blinded_prefix: 23, - bech_hrp: "tex", - blech_hrp: "tlq", -}; - impl Network { #[cfg(not(feature = "liquid"))] pub fn magic(self) -> u32 { @@ -80,7 +71,7 @@ impl Network { match self { Network::Liquid => &address::AddressParams::LIQUID, Network::LiquidRegtest => &address::AddressParams::ELEMENTS, - Network::LiquidTestnet => &LIQUID_TESTNET_PARAMS, + Network::LiquidTestnet => &address::AddressParams::LIQUID_TESTNET, } } diff --git a/src/elements/mod.rs b/src/elements/mod.rs index 884284708..34b08f839 100644 --- a/src/elements/mod.rs +++ b/src/elements/mod.rs @@ -60,3 +60,38 @@ impl From<&TxIn> for IssuanceValue { } } } + +// Traits to make rust-elements' types compatible with the changes made in rust-bitcoin v0.31 +// Should hopefully eventually make its way into rust-elements itself. +pub mod ebcompact { + pub trait SizeMethod { + fn total_size(&self) -> usize; + } + impl SizeMethod for elements::Block { + fn total_size(&self) -> usize { + self.size() + } + } + impl SizeMethod for elements::Transaction { + fn total_size(&self) -> usize { + self.size() + } + } + + pub trait ScriptMethods { + fn is_p2wpkh(&self) -> bool; + fn is_p2wsh(&self) -> bool; + fn is_p2tr(&self) -> bool; + } + impl ScriptMethods for elements::Script { + fn is_p2wpkh(&self) -> bool { + self.is_v0_p2wpkh() + } + fn is_p2wsh(&self) -> bool { + self.is_v0_p2wsh() + } + fn is_p2tr(&self) -> bool { + self.is_v1_p2tr() + } + } +} diff --git a/src/elements/peg.rs b/src/elements/peg.rs index 69e7ad387..4c093f5bd 100644 --- a/src/elements/peg.rs +++ b/src/elements/peg.rs @@ -36,7 +36,6 @@ impl PegoutValue { pub fn from_txout(txout: &TxOut, network: Network, parent_network: BNetwork) -> Option { let pegoutdata = get_pegout_data(txout, network, parent_network)?; - // pending https://github.com/ElementsProject/rust-elements/pull/69 is merged let scriptpubkey = pegoutdata.script_pubkey; let address = bitcoin::Address::from_script(&scriptpubkey, parent_network).ok(); diff --git a/src/new_index/fetch.rs b/src/new_index/fetch.rs index a2e1ba4cb..54369b5e5 100644 --- a/src/new_index/fetch.rs +++ b/src/new_index/fetch.rs @@ -1,5 +1,7 @@ use rayon::prelude::*; +#[cfg(feature = "liquid")] +use crate::elements::ebcompact::*; #[cfg(not(feature = "liquid"))] use bitcoin::consensus::encode::{deserialize, Decodable}; #[cfg(feature = "liquid")] diff --git a/src/new_index/mempool.rs b/src/new_index/mempool.rs index a6228c211..cfd395de9 100644 --- a/src/new_index/mempool.rs +++ b/src/new_index/mempool.rs @@ -17,8 +17,8 @@ use crate::daemon::Daemon; use crate::errors::*; use crate::metrics::{GaugeVec, HistogramOpts, HistogramVec, MetricOpts, Metrics}; use crate::new_index::{ - compute_script_hash, schema::FullHash, ChainQuery, FundingInfo, ScriptStats, SpendingInfo, - SpendingInput, TxHistoryInfo, Utxo, + compute_script_hash, schema::FullHash, ChainQuery, FundingInfo, GetAmountVal, ScriptStats, + SpendingInfo, SpendingInput, TxHistoryInfo, Utxo, }; use crate::util::fees::{make_fee_histogram, TxFeeInfo}; use crate::util::{extract_tx_prevouts, full_hash, has_prevout, is_spendable, Bytes}; @@ -380,7 +380,7 @@ impl Mempool { vin: input_index as u16, prev_txid: full_hash(&txi.previous_output.txid[..]), prev_vout: txi.previous_output.vout as u16, - value: prevout.value.to_sat(), + value: prevout.value.amount_value(), }), ) }); @@ -399,7 +399,7 @@ impl Mempool { TxHistoryInfo::Funding(FundingInfo { txid: txid_bytes, vout: index as u16, - value: txo.value.to_sat(), + value: txo.value.amount_value(), }), ) }); diff --git a/src/new_index/mod.rs b/src/new_index/mod.rs index bc16a1b5f..30c7854b1 100644 --- a/src/new_index/mod.rs +++ b/src/new_index/mod.rs @@ -10,6 +10,6 @@ pub use self::fetch::{BlockEntry, FetchFrom}; pub use self::mempool::Mempool; pub use self::query::Query; pub use self::schema::{ - compute_script_hash, parse_hash, ChainQuery, FundingInfo, Indexer, ScriptStats, SpendingInfo, - SpendingInput, Store, TxHistoryInfo, TxHistoryKey, TxHistoryRow, Utxo, + compute_script_hash, parse_hash, ChainQuery, FundingInfo, GetAmountVal, Indexer, ScriptStats, + SpendingInfo, SpendingInput, Store, TxHistoryInfo, TxHistoryKey, TxHistoryRow, Utxo, }; diff --git a/src/new_index/schema.rs b/src/new_index/schema.rs index 403ecf2db..90727c748 100644 --- a/src/new_index/schema.rs +++ b/src/new_index/schema.rs @@ -12,6 +12,7 @@ use rayon::prelude::*; use bitcoin::consensus::encode::{deserialize, serialize}; #[cfg(feature = "liquid")] use elements::{ + confidential, encode::{deserialize, serialize}, AssetId, }; @@ -112,9 +113,9 @@ pub struct Utxo { pub value: Value, #[cfg(feature = "liquid")] - pub asset: elements::confidential::Asset, + pub asset: confidential::Asset, #[cfg(feature = "liquid")] - pub nonce: elements::confidential::Nonce, + pub nonce: confidential::Nonce, #[cfg(feature = "liquid")] pub witness: elements::TxOutWitness, } @@ -1104,7 +1105,7 @@ fn index_transaction( TxHistoryInfo::Funding(FundingInfo { txid, vout: txo_index as u16, - value: txo.value.to_sat(), + value: txo.value.amount_value(), }), ); rows.push(history.into_row()); @@ -1132,7 +1133,7 @@ fn index_transaction( vin: txi_index as u16, prev_txid: full_hash(&txi.previous_output.txid[..]), prev_vout: txi.previous_output.vout as u16, - value: prev_txo.value.to_sat(), + value: prev_txo.value.amount_value(), }), ); rows.push(history.into_row()); @@ -1642,3 +1643,25 @@ fn from_utxo_cache(utxos_cache: CachedUtxoMap, chain: &ChainQuery) -> UtxoMap { }) .collect() } + +// Get the amount value as gets stored in the DB and mempool tracker. +// For bitcoin it is the Amount's inner u64, for elements it is the confidential::Value itself. +pub trait GetAmountVal { + #[cfg(not(feature = "liquid"))] + fn amount_value(self) -> u64; + #[cfg(feature = "liquid")] + fn amount_value(self) -> confidential::Value; +} + +#[cfg(not(feature = "liquid"))] +impl GetAmountVal for bitcoin::Amount { + fn amount_value(self) -> u64 { + self.to_sat() + } +} +#[cfg(feature = "liquid")] +impl GetAmountVal for confidential::Value { + fn amount_value(self) -> confidential::Value { + self + } +} diff --git a/src/rest.rs b/src/rest.rs index 4af0beea1..336c43f4a 100644 --- a/src/rest.rs +++ b/src/rest.rs @@ -26,7 +26,7 @@ use std::str::FromStr; #[cfg(feature = "liquid")] use { - crate::elements::{peg::PegoutValue, AssetSorting, IssuanceValue}, + crate::elements::{ebcompact::*, peg::PegoutValue, AssetSorting, IssuanceValue}, elements::{encode, secp256k1_zkp as zkp, AssetId}, }; @@ -159,7 +159,10 @@ impl TransactionValue { TransactionValue { txid: tx.txid(), + #[cfg(not(feature = "liquid"))] version: tx.version.0 as u32, + #[cfg(feature = "liquid")] + version: tx.version as u32, locktime: tx.lock_time.to_consensus_u32(), vin: vins, vout: vouts, @@ -284,7 +287,7 @@ struct TxOutValue { impl TxOutValue { fn new(txout: &TxOut, config: &Config) -> Self { #[cfg(not(feature = "liquid"))] - let value = txout.value; + let value = txout.value.to_sat(); #[cfg(feature = "liquid")] let value = txout.value.explicit(); @@ -330,7 +333,7 @@ impl TxOutValue { scriptpubkey_asm: script_asm, scriptpubkey_address: script_addr, scriptpubkey_type: script_type.to_string(), - value: value.to_sat(), + value, #[cfg(feature = "liquid")] valuecommitment: txout.value.commitment(), #[cfg(feature = "liquid")] @@ -1296,6 +1299,7 @@ impl From for HttpError { } } +#[cfg(not(feature = "liquid"))] impl From for HttpError { fn from(e: address::ParseError) -> Self { HttpError::from(e.to_string()) diff --git a/src/util/script.rs b/src/util/script.rs index f1834f12c..8d6d42e73 100644 --- a/src/util/script.rs +++ b/src/util/script.rs @@ -1,4 +1,6 @@ #[cfg(feature = "liquid")] +use crate::elements::ebcompact::*; +#[cfg(feature = "liquid")] use elements::address as elements_address; use crate::chain::{script, Network, Script, TxIn, TxOut};