react-native-zcash 0.3.3 → 0.3.5
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/LICENSE +22 -0
- package/README.md +47 -14
- package/android/build.gradle +1 -1
- package/android/src/main/assets/saplingtree/mainnet/1310000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1320000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1330000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1340000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1350000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1360000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1370000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1380000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1390000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1400000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1410000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1420000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1430000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1440000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1450000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1460000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1470000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1480000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1490000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1500000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1510000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1520000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1530000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1540000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1550000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1560000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1570000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1580000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1590000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1600000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1610000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1620000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1630000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1640000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1650000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1660000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1670000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1680000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1690000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1700000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1710000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1720000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1730000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1740000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1750000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1760000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1770000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1780000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1790000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1800000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1810000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1820000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1830000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1840000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1850000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1860000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1870000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1880000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1890000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1900000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1910000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1920000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1930000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1940000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1950000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1960000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1970000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1980000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/1990000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/2000000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/2010000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/2020000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/2030000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/2040000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/2050000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/2060000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/2070000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/2080000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/2090000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/2100000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/2110000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/2120000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/2130000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/2140000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/2150000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/2160000.json +7 -0
- package/android/src/main/assets/saplingtree/mainnet/2170000.json +7 -0
- package/ios/RNZcash.m +0 -1
- package/ios/RNZcash.swift +14 -15
- package/ios/ZCashLightClientKit/Block/DatabaseStorage/CompactBlockStorage.swift +123 -0
- package/ios/ZCashLightClientKit/Block/DatabaseStorage/DatabaseMigrationManager.swift +222 -0
- package/ios/ZCashLightClientKit/Block/DatabaseStorage/StorageError.swift +22 -0
- package/ios/ZCashLightClientKit/Block/DatabaseStorage/StorageManager.swift +73 -0
- package/ios/ZCashLightClientKit/Block/Downloader/BlockDownloader.swift +240 -0
- package/ios/ZCashLightClientKit/Block/Downloader/CompactBlockDownloaderBuilder.swift +26 -0
- package/ios/ZCashLightClientKit/Block/Processor/CompactBlockDownloadOperation.swift +258 -0
- package/ios/ZCashLightClientKit/Block/Processor/CompactBlockEnhancementOperation.swift +157 -0
- package/ios/ZCashLightClientKit/Block/Processor/CompactBlockProcessor.swift +1454 -0
- package/ios/ZCashLightClientKit/Block/Processor/CompactBlockScanningOperation.swift +238 -0
- package/ios/ZCashLightClientKit/Block/Processor/CompactBlockValidationInformation.swift +66 -0
- package/ios/ZCashLightClientKit/Block/Processor/FetchUnspentTxOutputsOperation.swift +103 -0
- package/ios/ZCashLightClientKit/Block/Processor/FigureNextBatchOperation.swift +58 -0
- package/ios/ZCashLightClientKit/Block/Processor/ZcashOperation.swift +68 -0
- package/ios/ZCashLightClientKit/Constants/WalletBirthday+Constants.swift +58 -0
- package/ios/ZCashLightClientKit/Constants/WalletBirthday+mainnet.swift +20 -0
- package/ios/ZCashLightClientKit/Constants/WalletBirthday+testnet.swift +20 -0
- package/ios/ZCashLightClientKit/Constants/ZcashSDK.swift +245 -0
- package/ios/ZCashLightClientKit/DAO/BlockDao.swift +67 -0
- package/ios/ZCashLightClientKit/DAO/CompactBlockDAO.swift +24 -0
- package/ios/ZCashLightClientKit/DAO/NotesDao.swift +142 -0
- package/ios/ZCashLightClientKit/DAO/PagedTransactionDao.swift +62 -0
- package/ios/ZCashLightClientKit/DAO/PendingTransactionDao.swift +213 -0
- package/ios/ZCashLightClientKit/DAO/TransactionBuilder.swift +169 -0
- package/ios/ZCashLightClientKit/DAO/TransactionDao.swift +393 -0
- package/ios/ZCashLightClientKit/DAO/UnspentTransactionOutputDao.swift +188 -0
- package/ios/ZCashLightClientKit/Entity/AccountEntity.swift +201 -0
- package/ios/ZCashLightClientKit/Entity/CompactBlockEntity.swift +13 -0
- package/ios/ZCashLightClientKit/Entity/EncodedTransactionEntity.swift +26 -0
- package/ios/ZCashLightClientKit/Entity/PendingTransactionEntity.swift +205 -0
- package/ios/ZCashLightClientKit/Entity/ReceivedNoteEntity.swift +22 -0
- package/ios/ZCashLightClientKit/Entity/SentNoteEntity.swift +45 -0
- package/ios/ZCashLightClientKit/Entity/TransactionEntity.swift +161 -0
- package/ios/ZCashLightClientKit/Entity/UnspentTransactionOutputEntity.swift +17 -0
- package/ios/ZCashLightClientKit/Extensions/Data+Zcash.swift +17 -0
- package/ios/ZCashLightClientKit/Extensions/Data+internal.swift +35 -0
- package/ios/ZCashLightClientKit/Extensions/HexEncode.swift +41 -0
- package/ios/ZCashLightClientKit/Extensions/ZcashRust+Utils.swift +26 -0
- package/ios/ZCashLightClientKit/Extensions/ZcashSDK+extensions.swift +34 -0
- package/ios/ZCashLightClientKit/Initializer.swift +357 -0
- package/ios/ZCashLightClientKit/Model/WalletTypes.swift +108 -0
- package/ios/ZCashLightClientKit/Providers/ResourceProvider.swift +47 -0
- package/ios/ZCashLightClientKit/Repository/BlockRepository.swift +13 -0
- package/ios/ZCashLightClientKit/Repository/CompactBlockRepository.swift +75 -0
- package/ios/ZCashLightClientKit/Repository/NotesRepository.swift +16 -0
- package/ios/ZCashLightClientKit/Repository/PaginatedTransactionRepository.swift +35 -0
- package/ios/ZCashLightClientKit/Repository/PendingTransactionRepository.swift +19 -0
- package/ios/ZCashLightClientKit/Repository/TransactionRepository.swift +30 -0
- package/ios/ZCashLightClientKit/Repository/TransactionRepositoryBuilder.swift +24 -0
- package/ios/ZCashLightClientKit/Repository/UnspentTransactionOutputRepository.swift +18 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1000000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1010000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1020000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1030000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1040000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1050000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1060000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1070000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1080000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1090000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1100000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1110000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1120000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1130000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1140000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1150000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1160000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1170000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1180000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1190000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1200000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1210000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1220000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1230000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1240000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1250000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1260000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1270000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1280000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1290000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1300000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1310000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1320000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1330000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1340000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1350000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1360000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1370000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1380000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1390000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1400000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1410000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1420000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1430000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1440000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1450000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1460000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1470000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1480000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1490000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1500000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1510000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1520000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1530000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1540000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1550000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1560000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1570000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1580000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1590000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1600000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1610000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1620000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1630000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1640000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1650000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1660000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1670000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1680000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1690000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1700000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1710000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1720000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1730000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1740000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1750000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1760000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1770000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1780000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1790000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1800000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1810000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1820000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1830000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1840000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1850000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1860000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1870000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1880000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1890000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1900000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1910000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1920000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1930000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1940000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1950000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1960000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1970000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1980000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1990000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2000000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2010000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2020000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2030000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2040000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2050000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2060000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2070000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2080000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2090000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2100000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2110000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2120000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2130000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2140000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2150000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2160000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2170000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/419200.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/500000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/510000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/520000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/530000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/540000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/550000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/560000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/570000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/580000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/590000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/600000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/610000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/620000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/630000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/640000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/650000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/660000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/663150.json +8 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/670000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/680000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/690000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/700000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/710000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/720000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/730000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/740000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/750000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/760000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/770000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/780000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/790000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/800000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/810000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/820000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/830000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/840000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/850000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/860000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/870000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/880000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/890000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/900000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/910000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/920000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/930000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/940000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/950000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/960000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/970000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/980000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/990000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1000000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1010000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1020000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1030000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1040000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1050000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1060000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1070000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1080000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1090000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1100000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1110000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1120000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1130000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1140000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1150000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1160000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1170000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1180000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1190000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1200000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1210000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1220000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1230000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1240000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1250000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1260000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1270000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1280000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1290000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1300000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1310000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1320000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1330000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1340000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1350000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1360000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1370000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1380000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1390000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1400000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1410000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1420000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1430000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1440000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1450000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1460000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1470000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1480000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1490000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1500000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1510000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1520000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1530000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1540000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1550000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1560000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1570000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1580000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1590000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1600000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1610000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1620000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1630000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1640000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1650000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1660000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1670000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1680000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1690000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1700000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1710000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1720000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1730000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1740000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1750000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1760000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1770000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1780000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1790000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1800000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1810000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1820000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1830000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1840000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1850000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1860000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/280000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/290000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/300000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/310000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/320000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/330000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/340000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/350000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/360000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/370000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/380000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/390000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/400000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/410000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/420000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/430000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/440000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/450000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/460000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/470000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/480000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/490000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/500000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/510000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/520000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/530000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/540000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/550000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/560000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/570000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/580000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/590000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/600000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/610000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/620000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/630000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/640000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/650000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/660000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/670000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/680000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/690000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/700000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/710000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/720000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/730000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/740000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/750000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/760000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/770000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/780000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/790000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/800000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/810000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/820000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/830000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/840000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/850000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/860000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/870000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/880000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/890000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/900000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/910000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/920000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/930000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/940000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/950000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/960000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/970000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/980000.json +7 -0
- package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/990000.json +7 -0
- package/ios/ZCashLightClientKit/Rust/ZcashRustBackend.swift +718 -0
- package/ios/ZCashLightClientKit/Rust/ZcashRustBackendWelding.swift +389 -0
- package/ios/ZCashLightClientKit/Rust/zcashlc.h +385 -0
- package/ios/ZCashLightClientKit/Service/LightWalletGRPCService.swift +551 -0
- package/ios/ZCashLightClientKit/Service/LightWalletService.swift +214 -0
- package/ios/ZCashLightClientKit/Service/Model/ZcashCompactBlock.swift +46 -0
- package/ios/ZCashLightClientKit/Service/ProtoBuf/Extensions/Protocolbuffer+Extensions.swift +50 -0
- package/ios/ZCashLightClientKit/Service/ProtoBuf/compact_formats.pb.swift +332 -0
- package/ios/ZCashLightClientKit/Service/ProtoBuf/proto/compact_formats.proto +56 -0
- package/ios/ZCashLightClientKit/Service/ProtoBuf/proto/service.proto +180 -0
- package/ios/ZCashLightClientKit/Service/ProtoBuf/service.grpc.swift +383 -0
- package/ios/ZCashLightClientKit/Service/ProtoBuf/service.pb.swift +1173 -0
- package/ios/ZCashLightClientKit/Synchronizer/SDKSynchronizer.swift +929 -0
- package/ios/ZCashLightClientKit/Synchronizer.swift +430 -0
- package/ios/ZCashLightClientKit/Tool/DerivationTool.swift +344 -0
- package/ios/ZCashLightClientKit/Transaction/PersistentTransactionManager.swift +339 -0
- package/ios/ZCashLightClientKit/Transaction/TransactionEncoder.swift +116 -0
- package/ios/ZCashLightClientKit/Transaction/TransactionManager.swift +42 -0
- package/ios/ZCashLightClientKit/Transaction/WalletTransactionEncoder.swift +216 -0
- package/ios/ZCashLightClientKit/Utils/Bundle+module.swift +30 -0
- package/ios/ZCashLightClientKit/Utils/LoggingProxy.swift +47 -0
- package/ios/ZCashLightClientKit/Utils/SaplingParameterDownloader.swift +124 -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/scripts/copyCheckpoints.d.ts +5 -0
- package/lib/scripts/updateCheckpoints.d.ts +1 -0
- package/lib/scripts/updateSources.d.ts +1 -0
- package/package.json +21 -32
- package/react-native-zcash.podspec +17 -7
- 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/src/browser.ts +0 -36
- package/src/index.flow.js +0 -168
- package/src/index.ts +0 -1
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Data+internal.swift
|
|
3
|
+
// ZcashLightClientKit
|
|
4
|
+
//
|
|
5
|
+
// Created by Francisco Gindre on 4/23/20.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
|
|
10
|
+
extension String {
|
|
11
|
+
func toTxIdString() -> String {
|
|
12
|
+
var id = ""
|
|
13
|
+
self.reversed().pairs
|
|
14
|
+
.map {
|
|
15
|
+
$0.reversed()
|
|
16
|
+
}
|
|
17
|
+
.forEach { reversed in
|
|
18
|
+
id.append(String(reversed))
|
|
19
|
+
}
|
|
20
|
+
return id
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
extension Collection {
|
|
25
|
+
var pairs: [SubSequence] {
|
|
26
|
+
var startIndex = self.startIndex
|
|
27
|
+
let count = self.count
|
|
28
|
+
let halving = count / 2 + count % 2
|
|
29
|
+
return (0..<halving).map { _ in
|
|
30
|
+
let endIndex = index(startIndex, offsetBy: 2, limitedBy: self.endIndex) ?? self.endIndex
|
|
31
|
+
defer { startIndex = endIndex }
|
|
32
|
+
return self[startIndex..<endIndex]
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
//
|
|
2
|
+
// File.swift
|
|
3
|
+
// ZcashLightClientKit
|
|
4
|
+
//
|
|
5
|
+
// Created by Francisco Gindre on 12/13/19.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
import CommonCrypto
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
Thanks Stack Overflow (once again) https://stackoverflow.com/questions/39075043/how-to-convert-data-to-hex-string-in-swift
|
|
13
|
+
*/
|
|
14
|
+
struct HexEncodingOptions: OptionSet {
|
|
15
|
+
public static let upperCase = HexEncodingOptions(rawValue: 1 << 0)
|
|
16
|
+
|
|
17
|
+
public let rawValue: Int
|
|
18
|
+
|
|
19
|
+
public init(rawValue: Int) {
|
|
20
|
+
self.rawValue = rawValue
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
extension Data {
|
|
25
|
+
func hexEncodedString(options: HexEncodingOptions = []) -> String {
|
|
26
|
+
z_hexEncodedString(data: self, options: options)
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
func z_hexEncodedString(data: Data, options: HexEncodingOptions = []) -> String {
|
|
31
|
+
let hexDigits = Array((options.contains(.upperCase) ? "0123456789ABCDEF" : "0123456789abcdef").utf16)
|
|
32
|
+
var chars: [unichar] = []
|
|
33
|
+
|
|
34
|
+
chars.reserveCapacity(2 * data.count)
|
|
35
|
+
for byte in data {
|
|
36
|
+
chars.append(hexDigits[Int(byte / 16)])
|
|
37
|
+
chars.append(hexDigits[Int(byte % 16)])
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return String(utf16CodeUnits: chars, count: chars.count)
|
|
41
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
//
|
|
2
|
+
// ZcashRust+Utils.swift
|
|
3
|
+
// ZcashLightClientKit
|
|
4
|
+
//
|
|
5
|
+
// Created by Francisco Gindre on 12/09/2019.
|
|
6
|
+
// Copyright © 2019 Electric Coin Company. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
import Foundation
|
|
10
|
+
/**
|
|
11
|
+
Attempts to show the data as a Zcash Transaction Memo
|
|
12
|
+
*/
|
|
13
|
+
public extension Data {
|
|
14
|
+
func asZcashTransactionMemo() -> String? {
|
|
15
|
+
String(data: self, encoding: .utf8)
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
Attempts to convert this string to a Zcash Transaction Memo data
|
|
21
|
+
*/
|
|
22
|
+
public extension String {
|
|
23
|
+
func encodeAsZcashTransactionMemo() -> Data? {
|
|
24
|
+
return self.data(using: .utf8)
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
//
|
|
2
|
+
// ZcashSDK+extensions.swift
|
|
3
|
+
// ZcashLightClientKit
|
|
4
|
+
//
|
|
5
|
+
// Created by Francisco Gindre on 12/8/20.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
|
|
10
|
+
public typealias ConsensusBranchID = Int32
|
|
11
|
+
|
|
12
|
+
public extension ConsensusBranchID {
|
|
13
|
+
func toString() -> String {
|
|
14
|
+
String(format: "%02x", self)
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
static func fromString(_ str: String) -> ConsensusBranchID? {
|
|
18
|
+
guard let bitpattern = UInt32(str, radix: 16) else { return nil }
|
|
19
|
+
return Int32(bitPattern: bitpattern)
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
extension NetworkType {
|
|
24
|
+
init?(_ string: String) {
|
|
25
|
+
switch string {
|
|
26
|
+
case "main":
|
|
27
|
+
self = .mainnet
|
|
28
|
+
case "test":
|
|
29
|
+
self = .testnet
|
|
30
|
+
default:
|
|
31
|
+
return nil
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Initializer.swift
|
|
3
|
+
// ZcashLightClientKit
|
|
4
|
+
//
|
|
5
|
+
// Created by Francisco Gindre on 13/09/2019.
|
|
6
|
+
// Copyright © 2019 Electric Coin Company. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
import Foundation
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
Wrapper for the Rust backend. This class basically represents all the Rust-wallet
|
|
13
|
+
capabilities and the supporting data required to exercise those abilities.
|
|
14
|
+
*/
|
|
15
|
+
public enum InitializerError: Error {
|
|
16
|
+
case cacheDbInitFailed
|
|
17
|
+
case dataDbInitFailed
|
|
18
|
+
case accountInitFailed
|
|
19
|
+
case falseStart
|
|
20
|
+
case invalidViewingKey(key: String)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
Represents a lightwallet instance endpoint to connect to
|
|
25
|
+
*/
|
|
26
|
+
public struct LightWalletEndpoint {
|
|
27
|
+
public var host: String
|
|
28
|
+
public var port: Int
|
|
29
|
+
public var secure: Bool
|
|
30
|
+
public var singleCallTimeoutInMillis: Int64
|
|
31
|
+
public var streamingCallTimeoutInMillis: Int64
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
initializes a LightWalletEndpoint
|
|
35
|
+
- Parameters:
|
|
36
|
+
- address: a String containing the host address
|
|
37
|
+
- port: string with the port of the host address
|
|
38
|
+
- secure: true if connecting through TLS. Default value is true
|
|
39
|
+
- singleCallTimeoutInMillis: timeout for single calls in Milliseconds
|
|
40
|
+
- streamingCallTimeoutInMillis: timeout for streaming calls in Milliseconds
|
|
41
|
+
*/
|
|
42
|
+
public init(
|
|
43
|
+
address: String,
|
|
44
|
+
port: Int,
|
|
45
|
+
secure: Bool = true,
|
|
46
|
+
singleCallTimeoutInMillis: Int64 = 10000,
|
|
47
|
+
streamingCallTimeoutInMillis: Int64 = 100000
|
|
48
|
+
) {
|
|
49
|
+
self.host = address
|
|
50
|
+
self.port = port
|
|
51
|
+
self.secure = secure
|
|
52
|
+
self.singleCallTimeoutInMillis = singleCallTimeoutInMillis
|
|
53
|
+
self.streamingCallTimeoutInMillis = streamingCallTimeoutInMillis
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
Wrapper for all the Rust backend functionality that does not involve processing blocks. This
|
|
59
|
+
class initializes the Rust backend and the supporting data required to exercise those abilities.
|
|
60
|
+
The [cash.z.wallet.sdk.block.CompactBlockProcessor] handles all the remaining Rust backend
|
|
61
|
+
functionality, related to processing blocks.
|
|
62
|
+
*/
|
|
63
|
+
public class Initializer {
|
|
64
|
+
private(set) var rustBackend: ZcashRustBackendWelding.Type
|
|
65
|
+
private(set) var alias: String
|
|
66
|
+
private(set) var endpoint: LightWalletEndpoint
|
|
67
|
+
|
|
68
|
+
private var lowerBoundHeight: BlockHeight
|
|
69
|
+
private(set) var cacheDbURL: URL
|
|
70
|
+
private(set) var dataDbURL: URL
|
|
71
|
+
private(set) var pendingDbURL: URL
|
|
72
|
+
private(set) var spendParamsURL: URL
|
|
73
|
+
private(set) var outputParamsURL: URL
|
|
74
|
+
private(set) var lightWalletService: LightWalletService
|
|
75
|
+
private(set) var transactionRepository: TransactionRepository
|
|
76
|
+
private(set) var accountRepository: AccountRepository
|
|
77
|
+
private(set) var storage: CompactBlockStorage
|
|
78
|
+
private(set) var downloader: CompactBlockDownloader
|
|
79
|
+
private(set) var network: ZcashNetwork
|
|
80
|
+
private(set) public var viewingKeys: [UnifiedViewingKey]
|
|
81
|
+
private(set) public var walletBirthday: WalletBirthday
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
Constructs the Initializer
|
|
85
|
+
- Parameters:
|
|
86
|
+
- cacheDbURL: location of the compact blocks cache db
|
|
87
|
+
- dataDbURL: Location of the data db
|
|
88
|
+
- pendingDbURL: location of the pending transactions database
|
|
89
|
+
- endpoint: the endpoint representing the lightwalletd instance you want to point to
|
|
90
|
+
- spendParamsURL: location of the spend parameters
|
|
91
|
+
- outputParamsURL: location of the output parameters
|
|
92
|
+
*/
|
|
93
|
+
convenience public init (
|
|
94
|
+
cacheDbURL: URL,
|
|
95
|
+
dataDbURL: URL,
|
|
96
|
+
pendingDbURL: URL,
|
|
97
|
+
endpoint: LightWalletEndpoint,
|
|
98
|
+
network: ZcashNetwork,
|
|
99
|
+
spendParamsURL: URL,
|
|
100
|
+
outputParamsURL: URL,
|
|
101
|
+
viewingKeys: [UnifiedViewingKey],
|
|
102
|
+
walletBirthday: BlockHeight,
|
|
103
|
+
alias: String = "",
|
|
104
|
+
loggerProxy: Logger? = nil
|
|
105
|
+
) {
|
|
106
|
+
let lwdService = LightWalletGRPCService(endpoint: endpoint)
|
|
107
|
+
|
|
108
|
+
self.init(
|
|
109
|
+
rustBackend: ZcashRustBackend.self,
|
|
110
|
+
lowerBoundHeight: walletBirthday,
|
|
111
|
+
network: network,
|
|
112
|
+
cacheDbURL: cacheDbURL,
|
|
113
|
+
dataDbURL: dataDbURL,
|
|
114
|
+
pendingDbURL: pendingDbURL,
|
|
115
|
+
endpoint: endpoint,
|
|
116
|
+
service: lwdService,
|
|
117
|
+
repository: TransactionRepositoryBuilder.build(dataDbURL: dataDbURL),
|
|
118
|
+
accountRepository: AccountRepositoryBuilder.build(
|
|
119
|
+
dataDbURL: dataDbURL,
|
|
120
|
+
readOnly: true,
|
|
121
|
+
caching: true
|
|
122
|
+
),
|
|
123
|
+
storage: CompactBlockStorage(url: cacheDbURL, readonly: false),
|
|
124
|
+
spendParamsURL: spendParamsURL,
|
|
125
|
+
outputParamsURL: outputParamsURL,
|
|
126
|
+
viewingKeys: viewingKeys,
|
|
127
|
+
walletBirthday: walletBirthday,
|
|
128
|
+
alias: alias,
|
|
129
|
+
loggerProxy: loggerProxy
|
|
130
|
+
)
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
Internal for dependency injection purposes
|
|
135
|
+
*/
|
|
136
|
+
init(
|
|
137
|
+
rustBackend: ZcashRustBackendWelding.Type,
|
|
138
|
+
lowerBoundHeight: BlockHeight,
|
|
139
|
+
network: ZcashNetwork,
|
|
140
|
+
cacheDbURL: URL,
|
|
141
|
+
dataDbURL: URL,
|
|
142
|
+
pendingDbURL: URL,
|
|
143
|
+
endpoint: LightWalletEndpoint,
|
|
144
|
+
service: LightWalletService,
|
|
145
|
+
repository: TransactionRepository,
|
|
146
|
+
accountRepository: AccountRepository,
|
|
147
|
+
storage: CompactBlockStorage,
|
|
148
|
+
spendParamsURL: URL,
|
|
149
|
+
outputParamsURL: URL,
|
|
150
|
+
viewingKeys: [UnifiedViewingKey],
|
|
151
|
+
walletBirthday: BlockHeight,
|
|
152
|
+
alias: String = "",
|
|
153
|
+
loggerProxy: Logger? = nil
|
|
154
|
+
) {
|
|
155
|
+
logger = loggerProxy
|
|
156
|
+
self.rustBackend = rustBackend
|
|
157
|
+
self.lowerBoundHeight = lowerBoundHeight
|
|
158
|
+
self.cacheDbURL = cacheDbURL
|
|
159
|
+
self.dataDbURL = dataDbURL
|
|
160
|
+
self.pendingDbURL = pendingDbURL
|
|
161
|
+
self.endpoint = endpoint
|
|
162
|
+
self.spendParamsURL = spendParamsURL
|
|
163
|
+
self.outputParamsURL = outputParamsURL
|
|
164
|
+
self.alias = alias
|
|
165
|
+
self.lightWalletService = service
|
|
166
|
+
self.transactionRepository = repository
|
|
167
|
+
self.accountRepository = accountRepository
|
|
168
|
+
self.storage = storage
|
|
169
|
+
self.downloader = CompactBlockDownloader(service: service, storage: storage)
|
|
170
|
+
self.viewingKeys = viewingKeys
|
|
171
|
+
self.walletBirthday = WalletBirthday.birthday(with: walletBirthday, network: network)
|
|
172
|
+
self.network = network
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
Initialize the wallet with the given seed and return the related private keys for each
|
|
177
|
+
account specified or null if the wallet was previously initialized and block data exists on
|
|
178
|
+
disk. When this method returns null, that signals that the wallet will need to retrieve the
|
|
179
|
+
private keys from its own secure storage. In other words, the private keys are only given out
|
|
180
|
+
once for each set of database files. Subsequent calls to [initialize] will only load the Rust
|
|
181
|
+
library and return null.
|
|
182
|
+
|
|
183
|
+
'compactBlockCache.db' and 'transactionData.db' files are created by this function (if they
|
|
184
|
+
do not already exist). These files can be given a prefix for scenarios where multiple wallets
|
|
185
|
+
|
|
186
|
+
- Parameters:
|
|
187
|
+
- viewingKeys: Extended Full Viewing Keys to initialize the DBs with
|
|
188
|
+
*/
|
|
189
|
+
public func initialize() throws {
|
|
190
|
+
do {
|
|
191
|
+
try storage.createTable()
|
|
192
|
+
} catch {
|
|
193
|
+
throw InitializerError.cacheDbInitFailed
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
do {
|
|
197
|
+
try rustBackend.initDataDb(dbData: dataDbURL, networkType: network.networkType)
|
|
198
|
+
} catch RustWeldingError.dataDbNotEmpty {
|
|
199
|
+
// this is fine
|
|
200
|
+
} catch {
|
|
201
|
+
throw InitializerError.dataDbInitFailed
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
do {
|
|
205
|
+
try rustBackend.initBlocksTable(
|
|
206
|
+
dbData: dataDbURL,
|
|
207
|
+
height: Int32(walletBirthday.height),
|
|
208
|
+
hash: walletBirthday.hash,
|
|
209
|
+
time: walletBirthday.time,
|
|
210
|
+
saplingTree: walletBirthday.tree,
|
|
211
|
+
networkType: network.networkType
|
|
212
|
+
)
|
|
213
|
+
} catch RustWeldingError.dataDbNotEmpty {
|
|
214
|
+
// this is fine
|
|
215
|
+
} catch {
|
|
216
|
+
throw InitializerError.dataDbInitFailed
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
let lastDownloaded = (try? downloader.storage.latestHeight()) ?? walletBirthday.height
|
|
220
|
+
// resume from last downloaded block
|
|
221
|
+
lowerBoundHeight = max(walletBirthday.height, lastDownloaded)
|
|
222
|
+
|
|
223
|
+
do {
|
|
224
|
+
guard try rustBackend.initAccountsTable(
|
|
225
|
+
dbData: dataDbURL,
|
|
226
|
+
uvks: viewingKeys,
|
|
227
|
+
networkType: network.networkType
|
|
228
|
+
) else {
|
|
229
|
+
throw rustBackend.lastError() ?? InitializerError.accountInitFailed
|
|
230
|
+
}
|
|
231
|
+
} catch RustWeldingError.dataDbNotEmpty {
|
|
232
|
+
// this is fine
|
|
233
|
+
} catch {
|
|
234
|
+
throw rustBackend.lastError() ?? InitializerError.accountInitFailed
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
let migrationManager = MigrationManager(
|
|
238
|
+
cacheDbConnection: SimpleConnectionProvider(path: cacheDbURL.path),
|
|
239
|
+
dataDbConnection: SimpleConnectionProvider(path: dataDbURL.path),
|
|
240
|
+
pendingDbConnection: SimpleConnectionProvider(path: pendingDbURL.path),
|
|
241
|
+
networkType: self.network.networkType
|
|
242
|
+
)
|
|
243
|
+
|
|
244
|
+
try migrationManager.performMigration(uvks: viewingKeys)
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
get address from the given account index
|
|
249
|
+
- Parameter account: the index of the account
|
|
250
|
+
*/
|
|
251
|
+
public func getAddress(index account: Int = 0) -> String? {
|
|
252
|
+
try? accountRepository.findBy(account: account)?.address
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
get (unverified) balance from the given account index
|
|
257
|
+
- Parameter account: the index of the account
|
|
258
|
+
*/
|
|
259
|
+
public func getBalance(account index: Int = 0) -> Int64 {
|
|
260
|
+
rustBackend.getBalance(dbData: dataDbURL, account: Int32(index), networkType: network.networkType)
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
get verified balance from the given account index
|
|
265
|
+
- Parameter account: the index of the account
|
|
266
|
+
*/
|
|
267
|
+
public func getVerifiedBalance(account index: Int = 0) -> Int64 {
|
|
268
|
+
rustBackend.getVerifiedBalance(dbData: dataDbURL, account: Int32(index), networkType: network.networkType)
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
checks if the provided address is a valid shielded zAddress
|
|
273
|
+
*/
|
|
274
|
+
public func isValidShieldedAddress(_ address: String) -> Bool {
|
|
275
|
+
(try? rustBackend.isValidShieldedAddress(address, networkType: network.networkType)) ?? false
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
checks if the provided address is a transparent zAddress
|
|
280
|
+
*/
|
|
281
|
+
public func isValidTransparentAddress(_ address: String) -> Bool {
|
|
282
|
+
(try? rustBackend.isValidTransparentAddress(address, networkType: network.networkType)) ?? false
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
func isSpendParameterPresent() -> Bool {
|
|
286
|
+
FileManager.default.isReadableFile(atPath: self.spendParamsURL.path)
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
func isOutputParameterPresent() -> Bool {
|
|
290
|
+
FileManager.default.isReadableFile(atPath: self.outputParamsURL.path)
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
func downloadParametersIfNeeded(result: @escaping (Result<Bool, Error>) -> Void) {
|
|
294
|
+
let spendParameterPresent = isSpendParameterPresent()
|
|
295
|
+
let outputParameterPresent = isOutputParameterPresent()
|
|
296
|
+
|
|
297
|
+
if spendParameterPresent && outputParameterPresent {
|
|
298
|
+
result(.success(true))
|
|
299
|
+
return
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
let outputURL = self.outputParamsURL
|
|
303
|
+
let spendURL = self.spendParamsURL
|
|
304
|
+
|
|
305
|
+
if !outputParameterPresent {
|
|
306
|
+
SaplingParameterDownloader.downloadOutputParameter(outputURL) { outputResult in
|
|
307
|
+
switch outputResult {
|
|
308
|
+
case .failure(let error):
|
|
309
|
+
result(.failure(error))
|
|
310
|
+
case .success:
|
|
311
|
+
guard !spendParameterPresent else {
|
|
312
|
+
result(.success(false))
|
|
313
|
+
return
|
|
314
|
+
}
|
|
315
|
+
SaplingParameterDownloader.downloadSpendParameter(spendURL) { spendResult in
|
|
316
|
+
switch spendResult {
|
|
317
|
+
case .failure(let error):
|
|
318
|
+
result(.failure(error))
|
|
319
|
+
case .success:
|
|
320
|
+
result(.success(false))
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
} else if !spendParameterPresent {
|
|
326
|
+
SaplingParameterDownloader.downloadSpendParameter(spendURL) { spendResult in
|
|
327
|
+
switch spendResult {
|
|
328
|
+
case .failure(let error):
|
|
329
|
+
result(.failure(error))
|
|
330
|
+
case .success:
|
|
331
|
+
result(.success(false))
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
enum CompactBlockProcessorBuilder {
|
|
339
|
+
// swiftlint:disable:next function_parameter_count
|
|
340
|
+
static func buildProcessor(
|
|
341
|
+
configuration: CompactBlockProcessor.Configuration,
|
|
342
|
+
service: LightWalletService,
|
|
343
|
+
storage: CompactBlockStorage,
|
|
344
|
+
transactionRepository: TransactionRepository,
|
|
345
|
+
accountRepository: AccountRepository,
|
|
346
|
+
backend: ZcashRustBackendWelding.Type
|
|
347
|
+
) -> CompactBlockProcessor {
|
|
348
|
+
return CompactBlockProcessor(
|
|
349
|
+
service: service,
|
|
350
|
+
storage: storage,
|
|
351
|
+
backend: backend,
|
|
352
|
+
config: configuration,
|
|
353
|
+
repository: transactionRepository,
|
|
354
|
+
accountRepository: accountRepository
|
|
355
|
+
)
|
|
356
|
+
}
|
|
357
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
//
|
|
2
|
+
// WalletTypes.swift
|
|
3
|
+
// Pods
|
|
4
|
+
//
|
|
5
|
+
// Created by Francisco Gindre on 4/6/21.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
Represents the wallet's birthday which can be thought of as a checkpoint at the earliest moment in history where
|
|
10
|
+
transactions related to this wallet could exist. Ideally, this would correspond to the latest block height at the
|
|
11
|
+
time the wallet key was created. Worst case, the height of Sapling activation could be used (280000).
|
|
12
|
+
|
|
13
|
+
Knowing a wallet's birthday can significantly reduce the amount of data that it needs to download because none of
|
|
14
|
+
the data before that height needs to be scanned for transactions. However, we do need the Sapling tree data in
|
|
15
|
+
order to construct valid transactions from that point forward. This birthday contains that tree data, allowing us
|
|
16
|
+
to avoid downloading all the compact blocks required in order to generate it.
|
|
17
|
+
|
|
18
|
+
New wallets can ignore any blocks created before their birthday.
|
|
19
|
+
|
|
20
|
+
- Parameters:
|
|
21
|
+
- height: the height at the time the wallet was born
|
|
22
|
+
- hash: the block hash corresponding to the given height
|
|
23
|
+
- time: the time the wallet was born, in seconds
|
|
24
|
+
- tree: the sapling tree corresponding to the given height. This takes around 15 minutes of processing to
|
|
25
|
+
generate from scratch because all blocks since activation need to be considered. So when it is calculated in
|
|
26
|
+
advance it can save the user a lot of time.
|
|
27
|
+
*/
|
|
28
|
+
public struct WalletBirthday: Equatable {
|
|
29
|
+
public private(set) var height: BlockHeight = -1
|
|
30
|
+
public private(set) var hash: String = ""
|
|
31
|
+
public private(set) var time: UInt32 = 0
|
|
32
|
+
public private(set) var tree: String = ""
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
extension WalletBirthday: Decodable {
|
|
37
|
+
// let height: BlockHeight
|
|
38
|
+
// let hash: String
|
|
39
|
+
// let time: UInt32
|
|
40
|
+
// let tree: String
|
|
41
|
+
//
|
|
42
|
+
// func walletBirthday() -> WalletBirthday {
|
|
43
|
+
// WalletBirthday(
|
|
44
|
+
// height: height,
|
|
45
|
+
// hash: hash,
|
|
46
|
+
// time: time,
|
|
47
|
+
// tree: tree
|
|
48
|
+
// )
|
|
49
|
+
// }
|
|
50
|
+
|
|
51
|
+
public enum CodingKeys: String, CodingKey {
|
|
52
|
+
case height
|
|
53
|
+
case hash
|
|
54
|
+
case time
|
|
55
|
+
case tree
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
public init(from decoder: Decoder) throws {
|
|
59
|
+
let container = try decoder.container(keyedBy: CodingKeys.self)
|
|
60
|
+
self.height = try Self.getHeight(from: container)
|
|
61
|
+
self.hash = try container.decode(String.self, forKey: .hash)
|
|
62
|
+
self.time = try container.decode(UInt32.self, forKey: .time)
|
|
63
|
+
self.tree = try container.decode(String.self, forKey: .tree)
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
static func getHeight(from container: KeyedDecodingContainer<CodingKeys>) throws -> Int {
|
|
67
|
+
guard
|
|
68
|
+
let heightString = try? container.decode(String.self, forKey: .height),
|
|
69
|
+
let height = Int(heightString)
|
|
70
|
+
else {
|
|
71
|
+
throw DecodingError.typeMismatch(
|
|
72
|
+
String.self,
|
|
73
|
+
DecodingError.Context(
|
|
74
|
+
codingPath: [CodingKeys.height],
|
|
75
|
+
debugDescription: "expected height to be encoded as a string",
|
|
76
|
+
underlyingError: nil
|
|
77
|
+
)
|
|
78
|
+
)
|
|
79
|
+
}
|
|
80
|
+
return height
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
Groups a Sapling Extended Full Viewing Key an a tranparent address extended public key.
|
|
87
|
+
*/
|
|
88
|
+
|
|
89
|
+
public typealias ExtendedFullViewingKey = String
|
|
90
|
+
public typealias ExtendedPublicKey = String
|
|
91
|
+
|
|
92
|
+
public protocol UnifiedViewingKey {
|
|
93
|
+
var extfvk: ExtendedFullViewingKey { get set }
|
|
94
|
+
var extpub: ExtendedPublicKey { get set }
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
public typealias TransparentAddress = String
|
|
98
|
+
public typealias SaplingShieldedAddress = String
|
|
99
|
+
|
|
100
|
+
public protocol UnifiedAddress {
|
|
101
|
+
var tAddress: TransparentAddress { get }
|
|
102
|
+
var zAddress: SaplingShieldedAddress { get }
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
public protocol WalletBalance {
|
|
106
|
+
var verified: Int64 { get set }
|
|
107
|
+
var total: Int64 { get set }
|
|
108
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
//
|
|
2
|
+
// ResourceProvider.swift
|
|
3
|
+
// ZcashLightClientKit
|
|
4
|
+
//
|
|
5
|
+
// Created by Francisco Gindre on 19/09/2019.
|
|
6
|
+
// Copyright © 2019 Electric Coin Company. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
import Foundation
|
|
10
|
+
|
|
11
|
+
public enum ResourceProviderError: Error {
|
|
12
|
+
case unavailableResource
|
|
13
|
+
}
|
|
14
|
+
public protocol ResourceProvider {
|
|
15
|
+
var dataDbURL: URL { get }
|
|
16
|
+
var cacheDbURL: URL { get }
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
Convenience provider for a data db and cache db resources.
|
|
20
|
+
*/
|
|
21
|
+
public struct DefaultResourceProvider: ResourceProvider {
|
|
22
|
+
var network: ZcashNetwork
|
|
23
|
+
|
|
24
|
+
public var dataDbURL: URL {
|
|
25
|
+
let constants = network.constants
|
|
26
|
+
do {
|
|
27
|
+
let url = try FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
|
|
28
|
+
return url.appendingPathComponent(constants.defaultDataDbName)
|
|
29
|
+
} catch {
|
|
30
|
+
return URL(fileURLWithPath: "file://\(constants.defaultDataDbName)")
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
public var cacheDbURL: URL {
|
|
35
|
+
let constants = network.constants
|
|
36
|
+
do {
|
|
37
|
+
let path = try FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
|
|
38
|
+
return path.appendingPathComponent(constants.defaultCacheDbName)
|
|
39
|
+
} catch {
|
|
40
|
+
return URL(fileURLWithPath: "file://\(constants.defaultCacheDbName)")
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
init(network: ZcashNetwork) {
|
|
45
|
+
self.network = network
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
//
|
|
2
|
+
// BlockRepository.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
|
+
|
|
11
|
+
protocol BlockRepository {
|
|
12
|
+
func lastScannedBlockHeight() -> BlockHeight
|
|
13
|
+
}
|