From a32d94e48338503385c1f588902a53ed4a2a8df4 Mon Sep 17 00:00:00 2001 From: 0xZensh Date: Sat, 17 Aug 2024 16:16:53 +0800 Subject: [PATCH] chore: update packages --- Cargo.lock | 416 +++++++++++++++----------- Cargo.toml | 7 +- README.md | 10 +- src/ck-doge-canister/Cargo.toml | 2 +- src/ck-doge-canister/src/api_query.rs | 9 +- src/ck-doge-canister/src/lib.rs | 1 + src/ck-doge-canister/src/store.rs | 48 +-- src/ck-doge-minter/Cargo.toml | 2 +- src/ck-doge-minter/src/store.rs | 13 +- src/dogecoin/src/canister/mod.rs | 99 +----- src/dogecoin/src/jsonrpc.rs | 4 +- 11 files changed, 300 insertions(+), 311 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 83c9575..e7cb2a4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -58,9 +58,9 @@ checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" [[package]] name = "async-compression" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd066d0b4ef8ecb03a55319dc13aa6910616d0f44008a045bb1835af830abff5" +checksum = "fec134f64e2bc57411226dfc4e52dec859ddfc7e711fc5e07b612584f000e4aa" dependencies = [ "flate2", "futures-core", @@ -71,13 +71,13 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.80" +version = "0.1.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.74", ] [[package]] @@ -216,9 +216,9 @@ checksum = "340e09e8399c7bd8912f495af6aa58bea0c9214773417ffaa8f6460f93aaee56" [[package]] name = "bitcoin-units" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb54da0b28892f3c52203a7191534033e051b6f4b52bc15480681b57b7e036f5" +checksum = "5285c8bcaa25876d07f37e3d30c303f2609179716e11d688f51e8f1fe70063e2" dependencies = [ "bitcoin-internals", ] @@ -272,15 +272,15 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.6.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" [[package]] name = "candid" -version = "0.10.9" +version = "0.10.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7df77a80c72fcd356cf37ff59c812f37ff06dc9a81232b3aff0a308cb5996904" +checksum = "6c30ee7f886f296b6422c0ff017e89dd4f831521dfdcc76f3f71aae1ce817222" dependencies = [ "anyhow", "binread", @@ -308,14 +308,17 @@ dependencies = [ "lazy_static", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.74", ] [[package]] name = "cc" -version = "1.0.102" +version = "1.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "779e6b7d17797c0b42023d417228c02889300190e700cb074c3438d9c541d332" +checksum = "72db2f7947ecee9b03b510377e8bb9077afa27176fdbff55c51027e976fdcc48" +dependencies = [ + "shlex", +] [[package]] name = "cfg-if" @@ -325,7 +328,7 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "check-blocks" -version = "0.5.2" +version = "0.5.3" dependencies = [ "async-trait", "base64 0.21.7", @@ -346,7 +349,7 @@ dependencies = [ "iana-time-zone", "num-traits", "serde", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -378,7 +381,7 @@ dependencies = [ [[package]] name = "ck-doge-canister" -version = "0.5.2" +version = "0.5.3" dependencies = [ "base64 0.21.7", "bitcoin", @@ -404,7 +407,7 @@ dependencies = [ [[package]] name = "ck-doge-minter" -version = "0.5.2" +version = "0.5.3" dependencies = [ "base64 0.21.7", "bitcoin", @@ -487,15 +490,15 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad" dependencies = [ "libc", ] @@ -562,7 +565,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.74", ] [[package]] @@ -617,6 +620,15 @@ dependencies = [ "zeroize", ] +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + [[package]] name = "diff" version = "0.1.13" @@ -637,7 +649,7 @@ dependencies = [ [[package]] name = "dogecoin" -version = "0.5.2" +version = "0.5.3" dependencies = [ "async-trait", "base64 0.21.7", @@ -743,9 +755,9 @@ checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" [[package]] name = "flate2" -version = "1.0.30" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +checksum = "7f211bbe8e69bbd0cfdea405084f128ae8b4aaa6b0b522fc8f2b009084797920" dependencies = [ "crc32fast", "miniz_oxide", @@ -822,7 +834,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.74", ] [[package]] @@ -974,9 +986,9 @@ dependencies = [ [[package]] name = "http-body" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", "http", @@ -1003,9 +1015,9 @@ checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" [[package]] name = "hyper" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d" +checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" dependencies = [ "bytes", "futures-channel", @@ -1040,9 +1052,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.5" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b875924a60b96e5d7b9ae7b066540b1dd1cbd90d1828f54c92e02a283351c56" +checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9" dependencies = [ "bytes", "futures-channel", @@ -1123,9 +1135,9 @@ dependencies = [ [[package]] name = "ic-cdk" -version = "0.14.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff384f182459bec490a7f50a58bbdf8f7a6934de4dcc259e30c70641bcbcb917" +checksum = "038ff230bf0fc8630943e3c52e989d248a7c89834ccb65da408fabc5817a475b" dependencies = [ "candid", "ic-cdk-macros", @@ -1136,23 +1148,23 @@ dependencies = [ [[package]] name = "ic-cdk-macros" -version = "0.14.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01dc6bc425ec048d6ac4137c7c0f2cfbd6f8b0be8efc568feae2b265f566117c" +checksum = "3af44fb4ec3a4b18831c9d3303ca8fa2ace846c4022d50cb8df4122635d3782e" dependencies = [ "candid", "proc-macro2", "quote", "serde", "serde_tokenstream", - "syn 2.0.68", + "syn 2.0.74", ] [[package]] name = "ic-cdk-timers" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc4a42e669e47cf58fc18e071898e67922c81aa480edbf930ed1468dd53f44ee" +checksum = "61fdca8e1d9ffb65ae68019b342c182009de9dc206fd849db0b0e90ee19f6fa4" dependencies = [ "futures", "ic-cdk", @@ -1405,8 +1417,9 @@ dependencies = [ [[package]] name = "icrc-ledger-types" -version = "0.1.5" -source = "git+https://github.com/dfinity/ic/?rev=d19fa446ab35780b2c6d8b82ea32d808cca558d5#d19fa446ab35780b2c6d8b82ea32d808cca558d5" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f7f6b54df25295dd0ce2722d583c15e2ee7eec9cef58c10b424feb54561b2" dependencies = [ "base32", "candid", @@ -1419,6 +1432,7 @@ dependencies = [ "serde_bytes", "sha2", "strum", + "time", ] [[package]] @@ -1460,9 +1474,9 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" dependencies = [ "wasm-bindgen", ] @@ -1507,9 +1521,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.155" +version = "0.2.156" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "a5f43f184355eefb8d17fc948dbecf6c13be3c141f20d834ae842193a448c72a" [[package]] name = "libm" @@ -1562,13 +1576,14 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.11" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ + "hermit-abi", "libc", "wasi", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -1599,6 +1614,12 @@ dependencies = [ "smallvec", ] +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + [[package]] name = "num-integer" version = "0.1.46" @@ -1629,21 +1650,11 @@ dependencies = [ "libm", ] -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi", - "libc", -] - [[package]] name = "object" -version = "0.36.1" +version = "0.36.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "081b846d1d56ddfc18fdf1a922e4f6e07a11768ea1b92dec44e42b72712ccfce" +checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9" dependencies = [ "memchr", ] @@ -1686,7 +1697,7 @@ dependencies = [ "libc", "redox_syscall", "smallvec", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -1737,7 +1748,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.74", ] [[package]] @@ -1762,11 +1773,20 @@ dependencies = [ "spki", ] +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "pretty" @@ -1827,7 +1847,7 @@ dependencies = [ "itertools", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.74", ] [[package]] @@ -1841,9 +1861,9 @@ dependencies = [ [[package]] name = "quinn" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4ceeeeabace7857413798eb1ffa1e9c905a9946a57d81fb69b4b71c4d8eb3ad" +checksum = "b22d8e7369034b9a7132bc2008cac12f2013c8132b45e0554e6e20e2617f2156" dependencies = [ "bytes", "pin-project-lite", @@ -1851,6 +1871,7 @@ dependencies = [ "quinn-udp", "rustc-hash", "rustls", + "socket2", "thiserror", "tokio", "tracing", @@ -1858,9 +1879,9 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.3" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddf517c03a109db8100448a4be38d498df8a210a99fe0e1b9eaf39e78c640efe" +checksum = "ba92fb39ec7ad06ca2582c0ca834dfeadcaf06ddfc8e635c80aa7e1c05315fdd" dependencies = [ "bytes", "rand", @@ -1875,9 +1896,9 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.2" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9096629c45860fc7fb143e125eb826b5e721e10be3263160c7d60ca832cf8c46" +checksum = "8bffec3605b73c6f1754535084a85229fa8a30f86014e6c81aeec4abb68b0285" dependencies = [ "libc", "once_cell", @@ -1927,9 +1948,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" dependencies = [ "bitflags", ] @@ -2011,9 +2032,9 @@ checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" -version = "1.1.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" [[package]] name = "rustc_version" @@ -2026,9 +2047,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.10" +version = "0.23.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05cff451f60db80f490f3c182b77c35260baace73209e9cdbbe526bfe3a4d402" +checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" dependencies = [ "once_cell", "ring", @@ -2040,9 +2061,9 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" +checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" dependencies = [ "base64 0.22.1", "rustls-pki-types", @@ -2050,15 +2071,15 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" +checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" [[package]] name = "rustls-webpki" -version = "0.102.4" +version = "0.102.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff448f7e92e913c4b7d4c6d8e4540a1724b319b4152b8aef6d4cf8339712b33e" +checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" dependencies = [ "ring", "rustls-pki-types", @@ -2130,7 +2151,7 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "send-tx" -version = "0.5.2" +version = "0.5.3" dependencies = [ "async-trait", "base64 0.21.7", @@ -2144,9 +2165,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.203" +version = "1.0.208" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" +checksum = "cff085d2cb684faa248efb494c39b68e522822ac0de72ccf08109abde717cfb2" dependencies = [ "serde_derive", ] @@ -2172,36 +2193,37 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.203" +version = "1.0.208" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" +checksum = "24008e81ff7613ed8e5ba0cfaf24e2c2f1e5b8a0495711e44fcd4882fca62bcf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.74", ] [[package]] name = "serde_json" -version = "1.0.118" +version = "1.0.125" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d947f6b3163d8857ea16c4fa0dd4840d52f3041039a85decd46867eb1abef2e4" +checksum = "83c8e735a073ccf5be70aa8066aa984eaf2fa000db6c8d0100ae605b366d31ed" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] [[package]] name = "serde_tokenstream" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8790a7c3fe883e443eaa2af6f705952bc5d6e8671a220b9335c8cae92c037e74" +checksum = "64060d864397305347a78851c51588fd283767e7e7589829e8121d65512340f1" dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.68", + "syn 2.0.74", ] [[package]] @@ -2259,6 +2281,12 @@ dependencies = [ "keccak", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signal-hook-registry" version = "1.4.2" @@ -2375,7 +2403,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.68", + "syn 2.0.74", ] [[package]] @@ -2397,9 +2425,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.68" +version = "2.0.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" +checksum = "1fceb41e3d546d0bd83421d3409b1460cc7444cd389341a4c880fe7a042cb3d7" dependencies = [ "proc-macro2", "quote", @@ -2414,22 +2442,22 @@ checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" [[package]] name = "thiserror" -version = "1.0.61" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.61" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.74", ] [[package]] @@ -2438,11 +2466,42 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3bf63baf9f5039dadc247375c29eb13706706cfde997d0330d05aa63a77d8820" +[[package]] +name = "time" +version = "0.3.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +dependencies = [ + "num-conv", + "time-core", +] + [[package]] name = "tinyvec" -version = "1.6.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c55115c6fbe2d2bef26eb09ad74bde02d8255476fc0c7b515ef09fbb35742d82" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -2455,32 +2514,31 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.38.0" +version = "1.39.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" +checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" dependencies = [ "backtrace", "bytes", "libc", "mio", - "num_cpus", "parking_lot", "pin-project-lite", "signal-hook-registry", "socket2", "tokio-macros", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "tokio-macros" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.74", ] [[package]] @@ -2524,15 +2582,15 @@ dependencies = [ [[package]] name = "tower-layer" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-service" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" @@ -2541,21 +2599,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ "pin-project-lite", - "tracing-attributes", "tracing-core", ] -[[package]] -name = "tracing-attributes" -version = "0.1.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.68", -] - [[package]] name = "tracing-core" version = "0.1.32" @@ -2641,9 +2687,9 @@ checksum = "86bd8d4e895da8537e5315b8254664e6b769c4ff3db18321b297a1e7004392e3" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "want" @@ -2662,34 +2708,35 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.74", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" dependencies = [ "cfg-if", "js-sys", @@ -2699,9 +2746,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2709,28 +2756,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.74", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] name = "web-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" dependencies = [ "js-sys", "wasm-bindgen", @@ -2773,7 +2820,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -2791,7 +2838,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -2811,18 +2858,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.5", - "windows_aarch64_msvc 0.52.5", - "windows_i686_gnu 0.52.5", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", "windows_i686_gnullvm", - "windows_i686_msvc 0.52.5", - "windows_x86_64_gnu 0.52.5", - "windows_x86_64_gnullvm 0.52.5", - "windows_x86_64_msvc 0.52.5", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -2833,9 +2880,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -2845,9 +2892,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -2857,15 +2904,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -2875,9 +2922,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -2887,9 +2934,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -2899,9 +2946,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -2911,9 +2958,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winreg" @@ -2931,6 +2978,27 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.74", +] + [[package]] name = "zeroize" version = "1.8.1" @@ -2948,5 +3016,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.74", ] diff --git a/Cargo.toml b/Cargo.toml index 2125228..588ca62 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,7 +15,7 @@ strip = true opt-level = 's' [workspace.package] -version = "0.5.2" +version = "0.5.3" edition = "2021" repository = "https://github.com/ldclabs/ck-doge" keywords = ["defi", "dogecoin", "icp", "dapp", "web3"] @@ -39,9 +39,10 @@ hex = { package = "hex-conservative", version = "0.2", default-features = false, ] } async-trait = "0.1" candid = "0.10" -ic-cdk = "0.14" -ic-cdk-timers = "0.8" +ic-cdk = "0.15" +ic-cdk-timers = "0.9" ic-stable-structures = "0.6" +icrc-ledger-types = "0.1" num-traits = "0.2" once_cell = "1.19" lazy_static = "1.4" diff --git a/README.md b/README.md index f014cee..f8d393f 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,15 @@ # CK-Doge -Chain-key Dogecoin (CK-Doge) offers on-chain integration with the Dogecoin network on [the Internet Computer (ICP)](https://internetcomputer.org/). +🐶 Chain-key Dogecoin (CK-Doge) offers on-chain integration with the Dogecoin network on [the Internet Computer (ICP)](https://internetcomputer.org/). `ckDOGE` is an ICRC-2-compliant token, supported by the CK-Doge canisters, and is backed 1:1 by DOGE. ## Packages -| Package | Crates.io | Documentation | Description | -| ------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------: | :----------------------------------------------------------------------: | +| Package | Crates.io | Documentation | Description | +| ------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------: | :----------------------------------------------------------------------- | | [dogecoin](https://github.com/ldclabs/ck-doge/tree/main/src/dogecoin) | [![crates.io](https://img.shields.io/crates/v/dogecoin.svg)](https://crates.io/crates/dogecoin) | [![Documentation](https://docs.rs/dogecoin/badge.svg)](https://docs.rs/dogecoin) | General purpose rust library for using and interoperating with Dogecoin. | -| [CK-Doge Canister](https://github.com/ldclabs/ck-doge/tree/main/src/ck-doge-canister) | - | - | Interact with Dogecoin network from the Internet Computer. | -| [CK-Doge Minter](https://github.com/ldclabs/ck-doge/tree/main/src/ck-doge-minter) | - | - | Mint and burn `ckDOGE` <-> `DOGE` on the Internet Computer. | +| [CK-Doge Canister](https://github.com/ldclabs/ck-doge/tree/main/src/ck-doge-canister) | - | - | Interact with Dogecoin network from the Internet Computer. | +| [CK-Doge Minter](https://github.com/ldclabs/ck-doge/tree/main/src/ck-doge-minter) | - | - | Mint and burn `ckDOGE` <-> `DOGE` on the Internet Computer. | ## Overview diff --git a/src/ck-doge-canister/Cargo.toml b/src/ck-doge-canister/Cargo.toml index 430e816..bb28bae 100644 --- a/src/ck-doge-canister/Cargo.toml +++ b/src/ck-doge-canister/Cargo.toml @@ -30,9 +30,9 @@ num-traits = { workspace = true } once_cell = { workspace = true } ic-cdk-timers = { workspace = true } ic-stable-structures = { workspace = true } +icrc-ledger-types = { workspace = true } lazy_static = { workspace = true } bitcoin = { workspace = true } dogecoin = { path = "../dogecoin", version = "0.5" } getrandom = { version = "0.2", features = ["custom"] } ic-crypto-extended-bip32 = { git = "https://github.com/dfinity/ic/", rev = "d19fa446ab35780b2c6d8b82ea32d808cca558d5" } -icrc-ledger-types = { git = "https://github.com/dfinity/ic/", rev = "d19fa446ab35780b2c6d8b82ea32d808cca558d5" } diff --git a/src/ck-doge-canister/src/api_query.rs b/src/ck-doge-canister/src/api_query.rs index 2dc26ca..ef7517c 100644 --- a/src/ck-doge-canister/src/api_query.rs +++ b/src/ck-doge-canister/src/api_query.rs @@ -1,6 +1,7 @@ use bitcoin::hashes::sha256d; use candid::{CandidType, Principal}; use dogecoin::canister::*; +use serde_bytes::ByteArray; use std::{collections::BTreeSet, str::FromStr}; use crate::{is_authenticated, is_controller_or_manager, store, Account}; @@ -101,12 +102,12 @@ fn get_utx(id: String) -> Result { } #[ic_cdk::query] -fn get_utx_b(txid: ByteN<32>) -> Option { +fn get_utx_b(txid: ByteArray<32>) -> Option { store::get_utx(&txid) } #[ic_cdk::query] -fn get_tx_status(txid: ByteN<32>) -> Option { +fn get_tx_status(txid: ByteArray<32>) -> Option { store::get_tx_block_height(&txid).map(|height| { store::state::with(|s| TxStatus { height, @@ -131,7 +132,7 @@ fn list_utxos(addr: String, take: u16, confirmed: bool) -> Result, take: u16, confirmed: bool) -> Result { +fn list_utxos_b(address: ByteArray<21>, take: u16, confirmed: bool) -> Result { let utxos = store::list_utxos(&address, take.clamp(10, 10000) as usize, confirmed); store::state::with(|s| { Ok(UtxosOutput { @@ -150,6 +151,6 @@ fn get_balance(addr: String) -> Result { } #[ic_cdk::query] -fn get_balance_b(address: ByteN<21>) -> u64 { +fn get_balance_b(address: ByteArray<21>) -> u64 { store::get_balance(&address) } diff --git a/src/ck-doge-canister/src/lib.rs b/src/ck-doge-canister/src/lib.rs index 37cc734..80233b5 100644 --- a/src/ck-doge-canister/src/lib.rs +++ b/src/ck-doge-canister/src/lib.rs @@ -1,6 +1,7 @@ use candid::Principal; use dogecoin::canister; use dogecoin::canister::*; +use serde_bytes::ByteArray; use std::collections::BTreeSet; use crate::api_init::ChainArgs; diff --git a/src/ck-doge-canister/src/store.rs b/src/ck-doge-canister/src/store.rs index 4af4fa3..0af35f9 100644 --- a/src/ck-doge-canister/src/store.rs +++ b/src/ck-doge-canister/src/store.rs @@ -12,7 +12,7 @@ use ic_stable_structures::{ DefaultMemoryImpl, StableBTreeMap, StableCell, Storable, }; use serde::{Deserialize, Serialize}; -use serde_bytes::ByteBuf; +use serde_bytes::{ByteArray, ByteBuf}; use std::{ borrow::Cow, cell::RefCell, @@ -46,25 +46,25 @@ pub struct State { pub min_confirmations: u32, pub tip_height: u64, - pub tip_blockhash: ByteN<32>, + pub tip_blockhash: ByteArray<32>, pub processed_height: u64, - pub processed_blockhash: ByteN<32>, + pub processed_blockhash: ByteArray<32>, pub confirmed_height: u64, - pub confirmed_blockhash: ByteN<32>, + pub confirmed_blockhash: ByteArray<32>, pub start_height: u64, - pub start_blockhash: ByteN<32>, + pub start_blockhash: ByteArray<32>, pub last_errors: VecDeque, pub managers: BTreeSet, pub rpc_agents: Vec, - pub unconfirmed_utxs: BTreeMap, UnspentTxState>, - pub unconfirmed_utxos: BTreeMap, (UtxoStates, SpentUtxos)>, - processed_blocks: VecDeque<(u64, ByteN<32>)>, + pub unconfirmed_utxs: BTreeMap, UnspentTxState>, + pub unconfirmed_utxos: BTreeMap, (UtxoStates, SpentUtxos)>, + processed_blocks: VecDeque<(u64, ByteArray<32>)>, } impl State { @@ -125,7 +125,7 @@ impl Storable for UnspentTxState { // address -> UnspentOutput #[derive(Clone, Default, Deserialize, Serialize, PartialEq, Eq, PartialOrd, Ord, Hash)] -pub struct UtxoState(pub u64, pub ByteN<32>, pub u32, pub u64); +pub struct UtxoState(pub u64, pub ByteArray<32>, pub u32, pub u64); impl Storable for UtxoState { const BOUND: Bound = Bound::Bounded { max_size: 58, @@ -498,21 +498,21 @@ pub fn confirm_utxos() -> Result { }) } -pub fn get_utx(txid: &ByteN<32>) -> Option { +pub fn get_utx(txid: &ByteArray<32>) -> Option { state::with(|s| match s.unconfirmed_utxs.get(txid) { Some(utx) => Some(UnspentTx::from(utx.clone())), None => UTXS.with(|r| r.borrow().get(txid).map(UnspentTx::from)), }) } -pub fn get_tx_block_height(txid: &ByteN<32>) -> Option { +pub fn get_tx_block_height(txid: &ByteArray<32>) -> Option { state::with(|s| match s.unconfirmed_utxs.get(txid) { Some(utx) => Some(utx.0), None => UTXS.with(|r| r.borrow().get(txid).map(|utx| utx.0)), }) } -pub fn get_balance(addr: &ByteN<21>) -> u64 { +pub fn get_balance(addr: &ByteArray<21>) -> u64 { let mut res = UTXOS.with(|r| r.borrow().get(addr).unwrap_or_default()).0; state::with(|s| { if let Some((uts, sts)) = s.unconfirmed_utxos.get(addr) { @@ -525,7 +525,7 @@ pub fn get_balance(addr: &ByteN<21>) -> u64 { res.into_iter().map(|v| v.3).sum() } -pub fn list_utxos(addr: &ByteN<21>, take: usize, confirmed: bool) -> Vec { +pub fn list_utxos(addr: &ByteArray<21>, take: usize, confirmed: bool) -> Vec { let mut res = UTXOS.with(|r| r.borrow().get(addr).unwrap_or_default()).0; if !confirmed { state::with(|s| { @@ -542,8 +542,8 @@ pub fn list_utxos(addr: &ByteN<21>, take: usize, confirmed: bool) -> Vec { } fn process_spent_tx( - unconfirmed_utxs: &mut BTreeMap, UnspentTxState>, - unconfirmed_utxos: &mut BTreeMap, (UtxoStates, SpentUtxos)>, + unconfirmed_utxs: &mut BTreeMap, UnspentTxState>, + unconfirmed_utxos: &mut BTreeMap, (UtxoStates, SpentUtxos)>, utm: &StableBTreeMap<[u8; 32], UnspentTxState, Memory>, chain: &ChainParams, tx: &transaction::Transaction, @@ -551,7 +551,7 @@ fn process_spent_tx( height: u64, ) -> Result<(), String> { for txin in tx.input.iter() { - let previd: ByteN<32> = (*txin.prevout.txid).into(); + let previd: ByteArray<32> = (*txin.prevout.txid).into(); if let std::collections::btree_map::Entry::Vacant(e) = unconfirmed_utxs.entry(previd) { if let Some(utx) = utm.get(&previd) { // load unspent tx from stable storage @@ -569,7 +569,7 @@ fn process_spent_tx( // move spent utxo if let Some(addr) = addr { - let addr: ByteN<21> = addr.0.into(); + let addr: ByteArray<21> = addr.0.into(); let utxo = UtxoState(utx.0, previd, txin.prevout.vout, txout.value); match unconfirmed_utxos.get_mut(&addr) { Some((uts, sts)) => { @@ -599,8 +599,8 @@ fn process_spent_tx( } fn add_unspent_txouts( - unconfirmed_utxs: &mut BTreeMap, UnspentTxState>, - unconfirmed_utxos: &mut BTreeMap, (UtxoStates, SpentUtxos)>, + unconfirmed_utxs: &mut BTreeMap, UnspentTxState>, + unconfirmed_utxos: &mut BTreeMap, (UtxoStates, SpentUtxos)>, chain: &ChainParams, tx: &transaction::Transaction, txid: Txid, @@ -622,7 +622,7 @@ fn add_unspent_txouts( let (_, addr) = script::classify_script(txout.script_pubkey.as_bytes(), chain); if let Some(addr) = addr { - let addr: ByteN<21> = addr.0.into(); + let addr: ByteArray<21> = addr.0.into(); let utxo = UtxoState(height, txid.0, vout as u32, txout.value); match unconfirmed_utxos.get_mut(&addr) { Some((uts, _sts)) => { @@ -645,13 +645,13 @@ fn add_unspent_txouts( } fn flush_confirmed_utxos( - unconfirmed_utxs: &mut BTreeMap, UnspentTxState>, - unconfirmed_utxos: &mut BTreeMap, (UtxoStates, SpentUtxos)>, + unconfirmed_utxs: &mut BTreeMap, UnspentTxState>, + unconfirmed_utxos: &mut BTreeMap, (UtxoStates, SpentUtxos)>, utm: &mut StableBTreeMap<[u8; 32], UnspentTxState, Memory>, xom: &mut StableBTreeMap<[u8; 21], UtxoStates, Memory>, confirmed_height: u64, ) -> Result<(), String> { - let confirmed_txids: Vec> = unconfirmed_utxs + let confirmed_txids: Vec> = unconfirmed_utxs .iter() .filter_map(|(txid, utx)| { // remove the tx if all outputs are spent @@ -684,7 +684,7 @@ fn flush_confirmed_utxos( unconfirmed_utxs.remove(&txid); } - let empty_addrs: Vec> = unconfirmed_utxos + let empty_addrs: Vec> = unconfirmed_utxos .iter_mut() .filter_map(|(addr, (uts, sts))| { let mut confirmed_utxos: BTreeSet = BTreeSet::new(); diff --git a/src/ck-doge-minter/Cargo.toml b/src/ck-doge-minter/Cargo.toml index 93209ff..85552b4 100644 --- a/src/ck-doge-minter/Cargo.toml +++ b/src/ck-doge-minter/Cargo.toml @@ -30,9 +30,9 @@ num-traits = { workspace = true } once_cell = { workspace = true } ic-cdk-timers = { workspace = true } ic-stable-structures = { workspace = true } +icrc-ledger-types = { workspace = true } lazy_static = { workspace = true } bitcoin = { workspace = true } dogecoin = { path = "../dogecoin", version = "0.5" } getrandom = { version = "0.2", features = ["custom"] } ic-crypto-extended-bip32 = { git = "https://github.com/dfinity/ic/", rev = "d19fa446ab35780b2c6d8b82ea32d808cca558d5" } -icrc-ledger-types = { git = "https://github.com/dfinity/ic/", rev = "d19fa446ab35780b2c6d8b82ea32d808cca558d5" } diff --git a/src/ck-doge-minter/src/store.rs b/src/ck-doge-minter/src/store.rs index 587e58e..cbfd706 100644 --- a/src/ck-doge-minter/src/store.rs +++ b/src/ck-doge-minter/src/store.rs @@ -15,7 +15,7 @@ use ic_stable_structures::{ }; use icrc_ledger_types::icrc1::transfer::Memo; use serde::{Deserialize, Serialize}; -use serde_bytes::ByteBuf; +use serde_bytes::{ByteArray, ByteBuf}; use std::str::FromStr; use std::{ borrow::Cow, @@ -113,7 +113,7 @@ impl Storable for State { } #[derive(Clone, Deserialize, Serialize, PartialEq, Eq, PartialOrd, Ord, Hash)] -pub struct UtxoState(pub u64, pub canister::ByteN<32>, pub u32, pub u64); +pub struct UtxoState(pub u64, pub ByteArray<32>, pub u32, pub u64); impl From for canister::Utxo { fn from(utxo: UtxoState) -> Self { @@ -850,12 +850,7 @@ mod test { #[test] fn test_bound_max_size() { - let v = UtxoState( - u64::MAX, - canister::ByteN::from([255u8; 32]), - u32::MAX, - u64::MAX, - ); + let v = UtxoState(u64::MAX, ByteArray::from([255u8; 32]), u32::MAX, u64::MAX); let v = v.to_bytes(); println!( "UtxoState max_size: {}, {}", @@ -864,7 +859,7 @@ mod test { ); // UtxoState max_size: 58, 841bffffffffffffffff5820ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1affffffff1bffffffffffffffff - let v = UtxoState(0, canister::ByteN::from([0u8; 32]), 0, 0); + let v = UtxoState(0, ByteArray::from([0u8; 32]), 0, 0); let v = v.to_bytes(); println!( "UtxoState min_size: {}, {}", diff --git a/src/dogecoin/src/canister/mod.rs b/src/dogecoin/src/canister/mod.rs index 76038c1..e59d8fb 100644 --- a/src/dogecoin/src/canister/mod.rs +++ b/src/dogecoin/src/canister/mod.rs @@ -1,6 +1,3 @@ -use std::ops::Deref; - -use crate::{script, transaction}; use bitcoin::hashes::{sha256d, Hash}; use candid::CandidType; use serde::{Deserialize, Serialize}; @@ -11,8 +8,10 @@ mod agent; pub use agent::*; +use crate::{script, transaction}; + #[derive(CandidType, Clone, Debug, Default, Deserialize, Serialize)] -pub struct Txid(pub ByteN<32>); +pub struct Txid(pub ByteArray<32>); impl std::str::FromStr for Txid { type Err = String; @@ -29,15 +28,9 @@ impl std::fmt::Display for Txid { } } -impl From> for Txid { - fn from(val: ByteN<32>) -> Self { - Self(val) - } -} - impl From> for Txid { fn from(val: ByteArray<32>) -> Self { - Self(ByteN(val)) + Self(val) } } @@ -60,17 +53,11 @@ impl From for transaction::Txid { } #[derive(CandidType, Clone, Debug, Default, Deserialize, Serialize)] -pub struct Address(pub ByteN<21>); - -impl From> for Address { - fn from(val: ByteN<21>) -> Self { - Self(val) - } -} +pub struct Address(pub ByteArray<21>); impl From> for Address { fn from(val: ByteArray<21>) -> Self { - Self(ByteN(val)) + Self(val) } } @@ -164,7 +151,7 @@ pub struct TxStatus { #[derive(CandidType, Clone, Debug, Serialize, Deserialize)] pub struct BlockRef { - pub hash: ByteN<32>, + pub hash: ByteArray<32>, pub height: u64, } @@ -176,8 +163,8 @@ pub fn sha3_256(data: &[u8]) -> [u8; 32] { #[derive(CandidType, Clone, Debug, Serialize, Deserialize)] pub struct SendTxInput { - pub tx: ByteBuf, // signed or unsigned transaction - pub from_subaccount: Option>, // should be None for signed transaction + pub tx: ByteBuf, // signed or unsigned transaction + pub from_subaccount: Option>, // should be None for signed transaction } #[derive(CandidType, Clone, Debug, Serialize, Deserialize)] @@ -192,7 +179,7 @@ pub struct CreateTxInput { pub address: String, pub amount: u64, pub fee_rate: u64, // units per vByte, should >= 1000 - pub from_subaccount: Option>, + pub from_subaccount: Option>, pub utxos: Vec, // optional, if not provided, will fetch from the UTXOs indexer } @@ -207,71 +194,7 @@ pub struct CreateTxOutput { #[derive(CandidType, Clone, Debug, Serialize, Deserialize)] pub struct UtxosOutput { pub tip_height: u64, - pub tip_blockhash: ByteN<32>, + pub tip_blockhash: ByteArray<32>, pub confirmed_height: u64, pub utxos: Vec, } - -/// ByteN is a wrapper around ByteArray to provide CandidType implementation -#[derive( - Clone, Copy, Default, Debug, Deserialize, Serialize, PartialEq, Eq, PartialOrd, Ord, Hash, -)] -pub struct ByteN(pub ByteArray); - -impl CandidType for ByteN { - fn _ty() -> candid::types::internal::Type { - candid::types::internal::TypeInner::Vec(candid::types::internal::TypeInner::Nat8.into()) - .into() - } - fn idl_serialize(&self, serializer: S) -> Result<(), S::Error> - where - S: candid::types::Serializer, - { - serializer.serialize_blob(self.0.as_slice()) - } -} - -impl Deref for ByteN { - type Target = [u8; N]; - - fn deref(&self) -> &Self::Target { - &self.0 - } -} - -impl AsRef<[u8; N]> for ByteN { - fn as_ref(&self) -> &[u8; N] { - &self.0 - } -} - -impl From<[u8; N]> for ByteN { - fn from(val: [u8; N]) -> Self { - Self(ByteArray::new(val)) - } -} - -impl TryFrom<&[u8]> for ByteN { - type Error = String; - - fn try_from(value: &[u8]) -> Result { - if value.len() != N { - return Err(format!("expected {} bytes, got {}", N, value.len())); - } - let mut bytes = [0u8; N]; - bytes.copy_from_slice(value); - Ok(Self(ByteArray::new(bytes))) - } -} - -impl From> for ByteN { - fn from(val: ByteArray) -> Self { - Self(val) - } -} - -impl From> for ByteArray { - fn from(val: ByteN) -> Self { - val.0 - } -} diff --git a/src/dogecoin/src/jsonrpc.rs b/src/dogecoin/src/jsonrpc.rs index a6ec0a1..29af1b8 100644 --- a/src/dogecoin/src/jsonrpc.rs +++ b/src/dogecoin/src/jsonrpc.rs @@ -154,10 +154,10 @@ impl DogecoinRPC { params: &[Value], ) -> Result { let input = RPCRequest { - jsonrpc: "1.0", + jsonrpc: "2.0", method, params, - id: 0, + id: 1, }; let input = to_vec(&input).map_err(err_string)?; let data = agent.post(idempotency_key, input).await?;