react-native-zcash 0.3.4 → 0.4.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 +11 -0
- package/LICENSE +22 -0
- package/README.md +40 -37
- package/android/build.gradle +7 -5
- package/android/src/main/assets/saplingtree/mainnet/1310000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1320000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1330000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1340000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1350000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1360000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1370000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1380000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1390000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1400000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1410000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1420000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1430000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1440000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1450000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1460000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1470000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1480000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1490000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1500000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1510000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1520000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1530000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1540000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1550000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1560000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1570000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1580000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1590000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1600000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1610000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1620000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1630000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1640000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1650000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1660000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1670000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1680000.json +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1690000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/1700000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/1710000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/1720000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/1730000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/1740000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/1750000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/1760000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/1770000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/1780000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/1790000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/1800000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/1810000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/1820000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/1830000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/1840000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/1850000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/1860000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/1870000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/1880000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/1890000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/1900000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/1910000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/1920000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/1930000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/1940000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/1950000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/1960000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/1970000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/1980000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/1990000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/2000000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/2010000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/2020000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/2030000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/2040000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/2050000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/2060000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/2070000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/2080000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/2090000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/2100000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/2110000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/2120000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/2130000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/2140000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/2150000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/2160000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/2170000.json +2 -1
- package/android/src/main/assets/saplingtree/mainnet/2180000.json +8 -0
- package/android/src/main/assets/saplingtree/mainnet/2190000.json +8 -0
- package/android/src/main/assets/saplingtree/mainnet/2200000.json +8 -0
- package/android/src/main/assets/saplingtree/mainnet/2210000.json +8 -0
- package/android/src/main/java/app/edge/rnzcash/RNZcashModule.kt +179 -175
- package/android/src/main/java/app/edge/rnzcash/RNZcashPackage.kt +2 -3
- package/ios/RNZcash.m +5 -22
- package/ios/RNZcash.swift +532 -514
- package/ios/ZCashLightClientKit/Block/CompactBlockProcessor.swift +1365 -0
- package/ios/ZCashLightClientKit/Block/DatabaseStorage/ConnectorProvider.swift +12 -0
- package/ios/ZCashLightClientKit/Block/DatabaseStorage/DatabaseStorageError.swift +20 -0
- package/ios/ZCashLightClientKit/Block/DatabaseStorage/SimpleConnectionProvider.swift +39 -0
- package/ios/ZCashLightClientKit/Block/Download/BlockDownloader.swift +295 -0
- package/ios/ZCashLightClientKit/Block/Download/BlockDownloaderService.swift +117 -0
- package/ios/ZCashLightClientKit/Block/Enhance/BlockEnhancer.swift +123 -0
- package/ios/ZCashLightClientKit/Block/FetchUnspentTxOutputs/UTXOFetcher.swift +114 -0
- package/ios/ZCashLightClientKit/Block/FilesystemStorage/FSCompactBlockRepository.swift +419 -0
- package/ios/ZCashLightClientKit/Block/SaplingParameters/SaplingParametersHandler.swift +52 -0
- package/ios/ZCashLightClientKit/Block/Scan/BlockScanner.swift +114 -0
- package/ios/ZCashLightClientKit/Block/Utils/AfterSyncHooksManager.swift +88 -0
- package/ios/ZCashLightClientKit/Block/Utils/InternalSyncProgress.swift +200 -0
- package/ios/ZCashLightClientKit/Block/Validate/BlockValidator.swift +51 -0
- package/ios/ZCashLightClientKit/ClosureSynchronizer.swift +84 -0
- package/ios/ZCashLightClientKit/CombineSynchronizer.swift +76 -0
- package/ios/ZCashLightClientKit/Constants/Checkpoint+Constants.swift +98 -0
- package/ios/ZCashLightClientKit/Constants/Checkpoint+mainnet.swift +19 -0
- package/ios/ZCashLightClientKit/Constants/Checkpoint+testnet.swift +20 -0
- package/ios/ZCashLightClientKit/Constants/ZcashSDK.swift +215 -0
- package/ios/ZCashLightClientKit/DAO/BlockDao.swift +112 -0
- package/ios/ZCashLightClientKit/DAO/PagedTransactionDao.swift +54 -0
- package/ios/ZCashLightClientKit/DAO/TransactionDao.swift +245 -0
- package/ios/ZCashLightClientKit/DAO/UnspentTransactionOutputDao.swift +210 -0
- package/ios/ZCashLightClientKit/Entity/AccountEntity.swift +199 -0
- package/ios/ZCashLightClientKit/Entity/BlockProgress.swift +24 -0
- package/ios/ZCashLightClientKit/Entity/EncodedTransactionEntity.swift +26 -0
- package/ios/ZCashLightClientKit/Entity/SentNoteEntity.swift +48 -0
- package/ios/ZCashLightClientKit/Entity/TransactionEntity.swift +235 -0
- package/ios/ZCashLightClientKit/Entity/UnspentTransactionOutputEntity.swift +18 -0
- package/ios/ZCashLightClientKit/Entity/ZcashCompactBlock.swift +96 -0
- package/ios/ZCashLightClientKit/Error/Sourcery/ZcashError.stencil +40 -0
- package/ios/ZCashLightClientKit/Error/Sourcery/ZcashErrorCode.stencil +15 -0
- package/ios/ZCashLightClientKit/Error/Sourcery/generateErrorCode.sh +34 -0
- package/ios/ZCashLightClientKit/Error/ZcashError.swift +820 -0
- package/ios/ZCashLightClientKit/Error/ZcashErrorCode.swift +306 -0
- package/ios/ZCashLightClientKit/Error/ZcashErrorCodeDefinition.swift +596 -0
- package/ios/ZCashLightClientKit/Extensions/Data+Zcash.swift +17 -0
- package/ios/ZCashLightClientKit/Extensions/Data+internal.swift +35 -0
- package/ios/ZCashLightClientKit/Extensions/Error+ZcashError.swift +18 -0
- package/ios/ZCashLightClientKit/Extensions/HexEncode.swift +41 -0
- package/ios/ZCashLightClientKit/Extensions/NumberFormatter+Zcash.swift +19 -0
- package/ios/ZCashLightClientKit/Extensions/URL+UpdateWithAlias.swift +36 -0
- package/ios/ZCashLightClientKit/Extensions/Undescribable.swift +22 -0
- package/ios/ZCashLightClientKit/Extensions/Zatoshi+SQLite.swift +20 -0
- package/ios/ZCashLightClientKit/Extensions/ZcashRust+Utils.swift +26 -0
- package/ios/ZCashLightClientKit/Extensions/ZcashSDK+extensions.swift +34 -0
- package/ios/ZCashLightClientKit/Initializer.swift +433 -0
- package/ios/ZCashLightClientKit/Metrics/SDKMetrics.swift +270 -0
- package/ios/ZCashLightClientKit/Model/Checkpoint.swift +84 -0
- package/ios/ZCashLightClientKit/Model/Memo.swift +236 -0
- package/ios/ZCashLightClientKit/Model/WalletTypes.swift +281 -0
- package/ios/ZCashLightClientKit/Model/Zatoshi.swift +115 -0
- package/ios/ZCashLightClientKit/Modules/Service/GRPC/LightWalletGRPCService.swift +342 -0
- package/ios/ZCashLightClientKit/Modules/Service/GRPC/ProtoBuf/Extensions/Protocolbuffer+Extensions.swift +50 -0
- package/ios/ZCashLightClientKit/Modules/Service/GRPC/ProtoBuf/compact_formats.pb.swift +399 -0
- package/ios/ZCashLightClientKit/Modules/Service/GRPC/ProtoBuf/proto/compact_formats.proto +66 -0
- package/ios/ZCashLightClientKit/Modules/Service/GRPC/ProtoBuf/proto/service.proto +185 -0
- package/ios/ZCashLightClientKit/Modules/Service/GRPC/ProtoBuf/service.grpc.swift +1123 -0
- package/ios/ZCashLightClientKit/Modules/Service/GRPC/ProtoBuf/service.pb.swift +1208 -0
- package/ios/ZCashLightClientKit/Modules/Service/LightWalletService.swift +195 -0
- package/ios/ZCashLightClientKit/Providers/LatestBlocksDataProvider.swift +69 -0
- package/ios/ZCashLightClientKit/Providers/ResourceProvider.swift +65 -0
- package/ios/ZCashLightClientKit/Repository/BlockRepository.swift +13 -0
- package/ios/ZCashLightClientKit/Repository/CompactBlockRepository.swift +43 -0
- package/ios/ZCashLightClientKit/Repository/NotesRepository.swift +17 -0
- package/ios/ZCashLightClientKit/Repository/PaginatedTransactionRepository.swift +35 -0
- package/ios/ZCashLightClientKit/Repository/TransactionRepository.swift +29 -0
- package/ios/ZCashLightClientKit/Repository/TransactionRepositoryBuilder.swift +24 -0
- package/ios/ZCashLightClientKit/Repository/UnspentTransactionOutputRepository.swift +16 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1000000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1010000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1020000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1030000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1040000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1050000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1060000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1070000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1080000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1090000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1100000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1110000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1120000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1130000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1140000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1150000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1160000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1170000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1180000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1190000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1200000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1210000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1220000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1230000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1240000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1250000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1260000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1270000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1280000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1290000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1300000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1310000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1320000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1330000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1340000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1350000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1360000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1370000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1380000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1390000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1400000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1410000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1420000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1430000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1440000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1450000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1460000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1470000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1480000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1490000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1500000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1510000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1520000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1530000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1540000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1550000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1560000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1570000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1580000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1590000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1600000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1610000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1620000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1630000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1631000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1640000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1650000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1660000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1670000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1680000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1686871.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1687104.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1690000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1700000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1710000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1720000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1722500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1725000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1727500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1730000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1732500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1735000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1737500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1740000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1742500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1745000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1747500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1750000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1752500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1755000.json +9 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1757500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1760000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1762500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1765000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1767500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1770000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1772500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1775000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1777500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1780000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1782500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1785000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1787500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1790000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1792500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1795000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1797500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1800000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1802500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1805000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1807500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1810000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1812500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1815000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1817500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1820000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1822500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1825000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1827500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1830000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1832500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1835000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1837500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1840000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1842500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1845000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1847500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1850000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1852500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1855000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1857500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1860000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1862500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1865000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1867500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1870000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1872500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1875000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1877500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1880000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1882500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1885000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1887500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1890000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1892500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1895000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1897500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1900000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1902500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1905000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1907500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1910000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1912500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1915000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1917500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1920000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1922500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1925000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1927500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1930000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1932500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1935000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1937500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1940000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1942500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1945000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1947500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1950000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1952500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1955000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1957500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1960000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1962500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1965000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1967500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1970000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1972500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1975000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1977500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1980000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1982500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1985000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1987500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1990000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1992500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1995000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/1997500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2000000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2002500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2005000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2007500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2010000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2012500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2015000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2017500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2020000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2022500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2025000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2027500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2030000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2032500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2035000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2037500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2040000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2042500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2045000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2047500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2050000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2052500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2055000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2057500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2060000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2062500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2065000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2067500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2070000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2072500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2075000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2077500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2080000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2082500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2085000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2087500.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2090000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2100000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2110000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2120000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2130000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2140000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2150000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2160000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2170000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2180000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2190000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2200000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/2210000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/419200.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/500000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/510000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/520000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/530000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/540000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/550000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/560000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/570000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/580000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/590000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/600000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/610000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/620000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/630000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/640000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/650000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/660000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/663150.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/670000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/680000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/690000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/700000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/710000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/720000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/730000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/740000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/750000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/760000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/770000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/780000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/790000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/800000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/810000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/820000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/830000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/840000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/850000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/860000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/870000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/880000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/890000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/900000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/910000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/920000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/930000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/940000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/950000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/960000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/970000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/980000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/990000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1000000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1010000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1020000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1030000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1040000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1050000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1060000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1070000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1080000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1090000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1100000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1110000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1120000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1130000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1140000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1150000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1160000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1170000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1180000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1190000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1200000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1210000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1220000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1230000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1240000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1250000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1260000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1270000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1280000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1290000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1300000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1310000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1320000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1330000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1340000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1350000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1360000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1370000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1380000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1390000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1400000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1410000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1420000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1430000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1440000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1450000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1460000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1470000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1480000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1490000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1500000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1510000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1520000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1530000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1540000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1550000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1560000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1570000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1580000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1590000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1600000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1610000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1620000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1630000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1640000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1650000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1660000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1670000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1680000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1690000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1700000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1710000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1720000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1730000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1740000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1750000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1760000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1770000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1780000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1790000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1800000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1810000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1820000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1830000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1840000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1842420.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1850000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1860000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1870000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1880000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1890000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1900000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1910000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1920000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1930000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1940000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1950000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1960000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1970000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1980000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/1990000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2000000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2010000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2020000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2030000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2040000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2050000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2060000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2070000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2080000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2090000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2100000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2110000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2120000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2130000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2140000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2150000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2160000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2170000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2180000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2190000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2200000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2210000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2220000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2230000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2240000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2250000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2260000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2270000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2280000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2290000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2300000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2310000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2320000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2330000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/2340000.json +8 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/280000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/290000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/300000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/310000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/320000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/330000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/340000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/350000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/360000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/370000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/380000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/390000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/400000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/410000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/420000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/430000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/440000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/450000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/460000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/470000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/480000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/490000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/500000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/510000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/520000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/530000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/540000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/550000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/560000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/570000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/580000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/590000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/600000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/610000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/620000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/630000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/640000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/650000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/660000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/670000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/680000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/690000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/700000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/710000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/720000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/730000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/740000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/750000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/760000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/770000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/780000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/790000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/800000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/810000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/820000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/830000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/840000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/850000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/860000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/870000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/880000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/890000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/900000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/910000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/920000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/930000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/940000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/950000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/960000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/970000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/980000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/testnet/990000.json +7 -0
- package/ios/ZCashLightClientKit/Rust/ZcashKeyDerivationBackend.swift +218 -0
- package/ios/ZCashLightClientKit/Rust/ZcashKeyDerivationBackendWelding.swift +88 -0
- package/ios/ZCashLightClientKit/Rust/ZcashRustBackend.swift +645 -0
- package/ios/ZCashLightClientKit/Rust/ZcashRustBackendWelding.swift +256 -0
- package/ios/ZCashLightClientKit/Rust/zcashlc.h +1051 -0
- package/ios/ZCashLightClientKit/Synchronizer/ClosureSDKSynchronizer.swift +180 -0
- package/ios/ZCashLightClientKit/Synchronizer/CombineSDKSynchronizer.swift +175 -0
- package/ios/ZCashLightClientKit/Synchronizer/Dependencies.swift +207 -0
- package/ios/ZCashLightClientKit/Synchronizer/SDKSynchronizer.swift +663 -0
- package/ios/ZCashLightClientKit/Synchronizer.swift +504 -0
- package/ios/ZCashLightClientKit/Tool/DerivationTool.swift +207 -0
- package/ios/ZCashLightClientKit/Transaction/TransactionEncoder.swift +66 -0
- package/ios/ZCashLightClientKit/Transaction/WalletTransactionEncoder.swift +165 -0
- package/ios/ZCashLightClientKit/Utils/AsyncToClosureGateway.swift +46 -0
- package/ios/ZCashLightClientKit/Utils/AsyncToCombineGateway.swift +59 -0
- package/ios/ZCashLightClientKit/Utils/Clamped.swift +32 -0
- package/ios/ZCashLightClientKit/Utils/DIContainer.swift +86 -0
- package/ios/ZCashLightClientKit/Utils/GenericActor.swift +18 -0
- package/ios/ZCashLightClientKit/Utils/LoggingProxy.swift +48 -0
- package/ios/ZCashLightClientKit/Utils/OSLogger.swift +109 -0
- package/ios/ZCashLightClientKit/Utils/SaplingParameterDownloader.swift +159 -0
- package/ios/ZCashLightClientKit/Utils/SpecificCombineTypes.swift +16 -0
- package/ios/ZCashLightClientKit/Utils/SyncSessionIDGenerator.swift +32 -0
- package/ios/ZCashLightClientKit/Utils/Task+sleep.swift +14 -0
- package/ios/ZCashLightClientKit/Utils/UsedAliasesChecker.swift +41 -0
- package/ios/libzcashlc.xcframework/Info.plist +40 -0
- 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/react-native-zcash-Bridging-Header.h +2 -0
- package/ios/react-native-zcash.xcodeproj/project.pbxproj +1 -0
- package/lib/rnzcash.rn.js +37 -80
- package/lib/rnzcash.rn.js.map +1 -1
- package/lib/scripts/copyCheckpoints.d.ts +5 -0
- package/lib/scripts/updateSources.d.ts +1 -0
- package/lib/src/react-native.d.ts +5 -10
- package/lib/src/types.d.ts +3 -4
- package/package.json +23 -37
- package/react-native-zcash.podspec +19 -8
- package/src/react-native.ts +15 -41
- package/src/types.ts +3 -4
- package/ios/RNZcash-Bridging-Header.h +0 -6
- package/ios/RNZcash.xcodeproj/project.pbxproj +0 -271
- package/ios/RNZcash.xcworkspace/contents.xcworkspacedata +0 -7
- package/ios/RNZcash.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
- package/lib/src/browser.d.ts +0 -0
- package/lib/src/index.d.ts +0 -0
- package/lib/test/test.test.d.ts +0 -0
- package/scripts/copyCheckpoints.js +0 -12
- package/src/browser.ts +0 -36
- package/src/index.flow.js +0 -168
- package/src/index.ts +0 -1
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
//
|
|
2
|
+
// ZcashSDK.swift
|
|
3
|
+
// ZcashLightClientKit
|
|
4
|
+
//
|
|
5
|
+
// Created by Francisco Gindre on 7/22/21.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
public protocol ZcashNetwork {
|
|
10
|
+
var networkType: NetworkType { get }
|
|
11
|
+
var constants: NetworkConstants.Type { get }
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
public enum NetworkType {
|
|
15
|
+
case mainnet
|
|
16
|
+
case testnet
|
|
17
|
+
|
|
18
|
+
var networkId: UInt32 {
|
|
19
|
+
switch self {
|
|
20
|
+
case .mainnet: return 1
|
|
21
|
+
case .testnet: return 0
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
extension NetworkType {
|
|
27
|
+
static func forChainName(_ chainame: String) -> NetworkType? {
|
|
28
|
+
switch chainame {
|
|
29
|
+
case "test": return .testnet
|
|
30
|
+
case "main": return .mainnet
|
|
31
|
+
default: return nil
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
static func forNetworkId(_ id: UInt32) -> NetworkType? {
|
|
36
|
+
switch id {
|
|
37
|
+
case 1: return .mainnet
|
|
38
|
+
case 0: return .testnet
|
|
39
|
+
default: return nil
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
extension NetworkType {
|
|
45
|
+
public var chainName: String {
|
|
46
|
+
switch self {
|
|
47
|
+
case .mainnet:
|
|
48
|
+
return "main"
|
|
49
|
+
case .testnet:
|
|
50
|
+
return "test"
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
public enum ZcashNetworkBuilder {
|
|
56
|
+
public static func network(for networkType: NetworkType) -> ZcashNetwork {
|
|
57
|
+
switch networkType {
|
|
58
|
+
case .mainnet: return ZcashMainnet()
|
|
59
|
+
case .testnet: return ZcashTestnet()
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
class ZcashTestnet: ZcashNetwork {
|
|
65
|
+
let networkType: NetworkType = .testnet
|
|
66
|
+
let constants: NetworkConstants.Type = ZcashSDKTestnetConstants.self
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
class ZcashMainnet: ZcashNetwork {
|
|
70
|
+
let networkType: NetworkType = .mainnet
|
|
71
|
+
let constants: NetworkConstants.Type = ZcashSDKMainnetConstants.self
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
Constants of ZcashLightClientKit. this constants don't
|
|
76
|
+
*/
|
|
77
|
+
public enum ZcashSDK {
|
|
78
|
+
/// The number of zatoshi that equal 1 ZEC.
|
|
79
|
+
public static let zatoshiPerZEC: BlockHeight = 100_000_000
|
|
80
|
+
|
|
81
|
+
/// The theoretical maximum number of blocks in a reorg, due to other bottlenecks in the protocol design.
|
|
82
|
+
public static let maxReorgSize = 100
|
|
83
|
+
|
|
84
|
+
/// The amount of blocks ahead of the current height where new transactions are set to expire. This value is controlled
|
|
85
|
+
/// by the rust backend but it is helpful to know what it is set to and should be kept in sync.
|
|
86
|
+
public static let expiryOffset = 20
|
|
87
|
+
|
|
88
|
+
// MARK: Defaults
|
|
89
|
+
|
|
90
|
+
/// Default size of batches of blocks to request from the compact block service. Which was used both for scanning and downloading.
|
|
91
|
+
/// consider basing your code assumptions on `DefaultDownloadBatch` and `DefaultScanningBatch` instead.
|
|
92
|
+
@available(*, deprecated, message: "this value is being deprecated in favor of `DefaultDownloadBatch` and `DefaultScanningBatch`")
|
|
93
|
+
public static let DefaultBatchSize = 100
|
|
94
|
+
|
|
95
|
+
/// Default batch size for downloading blocks for the compact block processor. Be careful with this number. This amount of blocks is held in
|
|
96
|
+
/// memory at some point of the sync process.
|
|
97
|
+
/// This values can't be smaller than `DefaultScanningBatch`. Otherwise bad things will happen.
|
|
98
|
+
public static let DefaultDownloadBatch = 100
|
|
99
|
+
|
|
100
|
+
/// Default batch size for scanning blocks for the compact block processor
|
|
101
|
+
public static let DefaultScanningBatch = 100
|
|
102
|
+
|
|
103
|
+
/// Default amount of time, in in seconds, to poll for new blocks. Typically, this should be about half the average
|
|
104
|
+
/// block time.
|
|
105
|
+
public static let defaultPollInterval: TimeInterval = 20
|
|
106
|
+
|
|
107
|
+
/// Default attempts at retrying.
|
|
108
|
+
public static let defaultRetries: Int = 5
|
|
109
|
+
|
|
110
|
+
/// The default maximum amount of time to wait during retry backoff intervals. Failed loops will never wait longer than
|
|
111
|
+
/// this before retrying.
|
|
112
|
+
public static let defaultMaxBackOffInterval: TimeInterval = 600
|
|
113
|
+
|
|
114
|
+
/// Default number of blocks to rewind when a chain reorg is detected. This should be large enough to recover from the
|
|
115
|
+
/// reorg but smaller than the theoretical max reorg size of 100.
|
|
116
|
+
public static let defaultRewindDistance: Int = 10
|
|
117
|
+
|
|
118
|
+
/// The number of blocks to allow before considering our data to be stale. This usually helps with what to do when
|
|
119
|
+
/// returning from the background and is exposed via the Synchronizer's isStale function.
|
|
120
|
+
public static let defaultStaleTolerance: Int = 10
|
|
121
|
+
|
|
122
|
+
/// Default Name for LibRustZcash data.db
|
|
123
|
+
public static let defaultDataDbName = "data.db"
|
|
124
|
+
|
|
125
|
+
/// Default Name for Compact Block file system based db
|
|
126
|
+
public static let defaultFsCacheName = "fs_cache"
|
|
127
|
+
|
|
128
|
+
/// Default Name for Compact Block caches db
|
|
129
|
+
public static let defaultCacheDbName = "caches.db"
|
|
130
|
+
|
|
131
|
+
/// The Url that is used by default in zcashd.
|
|
132
|
+
/// We'll want to make this externally configurable, rather than baking it into the SDK but
|
|
133
|
+
/// this will do for now, since we're using a cloudfront URL that already redirects.
|
|
134
|
+
public static let cloudParameterURL = "https://z.cash/downloads/"
|
|
135
|
+
|
|
136
|
+
/// File name for the sapling spend params
|
|
137
|
+
public static let spendParamFilename = "sapling-spend.params"
|
|
138
|
+
// swiftlint:disable:next force_unwrapping
|
|
139
|
+
public static let spendParamFileURL = URL(string: cloudParameterURL)!.appendingPathComponent(spendParamFilename)
|
|
140
|
+
|
|
141
|
+
/// File name for the sapling output params
|
|
142
|
+
public static let outputParamFilename = "sapling-output.params"
|
|
143
|
+
// swiftlint:disable:next force_unwrapping
|
|
144
|
+
public static let outputParamFileURL = URL(string: cloudParameterURL)!.appendingPathComponent(outputParamFilename)
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
public protocol NetworkConstants {
|
|
148
|
+
/// The height of the first sapling block. When it comes to shielded transactions, we do not need to consider any blocks
|
|
149
|
+
/// prior to this height, at all.
|
|
150
|
+
static var saplingActivationHeight: BlockHeight { get }
|
|
151
|
+
|
|
152
|
+
/// Default Name for LibRustZcash data.db
|
|
153
|
+
static var defaultDataDbName: String { get }
|
|
154
|
+
|
|
155
|
+
static var defaultFsBlockDbRootName: String { get }
|
|
156
|
+
|
|
157
|
+
/// Default Name for Compact Block caches db
|
|
158
|
+
@available(*, deprecated, message: "use this name to clean up the sqlite compact block database")
|
|
159
|
+
static var defaultCacheDbName: String { get }
|
|
160
|
+
|
|
161
|
+
/// Default prefix for db filenames
|
|
162
|
+
static var defaultDbNamePrefix: String { get }
|
|
163
|
+
|
|
164
|
+
/// fixed height where the SDK considers that the ZIP-321 was deployed. This is a workaround
|
|
165
|
+
/// for librustzcash not figuring out the tx fee from the tx itself.
|
|
166
|
+
static var feeChangeHeight: BlockHeight { get }
|
|
167
|
+
|
|
168
|
+
/// Returns the default fee according to the blockheight. see [ZIP-313](https://zips.z.cash/zip-0313)
|
|
169
|
+
static func defaultFee(for height: BlockHeight) -> Zatoshi
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
public extension NetworkConstants {
|
|
173
|
+
static func defaultFee(for height: BlockHeight = BlockHeight.max) -> Zatoshi {
|
|
174
|
+
guard height >= feeChangeHeight else { return Zatoshi(10_000) }
|
|
175
|
+
|
|
176
|
+
return Zatoshi(1_000)
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
public enum ZcashSDKMainnetConstants: NetworkConstants {
|
|
181
|
+
/// The height of the first sapling block. When it comes to shielded transactions, we do not need to consider any blocks
|
|
182
|
+
/// prior to this height, at all.
|
|
183
|
+
public static let saplingActivationHeight: BlockHeight = 419_200
|
|
184
|
+
|
|
185
|
+
/// Default Name for LibRustZcash data.db
|
|
186
|
+
public static let defaultDataDbName = "data.db"
|
|
187
|
+
|
|
188
|
+
public static let defaultFsBlockDbRootName = "fs_cache"
|
|
189
|
+
|
|
190
|
+
/// Default Name for Compact Block caches db
|
|
191
|
+
public static let defaultCacheDbName = "caches.db"
|
|
192
|
+
|
|
193
|
+
public static let defaultDbNamePrefix = "ZcashSdk_mainnet_"
|
|
194
|
+
|
|
195
|
+
public static let feeChangeHeight: BlockHeight = 1_077_550
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
public enum ZcashSDKTestnetConstants: NetworkConstants {
|
|
199
|
+
/// The height of the first sapling block. When it comes to shielded transactions, we do not need to consider any blocks
|
|
200
|
+
/// prior to this height, at all.
|
|
201
|
+
public static let saplingActivationHeight: BlockHeight = 280_000
|
|
202
|
+
|
|
203
|
+
/// Default Name for LibRustZcash data.db
|
|
204
|
+
public static let defaultDataDbName = "data.db"
|
|
205
|
+
|
|
206
|
+
/// Default Name for Compact Block caches db
|
|
207
|
+
public static let defaultCacheDbName = "caches.db"
|
|
208
|
+
|
|
209
|
+
public static let defaultFsBlockDbRootName = "fs_cache"
|
|
210
|
+
|
|
211
|
+
public static let defaultDbNamePrefix = "ZcashSdk_testnet_"
|
|
212
|
+
|
|
213
|
+
/// Estimated height where wallets are supposed to change the fee
|
|
214
|
+
public static let feeChangeHeight: BlockHeight = 1_028_500
|
|
215
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
//
|
|
2
|
+
// BlockDao.swift
|
|
3
|
+
// ZcashLightClientKit
|
|
4
|
+
//
|
|
5
|
+
// Created by Francisco Gindre on 10/16/19.
|
|
6
|
+
// Copyright © 2019 Electric Coin Company. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
import Foundation
|
|
10
|
+
import SQLite
|
|
11
|
+
|
|
12
|
+
protocol BlockDao {
|
|
13
|
+
func latestBlockHeight() throws -> BlockHeight
|
|
14
|
+
func latestBlock() throws -> Block?
|
|
15
|
+
func block(at height: BlockHeight) throws -> Block?
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
struct Block: Codable {
|
|
19
|
+
enum CodingKeys: String, CodingKey {
|
|
20
|
+
case height
|
|
21
|
+
case hash
|
|
22
|
+
case time
|
|
23
|
+
case saplingTree = "sapling_tree"
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
enum TableStructure {
|
|
27
|
+
static let height = Expression<Int>(Block.CodingKeys.height.rawValue)
|
|
28
|
+
static let hash = Expression<Blob>(Block.CodingKeys.hash.rawValue)
|
|
29
|
+
static let time = Expression<Int>(Block.CodingKeys.time.rawValue)
|
|
30
|
+
static let saplingTree = Expression<Blob>(Block.CodingKeys.saplingTree.rawValue)
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
let height: BlockHeight
|
|
34
|
+
let hash: Data
|
|
35
|
+
let time: Int
|
|
36
|
+
let saplingTree: Data
|
|
37
|
+
|
|
38
|
+
static let table = Table("blocks")
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
class BlockSQLDAO: BlockDao {
|
|
42
|
+
let dbProvider: ConnectionProvider
|
|
43
|
+
let table: Table
|
|
44
|
+
let height = Expression<Int>("height")
|
|
45
|
+
|
|
46
|
+
init(dbProvider: ConnectionProvider) {
|
|
47
|
+
self.dbProvider = dbProvider
|
|
48
|
+
self.table = Table("Blocks")
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/// - Throws:
|
|
52
|
+
/// - `blockDAOCantDecode` if block data loaded from DB can't be decoded to `Block` object.
|
|
53
|
+
/// - `blockDAOBlock` if sqlite query to load block metadata failed.
|
|
54
|
+
func block(at height: BlockHeight) throws -> Block? {
|
|
55
|
+
do {
|
|
56
|
+
return try dbProvider
|
|
57
|
+
.connection()
|
|
58
|
+
.prepare(Block.table.filter(Block.TableStructure.height == height).limit(1))
|
|
59
|
+
.map {
|
|
60
|
+
do {
|
|
61
|
+
return try $0.decode()
|
|
62
|
+
} catch {
|
|
63
|
+
throw ZcashError.blockDAOCantDecode(error)
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
.first
|
|
67
|
+
} catch {
|
|
68
|
+
if let error = error as? ZcashError {
|
|
69
|
+
throw error
|
|
70
|
+
} else {
|
|
71
|
+
throw ZcashError.blockDAOBlock(error)
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/// - Throws: `blockDAOLatestBlockHeight` if sqlite to fetch height fails.
|
|
77
|
+
func latestBlockHeight() throws -> BlockHeight {
|
|
78
|
+
do {
|
|
79
|
+
return try dbProvider.connection().scalar(table.select(height.max)) ?? BlockHeight.empty()
|
|
80
|
+
} catch {
|
|
81
|
+
throw ZcashError.blockDAOLatestBlockHeight(error)
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
func latestBlock() throws -> Block? {
|
|
86
|
+
do {
|
|
87
|
+
return try dbProvider
|
|
88
|
+
.connection()
|
|
89
|
+
.prepare(Block.table.order(height.desc).limit(1))
|
|
90
|
+
.map {
|
|
91
|
+
do {
|
|
92
|
+
return try $0.decode()
|
|
93
|
+
} catch {
|
|
94
|
+
throw ZcashError.blockDAOLatestBlockCantDecode(error)
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
.first
|
|
98
|
+
} catch {
|
|
99
|
+
if let error = error as? ZcashError {
|
|
100
|
+
throw error
|
|
101
|
+
} else {
|
|
102
|
+
throw ZcashError.blockDAOLatestBlock(error)
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
extension BlockSQLDAO: BlockRepository {
|
|
109
|
+
func lastScannedBlockHeight() -> BlockHeight {
|
|
110
|
+
(try? self.latestBlockHeight()) ?? BlockHeight.empty()
|
|
111
|
+
}
|
|
112
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
//
|
|
2
|
+
// PagedTransactionDAO.swift
|
|
3
|
+
// ZcashLightClientKit
|
|
4
|
+
//
|
|
5
|
+
// Created by Francisco Gindre on 12/9/19.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
|
|
10
|
+
class PagedTransactionDAO: PaginatedTransactionRepository {
|
|
11
|
+
let pageSize: Int
|
|
12
|
+
let transactionRepository: TransactionRepository
|
|
13
|
+
let kind: TransactionKind
|
|
14
|
+
|
|
15
|
+
var pageCount: Int {
|
|
16
|
+
get async {
|
|
17
|
+
guard pageSize > 0 else {
|
|
18
|
+
return 0
|
|
19
|
+
}
|
|
20
|
+
return await itemCount / pageSize
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
var itemCount: Int {
|
|
25
|
+
get async {
|
|
26
|
+
guard let count = try? await transactionRepository.countAll() else {
|
|
27
|
+
return 0
|
|
28
|
+
}
|
|
29
|
+
return count
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
init(repository: TransactionRepository, pageSize: Int = 30, kind: TransactionKind = .all) {
|
|
34
|
+
self.transactionRepository = repository
|
|
35
|
+
self.pageSize = pageSize
|
|
36
|
+
self.kind = kind
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
func page(_ number: Int) async throws -> [ZcashTransaction.Overview]? {
|
|
40
|
+
let offset = number * pageSize
|
|
41
|
+
guard offset < (await itemCount) else { return nil }
|
|
42
|
+
return try await transactionRepository.find(offset: offset, limit: pageSize, kind: kind)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
func page(_ number: Int, result: @escaping (Result<[ZcashTransaction.Overview]?, Error>) -> Void) {
|
|
46
|
+
Task(priority: .userInitiated) {
|
|
47
|
+
do {
|
|
48
|
+
result(.success(try await self.page(number)))
|
|
49
|
+
} catch {
|
|
50
|
+
result(.failure(error))
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
//
|
|
2
|
+
// TransactionDao.swift
|
|
3
|
+
// ZcashLightClientKit
|
|
4
|
+
//
|
|
5
|
+
// Created by Francisco Gindre on 11/15/19.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
import SQLite
|
|
10
|
+
|
|
11
|
+
class TransactionSQLDAO: TransactionRepository {
|
|
12
|
+
enum NotesTableStructure {
|
|
13
|
+
static let transactionID = Expression<Int>("tx")
|
|
14
|
+
static let memo = Expression<Blob>("memo")
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
let dbProvider: ConnectionProvider
|
|
18
|
+
|
|
19
|
+
private let blockDao: BlockSQLDAO
|
|
20
|
+
private let transactionsView = View("v_transactions")
|
|
21
|
+
private let txOutputsView = View("v_tx_outputs")
|
|
22
|
+
private let traceClosure: ((String) -> Void)?
|
|
23
|
+
|
|
24
|
+
init(dbProvider: ConnectionProvider, traceClosure: ((String) -> Void)? = nil) {
|
|
25
|
+
self.dbProvider = dbProvider
|
|
26
|
+
self.blockDao = BlockSQLDAO(dbProvider: dbProvider)
|
|
27
|
+
self.traceClosure = traceClosure
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
private func connection() throws -> Connection {
|
|
31
|
+
let conn = try dbProvider.connection()
|
|
32
|
+
conn.trace(traceClosure)
|
|
33
|
+
return conn
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
func closeDBConnection() {
|
|
37
|
+
dbProvider.close()
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
func blockForHeight(_ height: BlockHeight) async throws -> Block? {
|
|
41
|
+
try blockDao.block(at: height)
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
func lastScannedHeight() async throws -> BlockHeight {
|
|
45
|
+
try blockDao.latestBlockHeight()
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
func lastScannedBlock() async throws -> Block? {
|
|
49
|
+
try blockDao.latestBlock()
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
func isInitialized() async throws -> Bool {
|
|
53
|
+
true
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
func countAll() async throws -> Int {
|
|
57
|
+
do {
|
|
58
|
+
return try connection().scalar(transactionsView.count)
|
|
59
|
+
} catch {
|
|
60
|
+
throw ZcashError.transactionRepositoryCountAll(error)
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
func countUnmined() async throws -> Int {
|
|
65
|
+
do {
|
|
66
|
+
return try connection().scalar(transactionsView.filter(ZcashTransaction.Overview.Column.minedHeight == nil).count)
|
|
67
|
+
} catch {
|
|
68
|
+
throw ZcashError.transactionRepositoryCountUnmined(error)
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
func find(id: Int) async throws -> ZcashTransaction.Overview {
|
|
73
|
+
let query = transactionsView
|
|
74
|
+
.filter(ZcashTransaction.Overview.Column.id == id)
|
|
75
|
+
.limit(1)
|
|
76
|
+
|
|
77
|
+
return try execute(query) { try ZcashTransaction.Overview(row: $0) }
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
func find(rawID: Data) async throws -> ZcashTransaction.Overview {
|
|
81
|
+
let query = transactionsView
|
|
82
|
+
.filter(ZcashTransaction.Overview.Column.rawID == Blob(bytes: rawID.bytes))
|
|
83
|
+
.limit(1)
|
|
84
|
+
|
|
85
|
+
return try execute(query) { try ZcashTransaction.Overview(row: $0) }
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
func find(offset: Int, limit: Int, kind: TransactionKind) async throws -> [ZcashTransaction.Overview] {
|
|
89
|
+
let query = transactionsView
|
|
90
|
+
.order((ZcashTransaction.Overview.Column.minedHeight ?? BlockHeight.max).desc, ZcashTransaction.Overview.Column.id.desc)
|
|
91
|
+
.filterQueryFor(kind: kind)
|
|
92
|
+
.limit(limit, offset: offset)
|
|
93
|
+
|
|
94
|
+
return try execute(query) { try ZcashTransaction.Overview(row: $0) }
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
func find(in range: CompactBlockRange, limit: Int, kind: TransactionKind) async throws -> [ZcashTransaction.Overview] {
|
|
98
|
+
let query = transactionsView
|
|
99
|
+
.order((ZcashTransaction.Overview.Column.minedHeight ?? BlockHeight.max).desc, ZcashTransaction.Overview.Column.id.desc)
|
|
100
|
+
.filter(
|
|
101
|
+
ZcashTransaction.Overview.Column.minedHeight >= BlockHeight(range.lowerBound) &&
|
|
102
|
+
ZcashTransaction.Overview.Column.minedHeight <= BlockHeight(range.upperBound)
|
|
103
|
+
)
|
|
104
|
+
.filterQueryFor(kind: kind)
|
|
105
|
+
.limit(limit)
|
|
106
|
+
|
|
107
|
+
return try execute(query) { try ZcashTransaction.Overview(row: $0) }
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
func find(from transaction: ZcashTransaction.Overview, limit: Int, kind: TransactionKind) async throws -> [ZcashTransaction.Overview] {
|
|
111
|
+
guard
|
|
112
|
+
let transactionIndex = transaction.index,
|
|
113
|
+
let transactionBlockTime = transaction.blockTime
|
|
114
|
+
else { throw ZcashError.transactionRepositoryTransactionMissingRequiredFields }
|
|
115
|
+
|
|
116
|
+
let query = transactionsView
|
|
117
|
+
.order(
|
|
118
|
+
(ZcashTransaction.Overview.Column.minedHeight ?? BlockHeight.max).desc, ZcashTransaction.Overview.Column.id.desc
|
|
119
|
+
)
|
|
120
|
+
.filter(
|
|
121
|
+
Int64(transactionBlockTime) > ZcashTransaction.Overview.Column.blockTime
|
|
122
|
+
&& transactionIndex > ZcashTransaction.Overview.Column.index
|
|
123
|
+
)
|
|
124
|
+
.filterQueryFor(kind: kind)
|
|
125
|
+
.limit(limit)
|
|
126
|
+
|
|
127
|
+
return try execute(query) { try ZcashTransaction.Overview(row: $0) }
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
func findReceived(offset: Int, limit: Int) async throws -> [ZcashTransaction.Overview] {
|
|
131
|
+
let query = transactionsView
|
|
132
|
+
.filterQueryFor(kind: .received)
|
|
133
|
+
.order(ZcashTransaction.Overview.Column.id.desc, (ZcashTransaction.Overview.Column.minedHeight ?? BlockHeight.max).desc)
|
|
134
|
+
.limit(limit, offset: offset)
|
|
135
|
+
|
|
136
|
+
return try execute(query) { try ZcashTransaction.Overview(row: $0) }
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
func findSent(offset: Int, limit: Int) async throws -> [ZcashTransaction.Overview] {
|
|
140
|
+
let query = transactionsView
|
|
141
|
+
.filterQueryFor(kind: .sent)
|
|
142
|
+
.order((ZcashTransaction.Overview.Column.minedHeight ?? BlockHeight.max).desc, ZcashTransaction.Overview.Column.id.desc)
|
|
143
|
+
.limit(limit, offset: offset)
|
|
144
|
+
|
|
145
|
+
return try execute(query) { try ZcashTransaction.Overview(row: $0) }
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
func findPendingTransactions(latestHeight: BlockHeight, offset: Int, limit: Int) async throws -> [ZcashTransaction.Overview] {
|
|
149
|
+
let query = transactionsView
|
|
150
|
+
.filterPendingFrom(latestHeight)
|
|
151
|
+
.order((ZcashTransaction.Overview.Column.minedHeight ?? BlockHeight.max).desc, ZcashTransaction.Overview.Column.id.desc)
|
|
152
|
+
.limit(limit, offset: offset)
|
|
153
|
+
|
|
154
|
+
return try execute(query) { try ZcashTransaction.Overview(row: $0) }
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
func findMemos(for transaction: ZcashTransaction.Overview) async throws -> [Memo] {
|
|
158
|
+
do {
|
|
159
|
+
return try await getTransactionOutputs(for: transaction.id)
|
|
160
|
+
.compactMap { $0.memo }
|
|
161
|
+
} catch {
|
|
162
|
+
throw ZcashError.transactionRepositoryFindMemos(error)
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
func getTransactionOutputs(for id: Int) async throws -> [ZcashTransaction.Output] {
|
|
167
|
+
let query = self.txOutputsView
|
|
168
|
+
.filter(ZcashTransaction.Output.Column.idTx == id)
|
|
169
|
+
|
|
170
|
+
return try execute(query) { try ZcashTransaction.Output(row: $0) }
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
func getRecipients(for id: Int) async throws -> [TransactionRecipient] {
|
|
174
|
+
try await getTransactionOutputs(for: id).map { $0.recipient }
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
private func execute<Entity>(_ query: View, createEntity: (Row) throws -> Entity) throws -> Entity {
|
|
178
|
+
let entities: [Entity] = try execute(query, createEntity: createEntity)
|
|
179
|
+
guard let entity = entities.first else { throw ZcashError.transactionRepositoryEntityNotFound }
|
|
180
|
+
return entity
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
private func execute<Entity>(_ query: View, createEntity: (Row) throws -> Entity) throws -> [Entity] {
|
|
184
|
+
do {
|
|
185
|
+
let entities = try connection()
|
|
186
|
+
.prepare(query)
|
|
187
|
+
.map(createEntity)
|
|
188
|
+
|
|
189
|
+
return entities
|
|
190
|
+
} catch {
|
|
191
|
+
if let error = error as? ZcashError {
|
|
192
|
+
throw error
|
|
193
|
+
} else {
|
|
194
|
+
throw ZcashError.transactionRepositoryQueryExecute(error)
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
private extension View {
|
|
201
|
+
func filterPendingFrom(_ latestHeight: BlockHeight) -> View {
|
|
202
|
+
filter(
|
|
203
|
+
// transaction has not expired
|
|
204
|
+
ZcashTransaction.Overview.Column.expiredUnmined == false &&
|
|
205
|
+
// transaction is "sent"
|
|
206
|
+
ZcashTransaction.Overview.Column.value < 0 &&
|
|
207
|
+
// transaction has not been mined yet OR
|
|
208
|
+
// it has been within the latest `defaultStaleTolerance` blocks
|
|
209
|
+
(
|
|
210
|
+
ZcashTransaction.Overview.Column.minedHeight == nil ||
|
|
211
|
+
ZcashTransaction.Overview.Column.minedHeight > (latestHeight - ZcashSDK.defaultStaleTolerance)
|
|
212
|
+
)
|
|
213
|
+
)
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
private extension View {
|
|
218
|
+
func filterQueryFor(kind: TransactionKind) -> View {
|
|
219
|
+
switch kind {
|
|
220
|
+
case .all:
|
|
221
|
+
return self
|
|
222
|
+
case .sent:
|
|
223
|
+
return filter(ZcashTransaction.Overview.Column.value < 0)
|
|
224
|
+
case .received:
|
|
225
|
+
return filter(ZcashTransaction.Overview.Column.value >= 0)
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
extension Data {
|
|
231
|
+
init(blob: SQLite.Blob) {
|
|
232
|
+
let bytes = blob.bytes
|
|
233
|
+
self = Data(bytes: bytes, count: bytes.count)
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
var bytes: [UInt8] {
|
|
237
|
+
return [UInt8](self)
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
extension Array where Element == UInt8 {
|
|
242
|
+
var data: Data {
|
|
243
|
+
return Data(self)
|
|
244
|
+
}
|
|
245
|
+
}
|