react-native-zcash 0.3.4 → 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 +5 -0
- package/LICENSE +22 -0
- package/README.md +44 -44
- package/android/build.gradle +1 -1
- 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/updateSources.d.ts +1 -0
- package/package.json +20 -37
- 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/scripts/copyCheckpoints.js +0 -12
- package/src/browser.ts +0 -36
- package/src/index.flow.js +0 -168
- package/src/index.ts +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# React Native Zcash
|
|
2
2
|
|
|
3
|
+
## 0.3.5 (2023-08-03)
|
|
4
|
+
|
|
5
|
+
- fixed: Update our default Kotlin version to be compatible with React Native v0.72.
|
|
6
|
+
- changed: Remove our iOS dependency on ZCashLightClientKit by copying the Swift sources directly into this NPM package. This removes the need for users to touch checkpoints on either platform.
|
|
7
|
+
|
|
3
8
|
## 0.3.4 (2023-07-27)
|
|
4
9
|
|
|
5
10
|
- added: Add checkpoints to repo with script to update and copy them from Android to iOS build directories
|
package/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2021 Electric Coin Company Prototypes and Experiments
|
|
4
|
+
Copyright (c) 2022 Airbitz, Inc.
|
|
5
|
+
|
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
in the Software without restriction, including without limitation the rights
|
|
9
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
furnished to do so, subject to the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be included in all
|
|
14
|
+
copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
#
|
|
1
|
+
# react-native-zcash
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
[](https://standardjs.com)
|
|
3
|
+
This library packages the ZCashLightClientKit for use on React Native.
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
## Usage
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
First, add this library to your React Native app using NPM or Yarn, and run `pod install` as necessary to integrate it with your app's native code.
|
|
9
8
|
|
|
10
|
-
|
|
9
|
+
If you encounter errors during `pod install`, you may need to add the following code to the `target` section of your Podfile:
|
|
11
10
|
|
|
12
11
|
```ruby
|
|
12
|
+
# Zcash transitive dependencies:
|
|
13
|
+
pod 'CGRPCZlib', :modular_headers => true
|
|
13
14
|
pod 'CNIOAtomics', :modular_headers => true
|
|
14
15
|
pod 'CNIOBoringSSL', :modular_headers => true
|
|
15
16
|
pod 'CNIOBoringSSLShims', :modular_headers => true
|
|
16
|
-
pod 'CNIOLinux', :modular_headers => true
|
|
17
17
|
pod 'CNIODarwin', :modular_headers => true
|
|
18
18
|
pod 'CNIOHTTPParser', :modular_headers => true
|
|
19
|
+
pod 'CNIOLinux', :modular_headers => true
|
|
19
20
|
pod 'CNIOWindows', :modular_headers => true
|
|
20
|
-
pod 'CGRPCZlib', :modular_headers => true
|
|
21
|
-
pod 'ZcashLightClientKit', :git => 'https://github.com/zcash/ZcashLightClientKit.git', :commit => '74f3ae20f26748e162c051e5fa343c71febc4294'
|
|
22
21
|
```
|
|
23
22
|
|
|
24
|
-
|
|
23
|
+
On the Android side, you may need to configure an explicit Kotlin version, so all your native dependencies will be compatible with one another. Simply define `kotlinVersion` in your `android/build.gradle` file:
|
|
25
24
|
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
```groovy
|
|
26
|
+
buildscript {
|
|
27
|
+
ext {
|
|
28
|
+
kotlinVersion = '1.8.22'
|
|
29
|
+
}
|
|
30
|
+
}
|
|
29
31
|
```
|
|
30
32
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
33
|
+
### API overview
|
|
34
|
+
|
|
35
|
+
- `KeyTool`
|
|
36
|
+
- `deriveViewingKey`
|
|
37
|
+
- `deriveSpendingKey`
|
|
38
|
+
- `getBirthdayHeight`
|
|
39
|
+
- `AddressTool`
|
|
40
|
+
- `deriveShieldedAddress`
|
|
41
|
+
- `isValidShieldedAddress`
|
|
42
|
+
- `isValidTransparentAddress`
|
|
43
|
+
- `makeSynchronizer`
|
|
44
|
+
- `start`
|
|
45
|
+
- `stop`
|
|
46
|
+
- `rescan`
|
|
47
|
+
- `getLatestNetworkHeight`
|
|
48
|
+
- `getShieldedBalance`
|
|
49
|
+
- `getTransactions`
|
|
50
|
+
- `sendToAddress`
|
|
51
|
+
|
|
52
|
+
## Developing
|
|
53
|
+
|
|
54
|
+
This library relies on a large amount of native code from other repos. To integrate this code, you must run the following script before publishing this library to NPM:
|
|
55
|
+
|
|
56
|
+
```sh
|
|
57
|
+
npm run update-sources
|
|
58
|
+
```
|
|
53
59
|
|
|
54
|
-
|
|
55
|
-
ext {
|
|
56
|
-
...
|
|
57
|
-
kotlinVersion = '1.6.10'
|
|
58
|
-
...
|
|
59
|
-
}
|
|
60
|
-
}
|
|
60
|
+
This script will download ZCashLightClientKit and zcash-light-client-ffi, modify them for React Native, and integrate them with our wrapper code.
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
The `update-sources` script is also the place to make edits when upgrading any of the third-party dependencies.
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
We also have an `update-checkpoints` command that will connect to a node and generate fresh checkpoints based on the chain state.
|
package/android/build.gradle
CHANGED
package/ios/RNZcash.m
CHANGED
package/ios/RNZcash.swift
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import Foundation
|
|
2
|
-
import ZcashLightClientKit
|
|
3
2
|
import os
|
|
4
3
|
|
|
5
4
|
var SynchronizerMap = [String: WalletSynchronizer]()
|
|
@@ -125,7 +124,7 @@ class RNZcash : RCTEventEmitter {
|
|
|
125
124
|
wallet.subscribe()
|
|
126
125
|
} catch {
|
|
127
126
|
reject("StartError", "Synchronizer failed to start", error)
|
|
128
|
-
}
|
|
127
|
+
}
|
|
129
128
|
resolve(nil)
|
|
130
129
|
} else {
|
|
131
130
|
reject("StartError", "Wallet does not exist", genericError)
|
|
@@ -253,12 +252,12 @@ class RNZcash : RCTEventEmitter {
|
|
|
253
252
|
wallet.fullySynced = false
|
|
254
253
|
} catch {
|
|
255
254
|
reject("RescanError", "Failed to rescan wallet", error)
|
|
256
|
-
}
|
|
255
|
+
}
|
|
257
256
|
resolve(nil)
|
|
258
257
|
} else {
|
|
259
258
|
reject("RescanError", "Wallet does not exist", genericError)
|
|
260
259
|
}
|
|
261
|
-
}
|
|
260
|
+
}
|
|
262
261
|
|
|
263
262
|
// Derivation Tool
|
|
264
263
|
private func getDerivationToolForNetwork(_ network: String) -> DerivationTool {
|
|
@@ -396,7 +395,7 @@ class WalletSynchronizer : NSObject {
|
|
|
396
395
|
emit("StatusEvent", data)
|
|
397
396
|
}
|
|
398
397
|
}
|
|
399
|
-
|
|
398
|
+
|
|
400
399
|
@objc public func updateProcessorState(notification: NSNotification) {
|
|
401
400
|
let prevLastDownloadedHeight = self.processorState.lastDownloadedHeight
|
|
402
401
|
let prevScanProgress = self.processorState.scanProgress
|
|
@@ -512,7 +511,7 @@ func outputParamsURLHelper(_ alias: String) throws -> URL {
|
|
|
512
511
|
|
|
513
512
|
|
|
514
513
|
// Logger
|
|
515
|
-
class RNZcashLogger:
|
|
514
|
+
class RNZcashLogger: Logger {
|
|
516
515
|
enum LogLevel: Int {
|
|
517
516
|
case debug
|
|
518
517
|
case error
|
|
@@ -520,33 +519,33 @@ class RNZcashLogger: ZcashLightClientKit.Logger {
|
|
|
520
519
|
case event
|
|
521
520
|
case info
|
|
522
521
|
}
|
|
523
|
-
|
|
522
|
+
|
|
524
523
|
enum LoggerType {
|
|
525
524
|
case osLog
|
|
526
525
|
case printerLog
|
|
527
526
|
}
|
|
528
|
-
|
|
527
|
+
|
|
529
528
|
var level: LogLevel
|
|
530
529
|
var loggerType: LoggerType
|
|
531
|
-
|
|
530
|
+
|
|
532
531
|
init(logLevel: LogLevel, type: LoggerType = .osLog) {
|
|
533
532
|
self.level = logLevel
|
|
534
533
|
self.loggerType = type
|
|
535
534
|
}
|
|
536
|
-
|
|
535
|
+
|
|
537
536
|
private static let subsystem = Bundle.main.bundleIdentifier!
|
|
538
537
|
static let oslog = OSLog(subsystem: subsystem, category: "logs")
|
|
539
|
-
|
|
538
|
+
|
|
540
539
|
func debug(_ message: String, file: StaticString = #file, function: StaticString = #function, line: Int = #line) {
|
|
541
540
|
guard level.rawValue == LogLevel.debug.rawValue else { return }
|
|
542
541
|
log(level: "DEBUG 🐞", message: message, file: file, function: function, line: line)
|
|
543
542
|
}
|
|
544
|
-
|
|
543
|
+
|
|
545
544
|
func error(_ message: String, file: StaticString = #file, function: StaticString = #function, line: Int = #line) {
|
|
546
545
|
guard level.rawValue <= LogLevel.error.rawValue else { return }
|
|
547
546
|
log(level: "ERROR 💥", message: message, file: file, function: function, line: line)
|
|
548
547
|
}
|
|
549
|
-
|
|
548
|
+
|
|
550
549
|
func warn(_ message: String, file: StaticString = #file, function: StaticString = #function, line: Int = #line) {
|
|
551
550
|
guard level.rawValue <= LogLevel.warning.rawValue else { return }
|
|
552
551
|
log(level: "WARNING ⚠️", message: message, file: file, function: function, line: line)
|
|
@@ -556,12 +555,12 @@ class RNZcashLogger: ZcashLightClientKit.Logger {
|
|
|
556
555
|
guard level.rawValue <= LogLevel.event.rawValue else { return }
|
|
557
556
|
log(level: "EVENT ⏱", message: message, file: file, function: function, line: line)
|
|
558
557
|
}
|
|
559
|
-
|
|
558
|
+
|
|
560
559
|
func info(_ message: String, file: StaticString = #file, function: StaticString = #function, line: Int = #line) {
|
|
561
560
|
guard level.rawValue <= LogLevel.info.rawValue else { return }
|
|
562
561
|
log(level: "INFO ℹ️", message: message, file: file, function: function, line: line)
|
|
563
562
|
}
|
|
564
|
-
|
|
563
|
+
|
|
565
564
|
private func log(level: String, message: String, file: StaticString = #file, function: StaticString = #function, line: Int = #line) {
|
|
566
565
|
let fileName = (String(describing: file) as NSString).lastPathComponent
|
|
567
566
|
switch loggerType {
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
//
|
|
2
|
+
// CompactBlockStorage.swift
|
|
3
|
+
// ZcashLightClientKit
|
|
4
|
+
//
|
|
5
|
+
// Created by Francisco Gindre on 10/13/19.
|
|
6
|
+
// Copyright © 2019 Electric Coin Company. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
import Foundation
|
|
10
|
+
import SQLite
|
|
11
|
+
|
|
12
|
+
protocol ConnectionProvider {
|
|
13
|
+
func connection() throws -> Connection
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
class CompactBlockStorage: CompactBlockDAO {
|
|
17
|
+
var dbProvider: ConnectionProvider
|
|
18
|
+
|
|
19
|
+
init(connectionProvider: ConnectionProvider) {
|
|
20
|
+
dbProvider = connectionProvider
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
private func compactBlocksTable() -> Table {
|
|
24
|
+
Table("compactblocks")
|
|
25
|
+
}
|
|
26
|
+
private func heightColumn() -> Expression<Int64> {
|
|
27
|
+
Expression<Int64>("height")
|
|
28
|
+
}
|
|
29
|
+
private func dataColumn() -> Expression<Blob> {
|
|
30
|
+
Expression<Blob>("data")
|
|
31
|
+
}
|
|
32
|
+
func createTable() throws {
|
|
33
|
+
do {
|
|
34
|
+
let compactBlocks = compactBlocksTable()
|
|
35
|
+
let height = heightColumn()
|
|
36
|
+
let data = dataColumn()
|
|
37
|
+
|
|
38
|
+
let db = try dbProvider.connection()
|
|
39
|
+
|
|
40
|
+
try db.run(compactBlocks.create(ifNotExists: true) { table in
|
|
41
|
+
table.column(height, primaryKey: true)
|
|
42
|
+
table.column(data)
|
|
43
|
+
}
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
try db.run(compactBlocks.createIndex(height, ifNotExists: true))
|
|
47
|
+
} catch {
|
|
48
|
+
throw StorageError.couldNotCreate
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
func insert(_ block: ZcashCompactBlock) throws {
|
|
53
|
+
try dbProvider.connection().run(compactBlocksTable().insert(block))
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
func insert(_ blocks: [ZcashCompactBlock]) throws {
|
|
57
|
+
let compactBlocks = compactBlocksTable()
|
|
58
|
+
let db = try dbProvider.connection()
|
|
59
|
+
try db.transaction(.immediate) {
|
|
60
|
+
for block in blocks {
|
|
61
|
+
try db.run(compactBlocks.insert(block))
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
func latestBlockHeight() throws -> BlockHeight {
|
|
67
|
+
guard let maxHeight = try dbProvider.connection().scalar(compactBlocksTable().select(heightColumn().max)) else {
|
|
68
|
+
return BlockHeight.empty()
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
guard let blockHeight = BlockHeight(exactly: maxHeight) else {
|
|
72
|
+
throw StorageError.operationFailed
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return blockHeight
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
func rewind(to height: BlockHeight) throws {
|
|
79
|
+
try dbProvider.connection().run(compactBlocksTable().filter(heightColumn() >= Int64(height)).delete())
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
extension CompactBlockStorage: CompactBlockRepository {
|
|
84
|
+
func latestHeight() throws -> BlockHeight {
|
|
85
|
+
try latestBlockHeight()
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
func latestHeight(result: @escaping (Swift.Result<BlockHeight, Error>) -> Void) {
|
|
89
|
+
DispatchQueue.global(qos: .userInitiated).async {
|
|
90
|
+
do {
|
|
91
|
+
result(.success(try self.latestBlockHeight()))
|
|
92
|
+
} catch {
|
|
93
|
+
result(.failure(error))
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
func write(blocks: [ZcashCompactBlock]) throws {
|
|
99
|
+
try insert(blocks)
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
func write(blocks: [ZcashCompactBlock], completion: ((Error?) -> Void)?) {
|
|
103
|
+
DispatchQueue.global(qos: .userInitiated).async {
|
|
104
|
+
do {
|
|
105
|
+
try self.insert(blocks)
|
|
106
|
+
completion?(nil)
|
|
107
|
+
} catch {
|
|
108
|
+
completion?(error)
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
func rewind(to height: BlockHeight, completion: ((Error?) -> Void)?) {
|
|
114
|
+
DispatchQueue.global(qos: .userInitiated).async {
|
|
115
|
+
do {
|
|
116
|
+
try self.rewind(to: height)
|
|
117
|
+
completion?(nil)
|
|
118
|
+
} catch {
|
|
119
|
+
completion?(error)
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
//
|
|
2
|
+
// DatabaseMigrationManager.swift
|
|
3
|
+
// ZcashLightClientKit
|
|
4
|
+
//
|
|
5
|
+
// Created by Francisco Gindre on 3/31/21.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
import SQLite
|
|
10
|
+
|
|
11
|
+
class MigrationManager {
|
|
12
|
+
enum DataDbMigrations: Int32 {
|
|
13
|
+
case none = 0
|
|
14
|
+
case version1 = 1
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
enum CacheDbMigration: Int32 {
|
|
18
|
+
case none = 0
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
enum PendingDbMigration: Int32 {
|
|
22
|
+
case none = 0
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
static let latestDataDbMigrationVersion: Int32 = DataDbMigrations.version1.rawValue
|
|
26
|
+
static let latestCacheDbMigrationVersion: Int32 = CacheDbMigration.none.rawValue
|
|
27
|
+
static let latestPendingDbMigrationVersion: Int32 = PendingDbMigration.none.rawValue
|
|
28
|
+
|
|
29
|
+
var cacheDb: ConnectionProvider
|
|
30
|
+
var dataDb: ConnectionProvider
|
|
31
|
+
var pendingDb: ConnectionProvider
|
|
32
|
+
var network: NetworkType
|
|
33
|
+
|
|
34
|
+
init(
|
|
35
|
+
cacheDbConnection: ConnectionProvider,
|
|
36
|
+
dataDbConnection: ConnectionProvider,
|
|
37
|
+
pendingDbConnection: ConnectionProvider,
|
|
38
|
+
networkType: NetworkType
|
|
39
|
+
) {
|
|
40
|
+
self.cacheDb = cacheDbConnection
|
|
41
|
+
self.dataDb = dataDbConnection
|
|
42
|
+
self.pendingDb = pendingDbConnection
|
|
43
|
+
self.network = networkType
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
func performMigration(uvks: [UnifiedViewingKey]) throws {
|
|
47
|
+
try migrateDataDb(uvks: uvks)
|
|
48
|
+
try migrateCacheDb()
|
|
49
|
+
try migratePendingDb()
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
func performVersion1Migration(viewingKeys: [UnifiedViewingKey]) throws {
|
|
53
|
+
LoggerProxy.debug("Starting migration version 1 from viewing Keys")
|
|
54
|
+
let db = try self.dataDb.connection()
|
|
55
|
+
|
|
56
|
+
let placeholder = "deriveMe"
|
|
57
|
+
let migrationStatement =
|
|
58
|
+
"""
|
|
59
|
+
BEGIN TRANSACTION;
|
|
60
|
+
PRAGMA foreign_keys = OFF;
|
|
61
|
+
DROP TABLE utxos;
|
|
62
|
+
CREATE TABLE IF NOT EXISTS utxos(
|
|
63
|
+
id_utxo INTEGER PRIMARY KEY,
|
|
64
|
+
address TEXT NOT NULL,
|
|
65
|
+
prevout_txid BLOB NOT NULL,
|
|
66
|
+
prevout_idx INTEGER NOT NULL,
|
|
67
|
+
script BLOB NOT NULL,
|
|
68
|
+
value_zat INTEGER NOT NULL,
|
|
69
|
+
height INTEGER NOT NULL,
|
|
70
|
+
spent_in_tx INTEGER,
|
|
71
|
+
FOREIGN KEY (spent_in_tx) REFERENCES transactions(id_tx),
|
|
72
|
+
CONSTRAINT tx_outpoint UNIQUE (prevout_txid, prevout_idx)
|
|
73
|
+
);
|
|
74
|
+
|
|
75
|
+
CREATE TABLE IF NOT EXISTS accounts_new (
|
|
76
|
+
account INTEGER PRIMARY KEY,
|
|
77
|
+
extfvk TEXT NOT NULL,
|
|
78
|
+
address TEXT NOT NULL,
|
|
79
|
+
transparent_address TEXT NOT NULL
|
|
80
|
+
);
|
|
81
|
+
|
|
82
|
+
INSERT INTO accounts_new SELECT account, extfvk, address, '\(placeholder)' FROM accounts;
|
|
83
|
+
DROP TABLE accounts;
|
|
84
|
+
|
|
85
|
+
ALTER TABLE accounts_new RENAME TO accounts;
|
|
86
|
+
|
|
87
|
+
PRAGMA user_version = 1;
|
|
88
|
+
PRAGMA foreign_keys = ON;
|
|
89
|
+
COMMIT TRANSACTION;
|
|
90
|
+
"""
|
|
91
|
+
LoggerProxy.debug("db.execute(\"\(migrationStatement)\")")
|
|
92
|
+
try db.execute(migrationStatement)
|
|
93
|
+
|
|
94
|
+
LoggerProxy.debug("db.run() succeeded")
|
|
95
|
+
|
|
96
|
+
// derive transparent (shielding) addresses
|
|
97
|
+
let accountsDao = AccountSQDAO(dbProvider: self.dataDb)
|
|
98
|
+
|
|
99
|
+
let accounts = try accountsDao.getAll()
|
|
100
|
+
|
|
101
|
+
guard !accounts.isEmpty else {
|
|
102
|
+
LoggerProxy.debug("no existing accounts found while performing this migration")
|
|
103
|
+
return
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
guard accounts.count == viewingKeys.count else {
|
|
107
|
+
let message = """
|
|
108
|
+
Number of accounts found and viewing keys provided don't match.
|
|
109
|
+
Found \(accounts.count) account(s) and there were \(viewingKeys.count) Viewing key(s) provided.
|
|
110
|
+
"""
|
|
111
|
+
LoggerProxy.debug(message)
|
|
112
|
+
throw StorageError.migrationFailedWithMessage(message: message)
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
let derivationTool = DerivationTool(networkType: self.network)
|
|
116
|
+
|
|
117
|
+
for tuple in zip(accounts, viewingKeys) {
|
|
118
|
+
let tAddr = try derivationTool.deriveTransparentAddressFromPublicKey(tuple.1.extpub)
|
|
119
|
+
var account = tuple.0
|
|
120
|
+
account.transparentAddress = tAddr
|
|
121
|
+
try accountsDao.update(account)
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// sanity check
|
|
125
|
+
guard try accountsDao.getAll().first(where: { $0.transparentAddress == placeholder }) == nil else {
|
|
126
|
+
LoggerProxy.error("Accounts Migration performed but the transparent addresses were not derived")
|
|
127
|
+
throw StorageError.migrationFailed(underlyingError: KeyDerivationErrors.unableToDerive)
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
func performVersion1Migration(_ seedBytes: [UInt8]) throws {
|
|
132
|
+
LoggerProxy.debug("Starting migration version 1")
|
|
133
|
+
|
|
134
|
+
// derive transparent (shielding) addresses
|
|
135
|
+
let accountsDao = AccountSQDAO(dbProvider: self.dataDb)
|
|
136
|
+
|
|
137
|
+
let accounts = try accountsDao.getAll()
|
|
138
|
+
|
|
139
|
+
guard !accounts.isEmpty else {
|
|
140
|
+
LoggerProxy.debug("no existing accounts found while performing this migration")
|
|
141
|
+
return
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
let derivationTool = DerivationTool(networkType: self.network)
|
|
145
|
+
|
|
146
|
+
let uvks = try derivationTool.deriveUnifiedViewingKeysFromSeed(seedBytes, numberOfAccounts: accounts.count)
|
|
147
|
+
|
|
148
|
+
try performVersion1Migration(viewingKeys: uvks)
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
private extension MigrationManager {
|
|
153
|
+
func migratePendingDb() throws {
|
|
154
|
+
let currentPendingDbVersion = try pendingDb.connection().getUserVersion()
|
|
155
|
+
|
|
156
|
+
LoggerProxy.debug(
|
|
157
|
+
"Attempting to perform migration for pending Db - currentVersion: \(currentPendingDbVersion)." +
|
|
158
|
+
"Latest version is: \(Self.latestPendingDbMigrationVersion)"
|
|
159
|
+
)
|
|
160
|
+
|
|
161
|
+
if currentPendingDbVersion < Self.latestPendingDbMigrationVersion {
|
|
162
|
+
// perform no migration just adjust the version number
|
|
163
|
+
try self.cacheDb.connection().setUserVersion(PendingDbMigration.none.rawValue)
|
|
164
|
+
} else {
|
|
165
|
+
LoggerProxy.debug("PendingDb Db - no migration needed")
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
func migrateCacheDb() throws {
|
|
170
|
+
let currentCacheDbVersion = try cacheDb.connection().getUserVersion()
|
|
171
|
+
|
|
172
|
+
LoggerProxy.debug(
|
|
173
|
+
"Attempting to perform migration for cache Db - currentVersion: \(currentCacheDbVersion)." +
|
|
174
|
+
"Latest version is: \(Self.latestCacheDbMigrationVersion)"
|
|
175
|
+
)
|
|
176
|
+
|
|
177
|
+
if currentCacheDbVersion < Self.latestCacheDbMigrationVersion {
|
|
178
|
+
// perform no migration just adjust the version number
|
|
179
|
+
try self.cacheDb.connection().setUserVersion(CacheDbMigration.none.rawValue)
|
|
180
|
+
} else {
|
|
181
|
+
LoggerProxy.debug("Cache Db - no migration needed")
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
func migrateDataDb(uvks: [UnifiedViewingKey]) throws {
|
|
186
|
+
let currentDataDbVersion = try dataDb.connection().getUserVersion()
|
|
187
|
+
LoggerProxy.debug(
|
|
188
|
+
"Attempting to perform migration for data Db - currentVersion: \(currentDataDbVersion)." +
|
|
189
|
+
"Latest version is: \(Self.latestDataDbMigrationVersion)"
|
|
190
|
+
)
|
|
191
|
+
|
|
192
|
+
if currentDataDbVersion < Self.latestDataDbMigrationVersion {
|
|
193
|
+
for dbVersion in (currentDataDbVersion + 1) ... Self.latestDataDbMigrationVersion {
|
|
194
|
+
guard let version = DataDbMigrations.init(rawValue: dbVersion) else {
|
|
195
|
+
LoggerProxy.error("failed to determine migration version")
|
|
196
|
+
throw StorageError.invalidMigrationVersion(version: dbVersion)
|
|
197
|
+
}
|
|
198
|
+
switch version {
|
|
199
|
+
case .version1:
|
|
200
|
+
try performVersion1Migration(viewingKeys: uvks)
|
|
201
|
+
case .none:
|
|
202
|
+
break
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
} else {
|
|
206
|
+
LoggerProxy.debug("Data Db - no migration needed")
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
extension Connection {
|
|
212
|
+
func getUserVersion() throws -> Int32 {
|
|
213
|
+
guard let version = try scalar("PRAGMA user_version") as? Int64 else {
|
|
214
|
+
return 0
|
|
215
|
+
}
|
|
216
|
+
return Int32(version)
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
func setUserVersion(_ version: Int32) throws {
|
|
220
|
+
try run("PRAGMA user_version = \(version)")
|
|
221
|
+
}
|
|
222
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Storage.swift
|
|
3
|
+
// ZcashLightClientKit
|
|
4
|
+
//
|
|
5
|
+
// Created by Francisco Gindre on 10/13/19.
|
|
6
|
+
// Copyright © 2019 Electric Coin Company. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
import Foundation
|
|
10
|
+
|
|
11
|
+
enum StorageError: Error {
|
|
12
|
+
case couldNotCreate
|
|
13
|
+
case openFailed
|
|
14
|
+
case closeFailed
|
|
15
|
+
case operationFailed
|
|
16
|
+
case updateFailed
|
|
17
|
+
case malformedEntity(fields: [String]?)
|
|
18
|
+
case transactionFailed(underlyingError: Error)
|
|
19
|
+
case invalidMigrationVersion(version: Int32)
|
|
20
|
+
case migrationFailed(underlyingError: Error)
|
|
21
|
+
case migrationFailedWithMessage(message: String)
|
|
22
|
+
}
|