diff --git a/.gitmodules b/.gitmodules index 76d3c5d4..98d97a17 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "proto"] path = proto url = https://github.com/LayerTwo-Labs/cusf_sidechain_proto.git +[submodule "bip300301_enforcer"] + path = bip300301_enforcer + url = https://github.com/LayerTwo-Labs/bip300301_enforcer.git diff --git a/Cargo.lock b/Cargo.lock index 610c6685..39c20a17 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,22 +2,6 @@ # It is not intended for manual editing. version = 4 -[[package]] -name = "ab_glyph" -version = "0.2.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01c0457472c38ea5bd1c3b5ada5e368271cb550be7a4ca4a0b4634e9913f6cc2" -dependencies = [ - "ab_glyph_rasterizer", - "owned_ttf_parser", -] - -[[package]] -name = "ab_glyph_rasterizer" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618" - [[package]] name = "accesskit" version = "0.24.1" @@ -27,110 +11,6 @@ dependencies = [ "uuid", ] -[[package]] -name = "accesskit_atspi_common" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e8c61bee90b42a772d39d06a740207dc71a4e780004ace1db8d99fb1baaa954" -dependencies = [ - "accesskit", - "accesskit_consumer 0.36.0", - "atspi-common", - "phf 0.13.1", - "serde", - "zvariant", -] - -[[package]] -name = "accesskit_consumer" -version = "0.35.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53cf47daed85312e763fbf85ceca136e0d7abc68e0a7e12abe11f48172bc3b10" -dependencies = [ - "accesskit", - "hashbrown 0.16.1", -] - -[[package]] -name = "accesskit_consumer" -version = "0.36.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25e0d7e25d06f4dc21d1774d67146e9e80d6789216cbd4d1e88185b0095dba60" -dependencies = [ - "accesskit", - "hashbrown 0.16.1", -] - -[[package]] -name = "accesskit_consumer" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950720ce064757a1b629caad3a408e8d2c63bb01f29b8a3ff8daa331053ffeb" -dependencies = [ - "accesskit", - "hashbrown 0.16.1", -] - -[[package]] -name = "accesskit_macos" -version = "0.26.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17cb8b66cef272d48161b02a6317cc2bdd5f98bb0a5e79c68f704a5862aa396b" -dependencies = [ - "accesskit", - "accesskit_consumer 0.37.0", - "hashbrown 0.16.1", - "objc2 0.5.2", - "objc2-app-kit 0.2.2", - "objc2-foundation 0.2.2", -] - -[[package]] -name = "accesskit_unix" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b016ca8db0ea0ea2ceff29a9d6240391492d960716aa471967c00e8cc8cb197c" -dependencies = [ - "accesskit", - "accesskit_atspi_common", - "async-channel", - "async-executor", - "async-task", - "atspi", - "futures-lite", - "futures-util", - "serde", - "zbus", -] - -[[package]] -name = "accesskit_windows" -version = "0.32.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff7009f1a532e917d66970a1e80c965140c6cfbbabbdde3d64e5431e6c78e21" -dependencies = [ - "accesskit", - "accesskit_consumer 0.35.0", - "hashbrown 0.16.1", - "static_assertions", - "windows", - "windows-core", -] - -[[package]] -name = "accesskit_winit" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fe9a94394896352cc4660ca2288bd4ef883d83238853c038b44070c8f134313" -dependencies = [ - "accesskit", - "accesskit_macos", - "accesskit_unix", - "accesskit_windows", - "raw-window-handle", - "winit", -] - [[package]] name = "adler2" version = "2.0.1" @@ -200,12 +80,6 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" -[[package]] -name = "allocator-api2" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" - [[package]] name = "android-activity" version = "0.6.0" @@ -213,11 +87,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" dependencies = [ "android-properties", - "bitflags 2.10.0", + "bitflags 2.13.1", "cc", "cesu8", - "jni", - "jni-sys", + "jni 0.21.1", + "jni-sys 0.3.0", "libc", "log", "ndk", @@ -354,15 +228,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" -[[package]] -name = "ash" -version = "0.38.0+1.3.281" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" -dependencies = [ - "libloading", -] - [[package]] name = "async-broadcast" version = "0.7.2" @@ -375,18 +240,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "async-channel" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" -dependencies = [ - "concurrent-queue", - "event-listener-strategy", - "futures-core", - "pin-project-lite", -] - [[package]] name = "async-compression" version = "0.4.42" @@ -399,20 +252,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "async-executor" -version = "1.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8" -dependencies = [ - "async-task", - "concurrent-queue", - "fastrand", - "futures-lite", - "pin-project-lite", - "slab", -] - [[package]] name = "async-io" version = "2.6.0" @@ -442,59 +281,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "async-process" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" -dependencies = [ - "async-channel", - "async-io", - "async-lock", - "async-signal", - "async-task", - "blocking", - "cfg-if", - "event-listener", - "futures-lite", - "rustix 1.1.3", -] - -[[package]] -name = "async-recursion" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "async-signal" -version = "0.2.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c" -dependencies = [ - "async-io", - "async-lock", - "atomic-waker", - "cfg-if", - "futures-core", - "futures-io", - "rustix 1.1.3", - "signal-hook-registry", - "slab", - "windows-sys 0.61.2", -] - -[[package]] -name = "async-task" -version = "4.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" - [[package]] name = "async-trait" version = "0.1.89" @@ -525,43 +311,6 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" -[[package]] -name = "atspi" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c77886257be21c9cd89a4ae7e64860c6f0eefca799bb79127913052bd0eefb3d" -dependencies = [ - "atspi-common", - "atspi-proxies", -] - -[[package]] -name = "atspi-common" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20c5617155740c98003016429ad13fe43ce7a77b007479350a9f8bf95a29f63d" -dependencies = [ - "enumflags2", - "serde", - "static_assertions", - "zbus", - "zbus-lockstep", - "zbus-lockstep-macros", - "zbus_names", - "zvariant", -] - -[[package]] -name = "atspi-proxies" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2230e48787ed3eb4088996eab66a32ca20c0b67bbd4fd6cdfe79f04f1f04c9fc" -dependencies = [ - "atspi-common", - "serde", - "zbus", -] - [[package]] name = "autocfg" version = "1.5.0" @@ -602,8 +351,6 @@ dependencies = [ "http", "http-body", "http-body-util", - "hyper", - "hyper-util", "itoa", "matchit", "memchr", @@ -747,7 +494,6 @@ dependencies = [ [[package]] name = "bip300301_enforcer_integration_tests" version = "0.3.4" -source = "git+https://github.com/LayerTwo-Labs/bip300301_enforcer?rev=1100b6085d9ed64eeaf1b57b3c44609626bd4b23#1100b6085d9ed64eeaf1b57b3c44609626bd4b23" dependencies = [ "anyhow", "bdk_wallet", @@ -764,26 +510,23 @@ dependencies = [ "futures", "hex", "http", - "indicatif", "jsonrpsee 0.26.0", "libtest-mimic", "parking_lot", "reserve-port", + "rusqlite", "serde", "serde_json", "strum 0.28.0", "temp-dir", "thiserror 2.0.18", "tokio", - "tokio-stream", "tracing", - "tracing-indicatif", ] [[package]] name = "bip300301_enforcer_lib" version = "0.3.4" -source = "git+https://github.com/LayerTwo-Labs/bip300301_enforcer?rev=1100b6085d9ed64eeaf1b57b3c44609626bd4b23#1100b6085d9ed64eeaf1b57b3c44609626bd4b23" dependencies = [ "aes-gcm", "argon2", @@ -916,12 +659,12 @@ dependencies = [ [[package]] name = "bitcoin-jsonrpsee" version = "0.1.1" -source = "git+https://github.com/LayerTwo-Labs/bitcoin-jsonrpsee.git?rev=db1fdfd5ecddfc7855cd872546b47429cb29a0bf#db1fdfd5ecddfc7855cd872546b47429cb29a0bf" +source = "git+https://github.com/LayerTwo-Labs/bitcoin-jsonrpsee.git?rev=4810db2112d1bc437b8c4b78520f79e5e9ce8630#4810db2112d1bc437b8c4b78520f79e5e9ce8630" dependencies = [ "base64 0.22.1", "bitcoin", "educe", - "hashlink 0.11.0", + "hashlink 0.12.0", "hex", "http", "jsonrpsee 0.26.0", @@ -975,9 +718,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.10.0" +version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" dependencies = [ "serde_core", ] @@ -1038,34 +781,22 @@ dependencies = [ "objc2 0.6.4", ] -[[package]] -name = "blocking" -version = "1.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" -dependencies = [ - "async-channel", - "async-task", - "futures-io", - "futures-lite", - "piper", -] - [[package]] name = "borsh" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" +checksum = "a88b7ea17d208c4193f2c1e6de3c35fe71f98c96982d5ced308bdcc749ff6e1f" dependencies = [ "borsh-derive", + "bytes", "cfg_aliases", ] [[package]] name = "borsh-derive" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c" +checksum = "d8f347189c62a579b8cd5f80714efa178f52e461dc2e6d701d264f5ff22e566c" dependencies = [ "once_cell", "proc-macro-crate", @@ -1076,38 +807,39 @@ dependencies = [ [[package]] name = "buffa" -version = "0.7.1" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec95898e2ef31d6266042f21c398fa5ff8334d14d6b2ac5fb38b55448d94f595" +checksum = "33f29a40702df4b86ccd84211bfde8cee0bce6d0811450ade4a86a7d0958a23a" dependencies = [ "base64 0.22.1", "bytes", - "compact_str", - "ecow", + "foldhash 0.1.5", "hashbrown 0.15.5", "once_cell", + "rustversion", "serde", "serde_json", - "smol_str 0.3.2", + "smoothutf8", "thiserror 2.0.18", ] [[package]] name = "buffa-descriptor" -version = "0.7.1" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f74c0bf128c53f22b0fc3c1e8e66969cd21375879061293fd4e5298e839099a9" +checksum = "57ed423c4ecec86d1500879ce42e7e5f6def01bc632985ac756c1fd723fa21fc" dependencies = [ "buffa", + "rustversion", "serde", "serde_json", ] [[package]] name = "buffa-types" -version = "0.7.1" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5103995623b8e213abfa84b89feb98a0df84514607aafd52e6add9ca53c57d2e" +checksum = "22cb54bcbf6946c58e550eeaf6209047146363dbc7cbdc87e49e67089ed2ff5f" dependencies = [ "buffa", "bytes", @@ -1124,9 +856,9 @@ checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" [[package]] name = "bytemuck" -version = "1.24.0" +version = "1.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" +checksum = "95832e849adfb21180ccb6826a99da14e5d266ae5c2e668e1602cf234f153797" dependencies = [ "bytemuck_derive", ] @@ -1169,7 +901,7 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "log", "polling", "rustix 0.38.44", @@ -1183,7 +915,7 @@ version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb9f6e1368bd4621d2c86baa7e37de77a938adf5221e5dd3d6133340101b309e" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "polling", "rustix 1.1.3", "slab", @@ -1214,15 +946,6 @@ dependencies = [ "wayland-client", ] -[[package]] -name = "castaway" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a" -dependencies = [ - "rustversion", -] - [[package]] name = "cc" version = "1.2.54" @@ -1361,16 +1084,14 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af491d569909a7e4dee0ad7db7f5341fef5c614d5b8ec8cf765732aba3cff681" dependencies = [ - "serde", - "termcolor", "unicode-width 0.2.2", ] [[package]] name = "color" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18ef4657441fb193b65f34dc39b3781f0dfec23d3bd94d0eeb4e88cde421edb" +checksum = "2ec7c5eb7a16992b1904d76c517d170ab353b0e0b3d5a0c81a8a0cd1037893cf" dependencies = [ "bytemuck", ] @@ -1391,21 +1112,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "compact_str" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dfdd1c2274d9aa354115b09dc9a901d6c5576818cdf70d14cae2bdb47df00ab" -dependencies = [ - "castaway", - "cfg-if", - "itoa", - "rustversion", - "ryu", - "serde", - "static_assertions", -] - [[package]] name = "compression-codecs" version = "0.4.38" @@ -1436,13 +1142,12 @@ dependencies = [ [[package]] name = "connectrpc" -version = "0.7.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "003fac88ace432fd8e6adbe13da8b20e90613b89e70c72186c505ad1bea307b2" +checksum = "e4d1bbfc95ed1f4f31a027f5b97ff981be2617bc8a5c800fd6fcc701867bb97f" dependencies = [ "async-compression", "async-trait", - "axum", "base64 0.22.1", "buffa", "bytes", @@ -1453,7 +1158,6 @@ dependencies = [ "http-body-util", "hyper", "hyper-util", - "libc", "percent-encoding", "pin-project", "serde", @@ -1462,7 +1166,6 @@ dependencies = [ "tokio", "tokio-util", "tower", - "tower-http", "tracing", "wasm-bindgen-futures", "zstd", @@ -1692,8 +1395,8 @@ dependencies = [ [[package]] name = "cusf-enforcer-mempool" -version = "0.3.0" -source = "git+https://github.com/LayerTwo-Labs/cusf-enforcer-mempool.git?rev=e6c0ca5620c926c8b3a1df67ac83c45ce9cb4acd#e6c0ca5620c926c8b3a1df67ac83c45ce9cb4acd" +version = "0.4.0" +source = "git+https://github.com/LayerTwo-Labs/cusf-enforcer-mempool.git?rev=cbf0f2057f311f936c8e5e15520da3b4193feb51#cbf0f2057f311f936c8e5e15520da3b4193feb51" dependencies = [ "anyhow", "async-trait", @@ -1703,14 +1406,14 @@ dependencies = [ "educe", "either", "futures", - "hashlink 0.11.0", + "hashlink 0.12.0", "imbl", "indexmap 2.14.0", "jsonrpsee 0.26.0", - "lending-iterator", + "lender", "nonempty 0.12.0", "parking_lot", - "polonius-the-crab 0.5.0", + "polonius-the-crab", "thiserror 2.0.18", "tokio", "tokio-util", @@ -1848,7 +1551,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "objc2 0.6.4", ] @@ -1899,7 +1602,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "415b6ec780d34dcf624666747194393603d0373b7141eef01d12ee58881507d9" dependencies = [ - "phf 0.11.3", + "phf", ] [[package]] @@ -1922,23 +1625,14 @@ checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" [[package]] name = "ecolor" -version = "0.34.3" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a05fbfa222ffb51989d5ccf33e5f7aebfcf96c5023413856b0c3618a7f79896e" +checksum = "6758be723a3f298bbfda4db75748bc2ba0abafe096b6383c7c32da264764fbc3" dependencies = [ "bytemuck", "emath", ] -[[package]] -name = "ecow" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78e4f79b296fbaab6ce2e22d52cb4c7f010fe0ebe7a32e34fa25885fd797bd02" -dependencies = [ - "serde", -] - [[package]] name = "ed25519" version = "2.2.3" @@ -1992,9 +1686,9 @@ dependencies = [ [[package]] name = "eframe" -version = "0.34.3" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f98fe83b2589105b69dd25ca1e0fa2135a6e864d502fd8e08978f937e128cfef" +checksum = "8dc8234e2f681b2afd2b2e8c332fa614de2fddbdcb28d0acf5c420449682ea90" dependencies = [ "ahash", "bytemuck", @@ -2003,6 +1697,7 @@ dependencies = [ "egui-wgpu", "egui-winit", "egui_glow", + "glow", "glutin", "glutin-winit", "image", @@ -2013,7 +1708,6 @@ dependencies = [ "objc2-foundation 0.3.2", "parking_lot", "percent-encoding", - "pollster", "profiling", "raw-window-handle", "static_assertions", @@ -2021,22 +1715,22 @@ dependencies = [ "wasm-bindgen-futures", "web-sys", "web-time", - "wgpu", "windows-sys 0.61.2", "winit", ] [[package]] name = "egui" -version = "0.34.3" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42112be0ae157289312b92b3dfaf20e911b5a3c4c65d4aab0e7c47fbc0ce16e3" +checksum = "2796c98d50b79631281d516343a6f6e93c0666462ca36e2c93b39f25d7793325" dependencies = [ "accesskit", "ahash", - "bitflags 2.10.0", + "bitflags 2.13.1", "emath", "epaint", + "itertools 0.14.0", "log", "nohash-hasher", "profiling", @@ -2046,9 +1740,9 @@ dependencies = [ [[package]] name = "egui-wgpu" -version = "0.34.3" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f0c0559ac5598a1b887a6206dccbab7e3e6246c57cb00ae287262bd44776c9c" +checksum = "d2e6cfac0725563555fa4f91e9f799b9d7c6c5dd831fca6abc8234afc64b7a34" dependencies = [ "ahash", "bytemuck", @@ -2066,11 +1760,10 @@ dependencies = [ [[package]] name = "egui-winit" -version = "0.34.3" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "967c5b323625d46d46a59b5daba3fef742248d27693cc18972458619858c4239" +checksum = "9ea6bf3608db949588b95b8b341ee358d0c3f95cf4dc3f53d8d76717edee87db" dependencies = [ - "accesskit_winit", "arboard", "bytemuck", "egui", @@ -2088,9 +1781,9 @@ dependencies = [ [[package]] name = "egui_glow" -version = "0.34.3" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b652957fa7e1ab01e8fecbfbf4e35f6e43a53fa98af8a562b50d5403cd44b9" +checksum = "52274b9bfb8d8e252cd0f00c9f6214f360d75a0962baa77a2d62ddb002fe99d4" dependencies = [ "bytemuck", "egui", @@ -2098,8 +1791,6 @@ dependencies = [ "log", "memoffset", "profiling", - "wasm-bindgen", - "web-sys", "winit", ] @@ -2129,9 +1820,9 @@ dependencies = [ [[package]] name = "emath" -version = "0.34.3" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b53f0d33a479321da6b0caa71366c9f67e8a2c149762d90bdc0d16e601ee8ecb" +checksum = "cd4ec073c9898516584d8c6cfdcee95b530b3d941cd5031ef4050aa36812308b" dependencies = [ "bytemuck", ] @@ -2142,12 +1833,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" -[[package]] -name = "endi" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66b7e2430c6dff6a955451e2cfc438f09cea1965a9d6f87f7e3b90decc014099" - [[package]] name = "enum-ordinalize" version = "4.3.2" @@ -2168,39 +1853,18 @@ dependencies = [ "syn 2.0.117", ] -[[package]] -name = "enumflags2" -version = "0.7.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" -dependencies = [ - "enumflags2_derive", - "serde", -] - -[[package]] -name = "enumflags2_derive" -version = "0.7.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - [[package]] name = "epaint" -version = "0.34.3" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6675898a291ec212fc3df04f537d177fce8496120244590e6359dcaa4c25da79" +checksum = "4e60a8888b51da911df23918fd7301359b1d43a406a0ff3b8863af093dd7fc6c" dependencies = [ "ahash", "bytemuck", "ecolor", "emath", - "epaint_default_fonts", "font-types", + "harfrust", "log", "nohash-hasher", "parking_lot", @@ -2208,15 +1872,11 @@ dependencies = [ "self_cell", "skrifa", "smallvec", + "unicode-general-category", + "unicode-segmentation", "vello_cpu", ] -[[package]] -name = "epaint_default_fonts" -version = "0.34.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8970033a4282a7bcf899b38b5ed3a58b732fe093d03785d58648515d8d309da" - [[package]] name = "equivalent" version = "1.0.2" @@ -2349,35 +2009,6 @@ dependencies = [ "syn 2.0.117", ] -[[package]] -name = "ext-trait" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d772df1c1a777963712fb68e014235e80863d6a91a85c4e06ba2d16243a310e5" -dependencies = [ - "ext-trait-proc_macros", -] - -[[package]] -name = "ext-trait-proc_macros" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ab7934152eaf26aa5aa9f7371408ad5af4c31357073c9e84c3b9d7f11ad639a" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "extension-traits" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a296e5a895621edf9fa8329c83aa1cb69a964643e36cf54d8d7a69b789089537" -dependencies = [ - "ext-trait", -] - [[package]] name = "fallible-iterator" version = "0.3.0" @@ -2439,12 +2070,9 @@ dependencies = [ [[package]] name = "fearless_simd" -version = "0.3.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fb2907d1f08b2b316b9223ced5b0e89d87028ba8deae9764741dba8ff7f3903" -dependencies = [ - "bytemuck", -] +checksum = "b97b65636e5b9ef369943878ac74335ba1c55c1cb6adbf1e2c293c624248d693" [[package]] name = "fiat-crypto" @@ -2642,10 +2270,7 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" dependencies = [ - "fastrand", "futures-core", - "futures-io", - "parking", "pin-project-lite", ] @@ -2781,6 +2406,22 @@ dependencies = [ "xml-rs", ] +[[package]] +name = "glifo" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d99fc21d493812643aae86d53b7bbd02f376434a90317e8a790bc209fdd6605e" +dependencies = [ + "bytemuck", + "foldhash 0.2.0", + "hashbrown 0.17.1", + "log", + "peniko", + "skrifa", + "smallvec", + "vello_common", +] + [[package]] name = "gloo-net" version = "0.6.0" @@ -2845,7 +2486,7 @@ version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12124de845cacfebedff80e877bb37b5b75c34c5a4c89e47e1cdd67fb6041325" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "cfg_aliases", "cgl", "dispatch2", @@ -2927,37 +2568,12 @@ dependencies = [ ] [[package]] -name = "gpu-allocator" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51255ea7cfaadb6c5f1528d43e92a82acb2b96c43365989a28b2d44ee38f8795" -dependencies = [ - "ash", - "hashbrown 0.16.1", - "log", - "presser", - "thiserror 2.0.18", - "windows", -] - -[[package]] -name = "gpu-descriptor" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" -dependencies = [ - "bitflags 2.10.0", - "gpu-descriptor-types", - "hashbrown 0.15.5", -] - -[[package]] -name = "gpu-descriptor-types" -version = "0.2.0" +name = "guillotiere" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" +checksum = "6b17e70c989c36bad147b27a58d148c0741c51448aa5653436547323e524d0ab" dependencies = [ - "bitflags 2.10.0", + "euclid", ] [[package]] @@ -2985,10 +2601,22 @@ version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" dependencies = [ - "cfg-if", - "crunchy", - "num-traits", - "zerocopy", + "cfg-if", + "crunchy", + "num-traits", + "zerocopy", +] + +[[package]] +name = "harfrust" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0431e8e389aa0f1e72bb9d1c2db8957a1a7a3580e8ed97db819c14837aac9b3e" +dependencies = [ + "bitflags 2.13.1", + "bytemuck", + "read-fonts", + "smallvec", ] [[package]] @@ -3023,8 +2651,6 @@ version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ - "allocator-api2", - "equivalent", "foldhash 0.2.0", ] @@ -3056,16 +2682,6 @@ dependencies = [ "serde", ] -[[package]] -name = "hashlink" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea0b22561a9c04a7cb1a302c013e0259cd3b4bb619f145b32f72b8b4bcbed230" -dependencies = [ - "hashbrown 0.16.1", - "serde", -] - [[package]] name = "hashlink" version = "0.12.0" @@ -3094,7 +2710,7 @@ version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a56c94661ddfb51aa9cdfbf102cfcc340aa69267f95ebccc4af08d7c530d393" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "byteorder", "heed-traits", "heed-types", @@ -3177,7 +2793,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e690f8474c6c5d8ff99656fcbc195a215acc3949481a8b0b3351c838972dc776" dependencies = [ - "macro_rules_attribute 0.2.2", + "macro_rules_attribute", "never-say-never", "paste", ] @@ -3535,7 +3151,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25470f23803092da7d239834776d653104d551bc4d7eacaf31e6837854b8e9eb" dependencies = [ "console", - "futures-core", "portable-atomic", "unicode-width 0.2.2", "unit-prefix", @@ -3635,19 +3250,68 @@ dependencies = [ "cesu8", "cfg-if", "combine", - "jni-sys", + "jni-sys 0.3.0", "log", "thiserror 1.0.69", "walkdir", "windows-sys 0.45.0", ] +[[package]] +name = "jni" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498" +dependencies = [ + "cfg-if", + "combine", + "jni-macros", + "jni-sys 0.4.1", + "log", + "simd_cesu8", + "thiserror 2.0.18", + "walkdir", + "windows-link", +] + +[[package]] +name = "jni-macros" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "simd_cesu8", + "syn 2.0.117", +] + [[package]] name = "jni-sys" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" +[[package]] +name = "jni-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn 2.0.117", +] + [[package]] name = "jobserver" version = "0.1.34" @@ -4021,17 +3685,6 @@ dependencies = [ "cpufeatures 0.2.17", ] -[[package]] -name = "khronos-egl" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" -dependencies = [ - "libc", - "libloading", - "pkg-config", -] - [[package]] name = "khronos_api" version = "3.1.0" @@ -4084,28 +3737,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" [[package]] -name = "lending-iterator" -version = "0.1.7" +name = "lender" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc07588c853b50689205fb5c00498aa681d89828e0ce8cbd965ebc7a5d8ae260" +checksum = "6e306e6c6b4be049e429a93d121609257648ea8ce31d8d57ede117b85646ecca" dependencies = [ - "extension-traits", - "lending-iterator-proc_macros", - "macro_rules_attribute 0.1.3", - "never-say-never", - "nougat", - "polonius-the-crab 0.2.1", + "aliasable", + "fallible-iterator", + "lender-derive", + "maybe-dangling", + "stable_try_trait_v2", ] [[package]] -name = "lending-iterator-proc_macros" -version = "0.1.7" +name = "lender-derive" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5445dd1c0deb1e97b8a16561d17fc686ca83e8411128fb036e9668a72d51b1d" +checksum = "d074a297c82222d442171bad4f392fef93d35fb31e24a115f605a0c907ce0af9" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.117", ] [[package]] @@ -4146,7 +3798,7 @@ version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "libc", "redox_syscall 0.7.0", ] @@ -4235,9 +3887,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "logos" @@ -4279,32 +3931,16 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" -[[package]] -name = "macro_rules_attribute" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf0c9b980bf4f3a37fd7b1c066941dd1b1d0152ce6ee6e8fe8c49b9f6810d862" -dependencies = [ - "macro_rules_attribute-proc_macro 0.1.3", - "paste", -] - [[package]] name = "macro_rules_attribute" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "65049d7923698040cd0b1ddcced9b0eb14dd22c5f86ae59c3740eab64a676520" dependencies = [ - "macro_rules_attribute-proc_macro 0.2.2", + "macro_rules_attribute-proc_macro", "paste", ] -[[package]] -name = "macro_rules_attribute-proc_macro" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58093314a45e00c77d5c508f76e77c3396afbbc0d01506e7fae47b018bac2b1d" - [[package]] name = "macro_rules_attribute-proc_macro" version = "0.2.2" @@ -4326,6 +3962,12 @@ version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" +[[package]] +name = "maybe-dangling" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59dbb09ed53f8e4f314e353dc6c1853ae5b4c480a668a422657804a544ea9f65" + [[package]] name = "memchr" version = "2.7.6" @@ -4480,13 +4122,13 @@ checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084" [[package]] name = "naga" -version = "29.0.3" +version = "29.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd91265cc2454558f659b3b4b9640f0ddb8cc6521277f166b8a8c181c898079" +checksum = "b2bf919621e7975acb27d881bae2fb993e0d45c8e0446e85e6272971e00dc8df" dependencies = [ "arrayvec", "bit-set", - "bitflags 2.10.0", + "bitflags 2.13.1", "cfg-if", "cfg_aliases", "codespan-reporting", @@ -4499,7 +4141,6 @@ dependencies = [ "num-traits", "once_cell", "rustc-hash 1.1.0", - "spirv", "thiserror 2.0.18", "unicode-ident", ] @@ -4510,8 +4151,8 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 2.10.0", - "jni-sys", + "bitflags 2.13.1", + "jni-sys 0.3.0", "log", "ndk-sys", "num_enum", @@ -4531,7 +4172,7 @@ version = "0.6.0+11769913" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" dependencies = [ - "jni-sys", + "jni-sys 0.3.0", ] [[package]] @@ -4582,27 +4223,6 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38bf9645c8b145698bb0b18a4637dcacbc421ea49bef2317e4fd8065a387cf21" -[[package]] -name = "nougat" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b57b9ced431322f054fc673f1d3c7fa52d80efd9df74ad2fc759f044742510" -dependencies = [ - "macro_rules_attribute 0.1.3", - "nougat-proc_macros", -] - -[[package]] -name = "nougat-proc_macros" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c84f77a45e99a2f9b492695d99e1c23844619caa5f3e57647cffacad773ca257" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "nu-ansi-term" version = "0.50.3" @@ -4681,14 +4301,14 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "block2 0.5.1", "libc", "objc2 0.5.2", "objc2-core-data", "objc2-core-image", "objc2-foundation 0.2.2", - "objc2-quartz-core 0.2.2", + "objc2-quartz-core", ] [[package]] @@ -4697,7 +4317,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "objc2 0.6.4", "objc2-core-foundation", "objc2-core-graphics", @@ -4710,7 +4330,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "block2 0.5.1", "objc2 0.5.2", "objc2-core-location", @@ -4734,7 +4354,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -4746,7 +4366,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "dispatch2", "objc2 0.6.4", ] @@ -4757,7 +4377,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "dispatch2", "objc2 0.6.4", "objc2-core-foundation", @@ -4773,7 +4393,7 @@ dependencies = [ "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", - "objc2-metal 0.2.2", + "objc2-metal", ] [[package]] @@ -4800,7 +4420,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "block2 0.5.1", "dispatch", "libc", @@ -4813,7 +4433,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "block2 0.6.2", "objc2 0.6.4", "objc2-core-foundation", @@ -4825,7 +4445,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "objc2 0.6.4", "objc2-core-foundation", ] @@ -4848,48 +4468,23 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", ] -[[package]] -name = "objc2-metal" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0125f776a10d00af4152d74616409f0d4a2053a6f57fa5b7d6aa2854ac04794" -dependencies = [ - "bitflags 2.10.0", - "block2 0.6.2", - "objc2 0.6.4", - "objc2-foundation 0.3.2", -] - [[package]] name = "objc2-quartz-core" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", - "objc2-metal 0.2.2", -] - -[[package]] -name = "objc2-quartz-core" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" -dependencies = [ - "bitflags 2.10.0", - "objc2 0.6.4", - "objc2-core-foundation", - "objc2-foundation 0.3.2", - "objc2-metal 0.3.2", + "objc2-metal", ] [[package]] @@ -4908,7 +4503,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "block2 0.5.1", "objc2 0.5.2", "objc2-cloud-kit", @@ -4917,7 +4512,7 @@ dependencies = [ "objc2-core-location", "objc2-foundation 0.2.2", "objc2-link-presentation", - "objc2-quartz-core 0.2.2", + "objc2-quartz-core", "objc2-symbols", "objc2-uniform-type-identifiers", "objc2-user-notifications", @@ -4929,7 +4524,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "objc2 0.6.4", "objc2-core-foundation", "objc2-foundation 0.3.2", @@ -4952,7 +4547,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "block2 0.5.1", "objc2 0.5.2", "objc2-core-location", @@ -4983,7 +4578,7 @@ version = "0.10.80" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a45fa2aa886c42762255da344f0a0d313e254066c46aad76f300c3d3da62d967" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "cfg-if", "foreign-types 0.3.2", "libc", @@ -5036,25 +4631,6 @@ dependencies = [ "libredox", ] -[[package]] -name = "ordered-float" -version = "4.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" -dependencies = [ - "num-traits", -] - -[[package]] -name = "ordered-stream" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" -dependencies = [ - "futures-core", - "pin-project-lite", -] - [[package]] name = "ordermap" version = "1.2.0" @@ -5089,15 +4665,6 @@ dependencies = [ "syn 2.0.117", ] -[[package]] -name = "owned_ttf_parser" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36820e9051aca1014ddc75770aab4d68bc1e9e632f0f5627c4086bc216fb583b" -dependencies = [ - "ttf-parser", -] - [[package]] name = "page_size" version = "0.6.0" @@ -5176,9 +4743,9 @@ dependencies = [ [[package]] name = "peniko" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2b6aadb221872732e87d465213e9be5af2849b0e8cc5300a8ba98fffa2e00a" +checksum = "839c8299360d2e998bdb106dc0a6cd71dcc5f4df51df1b620361bf50e283cca6" dependencies = [ "bytemuck", "color", @@ -5210,19 +4777,8 @@ version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ - "phf_macros 0.11.3", - "phf_shared 0.11.3", -] - -[[package]] -name = "phf" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" -dependencies = [ - "phf_macros 0.13.1", - "phf_shared 0.13.1", - "serde", + "phf_macros", + "phf_shared", ] [[package]] @@ -5231,41 +4787,18 @@ version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ - "phf_shared 0.11.3", + "phf_shared", "rand 0.8.6", ] -[[package]] -name = "phf_generator" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" -dependencies = [ - "fastrand", - "phf_shared 0.13.1", -] - [[package]] name = "phf_macros" version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" dependencies = [ - "phf_generator 0.11.3", - "phf_shared 0.11.3", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "phf_macros" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" -dependencies = [ - "phf_generator 0.13.1", - "phf_shared 0.13.1", + "phf_generator", + "phf_shared", "proc-macro2", "quote", "syn 2.0.117", @@ -5280,15 +4813,6 @@ dependencies = [ "siphasher", ] -[[package]] -name = "phf_shared" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" -dependencies = [ - "siphasher", -] - [[package]] name = "pin-project" version = "1.1.10" @@ -5321,17 +4845,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" -[[package]] -name = "piper" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" -dependencies = [ - "atomic-waker", - "fastrand", - "futures-io", -] - [[package]] name = "pkcs8" version = "0.10.2" @@ -5354,7 +4867,7 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "crc32fast", "fdeflate", "flate2", @@ -5386,18 +4899,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "pollster" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3" - -[[package]] -name = "polonius-the-crab" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2a69ee997a6282f8462abf1e0d8c38c965e968799e912b3bed8c9e8a28c2f9f" - [[package]] name = "polonius-the-crab" version = "0.5.0" @@ -5468,12 +4969,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "presser" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" - [[package]] name = "prettyplease" version = "0.2.37" @@ -5559,7 +5054,7 @@ version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "343d3bd7056eda839b03204e68deff7d1b13aba7af2b2fd16890697274262ee7" dependencies = [ - "heck 0.5.0", + "heck 0.4.1", "itertools 0.14.0", "log", "multimap", @@ -5641,7 +5136,7 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e8bbe1a966bd2f362681a44f6edce3c2310ac21e4d5067a6e7ec396297a6ea0" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "memchr", "unicase", ] @@ -5687,9 +5182,9 @@ checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" [[package]] name = "quick-xml" -version = "0.39.4" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdcc8dd4e2f670d309a5f0e83fe36dfdc05af317008fea29144da1a2ac858e5e" +checksum = "e660451e55124f798a69a5af3f49ccfbefbd41910eefd25caf2393e1f3473ec1" dependencies = [ "memchr", ] @@ -5739,16 +5234,16 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.14" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +checksum = "35a133f956daabe89a61a685c2649f13d82d5aa4bd5d12d1277e1072a21c0694" dependencies = [ "cfg_aliases", "libc", "once_cell", "socket2", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -5857,19 +5352,13 @@ dependencies = [ "rand_core 0.9.5", ] -[[package]] -name = "range-alloc" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca45419789ae5a7899559e9512e58ca889e41f04f1f2445e9f4b290ceccd1d08" - [[package]] name = "raw-cpuid" version = "11.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", ] [[package]] @@ -5878,18 +5367,6 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" -[[package]] -name = "raw-window-metal" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40d213455a5f1dc59214213c7330e074ddf8114c9a42411eb890c767357ce135" -dependencies = [ - "objc2 0.6.4", - "objc2-core-foundation", - "objc2-foundation 0.3.2", - "objc2-quartz-core 0.3.2", -] - [[package]] name = "rayon" version = "1.11.0" @@ -5925,9 +5402,9 @@ dependencies = [ [[package]] name = "read-fonts" -version = "0.37.0" +version = "0.39.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b634fabf032fab15307ffd272149b622260f55974d9fad689292a5d33df02e5" +checksum = "c4ed38b89c2c77ff968c524145ad65fb010f38af5c7a224b53b81d47ac2daa81" dependencies = [ "bytemuck", "font-types", @@ -5948,7 +5425,7 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", ] [[package]] @@ -5957,7 +5434,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49f3fe0889e69e2ae9e41f4d6c4c0181701d00e4697b356fb1f74173a5e0ee27" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", ] [[package]] @@ -6130,7 +5607,7 @@ version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b838eba278d213a8beaf485bd313fd580ca4505a00d5871caeb1457c55322cae" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "fallible-iterator", "fallible-streaming-iterator", "hashlink 0.9.1", @@ -6175,7 +5652,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "errno 0.3.14", "libc", "linux-raw-sys 0.4.15", @@ -6188,7 +5665,7 @@ version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "errno 0.3.14", "libc", "linux-raw-sys 0.11.0", @@ -6241,7 +5718,7 @@ checksum = "19787cda76408ec5404443dc8b31795c87cd8fec49762dc75fa727740d34acc1" dependencies = [ "core-foundation 0.10.1", "core-foundation-sys", - "jni", + "jni 0.21.1", "log", "once_cell", "rustls", @@ -6262,7 +5739,7 @@ checksum = "1d99feebc72bae7ab76ba994bb5e121b8d83d910ca40b36e0921f53becc41784" dependencies = [ "core-foundation 0.10.1", "core-foundation-sys", - "jni", + "jni 0.21.1", "log", "once_cell", "rustls", @@ -6408,19 +5885,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" -[[package]] -name = "sctk-adwaita" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" -dependencies = [ - "ab_glyph", - "log", - "memmap2", - "smithay-client-toolkit 0.19.2", - "tiny-skia", -] - [[package]] name = "sdd" version = "4.8.6" @@ -6457,7 +5921,7 @@ version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -6550,17 +6014,6 @@ dependencies = [ "serde_core", ] -[[package]] -name = "serde_repr" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -6647,24 +6100,40 @@ version = "1.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" dependencies = [ - "errno 0.3.14", + "errno 0.2.8", "libc", ] [[package]] -name = "signature" -version = "2.2.0" +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "rand_core 0.6.4", +] + +[[package]] +name = "simd-adler32" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" + +[[package]] +name = "simd_cesu8" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +checksum = "11031e251abf8611c80f460e19dbdeb54a66db918e49c65a7065b46ac7aec520" dependencies = [ - "rand_core 0.6.4", + "rustc_version", + "simdutf8", ] [[package]] -name = "simd-adler32" -version = "0.3.8" +name = "simdutf8" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] name = "siphasher" @@ -6674,9 +6143,9 @@ checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" [[package]] name = "skrifa" -version = "0.40.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fbdfe3d2475fbd7ddd1f3e5cf8288a30eb3e5f95832829570cd88115a7434ac" +checksum = "0c34617370ae968efb7161bb2beb517d9084659aae19e24b89e3db25b46e4564" dependencies = [ "bytemuck", "read-fonts", @@ -6709,7 +6178,7 @@ version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "calloop 0.13.0", "calloop-wayland-source 0.3.0", "cursor-icon", @@ -6734,7 +6203,7 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0512da38f5e2b31201a93524adb8d3136276fa4fe4aafab4e1f727a82b534cc0" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "calloop 0.14.3", "calloop-wayland-source 0.4.1", "cursor-icon", @@ -6776,13 +6245,12 @@ dependencies = [ ] [[package]] -name = "smol_str" -version = "0.3.2" +name = "smoothutf8" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9676b89cd56310a87b93dec47b11af744f34d5fc9f367b829474eec0a891350d" +checksum = "36358427d32ecdb1624616deed99eccfef0a167fe5bf40ddb51efe6980bc1ec8" dependencies = [ - "borsh", - "serde", + "simdutf8", ] [[package]] @@ -6843,15 +6311,6 @@ dependencies = [ "lock_api", ] -[[package]] -name = "spirv" -version = "0.4.0+sdk-1.4.341.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9571ea910ebd84c86af4b3ed27f9dbdc6ad06f17c5f96146b2b671e2976744f" -dependencies = [ - "bitflags 2.10.0", -] - [[package]] name = "spki" version = "0.7.3" @@ -6869,16 +6328,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] -name = "static_assertions" -version = "1.1.0" +name = "stable_try_trait_v2" +version = "1.75.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +checksum = "1c4e48411f4db8ccca0470bfb67e3bb821af4227d455aa147917d8d109be0d13" [[package]] -name = "strict-num" -version = "0.1.1" +name = "static_assertions" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "strsim" @@ -6941,7 +6400,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", - "quote", "unicode-ident", ] @@ -7003,15 +6461,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - [[package]] name = "thiserror" version = "1.0.69" @@ -7063,7 +6512,7 @@ dependencies = [ [[package]] name = "thunder" -version = "0.16.1" +version = "0.17.0" dependencies = [ "anyhow", "async-lock", @@ -7120,7 +6569,7 @@ dependencies = [ [[package]] name = "thunder_app" -version = "0.16.1" +version = "0.17.0" dependencies = [ "anyhow", "bincode", @@ -7162,7 +6611,7 @@ dependencies = [ [[package]] name = "thunder_app_cli" -version = "0.16.1" +version = "0.17.0" dependencies = [ "anyhow", "bitcoin", @@ -7184,7 +6633,7 @@ dependencies = [ [[package]] name = "thunder_app_rpc_api" -version = "0.16.1" +version = "0.17.0" dependencies = [ "bitcoin", "jsonrpsee 0.25.1", @@ -7197,7 +6646,7 @@ dependencies = [ [[package]] name = "thunder_integration_tests" -version = "0.16.1" +version = "0.17.0" dependencies = [ "anyhow", "bip300301_enforcer_integration_tests", @@ -7280,31 +6729,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "tiny-skia" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" -dependencies = [ - "arrayref", - "arrayvec", - "bytemuck", - "cfg-if", - "log", - "tiny-skia-path", -] - -[[package]] -name = "tiny-skia-path" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" -dependencies = [ - "arrayref", - "bytemuck", - "strict-num", -] - [[package]] name = "tinystr" version = "0.8.2" @@ -7542,12 +6966,11 @@ version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "bytes", "futures-util", "http", "http-body", - "http-body-util", "iri-string", "pin-project-lite", "tower", @@ -7684,12 +7107,6 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" -[[package]] -name = "ttf-parser" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" - [[package]] name = "type-map" version = "0.5.1" @@ -7720,17 +7137,6 @@ version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e36a83ea2b3c704935a01b4642946aadd445cea40b10935e3f8bd8052b8193d6" -[[package]] -name = "uds_windows" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" -dependencies = [ - "memoffset", - "tempfile", - "winapi", -] - [[package]] name = "ulid" version = "1.2.1" @@ -7747,6 +7153,12 @@ version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" +[[package]] +name = "unicode-general-category" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b993bddc193ae5bd0d623b49ec06ac3e9312875fdae725a975c51db1cc1677f" + [[package]] name = "unicode-ident" version = "1.0.22" @@ -7764,9 +7176,9 @@ dependencies = [ [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "unicode-width" @@ -7863,7 +7275,6 @@ checksum = "144d6b123cef80b301b8f72a9e2ca4370ddec21950d0a103dd22c437006d2db7" dependencies = [ "getrandom 0.4.2", "js-sys", - "serde_core", "wasm-bindgen", ] @@ -7881,27 +7292,29 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "vello_common" -version = "0.0.6" +version = "0.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bd1a4c633ce09e7d713df1a6e036644a125e15e0c169cfb5180ddf5836ca04b" +checksum = "19d672facaa2d697285a786cd9d44d614cd2ce54cdc022504bf339f8fff3b750" dependencies = [ "bytemuck", "fearless_simd", - "hashbrown 0.16.1", + "guillotiere", + "hashbrown 0.17.1", "log", "peniko", - "skrifa", "smallvec", + "thiserror 2.0.18", ] [[package]] name = "vello_cpu" -version = "0.0.6" +version = "0.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0162bfe48aabf6a9fdcd401b628c7d9f260c2cbabb343c70a65feba6f7849edc" +checksum = "588691169aed86b5c8fb487266afee01323234e6fd0a3f2aaec0eaa8e4007f23" dependencies = [ "bytemuck", - "hashbrown 0.16.1", + "glifo", + "hashbrown 0.17.1", "vello_common", ] @@ -8062,7 +7475,7 @@ version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "hashbrown 0.15.5", "indexmap 2.14.0", "semver", @@ -8088,7 +7501,7 @@ version = "0.31.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8e6faa537fbb6c186cb9f1d41f2f811a4120d1b57ec61f50da451a0c5122bec" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "rustix 1.1.3", "wayland-backend", "wayland-scanner", @@ -8100,7 +7513,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "cursor-icon", "wayland-backend", ] @@ -8122,7 +7535,7 @@ version = "0.32.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baeda9ffbcfc8cd6ddaade385eaf2393bd2115a69523c735f12242353c3df4f3" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "wayland-backend", "wayland-client", "wayland-scanner", @@ -8134,7 +7547,7 @@ version = "20250721.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40a1f863128dcaaec790d7b4b396cc9b9a7a079e878e18c47e6c2d2c5a8dcbb1" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -8147,7 +7560,7 @@ version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "791c58fdeec5406aa37169dd815327d1e47f334219b523444bc26d70ceb4c34e" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -8160,7 +7573,7 @@ version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa98634619300a535a9a97f338aed9a5ff1e01a461943e8346ff4ae26007306b" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -8173,7 +7586,7 @@ version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e9597cdf02cf0c34cd5823786dce6b5ae8598f05c2daf5621b6e178d4f7345f3" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -8182,9 +7595,9 @@ dependencies = [ [[package]] name = "wayland-scanner" -version = "0.31.10" +version = "0.31.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c324a910fd86ebdc364a3e61ec1f11737d3b1d6c273c0239ee8ff4bc0d24b4a" +checksum = "338e30461b3a2b67d70eb30a6d89f8e0c93a833e07d2ae89085cd070c4a00ac0" dependencies = [ "proc-macro2", "quick-xml", @@ -8225,12 +7638,12 @@ dependencies = [ [[package]] name = "webbrowser" -version = "1.0.6" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00f1243ef785213e3a32fa0396093424a3a6ea566f9948497e5a2309261a4c97" +checksum = "0fc95580916af1e68ff6a7be07446fc5db73ebf71cf092de939bbf5f7e189f72" dependencies = [ "core-foundation 0.10.1", - "jni", + "jni 0.22.4", "log", "ndk-context", "objc2 0.6.4", @@ -8280,12 +7693,12 @@ checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" [[package]] name = "wgpu" -version = "29.0.3" +version = "29.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb3feacc458f7bee8bc1737149b42b6c731aa461039a4264a67bb6681646b250" +checksum = "76e8840e1ba2881d4cbb18d2147627a56af426ff064c0401eb0c8410c6325d07" dependencies = [ "arrayvec", - "bitflags 2.10.0", + "bitflags 2.13.1", "bytemuck", "cfg-if", "cfg_aliases", @@ -8293,8 +7706,6 @@ dependencies = [ "hashbrown 0.16.1", "js-sys", "log", - "naga", - "parking_lot", "portable-atomic", "profiling", "raw-window-handle", @@ -8310,14 +7721,14 @@ dependencies = [ [[package]] name = "wgpu-core" -version = "29.0.3" +version = "29.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02da3ad1b568337f25513b317870960ef87073ea0945502e44b864b67a8c77b7" +checksum = "2f519832254e56965a9940c4af57dcb75f702b6f6fa4a0b172f685395843a4d7" dependencies = [ "arrayvec", "bit-set", "bit-vec", - "bitflags 2.10.0", + "bitflags 2.13.1", "bytemuck", "cfg_aliases", "document-features", @@ -8333,110 +7744,47 @@ dependencies = [ "rustc-hash 1.1.0", "smallvec", "thiserror 2.0.18", - "wgpu-core-deps-apple", - "wgpu-core-deps-emscripten", - "wgpu-core-deps-wasm", "wgpu-core-deps-windows-linux-android", "wgpu-hal", "wgpu-naga-bridge", "wgpu-types", ] -[[package]] -name = "wgpu-core-deps-apple" -version = "29.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62e51b5447e144b3dbba4feb01f80f4fa21696fa0cd99afb2c3df1affd6fdb28" -dependencies = [ - "wgpu-hal", -] - -[[package]] -name = "wgpu-core-deps-emscripten" -version = "29.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3487cd6293a963bc5c0c0396f6a2192043c50003c07f4efdccbad3d90ec9d819" -dependencies = [ - "wgpu-hal", -] - -[[package]] -name = "wgpu-core-deps-wasm" -version = "29.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c2f2fb042f36920771deb0b966543c5751b18f3d327760ffc90f74e20b2dcd4" -dependencies = [ - "wgpu-hal", -] - [[package]] name = "wgpu-core-deps-windows-linux-android" -version = "29.0.3" +version = "29.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb01076d0aa08b0ba9bd741e178b5cc440f5abe99d9581323a4c8b5d1a1916" +checksum = "4e592c1bbef6ad047647ae6e666ebd8cee7a32bb4544d9700ec96cbf73230257" dependencies = [ "wgpu-hal", ] [[package]] name = "wgpu-hal" -version = "29.0.3" +version = "29.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f8e1a9e7a8512f276f7c62e018c7fa8d60954303fed2e5750114332049193f" +checksum = "97ace1c17727311c22a46e4e3faf56ea6de81af99dcc839bdfb54857b94d448d" dependencies = [ - "android_system_properties", - "arrayvec", - "ash", - "bit-set", - "bitflags 2.10.0", - "block2 0.6.2", - "bytemuck", + "bitflags 2.13.1", "cfg-if", "cfg_aliases", - "glow", - "glutin_wgl_sys", - "gpu-allocator", - "gpu-descriptor", - "hashbrown 0.16.1", - "js-sys", - "khronos-egl", - "libc", "libloading", "log", "naga", - "ndk-sys", - "objc2 0.6.4", - "objc2-core-foundation", - "objc2-foundation 0.3.2", - "objc2-metal 0.3.2", - "objc2-quartz-core 0.3.2", - "once_cell", - "ordered-float", - "parking_lot", "portable-atomic", "portable-atomic-util", - "profiling", - "range-alloc", "raw-window-handle", - "raw-window-metal", "renderdoc-sys", - "smallvec", "thiserror 2.0.18", - "wasm-bindgen", - "wayland-sys", - "web-sys", "wgpu-naga-bridge", "wgpu-types", - "windows", - "windows-core", - "windows-result", ] [[package]] name = "wgpu-naga-bridge" -version = "29.0.3" +version = "29.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59c654c483f058800972c3645e95388a7eca31bf9fe1933bc20e036588a0be02" +checksum = "95226013f547544b223281cd16a4fb549aa9dcb562adbda0faae4c73ffbbc161" dependencies = [ "naga", "wgpu-types", @@ -8444,11 +7792,11 @@ dependencies = [ [[package]] name = "wgpu-types" -version = "29.0.3" +version = "29.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9bcc31518a0e9735aefebedb5f7a9ef3ed1c42549c9f4c882fa9060ceaac639" +checksum = "84bf84cd9ca8ca45e2b223a3868f1adf9bfc0c66aeac212e76ee7e40fdadf8f5" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "bytemuck", "js-sys", "log", @@ -8499,7 +7847,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.48.0", ] [[package]] @@ -8508,27 +7856,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows" -version = "0.62.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" -dependencies = [ - "windows-collections", - "windows-core", - "windows-future", - "windows-numerics", -] - -[[package]] -name = "windows-collections" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" -dependencies = [ - "windows-core", -] - [[package]] name = "windows-core" version = "0.62.2" @@ -8542,17 +7869,6 @@ dependencies = [ "windows-strings", ] -[[package]] -name = "windows-future" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" -dependencies = [ - "windows-core", - "windows-link", - "windows-threading", -] - [[package]] name = "windows-implement" version = "0.60.2" @@ -8581,16 +7897,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" -[[package]] -name = "windows-numerics" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" -dependencies = [ - "windows-core", - "windows-link", -] - [[package]] name = "windows-result" version = "0.4.1" @@ -8691,15 +7997,6 @@ dependencies = [ "windows_x86_64_msvc 0.52.6", ] -[[package]] -name = "windows-threading" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37" -dependencies = [ - "windows-link", -] - [[package]] name = "windows_aarch64_gnullvm" version = "0.42.2" @@ -8841,7 +8138,7 @@ dependencies = [ "ahash", "android-activity", "atomic-waker", - "bitflags 2.10.0", + "bitflags 2.13.1", "block2 0.5.1", "bytemuck", "calloop 0.13.0", @@ -8865,9 +8162,8 @@ dependencies = [ "raw-window-handle", "redox_syscall 0.4.1", "rustix 0.38.44", - "sctk-adwaita", "smithay-client-toolkit 0.19.2", - "smol_str 0.2.2", + "smol_str", "tracing", "unicode-segmentation", "wasm-bindgen", @@ -8951,7 +8247,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" dependencies = [ "anyhow", - "bitflags 2.10.0", + "bitflags 2.13.1", "indexmap 2.14.0", "log", "serde", @@ -9031,7 +8327,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.1", "dlib", "log", "once_cell", @@ -9082,103 +8378,6 @@ dependencies = [ "synstructure", ] -[[package]] -name = "zbus" -version = "5.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eee682d202a77e4a9f3b2c2bdf48a7b28af5c08c34ddf66f98c93e5e39464285" -dependencies = [ - "async-broadcast", - "async-executor", - "async-io", - "async-lock", - "async-process", - "async-recursion", - "async-task", - "async-trait", - "blocking", - "enumflags2", - "event-listener", - "futures-core", - "futures-lite", - "hex", - "libc", - "ordered-stream", - "rustix 1.1.3", - "serde", - "serde_repr", - "tracing", - "uds_windows", - "uuid", - "windows-sys 0.61.2", - "winnow", - "zbus_macros", - "zbus_names", - "zvariant", -] - -[[package]] -name = "zbus-lockstep" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6998de05217a084b7578728a9443d04ea4cd80f2a0839b8d78770b76ccd45863" -dependencies = [ - "zbus_xml", - "zvariant", -] - -[[package]] -name = "zbus-lockstep-macros" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10da05367f3a7b7553c8cdf8fa91aee6b64afebe32b51c95177957efc47ca3a0" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", - "zbus-lockstep", - "zbus_xml", - "zvariant", -] - -[[package]] -name = "zbus_macros" -version = "5.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adf1bd45a81a103745b1757754762a26e8cd01e4532e4d6c8ec431624b80d1d6" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.117", - "zbus_names", - "zvariant", - "zvariant_utils", -] - -[[package]] -name = "zbus_names" -version = "4.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1039ca249fee9559680f3a9f05b55e0761fee51af4f6c1e7d8c1f31e549721d2" -dependencies = [ - "serde", - "winnow", - "zvariant", -] - -[[package]] -name = "zbus_xml" -version = "5.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ab0513c0a66a60a8718d5ad712a5094845a20d95b5c1c81e2bd8e904a52b4f" -dependencies = [ - "serde", - "winnow", - "zbus_names", - "zvariant", -] - [[package]] name = "zerocopy" version = "0.8.35" @@ -9352,43 +8551,3 @@ checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713" dependencies = [ "zune-core", ] - -[[package]] -name = "zvariant" -version = "5.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cf057bb00bf5c9ad77abb6147b0ca4818236a1858416e9d988e40d6322fefa7" -dependencies = [ - "endi", - "enumflags2", - "serde", - "winnow", - "zvariant_derive", - "zvariant_utils", -] - -[[package]] -name = "zvariant_derive" -version = "5.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8118ca6bda77bfc0ab51d660db0c955f2505eef854c9a449435bccb616933b31" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.117", - "zvariant_utils", -] - -[[package]] -name = "zvariant_utils" -version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90cb9383f9b45290407a1258b202d3f8f01db719eb60b4e4055c6375af4fc7c7" -dependencies = [ - "proc-macro2", - "quote", - "serde", - "syn 2.0.117", - "winnow", -] diff --git a/Cargo.toml b/Cargo.toml index 3c8aa0ee..dc8fb1bc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,7 @@ [workspace] -resolver = "2" +exclude = ["bip300301_enforcer"] members = ["app", "cli", "integration_tests", "lib", "rpc-api"] +resolver = "2" [workspace.package] authors = [ @@ -10,7 +11,7 @@ authors = [ edition = "2024" license-file = "LICENSE.txt" publish = false -version = "0.16.1" +version = "0.17.0" [workspace.dependencies] anyhow = "1.0.72" @@ -27,7 +28,7 @@ dotenvy = "0.15.7" ed25519-dalek = "2.1.1" ed25519-dalek-bip32 = "0.3.0" educe = { version = "0.6.0", default-features = false } -eframe = "0.34.0" +eframe = { version = "0.35.0", default-features = false } error-fatality = "0.1.2" fallible-iterator = "0.3.0" futures = { version = "0.3.30", default-features = false } @@ -87,13 +88,11 @@ uuid = "1.13.1" [workspace.dependencies.bip300301_enforcer_lib] default-features = false -git = "https://github.com/LayerTwo-Labs/bip300301_enforcer" -rev = "1100b6085d9ed64eeaf1b57b3c44609626bd4b23" +path = "bip300301_enforcer/lib" [workspace.dependencies.bip300301_enforcer_integration_tests] default-features = false -git = "https://github.com/LayerTwo-Labs/bip300301_enforcer" -rev = "1100b6085d9ed64eeaf1b57b3c44609626bd4b23" +path = "bip300301_enforcer/integration_tests" [workspace.dependencies.l2l-openapi] git = "https://github.com/Ash-L2L/l2l-openapi" diff --git a/app/Cargo.toml b/app/Cargo.toml index 7f0f7ca9..52c83c62 100644 --- a/app/Cargo.toml +++ b/app/Cargo.toml @@ -12,7 +12,6 @@ bincode = { workspace = true } bitcoin = { workspace = true, features = ["serde"] } clap = { workspace = true, features = ["derive"] } dirs = { workspace = true } -eframe = { workspace = true } fallible-iterator = { workspace = true } futures = { workspace = true } http = { workspace = true } @@ -44,6 +43,10 @@ url = { workspace = true } utoipa = { workspace = true } uuid = { workspace = true } +[dependencies.eframe] +workspace = true +features = ["glow", "wayland", "web_screen_reader", "x11"] + [dependencies.tokio] workspace = true features = ["macros", "rt-multi-thread", "signal"] diff --git a/app/gui/block_explorer.rs b/app/gui/block_explorer.rs index 554ac079..114e7cf1 100644 --- a/app/gui/block_explorer.rs +++ b/app/gui/block_explorer.rs @@ -35,7 +35,7 @@ impl BlockExplorer { None } }; - egui::CentralPanel::default().show_inside(ui, |ui| { + egui::CentralPanel::default().show(ui, |ui| { ui.heading("Block"); ui.horizontal(|ui| { if ui.button("<").clicked() && self.height > 0 { diff --git a/app/gui/coins/mod.rs b/app/gui/coins/mod.rs index 61f86bc8..eb309acb 100644 --- a/app/gui/coins/mod.rs +++ b/app/gui/coins/mod.rs @@ -37,7 +37,7 @@ impl Coins { } pub fn show(&mut self, app: Option<&App>, ui: &mut egui::Ui) { - egui::Panel::top("coins_tabs").show_inside(ui, |ui| { + egui::Panel::top("coins_tabs").show(ui, |ui| { ui.horizontal(|ui| { Tab::iter().for_each(|tab_variant| { let tab_name = tab_variant.to_string(); @@ -45,7 +45,7 @@ impl Coins { }) }); }); - egui::CentralPanel::default().show_inside(ui, |ui| match self.tab { + egui::CentralPanel::default().show(ui, |ui| match self.tab { Tab::TransferReceive => { let () = self.transfer_receive.show(app, ui); } diff --git a/app/gui/coins/transfer_receive.rs b/app/gui/coins/transfer_receive.rs index 55ea3823..d2a6a036 100644 --- a/app/gui/coins/transfer_receive.rs +++ b/app/gui/coins/transfer_receive.rs @@ -151,13 +151,13 @@ impl TransferReceive { egui::Panel::left("transfer") .exact_size(ui.available_width() / 2.) .resizable(false) - .show_inside(ui, |ui| { + .show(ui, |ui| { ui.vertical_centered(|ui| { ui.heading("Transfer"); self.transfer.show(app, ui); }) }); - egui::CentralPanel::default().show_inside(ui, |ui| { + egui::CentralPanel::default().show(ui, |ui| { ui.vertical_centered(|ui| { ui.heading("Receive"); self.receive.show(app, ui); diff --git a/app/gui/console_logs.rs b/app/gui/console_logs.rs index 2541c094..ffc72b55 100644 --- a/app/gui/console_logs.rs +++ b/app/gui/console_logs.rs @@ -89,7 +89,7 @@ impl ConsoleLogs { } pub fn show(&mut self, app: Option<&App>, ui: &mut egui::Ui) { - egui::Panel::bottom("command_input").show_inside(ui, |ui| { + egui::Panel::bottom("command_input").show(ui, |ui| { let command_input = TextEdit::multiline(&mut self.command_input) .font(TextStyle::Monospace) .desired_width(f32::INFINITY) diff --git a/app/gui/mod.rs b/app/gui/mod.rs index 02db2a07..ef1f746d 100644 --- a/app/gui/mod.rs +++ b/app/gui/mod.rs @@ -226,13 +226,13 @@ impl eframe::App for EguiApp { if let Some(app) = self.app.as_ref() && !app.wallet.has_seed().unwrap_or(false) { - egui::CentralPanel::default().show_inside(ui, |ui| { + egui::CentralPanel::default().show(ui, |ui| { egui::Window::new("Set Seed").show(ui, |ui| { self.set_seed.show(app, ui); }); }); } else { - egui::Panel::top("tabs").show_inside(ui, |ui| { + egui::Panel::top("tabs").show(ui, |ui| { ui.horizontal(|ui| { Tab::iter().for_each(|tab_variant| { let tab_name = tab_variant.to_string(); @@ -244,29 +244,26 @@ impl eframe::App for EguiApp { }) }); }); - egui::Panel::bottom("bottom_panel").show_inside(ui, |ui| { - self.bottom_panel.show(&mut self.miner, ui) - }); - egui::CentralPanel::default().show_inside(ui, |ui| { - match self.tab { - Tab::ParentChain => { - self.parent_chain.show(self.app.as_ref(), ui) - } - Tab::Coins => { - self.coins.show(self.app.as_ref(), ui); - } - Tab::MemPoolExplorer => { - self.mempool_explorer.show(self.app.as_ref(), ui); - } - Tab::BlockExplorer => { - self.block_explorer.show(self.app.as_ref(), ui); - } - Tab::Withdrawals => { - self.withdrawals.show(self.app.as_ref(), ui); - } - Tab::ConsoleLogs => { - self.console_logs.show(self.app.as_ref(), ui); - } + egui::Panel::bottom("bottom_panel") + .show(ui, |ui| self.bottom_panel.show(&mut self.miner, ui)); + egui::CentralPanel::default().show(ui, |ui| match self.tab { + Tab::ParentChain => { + self.parent_chain.show(self.app.as_ref(), ui) + } + Tab::Coins => { + self.coins.show(self.app.as_ref(), ui); + } + Tab::MemPoolExplorer => { + self.mempool_explorer.show(self.app.as_ref(), ui); + } + Tab::BlockExplorer => { + self.block_explorer.show(self.app.as_ref(), ui); + } + Tab::Withdrawals => { + self.withdrawals.show(self.app.as_ref(), ui); + } + Tab::ConsoleLogs => { + self.console_logs.show(self.app.as_ref(), ui); } }); } diff --git a/app/gui/parent_chain/mod.rs b/app/gui/parent_chain/mod.rs index 275c4958..4ad301e6 100644 --- a/app/gui/parent_chain/mod.rs +++ b/app/gui/parent_chain/mod.rs @@ -35,7 +35,7 @@ impl ParentChain { } pub fn show(&mut self, app: Option<&App>, ui: &mut egui::Ui) { - egui::Panel::top("parent_chain_tabs").show_inside(ui, |ui| { + egui::Panel::top("parent_chain_tabs").show(ui, |ui| { ui.horizontal(|ui| { Tab::iter().for_each(|tab_variant| { let tab_name = tab_variant.to_string(); @@ -43,7 +43,7 @@ impl ParentChain { }) }); }); - egui::CentralPanel::default().show_inside(ui, |ui| match self.tab { + egui::CentralPanel::default().show(ui, |ui| match self.tab { Tab::Transfer => { self.transfer.show(app, ui); } diff --git a/app/gui/parent_chain/transfer.rs b/app/gui/parent_chain/transfer.rs index 7441717b..41247dee 100644 --- a/app/gui/parent_chain/transfer.rs +++ b/app/gui/parent_chain/transfer.rs @@ -292,13 +292,13 @@ impl Transfer { egui::Panel::left("deposit") .exact_size(ui.available_width() / 2.) .resizable(false) - .show_inside(ui, |ui| { + .show(ui, |ui| { ui.vertical_centered(|ui| { ui.heading("Deposit"); self.deposit.show(app, ui); }) }); - egui::CentralPanel::default().show_inside(ui, |ui| { + egui::CentralPanel::default().show(ui, |ui| { ui.vertical_centered(|ui| { ui.heading("Withdrawal"); self.withdrawal.show(app, ui); diff --git a/bip300301_enforcer b/bip300301_enforcer new file mode 160000 index 00000000..ebd851f1 --- /dev/null +++ b/bip300301_enforcer @@ -0,0 +1 @@ +Subproject commit ebd851f1113dd34e295f487b2368ba397da8abba diff --git a/deny.toml b/deny.toml index 4bc339f9..43c54bc9 100644 --- a/deny.toml +++ b/deny.toml @@ -79,8 +79,6 @@ ignore = [ # https://github.com/aws/aws-lc-rs/issues/722 { id = "RUSTSEC-2024-0436", reason = "Temporary ignore until aws-lc-rs and rustls-webpki get updated" }, { id = "RUSTSEC-2025-0141", reason = "Temporary ignore until heed migrates to wincode" }, - # ttf-parser (via egui) is unmaintained - { id = "RUSTSEC-2026-0192", reason = "Temporary ignore until ttf-parser is replaced by skrifa etc." }, ] # If this is true, then cargo deny will use the git executable to fetch advisory database. # If this is false, then it uses a built-in git library. @@ -120,14 +118,13 @@ exceptions = [ { allow = ["CDLA-Permissive-2.0"], name = "webpki-root-certs", version = "0.26.11" }, { allow = ["CDLA-Permissive-2.0"], name = "webpki-root-certs", version = "1.0.5" }, { allow = ["CDLA-Permissive-2.0"], name = "webpki-roots", version = "1.0.5" }, - { allow = ["LicenseRef-UFL-1.0", "OFL-1.1", "Ubuntu-font-1.0"], name = "epaint_default_fonts", version = "0.34.3" }, { allow = ["MPL-2.0"], name = "bitmaps", version = "3.2.1" }, { allow = ["MPL-2.0"], name = "imbl", version = "7.0.0" }, { allow = ["MPL-2.0"], name = "imbl-sized-chunks", version = "0.1.3" }, { allow = ["MPL-2.0"], name = "option-ext", version = "0.2.0" }, { allow = ["MPL-2.0"], name = "webpki-roots", version = "0.25.4" }, { allow = ["Zlib"], crate = "foldhash" }, - { allow = ["Zlib"], name = "slotmap", version = "1.0.7" }, + { allow = ["Zlib"], name = "slotmap", version = "1.1.1" }, { allow = ["Zlib"], name = "typewit", version = "1.11.0" }, { allow = ["Zlib"], name = "typewit_proc_macros", version = "1.8.1" }, { allow = ["Zlib"], name = "zlib-rs", version = "0.5.5" }, diff --git a/integration_tests/integration_test.rs b/integration_tests/integration_test.rs index 16acd6ff..e0383f87 100644 --- a/integration_tests/integration_test.rs +++ b/integration_tests/integration_test.rs @@ -55,7 +55,7 @@ pub async fn deposit_withdraw_roundtrip_task( tracing::info!("Deposited to sidechain successfully"); // Wait for mempool to catch up before attempting second deposit tracing::debug!("Waiting for wallet sync..."); - let () = wait_for_wallet_sync().await?; + let () = wait_for_wallet_sync(post_setup).await?; tracing::info!("Attempting second deposit"); let () = deposit( post_setup, diff --git a/lib/build.rs b/lib/build.rs index 9008d6e5..d34f0f15 100644 --- a/lib/build.rs +++ b/lib/build.rs @@ -29,12 +29,14 @@ where } fn main() -> Result<(), Box> { - const COMMON_PROTO: &str = "../proto/proto/cusf/common/v1/common.proto"; + const COMMON_PROTO: &str = + "../bip300301_enforcer/proto/cusf/common/v1/common.proto"; const VALIDATOR_PROTO: &str = - "../proto/proto/cusf/mainchain/v1/validator.proto"; - const WALLET_PROTO: &str = "../proto/proto/cusf/mainchain/v1/wallet.proto"; + "../bip300301_enforcer/proto/cusf/mainchain/v1/validator.proto"; + const WALLET_PROTO: &str = + "../bip300301_enforcer/proto/cusf/mainchain/v1/wallet.proto"; const ALL_PROTOS: &[&str] = &[COMMON_PROTO, VALIDATOR_PROTO, WALLET_PROTO]; - const INCLUDES: &[&str] = &["../proto/proto"]; + const INCLUDES: &[&str] = &["../bip300301_enforcer/proto"]; let file_descriptors = protox::compile(ALL_PROTOS, INCLUDES)?; let file_descriptor_path = PathBuf::from( env::var("OUT_DIR").expect("OUT_DIR environment variable not set"), diff --git a/lib/net/peer/message.rs b/lib/net/peer/message.rs index aeebe86a..6a5488dd 100644 --- a/lib/net/peer/message.rs +++ b/lib/net/peer/message.rs @@ -81,19 +81,29 @@ pub struct GetHeadersRequest { } impl GetHeadersRequest { + /// Hard cap on the bytes to read in a response, regardless of the + /// requested height. Bounds memory use (and the response read timeout) + /// even if an unreasonably large height is used to size the read budget. + const MAX_READ_RESPONSE_LIMIT: NonZeroUsize = + NonZeroUsize::new(64 * 1024 * 1024).unwrap(); + /// Limit bytes to read in a response to a request pub const fn read_response_limit(&self) -> NonZeroUsize { // 2KB limit per header const READ_HEADER_LIMIT: NonZeroUsize = NonZeroUsize::new(2048).unwrap(); - let expected_headers = self.height.expect( + let expected_headers = (self.height.expect( "GetHeaders height should always be Some in an outbound request", - ) as usize - + 1; - NonZeroUsize::new(expected_headers) - .unwrap() - .checked_mul(READ_HEADER_LIMIT) + ) as usize) + .saturating_add(1); + let limit = NonZeroUsize::new(expected_headers) .unwrap() + .saturating_mul(READ_HEADER_LIMIT); + if limit.get() > Self::MAX_READ_RESPONSE_LIMIT.get() { + Self::MAX_READ_RESPONSE_LIMIT + } else { + limit + } } } diff --git a/lib/net/peer/mod.rs b/lib/net/peer/mod.rs index 4299edc2..c8d9a6c5 100644 --- a/lib/net/peer/mod.rs +++ b/lib/net/peer/mod.rs @@ -545,11 +545,12 @@ pub struct Peer { } #[cfg(test)] -mod test { - use std::num::NonZeroUsize; +mod tests { + use std::{collections::HashSet, num::NonZeroUsize, time::Duration}; + use super::Connection; use crate::{ - net::peer::{Connection, message::GetBlockRequest}, + net::peer::message::{GetBlockRequest, GetHeadersRequest}, types::BlockHash, }; @@ -575,6 +576,29 @@ mod test { ); } + /// The height attached to a `GetHeaders` request originates from a peer + /// heartbeat, so an absurd height must not be able to inflate the read + /// budget (and with it, the response read timeout) without bound. + #[test] + fn get_headers_read_response_limit_is_bounded() { + let get_headers = GetHeadersRequest { + start: HashSet::new(), + end: BlockHash([0u8; 32]), + height: Some(u32::MAX), + peer_state_id: None, + }; + let limit = get_headers.read_response_limit(); + assert!( + limit.get() <= 64 * 1024 * 1024, + "GetHeaders read limit {limit} must stay bounded", + ); + let timeout = Connection::response_read_timeout(limit); + assert!( + timeout <= Duration::from_secs(60 * 60), + "GetHeaders response read timeout {timeout:?} must stay bounded", + ); + } + /// A tiny response is still bounded, but never below the base allowance /// covering round-trip latency. #[test] diff --git a/lib/net/peer/task.rs b/lib/net/peer/task.rs index 0d603ae1..eaabba19 100644 --- a/lib/net/peer/task.rs +++ b/lib/net/peer/task.rs @@ -2,12 +2,13 @@ use std::{ cmp::Ordering, - collections::{HashMap, HashSet}, + collections::HashSet, sync::{Arc, atomic::AtomicBool}, }; use fallible_iterator::FallibleIterator; use futures::{StreamExt as _, channel::mpsc}; +use hashlink::LinkedHashMap; use quinn::SendStream; use sneed::EnvError; @@ -29,6 +30,13 @@ use crate::{ util::join_set, }; +/// Maximum number of peer states retained per connection. +/// Peer states are retained so that follow-up internal messages can be +/// associated with the peer state that prompted them. A peer chooses the +/// contents of its own heartbeats, so it can produce an unlimited number of +/// distinct peer states; the cache must therefore be bounded. +const MAX_PEER_STATES: usize = 256; + pub(in crate::net::peer) struct ConnectionTask { pub connection: Connection, pub ctxt: ConnectionContext, @@ -43,6 +51,8 @@ pub(in crate::net::peer) struct ConnectionTask { impl ConnectionTask { /// Check if peer tip is better, requesting headers if necessary. + /// `peer_tip_main_height` MUST be the mainchain height of + /// `peer_tip_info.tip.main_block_hash`. /// Returns `Some(true)` if the peer tip is better and headers are available, /// `Some(false)` if the peer tip is better and headers were requested, /// and `None` if the peer tip is not better. @@ -51,8 +61,16 @@ impl ConnectionTask { request_queue: &request_queue::Sender, tip_info: Option<&TipInfo>, peer_tip_info: &TipInfo, + peer_tip_main_height: u32, peer_state_id: PeerStateId, ) -> Result, blocking_task::TaskError> { + // The height attached to a headers request is only used to size the + // read budget for the response. The peer-supplied height is untrusted, + // so clamp it: a block at height `h` requires `h` distinct mainchain + // blocks, so the peer tip's height cannot exceed the mainchain height + // of the mainchain block that its BMM commitment lives in. + let headers_height = + peer_tip_info.block_height.min(peer_tip_main_height); // Check if the peer tip is better, requesting headers if necessary let Some(tip_info) = tip_info else { // No tip. @@ -66,7 +84,7 @@ impl ConnectionTask { let request = message::GetHeadersRequest { start: HashSet::new(), end: peer_tip_info.tip.block_hash, - height: Some(peer_tip_info.block_height), + height: Some(headers_height), peer_state_id: Some(peer_state_id), }; let _: bool = request_queue.send_request(request.into())?; @@ -97,7 +115,7 @@ impl ConnectionTask { let request = message::GetHeadersRequest { start, end: peer_tip_info.tip.block_hash, - height: Some(peer_tip_info.block_height), + height: Some(headers_height), peer_state_id: Some(peer_state_id), }; let _: bool = request_queue.send_request(request.into())?; @@ -138,7 +156,7 @@ impl ConnectionTask { let request = message::GetHeadersRequest { start, end: peer_tip_info.tip.block_hash, - height: Some(peer_tip_info.block_height), + height: Some(headers_height), peer_state_id: Some(peer_state_id), }; let _: bool = request_queue.send_request(request.into())?; @@ -173,7 +191,7 @@ impl ConnectionTask { let request = message::GetHeadersRequest { start, end: peer_tip_info.tip.block_hash, - height: Some(peer_tip_info.block_height), + height: Some(headers_height), peer_state_id: Some(peer_state_id), }; let _: bool = request_queue.send_request(request.into())?; @@ -227,7 +245,7 @@ impl ConnectionTask { let request = message::GetHeadersRequest { start, end: peer_tip_info.tip.block_hash, - height: Some(peer_tip_info.block_height), + height: Some(headers_height), peer_state_id: Some(peer_state_id), }; let _: bool = request_queue.send_request(request.into())?; @@ -253,7 +271,7 @@ impl ConnectionTask { let request = message::GetHeadersRequest { start, end: peer_tip_info.tip.block_hash, - height: Some(peer_tip_info.block_height), + height: Some(headers_height), peer_state_id: Some(peer_state_id), }; let _: bool = request_queue.send_request(request.into())?; @@ -313,7 +331,7 @@ impl ConnectionTask { let request = message::GetHeadersRequest { start, end: peer_tip_info.tip.block_hash, - height: Some(peer_tip_info.block_height), + height: Some(headers_height), peer_state_id: Some(peer_state_id), }; let _: bool = request_queue.send_request(request.into())?; @@ -466,8 +484,8 @@ impl ConnectionTask { }) }; // Check claimed work, request mainchain headers if necessary, verify - // BMM - { + // BMM, and resolve the mainchain height of the peer tip's BMM block + let peer_tip_main_height = { let rotxn = ctxt.env.read_txn()?; match ctxt.archive.try_get_main_header_info( &rotxn, @@ -511,15 +529,20 @@ impl ConnectionTask { ban_reason, )); } + ctxt.archive.get_main_height( + &rotxn, + peer_tip_info.tip.main_block_hash, + )? } } - } + }; // Check if the peer tip is better, requesting headers if necessary match Self::check_peer_tip_and_request_headers( ctxt, request_queue, tip_info.as_ref(), &peer_tip_info, + peer_tip_main_height, peer_state.into(), )? { Some(false) | None => return Ok(()), @@ -684,21 +707,37 @@ impl ConnectionTask { } } + /// Record a peer state, evicting the least recently received states if the + /// cache is full. Returns the ID of the recorded peer state. + fn insert_peer_state( + peer_states: &mut LinkedHashMap, + peer_state: PeerState, + ) -> PeerStateId { + let peer_state_id = (&peer_state).into(); + // Inserts at the back of the linked list, so that evicting from the + // front evicts the least recently received peer state + peer_states.insert(peer_state_id, peer_state); + while peer_states.len() > MAX_PEER_STATES { + let _evicted = peer_states.pop_front(); + } + peer_state_id + } + async fn handle_peer_request( ctxt: &Arc, info_tx: &mpsc::UnboundedSender, mailbox_sender: &mailbox::Sender, peer_state: &mut Option, - // Map associating peer state hashes to peer state - peer_states: &mut HashMap, + // Bounded map associating peer state hashes to peer state + peer_states: &mut LinkedHashMap, response_tx: SendStream, request_msg: RequestMessage, ) -> Result<(), Error> { match request_msg { RequestMessage::Heartbeat(heartbeat) => { let new_peer_state = heartbeat.0; - let new_peer_state_id = (&new_peer_state).into(); - peer_states.insert(new_peer_state_id, new_peer_state); + let new_peer_state_id = + Self::insert_peer_state(peer_states, new_peer_state); if *peer_state != Some(new_peer_state_id) { let ctxt = Arc::clone(ctxt); let info_tx = info_tx.clone(); @@ -758,7 +797,7 @@ impl ConnectionTask { request_queue: &request_queue::Sender, blocking_task_queue_tx: &mpsc::UnboundedSender, // known peer states - peer_states: &HashMap, + peer_states: &LinkedHashMap, msg: InternalMessage, ) -> Result<(), Error> { match msg { @@ -772,7 +811,12 @@ impl ConnectionTask { } let Some(peer_state) = peer_states.get(&peer_state_id).copied() else { - return Err(Error::MissingPeerState(peer_state_id)); + // The peer state may have been evicted from the bounded + // cache, so dropping the message is preferable to killing + // the connection + let err = Error::MissingPeerState(peer_state_id); + tracing::warn!("{err}"); + return Ok(()); }; let ctxt = Arc::clone(ctxt); let info_tx = info_tx.clone(); @@ -801,7 +845,12 @@ impl ConnectionTask { | InternalMessage::BodiesAvailable(peer_state_id) => { let Some(peer_state) = peer_states.get(&peer_state_id).copied() else { - return Err(Error::MissingPeerState(peer_state_id)); + // The peer state may have been evicted from the bounded + // cache, so dropping the message is preferable to killing + // the connection + let err = Error::MissingPeerState(peer_state_id); + tracing::warn!("{err}"); + return Ok(()); }; let ctxt = Arc::clone(ctxt); let info_tx = info_tx.clone(); @@ -825,8 +874,8 @@ impl ConnectionTask { let ctxt = Arc::new(self.ctxt); // current peer state let mut peer_state = Option::::None; - // known peer states - let mut peer_states = HashMap::::new(); + // known peer states, bounded to `MAX_PEER_STATES` + let mut peer_states = LinkedHashMap::::new(); let mut mailbox_stream = self .mailbox_rx .into_stream(self.connection, &self.received_msg_successfully); @@ -921,3 +970,50 @@ impl ConnectionTask { Ok(()) } } + +#[cfg(test)] +mod tests { + use hashlink::LinkedHashMap; + + use super::{ConnectionTask, MAX_PEER_STATES}; + use crate::{ + net::peer::{PeerState, PeerStateId}, + types::Version, + }; + + fn peer_state(patch: u64) -> PeerState { + PeerState { + tip_info: None, + version: Version { + major: 0, + minor: 0, + patch, + }, + } + } + + /// A peer controls the contents of its own heartbeats, so it can send + /// arbitrarily many distinct peer states over a single connection. The + /// per-connection cache of known peer states must stay bounded, retaining + /// the most recently received states. + #[test] + fn peer_state_cache_is_bounded() { + let mut peer_states = LinkedHashMap::::new(); + let peer_state_ids: Vec = (0..2 * MAX_PEER_STATES) + .map(|patch| { + ConnectionTask::insert_peer_state( + &mut peer_states, + peer_state(patch as u64), + ) + }) + .collect(); + assert_eq!(peer_states.len(), MAX_PEER_STATES); + for (idx, peer_state_id) in peer_state_ids.iter().enumerate() { + assert_eq!( + peer_states.contains_key(peer_state_id), + idx >= peer_state_ids.len() - MAX_PEER_STATES, + "unexpected cache membership for peer state {idx}" + ); + } + } +} diff --git a/lib/node/mod.rs b/lib/node/mod.rs index 26a58a2f..b27722d9 100644 --- a/lib/node/mod.rs +++ b/lib/node/mod.rs @@ -685,11 +685,25 @@ where let m6id = bundle.compute_m6id(); let mut cusf_mainchain_wallet_lock = cusf_mainchain_wallet.lock().await; - let () = cusf_mainchain_wallet_lock + let broadcast_res = cusf_mainchain_wallet_lock .broadcast_withdrawal_bundle(bundle.tx()) - .await?; + .await; drop(cusf_mainchain_wallet_lock); - tracing::trace!(%m6id, "Broadcast withdrawal bundle"); + // The new tip is already committed at this point, so a broadcast + // failure MUST NOT be reported as a rejected block. + // The bundle remains pending until the corresponding mainchain + // event is connected, so it is re-broadcast on the next block. + match broadcast_res { + Ok(()) => tracing::trace!(%m6id, "Broadcast withdrawal bundle"), + Err(err) => { + let err = anyhow::Error::from(err); + tracing::error!( + %m6id, + "Failed to broadcast withdrawal bundle; \ + will retry on next block: {err:#}" + ) + } + } } Ok(true) } diff --git a/lib/types/proto.rs b/lib/types/proto.rs index 156ce851..bc52c3e6 100644 --- a/lib/types/proto.rs +++ b/lib/types/proto.rs @@ -835,6 +835,7 @@ pub mod mainchain { prev_block_hash, height, work, + timestamp: _, } = header_info; let block_hash = block_hash .as_ref() @@ -1103,8 +1104,10 @@ pub mod mainchain { &mut self, ) -> Result { let request = generated::GetChainInfoRequest {}; - let generated::GetChainInfoResponse { network } = - self.0.get_chain_info(request).await?.into_inner(); + let generated::GetChainInfoResponse { + network, + bip300_constants: _, + } = self.0.get_chain_info(request).await?.into_inner(); let network = generated::Network::try_from(network) .map_err(|_| super::Error::UnknownEnumTag { field_name: "network".to_owned(),