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.
Files changed (514) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/LICENSE +22 -0
  3. package/README.md +47 -14
  4. package/android/build.gradle +1 -1
  5. package/android/src/main/assets/saplingtree/mainnet/1310000.json +7 -0
  6. package/android/src/main/assets/saplingtree/mainnet/1320000.json +7 -0
  7. package/android/src/main/assets/saplingtree/mainnet/1330000.json +7 -0
  8. package/android/src/main/assets/saplingtree/mainnet/1340000.json +7 -0
  9. package/android/src/main/assets/saplingtree/mainnet/1350000.json +7 -0
  10. package/android/src/main/assets/saplingtree/mainnet/1360000.json +7 -0
  11. package/android/src/main/assets/saplingtree/mainnet/1370000.json +7 -0
  12. package/android/src/main/assets/saplingtree/mainnet/1380000.json +7 -0
  13. package/android/src/main/assets/saplingtree/mainnet/1390000.json +7 -0
  14. package/android/src/main/assets/saplingtree/mainnet/1400000.json +7 -0
  15. package/android/src/main/assets/saplingtree/mainnet/1410000.json +7 -0
  16. package/android/src/main/assets/saplingtree/mainnet/1420000.json +7 -0
  17. package/android/src/main/assets/saplingtree/mainnet/1430000.json +7 -0
  18. package/android/src/main/assets/saplingtree/mainnet/1440000.json +7 -0
  19. package/android/src/main/assets/saplingtree/mainnet/1450000.json +7 -0
  20. package/android/src/main/assets/saplingtree/mainnet/1460000.json +7 -0
  21. package/android/src/main/assets/saplingtree/mainnet/1470000.json +7 -0
  22. package/android/src/main/assets/saplingtree/mainnet/1480000.json +7 -0
  23. package/android/src/main/assets/saplingtree/mainnet/1490000.json +7 -0
  24. package/android/src/main/assets/saplingtree/mainnet/1500000.json +7 -0
  25. package/android/src/main/assets/saplingtree/mainnet/1510000.json +7 -0
  26. package/android/src/main/assets/saplingtree/mainnet/1520000.json +7 -0
  27. package/android/src/main/assets/saplingtree/mainnet/1530000.json +7 -0
  28. package/android/src/main/assets/saplingtree/mainnet/1540000.json +7 -0
  29. package/android/src/main/assets/saplingtree/mainnet/1550000.json +7 -0
  30. package/android/src/main/assets/saplingtree/mainnet/1560000.json +7 -0
  31. package/android/src/main/assets/saplingtree/mainnet/1570000.json +7 -0
  32. package/android/src/main/assets/saplingtree/mainnet/1580000.json +7 -0
  33. package/android/src/main/assets/saplingtree/mainnet/1590000.json +7 -0
  34. package/android/src/main/assets/saplingtree/mainnet/1600000.json +7 -0
  35. package/android/src/main/assets/saplingtree/mainnet/1610000.json +7 -0
  36. package/android/src/main/assets/saplingtree/mainnet/1620000.json +7 -0
  37. package/android/src/main/assets/saplingtree/mainnet/1630000.json +7 -0
  38. package/android/src/main/assets/saplingtree/mainnet/1640000.json +7 -0
  39. package/android/src/main/assets/saplingtree/mainnet/1650000.json +7 -0
  40. package/android/src/main/assets/saplingtree/mainnet/1660000.json +7 -0
  41. package/android/src/main/assets/saplingtree/mainnet/1670000.json +7 -0
  42. package/android/src/main/assets/saplingtree/mainnet/1680000.json +7 -0
  43. package/android/src/main/assets/saplingtree/mainnet/1690000.json +7 -0
  44. package/android/src/main/assets/saplingtree/mainnet/1700000.json +7 -0
  45. package/android/src/main/assets/saplingtree/mainnet/1710000.json +7 -0
  46. package/android/src/main/assets/saplingtree/mainnet/1720000.json +7 -0
  47. package/android/src/main/assets/saplingtree/mainnet/1730000.json +7 -0
  48. package/android/src/main/assets/saplingtree/mainnet/1740000.json +7 -0
  49. package/android/src/main/assets/saplingtree/mainnet/1750000.json +7 -0
  50. package/android/src/main/assets/saplingtree/mainnet/1760000.json +7 -0
  51. package/android/src/main/assets/saplingtree/mainnet/1770000.json +7 -0
  52. package/android/src/main/assets/saplingtree/mainnet/1780000.json +7 -0
  53. package/android/src/main/assets/saplingtree/mainnet/1790000.json +7 -0
  54. package/android/src/main/assets/saplingtree/mainnet/1800000.json +7 -0
  55. package/android/src/main/assets/saplingtree/mainnet/1810000.json +7 -0
  56. package/android/src/main/assets/saplingtree/mainnet/1820000.json +7 -0
  57. package/android/src/main/assets/saplingtree/mainnet/1830000.json +7 -0
  58. package/android/src/main/assets/saplingtree/mainnet/1840000.json +7 -0
  59. package/android/src/main/assets/saplingtree/mainnet/1850000.json +7 -0
  60. package/android/src/main/assets/saplingtree/mainnet/1860000.json +7 -0
  61. package/android/src/main/assets/saplingtree/mainnet/1870000.json +7 -0
  62. package/android/src/main/assets/saplingtree/mainnet/1880000.json +7 -0
  63. package/android/src/main/assets/saplingtree/mainnet/1890000.json +7 -0
  64. package/android/src/main/assets/saplingtree/mainnet/1900000.json +7 -0
  65. package/android/src/main/assets/saplingtree/mainnet/1910000.json +7 -0
  66. package/android/src/main/assets/saplingtree/mainnet/1920000.json +7 -0
  67. package/android/src/main/assets/saplingtree/mainnet/1930000.json +7 -0
  68. package/android/src/main/assets/saplingtree/mainnet/1940000.json +7 -0
  69. package/android/src/main/assets/saplingtree/mainnet/1950000.json +7 -0
  70. package/android/src/main/assets/saplingtree/mainnet/1960000.json +7 -0
  71. package/android/src/main/assets/saplingtree/mainnet/1970000.json +7 -0
  72. package/android/src/main/assets/saplingtree/mainnet/1980000.json +7 -0
  73. package/android/src/main/assets/saplingtree/mainnet/1990000.json +7 -0
  74. package/android/src/main/assets/saplingtree/mainnet/2000000.json +7 -0
  75. package/android/src/main/assets/saplingtree/mainnet/2010000.json +7 -0
  76. package/android/src/main/assets/saplingtree/mainnet/2020000.json +7 -0
  77. package/android/src/main/assets/saplingtree/mainnet/2030000.json +7 -0
  78. package/android/src/main/assets/saplingtree/mainnet/2040000.json +7 -0
  79. package/android/src/main/assets/saplingtree/mainnet/2050000.json +7 -0
  80. package/android/src/main/assets/saplingtree/mainnet/2060000.json +7 -0
  81. package/android/src/main/assets/saplingtree/mainnet/2070000.json +7 -0
  82. package/android/src/main/assets/saplingtree/mainnet/2080000.json +7 -0
  83. package/android/src/main/assets/saplingtree/mainnet/2090000.json +7 -0
  84. package/android/src/main/assets/saplingtree/mainnet/2100000.json +7 -0
  85. package/android/src/main/assets/saplingtree/mainnet/2110000.json +7 -0
  86. package/android/src/main/assets/saplingtree/mainnet/2120000.json +7 -0
  87. package/android/src/main/assets/saplingtree/mainnet/2130000.json +7 -0
  88. package/android/src/main/assets/saplingtree/mainnet/2140000.json +7 -0
  89. package/android/src/main/assets/saplingtree/mainnet/2150000.json +7 -0
  90. package/android/src/main/assets/saplingtree/mainnet/2160000.json +7 -0
  91. package/android/src/main/assets/saplingtree/mainnet/2170000.json +7 -0
  92. package/ios/RNZcash.m +0 -1
  93. package/ios/RNZcash.swift +14 -15
  94. package/ios/ZCashLightClientKit/Block/DatabaseStorage/CompactBlockStorage.swift +123 -0
  95. package/ios/ZCashLightClientKit/Block/DatabaseStorage/DatabaseMigrationManager.swift +222 -0
  96. package/ios/ZCashLightClientKit/Block/DatabaseStorage/StorageError.swift +22 -0
  97. package/ios/ZCashLightClientKit/Block/DatabaseStorage/StorageManager.swift +73 -0
  98. package/ios/ZCashLightClientKit/Block/Downloader/BlockDownloader.swift +240 -0
  99. package/ios/ZCashLightClientKit/Block/Downloader/CompactBlockDownloaderBuilder.swift +26 -0
  100. package/ios/ZCashLightClientKit/Block/Processor/CompactBlockDownloadOperation.swift +258 -0
  101. package/ios/ZCashLightClientKit/Block/Processor/CompactBlockEnhancementOperation.swift +157 -0
  102. package/ios/ZCashLightClientKit/Block/Processor/CompactBlockProcessor.swift +1454 -0
  103. package/ios/ZCashLightClientKit/Block/Processor/CompactBlockScanningOperation.swift +238 -0
  104. package/ios/ZCashLightClientKit/Block/Processor/CompactBlockValidationInformation.swift +66 -0
  105. package/ios/ZCashLightClientKit/Block/Processor/FetchUnspentTxOutputsOperation.swift +103 -0
  106. package/ios/ZCashLightClientKit/Block/Processor/FigureNextBatchOperation.swift +58 -0
  107. package/ios/ZCashLightClientKit/Block/Processor/ZcashOperation.swift +68 -0
  108. package/ios/ZCashLightClientKit/Constants/WalletBirthday+Constants.swift +58 -0
  109. package/ios/ZCashLightClientKit/Constants/WalletBirthday+mainnet.swift +20 -0
  110. package/ios/ZCashLightClientKit/Constants/WalletBirthday+testnet.swift +20 -0
  111. package/ios/ZCashLightClientKit/Constants/ZcashSDK.swift +245 -0
  112. package/ios/ZCashLightClientKit/DAO/BlockDao.swift +67 -0
  113. package/ios/ZCashLightClientKit/DAO/CompactBlockDAO.swift +24 -0
  114. package/ios/ZCashLightClientKit/DAO/NotesDao.swift +142 -0
  115. package/ios/ZCashLightClientKit/DAO/PagedTransactionDao.swift +62 -0
  116. package/ios/ZCashLightClientKit/DAO/PendingTransactionDao.swift +213 -0
  117. package/ios/ZCashLightClientKit/DAO/TransactionBuilder.swift +169 -0
  118. package/ios/ZCashLightClientKit/DAO/TransactionDao.swift +393 -0
  119. package/ios/ZCashLightClientKit/DAO/UnspentTransactionOutputDao.swift +188 -0
  120. package/ios/ZCashLightClientKit/Entity/AccountEntity.swift +201 -0
  121. package/ios/ZCashLightClientKit/Entity/CompactBlockEntity.swift +13 -0
  122. package/ios/ZCashLightClientKit/Entity/EncodedTransactionEntity.swift +26 -0
  123. package/ios/ZCashLightClientKit/Entity/PendingTransactionEntity.swift +205 -0
  124. package/ios/ZCashLightClientKit/Entity/ReceivedNoteEntity.swift +22 -0
  125. package/ios/ZCashLightClientKit/Entity/SentNoteEntity.swift +45 -0
  126. package/ios/ZCashLightClientKit/Entity/TransactionEntity.swift +161 -0
  127. package/ios/ZCashLightClientKit/Entity/UnspentTransactionOutputEntity.swift +17 -0
  128. package/ios/ZCashLightClientKit/Extensions/Data+Zcash.swift +17 -0
  129. package/ios/ZCashLightClientKit/Extensions/Data+internal.swift +35 -0
  130. package/ios/ZCashLightClientKit/Extensions/HexEncode.swift +41 -0
  131. package/ios/ZCashLightClientKit/Extensions/ZcashRust+Utils.swift +26 -0
  132. package/ios/ZCashLightClientKit/Extensions/ZcashSDK+extensions.swift +34 -0
  133. package/ios/ZCashLightClientKit/Initializer.swift +357 -0
  134. package/ios/ZCashLightClientKit/Model/WalletTypes.swift +108 -0
  135. package/ios/ZCashLightClientKit/Providers/ResourceProvider.swift +47 -0
  136. package/ios/ZCashLightClientKit/Repository/BlockRepository.swift +13 -0
  137. package/ios/ZCashLightClientKit/Repository/CompactBlockRepository.swift +75 -0
  138. package/ios/ZCashLightClientKit/Repository/NotesRepository.swift +16 -0
  139. package/ios/ZCashLightClientKit/Repository/PaginatedTransactionRepository.swift +35 -0
  140. package/ios/ZCashLightClientKit/Repository/PendingTransactionRepository.swift +19 -0
  141. package/ios/ZCashLightClientKit/Repository/TransactionRepository.swift +30 -0
  142. package/ios/ZCashLightClientKit/Repository/TransactionRepositoryBuilder.swift +24 -0
  143. package/ios/ZCashLightClientKit/Repository/UnspentTransactionOutputRepository.swift +18 -0
  144. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1000000.json +7 -0
  145. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1010000.json +7 -0
  146. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1020000.json +7 -0
  147. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1030000.json +7 -0
  148. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1040000.json +7 -0
  149. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1050000.json +7 -0
  150. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1060000.json +7 -0
  151. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1070000.json +7 -0
  152. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1080000.json +7 -0
  153. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1090000.json +7 -0
  154. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1100000.json +7 -0
  155. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1110000.json +7 -0
  156. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1120000.json +7 -0
  157. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1130000.json +7 -0
  158. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1140000.json +7 -0
  159. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1150000.json +7 -0
  160. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1160000.json +7 -0
  161. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1170000.json +7 -0
  162. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1180000.json +7 -0
  163. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1190000.json +7 -0
  164. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1200000.json +7 -0
  165. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1210000.json +7 -0
  166. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1220000.json +7 -0
  167. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1230000.json +7 -0
  168. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1240000.json +7 -0
  169. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1250000.json +7 -0
  170. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1260000.json +7 -0
  171. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1270000.json +7 -0
  172. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1280000.json +7 -0
  173. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1290000.json +7 -0
  174. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1300000.json +7 -0
  175. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1310000.json +7 -0
  176. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1320000.json +7 -0
  177. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1330000.json +7 -0
  178. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1340000.json +7 -0
  179. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1350000.json +7 -0
  180. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1360000.json +7 -0
  181. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1370000.json +7 -0
  182. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1380000.json +7 -0
  183. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1390000.json +7 -0
  184. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1400000.json +7 -0
  185. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1410000.json +7 -0
  186. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1420000.json +7 -0
  187. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1430000.json +7 -0
  188. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1440000.json +7 -0
  189. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1450000.json +7 -0
  190. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1460000.json +7 -0
  191. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1470000.json +7 -0
  192. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1480000.json +7 -0
  193. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1490000.json +7 -0
  194. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1500000.json +7 -0
  195. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1510000.json +7 -0
  196. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1520000.json +7 -0
  197. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1530000.json +7 -0
  198. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1540000.json +7 -0
  199. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1550000.json +7 -0
  200. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1560000.json +7 -0
  201. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1570000.json +7 -0
  202. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1580000.json +7 -0
  203. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1590000.json +7 -0
  204. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1600000.json +7 -0
  205. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1610000.json +7 -0
  206. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1620000.json +7 -0
  207. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1630000.json +7 -0
  208. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1640000.json +7 -0
  209. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1650000.json +7 -0
  210. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1660000.json +7 -0
  211. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1670000.json +7 -0
  212. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1680000.json +7 -0
  213. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1690000.json +7 -0
  214. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1700000.json +7 -0
  215. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1710000.json +7 -0
  216. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1720000.json +7 -0
  217. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1730000.json +7 -0
  218. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1740000.json +7 -0
  219. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1750000.json +7 -0
  220. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1760000.json +7 -0
  221. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1770000.json +7 -0
  222. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1780000.json +7 -0
  223. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1790000.json +7 -0
  224. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1800000.json +7 -0
  225. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1810000.json +7 -0
  226. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1820000.json +7 -0
  227. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1830000.json +7 -0
  228. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1840000.json +7 -0
  229. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1850000.json +7 -0
  230. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1860000.json +7 -0
  231. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1870000.json +7 -0
  232. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1880000.json +7 -0
  233. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1890000.json +7 -0
  234. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1900000.json +7 -0
  235. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1910000.json +7 -0
  236. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1920000.json +7 -0
  237. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1930000.json +7 -0
  238. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1940000.json +7 -0
  239. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1950000.json +7 -0
  240. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1960000.json +7 -0
  241. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1970000.json +7 -0
  242. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1980000.json +7 -0
  243. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/1990000.json +7 -0
  244. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2000000.json +7 -0
  245. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2010000.json +7 -0
  246. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2020000.json +7 -0
  247. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2030000.json +7 -0
  248. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2040000.json +7 -0
  249. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2050000.json +7 -0
  250. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2060000.json +7 -0
  251. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2070000.json +7 -0
  252. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2080000.json +7 -0
  253. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2090000.json +7 -0
  254. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2100000.json +7 -0
  255. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2110000.json +7 -0
  256. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2120000.json +7 -0
  257. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2130000.json +7 -0
  258. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2140000.json +7 -0
  259. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2150000.json +7 -0
  260. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2160000.json +7 -0
  261. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/2170000.json +7 -0
  262. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/419200.json +7 -0
  263. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/500000.json +7 -0
  264. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/510000.json +7 -0
  265. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/520000.json +7 -0
  266. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/530000.json +7 -0
  267. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/540000.json +7 -0
  268. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/550000.json +7 -0
  269. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/560000.json +7 -0
  270. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/570000.json +7 -0
  271. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/580000.json +7 -0
  272. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/590000.json +7 -0
  273. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/600000.json +7 -0
  274. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/610000.json +7 -0
  275. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/620000.json +7 -0
  276. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/630000.json +7 -0
  277. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/640000.json +7 -0
  278. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/650000.json +7 -0
  279. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/660000.json +7 -0
  280. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/663150.json +8 -0
  281. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/670000.json +7 -0
  282. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/680000.json +7 -0
  283. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/690000.json +7 -0
  284. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/700000.json +7 -0
  285. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/710000.json +7 -0
  286. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/720000.json +7 -0
  287. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/730000.json +7 -0
  288. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/740000.json +7 -0
  289. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/750000.json +7 -0
  290. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/760000.json +7 -0
  291. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/770000.json +7 -0
  292. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/780000.json +7 -0
  293. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/790000.json +7 -0
  294. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/800000.json +7 -0
  295. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/810000.json +7 -0
  296. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/820000.json +7 -0
  297. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/830000.json +7 -0
  298. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/840000.json +7 -0
  299. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/850000.json +7 -0
  300. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/860000.json +7 -0
  301. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/870000.json +7 -0
  302. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/880000.json +7 -0
  303. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/890000.json +7 -0
  304. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/900000.json +7 -0
  305. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/910000.json +7 -0
  306. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/920000.json +7 -0
  307. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/930000.json +7 -0
  308. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/940000.json +7 -0
  309. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/950000.json +7 -0
  310. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/960000.json +7 -0
  311. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/970000.json +7 -0
  312. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/980000.json +7 -0
  313. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/mainnet/990000.json +7 -0
  314. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1000000.json +7 -0
  315. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1010000.json +7 -0
  316. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1020000.json +7 -0
  317. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1030000.json +7 -0
  318. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1040000.json +7 -0
  319. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1050000.json +7 -0
  320. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1060000.json +7 -0
  321. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1070000.json +7 -0
  322. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1080000.json +7 -0
  323. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1090000.json +7 -0
  324. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1100000.json +7 -0
  325. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1110000.json +7 -0
  326. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1120000.json +7 -0
  327. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1130000.json +7 -0
  328. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1140000.json +7 -0
  329. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1150000.json +7 -0
  330. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1160000.json +7 -0
  331. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1170000.json +7 -0
  332. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1180000.json +7 -0
  333. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1190000.json +7 -0
  334. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1200000.json +7 -0
  335. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1210000.json +7 -0
  336. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1220000.json +7 -0
  337. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1230000.json +7 -0
  338. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1240000.json +7 -0
  339. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1250000.json +7 -0
  340. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1260000.json +7 -0
  341. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1270000.json +7 -0
  342. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1280000.json +7 -0
  343. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1290000.json +7 -0
  344. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1300000.json +7 -0
  345. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1310000.json +7 -0
  346. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1320000.json +7 -0
  347. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1330000.json +7 -0
  348. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1340000.json +7 -0
  349. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1350000.json +7 -0
  350. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1360000.json +7 -0
  351. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1370000.json +7 -0
  352. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1380000.json +7 -0
  353. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1390000.json +7 -0
  354. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1400000.json +7 -0
  355. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1410000.json +7 -0
  356. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1420000.json +7 -0
  357. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1430000.json +7 -0
  358. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1440000.json +7 -0
  359. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1450000.json +7 -0
  360. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1460000.json +7 -0
  361. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1470000.json +7 -0
  362. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1480000.json +7 -0
  363. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1490000.json +7 -0
  364. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1500000.json +7 -0
  365. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1510000.json +7 -0
  366. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1520000.json +7 -0
  367. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1530000.json +7 -0
  368. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1540000.json +7 -0
  369. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1550000.json +7 -0
  370. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1560000.json +7 -0
  371. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1570000.json +7 -0
  372. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1580000.json +7 -0
  373. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1590000.json +7 -0
  374. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1600000.json +7 -0
  375. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1610000.json +7 -0
  376. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1620000.json +7 -0
  377. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1630000.json +7 -0
  378. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1640000.json +7 -0
  379. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1650000.json +7 -0
  380. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1660000.json +7 -0
  381. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1670000.json +7 -0
  382. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1680000.json +7 -0
  383. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1690000.json +7 -0
  384. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1700000.json +7 -0
  385. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1710000.json +7 -0
  386. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1720000.json +7 -0
  387. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1730000.json +7 -0
  388. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1740000.json +7 -0
  389. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1750000.json +7 -0
  390. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1760000.json +7 -0
  391. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1770000.json +7 -0
  392. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1780000.json +7 -0
  393. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1790000.json +7 -0
  394. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1800000.json +7 -0
  395. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1810000.json +7 -0
  396. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1820000.json +7 -0
  397. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1830000.json +7 -0
  398. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1840000.json +7 -0
  399. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1850000.json +7 -0
  400. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/1860000.json +7 -0
  401. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/280000.json +7 -0
  402. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/290000.json +7 -0
  403. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/300000.json +7 -0
  404. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/310000.json +7 -0
  405. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/320000.json +7 -0
  406. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/330000.json +7 -0
  407. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/340000.json +7 -0
  408. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/350000.json +7 -0
  409. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/360000.json +7 -0
  410. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/370000.json +7 -0
  411. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/380000.json +7 -0
  412. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/390000.json +7 -0
  413. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/400000.json +7 -0
  414. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/410000.json +7 -0
  415. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/420000.json +7 -0
  416. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/430000.json +7 -0
  417. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/440000.json +7 -0
  418. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/450000.json +7 -0
  419. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/460000.json +7 -0
  420. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/470000.json +7 -0
  421. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/480000.json +7 -0
  422. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/490000.json +7 -0
  423. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/500000.json +7 -0
  424. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/510000.json +7 -0
  425. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/520000.json +7 -0
  426. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/530000.json +7 -0
  427. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/540000.json +7 -0
  428. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/550000.json +7 -0
  429. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/560000.json +7 -0
  430. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/570000.json +7 -0
  431. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/580000.json +7 -0
  432. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/590000.json +7 -0
  433. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/600000.json +7 -0
  434. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/610000.json +7 -0
  435. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/620000.json +7 -0
  436. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/630000.json +7 -0
  437. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/640000.json +7 -0
  438. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/650000.json +7 -0
  439. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/660000.json +7 -0
  440. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/670000.json +7 -0
  441. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/680000.json +7 -0
  442. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/690000.json +7 -0
  443. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/700000.json +7 -0
  444. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/710000.json +7 -0
  445. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/720000.json +7 -0
  446. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/730000.json +7 -0
  447. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/740000.json +7 -0
  448. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/750000.json +7 -0
  449. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/760000.json +7 -0
  450. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/770000.json +7 -0
  451. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/780000.json +7 -0
  452. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/790000.json +7 -0
  453. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/800000.json +7 -0
  454. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/810000.json +7 -0
  455. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/820000.json +7 -0
  456. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/830000.json +7 -0
  457. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/840000.json +7 -0
  458. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/850000.json +7 -0
  459. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/860000.json +7 -0
  460. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/870000.json +7 -0
  461. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/880000.json +7 -0
  462. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/890000.json +7 -0
  463. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/900000.json +7 -0
  464. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/910000.json +7 -0
  465. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/920000.json +7 -0
  466. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/930000.json +7 -0
  467. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/940000.json +7 -0
  468. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/950000.json +7 -0
  469. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/960000.json +7 -0
  470. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/970000.json +7 -0
  471. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/980000.json +7 -0
  472. package/ios/ZCashLightClientKit/Resources/saplingtree-checkpoints/testnet/990000.json +7 -0
  473. package/ios/ZCashLightClientKit/Rust/ZcashRustBackend.swift +718 -0
  474. package/ios/ZCashLightClientKit/Rust/ZcashRustBackendWelding.swift +389 -0
  475. package/ios/ZCashLightClientKit/Rust/zcashlc.h +385 -0
  476. package/ios/ZCashLightClientKit/Service/LightWalletGRPCService.swift +551 -0
  477. package/ios/ZCashLightClientKit/Service/LightWalletService.swift +214 -0
  478. package/ios/ZCashLightClientKit/Service/Model/ZcashCompactBlock.swift +46 -0
  479. package/ios/ZCashLightClientKit/Service/ProtoBuf/Extensions/Protocolbuffer+Extensions.swift +50 -0
  480. package/ios/ZCashLightClientKit/Service/ProtoBuf/compact_formats.pb.swift +332 -0
  481. package/ios/ZCashLightClientKit/Service/ProtoBuf/proto/compact_formats.proto +56 -0
  482. package/ios/ZCashLightClientKit/Service/ProtoBuf/proto/service.proto +180 -0
  483. package/ios/ZCashLightClientKit/Service/ProtoBuf/service.grpc.swift +383 -0
  484. package/ios/ZCashLightClientKit/Service/ProtoBuf/service.pb.swift +1173 -0
  485. package/ios/ZCashLightClientKit/Synchronizer/SDKSynchronizer.swift +929 -0
  486. package/ios/ZCashLightClientKit/Synchronizer.swift +430 -0
  487. package/ios/ZCashLightClientKit/Tool/DerivationTool.swift +344 -0
  488. package/ios/ZCashLightClientKit/Transaction/PersistentTransactionManager.swift +339 -0
  489. package/ios/ZCashLightClientKit/Transaction/TransactionEncoder.swift +116 -0
  490. package/ios/ZCashLightClientKit/Transaction/TransactionManager.swift +42 -0
  491. package/ios/ZCashLightClientKit/Transaction/WalletTransactionEncoder.swift +216 -0
  492. package/ios/ZCashLightClientKit/Utils/Bundle+module.swift +30 -0
  493. package/ios/ZCashLightClientKit/Utils/LoggingProxy.swift +47 -0
  494. package/ios/ZCashLightClientKit/Utils/SaplingParameterDownloader.swift +124 -0
  495. package/ios/libzcashlc.xcframework/Info.plist +40 -0
  496. package/ios/libzcashlc.xcframework/ios-arm64/libzcashlc.a +0 -0
  497. package/ios/libzcashlc.xcframework/ios-arm64_x86_64-simulator/libzcashlc.a +0 -0
  498. package/ios/react-native-zcash-Bridging-Header.h +2 -0
  499. package/ios/react-native-zcash.xcodeproj/project.pbxproj +1 -0
  500. package/lib/scripts/copyCheckpoints.d.ts +5 -0
  501. package/lib/scripts/updateCheckpoints.d.ts +1 -0
  502. package/lib/scripts/updateSources.d.ts +1 -0
  503. package/package.json +21 -32
  504. package/react-native-zcash.podspec +17 -7
  505. package/ios/RNZcash-Bridging-Header.h +0 -6
  506. package/ios/RNZcash.xcodeproj/project.pbxproj +0 -271
  507. package/ios/RNZcash.xcworkspace/contents.xcworkspacedata +0 -7
  508. package/ios/RNZcash.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  509. package/lib/src/browser.d.ts +0 -0
  510. package/lib/src/index.d.ts +0 -0
  511. package/lib/test/test.test.d.ts +0 -0
  512. package/src/browser.ts +0 -36
  513. package/src/index.flow.js +0 -168
  514. package/src/index.ts +0 -1
@@ -0,0 +1,238 @@
1
+ //
2
+ // CompactBlockProcessingOperation.swift
3
+ // ZcashLightClientKit
4
+ //
5
+ // Created by Francisco Gindre on 10/15/19.
6
+ // Copyright © 2019 Electric Coin Company. All rights reserved.
7
+ //
8
+
9
+ import Foundation
10
+
11
+ class CompactBlockScanningOperation: ZcashOperation {
12
+ override var isConcurrent: Bool { false }
13
+
14
+ override var isAsynchronous: Bool { false }
15
+
16
+ var rustBackend: ZcashRustBackendWelding.Type
17
+
18
+ private var cacheDb: URL
19
+ private var dataDb: URL
20
+ private var limit: UInt32
21
+ private var network: NetworkType
22
+ init(rustWelding: ZcashRustBackendWelding.Type, cacheDb: URL, dataDb: URL, limit: UInt32 = 0, networkType: NetworkType) {
23
+ rustBackend = rustWelding
24
+ self.cacheDb = cacheDb
25
+ self.dataDb = dataDb
26
+ self.limit = limit
27
+ self.network = networkType
28
+ super.init()
29
+ }
30
+
31
+ override func main() {
32
+ guard !shouldCancel() else {
33
+ cancel()
34
+ return
35
+ }
36
+ self.startedHandler?()
37
+ guard self.rustBackend.scanBlocks(dbCache: self.cacheDb, dbData: self.dataDb, limit: limit, networkType: network) else {
38
+ self.error = self.rustBackend.lastError() ?? ZcashOperationError.unknown
39
+ LoggerProxy.debug("block scanning failed with error: \(String(describing: self.error))")
40
+ self.fail()
41
+ return
42
+ }
43
+ }
44
+ }
45
+
46
+ public enum SDKMetrics {
47
+ struct BlockMetricReport {
48
+ var startHeight: BlockHeight
49
+ var targetHeight: BlockHeight
50
+ var duration: TimeInterval
51
+ var task: TaskReported
52
+ }
53
+
54
+ enum TaskReported: String {
55
+ case scanBlocks
56
+ }
57
+
58
+ static let startBlockHeightKey = "SDKMetrics.startBlockHeightKey"
59
+ static let targetBlockHeightKey = "SDKMetrics.targetBlockHeightKey"
60
+ static let progressHeightKey = "SDKMetrics.progressHeight"
61
+ static let startDateKey = "SDKMetrics.startDateKey"
62
+ static let endDateKey = "SDKMetrics.endDateKey"
63
+ static let taskReportedKey = "SDKMetrics.taskReported"
64
+ static let notificationName = Notification.Name("SDKMetrics.Notification")
65
+
66
+ static func blockReportFromNotification(_ notification: Notification) -> BlockMetricReport? {
67
+ guard
68
+ notification.name == notificationName,
69
+ let info = notification.userInfo,
70
+ let startHeight = info[startBlockHeightKey] as? BlockHeight,
71
+ let targetHeight = info[targetBlockHeightKey] as? BlockHeight,
72
+ let task = info[taskReportedKey] as? TaskReported,
73
+ let startDate = info[startDateKey] as? Date,
74
+ let endDate = info[endDateKey] as? Date
75
+ else {
76
+ return nil
77
+ }
78
+
79
+ return BlockMetricReport(
80
+ startHeight: startHeight,
81
+ targetHeight: targetHeight,
82
+ duration: abs(
83
+ startDate.timeIntervalSinceReferenceDate - endDate.timeIntervalSinceReferenceDate
84
+ ),
85
+ task: task
86
+ )
87
+ }
88
+
89
+ static func progressReportNotification(
90
+ progress: BlockProgress,
91
+ start: Date,
92
+ end: Date,
93
+ task: SDKMetrics.TaskReported
94
+ ) -> Notification {
95
+ var notification = Notification(name: notificationName)
96
+ notification.userInfo = [
97
+ startBlockHeightKey: progress.startHeight,
98
+ targetBlockHeightKey: progress.targetHeight,
99
+ progressHeightKey: progress.progressHeight,
100
+ startDateKey: start,
101
+ endDateKey: end,
102
+ taskReportedKey: task
103
+ ]
104
+
105
+ return notification
106
+ }
107
+ }
108
+
109
+ extension String.StringInterpolation {
110
+ mutating func appendInterpolation(_ value: SDKMetrics.BlockMetricReport) {
111
+ let literal = "\(value.task) - \(abs(value.startHeight - value.targetHeight)) processed on \(value.duration) seconds"
112
+ appendLiteral(literal)
113
+ }
114
+ }
115
+
116
+ class CompactBlockBatchScanningOperation: ZcashOperation {
117
+ override var isConcurrent: Bool { false }
118
+ override var isAsynchronous: Bool { false }
119
+
120
+ var rustBackend: ZcashRustBackendWelding.Type
121
+
122
+ private var cacheDb: URL
123
+ private var dataDb: URL
124
+ private var batchSize: UInt32
125
+ private var blockRange: CompactBlockRange
126
+ private var transactionRepository: TransactionRepository
127
+ private var network: NetworkType
128
+
129
+ private weak var progressDelegate: CompactBlockProgressDelegate?
130
+
131
+ init(
132
+ rustWelding: ZcashRustBackendWelding.Type,
133
+ cacheDb: URL,
134
+ dataDb: URL,
135
+ transactionRepository: TransactionRepository,
136
+ range: CompactBlockRange,
137
+ batchSize: UInt32 = 100,
138
+ networkType: NetworkType,
139
+ progressDelegate: CompactBlockProgressDelegate? = nil
140
+ ) {
141
+ rustBackend = rustWelding
142
+ self.cacheDb = cacheDb
143
+ self.dataDb = dataDb
144
+ self.transactionRepository = transactionRepository
145
+ self.blockRange = range
146
+ self.batchSize = batchSize
147
+ self.progressDelegate = progressDelegate
148
+ self.network = networkType
149
+ super.init()
150
+ }
151
+
152
+ override func main() {
153
+ guard !shouldCancel() else {
154
+ cancel()
155
+ return
156
+ }
157
+
158
+ self.startedHandler?()
159
+
160
+ do {
161
+ if batchSize == 0 {
162
+ let scanStartTime = Date()
163
+ guard self.rustBackend.scanBlocks(dbCache: self.cacheDb, dbData: self.dataDb, limit: batchSize, networkType: network) else {
164
+ self.scanFailed(self.rustBackend.lastError() ?? ZcashOperationError.unknown)
165
+ return
166
+ }
167
+ let scanFinishTime = Date()
168
+ NotificationCenter.default.post(
169
+ SDKMetrics.progressReportNotification(
170
+ progress: BlockProgress(
171
+ startHeight: self.blockRange.lowerBound,
172
+ targetHeight: self.blockRange.upperBound,
173
+ progressHeight: self.blockRange.upperBound
174
+ ),
175
+ start: scanStartTime,
176
+ end: scanFinishTime,
177
+ task: .scanBlocks
178
+ )
179
+ )
180
+ let seconds = scanFinishTime.timeIntervalSinceReferenceDate - scanStartTime.timeIntervalSinceReferenceDate
181
+ LoggerProxy.debug("Scanned \(blockRange.count) blocks in \(seconds) seconds")
182
+ } else {
183
+ let scanStartHeight = try transactionRepository.lastScannedHeight()
184
+ let targetScanHeight = blockRange.upperBound
185
+
186
+ var scannedNewBlocks = false
187
+ var lastScannedHeight = scanStartHeight
188
+
189
+ repeat {
190
+ guard !shouldCancel() else {
191
+ cancel()
192
+ return
193
+ }
194
+ let previousScannedHeight = lastScannedHeight
195
+ let scanStartTime = Date()
196
+ guard self.rustBackend.scanBlocks(
197
+ dbCache: self.cacheDb,
198
+ dbData: self.dataDb,
199
+ limit: batchSize,
200
+ networkType: network
201
+ ) else {
202
+ self.scanFailed(self.rustBackend.lastError() ?? ZcashOperationError.unknown)
203
+ return
204
+ }
205
+ let scanFinishTime = Date()
206
+
207
+ lastScannedHeight = try transactionRepository.lastScannedHeight()
208
+
209
+ scannedNewBlocks = previousScannedHeight != lastScannedHeight
210
+ if scannedNewBlocks {
211
+ let progress = BlockProgress(startHeight: scanStartHeight, targetHeight: targetScanHeight, progressHeight: lastScannedHeight)
212
+ progressDelegate?.progressUpdated(.scan(progress))
213
+ NotificationCenter.default.post(
214
+ SDKMetrics.progressReportNotification(
215
+ progress: progress,
216
+ start: scanStartTime,
217
+ end: scanFinishTime,
218
+ task: .scanBlocks
219
+ )
220
+ )
221
+
222
+ let heightCount = lastScannedHeight - previousScannedHeight
223
+ let seconds = scanFinishTime.timeIntervalSinceReferenceDate - scanStartTime.timeIntervalSinceReferenceDate
224
+ LoggerProxy.debug("Scanned \(heightCount) blocks in \(seconds) seconds")
225
+ }
226
+ } while !self.isCancelled && scannedNewBlocks && lastScannedHeight < targetScanHeight
227
+ }
228
+ } catch {
229
+ scanFailed(error)
230
+ }
231
+ }
232
+
233
+ func scanFailed(_ error: Error) {
234
+ self.error = error
235
+ LoggerProxy.debug("block scanning failed with error: \(String(describing: self.error))")
236
+ self.fail()
237
+ }
238
+ }
@@ -0,0 +1,66 @@
1
+ //
2
+ // CompactBlockValidationInformation.swift
3
+ // ZcashLightClientKit
4
+ //
5
+ // Created by Francisco Gindre on 10/30/19.
6
+ // Copyright © 2019 Electric Coin Company. All rights reserved.
7
+ //
8
+
9
+ import Foundation
10
+
11
+ enum CompactBlockValidationError: Error {
12
+ case validationFailed(height: BlockHeight)
13
+ case failedWithError(_ error: Error?)
14
+ }
15
+ class CompactBlockValidationOperation: ZcashOperation {
16
+ override var isConcurrent: Bool { false }
17
+
18
+ override var isAsynchronous: Bool { false }
19
+
20
+ var rustBackend: ZcashRustBackendWelding.Type
21
+
22
+ private var cacheDb: URL
23
+ private var dataDb: URL
24
+ private var network: NetworkType
25
+
26
+ init(
27
+ rustWelding: ZcashRustBackendWelding.Type,
28
+ cacheDb: URL,
29
+ dataDb: URL,
30
+ networkType: NetworkType
31
+ ) {
32
+ rustBackend = rustWelding
33
+ self.cacheDb = cacheDb
34
+ self.dataDb = dataDb
35
+ self.network = networkType
36
+ super.init()
37
+ }
38
+
39
+ override func main() {
40
+ guard !shouldCancel() else {
41
+ cancel()
42
+ return
43
+ }
44
+
45
+ self.startedHandler?()
46
+
47
+ let result = self.rustBackend.validateCombinedChain(dbCache: cacheDb, dbData: dataDb, networkType: self.network)
48
+
49
+ switch result {
50
+ case 0:
51
+ let error = CompactBlockValidationError.failedWithError(rustBackend.lastError())
52
+ self.error = error
53
+ LoggerProxy.debug("block scanning failed with error: \(String(describing: self.error))")
54
+ self.fail(error: error)
55
+
56
+ case ZcashRustBackendWeldingConstants.validChain:
57
+ break
58
+
59
+ default:
60
+ let error = CompactBlockValidationError.validationFailed(height: BlockHeight(result))
61
+ self.error = error
62
+ LoggerProxy.debug("block scanning failed with error: \(String(describing: self.error))")
63
+ self.fail(error: error)
64
+ }
65
+ }
66
+ }
@@ -0,0 +1,103 @@
1
+ //
2
+ // FetchUnspentTxOutputsOperation.swift
3
+ // ZcashLightClientKit
4
+ //
5
+ // Created by Francisco Gindre on 6/2/21.
6
+ //
7
+
8
+ import Foundation
9
+
10
+ class FetchUnspentTxOutputsOperation: ZcashOperation {
11
+ enum FetchUTXOError: Error {
12
+ case clearingFailed(_ error: Error?)
13
+ case fetchFailed(error: Error)
14
+ }
15
+
16
+ override var isConcurrent: Bool { false }
17
+ override var isAsynchronous: Bool { false }
18
+
19
+ var fetchedUTXOsHandler: ((RefreshedUTXOs) -> Void)?
20
+
21
+ private var accountRepository: AccountRepository
22
+ private var downloader: CompactBlockDownloading
23
+ private var rustbackend: ZcashRustBackendWelding.Type
24
+ private var startHeight: BlockHeight
25
+ private var network: NetworkType
26
+ private var dataDb: URL
27
+
28
+ init(
29
+ accountRepository: AccountRepository,
30
+ downloader: CompactBlockDownloading,
31
+ rustbackend: ZcashRustBackendWelding.Type,
32
+ dataDb: URL,
33
+ startHeight: BlockHeight,
34
+ networkType: NetworkType
35
+ ) {
36
+ self.dataDb = dataDb
37
+ self.accountRepository = accountRepository
38
+ self.downloader = downloader
39
+ self.rustbackend = rustbackend
40
+ self.startHeight = startHeight
41
+ self.network = networkType
42
+ }
43
+
44
+ override func main() {
45
+ guard !shouldCancel() else {
46
+ cancel()
47
+ return
48
+ }
49
+
50
+ self.startedHandler?()
51
+
52
+ do {
53
+ let tAddresses = try accountRepository.getAll().map({ $0.transparentAddress })
54
+ do {
55
+ for tAddress in tAddresses {
56
+ guard try self.rustbackend.clearUtxos(
57
+ dbData: dataDb,
58
+ address: tAddress,
59
+ sinceHeight: startHeight - 1,
60
+ networkType: network
61
+ ) >= 0 else {
62
+ throw rustbackend.lastError() ?? RustWeldingError.genericError(message: "attempted to clear utxos but -1 was returned")
63
+ }
64
+ }
65
+ } catch {
66
+ throw FetchUTXOError.clearingFailed(error)
67
+ }
68
+
69
+ let utxos = try downloader.fetchUnspentTransactionOutputs(tAddresses: tAddresses, startHeight: startHeight)
70
+
71
+ let result = storeUTXOs(utxos, in: dataDb)
72
+
73
+ self.fetchedUTXOsHandler?(result)
74
+ } catch {
75
+ self.fail(error: error)
76
+ }
77
+ }
78
+
79
+ private func storeUTXOs(_ utxos: [UnspentTransactionOutputEntity], in dataDb: URL) -> RefreshedUTXOs {
80
+ var refreshed: [UnspentTransactionOutputEntity] = []
81
+ var skipped: [UnspentTransactionOutputEntity] = []
82
+
83
+ for utxo in utxos {
84
+ do {
85
+ try self.rustbackend.putUnspentTransparentOutput(
86
+ dbData: dataDb,
87
+ address: utxo.address,
88
+ txid: utxo.txid.bytes,
89
+ index: utxo.index,
90
+ script: utxo.script.bytes,
91
+ value: Int64(utxo.valueZat),
92
+ height: utxo.height,
93
+ networkType: network
94
+ ) ? refreshed.append(utxo) : skipped.append(utxo)
95
+ } catch {
96
+ LoggerProxy.error("failed to put utxo - error: \(error)")
97
+ skipped.append(utxo)
98
+ }
99
+ }
100
+
101
+ return (inserted: refreshed, skipped: skipped)
102
+ }
103
+ }
@@ -0,0 +1,58 @@
1
+ //
2
+ // FigureNextBatchOperation.swift
3
+ // ZcashLightClientKit
4
+ //
5
+ // Created by Francisco Gindre on 6/17/21.
6
+ //
7
+
8
+ import Foundation
9
+
10
+ class FigureNextBatchOperation: ZcashOperation {
11
+ enum NextState {
12
+ case finishProcessing(height: BlockHeight)
13
+ case processNewBlocks(range: CompactBlockRange)
14
+ case wait(latestHeight: BlockHeight, latestDownloadHeight: BlockHeight)
15
+ }
16
+
17
+ private var service: LightWalletService
18
+ private var downloader: CompactBlockDownloading
19
+ private var config: CompactBlockProcessor.Configuration
20
+ private var rustBackend: ZcashRustBackendWelding.Type
21
+ private(set) var result: NextState?
22
+
23
+ required init(
24
+ downloader: CompactBlockDownloading,
25
+ service: LightWalletService,
26
+ config: CompactBlockProcessor.Configuration,
27
+ rustBackend: ZcashRustBackendWelding.Type
28
+ ) {
29
+ self.service = service
30
+ self.config = config
31
+ self.downloader = downloader
32
+ self.rustBackend = rustBackend
33
+
34
+ super.init()
35
+
36
+ self.name = "Next Batch Operation"
37
+ }
38
+
39
+ override func main() {
40
+ guard !shouldCancel() else {
41
+ cancel()
42
+ return
43
+ }
44
+
45
+ self.startedHandler?()
46
+
47
+ do {
48
+ result = try CompactBlockProcessor.NextStateHelper.nextState(
49
+ service: self.service,
50
+ downloader: self.downloader,
51
+ config: self.config,
52
+ rustBackend: self.rustBackend
53
+ )
54
+ } catch {
55
+ self.fail(error: error)
56
+ }
57
+ }
58
+ }
@@ -0,0 +1,68 @@
1
+ //
2
+ // ZcashOperation.swift
3
+ // ZcashLightClientKit
4
+ //
5
+ // Created by Francisco Gindre on 10/27/19.
6
+ // Copyright © 2019 Electric Coin Company. All rights reserved.
7
+ //
8
+
9
+ import Foundation
10
+
11
+ typealias ZcashOperationCompletionBlock = (_ finished: Bool, _ cancelled: Bool) -> Void
12
+ typealias ZcashOperationStartedBlock = () -> Void
13
+ typealias ZcashOperationErrorBlock = (_ error: Error) -> Void
14
+
15
+ enum ZcashOperationError: Error {
16
+ case unknown
17
+ }
18
+
19
+ class ZcashOperation: Operation {
20
+ var error: Error?
21
+ var startedHandler: ZcashOperationStartedBlock?
22
+ var errorHandler: ZcashOperationErrorBlock?
23
+ var completionHandler: ZcashOperationCompletionBlock?
24
+ var handlerDispatchQueue = DispatchQueue.main
25
+
26
+ override init() {
27
+ super.init()
28
+
29
+ completionBlock = { [weak self] in
30
+ guard let self = self, let handler = self.completionHandler else { return }
31
+
32
+ handler(self.isFinished, self.isCancelled)
33
+ }
34
+ }
35
+
36
+ convenience init(completionDispatchQueue: DispatchQueue = DispatchQueue.main) {
37
+ self.init()
38
+ self.handlerDispatchQueue = completionDispatchQueue
39
+ }
40
+
41
+ func shouldCancel() -> Bool {
42
+ self.error != nil || isCancelled || dependencyCancelled()
43
+ }
44
+
45
+ func dependencyCancelled() -> Bool {
46
+ self.dependencies.first { $0.isCancelled } != nil
47
+ }
48
+
49
+ func fail(error: Error? = nil) {
50
+ defer {
51
+ self.cancel()
52
+ }
53
+
54
+ if let error = error {
55
+ self.error = error
56
+ }
57
+ LoggerProxy.debug("\(self) failed")
58
+
59
+ guard let errorHandler = self.errorHandler else {
60
+ return
61
+ }
62
+
63
+ self.handlerDispatchQueue.async { [weak self] in
64
+ let error = error ?? (self?.error ?? ZcashOperationError.unknown)
65
+ errorHandler(error)
66
+ }
67
+ }
68
+ }
@@ -0,0 +1,58 @@
1
+ //
2
+ // WalletBirthday+Constants.swift
3
+ // ZcashLightClientKit
4
+ //
5
+ // Created by Francisco Gindre on 7/28/21.
6
+ //
7
+
8
+ import Foundation
9
+
10
+ public extension WalletBirthday {
11
+ static func birthday(with height: BlockHeight, network: ZcashNetwork) -> WalletBirthday {
12
+ switch network.networkType {
13
+ case .mainnet:
14
+ return birthday(with: height, checkpointDirectory: Self.mainnetCheckpointDirectory) ?? .mainnetMin
15
+ case .testnet:
16
+ return birthday(with: height, checkpointDirectory: Self.testnetCheckpointDirectory) ?? .testnetMin
17
+ }
18
+ }
19
+ }
20
+
21
+ extension WalletBirthday {
22
+ static func birthday(with height: BlockHeight, checkpointDirectory: URL) -> WalletBirthday? {
23
+ return bestCheckpointHeight(for: height, checkpointDirectory: checkpointDirectory)
24
+ .flatMap { checkpoint(height: $0, directory: checkpointDirectory) }
25
+ }
26
+
27
+ private static func bestCheckpointHeight(for height: BlockHeight, checkpointDirectory: URL) -> Int? {
28
+ guard let checkPointURLs = try? FileManager.default.contentsOfDirectory(
29
+ at: checkpointDirectory,
30
+ includingPropertiesForKeys: nil,
31
+ options: .skipsHiddenFiles
32
+ ) else {
33
+ return nil
34
+ }
35
+
36
+ return checkPointURLs
37
+ .map { $0.deletingPathExtension() }
38
+ .map(\.lastPathComponent)
39
+ .compactMap(Int.init)
40
+ .filter { $0 <= height }
41
+ .sorted()
42
+ .last
43
+ }
44
+
45
+ private static func checkpoint(height: BlockHeight, directory checkpointDirectory: URL) -> WalletBirthday? {
46
+ let url = checkpointDirectory
47
+ .appendingPathComponent(String(height))
48
+ .appendingPathExtension("json")
49
+
50
+ return try? checkpoint(at: url)
51
+ }
52
+
53
+ private static func checkpoint(at url: URL) throws -> WalletBirthday {
54
+ let data = try Data(contentsOf: url)
55
+ let checkpoint = try JSONDecoder().decode(WalletBirthday.self, from: data)
56
+ return checkpoint
57
+ }
58
+ }
@@ -0,0 +1,20 @@
1
+ //
2
+ // WalletBirthday+mainnet.swift
3
+ // ZcashLightClientKit
4
+ //
5
+ // Created by Francisco Gindre on 7/28/21.
6
+ //
7
+ // swiftlint:disable function_body_length line_length cyclomatic_complexity
8
+ import Foundation
9
+
10
+ extension WalletBirthday {
11
+ static let mainnetMin = WalletBirthday(
12
+ height: 419_200,
13
+ hash: "00000000025a57200d898ac7f21e26bf29028bbe96ec46e05b2c17cc9db9e4f3",
14
+ time: 1540779337,
15
+ tree: "000000"
16
+ )
17
+
18
+ static let mainnetCheckpointDirectory = Bundle.main.url(forResource: "zcash-mainnet", withExtension: "bundle")!
19
+
20
+ }
@@ -0,0 +1,20 @@
1
+ //
2
+ // WalletBirthday+testnet.swift
3
+ // ZcashLightClientKit
4
+ //
5
+ // Created by Francisco Gindre on 7/28/21.
6
+ //
7
+ // swiftlint:disable line_length cyclomatic_complexity function_body_length
8
+ import Foundation
9
+
10
+ extension WalletBirthday {
11
+ static let testnetMin = WalletBirthday(
12
+ height: 280000,
13
+ hash: "000420e7fcc3a49d729479fb0b560dd7b8617b178a08e9e389620a9d1dd6361a",
14
+ time: 1535262293,
15
+ tree: "000000"
16
+ )
17
+
18
+ static let testnetCheckpointDirectory = Bundle.main.url(forResource: "zcash-testnet", withExtension: "bundle")!
19
+
20
+ }