From 4bcf74d871ae419820ee836e6704d51ee24f5793 Mon Sep 17 00:00:00 2001 From: Kris Nuttycombe Date: Wed, 10 Mar 2021 11:31:55 -0700 Subject: [PATCH] Update to use data access API in librustzcash. (#172) * Refactor to updated data access API. * Update to latest librustzcash/data_access_api. Co-authored-by: Kevin Gorham --- Cargo.lock | 396 +++++++++++++++++-------------- Cargo.toml | 6 + src/main/rust/lib.rs | 328 +++++++++++++------------ src/main/rust/local_rpc_types.rs | 4 +- src/main/rust/utils/exception.rs | 8 +- 5 files changed, 402 insertions(+), 340 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d6d137ba..eb469f2d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,9 +2,9 @@ # It is not intended for manual editing. [[package]] name = "addr2line" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b6a2d3371669ab3ca9797670853d61402b03d0b4b9ebf33d677dfa720203072" +checksum = "7c0929d69e78dd9bf5408269919fcbcaeb2e35e5d43e5815517cdc6a8e11a423" dependencies = [ "gimli", ] @@ -48,10 +48,16 @@ dependencies = [ ] [[package]] -name = "aho-corasick" -version = "0.7.13" +name = "ahash" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "043164d8ba5c4c3035fec9bbee8647c0261d788f3474306f93bb65901cae0e86" +checksum = "f6789e291be47ace86a60303502173d84af8327e3627ecf334356ee0f87a164c" + +[[package]] +name = "aho-corasick" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5" dependencies = [ "memchr", ] @@ -82,9 +88,9 @@ checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" [[package]] name = "arrayvec" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" [[package]] name = "autocfg" @@ -94,12 +100,12 @@ checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "backtrace" -version = "0.3.50" +version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46254cf2fdcdf1badb5934448c1bcbe046a56537b3987d96c51a7afc5d03f293" +checksum = "ef5140344c85b01f9bbb4d4b7288a8aa4b3287ccef913a14bcc78a1063623598" dependencies = [ "addr2line", - "cfg-if", + "cfg-if 1.0.0", "libc", "miniz_oxide", "object", @@ -108,9 +114,9 @@ dependencies = [ [[package]] name = "base-x" -version = "0.2.6" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b20b618342cf9891c292c4f5ac2cde7287cc5c87e87e9c769d617793607dec1" +checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b" [[package]] name = "base58" @@ -140,6 +146,12 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" +[[package]] +name = "base64" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" + [[package]] name = "bech32" version = "0.7.2" @@ -148,16 +160,16 @@ checksum = "cdcf67bb7ba7797a081cd19009948ab533af7c355d5caf1d08c777582d351e9c" [[package]] name = "bellman" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc584b78257b78b8359e751b140921df627ae90087818da4d316b1e83523c0c5" +checksum = "7089887635778eabf0038a166f586eee5413fb85c8fa6c9a754914f0f644f49f" dependencies = [ "bitvec", "blake2s_simd", "byteorder", "crossbeam", "ff", - "futures 0.1.29", + "futures 0.1.30", "futures-cpupool", "group", "num_cpus", @@ -185,9 +197,9 @@ dependencies = [ [[package]] name = "blake2b_simd" -version = "0.5.10" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8fb2d74254a3a0b5cac33ac9f8ed0e44aa50378d9dbb2e5d83bd21ed1dc2c8a" +checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" dependencies = [ "arrayref", "arrayvec", @@ -196,9 +208,9 @@ dependencies = [ [[package]] name = "blake2s_simd" -version = "0.5.10" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab9e07352b829279624ceb7c64adb4f585dacdb81d35cafae81139ccd617cf44" +checksum = "9e461a7034e85b211a4acb57ee2e6730b32912b06c08cc242243c39fc21ae6a2" dependencies = [ "arrayref", "arrayvec", @@ -325,6 +337,12 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + [[package]] name = "cloudabi" version = "0.0.3" @@ -336,9 +354,9 @@ dependencies = [ [[package]] name = "combine" -version = "4.3.2" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2809f67365382d65fd2b6d9c22577231b954ed27400efeafbe687bda75abcc0b" +checksum = "b9417a0c314565e2abffaece67e95a8cb51f9238cd39f3764d9dfdf09e72b20c" dependencies = [ "bytes", "memchr", @@ -347,9 +365,9 @@ dependencies = [ [[package]] name = "const_fn" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce90df4c658c62f12d78f7508cf92f9173e5184a539c10bfe54a3107b3ffd0f2" +checksum = "c478836e029dcef17fb47c89023448c64f781a046e0300e257ad8225ae59afab" [[package]] name = "constant_time_eq" @@ -369,12 +387,12 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69323bff1fb41c635347b8ead484a5ca6c3f11914d784170b158d8449ab07f8e" dependencies = [ - "cfg-if", + "cfg-if 0.1.10", "crossbeam-channel", "crossbeam-deque", "crossbeam-epoch", "crossbeam-queue", - "crossbeam-utils", + "crossbeam-utils 0.7.2", ] [[package]] @@ -383,7 +401,7 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87" dependencies = [ - "crossbeam-utils", + "crossbeam-utils 0.7.2", "maybe-uninit", ] @@ -394,7 +412,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285" dependencies = [ "crossbeam-epoch", - "crossbeam-utils", + "crossbeam-utils 0.7.2", "maybe-uninit", ] @@ -405,8 +423,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" dependencies = [ "autocfg", - "cfg-if", - "crossbeam-utils", + "cfg-if 0.1.10", + "crossbeam-utils 0.7.2", "lazy_static", "maybe-uninit", "memoffset", @@ -419,8 +437,8 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570" dependencies = [ - "cfg-if", - "crossbeam-utils", + "cfg-if 0.1.10", + "crossbeam-utils 0.7.2", "maybe-uninit", ] @@ -431,7 +449,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" dependencies = [ "autocfg", - "cfg-if", + "cfg-if 0.1.10", + "lazy_static", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d96d1e189ef58269ebe5b97953da3274d83a93af647c2ddd6f9dab28cedb8d" +dependencies = [ + "autocfg", + "cfg-if 1.0.0", "lazy_static", ] @@ -507,7 +536,7 @@ dependencies = [ [[package]] name = "equihash" version = "0.1.0" -source = "git+https://github.com/zcash/librustzcash.git?rev=04a2bd4ad86980e0c2862706bd402b85b9dd1965#04a2bd4ad86980e0c2862706bd402b85b9dd1965" +source = "git+https://github.com/nuttycom/librustzcash?branch=data_access_api#7ac08631b913d6fb917d062c2f1654e2568d350b" dependencies = [ "blake2b_simd", "byteorder", @@ -616,15 +645,15 @@ checksum = "0ba62103ce691c2fd80fbae2213dfdda9ce60804973ac6b6e97de818ea7f52c8" [[package]] name = "futures" -version = "0.1.29" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b980f2816d6ee8673b6517b52cb0e808a180efc92e5c19d02cdda79066703ef" +checksum = "4c7e4c2612746b0df8fed4ce0c69156021b704c9aefa360311c04e6e9e002eed" [[package]] name = "futures" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e05b85ec287aac0dc34db7d4a569323df697f9c55b99b15d6b4ef8cde49f613" +checksum = "9b3b0c040a1fe6529d30b3c5944b280c7f0dcb2930d2c3062bca967b602583d0" dependencies = [ "futures-channel", "futures-core", @@ -637,9 +666,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f366ad74c28cca6ba456d95e6422883cfb4b252a83bed929c83abfdbbf2967d5" +checksum = "4b7109687aa4e177ef6fe84553af6280ef2778bdb7783ba44c9dc3399110fe64" dependencies = [ "futures-core", "futures-sink", @@ -647,9 +676,9 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59f5fff90fd5d971f936ad674802482ba441b6f09ba5e15fd8b39145582ca399" +checksum = "847ce131b72ffb13b6109a221da9ad97a64cbe48feb1028356b836b47b8f1748" [[package]] name = "futures-cpupool" @@ -657,15 +686,15 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" dependencies = [ - "futures 0.1.29", + "futures 0.1.30", "num_cpus", ] [[package]] name = "futures-executor" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10d6bb888be1153d3abeb9006b11b02cf5e9b209fda28693c31ae1e4e012e314" +checksum = "4caa2b2b68b880003057c1dd49f1ed937e38f22fcf6c212188a121f08cf40a65" dependencies = [ "futures-core", "futures-task", @@ -674,15 +703,15 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de27142b013a8e869c14957e6d2edeef89e97c289e69d042ee3a49acd8b51789" +checksum = "611834ce18aaa1bd13c4b374f5d653e1027cf99b6b502584ff8c9a64413b30bb" [[package]] name = "futures-macro" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0b5a30a4328ab5473878237c447333c093297bded83a4983d10f4deea240d39" +checksum = "77408a692f1f97bcc61dc001d752e00643408fbc922e4d634c655df50d595556" dependencies = [ "proc-macro-hack", "proc-macro2", @@ -692,24 +721,24 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f2032893cb734c7a05d85ce0cc8b8c4075278e93b24b66f9de99d6eb0fa8acc" +checksum = "f878195a49cee50e006b02b93cf7e0a95a38ac7b776b4c4d9cc1207cd20fcb3d" [[package]] name = "futures-task" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb66b5f09e22019b1ab0830f7785bcea8e7a42148683f99214f73f8ec21a626" +checksum = "7c554eb5bf48b2426c4771ab68c6b14468b6e76cc90996f528c3338d761a4d0d" dependencies = [ "once_cell", ] [[package]] name = "futures-util" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8764574ff08b701a084482c3c7031349104b07ac897393010494beaa18ce32c6" +checksum = "d304cff4a7b99cfb7986f7d43fbe93d175e72e704a8860787cc95e9ffd85cbd2" dependencies = [ "futures-channel", "futures-core", @@ -750,16 +779,16 @@ version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6" dependencies = [ - "cfg-if", + "cfg-if 0.1.10", "libc", "wasi", ] [[package]] name = "gimli" -version = "0.22.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaf91faf136cb47367fa430cd46e37a788775e7fa104f8b4bcb3861dc389b724" +checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" [[package]] name = "group" @@ -781,7 +810,7 @@ checksum = "f61e21f9181e4f3732976a62a81f2b53f1195867d99325b5b9408b19219137e2" dependencies = [ "base64 0.9.3", "bytes", - "futures 0.3.5", + "futures 0.3.8", "httpbis", "log", "log-ndc", @@ -801,6 +830,24 @@ dependencies = [ "protobuf", ] +[[package]] +name = "hashbrown" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashlink" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d99cf782f0dc4372d26846bec3de7804ceb5df083c2d4462c0b8d2330e894fa8" +dependencies = [ + "hashbrown", +] + [[package]] name = "hdwallet" version = "0.2.5" @@ -815,9 +862,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c30f6d0bc6b00693347368a67d41b58f2fb851215ff1da49e90fe2c5c667151" +checksum = "5aca5565f760fb5b220e499d72710ed156fdb74e631659e99377d9ebfbd13ae8" dependencies = [ "libc", ] @@ -835,7 +882,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d3e4404f8f87938a2db89336609bde64363f5a556b15af936343e7252c9648d" dependencies = [ "bytes", - "futures 0.3.5", + "futures 0.3.8", "log", "log-ndc", "net2", @@ -884,9 +931,9 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] name = "js-sys" -version = "0.3.45" +version = "0.3.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca059e81d9486668f12d455a4ea6daa600bd408134cd17e3d3fb5a32d1f016f8" +checksum = "cf3d7383929f7c9c7c2d0fa596f325832df98c3704f2c60553080f7127a58175" dependencies = [ "wasm-bindgen", ] @@ -929,41 +976,35 @@ checksum = "db65c6da02e61f55dae90a0ae427b2a5f6b3e8db09f58d10efab23af92592616" dependencies = [ "arrayvec", "bitflags", - "cfg-if", + "cfg-if 0.1.10", "ryu", "static_assertions", ] [[package]] name = "libc" -version = "0.2.77" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f96b10ec2560088a8e76961b00d47107b3a625fecb76dedb29ee7ccbf98235" +checksum = "4d58d1b70b004888f764dfbf6a26a3b0342a1632d33968e4a179d8011c760614" [[package]] name = "libsqlite3-sys" -version = "0.20.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3a245984b1b06c291f46e27ebda9f369a94a1ab8461d0e845e23f9ced01f5db" +checksum = "64d31059f22935e6c31830db5249ba2b7ecd54fd73a9909286f0a67aa55c2fbd" dependencies = [ "cc", "pkg-config", "vcpkg", ] -[[package]] -name = "linked-hash-map" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8dd5a6d5999d9907cda8ed67bbd137d3af8085216c2ac62de5be860bd41f304a" - [[package]] name = "log" version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b" dependencies = [ - "cfg-if", + "cfg-if 0.1.10", ] [[package]] @@ -984,15 +1025,6 @@ dependencies = [ "log", ] -[[package]] -name = "lru-cache" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" -dependencies = [ - "linked-hash-map", -] - [[package]] name = "maybe-uninit" version = "2.0.0" @@ -1001,9 +1033,9 @@ checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" [[package]] name = "memchr" -version = "2.3.3" +version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" +checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525" [[package]] name = "memoffset" @@ -1016,9 +1048,9 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c60c0dfe32c10b43a144bad8fc83538c52f58302c92300ea7ec7bf7b38d5a7b9" +checksum = "0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19d" dependencies = [ "adler", "autocfg", @@ -1026,11 +1058,11 @@ dependencies = [ [[package]] name = "mio" -version = "0.6.22" +version = "0.6.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430" +checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" dependencies = [ - "cfg-if", + "cfg-if 0.1.10", "fuchsia-zircon", "fuchsia-zircon-sys", "iovec", @@ -1056,9 +1088,9 @@ dependencies = [ [[package]] name = "miow" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" +checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" dependencies = [ "kernel32-sys", "net2", @@ -1068,11 +1100,11 @@ dependencies = [ [[package]] name = "net2" -version = "0.2.35" +version = "0.2.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ebc3ec692ed7c9a255596c67808dee269f64655d8baf7b4f0638e51ba1d6853" +checksum = "d7cf75f38f16cb05ea017784dc6dbfd354f76c223dba37701734c4f5a9337d02" dependencies = [ - "cfg-if", + "cfg-if 0.1.10", "libc", "winapi 0.3.9", ] @@ -1090,9 +1122,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7f3fc75e3697059fb1bc465e3d8cca6cf92f56854f201158b3f9c77d5a3cfa0" +checksum = "5e9a41747ae4633fce5adffb4d2e81ffc5e89593cb19917f8fb2cc5ff76507bf" dependencies = [ "autocfg", "num-integer", @@ -1101,9 +1133,9 @@ dependencies = [ [[package]] name = "num-integer" -version = "0.1.43" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d59457e662d541ba17869cf51cf177c0b5f0cbf476c66bdc90bf1edac4f875b" +checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" dependencies = [ "autocfg", "num-traits", @@ -1111,9 +1143,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac267bcc07f48ee5f8935ab0d24f316fb722d7a1292e2913f0cc196b29ffd611" +checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" dependencies = [ "autocfg", ] @@ -1130,15 +1162,15 @@ dependencies = [ [[package]] name = "object" -version = "0.20.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ab52be62400ca80aa00285d25253d7f7c437b7375c4de678f5405d3afe82ca5" +checksum = "8d3b63360ec3cb337817c2dbd47ab4a0f170d285d8e5a2064600f3def1402397" [[package]] name = "once_cell" -version = "1.4.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "260e51e7efe62b592207e9e13a68e43692a7a279171d6ba57abd208bf23645ad" +checksum = "13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0" [[package]] name = "opaque-debug" @@ -1170,18 +1202,18 @@ checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" [[package]] name = "pin-project" -version = "0.4.23" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca4433fff2ae79342e497d9f8ee990d174071408f28f726d6d83af93e58e48aa" +checksum = "9ccc2237c2c489783abd8c4c80e5450fc0e98644555b1364da68cc29aa151ca7" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "0.4.23" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c0e815c3ee9a031fdf5af21c10aa17c573c9c6a566328d99e3936c34e36461f" +checksum = "f8e8d2bf0b23038a4424865103a4df472855692821aab4e4f5c3312d461d9e5f" dependencies = [ "proc-macro2", "quote", @@ -1190,9 +1222,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.1.7" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282adbf10f2698a7a77f8e983a74b2d18176c19a7fd32a45446139ae7b02b715" +checksum = "c917123afa01924fc84bb20c4c03f004d9c38e5127e3c039bbf7f4b9c76a2f6b" [[package]] name = "pin-utils" @@ -1202,21 +1234,21 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.18" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d36492546b6af1463394d46f0c834346f31548646f6ba10849802c9c9a27ac33" +checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" [[package]] name = "ppv-lite86" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c36fa947111f5c62a733b652544dd0016a43ce89619538a8ef92724a6f501a20" +checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" [[package]] name = "proc-macro-hack" -version = "0.5.18" +version = "0.5.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99c605b9a0adc77b7211c6b1f722dcb613d68d66859a44f3d485a6da332b0598" +checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" [[package]] name = "proc-macro-nested" @@ -1226,36 +1258,36 @@ checksum = "eba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5a" [[package]] name = "proc-macro2" -version = "1.0.21" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36e28516df94f3dd551a587da5357459d9b36d945a7c37c3557928c1c2ff2a2c" +checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" dependencies = [ "unicode-xid", ] [[package]] name = "protobuf" -version = "2.17.0" +version = "2.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb14183cc7f213ee2410067e1ceeadba2a7478a59432ff0747a335202798b1e2" +checksum = "da78e04bc0e40f36df43ecc6575e4f4b180e8156c4efd73f13d5619479b05696" dependencies = [ "bytes", ] [[package]] name = "protobuf-codegen" -version = "2.17.0" +version = "2.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3360a1e017386e7d9fc65f7425bef9bcf1e62871f8b5a7b0570ef2ff5073f9a0" +checksum = "49b2b929363268881afe6d24351e8b711ea5a1901a5e1549d3723ebcc5d3696d" dependencies = [ "protobuf", ] [[package]] name = "protobuf-codegen-pure" -version = "2.17.0" +version = "2.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899e61d9d3db627471119baf57db06385c12723c2f47a03dd4244c693ca6d85e" +checksum = "02a4b843fcc85f42b9f717a34481b9a323527f1b6ac62b20776514c044fc7da9" dependencies = [ "protobuf", "protobuf-codegen", @@ -1364,9 +1396,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.3.9" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3780fcf44b193bc4d09f36d2a3c87b251da4a046c87795a0d35f4f927ad8e6" +checksum = "38cf2c13ed4745de91a5eb834e11c00bcc3709e773173b2ce4c56c9fbde04b9c" dependencies = [ "aho-corasick", "memchr", @@ -1376,9 +1408,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.18" +version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26412eb97c6b088a6997e05f69403a802a92d520de2f8e63c2b65f9e0f47c4e8" +checksum = "3b181ba2dcf07aaccad5448e8ead58db5b742cf85dfe035e2227f137a539a189" [[package]] name = "ring" @@ -1408,15 +1440,15 @@ dependencies = [ [[package]] name = "rusqlite" -version = "0.24.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c78c3275d9d6eb684d2db4b2388546b32fdae0586c20a82f3905d21ea78b9ef" +checksum = "7e3d4791ab5517217f51216a84a688b53c1ebf7988736469c538d02f46ddba68" dependencies = [ "bitflags", "fallible-iterator", "fallible-streaming-iterator", + "hashlink", "libsqlite3-sys", - "lru-cache", "memchr", "smallvec", "time", @@ -1424,21 +1456,21 @@ dependencies = [ [[package]] name = "rust-argon2" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dab61250775933275e84053ac235621dfb739556d5c54a2f2e9313b7cf43a19" +checksum = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb" dependencies = [ - "base64 0.12.3", + "base64 0.13.0", "blake2b_simd", "constant_time_eq", - "crossbeam-utils", + "crossbeam-utils 0.8.1", ] [[package]] name = "rustc-demangle" -version = "0.1.16" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" +checksum = "6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232" [[package]] name = "rustc_version" @@ -1534,15 +1566,15 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.116" +version = "1.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96fe57af81d28386a513cbc6858332abc6117cfdb5999647c6444b8f43a370a5" +checksum = "b88fa983de7720629c9387e9f517353ed404164b1e482c970a90c1a4aaf7dc1a" [[package]] name = "serde_derive" -version = "1.0.116" +version = "1.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f630a6370fd8e457873b4bd2ffdae75408bc291ba72be773772a4c2a065d9ae8" +checksum = "cbd1ae72adb44aab48f325a02444a5fc079349a8d804c1fc922aed3f7454c74e" dependencies = [ "proc-macro2", "quote", @@ -1551,9 +1583,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.57" +version = "1.0.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "164eacbdb13512ec2745fb09d51fd5b22b0d65ed294a1dcf7285a360c80a675c" +checksum = "dcac07dbffa1c65e7f816ab9eba78eb142c6d44410f4eeba1e26e4f5dfa56b95" dependencies = [ "itoa", "ryu", @@ -1580,12 +1612,12 @@ dependencies = [ [[package]] name = "sha2" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2933378ddfeda7ea26f48c555bdad8bb446bf8a3d17832dc83e380d444cfb8c1" +checksum = "6e7aab86fe2149bad8c507606bdb3f4ef5e7b2380eb92350f56122cca72a42a8" dependencies = [ "block-buffer 0.9.0", - "cfg-if", + "cfg-if 1.0.0", "cpuid-bool", "digest 0.9.0", "opaque-debug 0.3.0", @@ -1599,9 +1631,9 @@ checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" [[package]] name = "smallvec" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbee7696b84bbf3d89a1c2eccff0850e3047ed46bfcd2e92c29a2d074d57e252" +checksum = "7acad6f34eb9e8a259d3283d1e8c1d34d7415943d4895f65cc73813c7396fc85" [[package]] name = "spin" @@ -1611,9 +1643,9 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] name = "standback" -version = "0.2.10" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33a71ea1ea5f8747d1af1979bfb7e65c3a025a70609f04ceb78425bc5adad8e6" +checksum = "cf906c8b8fc3f6ecd1046e01da1d8ddec83e48c8b08b84dcc02b585a6bedf5a8" dependencies = [ "version_check", ] @@ -1681,9 +1713,9 @@ checksum = "343f3f510c2915908f155e94f17220b19ccfacf2a64a2a5d8004f2c3e311e7fd" [[package]] name = "syn" -version = "1.0.41" +version = "1.0.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6690e3e9f692504b941dc6c3b188fd28df054f7fb8469ab40680df52fdcc842b" +checksum = "8833e20724c24de12bbaba5ad230ea61c3eafb05b881c7c9d3cfe8638b187e68" dependencies = [ "proc-macro2", "quote", @@ -1713,9 +1745,9 @@ dependencies = [ [[package]] name = "time" -version = "0.2.21" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c2e31fb28e2a9f01f5ed6901b066c1ba2333c04b64dc61254142bafcb3feb2c" +checksum = "bcdaeea317915d59b2b4cd3b5efcd156c309108664277793f5351700c02ce98b" dependencies = [ "const_fn", "libc", @@ -1728,9 +1760,9 @@ dependencies = [ [[package]] name = "time-macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ae9b6e9f095bc105e183e3cd493d72579be3181ad4004fceb01adbe9eecab2d" +checksum = "957e9c6e26f12cb6d0dd7fc776bb67a706312e7299aed74c8dd5b17ebb27e2f1" dependencies = [ "proc-macro-hack", "time-macros-impl", @@ -1785,9 +1817,9 @@ dependencies = [ [[package]] name = "tokio" -version = "0.2.22" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d34ca54d84bf2b5b4d7d31e901a8464f7b60ac145a284fba25ceb801f2ddccd" +checksum = "a6d7ad61edd59bfcc7e80dababf0f4aed2e6d5e0ba1659356ae889752dfc12ff" dependencies = [ "bytes", "iovec", @@ -1818,7 +1850,7 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6aa2700417c405c38f5e6902d699345241c28c0b7ade4abaad71e35a87eb1564" dependencies = [ - "cfg-if", + "cfg-if 0.1.10", "libc", ] @@ -1865,19 +1897,19 @@ checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" [[package]] name = "wasm-bindgen" -version = "0.2.68" +version = "0.2.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ac64ead5ea5f05873d7c12b545865ca2b8d28adfc50a49b84770a3a97265d42" +checksum = "3cd364751395ca0f68cafb17666eee36b63077fb5ecd972bbcd74c90c4bf736e" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.68" +version = "0.2.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f22b422e2a757c35a73774860af8e112bff612ce6cb604224e8e47641a9e4f68" +checksum = "1114f89ab1f4106e5b55e688b828c0ab0ea593a1ea7c094b141b14cbaaec2d62" dependencies = [ "bumpalo", "lazy_static", @@ -1890,9 +1922,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.68" +version = "0.2.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b13312a745c08c469f0b292dd2fcd6411dba5f7160f593da6ef69b64e407038" +checksum = "7a6ac8995ead1f084a8dea1e65f194d0973800c7f571f6edd70adf06ecf77084" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1900,9 +1932,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.68" +version = "0.2.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f249f06ef7ee334cc3b8ff031bfc11ec99d00f34d86da7498396dc1e3b1498fe" +checksum = "b5a48c72f299d80557c7c62e37e7225369ecc0c963964059509fbafe917c7549" dependencies = [ "proc-macro2", "quote", @@ -1913,15 +1945,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.68" +version = "0.2.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d649a3145108d7d3fbcde896a468d1bd636791823c9921135218ad89be08307" +checksum = "7e7811dd7f9398f14cc76efd356f98f03aa30419dea46aa810d71e819fc97158" [[package]] name = "web-sys" -version = "0.3.45" +version = "0.3.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bf6ef87ad7ae8008e15a355ce696bed26012b7caa21605188cfd8214ab51e2d" +checksum = "222b1ef9334f92a21d3fb53dc3fd80f30836959a90f9274a626d7e06315ba3c3" dependencies = [ "js-sys", "wasm-bindgen", @@ -2014,7 +2046,7 @@ dependencies = [ "bls12_381", "bs58", "failure", - "futures 0.3.5", + "futures 0.3.8", "grpc", "grpc-protobuf", "hdwallet", @@ -2027,7 +2059,7 @@ dependencies = [ "protobuf-codegen-pure", "ripemd160", "secp256k1", - "sha2 0.9.1", + "sha2 0.9.2", "tls-api", "tls-api-rustls", "zcash_client_backend", @@ -2039,7 +2071,7 @@ dependencies = [ [[package]] name = "zcash_client_backend" version = "0.4.0" -source = "git+https://github.com/zcash/librustzcash.git?rev=04a2bd4ad86980e0c2862706bd402b85b9dd1965#04a2bd4ad86980e0c2862706bd402b85b9dd1965" +source = "git+https://github.com/nuttycom/librustzcash?branch=data_access_api#7ac08631b913d6fb917d062c2f1654e2568d350b" dependencies = [ "base64 0.12.3", "bech32", @@ -2053,14 +2085,16 @@ dependencies = [ "percent-encoding", "protobuf", "protobuf-codegen-pure", + "rand_core 0.5.1", "subtle", + "time", "zcash_primitives", ] [[package]] name = "zcash_client_sqlite" version = "0.2.1" -source = "git+https://github.com/zcash/librustzcash.git?rev=04a2bd4ad86980e0c2862706bd402b85b9dd1965#04a2bd4ad86980e0c2862706bd402b85b9dd1965" +source = "git+https://github.com/nuttycom/librustzcash?branch=data_access_api#7ac08631b913d6fb917d062c2f1654e2568d350b" dependencies = [ "bech32", "bs58", @@ -2078,7 +2112,7 @@ dependencies = [ [[package]] name = "zcash_primitives" version = "0.4.0" -source = "git+https://github.com/zcash/librustzcash.git?rev=04a2bd4ad86980e0c2862706bd402b85b9dd1965#04a2bd4ad86980e0c2862706bd402b85b9dd1965" +source = "git+https://github.com/nuttycom/librustzcash?branch=data_access_api#7ac08631b913d6fb917d062c2f1654e2568d350b" dependencies = [ "aes", "bitvec", @@ -2097,14 +2131,14 @@ dependencies = [ "log", "rand 0.7.3", "rand_core 0.5.1", - "sha2 0.9.1", + "sha2 0.9.2", "subtle", ] [[package]] name = "zcash_proofs" version = "0.4.0" -source = "git+https://github.com/zcash/librustzcash.git?rev=04a2bd4ad86980e0c2862706bd402b85b9dd1965#04a2bd4ad86980e0c2862706bd402b85b9dd1965" +source = "git+https://github.com/nuttycom/librustzcash?branch=data_access_api#7ac08631b913d6fb917d062c2f1654e2568d350b" dependencies = [ "bellman", "blake2b_simd", diff --git a/Cargo.toml b/Cargo.toml index 015ec45f..24d3632c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -56,6 +56,12 @@ zcash_proofs = { git = 'https://github.com/zcash/librustzcash.git', rev='04a2bd4 #zcash_primitives = { path = '../../clones/librustzcash/zcash_primitives' } #zcash_proofs = { path = '../../clones/librustzcash/zcash_proofs' } +[patch.crates-io] +zcash_client_backend = {git = "https://github.com/nuttycom/librustzcash", branch = "data_access_api"} +zcash_client_sqlite = {git = "https://github.com/nuttycom/librustzcash", branch = "data_access_api"} +zcash_primitives = {git = "https://github.com/nuttycom/librustzcash", branch = "data_access_api"} +zcash_proofs = {git = "https://github.com/nuttycom/librustzcash", branch = "data_access_api"} + [features] mainnet = ["zcash_client_sqlite/mainnet"] updater = ["bls12_381", "futures", "grpc", "grpc-protobuf", "httpbis", "tls-api", "tls-api-rustls"] diff --git a/src/main/rust/lib.rs b/src/main/rust/lib.rs index baec6b8e..61437323 100644 --- a/src/main/rust/lib.rs +++ b/src/main/rust/lib.rs @@ -11,64 +11,49 @@ use jni::{ sys::{jboolean, jbyteArray, jint, jlong, JNI_FALSE, JNI_TRUE, jobjectArray, jstring}, }; use log::Level; -use protobuf::{Message, parse_from_bytes}; -use secp256k1::{PublicKey, Secp256k1}; -use sha2::{Digest, Sha256}; +use std::convert::{TryFrom, TryInto}; +use std::panic; +use std::path::Path; +use std::ptr; use zcash_client_backend::{ address::RecipientAddress, + data_api::{ + chain::{scan_cached_blocks, validate_chain}, + error::Error, + wallet::{create_spend_to_address, decrypt_and_store_transaction}, + WalletRead, WalletWrite, + }, encoding::{ decode_extended_full_viewing_key, decode_extended_spending_key, encode_extended_full_viewing_key, encode_extended_spending_key, encode_payment_address, }, keys::spending_key, + wallet::{AccountId, OvkPolicy}, }; use zcash_client_sqlite::{ - chain::{rewind_to_height, validate_combined_chain}, - error::ErrorKind, - init::{init_accounts_table, init_blocks_table, init_data_database}, - query::{ - get_address, get_balance, get_received_memo_as_utf8, get_sent_memo_as_utf8, - get_verified_balance, - }, - scan::{decrypt_and_store_transaction, scan_cached_blocks}, - transact::{create_to_address, OvkPolicy}, + wallet::init::{init_accounts_table, init_blocks_table, init_data_database}, + BlockDB, NoteId, WalletDB, }; use zcash_primitives::{ block::BlockHash, - consensus::{BlockHeight, BranchId}, + consensus::{BlockHeight, BranchId, Parameters}, + legacy::TransparentAddress, note_encryption::Memo, transaction::{components::Amount, Transaction}, zip32::ExtendedFullViewingKey, }; #[cfg(feature = "mainnet")] -use zcash_primitives::consensus::MainNetwork as Network; +use zcash_primitives::consensus::{MainNetwork, MAIN_NETWORK}; + #[cfg(not(feature = "mainnet"))] -use zcash_primitives::consensus::TestNetwork as Network; -#[cfg(feature = "mainnet")] -use zcash_primitives::constants::mainnet::{ - COIN_TYPE, HRP_SAPLING_EXTENDED_FULL_VIEWING_KEY, HRP_SAPLING_EXTENDED_SPENDING_KEY, - HRP_SAPLING_PAYMENT_ADDRESS, -}; -#[cfg(feature = "mainnet")] -use zcash_primitives::constants::mainnet::B58_PUBKEY_ADDRESS_PREFIX; -#[cfg(not(feature = "mainnet"))] -use zcash_primitives::constants::testnet::{ - COIN_TYPE, HRP_SAPLING_EXTENDED_FULL_VIEWING_KEY, HRP_SAPLING_EXTENDED_SPENDING_KEY, - HRP_SAPLING_PAYMENT_ADDRESS, -}; -#[cfg(not(feature = "mainnet"))] -use zcash_primitives::constants::testnet::B58_PUBKEY_ADDRESS_PREFIX; -use zcash_primitives::legacy::TransparentAddress; -use zcash_proofs::prover::LocalTxProver; +use zcash_primitives::consensus::{TestNetwork, TEST_NETWORK}; use local_rpc_types::{TransactionDataList, TransparentTransaction, TransparentTransactionList}; -use std::convert::TryFrom; -use std::convert::TryInto; -use std::panic; -use std::path::Path; -use std::ptr; +use protobuf::{parse_from_bytes, Message}; +use sha2::{Digest, Sha256}; -use crate::utils::exception::unwrap_exc_or; +use hdwallet::{ExtendedPrivKey, KeyIndex}; +use secp256k1::{PublicKey, Secp256k1}; mod utils; @@ -88,6 +73,22 @@ fn print_debug_state() { debug!("Release enabled (congrats, this is NOT a debug build)."); } +#[cfg(feature = "mainnet")] +pub const NETWORK: MainNetwork = MAIN_NETWORK; + +#[cfg(not(feature = "mainnet"))] +pub const NETWORK: TestNetwork = TEST_NETWORK; + +fn wallet_db(env: &JNIEnv<'_>, db_data: JString<'_>) -> Result { + WalletDB::for_path(utils::java_string_to_rust(&env, db_data)) + .map_err(|e| format_err!("Error opening wallet database connection: {}", e)) +} + +fn block_db(env: &JNIEnv<'_>, db_data: JString<'_>) -> Result { + BlockDB::for_path(utils::java_string_to_rust(&env, db_data)) + .map_err(|e| format_err!("Error opening block source database connection: {}", e)) +} + #[no_mangle] pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_jni_RustBackend_initLogs( _env: JNIEnv<'_>, @@ -112,9 +113,9 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_jni_RustBackend_initDataDb( db_data: JString<'_>, ) -> jboolean { let res = panic::catch_unwind(|| { - let db_data = utils::java_string_to_rust(&env, db_data); - - init_data_database(&db_data) + let db_path = utils::java_string_to_rust(&env, db_data); + WalletDB::for_path(db_path) + .and_then(|db| init_data_database(&db)) .map(|()| JNI_TRUE) .map_err(|e| format_err!("Error while initializing data DB: {}", e)) }); @@ -130,7 +131,7 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_jni_RustBackend_initAccount accounts: jint, ) -> jobjectArray { let res = panic::catch_unwind(|| { - let db_data = utils::java_string_to_rust(&env, db_data); + let db_data = wallet_db(&env, db_data)?; let seed = env.convert_byte_array(seed).unwrap(); let accounts = if accounts >= 0 { accounts as u32 @@ -139,29 +140,29 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_jni_RustBackend_initAccount }; let extsks: Vec<_> = (0..accounts) - .map(|account| spending_key(&seed, COIN_TYPE, account)) + .map(|account| spending_key(&seed, NETWORK.coin_type(), account)) .collect(); let extfvks: Vec<_> = extsks.iter().map(ExtendedFullViewingKey::from).collect(); - match init_accounts_table(&db_data, &Network, &extfvks) { - Ok(()) => { + init_accounts_table(&db_data, &NETWORK, &extfvks) + .map(|_| { // Return the ExtendedSpendingKeys for the created accounts - Ok(utils::rust_vec_to_java( + utils::rust_vec_to_java( &env, extsks, "java/lang/String", |env, extsk| { env.new_string(encode_extended_spending_key( - HRP_SAPLING_EXTENDED_SPENDING_KEY, + NETWORK.hrp_sapling_extended_spending_key(), &extsk, )) }, |env| env.new_string(""), - )) - } - Err(e) => Err(format_err!("Error while initializing accounts: {}", e)), - } + ) + }) + .map_err(|e| format_err!("Error while initializing accounts: {}", e)) }); + unwrap_exc_or(&env, res, ptr::null_mut()) } @@ -173,20 +174,23 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_jni_RustBackend_initAccount extfvks_arr: jobjectArray, ) -> jboolean { let res = panic::catch_unwind(|| { - let db_data = utils::java_string_to_rust(&env, db_data); + let db_data = wallet_db(&env, db_data)?; // TODO: avoid all this unwrapping and also surface errors, better let count = env.get_array_length(extfvks_arr).unwrap(); let extfvks = (0..count) .map(|i| env.get_object_array_element(extfvks_arr, i)) .map(|jstr| utils::java_string_to_rust(&env, jstr.unwrap().into())) .map(|vkstr| { - decode_extended_full_viewing_key(HRP_SAPLING_EXTENDED_FULL_VIEWING_KEY, &vkstr) - .unwrap() - .unwrap() + decode_extended_full_viewing_key( + NETWORK.hrp_sapling_extended_full_viewing_key(), + &vkstr, + ) + .unwrap() + .unwrap() }) .collect::>(); - match init_accounts_table(&db_data, &Network, &extfvks) { + match init_accounts_table(&db_data, &NETWORK, &extfvks) { Ok(()) => Ok(JNI_TRUE), Err(e) => Err(format_err!("Error while initializing accounts: {}", e)), } @@ -210,7 +214,7 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_tool_DerivationTool_deriveE }; let extsks: Vec<_> = (0..accounts) - .map(|account| spending_key(&seed, COIN_TYPE, account)) + .map(|account| spending_key(&seed, NETWORK.coin_type(), account)) .collect(); Ok(utils::rust_vec_to_java( @@ -219,7 +223,7 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_tool_DerivationTool_deriveE "java/lang/String", |env, extsk| { env.new_string(encode_extended_spending_key( - HRP_SAPLING_EXTENDED_SPENDING_KEY, + NETWORK.hrp_sapling_extended_spending_key(), &extsk, )) }, @@ -245,7 +249,9 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_tool_DerivationTool_deriveE }; let extfvks: Vec<_> = (0..accounts) - .map(|account| ExtendedFullViewingKey::from(&spending_key(&seed, COIN_TYPE, account))) + .map(|account| { + ExtendedFullViewingKey::from(&spending_key(&seed, NETWORK.coin_type(), account)) + }) .collect(); Ok(utils::rust_vec_to_java( @@ -254,7 +260,7 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_tool_DerivationTool_deriveE "java/lang/String", |env, extfvk| { env.new_string(encode_extended_full_viewing_key( - HRP_SAPLING_EXTENDED_FULL_VIEWING_KEY, + NETWORK.hrp_sapling_extended_full_viewing_key(), &extfvk, )) }, @@ -279,11 +285,11 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_tool_DerivationTool_deriveS return Err(format_err!("accountIndex argument must be positive")); }; - let address = spending_key(&seed, COIN_TYPE, account_index) + let address = spending_key(&seed, NETWORK.coin_type(), account_index) .default_address() .unwrap() .1; - let address_str = encode_payment_address(HRP_SAPLING_PAYMENT_ADDRESS, &address); + let address_str = encode_payment_address(NETWORK.hrp_sapling_payment_address(), &address); let output = env .new_string(address_str) .expect("Couldn't create Java string!"); @@ -301,7 +307,7 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_tool_DerivationTool_deriveS let res = panic::catch_unwind(|| { let extfvk_string = utils::java_string_to_rust(&env, extfvk_string); let extfvk = match decode_extended_full_viewing_key( - HRP_SAPLING_EXTENDED_FULL_VIEWING_KEY, + NETWORK.hrp_sapling_extended_full_viewing_key(), &extfvk_string, ) { Ok(Some(extfvk)) => extfvk, @@ -317,7 +323,7 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_tool_DerivationTool_deriveS }; let address = extfvk.default_address().unwrap().1; - let address_str = encode_payment_address(HRP_SAPLING_PAYMENT_ADDRESS, &address); + let address_str = encode_payment_address(NETWORK.hrp_sapling_payment_address(), &address); let output = env .new_string(address_str) .expect("Couldn't create Java string!"); @@ -335,7 +341,7 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_tool_DerivationTool_deriveE let res = panic::catch_unwind(|| { let extsk_string = utils::java_string_to_rust(&env, extsk_string); let extfvk = match decode_extended_spending_key( - HRP_SAPLING_EXTENDED_SPENDING_KEY, + NETWORK.hrp_sapling_extended_spending_key(), &extsk_string, ) { Ok(Some(extsk)) => ExtendedFullViewingKey::from(&extsk), @@ -352,7 +358,7 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_tool_DerivationTool_deriveE let output = env .new_string(encode_extended_full_viewing_key( - HRP_SAPLING_EXTENDED_FULL_VIEWING_KEY, + NETWORK.hrp_sapling_extended_full_viewing_key(), &extfvk, )) .expect("Couldn't create Java string!"); @@ -373,7 +379,7 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_jni_RustBackend_initBlocksT sapling_tree_string: JString<'_>, ) -> jboolean { let res = panic::catch_unwind(|| { - let db_data = utils::java_string_to_rust(&env, db_data); + let db_data = wallet_db(&env, db_data)?; let hash = { let mut hash = hex::decode(utils::java_string_to_rust(&env, hash_string)).unwrap(); hash.reverse(); @@ -388,7 +394,7 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_jni_RustBackend_initBlocksT hex::decode(utils::java_string_to_rust(&env, sapling_tree_string)).unwrap(); debug!("initializing blocks table with height {}", height); - match init_blocks_table(&db_data, height, hash, time, &sapling_tree) { + match init_blocks_table(&db_data, height.try_into()?, hash, time, &sapling_tree) { Ok(()) => Ok(JNI_TRUE), Err(e) => Err(format_err!("Error while initializing blocks table: {}", e)), } @@ -404,21 +410,25 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_jni_RustBackend_getAddress( account: jint, ) -> jstring { let res = panic::catch_unwind(|| { - let db_data = utils::java_string_to_rust(&env, db_data); - let account = if account >= 0 { - account as u32 - } else { - return Err(format_err!("account argument must be positive")); - }; + let db_data = wallet_db(&env, db_data)?; + let account = AccountId(account.try_into()?); - match get_address(&db_data, account) { - Ok(addr) => { - let output = env.new_string(addr).expect("Couldn't create Java string!"); + match (&db_data).get_address(&NETWORK, account) { + Ok(Some(addr)) => { + let addr_str = encode_payment_address(NETWORK.hrp_sapling_payment_address(), &addr); + let output = env + .new_string(addr_str) + .expect("Couldn't create Java string!"); Ok(output.into_inner()) } + Ok(None) => Err(format_err!( + "No payment address was available for account {:?}", + account + )), Err(e) => Err(format_err!("Error while fetching address: {}", e)), } }); + unwrap_exc_or(&env, res, ptr::null_mut()) } @@ -431,7 +441,7 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_jni_RustBackend_isValidShie let res = panic::catch_unwind(|| { let addr = utils::java_string_to_rust(&env, addr); - match RecipientAddress::decode(&Network, &addr) { + match RecipientAddress::decode(&NETWORK, &addr) { Some(addr) => match addr { RecipientAddress::Shielded(_) => Ok(JNI_TRUE), RecipientAddress::Transparent(_) => Ok(JNI_FALSE), @@ -451,7 +461,7 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_jni_RustBackend_isValidTran let res = panic::catch_unwind(|| { let addr = utils::java_string_to_rust(&env, addr); - match RecipientAddress::decode(&Network, &addr) { + match RecipientAddress::decode(&NETWORK, &addr) { Some(addr) => match addr { RecipientAddress::Shielded(_) => Ok(JNI_FALSE), RecipientAddress::Transparent(_) => Ok(JNI_TRUE), @@ -470,14 +480,10 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_jni_RustBackend_getBalance( account: jint, ) -> jlong { let res = panic::catch_unwind(|| { - let db_data = utils::java_string_to_rust(&env, db_data); - let account = if account >= 0 { - account as u32 - } else { - return Err(format_err!("account argument must be positive")); - }; + let db_data = wallet_db(&env, db_data)?; + let account = AccountId(account.try_into()?); - match get_balance(&db_data, account) { + match (&db_data).get_balance(account) { Ok(balance) => Ok(balance.into()), Err(e) => Err(format_err!("Error while fetching balance: {}", e)), } @@ -493,18 +499,25 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_jni_RustBackend_getVerified account: jint, ) -> jlong { let res = panic::catch_unwind(|| { - let db_data = utils::java_string_to_rust(&env, db_data); - let account = if account >= 0 { - account as u32 - } else { - return Err(format_err!("account argument must be positive")); - }; + let db_data = wallet_db(&env, db_data)?; + let account = AccountId(account.try_into()?); - match get_verified_balance(&db_data, account) { - Ok(balance) => Ok(balance.into()), - Err(e) => Err(format_err!("Error while fetching verified balance: {}", e)), - } + (&db_data) + .get_target_and_anchor_heights() + .map_err(|e| format_err!("Error while fetching anchor height: {}", e)) + .and_then(|opt_anchor| { + opt_anchor + .map(|(_, a)| a) + .ok_or(format_err!("Anchor height not available; scan required.")) + }) + .and_then(|anchor| { + (&db_data) + .get_verified_balance(account, anchor) + .map_err(|e| format_err!("Error while fetching verified balance: {}", e)) + }) + .map(|amount| amount.into()) }); + unwrap_exc_or(&env, res, -1) } @@ -516,9 +529,9 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_jni_RustBackend_getReceived id_note: jlong, ) -> jstring { let res = panic::catch_unwind(|| { - let db_data = utils::java_string_to_rust(&env, db_data); + let db_data = wallet_db(&env, db_data)?; - let memo = match get_received_memo_as_utf8(db_data, id_note) { + let memo = match (&db_data).get_received_memo_as_utf8(NoteId(id_note)) { Ok(memo) => memo.unwrap_or_default(), Err(e) => return Err(format_err!("Error while fetching memo: {}", e)), }; @@ -537,16 +550,17 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_jni_RustBackend_getSentMemo id_note: jlong, ) -> jstring { let res = panic::catch_unwind(|| { - let db_data = utils::java_string_to_rust(&env, db_data); + let db_data = wallet_db(&env, db_data)?; - let memo = match get_sent_memo_as_utf8(db_data, id_note) { - Ok(memo) => memo.unwrap_or_default(), - Err(e) => return Err(format_err!("Error while fetching memo: {}", e)), - }; + let memo = (&db_data) + .get_sent_memo_as_utf8(NoteId(id_note)) + .map(|memo| memo.unwrap_or_default()) + .map_err(|e| format_err!("Error while fetching memo: {}", e))?; let output = env.new_string(memo).expect("Couldn't create Java string!"); Ok(output.into_inner()) }); + unwrap_exc_or(&env, res, ptr::null_mut()) } @@ -558,13 +572,19 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_jni_RustBackend_validateCom db_data: JString<'_>, ) -> jint { let res = panic::catch_unwind(|| { - let db_cache = utils::java_string_to_rust(&env, db_cache); - let db_data = utils::java_string_to_rust(&env, db_data); + let block_db = block_db(&env, db_cache)?; + let db_data = wallet_db(&env, db_data)?; - if let Err(e) = validate_combined_chain(Network, &db_cache, &db_data) { - match e.kind() { - ErrorKind::InvalidChain(upper_bound, _) => { - let upper_bound_u32 = u32::from(*upper_bound); + let validate_from = (&db_data) + .get_max_height_hash() + .map_err(|e| format_err!("Error while validating chain: {}", e))?; + + let val_res = validate_chain(&NETWORK, &block_db, validate_from); + + if let Err(e) = val_res { + match e.0 { + Error::InvalidChain(upper_bound, _) => { + let upper_bound_u32 = u32::from(upper_bound); Ok(upper_bound_u32 as i32) } _ => Err(format_err!("Error while validating chain: {}", e)), @@ -574,6 +594,7 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_jni_RustBackend_validateCom Ok(-1) } }); + unwrap_exc_or(&env, res, 0) } @@ -585,17 +606,18 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_jni_RustBackend_rewindToHei height: jint, ) -> jboolean { let res = panic::catch_unwind(|| { - let db_data = utils::java_string_to_rust(&env, db_data); + let db_data = wallet_db(&env, db_data)?; + let mut update_ops = (&db_data) + .get_update_ops() + .map_err(|e| format_err!("Could not obtain a writable database connection: {}", e))?; - match rewind_to_height(Network, &db_data, BlockHeight::from(height as u32)) { - Ok(()) => Ok(JNI_TRUE), - Err(e) => Err(format_err!( - "Error while rewinding data DB to height {}: {}", - height, - e - )), - } + let height = BlockHeight::try_from(height)?; + (&mut update_ops) + .transactionally(|ops| ops.rewind_to_height(&NETWORK, height)) + .map(|_| JNI_TRUE) + .map_err(|e| format_err!("Error while rewinding data DB to height {}: {}", height, e)) }); + unwrap_exc_or(&env, res, JNI_FALSE) } @@ -607,10 +629,10 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_jni_RustBackend_scanBlocks( db_data: JString<'_>, ) -> jboolean { let res = panic::catch_unwind(|| { - let db_cache = utils::java_string_to_rust(&env, db_cache); - let db_data = utils::java_string_to_rust(&env, db_data); + let db_cache = block_db(&env, db_cache)?; + let db_data = wallet_db(&env, db_data)?; - match scan_cached_blocks(&Network, &db_cache, &db_data, None) { + match scan_cached_blocks(&NETWORK, &db_cache, &db_data, None) { Ok(()) => Ok(JNI_TRUE), Err(e) => Err(format_err!("Error while scanning blocks: {}", e)), } @@ -628,10 +650,10 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_jni_RustBackend_scanBlockBa limit: jint, ) -> jboolean { let res = panic::catch_unwind(|| { - let db_cache = utils::java_string_to_rust(&env, db_cache); - let db_data = utils::java_string_to_rust(&env, db_data); + let db_cache = block_db(&env, db_cache)?; + let db_data = wallet_db(&env, db_data)?; - match scan_cached_blocks(&Network, &db_cache, &db_data, Some(limit.try_into().unwrap())) { + match scan_cached_blocks(&NETWORK, &db_cache, &db_data, Some(limit as u32)) { Ok(()) => Ok(JNI_TRUE), Err(e) => Err(format_err!("Error while scanning blocks: {}", e)), } @@ -658,7 +680,7 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_jni_RustBackend_parseTransa for data in input_tx_data.data.iter() { let mut tx = TransparentTransaction::new(); let parsed = Transaction::read(&data[..])?; - tx.set_expiryHeight(u32::from(parsed.expiry_height)); + tx.set_expiryHeight(parsed.expiry_height.into()); // Note: the wrong value is returned here (negative numbers) tx.set_value(i64::from(parsed.value_balance)); tx.set_hasShieldedSpends(parsed.shielded_spends.len() > 0); @@ -668,7 +690,9 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_jni_RustBackend_parseTransa match vout.script_pubkey.address() { // NOTE : this logic below doesn't work. No address is parsed. Some(TransparentAddress::PublicKey(hash)) => { - tx.set_toAddress(hash.to_base58check(&B58_PUBKEY_ADDRESS_PREFIX, &[])); + tx.set_toAddress( + hash.to_base58check(&NETWORK.b58_pubkey_address_prefix(), &[]), + ); } _ => {} } @@ -701,7 +725,9 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_tool_DerivationTool_deriveT let address_sk = ext_t_key .derive_private_key(KeyIndex::hardened_from_normalize_index(44).unwrap()) .unwrap() - .derive_private_key(KeyIndex::hardened_from_normalize_index(COIN_TYPE).unwrap()) + .derive_private_key( + KeyIndex::hardened_from_normalize_index(NETWORK.coin_type()).unwrap(), + ) .unwrap() .derive_private_key(KeyIndex::hardened_from_normalize_index(0).unwrap()) .unwrap() @@ -716,7 +742,7 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_tool_DerivationTool_deriveT hash160.update(Sha256::digest(&pk.serialize()[..].to_vec())); let address_string = hash160 .finalize() - .to_base58check(&B58_PUBKEY_ADDRESS_PREFIX, &[]); + .to_base58check(&NETWORK.b58_pubkey_address_prefix(), &[]); let output = env .new_string(address_string) @@ -734,15 +760,16 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_jni_RustBackend_decryptAndS tx: jbyteArray, ) -> jboolean { let res = panic::catch_unwind(|| { - let db_data = utils::java_string_to_rust(&env, db_data); + let db_data = wallet_db(&env, db_data)?; let tx_bytes = env.convert_byte_array(tx).unwrap(); let tx = Transaction::read(&tx_bytes[..])?; - match decrypt_and_store_transaction(&db_data, &Network, &tx) { + match decrypt_and_store_transaction(&NETWORK, &db_data, &tx) { Ok(()) => Ok(JNI_TRUE), Err(e) => Err(format_err!("Error while decrypting transaction: {}", e)), } }); + unwrap_exc_or(&env, res, JNI_FALSE) } @@ -751,7 +778,7 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_jni_RustBackend_createToAdd env: JNIEnv<'_>, _: JClass<'_>, db_data: JString<'_>, - consensus_branch_id: jlong, + _: jlong, // was: consensus_branch_id; this is now derived from target/anchor height account: jint, extsk: JString<'_>, to: JString<'_>, @@ -761,7 +788,7 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_jni_RustBackend_createToAdd output_params: JString<'_>, ) -> jlong { let res = panic::catch_unwind(|| { - let db_data = utils::java_string_to_rust(&env, db_data); + let db_data = wallet_db(&env, db_data)?; let account = if account >= 0 { account as u32 } else { @@ -778,17 +805,19 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_jni_RustBackend_createToAdd let spend_params = utils::java_string_to_rust(&env, spend_params); let output_params = utils::java_string_to_rust(&env, output_params); - let extsk = match decode_extended_spending_key(HRP_SAPLING_EXTENDED_SPENDING_KEY, &extsk) { - Ok(Some(extsk)) => extsk, - Ok(None) => { - return Err(format_err!("ExtendedSpendingKey is for the wrong network")); - } - Err(e) => { - return Err(format_err!("Invalid ExtendedSpendingKey: {}", e)); - } - }; + let extsk = + match decode_extended_spending_key(NETWORK.hrp_sapling_extended_spending_key(), &extsk) + { + Ok(Some(extsk)) => extsk, + Ok(None) => { + return Err(format_err!("ExtendedSpendingKey is for the wrong network")); + } + Err(e) => { + return Err(format_err!("Invalid ExtendedSpendingKey: {}", e)); + } + }; - let to = match RecipientAddress::decode(&Network, &to) { + let to = match RecipientAddress::decode(&NETWORK, &to) { Some(to) => to, None => { return Err(format_err!("Address is for the wrong network")); @@ -799,20 +828,13 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_jni_RustBackend_createToAdd let prover = LocalTxProver::new(Path::new(&spend_params), Path::new(&output_params)); - let branch_id = match BranchId::try_from(consensus_branch_id as u32) { - Ok(branch) => branch, - Err(e) => { - return Err(format_err!("Invalid consensus branch id: {}", e)); - } - }; - // let branch = if - create_to_address( + create_spend_to_address( &db_data, - &Network, - branch_id, + &NETWORK, prover, - (account, &extsk), + AccountId(account), + &extsk, &to, value, memo, @@ -830,7 +852,7 @@ pub unsafe extern "C" fn Java_cash_z_ecc_android_sdk_jni_RustBackend_branchIdFor height: jint, ) -> jint { let res = panic::catch_unwind(|| { - let branch: BranchId = BranchId::for_height::(&Network, BlockHeight::from(height as u32)); + let branch: BranchId = BranchId::for_height(&NETWORK, BlockHeight::from(height as u32)); let branch_id: u32 = u32::from(branch); debug!("For height {} found consensus branch {:?}", height, branch); Ok(branch_id as i32) diff --git a/src/main/rust/local_rpc_types.rs b/src/main/rust/local_rpc_types.rs index 2e72bd30..7c47adc4 100644 --- a/src/main/rust/local_rpc_types.rs +++ b/src/main/rust/local_rpc_types.rs @@ -1,4 +1,4 @@ -// This file is generated by rust-protobuf 2.17.0. Do not edit +// This file is generated by rust-protobuf 2.18.1. Do not edit // @generated // https://github.com/rust-lang/rust-clippy/issues/702 @@ -21,7 +21,7 @@ /// Generated files are compatible only with the same version /// of protobuf runtime. -// const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_17_0; +// const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_18_1; #[derive(PartialEq,Clone,Default)] pub struct TransactionDataList { diff --git a/src/main/rust/utils/exception.rs b/src/main/rust/utils/exception.rs index c23d42aa..34bae589 100644 --- a/src/main/rust/utils/exception.rs +++ b/src/main/rust/utils/exception.rs @@ -44,10 +44,10 @@ pub fn unwrap_exc_or(env: &JNIEnv, res: ExceptionResult, error_val: T) -> } } -// Same as `unwrap_exc_or` but returns default value. -pub fn unwrap_exc_or_default(env: &JNIEnv, res: ExceptionResult) -> T { - unwrap_exc_or(env, res, T::default()) -} +// // Same as `unwrap_exc_or` but returns default value. +// pub fn unwrap_exc_or_default(env: &JNIEnv, res: ExceptionResult) -> T { +// unwrap_exc_or(env, res, T::default()) +// } // Calls a corresponding `JNIEnv` method, so exception will be thrown when execution returns to // the Java side.