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,718 @@
1
+ //
2
+ // ZcashRustBackend.swift
3
+ // ZcashLightClientKit
4
+ //
5
+ // Created by Jack Grigg on 5/8/19.
6
+ // Copyright © 2019 Electric Coin Company. All rights reserved.
7
+ //
8
+ // swiftlint:disable type_body_length
9
+ import Foundation
10
+
11
+
12
+ class ZcashRustBackend: ZcashRustBackendWelding {
13
+ static func lastError() -> RustWeldingError? {
14
+ guard let message = getLastError() else { return nil }
15
+
16
+ zcashlc_clear_last_error()
17
+
18
+ if message.contains("couldn't load Sapling spend parameters") {
19
+ return RustWeldingError.saplingSpendParametersNotFound
20
+ } else if message.contains("is not empty") {
21
+ return RustWeldingError.dataDbNotEmpty
22
+ }
23
+
24
+ return RustWeldingError.genericError(message: message)
25
+ }
26
+
27
+ static func getLastError() -> String? {
28
+ let errorLen = zcashlc_last_error_length()
29
+ if errorLen > 0 {
30
+ let error = UnsafeMutablePointer<Int8>.allocate(capacity: Int(errorLen))
31
+ zcashlc_error_message_utf8(error, errorLen)
32
+ zcashlc_clear_last_error()
33
+ return String(validatingUTF8: error)
34
+ } else {
35
+ return nil
36
+ }
37
+ }
38
+
39
+ /**
40
+ * Sets up the internal structure of the data database.
41
+ */
42
+ static func initDataDb(dbData: URL, networkType: NetworkType) throws {
43
+ let dbData = dbData.osStr()
44
+ guard zcashlc_init_data_database(dbData.0, dbData.1, networkType.networkId) != 0 else {
45
+ if let error = lastError() {
46
+ throw throwDataDbError(error)
47
+ }
48
+ throw RustWeldingError.dataDbInitFailed(message: "unknown error")
49
+ }
50
+ }
51
+
52
+ static func isValidShieldedAddress(_ address: String, networkType: NetworkType) throws -> Bool {
53
+ guard !address.containsCStringNullBytesBeforeStringEnding() else {
54
+ return false
55
+ }
56
+
57
+ guard zcashlc_is_valid_shielded_address([CChar](address.utf8CString), networkType.networkId) else {
58
+ if let error = lastError() {
59
+ throw error
60
+ }
61
+ return false
62
+ }
63
+
64
+ return true
65
+ }
66
+
67
+ static func isValidTransparentAddress(_ address: String, networkType: NetworkType) throws -> Bool {
68
+ guard !address.containsCStringNullBytesBeforeStringEnding() else {
69
+ return false
70
+ }
71
+
72
+ guard zcashlc_is_valid_transparent_address([CChar](address.utf8CString), networkType.networkId ) else {
73
+ if let error = lastError() {
74
+ throw error
75
+ }
76
+ return false
77
+ }
78
+
79
+ return true
80
+ }
81
+
82
+ static func isValidExtendedFullViewingKey(_ key: String, networkType: NetworkType) throws -> Bool {
83
+ guard !key.containsCStringNullBytesBeforeStringEnding() else {
84
+ return false
85
+ }
86
+
87
+ guard zcashlc_is_valid_viewing_key([CChar](key.utf8CString), networkType.networkId) else {
88
+ if let error = lastError() {
89
+ throw error
90
+ }
91
+ return false
92
+ }
93
+
94
+ return true
95
+ }
96
+
97
+ static func initAccountsTable(dbData: URL, seed: [UInt8], accounts: Int32, networkType: NetworkType) -> [String]? {
98
+ let dbData = dbData.osStr()
99
+ var capacity = UInt(0)
100
+ let extsksCStr = zcashlc_init_accounts_table(dbData.0, dbData.1, seed, UInt(seed.count), accounts, &capacity, networkType.networkId)
101
+ if extsksCStr == nil {
102
+ return nil
103
+ }
104
+
105
+ let extsks = UnsafeBufferPointer(start: extsksCStr, count: Int(accounts)).compactMap({ cStr -> String? in
106
+ guard let str = cStr else { return nil }
107
+ return String(cString: str)
108
+ })
109
+ zcashlc_vec_string_free(extsksCStr, UInt(accounts), capacity)
110
+
111
+ return extsks
112
+ }
113
+
114
+ static func initAccountsTable(dbData: URL, uvks: [UnifiedViewingKey], networkType: NetworkType) throws -> Bool {
115
+ let dbData = dbData.osStr()
116
+
117
+ var ffiUvks: [FFIUnifiedViewingKey] = []
118
+ for uvk in uvks {
119
+ guard !uvk.extfvk.containsCStringNullBytesBeforeStringEnding() else {
120
+ throw RustWeldingError.malformedStringInput
121
+ }
122
+ guard !uvk.extpub.containsCStringNullBytesBeforeStringEnding() else {
123
+ throw RustWeldingError.malformedStringInput
124
+ }
125
+
126
+ guard try self.isValidExtendedFullViewingKey(uvk.extfvk, networkType: networkType) else {
127
+ throw RustWeldingError.malformedStringInput
128
+ }
129
+
130
+ let extfvkCStr = [CChar](String(uvk.extfvk).utf8CString)
131
+
132
+ let extfvkPtr = UnsafeMutablePointer<CChar>.allocate(capacity: extfvkCStr.count)
133
+ extfvkPtr.initialize(from: extfvkCStr, count: extfvkCStr.count)
134
+
135
+ let extpubCStr = [CChar](String(uvk.extpub).utf8CString)
136
+ let extpubPtr = UnsafeMutablePointer<CChar>.allocate(capacity: extpubCStr.count)
137
+ extpubPtr.initialize(from: extpubCStr, count: extpubCStr.count)
138
+
139
+ ffiUvks.append(FFIUnifiedViewingKey(extfvk: extfvkPtr, extpub: extpubPtr))
140
+ }
141
+
142
+ var result = false
143
+
144
+ ffiUvks.withContiguousMutableStorageIfAvailable { pointer in
145
+ let slice = UnsafeMutablePointer<FFIUVKBoxedSlice>.allocate(capacity: 1)
146
+ slice.initialize(to: FFIUVKBoxedSlice(ptr: pointer.baseAddress, len: UInt(pointer.count)))
147
+
148
+ result = zcashlc_init_accounts_table_with_keys(dbData.0, dbData.1, slice, networkType.networkId)
149
+ slice.deinitialize(count: 1)
150
+ }
151
+
152
+ defer {
153
+ for uvk in ffiUvks {
154
+ uvk.extfvk.deallocate()
155
+ uvk.extpub.deallocate()
156
+ }
157
+ }
158
+
159
+ return result
160
+ }
161
+ // swiftlint:disable function_parameter_count
162
+ static func initBlocksTable(
163
+ dbData: URL,
164
+ height: Int32,
165
+ hash: String,
166
+ time: UInt32,
167
+ saplingTree: String,
168
+ networkType: NetworkType
169
+ ) throws {
170
+ let dbData = dbData.osStr()
171
+
172
+ guard !hash.containsCStringNullBytesBeforeStringEnding() else {
173
+ throw RustWeldingError.malformedStringInput
174
+ }
175
+
176
+ guard !saplingTree.containsCStringNullBytesBeforeStringEnding() else {
177
+ throw RustWeldingError.malformedStringInput
178
+ }
179
+
180
+ guard zcashlc_init_blocks_table(
181
+ dbData.0,
182
+ dbData.1,
183
+ height,
184
+ [CChar](hash.utf8CString),
185
+ time,
186
+ [CChar](saplingTree.utf8CString),
187
+ networkType.networkId
188
+ ) != 0 else {
189
+ if let error = lastError() {
190
+ throw error
191
+ }
192
+ throw RustWeldingError.dataDbInitFailed(message: "Unknown Error")
193
+ }
194
+ }
195
+
196
+ static func getAddress(dbData: URL, account: Int32, networkType: NetworkType) -> String? {
197
+ let dbData = dbData.osStr()
198
+
199
+ guard let addressCStr = zcashlc_get_address(dbData.0, dbData.1, account, networkType.networkId) else { return nil }
200
+
201
+ let address = String(validatingUTF8: addressCStr)
202
+ zcashlc_string_free(addressCStr)
203
+ return address
204
+ }
205
+
206
+ static func getBalance(dbData: URL, account: Int32, networkType: NetworkType) -> Int64 {
207
+ let dbData = dbData.osStr()
208
+ return zcashlc_get_balance(dbData.0, dbData.1, account, networkType.networkId)
209
+ }
210
+
211
+ static func getVerifiedBalance(dbData: URL, account: Int32, networkType: NetworkType) -> Int64 {
212
+ let dbData = dbData.osStr()
213
+ return zcashlc_get_verified_balance(dbData.0, dbData.1, account, networkType.networkId)
214
+ }
215
+
216
+ static func getVerifiedTransparentBalance(dbData: URL, address: String, networkType: NetworkType) throws -> Int64 {
217
+ guard !address.containsCStringNullBytesBeforeStringEnding() else {
218
+ throw RustWeldingError.malformedStringInput
219
+ }
220
+
221
+ guard try isValidTransparentAddress(address, networkType: networkType) else {
222
+ throw RustWeldingError.unableToDeriveKeys
223
+ }
224
+
225
+ let dbData = dbData.osStr()
226
+
227
+ return zcashlc_get_verified_transparent_balance(dbData.0, dbData.1, [CChar](address.utf8CString), networkType.networkId)
228
+ }
229
+
230
+ static func getTransparentBalance(dbData: URL, address: String, networkType: NetworkType) throws -> Int64 {
231
+ guard !address.containsCStringNullBytesBeforeStringEnding() else {
232
+ throw RustWeldingError.malformedStringInput
233
+ }
234
+
235
+ guard try self.isValidTransparentAddress(address, networkType: networkType) else {
236
+ throw RustWeldingError.unableToDeriveKeys
237
+ }
238
+
239
+ let dbData = dbData.osStr()
240
+ return zcashlc_get_total_transparent_balance(dbData.0, dbData.1, [CChar](address.utf8CString), networkType.networkId)
241
+ }
242
+
243
+ static func clearUtxos(dbData: URL, address: String, sinceHeight: BlockHeight, networkType: NetworkType) throws -> Int32 {
244
+ let dbData = dbData.osStr()
245
+
246
+ guard !address.containsCStringNullBytesBeforeStringEnding() else {
247
+ throw RustWeldingError.malformedStringInput
248
+ }
249
+
250
+ guard try isValidTransparentAddress(address, networkType: networkType) else {
251
+ throw RustWeldingError.unableToDeriveKeys
252
+ }
253
+
254
+ let result = zcashlc_clear_utxos(dbData.0, dbData.1, [CChar](address.utf8CString), Int32(sinceHeight), networkType.networkId)
255
+
256
+ guard result > 0 else {
257
+ if let error = lastError() {
258
+ throw error
259
+ }
260
+ return result
261
+ }
262
+ return result
263
+ }
264
+
265
+ static func putUnspentTransparentOutput(dbData: URL, address: String, txid: [UInt8], index: Int, script: [UInt8], value: Int64, height: BlockHeight, networkType: NetworkType) throws -> Bool {
266
+ let dbData = dbData.osStr()
267
+
268
+ guard !address.containsCStringNullBytesBeforeStringEnding() else {
269
+ throw RustWeldingError.malformedStringInput
270
+ }
271
+
272
+ guard zcashlc_put_utxo(
273
+ dbData.0,
274
+ dbData.1,
275
+ [CChar](address.utf8CString),
276
+ txid,
277
+ UInt(txid.count),
278
+ Int32(index),
279
+ script,
280
+ UInt(script.count),
281
+ value,
282
+ Int32(height),
283
+ networkType.networkId
284
+ ) else {
285
+ if let error = lastError() {
286
+ throw error
287
+ }
288
+ return false
289
+ }
290
+
291
+ return true
292
+ }
293
+
294
+ static func downloadedUtxoBalance(dbData: URL, address: String, networkType: NetworkType) throws -> WalletBalance {
295
+ let verified = try getVerifiedTransparentBalance(dbData: dbData, address: address, networkType: networkType)
296
+ let total = try getTransparentBalance(dbData: dbData, address: address, networkType: networkType)
297
+ return TransparentBalance(verified: verified, total: total, address: address)
298
+ }
299
+
300
+ static func getReceivedMemoAsUTF8(dbData: URL, idNote: Int64, networkType: NetworkType) -> String? {
301
+ let dbData = dbData.osStr()
302
+
303
+ guard let memoCStr = zcashlc_get_received_memo_as_utf8(dbData.0, dbData.1, idNote, networkType.networkId) else { return nil }
304
+
305
+ let memo = String(validatingUTF8: memoCStr)
306
+ zcashlc_string_free(memoCStr)
307
+ return memo
308
+ }
309
+
310
+ static func getSentMemoAsUTF8(dbData: URL, idNote: Int64, networkType: NetworkType) -> String? {
311
+ let dbData = dbData.osStr()
312
+
313
+ guard let memoCStr = zcashlc_get_sent_memo_as_utf8(dbData.0, dbData.1, idNote, networkType.networkId) else { return nil }
314
+
315
+ let memo = String(validatingUTF8: memoCStr)
316
+ zcashlc_string_free(memoCStr)
317
+ return memo
318
+ }
319
+
320
+ static func validateCombinedChain(dbCache: URL, dbData: URL, networkType: NetworkType) -> Int32 {
321
+ let dbCache = dbCache.osStr()
322
+ let dbData = dbData.osStr()
323
+ return zcashlc_validate_combined_chain(dbCache.0, dbCache.1, dbData.0, dbData.1, networkType.networkId)
324
+ }
325
+
326
+ static func getNearestRewindHeight(dbData: URL, height: Int32, networkType: NetworkType) -> Int32 {
327
+ let dbData = dbData.osStr()
328
+ return zcashlc_get_nearest_rewind_height(dbData.0, dbData.1, height, networkType.networkId)
329
+ }
330
+
331
+ static func rewindToHeight(dbData: URL, height: Int32, networkType: NetworkType) -> Bool {
332
+ let dbData = dbData.osStr()
333
+ return zcashlc_rewind_to_height(dbData.0, dbData.1, height, networkType.networkId)
334
+ }
335
+
336
+ static func scanBlocks(dbCache: URL, dbData: URL, limit: UInt32 = 0, networkType: NetworkType) -> Bool {
337
+ let dbCache = dbCache.osStr()
338
+ let dbData = dbData.osStr()
339
+ return zcashlc_scan_blocks(dbCache.0, dbCache.1, dbData.0, dbData.1, limit, networkType.networkId) != 0
340
+ }
341
+
342
+ static func decryptAndStoreTransaction(dbData: URL, txBytes: [UInt8], minedHeight: Int32, networkType: NetworkType) -> Bool {
343
+ let dbData = dbData.osStr()
344
+ return zcashlc_decrypt_and_store_transaction(
345
+ dbData.0,
346
+ dbData.1,
347
+ txBytes,
348
+ UInt(txBytes.count),
349
+ UInt32(minedHeight),
350
+ networkType.networkId
351
+ ) != 0
352
+ }
353
+
354
+ // swiftlint:disable function_parameter_count
355
+ static func createToAddress(
356
+ dbData: URL,
357
+ account: Int32,
358
+ extsk: String,
359
+ to address: String,
360
+ value: Int64,
361
+ memo: String?,
362
+ spendParamsPath: String,
363
+ outputParamsPath: String,
364
+ networkType: NetworkType
365
+ ) -> Int64 {
366
+ let dbData = dbData.osStr()
367
+ let memoBytes = memo ?? ""
368
+
369
+ return zcashlc_create_to_address(
370
+ dbData.0,
371
+ dbData.1,
372
+ account,
373
+ [CChar](extsk.utf8CString),
374
+ [CChar](address.utf8CString),
375
+ value,
376
+ [CChar](memoBytes.utf8CString),
377
+ spendParamsPath,
378
+ UInt(spendParamsPath.lengthOfBytes(using: .utf8)),
379
+ outputParamsPath,
380
+ UInt(outputParamsPath.lengthOfBytes(using: .utf8)),
381
+ networkType.networkId
382
+ )
383
+ }
384
+
385
+ static func shieldFunds(
386
+ dbCache: URL,
387
+ dbData: URL,
388
+ account: Int32,
389
+ tsk: String,
390
+ extsk: String,
391
+ memo: String?,
392
+ spendParamsPath: String,
393
+ outputParamsPath: String,
394
+ networkType: NetworkType
395
+ ) -> Int64 {
396
+ let dbData = dbData.osStr()
397
+ let memoBytes = memo ?? ""
398
+
399
+ return zcashlc_shield_funds(
400
+ dbData.0,
401
+ dbData.1,
402
+ account,
403
+ [CChar](tsk.utf8CString),
404
+ [CChar](extsk.utf8CString),
405
+ [CChar](memoBytes.utf8CString),
406
+ spendParamsPath,
407
+ UInt(spendParamsPath.lengthOfBytes(using: .utf8)),
408
+ outputParamsPath,
409
+ UInt(outputParamsPath.lengthOfBytes(using: .utf8)),
410
+ networkType.networkId
411
+ )
412
+ }
413
+
414
+ static func deriveExtendedFullViewingKey(_ spendingKey: String, networkType: NetworkType) throws -> String? {
415
+ guard !spendingKey.containsCStringNullBytesBeforeStringEnding() else {
416
+ throw RustWeldingError.malformedStringInput
417
+ }
418
+
419
+ guard
420
+ let extsk = zcashlc_derive_extended_full_viewing_key(
421
+ [CChar](spendingKey.utf8CString),
422
+ networkType.networkId
423
+ )
424
+ else {
425
+ if let error = lastError() {
426
+ throw error
427
+ }
428
+ return nil
429
+ }
430
+
431
+ let derived = String(validatingUTF8: extsk)
432
+
433
+ zcashlc_string_free(extsk)
434
+ return derived
435
+ }
436
+
437
+ static func deriveExtendedFullViewingKeys(seed: [UInt8], accounts: Int32, networkType: NetworkType) throws -> [String]? {
438
+ var capacity = UInt(0)
439
+ guard
440
+ let extsksCStr = zcashlc_derive_extended_full_viewing_keys(
441
+ seed,
442
+ UInt(seed.count),
443
+ accounts,
444
+ &capacity,
445
+ networkType.networkId
446
+ )
447
+ else {
448
+ if let error = lastError() {
449
+ throw error
450
+ }
451
+ return nil
452
+ }
453
+
454
+ let extsks = UnsafeBufferPointer(start: extsksCStr, count: Int(accounts)).compactMap { cStr -> String? in
455
+ guard let str = cStr else { return nil }
456
+ return String(cString: str)
457
+ }
458
+
459
+ zcashlc_vec_string_free(extsksCStr, UInt(accounts), capacity)
460
+ return extsks
461
+ }
462
+
463
+ static func deriveExtendedSpendingKeys(seed: [UInt8], accounts: Int32, networkType: NetworkType) throws -> [String]? {
464
+ var capacity = UInt(0)
465
+ guard
466
+ let extsksCStr = zcashlc_derive_extended_spending_keys(
467
+ seed,
468
+ UInt(seed.count),
469
+ accounts,
470
+ &capacity,
471
+ networkType.networkId
472
+ )
473
+ else {
474
+ if let error = lastError() {
475
+ throw error
476
+ }
477
+ return nil
478
+ }
479
+
480
+ let extsks = UnsafeBufferPointer(start: extsksCStr, count: Int(accounts)).compactMap { cStr -> String? in
481
+ guard let str = cStr else { return nil }
482
+ return String(cString: str)
483
+ }
484
+
485
+ zcashlc_vec_string_free(extsksCStr, UInt(accounts), capacity)
486
+
487
+ return extsks
488
+ }
489
+
490
+ static func deriveUnifiedViewingKeyFromSeed(
491
+ _ seed: [UInt8],
492
+ numberOfAccounts: Int,
493
+ networkType: NetworkType
494
+ ) throws -> [UnifiedViewingKey] {
495
+ guard
496
+ let uvksStruct = zcashlc_derive_unified_viewing_keys_from_seed(
497
+ seed,
498
+ UInt(seed.count),
499
+ Int32(numberOfAccounts),
500
+ networkType.networkId
501
+ )
502
+ else {
503
+ if let error = lastError() {
504
+ throw error
505
+ }
506
+ throw RustWeldingError.unableToDeriveKeys
507
+ }
508
+
509
+ let uvksSize = uvksStruct.pointee.len
510
+
511
+ guard let uvksArrayPointer = uvksStruct.pointee.ptr, uvksSize > 0 else {
512
+ throw RustWeldingError.unableToDeriveKeys
513
+ }
514
+
515
+ var uvks: [UnifiedViewingKey] = []
516
+
517
+ for item in 0 ..< Int(uvksSize) {
518
+ let itemPointer = uvksArrayPointer.advanced(by: item)
519
+
520
+ guard let extfvk = String(validatingUTF8: itemPointer.pointee.extfvk) else {
521
+ throw RustWeldingError.unableToDeriveKeys
522
+ }
523
+
524
+ guard let extpub = String(validatingUTF8: itemPointer.pointee.extpub) else {
525
+ throw RustWeldingError.unableToDeriveKeys
526
+ }
527
+
528
+ uvks.append(UVK(extfvk: extfvk, extpub: extpub))
529
+ }
530
+
531
+ zcashlc_free_uvk_array(uvksStruct)
532
+
533
+ return uvks
534
+ }
535
+
536
+ static func deriveShieldedAddressFromSeed(
537
+ seed: [UInt8],
538
+ accountIndex: Int32,
539
+ networkType: NetworkType
540
+ ) throws -> String? {
541
+ guard
542
+ let zaddrCStr = zcashlc_derive_shielded_address_from_seed(
543
+ seed,
544
+ UInt(seed.count),
545
+ accountIndex,
546
+ networkType.networkId
547
+ )
548
+ else {
549
+ if let error = lastError() {
550
+ throw error
551
+ }
552
+ return nil
553
+ }
554
+ let zAddr = String(validatingUTF8: zaddrCStr)
555
+
556
+ zcashlc_string_free(zaddrCStr)
557
+
558
+ return zAddr
559
+ }
560
+
561
+ static func deriveShieldedAddressFromViewingKey(
562
+ _ extfvk: String,
563
+ networkType: NetworkType
564
+ ) throws -> String? {
565
+ guard !extfvk.containsCStringNullBytesBeforeStringEnding() else {
566
+ throw RustWeldingError.malformedStringInput
567
+ }
568
+ guard
569
+ let zaddrCStr = zcashlc_derive_shielded_address_from_viewing_key(
570
+ [CChar](extfvk.utf8CString),
571
+ networkType.networkId
572
+ )
573
+ else {
574
+ if let error = lastError() {
575
+ throw error
576
+ }
577
+ return nil
578
+ }
579
+ let zAddr = String(validatingUTF8: zaddrCStr)
580
+
581
+ zcashlc_string_free(zaddrCStr)
582
+
583
+ return zAddr
584
+ }
585
+
586
+ static func deriveTransparentAddressFromSeed(
587
+ seed: [UInt8],
588
+ account: Int,
589
+ index: Int,
590
+ networkType: NetworkType
591
+ ) throws -> String? {
592
+ guard
593
+ let tAddrCStr = zcashlc_derive_transparent_address_from_seed(
594
+ seed,
595
+ UInt(seed.count),
596
+ Int32(account),
597
+ Int32(index),
598
+ networkType.networkId
599
+ )
600
+ else {
601
+ if let error = lastError() {
602
+ throw error
603
+ }
604
+ return nil
605
+ }
606
+
607
+ let tAddr = String(validatingUTF8: tAddrCStr)
608
+
609
+ return tAddr
610
+ }
611
+
612
+ static func deriveTransparentPrivateKeyFromSeed(
613
+ seed: [UInt8],
614
+ account: Int,
615
+ index: Int,
616
+ networkType: NetworkType
617
+ ) throws -> String? {
618
+ guard
619
+ let skCStr = zcashlc_derive_transparent_private_key_from_seed(
620
+ seed,
621
+ UInt(seed.count),
622
+ Int32(account),
623
+ Int32(index),
624
+ networkType.networkId
625
+ )
626
+ else {
627
+ if let error = lastError() {
628
+ throw error
629
+ }
630
+ return nil
631
+ }
632
+ let secretKey = String(validatingUTF8: skCStr)
633
+
634
+ return secretKey
635
+ }
636
+
637
+ static func derivedTransparentAddressFromPublicKey(
638
+ _ pubkey: String,
639
+ networkType: NetworkType
640
+ ) throws -> String {
641
+ guard !pubkey.containsCStringNullBytesBeforeStringEnding() else {
642
+ throw RustWeldingError.malformedStringInput
643
+ }
644
+
645
+ guard
646
+ let tAddrCStr = zcashlc_derive_transparent_address_from_public_key(
647
+ [CChar](pubkey.utf8CString),
648
+ networkType.networkId
649
+ ),
650
+ let tAddr = String(validatingUTF8: tAddrCStr)
651
+ else {
652
+ if let error = lastError() {
653
+ throw error
654
+ }
655
+ throw RustWeldingError.unableToDeriveKeys
656
+ }
657
+
658
+ return tAddr
659
+ }
660
+
661
+ static func deriveTransparentAddressFromSecretKey(_ tsk: String, networkType: NetworkType) throws -> String? {
662
+ guard !tsk.containsCStringNullBytesBeforeStringEnding() else {
663
+ throw RustWeldingError.malformedStringInput
664
+ }
665
+
666
+ guard let tAddrCStr = zcashlc_derive_transparent_address_from_secret_key([CChar](tsk.utf8CString), networkType.networkId) else {
667
+ if let error = lastError() {
668
+ throw error
669
+ }
670
+ return nil
671
+ }
672
+
673
+ let tAddr = String(validatingUTF8: tAddrCStr)
674
+
675
+ return tAddr
676
+ }
677
+
678
+ static func consensusBranchIdFor(height: Int32, networkType: NetworkType) throws -> Int32 {
679
+ let branchId = zcashlc_branch_id_for_height(height, networkType.networkId)
680
+
681
+ guard branchId != -1 else {
682
+ throw RustWeldingError.noConsensusBranchId(height: height)
683
+ }
684
+
685
+ return branchId
686
+ }
687
+ }
688
+
689
+ private struct UVK: UnifiedViewingKey {
690
+ var extfvk: ExtendedFullViewingKey
691
+ var extpub: ExtendedPublicKey
692
+ }
693
+
694
+ private extension ZcashRustBackend {
695
+ static func throwDataDbError(_ error: RustWeldingError) -> Error {
696
+ if case RustWeldingError.genericError(let message) = error, message.contains("is not empty") {
697
+ return RustWeldingError.dataDbNotEmpty
698
+ }
699
+
700
+ return RustWeldingError.dataDbInitFailed(message: error.localizedDescription)
701
+ }
702
+ }
703
+
704
+ private extension URL {
705
+ func osStr() -> (String, UInt) {
706
+ let path = self.absoluteString
707
+ return (path, UInt(path.lengthOfBytes(using: .utf8)))
708
+ }
709
+ }
710
+
711
+ extension String {
712
+ /**
713
+ Checks whether this string contains null bytes before it's real ending
714
+ */
715
+ func containsCStringNullBytesBeforeStringEnding() -> Bool {
716
+ self.utf8CString.firstIndex(of: 0) != (self.utf8CString.count - 1)
717
+ }
718
+ }