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,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
+ }
@@ -0,0 +1,73 @@
1
+ //
2
+ // SQLDatabase.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
+ class StorageManager {
13
+ static var shared = StorageManager()
14
+
15
+ private var readOnly: [URL: Connection] = [:]
16
+ private var readWrite: [URL: Connection] = [:]
17
+
18
+ init() {}
19
+
20
+ func connection(at url: URL, readOnly: Bool = false) throws -> Connection {
21
+ readOnly ? try readOnlyConnection(at: url) : try readWriteConnection(at: url)
22
+ }
23
+
24
+ private func readOnlyConnection(at url: URL) throws -> Connection {
25
+ if let readOnlyConnection = readOnly[url] {
26
+ return readOnlyConnection
27
+ }
28
+
29
+ let readOnlyConnection = try Connection.customConection(at: url)
30
+ readOnly[url] = readOnlyConnection
31
+
32
+ return readOnlyConnection
33
+ }
34
+
35
+ private func readWriteConnection(at url: URL) throws -> Connection {
36
+ if let readWriteConnection = readWrite[url] {
37
+ return readWriteConnection
38
+ }
39
+
40
+ let readWriteConnection = try Connection.customConection(at: url)
41
+ readWrite[url] = readWriteConnection
42
+
43
+ return readWriteConnection
44
+ }
45
+ }
46
+
47
+ private extension Connection {
48
+ static func customConection(at url: URL, readonly: Bool = false) throws -> Connection {
49
+ let conn = try Connection(url.absoluteString, readonly: readonly)
50
+ try conn.run("PRAGMA journal_mode = TRUNCATE;")
51
+ return conn
52
+ }
53
+ }
54
+
55
+ class SimpleConnectionProvider: ConnectionProvider {
56
+ var path: String
57
+ var readonly: Bool
58
+ var db: Connection?
59
+
60
+ init(path: String, readonly: Bool = false) {
61
+ self.path = path
62
+ self.readonly = readonly
63
+ }
64
+
65
+ func connection() throws -> Connection {
66
+ guard let conn = db else {
67
+ let conn = try Connection(path, readonly: readonly)
68
+ self.db = conn
69
+ return conn
70
+ }
71
+ return conn
72
+ }
73
+ }
@@ -0,0 +1,240 @@
1
+ //
2
+ // BlockDownloader.swift
3
+ // ZcashLightClientKit
4
+ //
5
+ // Created by Francisco Gindre on 17/09/2019.
6
+ // Copyright © 2019 Electric Coin Company. All rights reserved.
7
+ //
8
+
9
+ import Foundation
10
+
11
+ enum CompactBlockDownloadError: Error {
12
+ case timeout
13
+ case generalError(error: Error)
14
+ }
15
+ /**
16
+ Represents what a compact block downloaded should provide to its clients
17
+ */
18
+ public protocol CompactBlockDownloading {
19
+ /**
20
+ Downloads and stores the given block range.
21
+ Non-Blocking
22
+ */
23
+ func downloadBlockRange(
24
+ _ heightRange: CompactBlockRange,
25
+ completion: @escaping (Error?) -> Void
26
+ )
27
+
28
+ /**
29
+ Remove newer blocks and go back to the given height
30
+ - Parameters:
31
+ - height: the given height to rewind to
32
+ - completion: block to be executed after completing rewind
33
+ */
34
+ func rewind(to height: BlockHeight, completion: @escaping (Error?) -> Void)
35
+
36
+ /**
37
+ returns the height of the latest compact block stored locally
38
+ BlockHeight.empty() if no blocks are stored yet
39
+ non-blocking
40
+ */
41
+ func lastDownloadedBlockHeight(result: @escaping (Result<BlockHeight, Error>) -> Void)
42
+
43
+ /**
44
+ Returns the last height on the blockchain
45
+ Non-blocking
46
+ */
47
+ func latestBlockHeight(result: @escaping (Result<BlockHeight, Error>) -> Void)
48
+
49
+ /**
50
+ Downloads and stores the given block range.
51
+ Blocking
52
+ */
53
+ func downloadBlockRange(_ range: CompactBlockRange) throws
54
+
55
+ /**
56
+ Restore the download progress up to the given height.
57
+ */
58
+ func rewind(to height: BlockHeight) throws
59
+
60
+ /**
61
+ Returns the height of the latest compact block stored locally.
62
+ BlockHeight.empty() if no blocks are stored yet
63
+ Blocking
64
+ */
65
+ func lastDownloadedBlockHeight() throws -> BlockHeight
66
+
67
+ /**
68
+ Returns the latest block height
69
+ Blocking
70
+ */
71
+ func latestBlockHeight() throws -> BlockHeight
72
+
73
+ /**
74
+ Gets the transaction for the Id given
75
+ - Parameter txId: Data representing the transaction Id
76
+ - Returns: a transaction entity with the requested transaction
77
+ - Throws: An error if the fetch failed
78
+ */
79
+ func fetchTransaction(txId: Data) throws -> TransactionEntity
80
+
81
+ /**
82
+ Gets the transaction for the Id given
83
+ - Parameter txId: Data representing the transaction Id
84
+ - Parameter result: a handler for the result of the operation
85
+ */
86
+ func fetchTransaction(txId: Data, result: @escaping (Result<TransactionEntity, Error>) -> Void)
87
+
88
+ func fetchUnspentTransactionOutputs(tAddress: String, startHeight: BlockHeight) throws -> [UnspentTransactionOutputEntity]
89
+
90
+ func fetchUnspentTransactionOutputs(tAddress: String, startHeight: BlockHeight, result: @escaping (Result<[UnspentTransactionOutputEntity], Error>) -> Void)
91
+
92
+ func fetchUnspentTransactionOutputs(tAddresses: [String], startHeight: BlockHeight) throws -> [UnspentTransactionOutputEntity]
93
+
94
+ func fetchUnspentTransactionOutputs(tAddresses: [String], startHeight: BlockHeight, result: @escaping (Result<[UnspentTransactionOutputEntity], Error>) -> Void)
95
+
96
+ func closeConnection()
97
+ }
98
+
99
+ /**
100
+ Serves as a source of compact blocks received from the light wallet server. Once started, it will use the given
101
+ lightwallet service to request all the appropriate blocks and compact block store to persist them. By delegating to
102
+ these dependencies, the downloader remains agnostic to the particular implementation of how to retrieve and store
103
+ data; although, by default the SDK uses gRPC and SQL.
104
+ - Property lightwalletService: the service used for requesting compact blocks
105
+ - Property storage: responsible for persisting the compact blocks that are received
106
+ */
107
+ class CompactBlockDownloader {
108
+ var lightwalletService: LightWalletService
109
+ private(set) var storage: CompactBlockRepository
110
+
111
+ init(service: LightWalletService, storage: CompactBlockRepository) {
112
+ self.lightwalletService = service
113
+ self.storage = storage
114
+ }
115
+ }
116
+
117
+ extension CompactBlockDownloader: CompactBlockDownloading {
118
+ func closeConnection() {
119
+ lightwalletService.closeConnection()
120
+ }
121
+
122
+ func fetchUnspentTransactionOutputs(tAddresses: [String], startHeight: BlockHeight) throws -> [UnspentTransactionOutputEntity] {
123
+ try lightwalletService.fetchUTXOs(for: tAddresses, height: startHeight)
124
+ }
125
+
126
+ func fetchUnspentTransactionOutputs(
127
+ tAddresses: [String],
128
+ startHeight: BlockHeight,
129
+ result: @escaping (Result<[UnspentTransactionOutputEntity], Error>) -> Void
130
+ ) {
131
+ lightwalletService.fetchUTXOs(for: tAddresses, height: startHeight) { fetchResult in
132
+ switch fetchResult {
133
+ case .success(let utxos):
134
+ result(.success(utxos))
135
+ case .failure(let error):
136
+ result(.failure(error))
137
+ }
138
+ }
139
+ }
140
+
141
+ func fetchUnspentTransactionOutputs(tAddress: String, startHeight: BlockHeight) throws -> [UnspentTransactionOutputEntity] {
142
+ try lightwalletService.fetchUTXOs(for: tAddress, height: startHeight)
143
+ }
144
+
145
+ func fetchUnspentTransactionOutputs(tAddress: String, startHeight: BlockHeight, result: @escaping (Result<[UnspentTransactionOutputEntity], Error>) -> Void) {
146
+ lightwalletService.fetchUTXOs(for: tAddress, height: startHeight) { fetchResult in
147
+ switch fetchResult {
148
+ case .success(let utxos):
149
+ result(.success(utxos))
150
+ case .failure(let error):
151
+ result(.failure(error))
152
+ }
153
+ }
154
+ }
155
+
156
+ func latestBlockHeight(result: @escaping (Result<BlockHeight, Error>) -> Void) {
157
+ lightwalletService.latestBlockHeight { fetchResult in
158
+ switch fetchResult {
159
+ case .failure(let error):
160
+ result(.failure(error))
161
+ case .success(let height):
162
+ result(.success(height))
163
+ }
164
+ }
165
+ }
166
+
167
+ func latestBlockHeight() throws -> BlockHeight {
168
+ try lightwalletService.latestBlockHeight()
169
+ }
170
+
171
+ /**
172
+ Downloads and stores the given block range.
173
+ Non-Blocking
174
+ */
175
+ func downloadBlockRange(
176
+ _ heightRange: CompactBlockRange,
177
+ completion: @escaping (Error?) -> Void
178
+ ) {
179
+ lightwalletService.blockRange(heightRange) { [weak self] result in
180
+ guard let self = self else {
181
+ return
182
+ }
183
+
184
+ switch result {
185
+ case .failure(let error):
186
+ completion(error)
187
+ case .success(let compactBlocks):
188
+ self.storage.write(blocks: compactBlocks) { storeError in
189
+ completion(storeError)
190
+ }
191
+ }
192
+ }
193
+ }
194
+
195
+ func downloadBlockRange(_ range: CompactBlockRange) throws {
196
+ let blocks = try lightwalletService.blockRange(range)
197
+ try storage.write(blocks: blocks)
198
+ }
199
+
200
+ func rewind(to height: BlockHeight, completion: @escaping (Error?) -> Void) {
201
+ storage.rewind(to: height) { e in
202
+ completion(e)
203
+ }
204
+ }
205
+
206
+ func lastDownloadedBlockHeight(result: @escaping (Result<BlockHeight, Error>) -> Void) {
207
+ storage.latestHeight { heightResult in
208
+ switch heightResult {
209
+ case .failure(let e):
210
+ result(.failure(CompactBlockDownloadError.generalError(error: e)))
211
+ return
212
+ case .success(let height):
213
+ result(.success(height))
214
+ }
215
+ }
216
+ }
217
+
218
+ func rewind(to height: BlockHeight) throws {
219
+ try self.storage.rewind(to: height)
220
+ }
221
+
222
+ func lastDownloadedBlockHeight() throws -> BlockHeight {
223
+ try self.storage.latestHeight()
224
+ }
225
+
226
+ func fetchTransaction(txId: Data) throws -> TransactionEntity {
227
+ try lightwalletService.fetchTransaction(txId: txId)
228
+ }
229
+
230
+ func fetchTransaction(txId: Data, result: @escaping (Result<TransactionEntity, Error>) -> Void) {
231
+ lightwalletService.fetchTransaction(txId: txId) { txResult in
232
+ switch txResult {
233
+ case .failure(let error):
234
+ result(.failure(error))
235
+ case .success(let transaction):
236
+ result(.success(transaction))
237
+ }
238
+ }
239
+ }
240
+ }