react-native-zcash 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/android/build.gradle +3 -3
- package/android/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/2640000.json +8 -0
- package/android/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/2650000.json +8 -0
- package/android/src/main/java/app/edge/rnzcash/RNZcashModule.kt +15 -25
- package/ios/RNZcash.m +3 -5
- package/ios/RNZcash.swift +42 -23
- package/ios/ZCashLightClientKit/Block/Actions/Action.swift +1 -0
- package/ios/ZCashLightClientKit/Block/Actions/EnhanceAction.swift +1 -1
- package/ios/ZCashLightClientKit/Block/Actions/ProcessSuggestedScanRangesAction.swift +1 -1
- package/ios/ZCashLightClientKit/Block/Actions/ScanAction.swift +1 -1
- package/ios/ZCashLightClientKit/Block/Actions/TxResubmissionAction.swift +75 -0
- package/ios/ZCashLightClientKit/Block/Actions/UpdateChainTipAction.swift +1 -1
- package/ios/ZCashLightClientKit/Block/Actions/UpdateSubtreeRootsAction.swift +3 -1
- package/ios/ZCashLightClientKit/Block/CompactBlockProcessor.swift +14 -0
- package/ios/ZCashLightClientKit/Block/Download/BlockDownloaderService.swift +2 -2
- package/ios/ZCashLightClientKit/Block/Enhance/BlockEnhancer.swift +54 -49
- package/ios/ZCashLightClientKit/Checkpoint/BundleCheckpointSource.swift +1 -6
- package/ios/ZCashLightClientKit/Checkpoint/CheckpointSourceFactory.swift +1 -1
- package/ios/ZCashLightClientKit/ClosureSynchronizer.swift +3 -1
- package/ios/ZCashLightClientKit/CombineSynchronizer.swift +6 -2
- package/ios/ZCashLightClientKit/Constants/ZcashSDK.swift +15 -0
- package/ios/ZCashLightClientKit/DAO/TransactionDao.swift +20 -4
- package/ios/ZCashLightClientKit/Entity/TransactionEntity.swift +27 -24
- package/ios/ZCashLightClientKit/Error/Sourcery/generateErrorCode.sh +2 -2
- package/ios/ZCashLightClientKit/Error/ZcashError.swift +32 -1
- package/ios/ZCashLightClientKit/Error/ZcashErrorCode.swift +11 -1
- package/ios/ZCashLightClientKit/Error/ZcashErrorCodeDefinition.swift +18 -0
- package/ios/ZCashLightClientKit/Initializer.swift +22 -14
- package/ios/ZCashLightClientKit/Metrics/SDKMetrics.swift +0 -1
- package/ios/ZCashLightClientKit/Model/FiatCurrencyResult.swift +25 -0
- package/ios/ZCashLightClientKit/Model/Proposal.swift +1 -1
- package/ios/ZCashLightClientKit/Model/TransactionDataRequest.swift +26 -0
- package/ios/ZCashLightClientKit/Model/WalletTypes.swift +39 -1
- package/ios/ZCashLightClientKit/Model/Zatoshi.swift +1 -1
- package/ios/ZCashLightClientKit/Modules/Service/GRPC/LightWalletGRPCService.swift +39 -2
- package/ios/ZCashLightClientKit/Modules/Service/GRPC/ProtoBuf/proto/service.proto +5 -4
- package/ios/ZCashLightClientKit/Modules/Service/GRPC/ProtoBuf/service.grpc.swift +819 -3
- package/ios/ZCashLightClientKit/Modules/Service/GRPC/ProtoBuf/service.pb.swift +2 -2
- package/ios/ZCashLightClientKit/Modules/Service/LightWalletService.swift +3 -1
- package/ios/ZCashLightClientKit/Providers/ResourceProvider.swift +10 -0
- package/ios/ZCashLightClientKit/Repository/TransactionRepository.swift +4 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2475000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2477500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2482500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2485000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2487500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2492500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2495000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2497500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2502500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2505000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2507500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2512500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2515000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2517500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2522500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2525000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2527500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2532500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2535000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2537500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2542500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2545000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2547500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2552500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2555000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2557500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2562500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2565000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2567500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2572500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2575000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2577500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2582500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2585000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2587500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2592500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2595000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2597500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2602500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2605000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2607500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2612500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2615000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2617500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2622500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2625000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2627500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2632500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2635000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2637500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2640000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2642500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2645000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2647500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2650000.json +8 -0
- package/ios/ZCashLightClientKit/Rust/ZcashKeyDerivationBackend.swift +4 -24
- package/ios/ZCashLightClientKit/Rust/ZcashKeyDerivationBackendWelding.swift +0 -15
- package/ios/ZCashLightClientKit/Rust/ZcashRustBackend.swift +133 -32
- package/ios/ZCashLightClientKit/Rust/ZcashRustBackendWelding.swift +18 -1
- package/ios/ZCashLightClientKit/Synchronizer/ClosureSDKSynchronizer.swift +4 -0
- package/ios/ZCashLightClientKit/Synchronizer/CombineSDKSynchronizer.swift +5 -1
- package/ios/ZCashLightClientKit/Synchronizer/Dependencies.swift +53 -3
- package/ios/ZCashLightClientKit/Synchronizer/SDKSynchronizer.swift +236 -7
- package/ios/ZCashLightClientKit/Synchronizer.swift +28 -0
- package/ios/ZCashLightClientKit/Tool/DerivationTool.swift +29 -5
- package/ios/ZCashLightClientKit/Tor/TorClient.swift +57 -0
- package/ios/ZCashLightClientKit/Utils/LoggingProxy.swift +4 -0
- package/ios/ZCashLightClientKit/Utils/OSLogger.swift +4 -0
- package/ios/libzcashlc.xcframework/Info.plist +5 -5
- package/ios/libzcashlc.xcframework/ios-arm64/libzcashlc.a +0 -0
- package/ios/libzcashlc.xcframework/ios-arm64_x86_64-simulator/libzcashlc.a +0 -0
- package/ios/zcashlc.h +287 -42
- package/lib/rnzcash.rn.js +8 -8
- package/lib/rnzcash.rn.js.map +1 -1
- package/lib/src/react-native.d.ts +3 -3
- package/lib/src/types.d.ts +4 -2
- package/package.json +1 -1
- package/src/react-native.ts +13 -18
- package/src/types.ts +5 -2
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"network": "main",
|
|
3
|
+
"height": "2602500",
|
|
4
|
+
"hash": "0000000000acb19f71a283f802945170a1165b118cd15c2de20ea3ed7922c22d",
|
|
5
|
+
"time": 1723022983,
|
|
6
|
+
"saplingTree": "0158636a6243e389a7f2033ee8cd4fbfaef6bc1155aa8b1ee0e03b7dea54609037017df95fa03055e312a3eaa2138189fd8e459b227788e083651621c8df4f5a3f721f000001a5ce406e8d35f64594aaa01b95ce90c399697e9515bc3978b8ae0f7f898a442101037cccdf7c0d210dee3fbd2e2814eb9a61e2d944ede6ad3ada587326c072834701398af6fbc4d07625e41b58bd496b079409848d016d8f5d8d597acea4f8a4ac3a0000000001b64828dd741da258bf461f0a23b6d9ed8a21f153f60238444fda8ea66437124b00019a7de49fc0f48272e4f81b79c32d01e0ac2519ed63971053e5c761a69809e769015bef2b7796dde552db8bbc552c55f413c388c02dbb07aeb446744375b303ef420156b3d33ce2ed017f3c386a6776460330b0b98c091f8966dc72c6d982fe61d3340113511bcbeeafe15db27eac1c40881aa9612b5998fa2702cf1a873915bfb6963f0000000000013e2598f743726006b8de42476ed56a55a75629a7b82e430c4e7c101a69e9b02a011619f99023a69bb647eab2d2aa1a73c3673c74bb033c3c4930eacda19e6fd93b0000000160272b134ca494b602137d89e528c751c06d3ef4a87a45f33af343c15060cc1e0000000000",
|
|
7
|
+
"orchardTree": "01d4be5ef0643fc203c26df54a7eff1dc40024206295d10386604125346454d11c001f000001c456ae0ae90be2669e61477cd75964cfd28838d5896e27644a624d2b3d1da02301c19048664b8c4a844c87e65288416cd03dd16f94efd96b3854c535fb950e4636000161933a1ab82c3630a3804717ff0bc39090387a3ae12ce363e70dfcd81746611c01ceb0f7481020e87d23aff5742d48f917e40f6bf4a74d90973e2753d409d32a2600012c69f18a28a02a6f8d9b5c06737a99085dfe7713a654432db63207f04fba1c18018ab1d7b9a8099f16c0187fd943cdd4d6a646ea51abe9e98b3e15bf37b72ded03000187fdfe48155526f00a731601c98cd8685b2f98373b59f2e82d49523f8c934515014dce184be736a7df17d72ebc84f629cafc379b11f28afcb8c0dc5c25f31f993a0000000112278dfeae9949f887b70ae81e084f8897a5054627acef3efd01c8b29793d522000160040850b766b126a2b4843fcdfdffa5d5cab3f53bc860a3bef68958b5f066170001cc2dcaa338b312112db04b435a706d63244dd435238f0aa1e9e1598d35470810012dcc4273c8a0ed2337ecf7879380a07e7d427c7f9d82e538002bd1442978402c01daf63debf5b40df902dae98dadc029f281474d190cddecef1b10653248a234150001e2bca6a8d987d668defba89dc082196a922634ed88e065c669e526bb8815ee1b000000000000"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"network": "main",
|
|
3
|
+
"height": "2605000",
|
|
4
|
+
"hash": "00000000000b0ca5b35ed55f67e7c664b0d962040d100703931914e3ee3f2fe1",
|
|
5
|
+
"time": 1723211544,
|
|
6
|
+
"saplingTree": "01687d479ca52f03720c733330bc0e684e41cd2fee76a741faf34aca891fe6cd3801543a60f586c8586212e395d46055eb624aa42f5ed50b8ffc906c176cdb9b31161f014c9bced33423215fc55d76d27e79a277a05c3e4be116183aa43fc1dc624c152c01fa723892c82c06ca36640b037e4d3595cee677cabd15514c57fcb0e823141c4301af8ec810d557d934fd84434cac3138e20165598067cca10f8a5d254326f4dc39013efacc661c0279f19edd8a8da05d80c3227667c9f16a627f4925afe4d300102001b3e2e07b7d186b6139566cd2af05eae2d6de2b4d3b2a96e7300a9e7f7741db5101cd7e4b2b23d2aaf9d8866ecfa4b14d874d9dbd459076fec78176d48d968a0f5101b8e595234ada92708bd5052eb4ed7ef41fa9b030bfd7ee521f01353da94fae5301299066b2f55d625dce08b6513a167b96e19e17645440d3290d2dd2591d51273e000001d29ff78e5e4cd45b229d5a53b1ddbeac5f056eaf596c9235e8be17de61832b6800000000012415b957855163102c9f373eec835c3b3aa11f0ac872533a867d3e2eb562d30200000000013e2598f743726006b8de42476ed56a55a75629a7b82e430c4e7c101a69e9b02a011619f99023a69bb647eab2d2aa1a73c3673c74bb033c3c4930eacda19e6fd93b0000000160272b134ca494b602137d89e528c751c06d3ef4a87a45f33af343c15060cc1e0000000000",
|
|
7
|
+
"orchardTree": "0120f233d4ce3b36afe7a1abebd8b1f3d6e956171db518029ec8806a7037da033b001f01ee131922a48e4d72dd43685e886d18e609ef62cb07c6c5bad028abfabed7141401598efdc28913d126b14218f398376656ed42499e0545bbbe29b3fffad5e32c1c000001fb241c6f9d9bec986636e483eb80972e7137d08c7603a615bd43f509c02a6f3e01c17951880fbcdeba671952e4e53ccd8647e9655dda7c9be80562310f50122c040104c7784dfcb7c217a8d6bbc8d4187bc2baebe7be6784b4e4cf0d9681203e65030001128c694223d7bebafe7394d77f2bb8fefb0e82e41979af17845ee73d17b0731b00018e4025bc2e04da1b4d449b49f697d13a34751db56480febf3e2effcacaa91e220187fdfe48155526f00a731601c98cd8685b2f98373b59f2e82d49523f8c934515014dce184be736a7df17d72ebc84f629cafc379b11f28afcb8c0dc5c25f31f993a0000000112278dfeae9949f887b70ae81e084f8897a5054627acef3efd01c8b29793d522000160040850b766b126a2b4843fcdfdffa5d5cab3f53bc860a3bef68958b5f066170001cc2dcaa338b312112db04b435a706d63244dd435238f0aa1e9e1598d35470810012dcc4273c8a0ed2337ecf7879380a07e7d427c7f9d82e538002bd1442978402c01daf63debf5b40df902dae98dadc029f281474d190cddecef1b10653248a234150001e2bca6a8d987d668defba89dc082196a922634ed88e065c669e526bb8815ee1b000000000000"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"network": "main",
|
|
3
|
+
"height": "2607500",
|
|
4
|
+
"hash": "0000000001e1e8b283f25423b2b39e5676d9073ccf659870a7bb1e35b6bef75b",
|
|
5
|
+
"time": 1723399352,
|
|
6
|
+
"saplingTree": "01cd24c9062c42171cdda7e86ee7b0b328571c6e2e42c893146ccdd8192901be4e01bc02a7598450b8dd55e26dbaf6d42d8db833363a7e805ce9c59d53cfa698a44b1f0137df30fc14008143a99c31d5de5657b20efda61c47239076388e4093e9b2591a000192da404d42a5292807799eddb209dbe53417728a6702acca95e6356b2ed8d32600000000019f0351d86a8aa79fbb99c537c2b748c31c8a305c37d877adcbf67db46e89965b01dc25905956dfc334fe62c7e95776b60760886b802622712b914bbf6808c063650112725de05e4206b43c6888007a4235b5c723bce9ce1377093e633ab0cc04c22301e47663e52e856db8e2959cf5581c2fe291924719199853f6d06a40df4db78059018a2603b558cc1ec169e46a6fc49b83f30363956b37a12f11a664c58cc62c5944000000012415b957855163102c9f373eec835c3b3aa11f0ac872533a867d3e2eb562d30200000000013e2598f743726006b8de42476ed56a55a75629a7b82e430c4e7c101a69e9b02a011619f99023a69bb647eab2d2aa1a73c3673c74bb033c3c4930eacda19e6fd93b0000000160272b134ca494b602137d89e528c751c06d3ef4a87a45f33af343c15060cc1e0000000000",
|
|
7
|
+
"orchardTree": "01af76d043c985b5f6d69f89333495ba26e1b2a7d81f1116ed861da3d168d4330c0195bcfd054ccded6bde38187f39a84e9ff6d2c836b1094c6a5092be8521a7f0321f00000001b37acb1e53bb48b748bcf429edb0f325f8f48122c51ebbf61c8ac35d8fedc62e00000001668a460cd4c58502cba2678b12c31049e91fce460da17dae02976634b9984e18015e4a4d34f90c6990d18b3e379a8a8862798c0430651e7712a31ac1ca009aa412012c22ffced1bbebe7b54e23c57d24780ca05d734ae75cfe3d1d37c27a28177936018e4025bc2e04da1b4d449b49f697d13a34751db56480febf3e2effcacaa91e220187fdfe48155526f00a731601c98cd8685b2f98373b59f2e82d49523f8c934515014dce184be736a7df17d72ebc84f629cafc379b11f28afcb8c0dc5c25f31f993a0000000112278dfeae9949f887b70ae81e084f8897a5054627acef3efd01c8b29793d522000160040850b766b126a2b4843fcdfdffa5d5cab3f53bc860a3bef68958b5f066170001cc2dcaa338b312112db04b435a706d63244dd435238f0aa1e9e1598d35470810012dcc4273c8a0ed2337ecf7879380a07e7d427c7f9d82e538002bd1442978402c01daf63debf5b40df902dae98dadc029f281474d190cddecef1b10653248a234150001e2bca6a8d987d668defba89dc082196a922634ed88e065c669e526bb8815ee1b000000000000"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"network": "main",
|
|
3
|
+
"height": "2612500",
|
|
4
|
+
"hash": "0000000000e5090e81979a60d3aa0d52d92f5e937e98835007b5cf3692fb7bae",
|
|
5
|
+
"time": 1723775874,
|
|
6
|
+
"saplingTree": "01caeb7400413a89012925699f945359c690e33b18e1182dbc31cb0cdcdcd3d21301cba90f422c06765ac2473367e04e28395d60d04df82ab911ab8d4f8fd1b7ef161f01ee5c43dfda5454dc56a11a861f07f4331f7544b3841f3643b817c0896e90991801a92c70264e405762cc4d2881dbcb62a29cde336f06cc8f2ed7065dfd5c0d0c11011d3932d65162694468ca7c386cbb72a47198433d87e82ec8306d04bb597548010001cbbc31c3f8336081251ac7da75a1d88c14dd330b8a4079fa655fa0ad828576190001ee087fa2df26c5fbf7f4e7f24a353c703847ff6a5bbb312ddb35d034d3b6ce2d000001f68ced03d3f43766d4046284e48900cdc79aba4f35fe512d99edcd62a102554e0110ebe62f1d0bebadbe4ae0fdffdde0c5fe0ac993c4102b6a0ee3eab217ef09000122269209ed691bb98c3e4c62c927a5660238f80a0aaee4b60efa6e2dfe815b03011cf92ed634937e25f2c74e11f5a16010c987bf41e7d9956c8d1a26830a391c3f0001f762af15779fb5c9593af1a8a9a2c777b9377dcb3117e5c55b4365f1061ea86c012415b957855163102c9f373eec835c3b3aa11f0ac872533a867d3e2eb562d30200000000013e2598f743726006b8de42476ed56a55a75629a7b82e430c4e7c101a69e9b02a011619f99023a69bb647eab2d2aa1a73c3673c74bb033c3c4930eacda19e6fd93b0000000160272b134ca494b602137d89e528c751c06d3ef4a87a45f33af343c15060cc1e0000000000",
|
|
7
|
+
"orchardTree": "016bf951b70bd46c026501bd1de84dd76a6f2390e0c29c9ac18ebecc865abff121001f00014ea4cb9fe4033b3aef96a0d85a6071cafce6889b658769630a568b9324dc7919015b01249e326585a4e3b2b5285be119034d942a0017e202214503b8ed39a5f60e0127941c3f060470d79e4c8a1139388927edf01e754f6dbfb39dc74a48a6eb301000000000000001ba2fc06d6f2a5c10219dfe7d1722c4bda2a01704a1473260649993ae559b6f22000001f427516d6600178ef99cc049193c413103980c407ea3489a687b3c3479d2300c00000112278dfeae9949f887b70ae81e084f8897a5054627acef3efd01c8b29793d522000160040850b766b126a2b4843fcdfdffa5d5cab3f53bc860a3bef68958b5f066170001cc2dcaa338b312112db04b435a706d63244dd435238f0aa1e9e1598d35470810012dcc4273c8a0ed2337ecf7879380a07e7d427c7f9d82e538002bd1442978402c01daf63debf5b40df902dae98dadc029f281474d190cddecef1b10653248a234150001e2bca6a8d987d668defba89dc082196a922634ed88e065c669e526bb8815ee1b000000000000"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"network": "main",
|
|
3
|
+
"height": "2615000",
|
|
4
|
+
"hash": "0000000001c93fd3e39a4af5f22b55dc0f60b93847282e893d65ea9845a5a64d",
|
|
5
|
+
"time": 1723964886,
|
|
6
|
+
"saplingTree": "014298f0b8a8167b85ea1a936ce2f2361ecafb8ff24cc6087fd002babbc3b5d40401145319fbe28e102cfdc42d9c654c4d7e4eb5e48d536bd044c1d4a41b4fc988491f01a9b390f75470f6c49403373c2bb74fcc204a06639febfffa895f2b6c2327e927015e89b7e60eb064f2ef084e05ae8e5736e5f4e99e3bd8c08fa1499b5854a9131d0103041a6509d4abc98224138ff1db9dc80a4db86ddc3fbd677bb709151cc631050130b89967a04e7a90aec4c9f6d2ed7144c35fe2cf9fe2b1ea69b54e678adc60010000000001a54d2eeb3265f65b0436f4fd38e5732809599343f2ff6b82beaecf643c95eb010000015edb4531bb98252fa08c3baa1d49e2c11ff6e3cb8fc06883bf8075aabfa79e230001889e7a0849bac67b05fe418b808099194a54632db5d8de4dab43ff55c3b22a0a01f762af15779fb5c9593af1a8a9a2c777b9377dcb3117e5c55b4365f1061ea86c012415b957855163102c9f373eec835c3b3aa11f0ac872533a867d3e2eb562d30200000000013e2598f743726006b8de42476ed56a55a75629a7b82e430c4e7c101a69e9b02a011619f99023a69bb647eab2d2aa1a73c3673c74bb033c3c4930eacda19e6fd93b0000000160272b134ca494b602137d89e528c751c06d3ef4a87a45f33af343c15060cc1e0000000000",
|
|
7
|
+
"orchardTree": "0179c6664103c002d291e4268860bf0a2f6a248af42ae8a6838f6e95226c1ac83b001f01cb0ddf2423c3f26c142523ace4492449cc3cd8da3d0149cb421e3ff651f1a92501c81e79a66c11ab3aa18f69b5ccd668a40961a637a812bc7e544a3dccfbcdde120192f9295727c4b362d5be2c03a726a4ceaebf06f5554ad32aeda22a02f4008039000001b850b62da567d9e91bc7fb76b205b477c3e4dca93dc637b2423c045e6138043e01209dad4e13c1024e38e41bd3945ca1ff1ba122900dc8eade6614ebc59d9b3930014421cd60d923f7b2e9b9bb98c8bce208059fcbc06c93e787957401cc78d0920a0198fcc6d33ee8d12cb2c296d2d474b7457b33cc112d421c9dac4a0600e97658270001ba2fc06d6f2a5c10219dfe7d1722c4bda2a01704a1473260649993ae559b6f22000001f427516d6600178ef99cc049193c413103980c407ea3489a687b3c3479d2300c00000112278dfeae9949f887b70ae81e084f8897a5054627acef3efd01c8b29793d522000160040850b766b126a2b4843fcdfdffa5d5cab3f53bc860a3bef68958b5f066170001cc2dcaa338b312112db04b435a706d63244dd435238f0aa1e9e1598d35470810012dcc4273c8a0ed2337ecf7879380a07e7d427c7f9d82e538002bd1442978402c01daf63debf5b40df902dae98dadc029f281474d190cddecef1b10653248a234150001e2bca6a8d987d668defba89dc082196a922634ed88e065c669e526bb8815ee1b000000000000"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"network": "main",
|
|
3
|
+
"height": "2617500",
|
|
4
|
+
"hash": "0000000000497e6bed2f8061f4dd797af6908b898b7e5048def0529542d4569e",
|
|
5
|
+
"time": 1724153048,
|
|
6
|
+
"saplingTree": "01a0cfa8a537970cee62c087a3885ea4ccf72cc9fcbe00f28f4222b5d3e93c801c001f01b0e15f43d32bdd03192cc1e2ae461d8009bb3d3a043ddde958a4cc866447d029013b7c7c6d52e05b3551b943d334ce1fde4edb1bfdba3f7ecf9b670cc8115f2b5a0121e31609c54c5e18bd78ebc64692dda949c4fe9dbb34bc791b332b84b413673a01f41ce8f7c5791be796ce2cbbba898546b71d77b1ccf13fc0051908c1896cbd6f018e3515f20e3e4d87d0746649d3323cfd01f483f2774dffb08d9c33016e1de722000001bad98611c327e4dd30b00f886a7a2305fe2a75ee3a48e1fc6491d4ca4f9bf217011e18f60126946aab57aa56863338465e688705b0a9f3e22cf5ca893c0f0ece2a01da766462261738f109e41d45bfc4525a62e157280cfa5399e78be6a61c8bc34400000107ce458cf2cc5c0351bc0ecb8e4ce1ab7edc9b9b528dbbbe0a70b9057e4cdf5601889e7a0849bac67b05fe418b808099194a54632db5d8de4dab43ff55c3b22a0a01f762af15779fb5c9593af1a8a9a2c777b9377dcb3117e5c55b4365f1061ea86c012415b957855163102c9f373eec835c3b3aa11f0ac872533a867d3e2eb562d30200000000013e2598f743726006b8de42476ed56a55a75629a7b82e430c4e7c101a69e9b02a011619f99023a69bb647eab2d2aa1a73c3673c74bb033c3c4930eacda19e6fd93b0000000160272b134ca494b602137d89e528c751c06d3ef4a87a45f33af343c15060cc1e0000000000",
|
|
7
|
+
"orchardTree": "010bbb3720cae1cdbe4708b939322cbcc81ea1fd128af58ce8b3ea9b793cfe5a2c01d5cdfabb5fbdb0967b4b8597b776cb0f9923855ab82d9e963f9edc555dbb812f1f01634815b2dfbb56f1c4ccfd2221b91c6421f6375a7b9db115ba8ee0e2ec37cd2501a9cc11287e6af871aafe2fb18355d98d7e06d34adadf862347efd3907c5efe3c000000012eb5fe2fc732fc15bbc0c2c8028d1cb797d8e028b2683743f879ee38ad19ac2b0196837cd23e03893a3354ad6705d866ad4f8f7e74205cc8e08596bef0e4464d3f01e071743c2668ca2bc87088a4f56e47fe98a7ce9947871469f853f77ffe2fe111012277c14f0bc027ea1bf58666df336027a6dea16b7b996793d7122e6b690a980c01e0d0a702e34e4d2ee1248598905dee1526f25765f90133b2e44c28bb542c891001ba2fc06d6f2a5c10219dfe7d1722c4bda2a01704a1473260649993ae559b6f22000001f427516d6600178ef99cc049193c413103980c407ea3489a687b3c3479d2300c00000112278dfeae9949f887b70ae81e084f8897a5054627acef3efd01c8b29793d522000160040850b766b126a2b4843fcdfdffa5d5cab3f53bc860a3bef68958b5f066170001cc2dcaa338b312112db04b435a706d63244dd435238f0aa1e9e1598d35470810012dcc4273c8a0ed2337ecf7879380a07e7d427c7f9d82e538002bd1442978402c01daf63debf5b40df902dae98dadc029f281474d190cddecef1b10653248a234150001e2bca6a8d987d668defba89dc082196a922634ed88e065c669e526bb8815ee1b000000000000"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"network": "main",
|
|
3
|
+
"height": "2622500",
|
|
4
|
+
"hash": "00000000004d4c95ab72d0944a6a303e62168383830fb9303bd6e1682ca141ef",
|
|
5
|
+
"time": 1724530606,
|
|
6
|
+
"saplingTree": "019fbd3cdbc510044d35610791591c8411bb65dbe2624ac8d8e7647b207af3df25001f0001cbf5137235a85ffcd21f40c2a30aca3f572b3f621c2b208811acd17b9c1a4e580001b7cbaed611c5c6e2d518b7afa87bbe895c220734128e1f54289cc6b2a1bbb4650196973931e8834bf0ef5ff89b662abb1692ed112a71ec980e3f27b250dc483341000000010a15178309f9a7dca5488a43dfef8e9d063356474b91b0aa349838f9cba3fd170000017d75e562d0bcdbc49261ed9f119b11b6691f718b6a0407b62f0528d6f76987590000000001b254e3cfba937bcd40621e1d623a943440b083892546f081aab37058fd1b763f000000013e2598f743726006b8de42476ed56a55a75629a7b82e430c4e7c101a69e9b02a011619f99023a69bb647eab2d2aa1a73c3673c74bb033c3c4930eacda19e6fd93b0000000160272b134ca494b602137d89e528c751c06d3ef4a87a45f33af343c15060cc1e0000000000",
|
|
7
|
+
"orchardTree": "0174c05eb88514309c81b092bb6acbbe1ac5c06949760126ea253f9b6850e43826001f0000018d63150f6d09b39e285930bd9a5a301aecea584fdd18506a15ff3f8158106b1b016b7057c107310c1e9835f508d8da5f3e9f2b984a020117f711e8e8d8216f292e0179c5731d259047a9d9bb67d28d177286bccbec6e7f5e9920d6982e4dd685091b00000001dfa4cb908589e887712519145a3e575a3e374936bc2a039813bc8f44b264d526011baf6d2b84b13c6404a14b8898028cec47ae439317a7e15970828641e95fce1b000185edfe70c36f5d1c3216c4750bbd8f11fe1ab96802f9eaf273f2e85ea0709c1d0001f427516d6600178ef99cc049193c413103980c407ea3489a687b3c3479d2300c00000112278dfeae9949f887b70ae81e084f8897a5054627acef3efd01c8b29793d522000160040850b766b126a2b4843fcdfdffa5d5cab3f53bc860a3bef68958b5f066170001cc2dcaa338b312112db04b435a706d63244dd435238f0aa1e9e1598d35470810012dcc4273c8a0ed2337ecf7879380a07e7d427c7f9d82e538002bd1442978402c01daf63debf5b40df902dae98dadc029f281474d190cddecef1b10653248a234150001e2bca6a8d987d668defba89dc082196a922634ed88e065c669e526bb8815ee1b000000000000"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"network": "main",
|
|
3
|
+
"height": "2625000",
|
|
4
|
+
"hash": "00000000001e494f384243fe1d4e6c4e1d3f85ff566a38140a23dd0fb70c8d30",
|
|
5
|
+
"time": 1724718729,
|
|
6
|
+
"saplingTree": "01fa2736a13bcd417b0f16f9f6716532b0b2b87bd4810fd4369e46ff95b6e07840010e2d541ea571825331e80d5b2cf1111f07990c17f075f9e2665cd3798fca2a441f000001b6160e8a42bc0d7c04797bc713f820f137ebe89da53897f88910d5c1d3f0f02b00000001941d361375df3b278e8c1bb70075bdcb6ed1150f087d3edc226761936090612a01a11ff4b5fb59bb3e49251a3e3454d2769e1b9a46ced2b98a94baaf19a8fd7b6c01afda6b6a2deadcfc0837102d155e54a00fe6ac67f728672a807b9a30a5a4080101f19282b7d906ec48a9ee9a59050f09785e730558787370e39c1d643adba2f137000001ae94e769c003efcb6891de2cde1c38b62006f4bfac132d42d6abc118fac8261100000001b254e3cfba937bcd40621e1d623a943440b083892546f081aab37058fd1b763f000000013e2598f743726006b8de42476ed56a55a75629a7b82e430c4e7c101a69e9b02a011619f99023a69bb647eab2d2aa1a73c3673c74bb033c3c4930eacda19e6fd93b0000000160272b134ca494b602137d89e528c751c06d3ef4a87a45f33af343c15060cc1e0000000000",
|
|
7
|
+
"orchardTree": "01999966ad8244e5d5b48c116cf0e82575d8d7254a7596ef40f0ab46dfbed31132001f0138d26f7aef2394231a352fc9b7baa781938b358ffd1784f929d838a97b926e3a016f0eda5ef0442cbfb4557ed7e886b9b29b0f4448fe303876cf96147f81387b020001426b60c9e44db30ecc4542643c0332f1c3d314d654659337d815a24156ecfd1600016eb082bea05f4855883229f3d7fdd4c3977b4a728384eb91f0cc2b0488fe53030001d05d08c51cbb09059afff5b0c7dc6b3236cbd742936b013d9ad791a20998302300000112852a88a1d88b30c5a3bd2f532500e25379fc536934f2bbe26a2fcdea5dff250185edfe70c36f5d1c3216c4750bbd8f11fe1ab96802f9eaf273f2e85ea0709c1d0001f427516d6600178ef99cc049193c413103980c407ea3489a687b3c3479d2300c00000112278dfeae9949f887b70ae81e084f8897a5054627acef3efd01c8b29793d522000160040850b766b126a2b4843fcdfdffa5d5cab3f53bc860a3bef68958b5f066170001cc2dcaa338b312112db04b435a706d63244dd435238f0aa1e9e1598d35470810012dcc4273c8a0ed2337ecf7879380a07e7d427c7f9d82e538002bd1442978402c01daf63debf5b40df902dae98dadc029f281474d190cddecef1b10653248a234150001e2bca6a8d987d668defba89dc082196a922634ed88e065c669e526bb8815ee1b000000000000"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"network": "main",
|
|
3
|
+
"height": "2627500",
|
|
4
|
+
"hash": "00000000004c99475ef735bee6d2771a6044bdb627d152c6ae39f54c67874c06",
|
|
5
|
+
"time": 1724908052,
|
|
6
|
+
"saplingTree": "0179ef7ef11f7fa32c7ef7daa2666bc7038f0e85ae8a230fe86b891d0d75607963017fe2269da05360fb5f1929cc85e47092d0ba34ec1673057240a9a0b576d3f72e1f014b76d424dd1ce8b571799e94b990dce772451097948252b57fae6ed3b4cb5b630104bab6e32f97cd7e4288833da7241ae251ed6515481ff6be8d6697a2895354100001fe6c5e25f177acdf002abbf09b7ab14265ce18f24bb398248d7fb0961a9d385c0000000000012ba609199201a69bbb94719c16c8b52e5125159a331617677f9a3dbd94dab16901336f840d73a3cc9d09ea5b259afaaf254f5fe06de2e07d065702d433b4802d6a0139522553ddaa37086503896aa0cf1fbc53ac1511347112e46c92269f5734cf6301ae94e769c003efcb6891de2cde1c38b62006f4bfac132d42d6abc118fac8261100000001b254e3cfba937bcd40621e1d623a943440b083892546f081aab37058fd1b763f000000013e2598f743726006b8de42476ed56a55a75629a7b82e430c4e7c101a69e9b02a011619f99023a69bb647eab2d2aa1a73c3673c74bb033c3c4930eacda19e6fd93b0000000160272b134ca494b602137d89e528c751c06d3ef4a87a45f33af343c15060cc1e0000000000",
|
|
7
|
+
"orchardTree": "01e6b339484a666d8e2ccc7b16a5fca12a6578996dc45062711af7701fa8d96417001f011dd4f9ae0cdf647d695f5a7580e6c8494bdd10f11101a12c0bbb2618f148081e015ef1ead7145fe5091c058a3c276f64b7f6bda630d172004e34e5be4ac6cad1090001d58efefbfa90e462768e4c92010ec6bd04ac0e6604d9f5982fd6924733ca641801ffce4849fda5ef1b48cd33cebfc2a28438373a6f17f45319ed2dddbf8c75990601edd432f66510f1906ff62fab3d4d12dc0f506211fa45da85fd39761950057624010ae29a0ca1cb46a5379c3fe073ad86352873ae9c3a67a7be9b95860b567df61101fc86b74cea8a5b575d5d3a8e52c7ebdc742cf9d6a5e9723eaaf5abb07f5eee140148da2ec04ceda0f9de1aaac8241dda43c70a18bbb23addfdef3401489dc2c50b000112852a88a1d88b30c5a3bd2f532500e25379fc536934f2bbe26a2fcdea5dff250185edfe70c36f5d1c3216c4750bbd8f11fe1ab96802f9eaf273f2e85ea0709c1d0001f427516d6600178ef99cc049193c413103980c407ea3489a687b3c3479d2300c00000112278dfeae9949f887b70ae81e084f8897a5054627acef3efd01c8b29793d522000160040850b766b126a2b4843fcdfdffa5d5cab3f53bc860a3bef68958b5f066170001cc2dcaa338b312112db04b435a706d63244dd435238f0aa1e9e1598d35470810012dcc4273c8a0ed2337ecf7879380a07e7d427c7f9d82e538002bd1442978402c01daf63debf5b40df902dae98dadc029f281474d190cddecef1b10653248a234150001e2bca6a8d987d668defba89dc082196a922634ed88e065c669e526bb8815ee1b000000000000"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"network": "main",
|
|
3
|
+
"height": "2632500",
|
|
4
|
+
"hash": "0000000001ba8f8c1a25cf54cdd0d84cd4df8c94c012312ddf6d4f1eed253be8",
|
|
5
|
+
"time": 1725284808,
|
|
6
|
+
"saplingTree": "01fbd7100d3eb3b89717849cb288f931d95f0a4cc9f8a21a089ea022894e2de81101d5682005c58c0ab44af04979b5f446b4ed3b15ac508c0365939fad83ccbc0f411f012c3ff4db281c3c28b95e4774f080d3fd9e38f3cc83e9543741475514fd86b505016d23742353f8e324107b8461499359ad3f2f06526a6c8f8fc40a4d67337c4e4f0001e41b936af507828b07af694a9ac84743a9aefe9a2b65c1b281951a49420e4b7001227537e312ba774ed8b2c0a33d7dcc8fb9b0086b01fa82c0f54810ad4bd78f67010df61fa601c74f8ddd66d58a2ff77c3eb211896a4639778128fdf9cc0938dd4900000110bdc306e6fbb15f59d5fd55d17ebc592b3c5c4a06e545694838d8bb7bed4117012156e9ab7efb3d78fed297fff7705d0a919c68fc21f5f91c58a1312bb70eff450000015f57b607ee9f63c786a49df5f034279b6d7645f26ce1e9d0cbcad31660c15229010fdff8660d84e9dbb3979b612a8c64535da6d9c5820ed495c395857252d3863b000001b254e3cfba937bcd40621e1d623a943440b083892546f081aab37058fd1b763f000000013e2598f743726006b8de42476ed56a55a75629a7b82e430c4e7c101a69e9b02a011619f99023a69bb647eab2d2aa1a73c3673c74bb033c3c4930eacda19e6fd93b0000000160272b134ca494b602137d89e528c751c06d3ef4a87a45f33af343c15060cc1e0000000000",
|
|
7
|
+
"orchardTree": "01c8987f1d6db36c65d41532a022e2c9e988e17dae0926d5f21ea09ac8706ca53f014ea5882eeb23f5b65f047375e8001dac73dfe222671f773a935f76b2f18598271f0130e98817bf5e5f2abf652be9f1431d0f4dddfee6707a96f440d51e84576a8509000001273c6faf9dd7c5206dd3128a20d62465bd423932d9b3e78447b236c7b26dee3600014dd50d9d5d0295590e68cb66e406e86578818518fd9702c44613f71bd842b52f00000144fbeaa87f05ba3c85cf0de179d28286093970867940c38edfaf6003abebec34000000012e924c7b6b2a77680118ee5fc70914b953fb33b7673ab2ddceb873c26632562901f427516d6600178ef99cc049193c413103980c407ea3489a687b3c3479d2300c00000112278dfeae9949f887b70ae81e084f8897a5054627acef3efd01c8b29793d522000160040850b766b126a2b4843fcdfdffa5d5cab3f53bc860a3bef68958b5f066170001cc2dcaa338b312112db04b435a706d63244dd435238f0aa1e9e1598d35470810012dcc4273c8a0ed2337ecf7879380a07e7d427c7f9d82e538002bd1442978402c01daf63debf5b40df902dae98dadc029f281474d190cddecef1b10653248a234150001e2bca6a8d987d668defba89dc082196a922634ed88e065c669e526bb8815ee1b000000000000"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"network": "main",
|
|
3
|
+
"height": "2635000",
|
|
4
|
+
"hash": "0000000000936510469feedc6c09814afb64bed2dfc6f2bf84b9585fc995a638",
|
|
5
|
+
"time": 1725472507,
|
|
6
|
+
"saplingTree": "014aec4ee318120584a5d63b3446ad73b30db681d7b6c51befadb86ba4dcd48b2b001f00000001efcdeb61d7c5cc71ceb16999553257ab67ac2f8c29b74f91367eeb4580356d7101df197a749b62e07ee373d523c8795d7ff067a3baa4deec22fdbee0d7d3875920012b0bebd3e58bf72b7c2923181f13637ad7a28bd125944757fcf9981b2afe113c00000001443df95e3fe9835e24edc7f8534a8aaf0505c418385647904caea5acadd0ce3c013e1f5c6c01be4395da13e7ff3db37edc618840a22201bdf6cb448f25b046a948016360f687872720377203b62741754d620ba92fa73359ac6caa0854db38d7a045015f57b607ee9f63c786a49df5f034279b6d7645f26ce1e9d0cbcad31660c15229010fdff8660d84e9dbb3979b612a8c64535da6d9c5820ed495c395857252d3863b000001b254e3cfba937bcd40621e1d623a943440b083892546f081aab37058fd1b763f000000013e2598f743726006b8de42476ed56a55a75629a7b82e430c4e7c101a69e9b02a011619f99023a69bb647eab2d2aa1a73c3673c74bb033c3c4930eacda19e6fd93b0000000160272b134ca494b602137d89e528c751c06d3ef4a87a45f33af343c15060cc1e0000000000",
|
|
7
|
+
"orchardTree": "016c29db17907191e912d000d4929fa5630a177e9910a954b176ab28b34e628b2b001f01687b54d1a8d8df472208ab4f50e4665a39106aee59069287e1711ff8cb2c0028017ef92629025fd9c81a3e0cd7c9b3e395da8907da4937020351594bd9a429a90b0001f3377c01ae9e142f6277d1edf4cfe6723f52a324ab9d3d554bef1cc0abd4221801b838055b03e108d8f3dfb6ec2a06045ed45caca6774011dd970fe5ed01a7ed05000113d22aef389acdbde9205ac1554ed76976a38686b3e992a80754c25dff774d340001348473c84ab47f1daed7cfe1980c0eb56f3c4bb61565657217752256ab2ad224016acb8166c54a52c0169502fcd761a28ade7d4e9ad43d5d04e79d0fcd3d08a1350000012e924c7b6b2a77680118ee5fc70914b953fb33b7673ab2ddceb873c26632562901f427516d6600178ef99cc049193c413103980c407ea3489a687b3c3479d2300c00000112278dfeae9949f887b70ae81e084f8897a5054627acef3efd01c8b29793d522000160040850b766b126a2b4843fcdfdffa5d5cab3f53bc860a3bef68958b5f066170001cc2dcaa338b312112db04b435a706d63244dd435238f0aa1e9e1598d35470810012dcc4273c8a0ed2337ecf7879380a07e7d427c7f9d82e538002bd1442978402c01daf63debf5b40df902dae98dadc029f281474d190cddecef1b10653248a234150001e2bca6a8d987d668defba89dc082196a922634ed88e065c669e526bb8815ee1b000000000000"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"network": "main",
|
|
3
|
+
"height": "2637500",
|
|
4
|
+
"hash": "00000000017e912451775307f70f3dc45f3c26472abcd57821cefb5397ec095d",
|
|
5
|
+
"time": 1725660690,
|
|
6
|
+
"saplingTree": "0143545ee77369853d02f5d40779ad2bde786e00ced989ac44b4e9f8b4ee028b1f01199533df7fc1e1a972ac4eb7be134a66234f9c286fbdd92596fa7399705939281f01d64856d0f6ed5cde7f5b72585d530c1e6c5155267883a36b8c189426bf30d80f014dbf82b6b2a751d69a5691fc484c1ba806f508985fc3282fdb810b87b63f385c01f49bd1f62a1cff6b37c8c513f182cee518f6eb2cb2d94a7428eba10937e1bb1d010e745ade9349a1ee37a82b740d662bb737858b6a58fc42834f9061ea496f546b000000000105a8e948e3587e3af250a809487925cab99603c74028889103dd10ecc286f85e000001985764ab0e65ac40225e22fa01dc6be6b9b5ebf14efe8f49f94bec5722a35e690000018a015f44048c81b4d523a810de3ce0f216cde33ade70ad760501bd5e08d727000001b254e3cfba937bcd40621e1d623a943440b083892546f081aab37058fd1b763f000000013e2598f743726006b8de42476ed56a55a75629a7b82e430c4e7c101a69e9b02a011619f99023a69bb647eab2d2aa1a73c3673c74bb033c3c4930eacda19e6fd93b0000000160272b134ca494b602137d89e528c751c06d3ef4a87a45f33af343c15060cc1e0000000000",
|
|
7
|
+
"orchardTree": "01e77d7e93c2e20ea50479189ec8223eff06fa7377e10f6ff4daf738ad3941bb2b01f387d33cba0bbcef08de97bb90f88fe2bd206b4ee9bf273ceefde3798a5f2c311f00010e2bc4a095c262944aaf4ce47b00c2e3401d4ec2d7a021945b0db01d2e2bb83101c4e89af79b5473bf471782dd97a28ac68ab1bf6da9df9582c14e63d7a166120200000001f41460af612ec2a0141597d48af9e8ed6939ec6f183cf930c64462efa34c532b015b9c9e09001ba583e70a7cac2ee145d2a8903bc87bc11e8dc169ab1b184944090134467a17a9eec4b57e54f4706dc5dae8519ed13a338c807276764be12dfced0c00017456e5ac88cf348914dc885a5b520facd0e31985bcbee5490ed74bd2d777f50100012e924c7b6b2a77680118ee5fc70914b953fb33b7673ab2ddceb873c26632562901f427516d6600178ef99cc049193c413103980c407ea3489a687b3c3479d2300c00000112278dfeae9949f887b70ae81e084f8897a5054627acef3efd01c8b29793d522000160040850b766b126a2b4843fcdfdffa5d5cab3f53bc860a3bef68958b5f066170001cc2dcaa338b312112db04b435a706d63244dd435238f0aa1e9e1598d35470810012dcc4273c8a0ed2337ecf7879380a07e7d427c7f9d82e538002bd1442978402c01daf63debf5b40df902dae98dadc029f281474d190cddecef1b10653248a234150001e2bca6a8d987d668defba89dc082196a922634ed88e065c669e526bb8815ee1b000000000000"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"network": "main",
|
|
3
|
+
"height": "2640000",
|
|
4
|
+
"hash": "00000000005573f750bf887ba84eb6cdbbf68e9725a26edd0953ad1f9c2afa6f",
|
|
5
|
+
"time": 1725849281,
|
|
6
|
+
"saplingTree": "0101f5ea6dca26458eb9f8ce9f6d81839079378f4c1b4bcf8f2db65d8aa1ab03390182c1d5f455fa608b46af734a062fe578df31a19523d5153fe23a9d60b594e6161f01aeff8a227febe1f1980d2907ef1fec5239b658b20f983cae19efcc19d4921b4f0001f33e7e5e89c1ca2a4b9afd1241d22ff1b8778139e853c342f6ea7c199c0ed87200000000013ec7b9e6943afb674ae185f7832a27236d0f37a2da4f755692beb77673390e4101a84a6e9d268ebdb72a8594b935a6a4dd72525a33e44d6196b0ac305985b8b12f017b5c740cafbc34fef26447b0484376c17b4a3bb81ef7520c5e457bdc23c529550000019ae0c6c0a25f41f55524fd9f4f91d7cab457594e88472b579451b3d24597a66b00018a015f44048c81b4d523a810de3ce0f216cde33ade70ad760501bd5e08d727000001b254e3cfba937bcd40621e1d623a943440b083892546f081aab37058fd1b763f000000013e2598f743726006b8de42476ed56a55a75629a7b82e430c4e7c101a69e9b02a011619f99023a69bb647eab2d2aa1a73c3673c74bb033c3c4930eacda19e6fd93b0000000160272b134ca494b602137d89e528c751c06d3ef4a87a45f33af343c15060cc1e0000000000",
|
|
7
|
+
"orchardTree": "019116b1be34f136c7d6fc385c03468ea65df33f0676018aa4435243f86f668d2b001f013bdde1e91eb92a9ad82ee2760f7890a9e14f4882e6fdbbec3f3296805ce6eb11011a2a14dedaac9456392bf0bcef8f8472be3f263bce6d39371a8650a7144e3f1f01fc4b1e304598998a96ca40f8950f337c102e56329d76551112689b7acc32341e000000000160ad94cc69f55ec843f854dcd51873fa4111cfe95f5b9fc4ac84295c0ab77d17010581b14b31f3cb4b6bc54b767e8fa2eff3ac4f7bfd6c83ab9786af014779bf3d01b54a634726cb3a0eab16d78437fd923bee6a3fc4eb537d4f68a2cefdab03cb18017456e5ac88cf348914dc885a5b520facd0e31985bcbee5490ed74bd2d777f50100012e924c7b6b2a77680118ee5fc70914b953fb33b7673ab2ddceb873c26632562901f427516d6600178ef99cc049193c413103980c407ea3489a687b3c3479d2300c00000112278dfeae9949f887b70ae81e084f8897a5054627acef3efd01c8b29793d522000160040850b766b126a2b4843fcdfdffa5d5cab3f53bc860a3bef68958b5f066170001cc2dcaa338b312112db04b435a706d63244dd435238f0aa1e9e1598d35470810012dcc4273c8a0ed2337ecf7879380a07e7d427c7f9d82e538002bd1442978402c01daf63debf5b40df902dae98dadc029f281474d190cddecef1b10653248a234150001e2bca6a8d987d668defba89dc082196a922634ed88e065c669e526bb8815ee1b000000000000"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"network": "main",
|
|
3
|
+
"height": "2642500",
|
|
4
|
+
"hash": "00000000006693cd03a926db6e19a553d43f1f778ea4a2edbf22d4fb2e9a8816",
|
|
5
|
+
"time": 1726037548,
|
|
6
|
+
"saplingTree": "014057a44dc8aca022291f7bfb98c8ae9ca1de458f99a4d9287ae7f2381523514a001f01e5ceedb9946aae9d320f694cbaaaade053c49b30661f2877e6082a0f1514863201248dd5ace1c123df8f0325e7781b40604cb109a8e51dfe0ccd955c454eb0af4601873e0e4fb9ff27621b42f863802c8701d68ef6cf716a992e175d7ae86146d93f018746c74cb1adb19a0811447b052a4a9be991e0f0d9498a1607f2940da95dbf11010fbf67608405bd5e8c792cb8e43f8c589abb64ddef037258db69d01802750a700100332226bcc967db463041deeb5d7c8c547a9d74dadeec3b5c0721d63d73c84901b19c8961a94f9f426d4be825dab9fbc42e18557f86facf8e1a15f7018b8e446a0123a24e954893a19caf34681d1e08a4e3ad20ff2c677677a8131ce11a30ec430801161fb7489b2694aad1090661194ca06e6af6af57038dbeb897dddc2d08380d4b01cc3066969c45f7add6832034edbae71ba2df1a7d43e7cd88851c423270cf2427000127535dff4fd8bc9066593c26fb86bde398dcfb7dd9a579f3435f64f054f1b738000109c6db178ba9b949236956ab1f902dfdadf90dc338a1ac956b00d74e3c347b36018a015f44048c81b4d523a810de3ce0f216cde33ade70ad760501bd5e08d727000001b254e3cfba937bcd40621e1d623a943440b083892546f081aab37058fd1b763f000000013e2598f743726006b8de42476ed56a55a75629a7b82e430c4e7c101a69e9b02a011619f99023a69bb647eab2d2aa1a73c3673c74bb033c3c4930eacda19e6fd93b0000000160272b134ca494b602137d89e528c751c06d3ef4a87a45f33af343c15060cc1e0000000000",
|
|
7
|
+
"orchardTree": "016d9a28222a5bfb137493597d559cffad6fc6da60325b8afc1ea5be0876029b03001f0000011ca65ec086002e67b220e09b5bc8e9807023c6c94dc8be40af68329d52bcbc1001cc9b2e29a8ad1dfe14de1ba613f19f0d57f61d4f78866b14201d5485e4dcd03601f3dcb7c86ea96aa909ea670d176addc27500ce3bc6a74bd54df1906277b9de3701b34e6449b38f1bfde3d2effb17b5712c7b455fa3d6163b9782c7bb2ba5228c3000015960e63aeebcc121b63cace0da323d546e7fd04cb0fd4d476b44733f60d98b2c015b427bf919e85662e0596077c1d05b8110464a9b8acc50f89fcdc40234e9441a0000012e6422094d397757974138434d1900861784d8928417d19f3d1418200bdb5023012e924c7b6b2a77680118ee5fc70914b953fb33b7673ab2ddceb873c26632562901f427516d6600178ef99cc049193c413103980c407ea3489a687b3c3479d2300c00000112278dfeae9949f887b70ae81e084f8897a5054627acef3efd01c8b29793d522000160040850b766b126a2b4843fcdfdffa5d5cab3f53bc860a3bef68958b5f066170001cc2dcaa338b312112db04b435a706d63244dd435238f0aa1e9e1598d35470810012dcc4273c8a0ed2337ecf7879380a07e7d427c7f9d82e538002bd1442978402c01daf63debf5b40df902dae98dadc029f281474d190cddecef1b10653248a234150001e2bca6a8d987d668defba89dc082196a922634ed88e065c669e526bb8815ee1b000000000000"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"network": "main",
|
|
3
|
+
"height": "2645000",
|
|
4
|
+
"hash": "0000000001a78258009598e402b8aeceb776cb991ebaa1737249cf2b2333eeb2",
|
|
5
|
+
"time": 1726225825,
|
|
6
|
+
"saplingTree": "01f286e232140a8260d5c264431fa73da1a0c2c1d77e8332f5e043140f7459f54d01dfb7e6d43ee12ed5d3b39818f6349b0e773aca6dabcac512d4dc1e9aaed0613e1f000193bfb6fbfc09af66b1a941b50346b57e004aa280fea8509b4e4134b991eb396c000161147c41d8be262139fe8437a6ee5d31165ba510474a8161044c8a4563c201530001ee75b964eeb1b96e619b75821d8e68349cf3fb32313726c302fa0814c9108c36011583baaa7d3e373f313f7205aa8909c1a9854506e233e0111d3796d55cd5b05401486c3ce779cee145124aca56faa838adf518394622e044517159a2780aa8936c00014d55d141d63a0d30c341cf015872ea2af5f644c75171eb7d2fcbb02bfbabc62c01514167a1981750ef6e0bbed15f8479ffdb468eee5363e2da4e7cf1de0353541f0001619da5d62d17b0bcfed1f103c072fbae797c55055460fab54814da30b7c7323b0109c6db178ba9b949236956ab1f902dfdadf90dc338a1ac956b00d74e3c347b36018a015f44048c81b4d523a810de3ce0f216cde33ade70ad760501bd5e08d727000001b254e3cfba937bcd40621e1d623a943440b083892546f081aab37058fd1b763f000000013e2598f743726006b8de42476ed56a55a75629a7b82e430c4e7c101a69e9b02a011619f99023a69bb647eab2d2aa1a73c3673c74bb033c3c4930eacda19e6fd93b0000000160272b134ca494b602137d89e528c751c06d3ef4a87a45f33af343c15060cc1e0000000000",
|
|
7
|
+
"orchardTree": "01b3d75c6eaf38155f55616c0cc6b60232ff6383426ee390c56fc1a0f59c14e830001f000128b9eb51eb24cc954839c98140d1ec072b53f98ae55e8089e1309303e6c111240000000183c285bb30dbfb3b1eee233d5bad0041951ffff9e129aee5f678f83c8f8a341700015370dab5e63025aec455ebf88bce956f4f98217bc2b88bc4d49959f347925e280124736ac1734328947d00cbbc2d9d70067f3c95940bef666e7618b6ed7b091b3501259318b70a7b9ab563d152034c645eddfade822e4cdb9f686abe5a1a4b43160200012e6422094d397757974138434d1900861784d8928417d19f3d1418200bdb5023012e924c7b6b2a77680118ee5fc70914b953fb33b7673ab2ddceb873c26632562901f427516d6600178ef99cc049193c413103980c407ea3489a687b3c3479d2300c00000112278dfeae9949f887b70ae81e084f8897a5054627acef3efd01c8b29793d522000160040850b766b126a2b4843fcdfdffa5d5cab3f53bc860a3bef68958b5f066170001cc2dcaa338b312112db04b435a706d63244dd435238f0aa1e9e1598d35470810012dcc4273c8a0ed2337ecf7879380a07e7d427c7f9d82e538002bd1442978402c01daf63debf5b40df902dae98dadc029f281474d190cddecef1b10653248a234150001e2bca6a8d987d668defba89dc082196a922634ed88e065c669e526bb8815ee1b000000000000"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"network": "main",
|
|
3
|
+
"height": "2647500",
|
|
4
|
+
"hash": "00000000017d1357b1ed5da4e989fbc0b876582b794d3841550120d5039806ea",
|
|
5
|
+
"time": 1726414587,
|
|
6
|
+
"saplingTree": "011ac0ae0bc91df29324dc4e44b497e37f39231e122282fb9393d74e5b8effe004001f000001768fbe5fdb02abb79afaa9bf21cd62a8d41364945998d85e753d22ae3f72c84a0000000001dc2475360537a65a96611c4178220651c699f74d8b0bd4bc1b9b55216e5cdd660165c0935d1096c40dbc9b5b3a63316eac83d9a52a71e1f6f03e98cbb6b4ccec0c000000000000019a730d9d524de40f3fa2a76a8072ff66ef8ce0af24a68a080ef683a9d45aab7301b254e3cfba937bcd40621e1d623a943440b083892546f081aab37058fd1b763f000000013e2598f743726006b8de42476ed56a55a75629a7b82e430c4e7c101a69e9b02a011619f99023a69bb647eab2d2aa1a73c3673c74bb033c3c4930eacda19e6fd93b0000000160272b134ca494b602137d89e528c751c06d3ef4a87a45f33af343c15060cc1e0000000000",
|
|
7
|
+
"orchardTree": "0169759f512914bd375cefe2006db4ebe6ca2a75d183cdae625bf8fd6342b7023f001f000169356ffa09dfebffb520a2be8d59d2fc94e3cd9a9f7548a9403ddb9ff3cc672a0000013201d6be64dacbeb09ed9d1d6afd0c52679deff35aeef8324ab2287022f22106000000010ac5d26f1d24b3a75dacff16d1519701f2585e9854764d0639834fe9870efb2c0000000000010c104faa2b1148b1b627090aa939e321b82edcb0ce70aa4eee298997556b4f35000112278dfeae9949f887b70ae81e084f8897a5054627acef3efd01c8b29793d522000160040850b766b126a2b4843fcdfdffa5d5cab3f53bc860a3bef68958b5f066170001cc2dcaa338b312112db04b435a706d63244dd435238f0aa1e9e1598d35470810012dcc4273c8a0ed2337ecf7879380a07e7d427c7f9d82e538002bd1442978402c01daf63debf5b40df902dae98dadc029f281474d190cddecef1b10653248a234150001e2bca6a8d987d668defba89dc082196a922634ed88e065c669e526bb8815ee1b000000000000"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"network": "main",
|
|
3
|
+
"height": "2650000",
|
|
4
|
+
"hash": "0000000000b32debcdb364e5fc7988044a4eb29e4f86ed6c97a95f0836e3c37f",
|
|
5
|
+
"time": 1726602492,
|
|
6
|
+
"saplingTree": "01e09fe8115a458f1802d1d95ad1cbc4d6737d31ebf4a63f936b62011034dabd31010855462f487eaa137ee9950887b40953765357aff4a9eda4d85d4eccf274c42a1f000001488261fba3b34b7f78d50bc11ce1830c2339813606bb17570d7293128769577101216344eb0f3b3b8bddd4d2b51a36f6bb4fa368125d29dc02cf776797152bd95a00011f360200bebb9acb23f27fd0cb18a95b746d3a07c4df8cf7a843147bd0f9042d0000000001b5c2bb61f0ea5b18cfdeddac25f36c98988ce0705eae6824a3121158a6f6f824010d143acd831f6da07b124b16f4c4e58102caa7517722bb550946c5fa2a245371000000019a730d9d524de40f3fa2a76a8072ff66ef8ce0af24a68a080ef683a9d45aab7301b254e3cfba937bcd40621e1d623a943440b083892546f081aab37058fd1b763f000000013e2598f743726006b8de42476ed56a55a75629a7b82e430c4e7c101a69e9b02a011619f99023a69bb647eab2d2aa1a73c3673c74bb033c3c4930eacda19e6fd93b0000000160272b134ca494b602137d89e528c751c06d3ef4a87a45f33af343c15060cc1e0000000000",
|
|
7
|
+
"orchardTree": "016c37f7adb67b940b91f05b0d60e1d98c2d4f67c0a766ae367d42a56302ea0416001f015126bbb64a18d6e518922654683434e6aa3c488e1a4e2b35d5ff4bb4d32c310501e8131c28e898b1247a2e28d1691b0854445aecf30e7bd601117fdd36967c893e01c454a4fac32e3c68f16a55476d7e992d7cec2e4af24bc34d7d9c459f58fbe22100000102b7afec099b149198431e309cec4b3f95531b53fa350ff453c0a648276bc1140001cc846293d335bbb212a6c0f54fd45d92f995724d58b9b5fed397dbc55e3bb8030001f783a7a186e453c6d11e88542ed866790b00d4102899da05c57eb0d71fffbc2500000000010c104faa2b1148b1b627090aa939e321b82edcb0ce70aa4eee298997556b4f35000112278dfeae9949f887b70ae81e084f8897a5054627acef3efd01c8b29793d522000160040850b766b126a2b4843fcdfdffa5d5cab3f53bc860a3bef68958b5f066170001cc2dcaa338b312112db04b435a706d63244dd435238f0aa1e9e1598d35470810012dcc4273c8a0ed2337ecf7879380a07e7d427c7f9d82e538002bd1442978402c01daf63debf5b40df902dae98dadc029f281474d190cddecef1b10653248a234150001e2bca6a8d987d668defba89dc082196a922634ed88e065c669e526bb8815ee1b000000000000"
|
|
8
|
+
}
|
|
@@ -13,6 +13,10 @@ struct ZcashKeyDerivationBackend: ZcashKeyDerivationBackendWelding {
|
|
|
13
13
|
|
|
14
14
|
// MARK: Address metadata and validation
|
|
15
15
|
static func getAddressMetadata(_ address: String) -> AddressMetadata? {
|
|
16
|
+
guard !address.containsCStringNullBytesBeforeStringEnding() else {
|
|
17
|
+
return nil
|
|
18
|
+
}
|
|
19
|
+
|
|
16
20
|
var networkId: UInt32 = 0
|
|
17
21
|
var addrId: UInt32 = 0
|
|
18
22
|
guard zcashlc_get_address_metadata(
|
|
@@ -63,14 +67,6 @@ struct ZcashKeyDerivationBackend: ZcashKeyDerivationBackendWelding {
|
|
|
63
67
|
return typecodes
|
|
64
68
|
}
|
|
65
69
|
|
|
66
|
-
func isValidSaplingAddress(_ address: String) -> Bool {
|
|
67
|
-
guard !address.containsCStringNullBytesBeforeStringEnding() else {
|
|
68
|
-
return false
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
return zcashlc_is_valid_sapling_address([CChar](address.utf8CString), networkType.networkId)
|
|
72
|
-
}
|
|
73
|
-
|
|
74
70
|
func isValidSaplingExtendedFullViewingKey(_ key: String) -> Bool {
|
|
75
71
|
guard !key.containsCStringNullBytesBeforeStringEnding() else {
|
|
76
72
|
return false
|
|
@@ -87,22 +83,6 @@ struct ZcashKeyDerivationBackend: ZcashKeyDerivationBackendWelding {
|
|
|
87
83
|
return zcashlc_is_valid_sapling_extended_spending_key([CChar](key.utf8CString), networkType.networkId)
|
|
88
84
|
}
|
|
89
85
|
|
|
90
|
-
func isValidTransparentAddress(_ address: String) -> Bool {
|
|
91
|
-
guard !address.containsCStringNullBytesBeforeStringEnding() else {
|
|
92
|
-
return false
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
return zcashlc_is_valid_transparent_address([CChar](address.utf8CString), networkType.networkId)
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
func isValidUnifiedAddress(_ address: String) -> Bool {
|
|
99
|
-
guard !address.containsCStringNullBytesBeforeStringEnding() else {
|
|
100
|
-
return false
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
return zcashlc_is_valid_unified_address([CChar](address.utf8CString), networkType.networkId)
|
|
104
|
-
}
|
|
105
|
-
|
|
106
86
|
func isValidUnifiedFullViewingKey(_ key: String) -> Bool {
|
|
107
87
|
guard !key.containsCStringNullBytesBeforeStringEnding() else {
|
|
108
88
|
return false
|
|
@@ -25,11 +25,6 @@ protocol ZcashKeyDerivationBackendWelding {
|
|
|
25
25
|
/// - `rustRustReceiverTypecodesOnUnifiedAddressMalformed` if getting typecodes for unified address fails.
|
|
26
26
|
func receiverTypecodesOnUnifiedAddress(_ address: String) throws -> [UInt32]
|
|
27
27
|
|
|
28
|
-
/// Validates the if the given string is a valid Sapling Address
|
|
29
|
-
/// - Parameter address: UTF-8 encoded String to validate
|
|
30
|
-
/// - Returns: true when the address is valid. Returns false in any other case
|
|
31
|
-
func isValidSaplingAddress(_ address: String) -> Bool
|
|
32
|
-
|
|
33
28
|
/// Validates the if the given string is a valid Sapling Extended Full Viewing Key
|
|
34
29
|
/// - Parameter key: UTF-8 encoded String to validate
|
|
35
30
|
/// - Returns: `true` when the Sapling Extended Full Viewing Key is valid. `false` in any other case
|
|
@@ -40,16 +35,6 @@ protocol ZcashKeyDerivationBackendWelding {
|
|
|
40
35
|
/// - parameter key: String encoded Extended Spending Key
|
|
41
36
|
func isValidSaplingExtendedSpendingKey(_ key: String) -> Bool
|
|
42
37
|
|
|
43
|
-
/// Validates the if the given string is a valid Transparent Address
|
|
44
|
-
/// - Parameter address: UTF-8 encoded String to validate
|
|
45
|
-
/// - Returns: true when the address is valid and transparent. false in any other case
|
|
46
|
-
func isValidTransparentAddress(_ address: String) -> Bool
|
|
47
|
-
|
|
48
|
-
/// validates whether a string encoded address is a valid Unified Address.
|
|
49
|
-
/// - Parameter address: UTF-8 encoded String to validate
|
|
50
|
-
/// - Returns: true when the address is valid and transparent. false in any other case
|
|
51
|
-
func isValidUnifiedAddress(_ address: String) -> Bool
|
|
52
|
-
|
|
53
38
|
/// verifies that the given string-encoded `UnifiedFullViewingKey` is valid.
|
|
54
39
|
/// - Parameter ufvk: UTF-8 encoded String to validate
|
|
55
40
|
/// - Returns: true when the encoded string is a valid UFVK. false in any other case
|
|
@@ -9,8 +9,24 @@
|
|
|
9
9
|
import Foundation
|
|
10
10
|
|
|
11
11
|
|
|
12
|
+
enum RustLogging: String {
|
|
13
|
+
/// The logs are completely disabled.
|
|
14
|
+
case off
|
|
15
|
+
/// Logs very serious errors.
|
|
16
|
+
case error
|
|
17
|
+
/// Logs hazardous situations.
|
|
18
|
+
case warn
|
|
19
|
+
/// Logs useful information.
|
|
20
|
+
case info
|
|
21
|
+
/// Logs lower priority information.
|
|
22
|
+
case debug
|
|
23
|
+
/// Logs very low priority, often extremely verbose, information.
|
|
24
|
+
case trace
|
|
25
|
+
}
|
|
26
|
+
|
|
12
27
|
struct ZcashRustBackend: ZcashRustBackendWelding {
|
|
13
28
|
let minimumConfirmations: UInt32 = 10
|
|
29
|
+
let minimumShieldingConfirmations: UInt32 = 1
|
|
14
30
|
let useZIP317Fees = true
|
|
15
31
|
|
|
16
32
|
let dbData: (String, UInt)
|
|
@@ -21,7 +37,8 @@ struct ZcashRustBackend: ZcashRustBackendWelding {
|
|
|
21
37
|
|
|
22
38
|
let networkType: NetworkType
|
|
23
39
|
|
|
24
|
-
static var
|
|
40
|
+
static var rustInitialized = false
|
|
41
|
+
|
|
25
42
|
/// Creates instance of `ZcashRustBackend`.
|
|
26
43
|
/// - Parameters:
|
|
27
44
|
/// - dbData: `URL` pointing to file where data database will be.
|
|
@@ -31,9 +48,17 @@ struct ZcashRustBackend: ZcashRustBackendWelding {
|
|
|
31
48
|
/// - spendParamsPath: `URL` pointing to spend parameters file.
|
|
32
49
|
/// - outputParamsPath: `URL` pointing to output parameters file.
|
|
33
50
|
/// - networkType: Network type to use.
|
|
34
|
-
/// -
|
|
35
|
-
///
|
|
36
|
-
|
|
51
|
+
/// - logLevel: this sets up whether the tracing system will dump logs onto the OSLogger system or not.
|
|
52
|
+
/// **Important note:** this will enable the tracing **for all instances** of ZcashRustBackend, not only for this one.
|
|
53
|
+
/// This is ignored after the first ZcashRustBackend instance is created.
|
|
54
|
+
init(
|
|
55
|
+
dbData: URL,
|
|
56
|
+
fsBlockDbRoot: URL,
|
|
57
|
+
spendParamsPath: URL,
|
|
58
|
+
outputParamsPath: URL,
|
|
59
|
+
networkType: NetworkType,
|
|
60
|
+
logLevel: RustLogging = RustLogging.off
|
|
61
|
+
) {
|
|
37
62
|
self.dbData = dbData.osStr()
|
|
38
63
|
self.fsBlockDbRoot = fsBlockDbRoot.osPathStr()
|
|
39
64
|
self.spendParamsPath = spendParamsPath.osPathStr()
|
|
@@ -41,9 +66,9 @@ struct ZcashRustBackend: ZcashRustBackendWelding {
|
|
|
41
66
|
self.networkType = networkType
|
|
42
67
|
self.keyDeriving = ZcashKeyDerivationBackend(networkType: networkType)
|
|
43
68
|
|
|
44
|
-
if
|
|
45
|
-
Self.
|
|
46
|
-
Self.
|
|
69
|
+
if !Self.rustInitialized {
|
|
70
|
+
Self.rustInitialized = true
|
|
71
|
+
Self.initializeRust(logLevel: logLevel)
|
|
47
72
|
}
|
|
48
73
|
}
|
|
49
74
|
|
|
@@ -113,7 +138,9 @@ struct ZcashRustBackend: ZcashRustBackendWelding {
|
|
|
113
138
|
|
|
114
139
|
// -1 is the error sentinel.
|
|
115
140
|
guard result >= 0 else {
|
|
116
|
-
throw ZcashError.rustIsSeedRelevantToAnyDerivedAccount(
|
|
141
|
+
throw ZcashError.rustIsSeedRelevantToAnyDerivedAccount(
|
|
142
|
+
lastErrorMessage(fallback: "`isSeedRelevantToAnyDerivedAccount` failed with unknown error")
|
|
143
|
+
)
|
|
117
144
|
}
|
|
118
145
|
|
|
119
146
|
// 0 is false, 1 is true.
|
|
@@ -179,13 +206,13 @@ struct ZcashRustBackend: ZcashRustBackendWelding {
|
|
|
179
206
|
}
|
|
180
207
|
|
|
181
208
|
@DBActor
|
|
182
|
-
func decryptAndStoreTransaction(txBytes: [UInt8], minedHeight:
|
|
209
|
+
func decryptAndStoreTransaction(txBytes: [UInt8], minedHeight: UInt32?) async throws {
|
|
183
210
|
let result = zcashlc_decrypt_and_store_transaction(
|
|
184
211
|
dbData.0,
|
|
185
212
|
dbData.1,
|
|
186
213
|
txBytes,
|
|
187
214
|
UInt(txBytes.count),
|
|
188
|
-
|
|
215
|
+
Int64(minedHeight ?? 0),
|
|
189
216
|
networkType.networkId
|
|
190
217
|
)
|
|
191
218
|
|
|
@@ -306,7 +333,7 @@ struct ZcashRustBackend: ZcashRustBackendWelding {
|
|
|
306
333
|
dbData.1,
|
|
307
334
|
networkType.networkId,
|
|
308
335
|
account,
|
|
309
|
-
|
|
336
|
+
minimumShieldingConfirmations
|
|
310
337
|
)
|
|
311
338
|
|
|
312
339
|
guard balance >= 0 else {
|
|
@@ -747,16 +774,20 @@ struct ZcashRustBackend: ZcashRustBackendWelding {
|
|
|
747
774
|
UInt64(shieldingThreshold.amount),
|
|
748
775
|
transparentReceiver.map { [CChar]($0.utf8CString) },
|
|
749
776
|
networkType.networkId,
|
|
750
|
-
|
|
777
|
+
minimumShieldingConfirmations,
|
|
751
778
|
useZIP317Fees
|
|
752
779
|
)
|
|
753
780
|
|
|
754
781
|
guard let proposal else {
|
|
755
|
-
throw ZcashError.rustShieldFunds(lastErrorMessage(fallback: "
|
|
782
|
+
throw ZcashError.rustShieldFunds(lastErrorMessage(fallback: "Failed with nil proposal."))
|
|
756
783
|
}
|
|
757
784
|
|
|
758
785
|
defer { zcashlc_free_boxed_slice(proposal) }
|
|
759
|
-
|
|
786
|
+
|
|
787
|
+
guard proposal.pointee.ptr != nil else {
|
|
788
|
+
throw ZcashError.rustShieldFunds(lastErrorMessage(fallback: "Failed with nil pointer."))
|
|
789
|
+
}
|
|
790
|
+
|
|
760
791
|
return try FfiProposal(contiguousBytes: Data(
|
|
761
792
|
bytes: proposal.pointee.ptr,
|
|
762
793
|
count: Int(proposal.pointee.len)
|
|
@@ -813,36 +844,106 @@ struct ZcashRustBackend: ZcashRustBackendWelding {
|
|
|
813
844
|
|
|
814
845
|
return branchId
|
|
815
846
|
}
|
|
847
|
+
|
|
848
|
+
@DBActor
|
|
849
|
+
func transactionDataRequests() async throws -> [TransactionDataRequest] {
|
|
850
|
+
let tDataRequestsPtr = zcashlc_transaction_data_requests(
|
|
851
|
+
dbData.0,
|
|
852
|
+
dbData.1,
|
|
853
|
+
networkType.networkId
|
|
854
|
+
)
|
|
855
|
+
|
|
856
|
+
guard let tDataRequestsPtr else {
|
|
857
|
+
throw ZcashError.rustTransactionDataRequests(lastErrorMessage(fallback: "`transactionDataRequests` failed with unknown error"))
|
|
858
|
+
}
|
|
859
|
+
|
|
860
|
+
defer { zcashlc_free_transaction_data_requests(tDataRequestsPtr) }
|
|
861
|
+
|
|
862
|
+
var transactionDataRequests: [TransactionDataRequest] = []
|
|
863
|
+
|
|
864
|
+
for i in (0 ..< Int(tDataRequestsPtr.pointee.len)) {
|
|
865
|
+
let tDataRequestPtr = tDataRequestsPtr.pointee.ptr.advanced(by: i).pointee
|
|
866
|
+
|
|
867
|
+
var tDataRequest: TransactionDataRequest?
|
|
868
|
+
|
|
869
|
+
if tDataRequestPtr.tag == 0 {
|
|
870
|
+
tDataRequest = TransactionDataRequest.getStatus(FfiTxId(tuple: tDataRequestPtr.get_status).array)
|
|
871
|
+
} else if tDataRequestPtr.tag == 1 {
|
|
872
|
+
tDataRequest = TransactionDataRequest.enhancement(FfiTxId(tuple: tDataRequestPtr.enhancement).array)
|
|
873
|
+
} else if tDataRequestPtr.tag == 2, let address = String(validatingUTF8: tDataRequestPtr.spends_from_address.address) {
|
|
874
|
+
let end = tDataRequestPtr.spends_from_address.block_range_end
|
|
875
|
+
let blockRangeEnd: UInt32? = end > UInt32.max || end == -1 ? nil : UInt32(end)
|
|
876
|
+
|
|
877
|
+
tDataRequest = TransactionDataRequest.spendsFromAddress(
|
|
878
|
+
SpendsFromAddress(
|
|
879
|
+
address: address,
|
|
880
|
+
blockRangeStart: tDataRequestPtr.spends_from_address.block_range_start,
|
|
881
|
+
blockRangeEnd: blockRangeEnd
|
|
882
|
+
)
|
|
883
|
+
)
|
|
884
|
+
}
|
|
885
|
+
|
|
886
|
+
if let tDataRequest {
|
|
887
|
+
transactionDataRequests.append(tDataRequest)
|
|
888
|
+
}
|
|
889
|
+
}
|
|
890
|
+
|
|
891
|
+
return transactionDataRequests
|
|
892
|
+
}
|
|
893
|
+
|
|
894
|
+
@DBActor
|
|
895
|
+
func setTransactionStatus(txId: Data, status: TransactionStatus) async throws {
|
|
896
|
+
var transactionStatus = FfiTransactionStatus()
|
|
897
|
+
|
|
898
|
+
switch status {
|
|
899
|
+
case .txidNotRecognized:
|
|
900
|
+
transactionStatus.tag = 0
|
|
901
|
+
case .notInMainChain:
|
|
902
|
+
transactionStatus.tag = 1
|
|
903
|
+
case .mined(let height):
|
|
904
|
+
transactionStatus.tag = 2
|
|
905
|
+
transactionStatus.mined = UInt32(height)
|
|
906
|
+
}
|
|
907
|
+
|
|
908
|
+
zcashlc_set_transaction_status(
|
|
909
|
+
dbData.0,
|
|
910
|
+
dbData.1,
|
|
911
|
+
networkType.networkId,
|
|
912
|
+
txId.bytes,
|
|
913
|
+
UInt(txId.bytes.count),
|
|
914
|
+
transactionStatus
|
|
915
|
+
)
|
|
916
|
+
}
|
|
816
917
|
}
|
|
817
918
|
|
|
818
919
|
private extension ZcashRustBackend {
|
|
819
|
-
static func
|
|
820
|
-
|
|
920
|
+
static func initializeRust(logLevel: RustLogging) {
|
|
921
|
+
logLevel.rawValue.utf8CString.withUnsafeBufferPointer { levelPtr in
|
|
922
|
+
zcashlc_init_on_load(levelPtr.baseAddress)
|
|
923
|
+
}
|
|
821
924
|
}
|
|
822
925
|
}
|
|
823
926
|
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
return errorMessage
|
|
836
|
-
} else {
|
|
837
|
-
return fallback
|
|
838
|
-
}
|
|
927
|
+
nonisolated func lastErrorMessage(fallback: String) -> String {
|
|
928
|
+
let errorLen = zcashlc_last_error_length()
|
|
929
|
+
defer { zcashlc_clear_last_error() }
|
|
930
|
+
|
|
931
|
+
if errorLen > 0 {
|
|
932
|
+
let error = UnsafeMutablePointer<Int8>.allocate(capacity: Int(errorLen))
|
|
933
|
+
defer { error.deallocate() }
|
|
934
|
+
|
|
935
|
+
zcashlc_error_message_utf8(error, errorLen)
|
|
936
|
+
if let errorMessage = String(validatingUTF8: error) {
|
|
937
|
+
return errorMessage
|
|
839
938
|
} else {
|
|
840
939
|
return fallback
|
|
841
940
|
}
|
|
941
|
+
} else {
|
|
942
|
+
return fallback
|
|
842
943
|
}
|
|
843
944
|
}
|
|
844
945
|
|
|
845
|
-
|
|
946
|
+
extension URL {
|
|
846
947
|
func osStr() -> (String, UInt) {
|
|
847
948
|
let path = self.absoluteString
|
|
848
949
|
return (path, UInt(path.lengthOfBytes(using: .utf8)))
|
|
@@ -55,7 +55,7 @@ protocol ZcashRustBackendWelding {
|
|
|
55
55
|
/// - parameter tx: the transaction to decrypt
|
|
56
56
|
/// - parameter minedHeight: height on which this transaction was mined. this is used to fetch the consensus branch ID.
|
|
57
57
|
/// - Throws: `rustDecryptAndStoreTransaction`.
|
|
58
|
-
func decryptAndStoreTransaction(txBytes: [UInt8], minedHeight:
|
|
58
|
+
func decryptAndStoreTransaction(txBytes: [UInt8], minedHeight: UInt32?) async throws
|
|
59
59
|
|
|
60
60
|
/// Returns the most-recently-generated unified payment address for the specified account.
|
|
61
61
|
/// - parameter account: index of the given account
|
|
@@ -289,4 +289,21 @@ protocol ZcashRustBackendWelding {
|
|
|
289
289
|
/// format `{height}-{hash}-block`. This directory has must be granted both write and read permissions.
|
|
290
290
|
/// - Returns `BlockHeight` of the latest cached block or `.empty` if no blocks are stored.
|
|
291
291
|
func latestCachedBlockHeight() async throws -> BlockHeight
|
|
292
|
+
|
|
293
|
+
/// Returns an array of [`TransactionDataRequest`] values that describe information needed by
|
|
294
|
+
/// the wallet to complete its view of transaction history.
|
|
295
|
+
///
|
|
296
|
+
/// Requests for the same transaction data may be returned repeatedly by successive data
|
|
297
|
+
/// requests. The caller of this method should consider the latest set of requests returned
|
|
298
|
+
/// by this method to be authoritative and to subsume that returned by previous calls.
|
|
299
|
+
func transactionDataRequests() async throws -> [TransactionDataRequest]
|
|
300
|
+
|
|
301
|
+
/// Updates the wallet backend with respect to the status of a specific transaction, from the
|
|
302
|
+
/// perspective of the main chain.
|
|
303
|
+
///
|
|
304
|
+
/// Fully transparent transactions, and transactions that do not contain either shielded inputs
|
|
305
|
+
/// or shielded outputs belonging to the wallet, may not be discovered by the process of chain
|
|
306
|
+
/// scanning; as a consequence, the wallet must actively query to determine whether such
|
|
307
|
+
/// transactions have been mined.
|
|
308
|
+
func setTransactionStatus(txId: Data, status: TransactionStatus) async throws
|
|
292
309
|
}
|
|
@@ -194,6 +194,10 @@ extension ClosureSDKSynchronizer: ClosureSynchronizer {
|
|
|
194
194
|
}
|
|
195
195
|
}
|
|
196
196
|
|
|
197
|
+
public func refreshExchangeRateUSD() {
|
|
198
|
+
synchronizer.refreshExchangeRateUSD()
|
|
199
|
+
}
|
|
200
|
+
|
|
197
201
|
/*
|
|
198
202
|
It can be missleading that these two methods are returning Publisher even this protocol is closure based. Reason is that Synchronizer doesn't
|
|
199
203
|
provide different implementations for these two methods. So Combine it is even here.
|
|
@@ -80,7 +80,7 @@ extension CombineSDKSynchronizer: CombineSynchronizer {
|
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
|
|
83
|
+
public func proposefulfillingPaymentURI(
|
|
84
84
|
_ uri: String,
|
|
85
85
|
accountIndex: Int
|
|
86
86
|
) -> SinglePublisher<Proposal, Error> {
|
|
@@ -196,6 +196,10 @@ extension CombineSDKSynchronizer: CombineSynchronizer {
|
|
|
196
196
|
}
|
|
197
197
|
}
|
|
198
198
|
|
|
199
|
+
public func refreshExchangeRateUSD() {
|
|
200
|
+
synchronizer.refreshExchangeRateUSD()
|
|
201
|
+
}
|
|
202
|
+
|
|
199
203
|
public func rewind(_ policy: RewindPolicy) -> CompletablePublisher<Error> { synchronizer.rewind(policy) }
|
|
200
204
|
public func wipe() -> CompletablePublisher<Error> { synchronizer.wipe() }
|
|
201
205
|
}
|