zkcloudworker 0.18.2 → 0.18.4

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 (406) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +2 -4
  3. package/dist/ts/cloud/config.js.map +1 -0
  4. package/dist/ts/cloud/index.js.map +1 -0
  5. package/dist/ts/cloud/networks.js.map +1 -0
  6. package/dist/ts/cloud/utils/base64.js.map +1 -0
  7. package/dist/ts/cloud/utils/graphql.js.map +1 -0
  8. package/dist/ts/cloud/utils/index.js.map +1 -0
  9. package/dist/ts/cloud/utils/utils.js.map +1 -0
  10. package/dist/ts/cloud/worker/cloud.js.map +1 -0
  11. package/dist/ts/cloud/worker/index.js.map +1 -0
  12. package/{lib → dist}/ts/cloud/worker/job.js.map +1 -1
  13. package/{lib → dist}/ts/cloud/worker/task.js.map +1 -1
  14. package/dist/ts/cloud/worker/transaction.js.map +1 -0
  15. package/dist/ts/cloud/worker/worker.js.map +1 -0
  16. package/dist/ts/index.js.map +1 -0
  17. package/dist/ts/mina/api/api.js.map +1 -0
  18. package/dist/ts/mina/index.js.map +1 -0
  19. package/dist/ts/mina/local/local.js.map +1 -0
  20. package/dist/ts/mina/storage/index.js.map +1 -0
  21. package/dist/ts/mina/storage/ipfs.js.map +1 -0
  22. package/dist/ts/mina/storage/pinata.js.map +1 -0
  23. package/dist/ts/mina/storage/storage.js.map +1 -0
  24. package/dist/ts/mina/token/FungibleToken.js.map +1 -0
  25. package/dist/ts/mina/token/FungibleTokenAdmin.js.map +1 -0
  26. package/dist/ts/mina/token/api.js.map +1 -0
  27. package/dist/ts/mina/token/index.js.map +1 -0
  28. package/dist/ts/mina/token/vk.js.map +1 -0
  29. package/dist/ts/mina/token/whitelist.js.map +1 -0
  30. package/dist/ts/mina/transactions/account.js.map +1 -0
  31. package/dist/ts/mina/transactions/blockberry.js.map +1 -0
  32. package/dist/ts/mina/transactions/chain.js.map +1 -0
  33. package/dist/ts/mina/transactions/index.js.map +1 -0
  34. package/dist/ts/mina/transactions/nonce.js.map +1 -0
  35. package/dist/ts/mina/transactions/send.js.map +1 -0
  36. package/dist/ts/mina/transactions/tiny-contract.js.map +1 -0
  37. package/dist/ts/mina/transactions/transaction.js.map +1 -0
  38. package/dist/ts/mina/transactions/txstatus.js.map +1 -0
  39. package/dist/ts/mina/utils/base64.js.map +1 -0
  40. package/dist/ts/mina/utils/fee.js.map +1 -0
  41. package/dist/ts/mina/utils/fetch.js.map +1 -0
  42. package/dist/ts/mina/utils/fields.js.map +1 -0
  43. package/dist/ts/mina/utils/index.js.map +1 -0
  44. package/dist/ts/mina/utils/indexed-map.js.map +1 -0
  45. package/dist/ts/mina/utils/mina.js.map +1 -0
  46. package/dist/ts/mina/verification/index.js.map +1 -0
  47. package/dist/ts/mina/verification/verification.js.map +1 -0
  48. package/dist/tsconfig.web.tsbuildinfo +1 -0
  49. package/dist/web/cloud/config.js.map +1 -0
  50. package/dist/web/cloud/index.js.map +1 -0
  51. package/dist/web/cloud/networks.js.map +1 -0
  52. package/dist/web/cloud/utils/base64.js.map +1 -0
  53. package/dist/web/cloud/utils/graphql.js.map +1 -0
  54. package/dist/web/cloud/utils/index.js.map +1 -0
  55. package/dist/web/cloud/utils/utils.js.map +1 -0
  56. package/dist/web/cloud/worker/cloud.js.map +1 -0
  57. package/dist/web/cloud/worker/index.js.map +1 -0
  58. package/{lib → dist}/web/cloud/worker/job.js.map +1 -1
  59. package/{lib → dist}/web/cloud/worker/task.js.map +1 -1
  60. package/dist/web/cloud/worker/transaction.js.map +1 -0
  61. package/dist/web/cloud/worker/worker.js.map +1 -0
  62. package/dist/web/index.js.map +1 -0
  63. package/dist/web/mina/api/api.js.map +1 -0
  64. package/dist/web/mina/index.js.map +1 -0
  65. package/dist/web/mina/local/local.js.map +1 -0
  66. package/dist/web/mina/storage/index.js.map +1 -0
  67. package/dist/web/mina/storage/ipfs.js.map +1 -0
  68. package/dist/web/mina/storage/pinata.js.map +1 -0
  69. package/dist/web/mina/storage/storage.js.map +1 -0
  70. package/dist/web/mina/token/FungibleToken.js.map +1 -0
  71. package/dist/web/mina/token/FungibleTokenAdmin.js.map +1 -0
  72. package/dist/web/mina/token/api.js.map +1 -0
  73. package/dist/web/mina/token/index.js.map +1 -0
  74. package/dist/web/mina/token/vk.js.map +1 -0
  75. package/dist/web/mina/token/whitelist.js.map +1 -0
  76. package/dist/web/mina/transactions/account.js.map +1 -0
  77. package/dist/web/mina/transactions/blockberry.js.map +1 -0
  78. package/dist/web/mina/transactions/chain.js.map +1 -0
  79. package/dist/web/mina/transactions/index.js.map +1 -0
  80. package/dist/web/mina/transactions/nonce.js.map +1 -0
  81. package/dist/web/mina/transactions/send.js.map +1 -0
  82. package/dist/web/mina/transactions/tiny-contract.js.map +1 -0
  83. package/dist/web/mina/transactions/transaction.js.map +1 -0
  84. package/dist/web/mina/transactions/txstatus.js.map +1 -0
  85. package/dist/web/mina/utils/base64.js.map +1 -0
  86. package/dist/web/mina/utils/fee.js.map +1 -0
  87. package/dist/web/mina/utils/fetch.js.map +1 -0
  88. package/dist/web/mina/utils/fields.js.map +1 -0
  89. package/dist/web/mina/utils/index.js.map +1 -0
  90. package/dist/web/mina/utils/indexed-map.js.map +1 -0
  91. package/dist/web/mina/utils/mina.js.map +1 -0
  92. package/dist/web/mina/verification/index.js.map +1 -0
  93. package/dist/web/mina/verification/verification.js.map +1 -0
  94. package/package.json +32 -20
  95. package/src/cloud/config.ts +10 -0
  96. package/src/cloud/index.ts +4 -0
  97. package/src/cloud/networks.ts +130 -0
  98. package/src/cloud/utils/base64.ts +87 -0
  99. package/src/cloud/utils/graphql.ts +252 -0
  100. package/src/cloud/utils/index.ts +3 -0
  101. package/src/cloud/utils/utils.ts +79 -0
  102. package/src/cloud/worker/cloud.ts +326 -0
  103. package/src/cloud/worker/index.ts +5 -0
  104. package/src/cloud/worker/job.ts +123 -0
  105. package/src/cloud/worker/task.ts +45 -0
  106. package/src/cloud/worker/transaction.ts +12 -0
  107. package/src/cloud/worker/worker.ts +62 -0
  108. package/src/index.ts +2 -0
  109. package/src/mina/api/api.ts +597 -0
  110. package/src/mina/index.ts +8 -0
  111. package/src/mina/local/local.ts +651 -0
  112. package/src/mina/storage/index.ts +3 -0
  113. package/src/mina/storage/ipfs.ts +20 -0
  114. package/src/mina/storage/pinata.ts +52 -0
  115. package/src/mina/storage/storage.ts +55 -0
  116. package/src/mina/token/FungibleToken.ts +316 -0
  117. package/src/mina/token/FungibleTokenAdmin.ts +95 -0
  118. package/src/mina/token/api.ts +182 -0
  119. package/src/mina/token/index.ts +5 -0
  120. package/src/mina/token/vk.ts +42 -0
  121. package/src/mina/token/whitelist.ts +178 -0
  122. package/src/mina/transactions/account.ts +57 -0
  123. package/src/mina/transactions/blockberry.ts +166 -0
  124. package/src/mina/transactions/chain.ts +1 -0
  125. package/src/mina/transactions/index.ts +8 -0
  126. package/src/mina/transactions/nonce.ts +120 -0
  127. package/src/mina/transactions/send.ts +186 -0
  128. package/src/mina/transactions/tiny-contract.ts +9 -0
  129. package/src/mina/transactions/transaction.ts +255 -0
  130. package/src/mina/transactions/txstatus.ts +26 -0
  131. package/src/mina/utils/base64.ts +34 -0
  132. package/src/mina/utils/fee.ts +11 -0
  133. package/src/mina/utils/fetch.ts +126 -0
  134. package/src/mina/utils/fields.ts +39 -0
  135. package/src/mina/utils/index.ts +6 -0
  136. package/src/mina/utils/indexed-map.ts +169 -0
  137. package/src/mina/utils/mina.ts +175 -0
  138. package/src/mina/verification/index.ts +1 -0
  139. package/src/mina/verification/verification.ts +23 -0
  140. package/lib/ts/cloud/config.js.map +0 -1
  141. package/lib/ts/cloud/index.js.map +0 -1
  142. package/lib/ts/cloud/networks.js.map +0 -1
  143. package/lib/ts/cloud/utils/base64.js.map +0 -1
  144. package/lib/ts/cloud/utils/graphql.js.map +0 -1
  145. package/lib/ts/cloud/utils/index.js.map +0 -1
  146. package/lib/ts/cloud/utils/utils.js.map +0 -1
  147. package/lib/ts/cloud/worker/cloud.js.map +0 -1
  148. package/lib/ts/cloud/worker/index.js.map +0 -1
  149. package/lib/ts/cloud/worker/transaction.js.map +0 -1
  150. package/lib/ts/cloud/worker/worker.js.map +0 -1
  151. package/lib/ts/index.js.map +0 -1
  152. package/lib/ts/mina/api/api.js.map +0 -1
  153. package/lib/ts/mina/index.js.map +0 -1
  154. package/lib/ts/mina/local/local.js.map +0 -1
  155. package/lib/ts/mina/storage/index.js.map +0 -1
  156. package/lib/ts/mina/storage/ipfs.js.map +0 -1
  157. package/lib/ts/mina/storage/pinata.js.map +0 -1
  158. package/lib/ts/mina/storage/storage.js.map +0 -1
  159. package/lib/ts/mina/token/FungibleToken.js.map +0 -1
  160. package/lib/ts/mina/token/FungibleTokenAdmin.js.map +0 -1
  161. package/lib/ts/mina/token/api.js.map +0 -1
  162. package/lib/ts/mina/token/index.js.map +0 -1
  163. package/lib/ts/mina/token/vk.js.map +0 -1
  164. package/lib/ts/mina/token/whitelist.js.map +0 -1
  165. package/lib/ts/mina/transactions/account.js.map +0 -1
  166. package/lib/ts/mina/transactions/blockberry.js.map +0 -1
  167. package/lib/ts/mina/transactions/chain.js.map +0 -1
  168. package/lib/ts/mina/transactions/index.js.map +0 -1
  169. package/lib/ts/mina/transactions/nonce.js.map +0 -1
  170. package/lib/ts/mina/transactions/send.js.map +0 -1
  171. package/lib/ts/mina/transactions/tiny-contract.js.map +0 -1
  172. package/lib/ts/mina/transactions/transaction.js.map +0 -1
  173. package/lib/ts/mina/transactions/txstatus.js.map +0 -1
  174. package/lib/ts/mina/utils/base64.js.map +0 -1
  175. package/lib/ts/mina/utils/fee.js.map +0 -1
  176. package/lib/ts/mina/utils/fetch.js.map +0 -1
  177. package/lib/ts/mina/utils/fields.js.map +0 -1
  178. package/lib/ts/mina/utils/index.js.map +0 -1
  179. package/lib/ts/mina/utils/indexed-map.js.map +0 -1
  180. package/lib/ts/mina/utils/mina.js.map +0 -1
  181. package/lib/ts/mina/verification/index.js.map +0 -1
  182. package/lib/ts/mina/verification/verification.js.map +0 -1
  183. package/lib/tsconfig.web.tsbuildinfo +0 -1
  184. package/lib/web/cloud/config.js.map +0 -1
  185. package/lib/web/cloud/index.js.map +0 -1
  186. package/lib/web/cloud/networks.js.map +0 -1
  187. package/lib/web/cloud/utils/base64.js.map +0 -1
  188. package/lib/web/cloud/utils/graphql.js.map +0 -1
  189. package/lib/web/cloud/utils/index.js.map +0 -1
  190. package/lib/web/cloud/utils/utils.js.map +0 -1
  191. package/lib/web/cloud/worker/cloud.js.map +0 -1
  192. package/lib/web/cloud/worker/index.js.map +0 -1
  193. package/lib/web/cloud/worker/transaction.js.map +0 -1
  194. package/lib/web/cloud/worker/worker.js.map +0 -1
  195. package/lib/web/index.js.map +0 -1
  196. package/lib/web/mina/api/api.js.map +0 -1
  197. package/lib/web/mina/index.js.map +0 -1
  198. package/lib/web/mina/local/local.js.map +0 -1
  199. package/lib/web/mina/storage/index.js.map +0 -1
  200. package/lib/web/mina/storage/ipfs.js.map +0 -1
  201. package/lib/web/mina/storage/pinata.js.map +0 -1
  202. package/lib/web/mina/storage/storage.js.map +0 -1
  203. package/lib/web/mina/token/FungibleToken.js.map +0 -1
  204. package/lib/web/mina/token/FungibleTokenAdmin.js.map +0 -1
  205. package/lib/web/mina/token/api.js.map +0 -1
  206. package/lib/web/mina/token/index.js.map +0 -1
  207. package/lib/web/mina/token/vk.js.map +0 -1
  208. package/lib/web/mina/token/whitelist.js.map +0 -1
  209. package/lib/web/mina/transactions/account.js.map +0 -1
  210. package/lib/web/mina/transactions/blockberry.js.map +0 -1
  211. package/lib/web/mina/transactions/chain.js.map +0 -1
  212. package/lib/web/mina/transactions/index.js.map +0 -1
  213. package/lib/web/mina/transactions/nonce.js.map +0 -1
  214. package/lib/web/mina/transactions/send.js.map +0 -1
  215. package/lib/web/mina/transactions/tiny-contract.js.map +0 -1
  216. package/lib/web/mina/transactions/transaction.js.map +0 -1
  217. package/lib/web/mina/transactions/txstatus.js.map +0 -1
  218. package/lib/web/mina/utils/base64.js.map +0 -1
  219. package/lib/web/mina/utils/fee.js.map +0 -1
  220. package/lib/web/mina/utils/fetch.js.map +0 -1
  221. package/lib/web/mina/utils/fields.js.map +0 -1
  222. package/lib/web/mina/utils/index.js.map +0 -1
  223. package/lib/web/mina/utils/indexed-map.js.map +0 -1
  224. package/lib/web/mina/utils/mina.js.map +0 -1
  225. package/lib/web/mina/verification/index.js.map +0 -1
  226. package/lib/web/mina/verification/verification.js.map +0 -1
  227. /package/{lib → dist}/ts/cloud/config.d.ts +0 -0
  228. /package/{lib → dist}/ts/cloud/config.js +0 -0
  229. /package/{lib → dist}/ts/cloud/index.d.ts +0 -0
  230. /package/{lib → dist}/ts/cloud/index.js +0 -0
  231. /package/{lib → dist}/ts/cloud/networks.d.ts +0 -0
  232. /package/{lib → dist}/ts/cloud/networks.js +0 -0
  233. /package/{lib → dist}/ts/cloud/utils/base64.d.ts +0 -0
  234. /package/{lib → dist}/ts/cloud/utils/base64.js +0 -0
  235. /package/{lib → dist}/ts/cloud/utils/graphql.d.ts +0 -0
  236. /package/{lib → dist}/ts/cloud/utils/graphql.js +0 -0
  237. /package/{lib → dist}/ts/cloud/utils/index.d.ts +0 -0
  238. /package/{lib → dist}/ts/cloud/utils/index.js +0 -0
  239. /package/{lib → dist}/ts/cloud/utils/utils.d.ts +0 -0
  240. /package/{lib → dist}/ts/cloud/utils/utils.js +0 -0
  241. /package/{lib → dist}/ts/cloud/worker/cloud.d.ts +0 -0
  242. /package/{lib → dist}/ts/cloud/worker/cloud.js +0 -0
  243. /package/{lib → dist}/ts/cloud/worker/index.d.ts +0 -0
  244. /package/{lib → dist}/ts/cloud/worker/index.js +0 -0
  245. /package/{lib → dist}/ts/cloud/worker/job.d.ts +0 -0
  246. /package/{lib → dist}/ts/cloud/worker/job.js +0 -0
  247. /package/{lib → dist}/ts/cloud/worker/task.d.ts +0 -0
  248. /package/{lib → dist}/ts/cloud/worker/task.js +0 -0
  249. /package/{lib → dist}/ts/cloud/worker/transaction.d.ts +0 -0
  250. /package/{lib → dist}/ts/cloud/worker/transaction.js +0 -0
  251. /package/{lib → dist}/ts/cloud/worker/worker.d.ts +0 -0
  252. /package/{lib → dist}/ts/cloud/worker/worker.js +0 -0
  253. /package/{lib → dist}/ts/index.d.ts +0 -0
  254. /package/{lib → dist}/ts/index.js +0 -0
  255. /package/{lib → dist}/ts/mina/api/api.d.ts +0 -0
  256. /package/{lib → dist}/ts/mina/api/api.js +0 -0
  257. /package/{lib → dist}/ts/mina/index.d.ts +0 -0
  258. /package/{lib → dist}/ts/mina/index.js +0 -0
  259. /package/{lib → dist}/ts/mina/local/local.d.ts +0 -0
  260. /package/{lib → dist}/ts/mina/local/local.js +0 -0
  261. /package/{lib → dist}/ts/mina/storage/index.d.ts +0 -0
  262. /package/{lib → dist}/ts/mina/storage/index.js +0 -0
  263. /package/{lib → dist}/ts/mina/storage/ipfs.d.ts +0 -0
  264. /package/{lib → dist}/ts/mina/storage/ipfs.js +0 -0
  265. /package/{lib → dist}/ts/mina/storage/pinata.d.ts +0 -0
  266. /package/{lib → dist}/ts/mina/storage/pinata.js +0 -0
  267. /package/{lib → dist}/ts/mina/storage/storage.d.ts +0 -0
  268. /package/{lib → dist}/ts/mina/storage/storage.js +0 -0
  269. /package/{lib → dist}/ts/mina/token/FungibleToken.d.ts +0 -0
  270. /package/{lib → dist}/ts/mina/token/FungibleToken.js +0 -0
  271. /package/{lib → dist}/ts/mina/token/FungibleTokenAdmin.d.ts +0 -0
  272. /package/{lib → dist}/ts/mina/token/FungibleTokenAdmin.js +0 -0
  273. /package/{lib → dist}/ts/mina/token/api.d.ts +0 -0
  274. /package/{lib → dist}/ts/mina/token/api.js +0 -0
  275. /package/{lib → dist}/ts/mina/token/index.d.ts +0 -0
  276. /package/{lib → dist}/ts/mina/token/index.js +0 -0
  277. /package/{lib → dist}/ts/mina/token/vk.d.ts +0 -0
  278. /package/{lib → dist}/ts/mina/token/vk.js +0 -0
  279. /package/{lib → dist}/ts/mina/token/whitelist.d.ts +0 -0
  280. /package/{lib → dist}/ts/mina/token/whitelist.js +0 -0
  281. /package/{lib → dist}/ts/mina/transactions/account.d.ts +0 -0
  282. /package/{lib → dist}/ts/mina/transactions/account.js +0 -0
  283. /package/{lib → dist}/ts/mina/transactions/blockberry.d.ts +0 -0
  284. /package/{lib → dist}/ts/mina/transactions/blockberry.js +0 -0
  285. /package/{lib → dist}/ts/mina/transactions/chain.d.ts +0 -0
  286. /package/{lib → dist}/ts/mina/transactions/chain.js +0 -0
  287. /package/{lib → dist}/ts/mina/transactions/index.d.ts +0 -0
  288. /package/{lib → dist}/ts/mina/transactions/index.js +0 -0
  289. /package/{lib → dist}/ts/mina/transactions/nonce.d.ts +0 -0
  290. /package/{lib → dist}/ts/mina/transactions/nonce.js +0 -0
  291. /package/{lib → dist}/ts/mina/transactions/send.d.ts +0 -0
  292. /package/{lib → dist}/ts/mina/transactions/send.js +0 -0
  293. /package/{lib → dist}/ts/mina/transactions/tiny-contract.d.ts +0 -0
  294. /package/{lib → dist}/ts/mina/transactions/tiny-contract.js +0 -0
  295. /package/{lib → dist}/ts/mina/transactions/transaction.d.ts +0 -0
  296. /package/{lib → dist}/ts/mina/transactions/transaction.js +0 -0
  297. /package/{lib → dist}/ts/mina/transactions/txstatus.d.ts +0 -0
  298. /package/{lib → dist}/ts/mina/transactions/txstatus.js +0 -0
  299. /package/{lib → dist}/ts/mina/utils/base64.d.ts +0 -0
  300. /package/{lib → dist}/ts/mina/utils/base64.js +0 -0
  301. /package/{lib → dist}/ts/mina/utils/fee.d.ts +0 -0
  302. /package/{lib → dist}/ts/mina/utils/fee.js +0 -0
  303. /package/{lib → dist}/ts/mina/utils/fetch.d.ts +0 -0
  304. /package/{lib → dist}/ts/mina/utils/fetch.js +0 -0
  305. /package/{lib → dist}/ts/mina/utils/fields.d.ts +0 -0
  306. /package/{lib → dist}/ts/mina/utils/fields.js +0 -0
  307. /package/{lib → dist}/ts/mina/utils/index.d.ts +0 -0
  308. /package/{lib → dist}/ts/mina/utils/index.js +0 -0
  309. /package/{lib → dist}/ts/mina/utils/indexed-map.d.ts +0 -0
  310. /package/{lib → dist}/ts/mina/utils/indexed-map.js +0 -0
  311. /package/{lib → dist}/ts/mina/utils/mina.d.ts +0 -0
  312. /package/{lib → dist}/ts/mina/utils/mina.js +0 -0
  313. /package/{lib → dist}/ts/mina/verification/index.d.ts +0 -0
  314. /package/{lib → dist}/ts/mina/verification/index.js +0 -0
  315. /package/{lib → dist}/ts/mina/verification/verification.d.ts +0 -0
  316. /package/{lib → dist}/ts/mina/verification/verification.js +0 -0
  317. /package/{lib → dist}/web/cloud/config.d.ts +0 -0
  318. /package/{lib → dist}/web/cloud/config.js +0 -0
  319. /package/{lib → dist}/web/cloud/index.d.ts +0 -0
  320. /package/{lib → dist}/web/cloud/index.js +0 -0
  321. /package/{lib → dist}/web/cloud/networks.d.ts +0 -0
  322. /package/{lib → dist}/web/cloud/networks.js +0 -0
  323. /package/{lib → dist}/web/cloud/utils/base64.d.ts +0 -0
  324. /package/{lib → dist}/web/cloud/utils/base64.js +0 -0
  325. /package/{lib → dist}/web/cloud/utils/graphql.d.ts +0 -0
  326. /package/{lib → dist}/web/cloud/utils/graphql.js +0 -0
  327. /package/{lib → dist}/web/cloud/utils/index.d.ts +0 -0
  328. /package/{lib → dist}/web/cloud/utils/index.js +0 -0
  329. /package/{lib → dist}/web/cloud/utils/utils.d.ts +0 -0
  330. /package/{lib → dist}/web/cloud/utils/utils.js +0 -0
  331. /package/{lib → dist}/web/cloud/worker/cloud.d.ts +0 -0
  332. /package/{lib → dist}/web/cloud/worker/cloud.js +0 -0
  333. /package/{lib → dist}/web/cloud/worker/index.d.ts +0 -0
  334. /package/{lib → dist}/web/cloud/worker/index.js +0 -0
  335. /package/{lib → dist}/web/cloud/worker/job.d.ts +0 -0
  336. /package/{lib → dist}/web/cloud/worker/job.js +0 -0
  337. /package/{lib → dist}/web/cloud/worker/task.d.ts +0 -0
  338. /package/{lib → dist}/web/cloud/worker/task.js +0 -0
  339. /package/{lib → dist}/web/cloud/worker/transaction.d.ts +0 -0
  340. /package/{lib → dist}/web/cloud/worker/transaction.js +0 -0
  341. /package/{lib → dist}/web/cloud/worker/worker.d.ts +0 -0
  342. /package/{lib → dist}/web/cloud/worker/worker.js +0 -0
  343. /package/{lib → dist}/web/index.d.ts +0 -0
  344. /package/{lib → dist}/web/index.js +0 -0
  345. /package/{lib → dist}/web/mina/api/api.d.ts +0 -0
  346. /package/{lib → dist}/web/mina/api/api.js +0 -0
  347. /package/{lib → dist}/web/mina/index.d.ts +0 -0
  348. /package/{lib → dist}/web/mina/index.js +0 -0
  349. /package/{lib → dist}/web/mina/local/local.d.ts +0 -0
  350. /package/{lib → dist}/web/mina/local/local.js +0 -0
  351. /package/{lib → dist}/web/mina/storage/index.d.ts +0 -0
  352. /package/{lib → dist}/web/mina/storage/index.js +0 -0
  353. /package/{lib → dist}/web/mina/storage/ipfs.d.ts +0 -0
  354. /package/{lib → dist}/web/mina/storage/ipfs.js +0 -0
  355. /package/{lib → dist}/web/mina/storage/pinata.d.ts +0 -0
  356. /package/{lib → dist}/web/mina/storage/pinata.js +0 -0
  357. /package/{lib → dist}/web/mina/storage/storage.d.ts +0 -0
  358. /package/{lib → dist}/web/mina/storage/storage.js +0 -0
  359. /package/{lib → dist}/web/mina/token/FungibleToken.d.ts +0 -0
  360. /package/{lib → dist}/web/mina/token/FungibleToken.js +0 -0
  361. /package/{lib → dist}/web/mina/token/FungibleTokenAdmin.d.ts +0 -0
  362. /package/{lib → dist}/web/mina/token/FungibleTokenAdmin.js +0 -0
  363. /package/{lib → dist}/web/mina/token/api.d.ts +0 -0
  364. /package/{lib → dist}/web/mina/token/api.js +0 -0
  365. /package/{lib → dist}/web/mina/token/index.d.ts +0 -0
  366. /package/{lib → dist}/web/mina/token/index.js +0 -0
  367. /package/{lib → dist}/web/mina/token/vk.d.ts +0 -0
  368. /package/{lib → dist}/web/mina/token/vk.js +0 -0
  369. /package/{lib → dist}/web/mina/token/whitelist.d.ts +0 -0
  370. /package/{lib → dist}/web/mina/token/whitelist.js +0 -0
  371. /package/{lib → dist}/web/mina/transactions/account.d.ts +0 -0
  372. /package/{lib → dist}/web/mina/transactions/account.js +0 -0
  373. /package/{lib → dist}/web/mina/transactions/blockberry.d.ts +0 -0
  374. /package/{lib → dist}/web/mina/transactions/blockberry.js +0 -0
  375. /package/{lib → dist}/web/mina/transactions/chain.d.ts +0 -0
  376. /package/{lib → dist}/web/mina/transactions/chain.js +0 -0
  377. /package/{lib → dist}/web/mina/transactions/index.d.ts +0 -0
  378. /package/{lib → dist}/web/mina/transactions/index.js +0 -0
  379. /package/{lib → dist}/web/mina/transactions/nonce.d.ts +0 -0
  380. /package/{lib → dist}/web/mina/transactions/nonce.js +0 -0
  381. /package/{lib → dist}/web/mina/transactions/send.d.ts +0 -0
  382. /package/{lib → dist}/web/mina/transactions/send.js +0 -0
  383. /package/{lib → dist}/web/mina/transactions/tiny-contract.d.ts +0 -0
  384. /package/{lib → dist}/web/mina/transactions/tiny-contract.js +0 -0
  385. /package/{lib → dist}/web/mina/transactions/transaction.d.ts +0 -0
  386. /package/{lib → dist}/web/mina/transactions/transaction.js +0 -0
  387. /package/{lib → dist}/web/mina/transactions/txstatus.d.ts +0 -0
  388. /package/{lib → dist}/web/mina/transactions/txstatus.js +0 -0
  389. /package/{lib → dist}/web/mina/utils/base64.d.ts +0 -0
  390. /package/{lib → dist}/web/mina/utils/base64.js +0 -0
  391. /package/{lib → dist}/web/mina/utils/fee.d.ts +0 -0
  392. /package/{lib → dist}/web/mina/utils/fee.js +0 -0
  393. /package/{lib → dist}/web/mina/utils/fetch.d.ts +0 -0
  394. /package/{lib → dist}/web/mina/utils/fetch.js +0 -0
  395. /package/{lib → dist}/web/mina/utils/fields.d.ts +0 -0
  396. /package/{lib → dist}/web/mina/utils/fields.js +0 -0
  397. /package/{lib → dist}/web/mina/utils/index.d.ts +0 -0
  398. /package/{lib → dist}/web/mina/utils/index.js +0 -0
  399. /package/{lib → dist}/web/mina/utils/indexed-map.d.ts +0 -0
  400. /package/{lib → dist}/web/mina/utils/indexed-map.js +0 -0
  401. /package/{lib → dist}/web/mina/utils/mina.d.ts +0 -0
  402. /package/{lib → dist}/web/mina/utils/mina.js +0 -0
  403. /package/{lib → dist}/web/mina/verification/index.d.ts +0 -0
  404. /package/{lib → dist}/web/mina/verification/index.js +0 -0
  405. /package/{lib → dist}/web/mina/verification/verification.d.ts +0 -0
  406. /package/{lib → dist}/web/mina/verification/verification.js +0 -0
@@ -0,0 +1,186 @@
1
+ import { checkZkappTransaction } from "o1js";
2
+ import { Mina } from "o1js";
3
+ import { sleep, blockchain } from "../../cloud/index.js";
4
+ import { fetchMinaAccount, getCurrentNetwork } from "../index.js";
5
+
6
+ /**
7
+ * The function `sendTx` sends a transaction, checks account updates, and waits for
8
+ * confirmation on the blockchain.
9
+ * @param params The parameters object
10
+ * @param params.tx The transaction to send
11
+ * @param params.description A description of the transaction
12
+ * @param params.verbose Whether to log verbose information
13
+ * @param params.wait Whether to wait for the transaction to be included in a block
14
+ * @param params.chain The blockchain to send the transaction on
15
+ * @returns The `sendTx` function returns a `Mina.IncludedTransaction`, `Mina.PendingTransaction`,
16
+ * `Mina.RejectedTransaction`, or `undefined` if there was an error during the process.
17
+ */
18
+ export async function sendTx(params: {
19
+ tx: Mina.Transaction<false, true> | Mina.Transaction<true, true>;
20
+ description?: string;
21
+ verbose?: boolean;
22
+ wait?: boolean;
23
+ chain?: blockchain;
24
+ }): Promise<
25
+ | Mina.IncludedTransaction
26
+ | Mina.PendingTransaction
27
+ | Mina.RejectedTransaction
28
+ | undefined
29
+ > {
30
+ const {
31
+ tx,
32
+ description = "",
33
+ verbose = true,
34
+ wait = true,
35
+ chain = getCurrentNetwork().network.chainId,
36
+ } = params;
37
+ // flatten accountUpdates
38
+ const accountUpdates = JSON.parse(tx.toJSON()).accountUpdates;
39
+ const auCount: {
40
+ publicKey: string;
41
+ tokenId: string | undefined;
42
+ count: number;
43
+ }[] = [];
44
+ let proofAuthorizationCount = 0;
45
+ // Calculate the number of account updates for each { publicKey, tokenId }
46
+ for (const au of accountUpdates) {
47
+ const { publicKey, tokenId, authorizationKind } = au.body;
48
+ if (au.authorization.proof) {
49
+ proofAuthorizationCount++;
50
+ if (authorizationKind.isProved === false)
51
+ console.error("Proof authorization exists but isProved is false");
52
+ } else if (authorizationKind.isProved === true)
53
+ console.error("isProved is true but no proof authorization");
54
+ const index = auCount.findIndex(
55
+ (item) => item.publicKey === publicKey && item.tokenId === tokenId
56
+ );
57
+ if (index === -1) auCount.push({ publicKey, tokenId, count: 1 });
58
+ else auCount[index].count++;
59
+ }
60
+ if (verbose)
61
+ console.log(
62
+ `Account updates for ${description ?? "tx"}: ${
63
+ auCount.length
64
+ }, proof authorizations: ${proofAuthorizationCount}`
65
+ );
66
+ for (const au of auCount) {
67
+ if (au.count > 1)
68
+ if (verbose)
69
+ console.log(
70
+ `DUPLICATE AU ${description ?? ""}: ${au.publicKey} ${
71
+ au.tokenId !== "wSHV2S4qX9jFsLjQo8r1BsMLH2ZRKsZx6EJd1sbozGPieEC4Jf"
72
+ ? "tokenId: " + au.tokenId
73
+ : ""
74
+ } count: ${au.count}`
75
+ );
76
+ }
77
+ try {
78
+ let txSent;
79
+ let sent = false;
80
+ while (!sent) {
81
+ txSent = await tx.safeSend();
82
+ if (txSent.status == "pending") {
83
+ sent = true;
84
+ if (verbose)
85
+ console.log(
86
+ `${description ?? ""} tx sent: hash: ${txSent.hash} status: ${
87
+ txSent.status
88
+ }`
89
+ );
90
+ } else if (chain === "zeko") {
91
+ if (verbose) console.log("Retrying Zeko tx");
92
+ await sleep(10000);
93
+ } else {
94
+ console.error(
95
+ `${description} tx NOT sent: hash: ${txSent?.hash} status: ${txSent?.status}`,
96
+ txSent.errors
97
+ );
98
+ return txSent;
99
+ }
100
+ }
101
+ if (txSent === undefined) throw new Error("txSent is undefined");
102
+ if (txSent.errors.length > 0) {
103
+ console.error(
104
+ `${description ?? ""} tx error: hash: ${txSent.hash} status: ${
105
+ txSent.status
106
+ } errors: ${txSent.errors}`
107
+ );
108
+ }
109
+
110
+ if (txSent.status === "pending" && wait !== false && chain !== "zeko") {
111
+ if (verbose) console.log(`Waiting for tx inclusion...`);
112
+ const txIncluded = await txSent.safeWait();
113
+ if (txIncluded.status === "included")
114
+ if (verbose)
115
+ console.log(
116
+ `${description ?? ""} tx included into block: hash: ${
117
+ txIncluded.hash
118
+ } status: ${txIncluded.status}`
119
+ );
120
+ else
121
+ console.error(
122
+ `${description ?? ""} tx NOT included into block: hash: ${
123
+ txIncluded.hash
124
+ } status: ${txIncluded.status}`
125
+ );
126
+ if (chain !== "local") {
127
+ // we still wait for the tx to be included in the block by checking the nonce
128
+ // even in the case of tx NOT included
129
+ // because the tx might still be included in the block in the case of devnet instability
130
+ const { publicKey, nonce } = tx.transaction.feePayer.body;
131
+ const started = Date.now();
132
+ while (Date.now() - started < 1000 * 60 * 10) {
133
+ const newNonce = (
134
+ await fetchMinaAccount({
135
+ publicKey,
136
+ force: true,
137
+ })
138
+ ).account?.nonce;
139
+ if (
140
+ newNonce &&
141
+ Number(newNonce.toBigint()) > Number(nonce.toBigint())
142
+ )
143
+ return txIncluded;
144
+ if (verbose)
145
+ console.log(
146
+ `Waiting for ${chain} to update state for ${Math.floor(
147
+ (Date.now() - started) / 1000
148
+ )} sec...`
149
+ );
150
+ await sleep(10000);
151
+ }
152
+ // finally, if the tx is still not included, show an error
153
+ console.error(
154
+ `${chain} do not reflect nonce update for tx ${txIncluded.hash} with status ${txIncluded.status}`
155
+ );
156
+ }
157
+ return txIncluded;
158
+ } else return txSent;
159
+ } catch (error) {
160
+ if (chain !== "zeko") console.error("Error sending tx", error);
161
+ }
162
+ }
163
+
164
+ export async function getTxStatusFast(params: {
165
+ hash: string;
166
+ chain?: blockchain;
167
+ }): Promise<{ success: boolean; result?: boolean; error?: string }> {
168
+ const { hash, chain = getCurrentNetwork().network.chainId } = params;
169
+ if (chain === "local" || chain === "zeko")
170
+ return { success: true, result: true };
171
+
172
+ try {
173
+ const txStatus = await checkZkappTransaction(hash);
174
+ return {
175
+ success: true,
176
+ result: txStatus?.success ?? false,
177
+ };
178
+ } catch (error: any) {
179
+ console.error(
180
+ "getTxStatusFast error while getting tx status - catch",
181
+ hash,
182
+ error
183
+ );
184
+ return { success: false, error: error?.message ?? "Cannot get tx status" };
185
+ }
186
+ }
@@ -0,0 +1,9 @@
1
+ import { Field, SmartContract, method, state, State } from "o1js";
2
+
3
+ export class TinyContract extends SmartContract {
4
+ @state(Field) value = State<Field>();
5
+
6
+ @method async setValue(value: Field) {
7
+ this.value.set(value);
8
+ }
9
+ }
@@ -0,0 +1,255 @@
1
+ import { Field, PublicKey, Transaction, Mina, UInt64 } from "o1js";
2
+ import { fieldToBase64, fieldFromBase64 } from "../utils/base64.js";
3
+
4
+ interface ForestSerialized {
5
+ length: number;
6
+ restoredItems?: number;
7
+ items: {
8
+ h?: string; // hash
9
+ p?: string; // previousHash
10
+ i?: number; // id
11
+ c?: string; // callData
12
+ }[];
13
+ }
14
+
15
+ export function transactionParams(
16
+ serializedTransaction: string,
17
+ signedJson: any
18
+ ): {
19
+ fee: UInt64;
20
+ sender: PublicKey;
21
+ nonce: number;
22
+ memo: string;
23
+ } {
24
+ const { sender, nonce, tx } = JSON.parse(serializedTransaction);
25
+ const transaction = Mina.Transaction.fromJSON(JSON.parse(tx));
26
+ const memo = transaction.transaction.memo;
27
+ return {
28
+ fee: UInt64.from(signedJson.zkappCommand.feePayer.body.fee),
29
+ sender: PublicKey.fromBase58(sender),
30
+ nonce: Number(signedJson.zkappCommand.feePayer.body.nonce),
31
+ memo,
32
+ };
33
+ }
34
+
35
+ export function deserializeTransaction(
36
+ serializedTransaction: string,
37
+ txNew: Mina.Transaction<false, false>,
38
+ signedJson: any
39
+ ): Transaction<false, true> {
40
+ //console.log("new transaction", txNew);
41
+ const { tx, blindingValues, length, forestJSONs } = JSON.parse(
42
+ serializedTransaction
43
+ );
44
+ const transaction = Mina.Transaction.fromJSON(JSON.parse(tx));
45
+ const forests: ForestSerialized[] = forestJSONs.map(
46
+ (f: string) => JSON.parse(f) as ForestSerialized
47
+ );
48
+ //console.log("transaction", transaction);
49
+ if (length !== txNew.transaction.accountUpdates.length) {
50
+ throw new Error("New Transaction length mismatch");
51
+ }
52
+ if (length !== transaction.transaction.accountUpdates.length) {
53
+ throw new Error("Serialized Transaction length mismatch");
54
+ }
55
+ for (let i = 0; i < length; i++) {
56
+ transaction.transaction.accountUpdates[i].lazyAuthorization =
57
+ txNew.transaction.accountUpdates[i].lazyAuthorization;
58
+ if (blindingValues[i] !== "") {
59
+ if (
60
+ transaction.transaction.accountUpdates[i].lazyAuthorization ===
61
+ undefined ||
62
+ (transaction.transaction.accountUpdates[i].lazyAuthorization as any)
63
+ .blindingValue === undefined
64
+ ) {
65
+ throw new Error(
66
+ `Lazy authorization blinding value is undefined for item ${i}`
67
+ );
68
+ }
69
+ (
70
+ transaction.transaction.accountUpdates[i].lazyAuthorization as any
71
+ ).blindingValue = Field.fromJSON(blindingValues[i]);
72
+ }
73
+ if (forests[i].length > 0) {
74
+ if (
75
+ transaction.transaction.accountUpdates[i].lazyAuthorization ===
76
+ undefined ||
77
+ (transaction.transaction.accountUpdates[i].lazyAuthorization as any)
78
+ .args === undefined
79
+ ) {
80
+ throw new Error(`Lazy authorization args is undefined for item ${i}`);
81
+ }
82
+ deserializeLazyAuthorization(
83
+ (transaction.transaction.accountUpdates[i].lazyAuthorization as any)
84
+ .args,
85
+ forests[i]
86
+ );
87
+ if (forests[i].restoredItems !== forests[i].length) {
88
+ throw new Error(`Forest ${i} not fully restored`);
89
+ }
90
+ }
91
+ }
92
+ transaction.transaction.feePayer.authorization =
93
+ signedJson.zkappCommand.feePayer.authorization;
94
+ transaction.transaction.feePayer.body.fee = UInt64.from(
95
+ signedJson.zkappCommand.feePayer.body.fee
96
+ );
97
+ for (let i = 0; i < length; i++) {
98
+ const signature =
99
+ signedJson.zkappCommand.accountUpdates[i].authorization.signature;
100
+ if (signature !== undefined && signature !== null) {
101
+ transaction.transaction.accountUpdates[i].authorization.signature =
102
+ signedJson.zkappCommand.accountUpdates[i].authorization.signature;
103
+ }
104
+ }
105
+ return transaction;
106
+ }
107
+
108
+ export function serializeTransaction(
109
+ tx: Mina.Transaction<false, false>
110
+ ): string {
111
+ const length = tx.transaction.accountUpdates.length;
112
+ let i;
113
+ const blindingValues = [];
114
+ const forests: ForestSerialized[] = [];
115
+ for (i = 0; i < length; i++) {
116
+ const la = tx.transaction.accountUpdates[i].lazyAuthorization;
117
+ if (
118
+ la !== undefined &&
119
+ (la as any).blindingValue !== undefined &&
120
+ la.kind === "lazy-proof"
121
+ )
122
+ blindingValues.push(la.blindingValue.toJSON());
123
+ else blindingValues.push("");
124
+ const forest: ForestSerialized = { length: 0, items: [] };
125
+ serializeLazyAuthorization(
126
+ (tx.transaction.accountUpdates[i].lazyAuthorization as any)?.args,
127
+ forest
128
+ );
129
+ forests.push(forest);
130
+ }
131
+ const serializedTransaction = JSON.stringify(
132
+ {
133
+ tx: tx.toJSON(),
134
+ blindingValues,
135
+ forestJSONs: forests.map((f) => JSON.stringify(f)),
136
+ length,
137
+ fee: tx.transaction.feePayer.body.fee.toJSON(),
138
+ sender: tx.transaction.feePayer.body.publicKey.toBase58(),
139
+ nonce: tx.transaction.feePayer.body.nonce.toBigint().toString(),
140
+ },
141
+ null,
142
+ 2
143
+ );
144
+ return serializedTransaction;
145
+ }
146
+
147
+ function serializeLazyAuthorization(
148
+ lazyAuthorization: any,
149
+ serialized: ForestSerialized
150
+ ): void {
151
+ if (lazyAuthorization?.hash !== undefined && lazyAuthorization.hash.toJSON) {
152
+ serialized.items.push({
153
+ h: fieldToBase64(lazyAuthorization.hash),
154
+ });
155
+ }
156
+
157
+ if (
158
+ lazyAuthorization?.previousHash !== undefined &&
159
+ lazyAuthorization.previousHash.toJSON
160
+ ) {
161
+ serialized.items.push({
162
+ p: fieldToBase64(lazyAuthorization.previousHash),
163
+ });
164
+ }
165
+ if (
166
+ lazyAuthorization?.callData !== undefined &&
167
+ lazyAuthorization.callData.toJSON
168
+ ) {
169
+ serialized.items.push({
170
+ c: fieldToBase64(lazyAuthorization.callData),
171
+ });
172
+ }
173
+
174
+ if (lazyAuthorization?.id !== undefined) {
175
+ serialized.items.push({
176
+ i: lazyAuthorization.id,
177
+ });
178
+ }
179
+
180
+ if (Array.isArray(lazyAuthorization)) {
181
+ for (const item of lazyAuthorization) {
182
+ serializeLazyAuthorization(item, serialized);
183
+ }
184
+ }
185
+ if (typeof lazyAuthorization === "object") {
186
+ for (const key in lazyAuthorization) {
187
+ serializeLazyAuthorization(lazyAuthorization[key], serialized);
188
+ }
189
+ }
190
+ serialized.length = serialized.items.length;
191
+ }
192
+
193
+ function deserializeLazyAuthorization(
194
+ lazyAuthorization: any,
195
+ serialized: ForestSerialized
196
+ ): void {
197
+ if (serialized.restoredItems === undefined) serialized.restoredItems = 0;
198
+ if (lazyAuthorization?.hash !== undefined && lazyAuthorization.hash.toJSON) {
199
+ if (serialized.restoredItems >= serialized.length)
200
+ throw new Error("Restored more items than expected");
201
+ const hash = serialized.items[serialized.restoredItems].h;
202
+ if (hash === undefined)
203
+ throw new Error(`Hash is undefined for item ${serialized.restoredItems}`);
204
+ lazyAuthorization.hash = fieldFromBase64(hash);
205
+
206
+ serialized.restoredItems++;
207
+ }
208
+ if (
209
+ lazyAuthorization?.previousHash !== undefined &&
210
+ lazyAuthorization.previousHash.toJSON
211
+ ) {
212
+ if (serialized.restoredItems >= serialized.length)
213
+ throw new Error("Restored more items than expected");
214
+ const previousHash = serialized.items[serialized.restoredItems].p;
215
+ if (previousHash === undefined)
216
+ throw new Error(
217
+ `Previous hash is undefined for item ${serialized.restoredItems}`
218
+ );
219
+ lazyAuthorization.previousHash = fieldFromBase64(previousHash);
220
+ serialized.restoredItems++;
221
+ }
222
+ if (
223
+ lazyAuthorization?.callData !== undefined &&
224
+ lazyAuthorization.callData.toJSON
225
+ ) {
226
+ if (serialized.restoredItems >= serialized.length)
227
+ throw new Error("Restored more items than expected");
228
+ const callData = serialized.items[serialized.restoredItems].c;
229
+ if (callData === undefined)
230
+ throw new Error(
231
+ `Call data is undefined for item ${serialized.restoredItems}`
232
+ );
233
+ lazyAuthorization.callData = fieldFromBase64(callData);
234
+ serialized.restoredItems++;
235
+ }
236
+ if (lazyAuthorization?.id !== undefined) {
237
+ if (serialized.restoredItems >= serialized.length)
238
+ throw new Error("Restored more items than expected");
239
+ const id = serialized.items[serialized.restoredItems].i;
240
+ if (id === undefined)
241
+ throw new Error(`Id is undefined for item ${serialized.restoredItems}`);
242
+ lazyAuthorization.id = id;
243
+ serialized.restoredItems++;
244
+ }
245
+ if (Array.isArray(lazyAuthorization)) {
246
+ for (const item of lazyAuthorization) {
247
+ deserializeLazyAuthorization(item, serialized);
248
+ }
249
+ }
250
+ if (typeof lazyAuthorization === "object") {
251
+ for (const key in lazyAuthorization) {
252
+ deserializeLazyAuthorization(lazyAuthorization[key], serialized);
253
+ }
254
+ }
255
+ }
@@ -0,0 +1,26 @@
1
+ import { BlockBerryChain } from "./chain.js";
2
+ import { getZkAppTxFromBlockBerry } from "./blockberry.js";
3
+ const TIMEOUT = 1000 * 60 * 21;
4
+
5
+ export async function txStatusBlockberry(params: {
6
+ hash: string;
7
+ time: number;
8
+ chain: BlockBerryChain;
9
+ blockBerryApiKey: string;
10
+ timeout?: number;
11
+ }): Promise<string> {
12
+ const { hash, chain, time, blockBerryApiKey } = params;
13
+
14
+ const tx = await getZkAppTxFromBlockBerry({ hash, chain, blockBerryApiKey });
15
+ if (tx?.txStatus) return tx?.txStatus;
16
+ if (Date.now() - time > (params.timeout ?? TIMEOUT)) {
17
+ console.error(
18
+ "txStatus: Timeout while checking tx with blockberry",
19
+ chain,
20
+ hash
21
+ );
22
+ return "replaced";
23
+ } else {
24
+ return "pending";
25
+ }
26
+ }
@@ -0,0 +1,34 @@
1
+ import { Field } from "o1js";
2
+ import { toBase, fromBase } from "../../cloud/utils/base64.js";
3
+
4
+ // URL friendly base64 encoding
5
+ const TABLE =
6
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
7
+
8
+ export function fieldToBase56(field: Field): string {
9
+ const digits = toBase(field.toBigInt(), 56n);
10
+ //console.log("digits:", digits);
11
+ const str = digits.map((x) => TABLE[Number(x)]).join("");
12
+ //console.log("str:", str);
13
+ return str;
14
+ }
15
+
16
+ export function fieldFromBase56(str: string): Field {
17
+ const base56Digits = str.split("").map((x) => BigInt(TABLE.indexOf(x)));
18
+ const x = fromBase(base56Digits, 56n);
19
+ return Field(x);
20
+ }
21
+
22
+ export function fieldToBase64(field: Field): string {
23
+ const digits = toBase(field.toBigInt(), 64n);
24
+ //console.log("digits:", digits);
25
+ const str = digits.map((x) => TABLE[Number(x)]).join("");
26
+ //console.log("str:", str);
27
+ return str;
28
+ }
29
+
30
+ export function fieldFromBase64(str: string): Field {
31
+ const base64Digits = str.split("").map((x) => BigInt(TABLE.indexOf(x)));
32
+ const x = fromBase(base64Digits, 64n);
33
+ return Field(x);
34
+ }
@@ -0,0 +1,11 @@
1
+ import { UInt64 } from "o1js";
2
+ import config from "../../cloud/config.js";
3
+
4
+ /**
5
+ * Calculate the fee for a transaction
6
+ * @returns the fee for a transaction
7
+ */
8
+ export async function fee(): Promise<UInt64> {
9
+ //TODO: update after mainnet launch and resolution of the issue https://github.com/o1-labs/o1js/issues/1626
10
+ return UInt64.fromJSON(config.MINAFEE);
11
+ }
@@ -0,0 +1,126 @@
1
+ import {
2
+ PublicKey,
3
+ Field,
4
+ Mina,
5
+ fetchAccount,
6
+ checkZkappTransaction,
7
+ } from "o1js";
8
+ import { sleep } from "../../cloud/utils/index.js";
9
+
10
+ /**
11
+ * Fetches the Mina account for a given public key with error handling
12
+ * @param params the parameters for fetching the account
13
+ * @param params.publicKey the public key of the account
14
+ * @param params.tokenId the token id of the account
15
+ * @param params.force whether to force the fetch - use it only if you are sure the account exists
16
+ * @returns the account object
17
+ */
18
+ export async function fetchMinaAccount(params: {
19
+ publicKey: string | PublicKey;
20
+ tokenId?: string | Field | undefined;
21
+ force?: boolean;
22
+ }) {
23
+ const { publicKey, tokenId, force = false } = params;
24
+ const timeout = 1000 * 60 * 3; // 3 minutes
25
+ let attempt = 0;
26
+ const startTime = Date.now();
27
+ let result = { account: undefined };
28
+ while (Date.now() - startTime < timeout) {
29
+ try {
30
+ const result = await fetchAccount({
31
+ publicKey,
32
+ tokenId,
33
+ });
34
+ return result;
35
+ } catch (error: any) {
36
+ if (force === true)
37
+ console.log("Error in fetchMinaAccount:", {
38
+ error,
39
+ publicKey:
40
+ typeof publicKey === "string" ? publicKey : publicKey.toBase58(),
41
+ tokenId: tokenId?.toString(),
42
+ force,
43
+ });
44
+ else {
45
+ console.log("fetchMinaAccount error", {
46
+ error,
47
+ publicKey:
48
+ typeof publicKey === "string" ? publicKey : publicKey.toBase58(),
49
+ tokenId: tokenId?.toString(),
50
+ force,
51
+ });
52
+ return result;
53
+ }
54
+ }
55
+ attempt++;
56
+ await sleep(1000 * 6 * attempt); // to handle rate limit we increase the interval
57
+ }
58
+ if (force === true)
59
+ throw new Error(
60
+ `fetchMinaAccount timeout
61
+ ${{
62
+ publicKey:
63
+ typeof publicKey === "string" ? publicKey : publicKey.toBase58(),
64
+ tokenId: tokenId?.toString(),
65
+ force,
66
+ }}`
67
+ );
68
+ else
69
+ console.log(
70
+ "fetchMinaAccount timeout",
71
+ typeof publicKey === "string" ? publicKey : publicKey.toBase58(),
72
+ tokenId?.toString(),
73
+ force
74
+ );
75
+ return result;
76
+ }
77
+
78
+ /**
79
+ * Fetches the Mina actions for a given public key with error handling
80
+ * @param publicKey the public key of the contract
81
+ * @param fromActionState the starting action state
82
+ * @param endActionState the ending action state
83
+ * @returns the actions array
84
+ */
85
+
86
+ export async function fetchMinaActions(
87
+ publicKey: PublicKey,
88
+ fromActionState: Field,
89
+ endActionState?: Field
90
+ ) {
91
+ const timeout = 1000 * 60 * 600; // 10 hours
92
+ const startTime = Date.now();
93
+ while (Date.now() - startTime < timeout) {
94
+ try {
95
+ let actions = await Mina.fetchActions(publicKey, {
96
+ fromActionState,
97
+ endActionState,
98
+ });
99
+ if (Array.isArray(actions)) return actions;
100
+ else console.log("Cannot fetch actions - wrong format");
101
+ } catch (error: any) {
102
+ console.log(
103
+ "Error in fetchMinaActions",
104
+ error.toString().substring(0, 300)
105
+ );
106
+ }
107
+ await sleep(1000 * 60 * 2);
108
+ }
109
+ console.log("Timeout in fetchMinaActions");
110
+ return undefined;
111
+ }
112
+
113
+ /**
114
+ * Fetches the Mina transaction for a given hash with error handling
115
+ * @param hash the hash of the transaction
116
+ * @returns the transaction object
117
+ */
118
+ export async function checkMinaZkappTransaction(hash: string) {
119
+ try {
120
+ const result = await checkZkappTransaction(hash);
121
+ return result;
122
+ } catch (error) {
123
+ console.error("Error in checkZkappTransaction:", error);
124
+ return { success: false };
125
+ }
126
+ }
@@ -0,0 +1,39 @@
1
+ import { Field, Poseidon } from "o1js";
2
+ import { fieldToBase64, fieldFromBase64 } from "./base64.js";
3
+
4
+ /**
5
+ * Serialize fields to a string using base64 URL-friendly encoding
6
+ * @param fields the fields array to serialize
7
+ * @returns the serialized string
8
+ */
9
+ export function serializeFields(fields: Field[]): string {
10
+ const hash = Poseidon.hash(fields);
11
+ const value = [Field(fields.length), hash, ...fields];
12
+ //return value.map((f) => f.toBigInt().toString(36)).join(".");
13
+ return value.map((f) => fieldToBase64(f)).join(".");
14
+ }
15
+
16
+ /**
17
+ * Deserialize fields from a string using base64 URL-friendly encoding
18
+ * @param s the string to deserialize
19
+ * @returns the deserialized fields array
20
+ */
21
+ export function deserializeFields(s: string): Field[] {
22
+ try {
23
+ //const value = s.split(".").map((n) => Field(BigInt(convert(n, 36))));
24
+ const value = s.split(".").map((n) => fieldFromBase64(n));
25
+ const length = value[0];
26
+ if (
27
+ Field(value.length - 2)
28
+ .equals(length)
29
+ .toBoolean() === false
30
+ )
31
+ throw new Error("deserializeFields: invalid length");
32
+ const hash = Poseidon.hash(value.slice(2));
33
+ if (hash.equals(value[1]).toBoolean()) {
34
+ return value.slice(2);
35
+ } else throw new Error("deserializeFields: invalid hash: data mismatch");
36
+ } catch (e: any) {
37
+ throw new Error(`deserializeFields: invalid string: ${s}: ${e}`);
38
+ }
39
+ }
@@ -0,0 +1,6 @@
1
+ export * from "./base64.js";
2
+ export * from "./fetch.js";
3
+ export * from "./fields.js";
4
+ export * from "./fee.js";
5
+ export * from "./mina.js";
6
+ export * from "./indexed-map.js";