@opcat-labs/cat-sdk 3.3.0 → 4.0.0-beta-d60092a3-20260227

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 (448) hide show
  1. package/artifacts/.templates/cat20/cat20.scrypt.map +1 -1
  2. package/artifacts/.templates/cat20/cat20.scrypt.tpl +14 -5
  3. package/artifacts/.templates/cat20/cat20Admin.scrypt.map +1 -1
  4. package/artifacts/.templates/cat20/cat20Admin.scrypt.tpl +2 -0
  5. package/artifacts/.templates/cat20/cat20GuardStateLib.scrypt.map +1 -1
  6. package/artifacts/.templates/cat20/cat20GuardStateLib.scrypt.tpl +2 -4
  7. package/artifacts/.templates/cat20/cat20GuardVariants.scrypt.map +1 -0
  8. package/artifacts/.templates/cat20/cat20GuardVariants.scrypt.tpl +7 -0
  9. package/artifacts/.templates/cat20/cat20GuardVariants.transformer.json +7 -0
  10. package/artifacts/.templates/cat20/cat20Guard_12_12_2.scrypt.map +1 -1
  11. package/artifacts/.templates/cat20/cat20Guard_12_12_2.scrypt.tpl +19 -30
  12. package/artifacts/.templates/cat20/cat20Guard_12_12_2.transformer.json +1 -2
  13. package/artifacts/.templates/cat20/cat20Guard_12_12_4.scrypt.map +1 -1
  14. package/artifacts/.templates/cat20/cat20Guard_12_12_4.scrypt.tpl +19 -30
  15. package/artifacts/.templates/cat20/cat20Guard_12_12_4.transformer.json +1 -2
  16. package/artifacts/.templates/cat20/cat20Guard_6_6_2.scrypt.map +1 -1
  17. package/artifacts/.templates/cat20/cat20Guard_6_6_2.scrypt.tpl +19 -30
  18. package/artifacts/.templates/cat20/cat20Guard_6_6_2.transformer.json +1 -2
  19. package/artifacts/.templates/cat20/cat20Guard_6_6_4.scrypt.map +1 -1
  20. package/artifacts/.templates/cat20/cat20Guard_6_6_4.scrypt.tpl +19 -30
  21. package/artifacts/.templates/cat20/cat20Guard_6_6_4.transformer.json +1 -2
  22. package/artifacts/.templates/cat20/minters/cat20ClosedMinter.scrypt.map +1 -1
  23. package/artifacts/.templates/cat20/minters/cat20ClosedMinter.scrypt.tpl +3 -0
  24. package/artifacts/.templates/cat20/minters/cat20OpenMinter.scrypt.map +1 -1
  25. package/artifacts/.templates/cat20/minters/cat20OpenMinter.scrypt.tpl +12 -6
  26. package/artifacts/.templates/cat20/types.scrypt.map +1 -1
  27. package/artifacts/.templates/cat20/types.scrypt.tpl +0 -2
  28. package/artifacts/.templates/cat721/cat721.scrypt.map +1 -1
  29. package/artifacts/.templates/cat721/cat721.scrypt.tpl +7 -4
  30. package/artifacts/.templates/cat721/cat721GuardStateLib.scrypt.map +1 -1
  31. package/artifacts/.templates/cat721/cat721GuardStateLib.scrypt.tpl +1 -0
  32. package/artifacts/.templates/cat721/cat721GuardVariants.scrypt.map +1 -0
  33. package/artifacts/.templates/cat721/cat721GuardVariants.scrypt.tpl +7 -0
  34. package/artifacts/.templates/cat721/cat721GuardVariants.transformer.json +7 -0
  35. package/artifacts/.templates/cat721/cat721Guard_12_12_2.scrypt.map +1 -1
  36. package/artifacts/.templates/cat721/cat721Guard_12_12_2.scrypt.tpl +7 -19
  37. package/artifacts/.templates/cat721/cat721Guard_12_12_2.transformer.json +1 -2
  38. package/artifacts/.templates/cat721/cat721Guard_12_12_4.scrypt.map +1 -1
  39. package/artifacts/.templates/cat721/cat721Guard_12_12_4.scrypt.tpl +7 -19
  40. package/artifacts/.templates/cat721/cat721Guard_12_12_4.transformer.json +1 -2
  41. package/artifacts/.templates/cat721/cat721Guard_6_6_2.scrypt.map +1 -1
  42. package/artifacts/.templates/cat721/cat721Guard_6_6_2.scrypt.tpl +7 -19
  43. package/artifacts/.templates/cat721/cat721Guard_6_6_2.transformer.json +1 -2
  44. package/artifacts/.templates/cat721/cat721Guard_6_6_4.scrypt.map +1 -1
  45. package/artifacts/.templates/cat721/cat721Guard_6_6_4.scrypt.tpl +7 -19
  46. package/artifacts/.templates/cat721/cat721Guard_6_6_4.transformer.json +1 -2
  47. package/artifacts/.templates/cat721/minters/cat721ClosedMinter.scrypt.map +1 -1
  48. package/artifacts/.templates/cat721/minters/cat721ClosedMinter.scrypt.tpl +3 -0
  49. package/artifacts/.templates/cat721/minters/cat721OpenMinter.scrypt.map +1 -1
  50. package/artifacts/.templates/cat721/minters/cat721OpenMinter.scrypt.tpl +7 -1
  51. package/artifacts/.templates/cat721/minters/cat721OpenMinterMerkleTree.scrypt.map +1 -1
  52. package/artifacts/.templates/cat721/minters/cat721OpenMinterMerkleTree.scrypt.tpl +3 -3
  53. package/artifacts/.templates/cat721/types.scrypt.map +1 -1
  54. package/artifacts/.templates/cat721/types.scrypt.tpl +1 -1
  55. package/artifacts/.templates/constants.scrypt.map +1 -1
  56. package/artifacts/.templates/types.scrypt.map +1 -1
  57. package/artifacts/.templates/utils/ownerUtils.scrypt.map +1 -1
  58. package/artifacts/.templates/utils/ownerUtils.scrypt.tpl +0 -3
  59. package/artifacts/cat20/cat20.json +43 -49
  60. package/artifacts/cat20/cat20.scrypt +32 -23
  61. package/artifacts/cat20/cat20Admin.json +37 -45
  62. package/artifacts/cat20/cat20Admin.scrypt +32 -30
  63. package/artifacts/cat20/cat20GuardStateLib.json +22 -30
  64. package/artifacts/cat20/cat20GuardStateLib.scrypt +7 -9
  65. package/artifacts/cat20/cat20GuardVariants.json +26 -0
  66. package/artifacts/cat20/cat20GuardVariants.scrypt +9 -0
  67. package/artifacts/cat20/cat20Guard_12_12_2.json +117 -154
  68. package/artifacts/cat20/cat20Guard_12_12_2.scrypt +36 -47
  69. package/artifacts/cat20/cat20Guard_12_12_4.json +117 -154
  70. package/artifacts/cat20/cat20Guard_12_12_4.scrypt +36 -47
  71. package/artifacts/cat20/cat20Guard_6_6_2.json +117 -154
  72. package/artifacts/cat20/cat20Guard_6_6_2.scrypt +36 -47
  73. package/artifacts/cat20/cat20Guard_6_6_4.json +117 -154
  74. package/artifacts/cat20/cat20Guard_6_6_4.scrypt +36 -47
  75. package/artifacts/cat20/cat20StateLib.json +23 -31
  76. package/artifacts/cat20/cat20StateLib.scrypt +5 -5
  77. package/artifacts/cat20/minters/cat20ClosedMinter.json +35 -43
  78. package/artifacts/cat20/minters/cat20ClosedMinter.scrypt +25 -22
  79. package/artifacts/cat20/minters/cat20OpenMinter.json +35 -47
  80. package/artifacts/cat20/minters/cat20OpenMinter.scrypt +30 -24
  81. package/artifacts/cat20/types.json +5 -13
  82. package/artifacts/cat20/types.scrypt +5 -7
  83. package/artifacts/cat721/cat721.json +44 -42
  84. package/artifacts/cat721/cat721.scrypt +25 -22
  85. package/artifacts/cat721/cat721GuardStateLib.json +23 -23
  86. package/artifacts/cat721/cat721GuardStateLib.scrypt +6 -5
  87. package/artifacts/cat721/cat721GuardVariants.json +26 -0
  88. package/artifacts/cat721/cat721GuardVariants.scrypt +9 -0
  89. package/artifacts/cat721/cat721Guard_12_12_2.json +129 -160
  90. package/artifacts/cat721/cat721Guard_12_12_2.scrypt +24 -36
  91. package/artifacts/cat721/cat721Guard_12_12_4.json +129 -160
  92. package/artifacts/cat721/cat721Guard_12_12_4.scrypt +24 -36
  93. package/artifacts/cat721/cat721Guard_6_6_2.json +129 -160
  94. package/artifacts/cat721/cat721Guard_6_6_2.scrypt +24 -36
  95. package/artifacts/cat721/cat721Guard_6_6_4.json +129 -160
  96. package/artifacts/cat721/cat721Guard_6_6_4.scrypt +24 -36
  97. package/artifacts/cat721/cat721StateLib.json +24 -24
  98. package/artifacts/cat721/cat721StateLib.scrypt +5 -5
  99. package/artifacts/cat721/minters/cat721ClosedMinter.json +36 -36
  100. package/artifacts/cat721/minters/cat721ClosedMinter.scrypt +21 -18
  101. package/artifacts/cat721/minters/cat721OpenMintInfo.json +5 -5
  102. package/artifacts/cat721/minters/cat721OpenMintInfo.scrypt +4 -4
  103. package/artifacts/cat721/minters/cat721OpenMinter.json +43 -43
  104. package/artifacts/cat721/minters/cat721OpenMinter.scrypt +28 -22
  105. package/artifacts/cat721/minters/cat721OpenMinterMerkleTree.json +21 -21
  106. package/artifacts/cat721/minters/cat721OpenMinterMerkleTree.scrypt +9 -9
  107. package/artifacts/cat721/types.json +6 -6
  108. package/artifacts/cat721/types.scrypt +6 -6
  109. package/artifacts/constants.json +2 -2
  110. package/artifacts/constants.scrypt +1 -1
  111. package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/backtrace.scrypt +13 -13
  112. package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/contextUtils.scrypt +16 -16
  113. package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/stateUtils.scrypt +1 -1
  114. package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/stdUtils.scrypt +26 -20
  115. package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/txHashPreimageUtils.scrypt +7 -7
  116. package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/txUtils.scrypt +12 -12
  117. package/artifacts/scrypt-ts-opcat/assets/smart-contract/types/structs.scrypt +9 -9
  118. package/artifacts/types.json +2 -2
  119. package/artifacts/types.scrypt +2 -2
  120. package/artifacts/utils/ownerUtils.json +15 -15
  121. package/artifacts/utils/ownerUtils.scrypt +3 -6
  122. package/dist/artifacts/cat20/cat20.json +43 -49
  123. package/dist/artifacts/cat20/cat20.scrypt +32 -23
  124. package/dist/artifacts/cat20/cat20Admin.json +37 -45
  125. package/dist/artifacts/cat20/cat20Admin.scrypt +32 -30
  126. package/dist/artifacts/cat20/cat20GuardStateLib.json +22 -30
  127. package/dist/artifacts/cat20/cat20GuardStateLib.scrypt +7 -9
  128. package/dist/artifacts/cat20/cat20GuardVariants.json +26 -0
  129. package/dist/artifacts/cat20/cat20GuardVariants.scrypt +9 -0
  130. package/dist/artifacts/cat20/cat20Guard_12_12_2.json +117 -154
  131. package/dist/artifacts/cat20/cat20Guard_12_12_2.scrypt +36 -47
  132. package/dist/artifacts/cat20/cat20Guard_12_12_4.json +117 -154
  133. package/dist/artifacts/cat20/cat20Guard_12_12_4.scrypt +36 -47
  134. package/dist/artifacts/cat20/cat20Guard_6_6_2.json +117 -154
  135. package/dist/artifacts/cat20/cat20Guard_6_6_2.scrypt +36 -47
  136. package/dist/artifacts/cat20/cat20Guard_6_6_4.json +117 -154
  137. package/dist/artifacts/cat20/cat20Guard_6_6_4.scrypt +36 -47
  138. package/dist/artifacts/cat20/cat20StateLib.json +23 -31
  139. package/dist/artifacts/cat20/cat20StateLib.scrypt +5 -5
  140. package/dist/artifacts/cat20/minters/cat20ClosedMinter.json +35 -43
  141. package/dist/artifacts/cat20/minters/cat20ClosedMinter.scrypt +25 -22
  142. package/dist/artifacts/cat20/minters/cat20OpenMinter.json +35 -47
  143. package/dist/artifacts/cat20/minters/cat20OpenMinter.scrypt +30 -24
  144. package/dist/artifacts/cat20/types.json +5 -13
  145. package/dist/artifacts/cat20/types.scrypt +5 -7
  146. package/dist/artifacts/cat721/cat721.json +44 -42
  147. package/dist/artifacts/cat721/cat721.scrypt +25 -22
  148. package/dist/artifacts/cat721/cat721GuardStateLib.json +23 -23
  149. package/dist/artifacts/cat721/cat721GuardStateLib.scrypt +6 -5
  150. package/dist/artifacts/cat721/cat721GuardVariants.json +26 -0
  151. package/dist/artifacts/cat721/cat721GuardVariants.scrypt +9 -0
  152. package/dist/artifacts/cat721/cat721Guard_12_12_2.json +129 -160
  153. package/dist/artifacts/cat721/cat721Guard_12_12_2.scrypt +24 -36
  154. package/dist/artifacts/cat721/cat721Guard_12_12_4.json +129 -160
  155. package/dist/artifacts/cat721/cat721Guard_12_12_4.scrypt +24 -36
  156. package/dist/artifacts/cat721/cat721Guard_6_6_2.json +129 -160
  157. package/dist/artifacts/cat721/cat721Guard_6_6_2.scrypt +24 -36
  158. package/dist/artifacts/cat721/cat721Guard_6_6_4.json +129 -160
  159. package/dist/artifacts/cat721/cat721Guard_6_6_4.scrypt +24 -36
  160. package/dist/artifacts/cat721/cat721StateLib.json +24 -24
  161. package/dist/artifacts/cat721/cat721StateLib.scrypt +5 -5
  162. package/dist/artifacts/cat721/minters/cat721ClosedMinter.json +36 -36
  163. package/dist/artifacts/cat721/minters/cat721ClosedMinter.scrypt +21 -18
  164. package/dist/artifacts/cat721/minters/cat721OpenMintInfo.json +5 -5
  165. package/dist/artifacts/cat721/minters/cat721OpenMintInfo.scrypt +4 -4
  166. package/dist/artifacts/cat721/minters/cat721OpenMinter.json +43 -43
  167. package/dist/artifacts/cat721/minters/cat721OpenMinter.scrypt +28 -22
  168. package/dist/artifacts/cat721/minters/cat721OpenMinterMerkleTree.json +21 -21
  169. package/dist/artifacts/cat721/minters/cat721OpenMinterMerkleTree.scrypt +9 -9
  170. package/dist/artifacts/cat721/types.json +6 -6
  171. package/dist/artifacts/cat721/types.scrypt +6 -6
  172. package/dist/artifacts/constants.json +2 -2
  173. package/dist/artifacts/constants.scrypt +1 -1
  174. package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/backtrace.scrypt +13 -13
  175. package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/contextUtils.scrypt +16 -16
  176. package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/stateUtils.scrypt +1 -1
  177. package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/stdUtils.scrypt +26 -20
  178. package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/txHashPreimageUtils.scrypt +7 -7
  179. package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/txUtils.scrypt +12 -12
  180. package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/types/structs.scrypt +9 -9
  181. package/dist/artifacts/types.json +2 -2
  182. package/dist/artifacts/types.scrypt +2 -2
  183. package/dist/artifacts/utils/ownerUtils.json +15 -15
  184. package/dist/artifacts/utils/ownerUtils.scrypt +3 -6
  185. package/dist/cjs/contracts/cat20/cat20.js +37 -16
  186. package/dist/cjs/contracts/cat20/cat20.js.map +1 -1
  187. package/dist/cjs/contracts/cat20/cat20GuardStateLib.js +7 -5
  188. package/dist/cjs/contracts/cat20/cat20GuardStateLib.js.map +1 -1
  189. package/dist/cjs/contracts/cat20/cat20GuardVariants.js +49 -0
  190. package/dist/cjs/contracts/cat20/cat20GuardVariants.js.map +1 -0
  191. package/dist/cjs/contracts/cat20/cat20Guard_12_12_2.js +32 -35
  192. package/dist/cjs/contracts/cat20/cat20Guard_12_12_2.js.map +1 -1
  193. package/dist/cjs/contracts/cat20/cat20Guard_12_12_4.js +32 -35
  194. package/dist/cjs/contracts/cat20/cat20Guard_12_12_4.js.map +1 -1
  195. package/dist/cjs/contracts/cat20/cat20Guard_6_6_2.js +32 -35
  196. package/dist/cjs/contracts/cat20/cat20Guard_6_6_2.js.map +1 -1
  197. package/dist/cjs/contracts/cat20/cat20Guard_6_6_4.js +32 -35
  198. package/dist/cjs/contracts/cat20/cat20Guard_6_6_4.js.map +1 -1
  199. package/dist/cjs/contracts/cat20/minters/cat20ClosedMinter.js +4 -0
  200. package/dist/cjs/contracts/cat20/minters/cat20ClosedMinter.js.map +1 -1
  201. package/dist/cjs/contracts/cat20/minters/cat20OpenMinter.js +16 -16
  202. package/dist/cjs/contracts/cat20/minters/cat20OpenMinter.js.map +1 -1
  203. package/dist/cjs/contracts/cat721/cat721.js +22 -11
  204. package/dist/cjs/contracts/cat721/cat721.js.map +1 -1
  205. package/dist/cjs/contracts/cat721/cat721GuardStateLib.js +3 -1
  206. package/dist/cjs/contracts/cat721/cat721GuardStateLib.js.map +1 -1
  207. package/dist/cjs/contracts/cat721/cat721GuardVariants.js +49 -0
  208. package/dist/cjs/contracts/cat721/cat721GuardVariants.js.map +1 -0
  209. package/dist/cjs/contracts/cat721/cat721Guard_12_12_2.js +18 -28
  210. package/dist/cjs/contracts/cat721/cat721Guard_12_12_2.js.map +1 -1
  211. package/dist/cjs/contracts/cat721/cat721Guard_12_12_4.js +18 -28
  212. package/dist/cjs/contracts/cat721/cat721Guard_12_12_4.js.map +1 -1
  213. package/dist/cjs/contracts/cat721/cat721Guard_6_6_2.js +18 -28
  214. package/dist/cjs/contracts/cat721/cat721Guard_6_6_2.js.map +1 -1
  215. package/dist/cjs/contracts/cat721/cat721Guard_6_6_4.js +18 -28
  216. package/dist/cjs/contracts/cat721/cat721Guard_6_6_4.js.map +1 -1
  217. package/dist/cjs/contracts/cat721/minters/cat721ClosedMinter.js +3 -5
  218. package/dist/cjs/contracts/cat721/minters/cat721ClosedMinter.js.map +1 -1
  219. package/dist/cjs/contracts/cat721/minters/cat721OpenMinter.js +13 -10
  220. package/dist/cjs/contracts/cat721/minters/cat721OpenMinter.js.map +1 -1
  221. package/dist/cjs/contracts/cat721/minters/cat721OpenMinterMerkleTree.js +3 -3
  222. package/dist/cjs/contracts/cat721/minters/cat721OpenMinterMerkleTree.js.map +1 -1
  223. package/dist/cjs/contracts/cat721/types.js +15 -2
  224. package/dist/cjs/contracts/cat721/types.js.map +1 -1
  225. package/dist/cjs/contracts/constants.js +21 -1
  226. package/dist/cjs/contracts/constants.js.map +1 -1
  227. package/dist/cjs/contracts/index.js +0 -1
  228. package/dist/cjs/contracts/index.js.map +1 -1
  229. package/dist/cjs/contracts/types.js +0 -4
  230. package/dist/cjs/contracts/types.js.map +1 -1
  231. package/dist/cjs/contracts/utils/ownerUtils.js +0 -10
  232. package/dist/cjs/contracts/utils/ownerUtils.js.map +1 -1
  233. package/dist/cjs/features/cat20/admin/burnByAdmin.js +14 -18
  234. package/dist/cjs/features/cat20/admin/burnByAdmin.js.map +1 -1
  235. package/dist/cjs/features/cat20/burn/burn.js +16 -9
  236. package/dist/cjs/features/cat20/burn/burn.js.map +1 -1
  237. package/dist/cjs/features/cat20/deploy/closedMinter.js +1 -2
  238. package/dist/cjs/features/cat20/deploy/closedMinter.js.map +1 -1
  239. package/dist/cjs/features/cat20/deploy/openMinter.js +2 -3
  240. package/dist/cjs/features/cat20/deploy/openMinter.js.map +1 -1
  241. package/dist/cjs/features/cat20/index.js +1 -3
  242. package/dist/cjs/features/cat20/index.js.map +1 -1
  243. package/dist/cjs/features/cat20/mint/closedMinter.js +1 -1
  244. package/dist/cjs/features/cat20/mint/closedMinter.js.map +1 -1
  245. package/dist/cjs/features/cat20/send/contractSend.js +12 -8
  246. package/dist/cjs/features/cat20/send/contractSend.js.map +1 -1
  247. package/dist/cjs/features/cat20/send/singleSend.js +13 -12
  248. package/dist/cjs/features/cat20/send/singleSend.js.map +1 -1
  249. package/dist/cjs/features/cat721/burn/burn.js +14 -7
  250. package/dist/cjs/features/cat721/burn/burn.js.map +1 -1
  251. package/dist/cjs/features/cat721/deploy/cat721ClosedMinter.js +1 -1
  252. package/dist/cjs/features/cat721/deploy/cat721ClosedMinter.js.map +1 -1
  253. package/dist/cjs/features/cat721/deploy/cat721OpenMinter.js +1 -1
  254. package/dist/cjs/features/cat721/deploy/cat721OpenMinter.js.map +1 -1
  255. package/dist/cjs/features/cat721/index.js +1 -3
  256. package/dist/cjs/features/cat721/index.js.map +1 -1
  257. package/dist/cjs/features/cat721/mint/cat721ClosedMinter.js +11 -4
  258. package/dist/cjs/features/cat721/mint/cat721ClosedMinter.js.map +1 -1
  259. package/dist/cjs/features/cat721/mint/cat721OpenMinter.js +12 -4
  260. package/dist/cjs/features/cat721/mint/cat721OpenMinter.js.map +1 -1
  261. package/dist/cjs/features/cat721/send/singleSend.js +6 -7
  262. package/dist/cjs/features/cat721/send/singleSend.js.map +1 -1
  263. package/dist/cjs/lib/cat721OPenMinterMerkleTreeData.js +2 -4
  264. package/dist/cjs/lib/cat721OPenMinterMerkleTreeData.js.map +1 -1
  265. package/dist/cjs/utils/contractPeripheral.js +51 -48
  266. package/dist/cjs/utils/contractPeripheral.js.map +1 -1
  267. package/dist/cjs/utils/index.js +6 -2
  268. package/dist/cjs/utils/index.js.map +1 -1
  269. package/dist/esm/contracts/cat20/cat20.js +38 -17
  270. package/dist/esm/contracts/cat20/cat20.js.map +1 -1
  271. package/dist/esm/contracts/cat20/cat20GuardStateLib.js +8 -6
  272. package/dist/esm/contracts/cat20/cat20GuardStateLib.js.map +1 -1
  273. package/dist/esm/contracts/cat20/cat20GuardVariants.js +45 -0
  274. package/dist/esm/contracts/cat20/cat20GuardVariants.js.map +1 -0
  275. package/dist/esm/contracts/cat20/cat20Guard_12_12_2.js +34 -37
  276. package/dist/esm/contracts/cat20/cat20Guard_12_12_2.js.map +1 -1
  277. package/dist/esm/contracts/cat20/cat20Guard_12_12_4.js +34 -37
  278. package/dist/esm/contracts/cat20/cat20Guard_12_12_4.js.map +1 -1
  279. package/dist/esm/contracts/cat20/cat20Guard_6_6_2.js +34 -37
  280. package/dist/esm/contracts/cat20/cat20Guard_6_6_2.js.map +1 -1
  281. package/dist/esm/contracts/cat20/cat20Guard_6_6_4.js +34 -37
  282. package/dist/esm/contracts/cat20/cat20Guard_6_6_4.js.map +1 -1
  283. package/dist/esm/contracts/cat20/minters/cat20ClosedMinter.js +4 -0
  284. package/dist/esm/contracts/cat20/minters/cat20ClosedMinter.js.map +1 -1
  285. package/dist/esm/contracts/cat20/minters/cat20OpenMinter.js +16 -18
  286. package/dist/esm/contracts/cat20/minters/cat20OpenMinter.js.map +1 -1
  287. package/dist/esm/contracts/cat721/cat721.js +22 -11
  288. package/dist/esm/contracts/cat721/cat721.js.map +1 -1
  289. package/dist/esm/contracts/cat721/cat721GuardStateLib.js +4 -2
  290. package/dist/esm/contracts/cat721/cat721GuardStateLib.js.map +1 -1
  291. package/dist/esm/contracts/cat721/cat721GuardVariants.js +45 -0
  292. package/dist/esm/contracts/cat721/cat721GuardVariants.js.map +1 -0
  293. package/dist/esm/contracts/cat721/cat721Guard_12_12_2.js +19 -29
  294. package/dist/esm/contracts/cat721/cat721Guard_12_12_2.js.map +1 -1
  295. package/dist/esm/contracts/cat721/cat721Guard_12_12_4.js +19 -29
  296. package/dist/esm/contracts/cat721/cat721Guard_12_12_4.js.map +1 -1
  297. package/dist/esm/contracts/cat721/cat721Guard_6_6_2.js +19 -29
  298. package/dist/esm/contracts/cat721/cat721Guard_6_6_2.js.map +1 -1
  299. package/dist/esm/contracts/cat721/cat721Guard_6_6_4.js +19 -29
  300. package/dist/esm/contracts/cat721/cat721Guard_6_6_4.js.map +1 -1
  301. package/dist/esm/contracts/cat721/minters/cat721ClosedMinter.js +4 -6
  302. package/dist/esm/contracts/cat721/minters/cat721ClosedMinter.js.map +1 -1
  303. package/dist/esm/contracts/cat721/minters/cat721OpenMinter.js +14 -11
  304. package/dist/esm/contracts/cat721/minters/cat721OpenMinter.js.map +1 -1
  305. package/dist/esm/contracts/cat721/minters/cat721OpenMinterMerkleTree.js +4 -4
  306. package/dist/esm/contracts/cat721/minters/cat721OpenMinterMerkleTree.js.map +1 -1
  307. package/dist/esm/contracts/cat721/types.js +14 -1
  308. package/dist/esm/contracts/cat721/types.js.map +1 -1
  309. package/dist/esm/contracts/constants.js +20 -0
  310. package/dist/esm/contracts/constants.js.map +1 -1
  311. package/dist/esm/contracts/index.js +0 -1
  312. package/dist/esm/contracts/index.js.map +1 -1
  313. package/dist/esm/contracts/types.js +1 -3
  314. package/dist/esm/contracts/types.js.map +1 -1
  315. package/dist/esm/contracts/utils/ownerUtils.js +0 -10
  316. package/dist/esm/contracts/utils/ownerUtils.js.map +1 -1
  317. package/dist/esm/features/cat20/admin/burnByAdmin.js +14 -18
  318. package/dist/esm/features/cat20/admin/burnByAdmin.js.map +1 -1
  319. package/dist/esm/features/cat20/burn/burn.js +16 -9
  320. package/dist/esm/features/cat20/burn/burn.js.map +1 -1
  321. package/dist/esm/features/cat20/deploy/closedMinter.js +2 -3
  322. package/dist/esm/features/cat20/deploy/closedMinter.js.map +1 -1
  323. package/dist/esm/features/cat20/deploy/openMinter.js +3 -4
  324. package/dist/esm/features/cat20/deploy/openMinter.js.map +1 -1
  325. package/dist/esm/features/cat20/index.js +0 -1
  326. package/dist/esm/features/cat20/index.js.map +1 -1
  327. package/dist/esm/features/cat20/mint/closedMinter.js +2 -2
  328. package/dist/esm/features/cat20/mint/closedMinter.js.map +1 -1
  329. package/dist/esm/features/cat20/send/contractSend.js +13 -9
  330. package/dist/esm/features/cat20/send/contractSend.js.map +1 -1
  331. package/dist/esm/features/cat20/send/singleSend.js +13 -12
  332. package/dist/esm/features/cat20/send/singleSend.js.map +1 -1
  333. package/dist/esm/features/cat721/burn/burn.js +14 -7
  334. package/dist/esm/features/cat721/burn/burn.js.map +1 -1
  335. package/dist/esm/features/cat721/deploy/cat721ClosedMinter.js +2 -2
  336. package/dist/esm/features/cat721/deploy/cat721ClosedMinter.js.map +1 -1
  337. package/dist/esm/features/cat721/deploy/cat721OpenMinter.js +2 -2
  338. package/dist/esm/features/cat721/deploy/cat721OpenMinter.js.map +1 -1
  339. package/dist/esm/features/cat721/index.js +0 -1
  340. package/dist/esm/features/cat721/index.js.map +1 -1
  341. package/dist/esm/features/cat721/mint/cat721ClosedMinter.js +12 -5
  342. package/dist/esm/features/cat721/mint/cat721ClosedMinter.js.map +1 -1
  343. package/dist/esm/features/cat721/mint/cat721OpenMinter.js +13 -5
  344. package/dist/esm/features/cat721/mint/cat721OpenMinter.js.map +1 -1
  345. package/dist/esm/features/cat721/send/singleSend.js +6 -7
  346. package/dist/esm/features/cat721/send/singleSend.js.map +1 -1
  347. package/dist/esm/lib/cat721OPenMinterMerkleTreeData.js +2 -4
  348. package/dist/esm/lib/cat721OPenMinterMerkleTreeData.js.map +1 -1
  349. package/dist/esm/utils/contractPeripheral.js +52 -49
  350. package/dist/esm/utils/contractPeripheral.js.map +1 -1
  351. package/dist/esm/utils/index.js +5 -2
  352. package/dist/esm/utils/index.js.map +1 -1
  353. package/dist/types/contracts/cat20/cat20.d.ts +2 -2
  354. package/dist/types/contracts/cat20/cat20.d.ts.map +1 -1
  355. package/dist/types/contracts/cat20/cat20GuardStateLib.d.ts +6 -0
  356. package/dist/types/contracts/cat20/cat20GuardStateLib.d.ts.map +1 -1
  357. package/dist/types/contracts/cat20/cat20GuardVariants.d.ts +20 -0
  358. package/dist/types/contracts/cat20/cat20GuardVariants.d.ts.map +1 -0
  359. package/dist/types/contracts/cat20/cat20Guard_12_12_2.d.ts +2 -10
  360. package/dist/types/contracts/cat20/cat20Guard_12_12_2.d.ts.map +1 -1
  361. package/dist/types/contracts/cat20/cat20Guard_12_12_4.d.ts +2 -10
  362. package/dist/types/contracts/cat20/cat20Guard_12_12_4.d.ts.map +1 -1
  363. package/dist/types/contracts/cat20/cat20Guard_6_6_2.d.ts +2 -10
  364. package/dist/types/contracts/cat20/cat20Guard_6_6_2.d.ts.map +1 -1
  365. package/dist/types/contracts/cat20/cat20Guard_6_6_4.d.ts +2 -10
  366. package/dist/types/contracts/cat20/cat20Guard_6_6_4.d.ts.map +1 -1
  367. package/dist/types/contracts/cat20/minters/cat20ClosedMinter.d.ts.map +1 -1
  368. package/dist/types/contracts/cat20/minters/cat20OpenMinter.d.ts +1 -3
  369. package/dist/types/contracts/cat20/minters/cat20OpenMinter.d.ts.map +1 -1
  370. package/dist/types/contracts/cat20/types.d.ts +5 -6
  371. package/dist/types/contracts/cat20/types.d.ts.map +1 -1
  372. package/dist/types/contracts/cat721/cat721.d.ts +2 -2
  373. package/dist/types/contracts/cat721/cat721.d.ts.map +1 -1
  374. package/dist/types/contracts/cat721/cat721GuardStateLib.d.ts.map +1 -1
  375. package/dist/types/contracts/cat721/cat721GuardVariants.d.ts +20 -0
  376. package/dist/types/contracts/cat721/cat721GuardVariants.d.ts.map +1 -0
  377. package/dist/types/contracts/cat721/cat721Guard_12_12_2.d.ts +1 -9
  378. package/dist/types/contracts/cat721/cat721Guard_12_12_2.d.ts.map +1 -1
  379. package/dist/types/contracts/cat721/cat721Guard_12_12_4.d.ts +1 -9
  380. package/dist/types/contracts/cat721/cat721Guard_12_12_4.d.ts.map +1 -1
  381. package/dist/types/contracts/cat721/cat721Guard_6_6_2.d.ts +1 -9
  382. package/dist/types/contracts/cat721/cat721Guard_6_6_2.d.ts.map +1 -1
  383. package/dist/types/contracts/cat721/cat721Guard_6_6_4.d.ts +1 -9
  384. package/dist/types/contracts/cat721/cat721Guard_6_6_4.d.ts.map +1 -1
  385. package/dist/types/contracts/cat721/minters/cat721ClosedMinter.d.ts +0 -1
  386. package/dist/types/contracts/cat721/minters/cat721ClosedMinter.d.ts.map +1 -1
  387. package/dist/types/contracts/cat721/minters/cat721OpenMinter.d.ts +0 -1
  388. package/dist/types/contracts/cat721/minters/cat721OpenMinter.d.ts.map +1 -1
  389. package/dist/types/contracts/cat721/minters/cat721OpenMinterMerkleTree.d.ts.map +1 -1
  390. package/dist/types/contracts/cat721/types.d.ts +23 -8
  391. package/dist/types/contracts/cat721/types.d.ts.map +1 -1
  392. package/dist/types/contracts/constants.d.ts +20 -0
  393. package/dist/types/contracts/constants.d.ts.map +1 -1
  394. package/dist/types/contracts/index.d.ts +0 -1
  395. package/dist/types/contracts/index.d.ts.map +1 -1
  396. package/dist/types/contracts/types.d.ts +0 -3
  397. package/dist/types/contracts/types.d.ts.map +1 -1
  398. package/dist/types/contracts/utils/ownerUtils.d.ts +0 -1
  399. package/dist/types/contracts/utils/ownerUtils.d.ts.map +1 -1
  400. package/dist/types/features/cat20/admin/burnByAdmin.d.ts +0 -1
  401. package/dist/types/features/cat20/admin/burnByAdmin.d.ts.map +1 -1
  402. package/dist/types/features/cat20/burn/burn.d.ts.map +1 -1
  403. package/dist/types/features/cat20/deploy/closedMinter.d.ts.map +1 -1
  404. package/dist/types/features/cat20/deploy/openMinter.d.ts.map +1 -1
  405. package/dist/types/features/cat20/index.d.ts +0 -1
  406. package/dist/types/features/cat20/index.d.ts.map +1 -1
  407. package/dist/types/features/cat20/mint/closedMinter.d.ts.map +1 -1
  408. package/dist/types/features/cat20/send/contractSend.d.ts.map +1 -1
  409. package/dist/types/features/cat20/send/singleSend.d.ts +5 -1
  410. package/dist/types/features/cat20/send/singleSend.d.ts.map +1 -1
  411. package/dist/types/features/cat721/burn/burn.d.ts.map +1 -1
  412. package/dist/types/features/cat721/index.d.ts +0 -1
  413. package/dist/types/features/cat721/index.d.ts.map +1 -1
  414. package/dist/types/features/cat721/mint/cat721ClosedMinter.d.ts.map +1 -1
  415. package/dist/types/features/cat721/mint/cat721OpenMinter.d.ts.map +1 -1
  416. package/dist/types/features/cat721/send/singleSend.d.ts.map +1 -1
  417. package/dist/types/lib/cat721OPenMinterMerkleTreeData.d.ts.map +1 -1
  418. package/dist/types/utils/contractPeripheral.d.ts +15 -7
  419. package/dist/types/utils/contractPeripheral.d.ts.map +1 -1
  420. package/dist/types/utils/index.d.ts +1 -0
  421. package/dist/types/utils/index.d.ts.map +1 -1
  422. package/package.json +5 -5
  423. package/scrypt.index.json +25 -20
  424. package/artifacts/.templates/utils/safeMath.scrypt.map +0 -1
  425. package/artifacts/.templates/utils/safeMath.scrypt.tpl +0 -11
  426. package/artifacts/.templates/utils/safeMath.transformer.json +0 -7
  427. package/artifacts/utils/safeMath.json +0 -233
  428. package/artifacts/utils/safeMath.scrypt +0 -13
  429. package/dist/artifacts/utils/safeMath.json +0 -233
  430. package/dist/artifacts/utils/safeMath.scrypt +0 -13
  431. package/dist/cjs/contracts/utils/safeMath.js +0 -34
  432. package/dist/cjs/contracts/utils/safeMath.js.map +0 -1
  433. package/dist/cjs/features/cat20/guard/destroyGuard.js +0 -49
  434. package/dist/cjs/features/cat20/guard/destroyGuard.js.map +0 -1
  435. package/dist/cjs/features/cat721/guard/destroyGuard.js +0 -49
  436. package/dist/cjs/features/cat721/guard/destroyGuard.js.map +0 -1
  437. package/dist/esm/contracts/utils/safeMath.js +0 -30
  438. package/dist/esm/contracts/utils/safeMath.js.map +0 -1
  439. package/dist/esm/features/cat20/guard/destroyGuard.js +0 -46
  440. package/dist/esm/features/cat20/guard/destroyGuard.js.map +0 -1
  441. package/dist/esm/features/cat721/guard/destroyGuard.js +0 -46
  442. package/dist/esm/features/cat721/guard/destroyGuard.js.map +0 -1
  443. package/dist/types/contracts/utils/safeMath.d.ts +0 -11
  444. package/dist/types/contracts/utils/safeMath.d.ts.map +0 -1
  445. package/dist/types/features/cat20/guard/destroyGuard.d.ts +0 -21
  446. package/dist/types/features/cat20/guard/destroyGuard.d.ts.map +0 -1
  447. package/dist/types/features/cat721/guard/destroyGuard.d.ts +0 -21
  448. package/dist/types/features/cat721/guard/destroyGuard.d.ts.map +0 -1
@@ -1 +1 @@
1
- [[],[],[],[],[],[],[],[],[],[],[],[],[[9,0,33,13]],[[2,0,35,20],[8,0,35,2]],[[2,0,38,28],[8,0,38,28],[12,0,38,2]],[[2,0,41,12],[7,0,41,2]],[[2,0,44,19],[8,0,44,2]],[[2,0,46,2],[14,0,47,22],[20,0,47,4],[38,0,48,30],[44,0,48,30],[48,0,48,4],[74,0,49,14],[79,0,49,4],[89,0,50,21],[95,0,50,4]],[[4,0,53,4],[8,0,53,9],[26,0,53,4],[28,0,53,28]],[[4,0,54,4],[8,0,54,9],[34,0,54,4],[36,0,54,36]],[[4,0,55,4],[8,0,55,9],[18,0,55,4],[20,0,55,20]],[[4,0,56,4],[8,0,56,9],[25,0,56,4],[27,0,56,27]],[],[[2,0,60,2],[18,0,60,9],[25,0,61,16],[49,0,61,4],[61,0,63,16],[82,0,63,4],[94,0,64,21],[98,0,64,4],[115,0,66,19],[129,0,66,4]],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[[31,0,68,27],[46,0,68,42],[50,0,68,47]],[[4,0,71,4],[8,0,71,9],[20,0,72,6],[107,0,75,6]],[[4,0,80,4],[12,0,81,6],[22,0,81,17],[33,0,81,6],[36,0,81,30],[38,0,81,6],[41,0,81,36],[51,0,81,47],[62,0,81,36],[65,0,81,60]],[[4,0,85,26],[10,0,85,8],[28,0,85,39]],[[4,0,87,4],[7,0,87,8],[17,0,87,19],[40,0,87,8],[43,0,87,44]],[[8,0,89,6],[16,0,90,8],[26,0,90,19],[49,0,90,8]],[[8,0,93,6],[24,0,93,6],[26,0,93,24],[38,0,93,37],[89,0,95,8],[99,0,95,19]],[],[[4,0,99,4],[7,0,99,8],[17,0,99,19],[28,0,99,8],[31,0,99,32]],[[8,0,102,6],[18,0,102,17],[34,0,102,32],[44,0,102,43],[78,0,102,66]],[[8,0,103,6],[16,0,103,18],[24,0,103,13],[25,0,103,27],[35,0,103,38],[45,0,103,47],[55,0,103,58],[66,0,103,13]],[[13,0,104,11],[16,0,104,15],[26,0,104,26],[37,0,104,15],[40,0,104,39]],[[8,0,107,6],[37,0,107,24],[48,0,107,13],[51,0,107,37]],[],[[8,0,110,6],[16,0,110,13],[20,0,110,18]],[[8,0,111,6],[16,0,111,13],[32,0,111,13],[35,0,111,32],[39,0,111,37]],[],[],[],[[11,0,116,2],[22,0,117,16],[43,0,117,4],[55,0,118,23],[61,0,118,4],[80,0,119,26],[84,0,119,4],[106,0,120,24],[110,0,120,4],[130,0,121,23],[136,0,121,4],[155,0,122,26],[161,0,122,4]],[[4,0,125,28],[10,0,125,10],[28,0,125,28],[40,0,125,41],[60,0,125,60],[79,0,125,79]],[[4,0,126,4],[12,0,127,6],[28,0,127,6],[31,0,127,25],[35,0,127,30],[61,0,127,55],[64,0,127,6],[67,0,127,61],[83,0,127,61],[86,0,127,80],[90,0,127,85],[116,0,127,110],[119,0,127,6],[122,0,128,6],[138,0,128,6],[141,0,128,25],[145,0,128,30],[171,0,128,55],[174,0,127,6],[177,0,128,61],[193,0,128,61],[196,0,128,80],[200,0,128,85],[226,0,128,110]],[[4,0,131,4],[12,0,131,11],[24,0,131,24],[42,0,131,41],[64,0,131,63],[84,0,131,11],[87,0,131,86],[105,0,131,105],[116,0,131,115]],[[4,0,135,29],[8,0,135,10],[27,0,135,29],[34,0,135,51],[44,0,135,62],[64,0,135,82],[87,0,135,104],[108,0,135,104],[110,0,135,127]],[[4,0,136,4],[12,0,137,6],[22,0,137,17],[41,0,137,35],[42,0,137,42],[61,0,137,6],[64,0,138,8]],[],[],[],[],[],[],[],[],[]]
1
+ [[],[],[],[],[],[],[],[],[],[],[],[],[],[[9,0,35,13]],[[2,0,37,2],[9,0,37,9],[15,0,37,44],[21,0,37,44],[25,0,37,18],[53,0,38,4],[71,0,38,23],[95,0,39,4],[113,0,39,23],[137,0,40,4],[155,0,40,23],[181,0,41,4],[199,0,41,23]],[[2,0,45,20],[8,0,45,2]],[[2,0,48,12],[7,0,48,2]],[[2,0,51,19],[8,0,51,2]],[[2,0,53,2],[14,0,54,22],[20,0,54,4],[38,0,55,14],[43,0,55,4],[53,0,56,21],[59,0,56,4]],[[4,0,59,4],[8,0,59,9],[26,0,59,4],[28,0,59,28]],[[4,0,60,4],[8,0,60,9],[18,0,60,4],[20,0,60,20]],[[4,0,61,4],[8,0,61,9],[25,0,61,4],[27,0,61,27]],[[4,0,63,4],[7,0,63,8]],[[8,0,64,6],[16,0,65,8],[20,0,65,12],[37,0,65,8],[40,0,65,32]],[],[[8,0,69,6],[16,0,70,8],[32,0,70,8],[35,0,70,40]],[],[],[[2,0,77,2],[18,0,77,9],[25,0,78,16],[49,0,78,4],[61,0,80,16],[82,0,80,4],[94,0,81,21],[98,0,81,4],[115,0,83,19],[129,0,83,4]],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[[31,0,85,27],[46,0,85,42],[50,0,85,47]],[[4,0,88,4],[8,0,88,9],[20,0,89,6],[107,0,92,6]],[[4,0,97,4],[12,0,98,6],[22,0,98,17],[33,0,98,6],[36,0,98,30],[38,0,98,6],[41,0,98,55],[51,0,98,66],[62,0,98,55],[65,0,98,79]],[[4,0,102,26],[10,0,102,8],[28,0,102,39]],[[4,0,105,4],[7,0,105,8],[17,0,105,19],[28,0,105,8],[31,0,105,32],[33,0,105,8],[36,0,105,61],[46,0,105,72],[57,0,105,61],[60,0,105,85]],[[8,0,106,6],[16,0,107,8],[26,0,107,19],[49,0,107,8],[52,0,107,44]],[[8,0,111,6],[16,0,112,8],[26,0,112,19],[49,0,112,8]],[[8,0,116,6],[16,0,117,8],[26,0,117,19],[49,0,117,8]],[[8,0,121,6],[16,0,122,8],[26,0,122,19],[49,0,122,8],[52,0,122,44]],[[8,0,125,6],[24,0,125,6],[26,0,125,24],[38,0,125,37],[89,0,127,8],[99,0,127,19]],[],[[4,0,130,4],[7,0,130,8],[17,0,130,19],[28,0,130,8],[31,0,130,32]],[[8,0,133,6],[18,0,133,17],[34,0,133,32],[44,0,133,43],[78,0,133,66]],[[8,0,134,6],[16,0,134,18],[24,0,134,13],[25,0,134,27],[35,0,134,38],[45,0,134,47],[55,0,134,58],[66,0,134,13]],[[13,0,135,11],[16,0,135,15],[26,0,135,26],[37,0,135,15],[40,0,135,39]],[[8,0,138,6],[37,0,138,24],[48,0,138,13],[51,0,138,37]],[],[[8,0,141,6],[16,0,141,13],[20,0,141,18]],[[8,0,142,6],[16,0,142,13],[32,0,142,13],[35,0,142,32],[39,0,142,37]],[],[],[],[[11,0,147,2],[22,0,148,16],[43,0,148,4],[55,0,149,23],[61,0,149,4],[80,0,150,26],[84,0,150,4],[106,0,151,24],[110,0,151,4],[130,0,152,23],[136,0,152,4],[155,0,153,26],[161,0,153,4]],[[4,0,156,28],[10,0,156,10],[28,0,156,28],[40,0,156,41],[60,0,156,60],[79,0,156,79]],[[4,0,157,4],[12,0,158,6],[28,0,158,6],[31,0,158,25],[36,0,158,31],[62,0,158,56],[65,0,158,6],[68,0,158,62],[84,0,158,62],[87,0,158,81],[92,0,158,87],[118,0,158,112],[121,0,158,6],[124,0,159,6],[140,0,159,6],[143,0,159,25],[148,0,159,31],[174,0,159,56],[177,0,158,6],[180,0,159,62],[196,0,159,62],[199,0,159,81],[204,0,159,87],[230,0,159,112]],[[4,0,162,4],[12,0,162,11],[24,0,162,24],[42,0,162,41],[64,0,162,63],[84,0,162,11],[87,0,162,86],[105,0,162,105],[116,0,162,115]],[[4,0,166,29],[8,0,166,10],[27,0,166,29],[34,0,166,51],[44,0,166,62],[64,0,166,82],[87,0,166,104],[108,0,166,104],[110,0,166,127]],[[4,0,167,4],[12,0,168,6],[22,0,168,17],[41,0,168,35],[42,0,168,42],[61,0,168,6],[64,0,169,8]],[],[],[],[],[],[],[],[],[]]
@@ -1,4 +1,5 @@
1
1
  import "./types.scrypt.tpl";
2
+ import "./cat20GuardVariants.scrypt.tpl";
2
3
  import "../types.scrypt.tpl";
3
4
  import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/types/structs.scrypt.tpl";
4
5
  import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/contextUtils.scrypt.tpl";
@@ -11,17 +12,22 @@ import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-lib
11
12
 
12
13
 
13
14
  contract CAT20 {
15
+ static const Sha256[4] guardVariantScriptHashes = [CAT20GuardVariants.CANONICAL_GUARD_6_6_2, CAT20GuardVariants.CANONICAL_GUARD_6_6_4, CAT20GuardVariants.CANONICAL_GUARD_12_12_2, CAT20GuardVariants.CANONICAL_GUARD_12_12_4];
14
16
  bytes minterScriptHash;
15
- Sha256[4] guardVariantScriptHashes;
16
17
  bool hasAdmin;
17
18
  bytes adminScriptHash;
18
- constructor(bytes minterScriptHash, Sha256[4] guardVariantScriptHashes, bool hasAdmin, bytes adminScriptHash) {
19
+ constructor(bytes minterScriptHash, bool hasAdmin, bytes adminScriptHash) {
19
20
  this.minterScriptHash = minterScriptHash;
20
- this.guardVariantScriptHashes = guardVariantScriptHashes;
21
21
  this.hasAdmin = hasAdmin;
22
22
  this.adminScriptHash = adminScriptHash;
23
+ if(hasAdmin) {
24
+ require(len(adminScriptHash) == 32);
25
+ } else {
26
+ require(adminScriptHash == b'');
27
+ }
23
28
  }
24
29
  public function unlock(CAT20ContractUnlockArgs unlockArgs, CAT20GuardConstState guardState, int guardInputIndex, BacktraceInfo backtraceInfo, SHPreimage __scrypt_ts_shPreimage, Sig __scrypt_ts_preimageSig, CAT20State __scrypt_ts_curState, bytes __scrypt_ts_prevouts, bytes __scrypt_ts_spentAmounts, bytes __scrypt_ts_spentDataHashes, bytes __scrypt_ts_spentScriptHashes, TxHashPreimage __scrypt_ts_prevTxHashPreimage) {
30
+ require(__scrypt_ts_shPreimage.sigHashType == 1);
25
31
  require(checkDataSig(Sig(__scrypt_ts_preimageSig[0 : len(__scrypt_ts_preimageSig) - 1]), sha256(ContextUtils.serializeSHPreimage(__scrypt_ts_shPreimage)), ContextUtils.pubKey) && checkSig(__scrypt_ts_preimageSig, ContextUtils.pubKey));
26
32
 
27
33
  int __scrypt_ts_inputCount = ContextUtils.checkSpentAmounts(__scrypt_ts_spentAmounts, __scrypt_ts_shPreimage.hashSpentAmounts);
@@ -42,8 +48,11 @@ contract CAT20 {
42
48
  this.checkGuard(guardState, __scrypt_ts_shPreimage.spentScriptHash, __scrypt_ts_shPreimage.inputIndex, guardInputIndex, __scrypt_ts_spentScriptHashes, __scrypt_ts_spentDataHashes);
43
49
  require(unlockArgs.spendType >= 0 && unlockArgs.spendType <= 2);
44
50
  bytes spentScriptHash = b'';
45
- if(unlockArgs.spendScriptInputIndex >= 0) {
51
+ if(unlockArgs.spendType == 1 || unlockArgs.spendType == 2) {
52
+ require(unlockArgs.spendScriptInputIndex >= 0);
46
53
  require(unlockArgs.spendScriptInputIndex < __scrypt_ts_inputCount);
54
+ require(unlockArgs.spendScriptInputIndex != __scrypt_ts_shPreimage.inputIndex);
55
+ require(unlockArgs.spendScriptInputIndex != guardInputIndex);
47
56
  spentScriptHash = ContextUtils.getSpentScriptHash(__scrypt_ts_spentScriptHashes, unlockArgs.spendScriptInputIndex);
48
57
  }
49
58
  if(unlockArgs.spendType == 0) {
@@ -59,7 +68,7 @@ contract CAT20 {
59
68
  }
60
69
  function checkGuard(CAT20GuardConstState guardState, bytes t_cat20ScriptHash, int t_cat20InputIndexVal, int guardInputIndexVal, bytes t_spentScriptsCtx, bytes t_spentDataHashesCtx) : bool {
61
70
  bytes guardScriptHash = ContextUtils.getSpentScriptHash(t_spentScriptsCtx, guardInputIndexVal);
62
- require(guardScriptHash == this.guardVariantScriptHashes[0] || guardScriptHash == this.guardVariantScriptHashes[1] || guardScriptHash == this.guardVariantScriptHashes[2] || guardScriptHash == this.guardVariantScriptHashes[3]);
71
+ require(guardScriptHash == CAT20.guardVariantScriptHashes[0] || guardScriptHash == CAT20.guardVariantScriptHashes[1] || guardScriptHash == CAT20.guardVariantScriptHashes[2] || guardScriptHash == CAT20.guardVariantScriptHashes[3]);
63
72
  require(ContextUtils.getSpentDataHash(t_spentDataHashesCtx, guardInputIndexVal) == CAT20GuardStateLib.stateHash(guardState));
64
73
  int tokenScriptIndex = unpack(guardState.tokenScriptIndexes[t_cat20InputIndexVal : t_cat20InputIndexVal + 1]);
65
74
  require(guardState.tokenScriptHashes[(tokenScriptIndex)] == t_cat20ScriptHash);
@@ -1 +1 @@
1
- [[],[],[],[],[],[],[],[],[],[],[[9,0,18,13]],[[2,0,20,19],[8,0,20,2]],[[2,0,22,2],[14,0,22,31],[20,0,22,14]],[[4,0,24,4],[8,0,24,9],[25,0,24,4],[27,0,24,27]],[],[[2,0,28,2],[18,0,28,9],[40,0,30,17],[47,0,30,4],[60,0,31,14],[64,0,31,4],[74,0,33,19],[88,0,33,4]],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[[4,0,36,28],[10,0,36,10]],[[33,0,37,29],[48,0,37,44],[52,0,37,49]],[[4,0,40,4],[14,0,40,15],[30,0,40,30],[64,0,40,54]],[[4,0,41,4],[12,0,41,16],[20,0,41,11],[21,0,41,25],[31,0,41,35],[42,0,41,11]],[[4,0,44,24],[10,0,44,10],[24,0,44,24],[31,0,44,32],[48,0,45,6]],[[4,0,51,4],[20,0,51,29],[32,0,51,29]],[],[],[[2,0,55,2],[18,0,55,9],[36,0,57,17],[43,0,57,4],[56,0,58,14],[60,0,58,4],[70,0,59,19],[80,0,59,4],[95,0,61,19],[109,0,61,4]],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[[4,0,64,28],[10,0,64,10]],[[33,0,65,29],[48,0,65,44],[52,0,65,49]],[[4,0,67,4],[14,0,67,15],[30,0,67,30],[64,0,67,54]],[[4,0,68,4],[12,0,68,16],[20,0,68,11],[21,0,68,25],[31,0,68,35],[42,0,68,11]],[[25,0,71,15],[39,0,71,4],[41,0,72,6],[51,0,72,17],[78,0,72,43]],[[4,0,74,24],[10,0,74,10],[24,0,74,24],[31,0,74,32],[48,0,75,6],[95,0,77,6],[105,0,77,17]],[[4,0,80,4],[20,0,80,29],[32,0,80,29]],[],[],[],[],[],[],[],[],[]]
1
+ [[],[],[],[],[],[],[],[],[],[],[[9,0,18,13]],[[2,0,20,19],[8,0,20,2]],[[2,0,22,2],[14,0,22,31],[20,0,22,14]],[[4,0,24,4],[8,0,24,9],[25,0,24,4],[27,0,24,27]],[],[[2,0,28,2],[18,0,28,9],[40,0,30,17],[47,0,30,4],[60,0,31,14],[64,0,31,4],[74,0,33,19],[88,0,33,4]],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[[4,0,36,28],[10,0,36,10]],[[33,0,37,29],[48,0,37,44],[52,0,37,49]],[[4,0,40,4],[14,0,40,15],[30,0,40,30],[64,0,40,54]],[[4,0,41,4],[12,0,41,16],[20,0,41,11],[21,0,41,25],[31,0,41,35],[42,0,41,11]],[[4,0,44,24],[10,0,44,10],[24,0,44,24],[31,0,44,32],[48,0,45,6]],[[4,0,51,4],[20,0,51,29],[32,0,51,29]],[],[],[[2,0,55,2],[18,0,55,9],[36,0,57,17],[43,0,57,4],[56,0,58,14],[60,0,58,4],[70,0,59,19],[80,0,59,4],[95,0,61,19],[109,0,61,4]],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[[4,0,64,28],[10,0,64,10]],[[33,0,65,29],[48,0,65,44],[52,0,65,49]],[[4,0,67,4],[14,0,67,15],[30,0,67,30],[64,0,67,54]],[[4,0,68,4],[12,0,68,16],[20,0,68,11],[21,0,68,25],[31,0,68,35],[42,0,68,11]],[[25,0,71,15],[39,0,71,4],[41,0,72,6],[51,0,72,17],[78,0,72,43]],[[4,0,74,24],[10,0,74,10],[24,0,74,24],[31,0,74,32],[48,0,75,6],[95,0,77,6],[105,0,77,17]],[[4,0,80,4],[20,0,80,29],[32,0,80,29]],[],[],[],[],[],[],[],[],[]]
@@ -14,6 +14,7 @@ contract CAT20Admin {
14
14
  this.genesisOutpoint = genesisOutpoint;
15
15
  }
16
16
  public function authorizeToSpendToken(PubKey adminPubKey, Sig adminSig, BacktraceInfo backtraceInfo, SHPreimage __scrypt_ts_shPreimage, Sig __scrypt_ts_preimageSig, ChangeInfo __scrypt_ts_changeInfo, CAT20AdminState __scrypt_ts_curState, bytes __scrypt_ts_prevouts, bytes __scrypt_ts_spentAmounts, bytes __scrypt_ts_spentDataHashes, bytes __scrypt_ts_spentScriptHashes, TxHashPreimage __scrypt_ts_prevTxHashPreimage) {
17
+ require(__scrypt_ts_shPreimage.sigHashType == 1);
17
18
  require(checkDataSig(Sig(__scrypt_ts_preimageSig[0 : len(__scrypt_ts_preimageSig) - 1]), sha256(ContextUtils.serializeSHPreimage(__scrypt_ts_shPreimage)), ContextUtils.pubKey) && checkSig(__scrypt_ts_preimageSig, ContextUtils.pubKey));
18
19
 
19
20
  int __scrypt_ts_inputCount = ContextUtils.checkSpentAmounts(__scrypt_ts_spentAmounts, __scrypt_ts_shPreimage.hashSpentAmounts);
@@ -39,6 +40,7 @@ contract CAT20Admin {
39
40
  (__scrypt_ts_changeInfo.satoshis > 0 ? TxUtils.buildDataOutput(sha256(TxUtils.buildP2PKHScript(__scrypt_ts_changeInfo.pubkeyhash)), __scrypt_ts_changeInfo.satoshis, __scrypt_ts_changeInfo.dataHash) : b'')) == __scrypt_ts_shPreimage.hashOutputs);
40
41
  }
41
42
  public function transferOwnership(PubKey adminPubKey, Sig adminSig, Ripemd160 newPubKeyHash, BacktraceInfo backtraceInfo, SHPreimage __scrypt_ts_shPreimage, Sig __scrypt_ts_preimageSig, ChangeInfo __scrypt_ts_changeInfo, CAT20AdminState __scrypt_ts_curState, bytes __scrypt_ts_prevouts, bytes __scrypt_ts_spentAmounts, bytes __scrypt_ts_spentDataHashes, bytes __scrypt_ts_spentScriptHashes, TxHashPreimage __scrypt_ts_prevTxHashPreimage) {
43
+ require(__scrypt_ts_shPreimage.sigHashType == 1);
42
44
  require(checkDataSig(Sig(__scrypt_ts_preimageSig[0 : len(__scrypt_ts_preimageSig) - 1]), sha256(ContextUtils.serializeSHPreimage(__scrypt_ts_shPreimage)), ContextUtils.pubKey) && checkSig(__scrypt_ts_preimageSig, ContextUtils.pubKey));
43
45
 
44
46
  int __scrypt_ts_inputCount = ContextUtils.checkSpentAmounts(__scrypt_ts_spentAmounts, __scrypt_ts_shPreimage.hashSpentAmounts);
@@ -1 +1 @@
1
- [[],[],[],[],[],[[8,0,10,13]],[[2,0,13,2],[18,0,13,9],[35,0,13,34],[56,0,13,26],[64,0,13,73],[81,0,13,56]],[[4,0,14,4],[22,0,14,23],[45,0,14,45],[51,0,14,52]],[[15,0,16,13]],[[8,0,17,24],[12,0,17,12],[24,0,17,24],[28,0,17,28],[34,0,17,35],[53,0,17,53]],[[8,0,18,6],[16,0,18,13],[26,0,18,13],[29,0,18,26]],[[8,0,20,6],[16,0,20,13],[22,0,20,20],[36,0,20,33],[39,0,20,13],[42,0,20,39]],[[8,0,21,6],[16,0,21,13],[22,0,21,20],[40,0,21,37],[43,0,21,13],[46,0,21,43]],[],[[4,0,24,4],[12,0,24,11],[16,0,24,15],[22,0,24,22],[43,0,24,11],[46,0,24,45],[47,0,24,52]],[[29,0,25,13]],[[8,0,26,26],[12,0,26,12],[26,0,26,26],[33,0,26,48],[39,0,26,55],[59,0,26,75],[60,0,26,82],[65,0,26,86],[66,0,26,93],[68,0,26,93],[70,0,26,97]],[[8,0,27,6],[16,0,27,13],[28,0,27,13],[31,0,27,28],[32,0,27,29],[34,0,27,13],[37,0,27,34],[49,0,27,34],[51,0,27,48]],[],[],[],[[2,0,36,2],[18,0,36,9],[40,0,37,18],[45,0,37,18],[49,0,37,4]],[[4,0,40,4],[12,0,40,11],[25,0,40,24],[28,0,40,11],[31,0,40,30],[44,0,40,43]],[[4,0,41,4],[12,0,41,11],[25,0,41,24],[28,0,41,11],[31,0,41,30],[44,0,41,43]],[[4,0,42,4],[12,0,42,11],[25,0,42,24],[28,0,42,11],[31,0,42,30],[44,0,42,43]],[[4,0,43,4],[12,0,43,11],[25,0,43,24],[28,0,43,11],[31,0,43,30],[44,0,43,43]],[[4,0,44,4],[12,0,44,11],[25,0,44,24],[28,0,44,11],[31,0,44,30],[44,0,44,43]],[[4,0,45,4],[12,0,45,11],[25,0,45,24],[28,0,45,11],[31,0,45,30],[44,0,45,43]],[],[],[],[],[],[],[],[],[]]
1
+ [[],[],[],[],[],[[8,0,10,13]],[[2,0,13,2],[18,0,13,9],[35,0,13,34],[56,0,13,26],[64,0,13,73],[81,0,13,56]],[[4,0,14,4],[22,0,14,23],[45,0,14,45],[51,0,14,52]],[[15,0,16,13]],[[8,0,17,24],[12,0,17,12],[24,0,17,24],[28,0,17,28],[34,0,17,35],[53,0,17,53]],[[8,0,18,6],[16,0,18,13],[26,0,18,13],[29,0,18,26]],[],[[4,0,21,4],[12,0,21,11],[16,0,21,15],[22,0,21,22],[43,0,21,11],[46,0,21,45],[47,0,21,52]],[[29,0,22,13]],[[8,0,23,26],[12,0,23,12],[26,0,23,26],[33,0,23,48],[39,0,23,55],[59,0,23,75],[60,0,23,82],[65,0,23,86],[66,0,23,93],[68,0,23,93],[70,0,23,97]],[[8,0,24,6],[16,0,24,13],[28,0,24,13],[31,0,24,28],[32,0,24,29],[34,0,24,13],[37,0,24,34],[49,0,24,34],[51,0,24,48]],[],[],[],[[2,0,33,2],[18,0,33,9],[40,0,34,18],[45,0,34,18],[49,0,34,4]],[[4,0,37,4],[12,0,37,11],[25,0,37,24],[28,0,37,11],[31,0,37,30],[44,0,37,43]],[[4,0,38,4],[12,0,38,11],[25,0,38,24],[28,0,38,11],[31,0,38,30],[44,0,38,43]],[[4,0,39,4],[12,0,39,11],[25,0,39,24],[28,0,39,11],[31,0,39,30],[44,0,39,43]],[[4,0,40,4],[12,0,40,11],[25,0,40,24],[28,0,40,11],[31,0,40,30],[44,0,40,43]],[[4,0,41,4],[12,0,41,11],[25,0,41,24],[28,0,41,11],[31,0,41,30],[44,0,41,43]],[[4,0,42,4],[12,0,42,11],[25,0,42,24],[28,0,42,11],[31,0,42,30],[44,0,42,43]],[],[],[],[],[],[],[],[],[]]
@@ -9,8 +9,6 @@ library CAT20GuardStateLib {
9
9
  loop (4) : i {
10
10
  int scriptLen = len(_state.tokenScriptHashes[i]);
11
11
  require(scriptLen == 32);
12
- require(_state.tokenAmounts[i] >= 0);
13
- require(_state.tokenBurnAmounts[i] >= 0);
14
12
  }
15
13
  require(len(_state.tokenScriptIndexes) == (txInputCountMax));
16
14
  loop (txInputCountMax) : i {
@@ -29,9 +27,9 @@ library CAT20GuardStateLib {
29
27
  return true;
30
28
  }
31
29
  static function serializeState(CAT20GuardConstState __scrypt_ts_curState): bytes {
32
- return num2bin(len(__scrypt_ts_curState.deployerAddr), 2) + __scrypt_ts_curState.deployerAddr + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.deployerAddr) + hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(__scrypt_ts_curState.tokenScriptIndexes));
30
+ return num2bin(len(__scrypt_ts_curState.deployerAddr), 2) + __scrypt_ts_curState.deployerAddr + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.deployerAddr) + hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(__scrypt_ts_curState.tokenScriptIndexes));
33
31
  }
34
32
  static function stateHash(CAT20GuardConstState __scrypt_ts_curState): bytes {
35
- return sha256(num2bin(len(__scrypt_ts_curState.deployerAddr), 2) + __scrypt_ts_curState.deployerAddr + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.deployerAddr) + hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(__scrypt_ts_curState.tokenScriptIndexes)));
33
+ return sha256(num2bin(len(__scrypt_ts_curState.deployerAddr), 2) + __scrypt_ts_curState.deployerAddr + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.deployerAddr) + hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(__scrypt_ts_curState.tokenScriptIndexes)));
36
34
  }
37
35
  }
@@ -0,0 +1 @@
1
+ [[],[[8,0,20,13]],[[2,0,22,2],[9,0,22,9],[15,0,22,41],[22,0,22,18],[46,0,22,50],[53,0,23,17]],[[2,0,27,2],[9,0,27,9],[15,0,27,41],[22,0,27,18],[46,0,27,50],[53,0,28,17]],[[2,0,32,2],[9,0,32,9],[15,0,32,43],[22,0,32,18],[48,0,32,52],[55,0,33,17]],[[2,0,37,2],[9,0,37,9],[15,0,37,43],[22,0,37,18],[48,0,37,52],[55,0,38,17]],[]]
@@ -0,0 +1,7 @@
1
+
2
+ library CAT20GuardVariants {
3
+ static const Sha256 CANONICAL_GUARD_6_6_2 = Sha256(b'f1fe0bb9f5ad4103f6d3662a18e6e786ebd9abc2b4420cfe1ca6fee1dc7aa65e');
4
+ static const Sha256 CANONICAL_GUARD_6_6_4 = Sha256(b'f661842dde494c7bbb511026bddc2d931804a3ce4e7c67da69278244c7b1d46f');
5
+ static const Sha256 CANONICAL_GUARD_12_12_2 = Sha256(b'f5b5da7b5a1e5b001473a80f573eb7228073a89f028a11ce9042ede42176f5a6');
6
+ static const Sha256 CANONICAL_GUARD_12_12_4 = Sha256(b'cd146aa7db3e3e6e18fc95b809934cd57acf26f2e17af74fd3f703bf666e3652');
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "success": true,
3
+ "errors": [],
4
+ "scryptfile": "cat20/cat20GuardVariants.scrypt.tpl",
5
+ "sourceMapFile": "cat20/cat20GuardVariants.scrypt.map",
6
+ "ctxMethods": []
7
+ }
@@ -1 +1 @@
1
- [[],[],[],[],[],[],[],[],[],[],[],[],[],[[9,0,45,13]],[],[[2,0,47,4],[18,0,47,11],[25,0,48,25],[30,0,48,25],[35,0,48,8],[52,0,52,33],[57,0,52,33],[62,0,52,8],[87,0,56,22],[90,0,56,22],[95,0,56,8],[109,0,62,32],[112,0,62,32],[117,0,62,8],[141,0,67,24],[144,0,67,24],[149,0,67,8],[165,0,71,21],[175,0,71,21],[180,0,71,8],[193,0,73,21],[197,0,73,8]],[],[],[],[],[],[],[],[],[],[],[],[],[[4,0,77,8],[22,0,77,27],[63,0,77,56]],[[4,0,80,30],[8,0,80,12],[26,0,80,30]],[[4,0,81,39],[9,0,81,39],[13,0,81,14],[40,0,85,16],[52,0,85,29],[87,0,86,16],[99,0,86,29],[134,0,87,16],[146,0,87,29],[181,0,88,16],[193,0,88,29]],[[15,0,90,17]],[[8,0,91,12],[11,0,91,16],[13,0,91,16],[16,0,91,21]],[[10,0,92,16],[39,0,92,34],[58,0,92,52],[59,0,92,59],[63,0,92,23],[66,0,92,66],[90,0,92,90],[91,0,92,97]],[[10,0,93,16],[39,0,93,34],[53,0,93,47],[54,0,93,54],[58,0,93,23],[61,0,93,61]],[[10,0,94,16],[39,0,94,34],[57,0,94,51],[58,0,94,58],[62,0,94,23],[65,0,94,65]],[],[],[[15,0,98,17]],[[8,0,99,12],[32,0,99,27],[51,0,99,45],[54,0,99,16],[57,0,99,51],[81,0,99,75]],[[10,0,100,16],[25,0,100,16]],[],[],[[15,0,104,17]],[[8,0,105,12],[11,0,105,16],[13,0,105,16],[15,0,105,20],[16,0,105,27]],[[10,0,106,16],[39,0,106,34],[58,0,106,52],[61,0,106,23],[64,0,106,58],[88,0,106,82]],[[10,0,107,16],[18,0,108,20],[43,0,108,35],[62,0,108,53],[66,0,108,20],[69,0,108,60]],[],[[10,0,111,16],[39,0,111,34],[58,0,111,52],[61,0,111,23],[64,0,111,58],[88,0,111,82]],[],[],[[4,0,114,8],[12,0,114,15],[28,0,114,15],[30,0,114,33]],[[4,0,120,31],[7,0,120,31],[11,0,120,14],[28,0,120,31],[35,0,120,36],[38,0,120,40]],[[4,0,121,34],[8,0,121,12],[30,0,121,34],[31,0,121,35]],[[4,0,122,27],[8,0,122,14]],[[16,0,123,17]],[[8,0,124,37],[12,0,124,18],[31,0,124,37],[59,0,124,70],[79,0,124,90],[80,0,124,97],[85,0,124,101],[86,0,124,108],[88,0,124,108],[90,0,124,112]],[[8,0,125,12],[11,0,125,16],[13,0,125,16],[15,0,125,20]],[[10,0,126,16],[18,0,126,23],[35,0,126,23],[37,0,126,42]],[[10,0,127,16],[13,0,127,20],[30,0,127,20],[33,0,127,40],[34,0,127,41]],[[12,0,130,24],[18,0,129,26],[57,0,130,35],[76,0,130,53],[77,0,130,60]],[[12,0,131,20],[20,0,131,27],[36,0,131,27],[39,0,131,46],[51,0,131,59],[102,0,131,106],[103,0,131,113]],[[12,0,132,20],[25,0,132,34],[37,0,132,45],[49,0,132,57]],[[12,0,133,20],[20,0,133,27],[32,0,133,40],[79,0,133,83],[80,0,133,90],[84,0,133,27],[87,0,133,97],[100,0,133,111],[111,0,133,121],[123,0,133,133]],[[12,0,134,20],[27,0,134,35],[28,0,134,42],[47,0,134,20],[49,0,134,63],[57,0,134,72],[62,0,135,24],[77,0,135,39],[78,0,135,46],[98,0,136,24],[110,0,136,36],[112,0,136,39]],[[12,0,138,20],[32,0,138,20],[34,0,139,24],[51,0,139,24],[53,0,139,43],[75,0,140,30],[94,0,141,30]],[],[],[[10,0,144,16],[18,0,144,23],[35,0,144,23],[38,0,144,43],[39,0,144,44]],[],[],[[4,0,150,8],[12,0,151,12],[32,0,151,12],[35,0,151,35],[37,0,151,12],[40,0,151,41],[60,0,151,41],[63,0,151,64],[79,0,151,64],[81,0,151,82]],[[4,0,156,8],[12,0,156,15],[24,0,156,15],[27,0,156,30],[29,0,156,15],[32,0,156,36],[44,0,156,36],[47,0,156,51]],[[4,0,157,32],[7,0,157,32],[11,0,157,14],[29,0,157,32],[36,0,157,37],[39,0,157,41]],[[4,0,158,22],[10,0,158,12],[20,0,158,35]],[[16,0,159,17]],[[8,0,160,12],[11,0,160,16],[13,0,160,16],[15,0,160,20]],[[10,0,161,46],[16,0,161,22],[40,0,161,46],[64,0,161,70]],[[10,0,162,16],[18,0,162,23],[22,0,162,27],[45,0,162,23],[47,0,162,52]],[[10,0,163,45],[14,0,163,22],[37,0,163,45],[60,0,163,68]],[[10,0,164,16],[18,0,164,23],[39,0,164,23],[41,0,164,46]],[[10,0,165,16],[13,0,165,20],[34,0,165,20],[37,0,165,44],[38,0,165,45]],[[12,0,167,40],[16,0,167,26],[30,0,167,40],[43,0,167,53]],[[12,0,168,20],[20,0,168,27],[32,0,168,27],[34,0,168,41]],[[12,0,169,20],[28,0,169,36],[29,0,169,43],[52,0,169,20],[54,0,169,68],[62,0,169,77],[67,0,170,24],[83,0,170,40],[84,0,170,47],[108,0,171,24]],[[12,0,173,43],[18,0,173,26],[35,0,173,43],[48,0,173,57],[59,0,173,67],[60,0,174,35],[83,0,175,32]],[[12,0,177,20],[20,0,177,27],[36,0,177,43],[39,0,177,27],[42,0,177,49]],[[12,0,179,24],[18,0,178,26],[57,0,179,35],[76,0,179,53],[77,0,179,60]],[[12,0,180,20],[20,0,180,20],[23,0,180,31],[30,0,180,39],[47,0,181,24],[64,0,182,24],[79,0,182,39],[83,0,183,24]],[],[[12,0,187,20],[20,0,187,27],[33,0,187,40],[36,0,187,27],[39,0,187,46]],[[23,0,189,29]],[[14,0,190,24],[22,0,190,31],[44,0,190,31],[68,0,190,67],[87,0,190,85]],[],[[12,0,192,20],[20,0,192,20],[23,0,192,31],[30,0,192,39],[47,0,193,24],[70,0,194,24],[85,0,194,39],[89,0,195,24],[105,0,195,40]],[],[],[[10,0,199,16],[18,0,199,23],[22,0,199,27],[46,0,199,51],[50,0,199,23],[53,0,199,58]],[[10,0,200,16],[18,0,200,23],[41,0,200,46],[44,0,200,23],[47,0,200,52],[48,0,200,53]],[[10,0,201,16],[18,0,201,23],[31,0,201,36],[34,0,201,23],[37,0,201,42]],[[10,0,202,16],[18,0,202,23],[34,0,202,39],[37,0,202,23],[40,0,202,58]],[[10,0,203,16],[18,0,203,23],[33,0,203,38],[36,0,203,23],[39,0,203,44]],[],[],[[15,0,208,17]],[[8,0,209,12],[16,0,209,19],[31,0,209,34],[34,0,209,19],[58,0,209,51],[72,0,209,64]],[[8,0,210,12],[16,0,211,16],[31,0,211,31],[34,0,211,16],[37,0,212,16],[45,0,212,25],[50,0,212,29],[66,0,212,45],[91,0,212,60],[109,0,212,77]],[[8,0,215,12],[11,0,215,16],[13,0,215,16],[15,0,215,20],[16,0,215,27]],[[10,0,216,16],[18,0,216,23],[33,0,216,38],[36,0,216,23],[38,0,216,43]],[],[[10,0,218,16],[18,0,218,23],[33,0,218,38],[36,0,218,23],[39,0,218,44]],[[10,0,219,16],[18,0,219,23],[34,0,219,39],[37,0,219,23],[40,0,219,45]],[[10,0,221,16],[39,0,221,34],[53,0,221,47],[56,0,221,23],[59,0,221,53]],[[10,0,222,16],[39,0,222,34],[57,0,222,51],[60,0,222,23],[63,0,222,57]],[],[],[[4,0,227,8],[20,0,227,33]],[],[[2,0,238,4],[18,0,238,11],[26,0,238,28],[30,0,238,19],[39,0,238,45],[46,0,238,33]],[],[],[],[],[],[],[],[],[],[],[[4,0,239,8],[14,0,239,19],[30,0,239,34],[63,0,239,57]],[[4,0,240,8],[12,0,240,20],[20,0,240,15],[21,0,240,29],[30,0,240,38],[40,0,240,15]],[[4,0,241,8]],[],[],[],[],[],[],[],[],[]]
1
+ [[],[],[],[],[],[],[],[],[],[],[],[],[[9,0,45,13]],[],[[2,0,47,4],[18,0,47,11],[25,0,49,21],[29,0,49,8],[42,0,50,24],[49,0,50,8],[65,0,53,22],[68,0,53,22],[72,0,53,8],[86,0,56,26],[89,0,56,26],[93,0,56,8],[111,0,57,25],[116,0,57,25],[121,0,57,8],[138,0,61,33],[143,0,61,33],[148,0,61,8],[173,0,65,22],[176,0,65,22],[181,0,65,8],[195,0,71,32],[198,0,71,32],[203,0,71,8],[227,0,76,24],[230,0,76,24],[235,0,76,8],[251,0,80,21],[261,0,80,21],[266,0,80,8],[279,0,82,21],[283,0,82,8]],[],[],[],[],[],[],[],[],[],[],[],[],[],[[4,0,85,8],[14,0,85,19],[30,0,85,34],[67,0,85,61]],[[4,0,86,8],[12,0,86,20],[20,0,86,15],[21,0,86,29],[34,0,86,42],[48,0,86,15]],[[4,0,90,8],[22,0,90,27],[63,0,90,56]],[[4,0,93,30],[8,0,93,12],[26,0,93,30]],[[4,0,94,39],[9,0,94,39],[13,0,94,14],[40,0,98,16],[52,0,98,29],[87,0,99,16],[99,0,99,29],[134,0,100,16],[146,0,100,29],[181,0,101,16],[193,0,101,29]],[[15,0,103,17]],[[8,0,104,12],[16,0,104,19],[29,0,104,32],[30,0,104,39],[34,0,104,19],[37,0,104,46]],[[8,0,105,12],[16,0,105,19],[33,0,105,36],[34,0,105,43],[38,0,105,19],[41,0,105,50]],[[8,0,106,12],[11,0,106,16],[13,0,106,16],[16,0,106,21]],[[10,0,107,16],[39,0,107,34],[58,0,107,52],[59,0,107,59],[63,0,107,23],[66,0,107,66],[90,0,107,90],[91,0,107,97]],[[10,0,108,16],[18,0,108,23],[31,0,108,36],[32,0,108,43],[36,0,108,23],[39,0,108,50]],[[10,0,109,16],[18,0,109,23],[35,0,109,40],[36,0,109,47],[40,0,109,23],[43,0,109,54]],[],[],[[15,0,113,17]],[[8,0,114,12],[32,0,114,27],[51,0,114,45],[54,0,114,16],[57,0,114,51],[81,0,114,75]],[[10,0,115,16],[25,0,115,16]],[],[],[[15,0,119,17]],[[8,0,120,12],[11,0,120,16],[13,0,120,16],[15,0,120,20],[16,0,120,27]],[[10,0,121,16],[39,0,121,34],[58,0,121,52],[61,0,121,23],[64,0,121,58],[88,0,121,82]],[[10,0,122,16],[18,0,123,20],[43,0,123,35],[62,0,123,53],[66,0,123,20],[69,0,123,60]],[],[[10,0,126,16],[39,0,126,34],[58,0,126,52],[61,0,126,23],[64,0,126,58],[88,0,126,82]],[],[],[[4,0,129,8],[12,0,129,15],[28,0,129,15],[30,0,129,33]],[[4,0,135,31],[7,0,135,31],[11,0,135,14],[28,0,135,31],[35,0,135,36],[38,0,135,40]],[[4,0,136,34],[8,0,136,12],[30,0,136,34]],[[4,0,137,27],[8,0,137,14]],[[4,0,139,8],[12,0,139,15],[23,0,139,15],[26,0,139,29]],[[16,0,140,17]],[[8,0,141,37],[12,0,141,18],[31,0,141,37],[59,0,141,70],[79,0,141,90],[80,0,141,97],[85,0,141,101],[86,0,141,108],[88,0,141,108],[90,0,141,112]],[[8,0,142,12],[11,0,142,16],[13,0,142,16],[15,0,142,20]],[[10,0,143,16],[18,0,143,23],[35,0,143,23],[37,0,143,42]],[[10,0,144,16],[13,0,144,20],[30,0,144,20],[33,0,144,40]],[[12,0,147,24],[18,0,146,26],[57,0,147,35],[76,0,147,53],[77,0,147,60]],[[12,0,148,20],[20,0,148,27],[36,0,148,27],[39,0,148,46],[51,0,148,59],[102,0,148,106],[103,0,148,113]],[[12,0,149,20],[25,0,149,34],[37,0,149,45],[49,0,149,57]],[[12,0,150,20],[20,0,150,27],[32,0,150,40],[79,0,150,83],[80,0,150,90],[84,0,150,27],[87,0,150,97],[100,0,150,111],[111,0,150,121],[123,0,150,133]],[[12,0,151,20],[27,0,151,35],[28,0,151,42],[47,0,151,20],[49,0,151,63],[64,0,151,78],[65,0,151,85],[84,0,151,63],[86,0,151,106],[98,0,151,118],[100,0,151,121]],[[12,0,152,20],[32,0,152,20],[34,0,153,24],[51,0,153,24],[53,0,153,43],[75,0,154,30],[94,0,155,30]],[],[],[[10,0,158,16],[18,0,158,23],[35,0,158,23],[38,0,158,43]],[],[],[[4,0,164,8],[12,0,165,12],[32,0,165,12],[35,0,165,35],[37,0,165,12],[40,0,165,41],[60,0,165,41],[63,0,165,64],[79,0,165,64],[81,0,165,82]],[[4,0,170,8],[12,0,170,15],[24,0,170,15],[27,0,170,30],[29,0,170,15],[32,0,170,36],[44,0,170,36],[47,0,170,51]],[[4,0,171,32],[7,0,171,32],[11,0,171,14],[29,0,171,32],[36,0,171,37],[39,0,171,41]],[[4,0,172,22],[10,0,172,12],[20,0,172,35]],[[16,0,173,17]],[[8,0,174,12],[11,0,174,16],[13,0,174,16],[15,0,174,20]],[[10,0,175,46],[16,0,175,22],[40,0,175,46],[64,0,175,70]],[[10,0,176,45],[14,0,176,22],[37,0,176,45],[60,0,176,68]],[[10,0,177,16],[18,0,177,23],[39,0,177,23],[41,0,177,46]],[[10,0,178,16],[13,0,178,20],[34,0,178,20],[37,0,178,44]],[[12,0,181,20],[22,0,181,31],[38,0,181,46]],[[12,0,182,40],[16,0,182,26],[30,0,182,40],[43,0,182,53]],[[12,0,183,20],[20,0,183,27],[32,0,183,27],[34,0,183,41]],[[12,0,184,20],[28,0,184,36],[29,0,184,43],[52,0,184,20],[54,0,184,68],[70,0,184,84],[71,0,184,91],[94,0,184,68],[96,0,184,116]],[[12,0,185,43],[18,0,185,26],[35,0,185,43],[48,0,185,57],[59,0,185,67],[60,0,186,35],[83,0,187,32]],[[12,0,189,20],[20,0,189,27],[36,0,189,43],[39,0,189,27],[42,0,189,49]],[[12,0,191,24],[18,0,190,26],[57,0,191,35],[76,0,191,53],[77,0,191,60]],[[12,0,192,20],[20,0,192,20],[23,0,192,31],[30,0,192,39],[47,0,193,24],[64,0,194,24],[79,0,194,39],[83,0,195,24]],[],[[12,0,199,20],[20,0,199,27],[33,0,199,40],[36,0,199,27],[39,0,199,46]],[[23,0,201,29]],[[14,0,202,24],[22,0,202,31],[44,0,202,31],[68,0,202,67],[87,0,202,85]],[],[[12,0,204,20],[20,0,204,20],[23,0,204,31],[30,0,204,39],[47,0,205,24],[70,0,206,24],[85,0,206,39],[89,0,207,24],[105,0,207,40]],[],[],[[10,0,211,16],[18,0,211,23],[22,0,211,27],[46,0,211,51],[50,0,211,23],[53,0,211,58]],[[10,0,212,16],[18,0,212,23],[41,0,212,46],[44,0,212,23],[47,0,212,52]],[[10,0,213,16],[18,0,213,23],[31,0,213,36],[34,0,213,23],[37,0,213,42]],[[10,0,214,16],[18,0,214,23],[34,0,214,39],[37,0,214,23],[40,0,214,58]],[[10,0,215,16],[18,0,215,23],[33,0,215,38],[36,0,215,23],[39,0,215,44]],[],[],[[15,0,220,17]],[[8,0,221,12],[16,0,221,19],[31,0,221,34],[34,0,221,19],[37,0,221,40],[50,0,221,53]],[[8,0,222,12],[16,0,223,16],[31,0,223,31],[34,0,223,16],[37,0,224,16],[53,0,224,32],[56,0,224,16],[58,0,224,37],[75,0,224,54]],[[8,0,227,12],[11,0,227,16],[13,0,227,16],[15,0,227,20],[16,0,227,27]],[[10,0,228,16],[18,0,228,23],[33,0,228,38],[36,0,228,23],[38,0,228,43]],[],[[10,0,230,16],[18,0,230,23],[33,0,230,38],[36,0,230,23],[39,0,230,44]],[[10,0,231,16],[18,0,231,23],[34,0,231,39],[37,0,231,23],[40,0,231,45]],[[10,0,233,16],[18,0,233,23],[31,0,233,36],[34,0,233,23],[37,0,233,42]],[[10,0,234,16],[18,0,234,23],[35,0,234,40],[38,0,234,23],[41,0,234,46]],[],[],[[4,0,239,8],[20,0,239,33]],[],[],[],[],[],[],[],[]]
@@ -1,11 +1,10 @@
1
1
  import "./types.scrypt.tpl";
2
+ import "../utils/ownerUtils.scrypt.tpl";
2
3
  import "./cat20GuardStateLib.scrypt.tpl";
3
4
  import "../constants.scrypt.tpl";
4
5
  import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/contextUtils.scrypt.tpl";
5
6
  import "./cat20StateLib.scrypt.tpl";
6
- import "../utils/safeMath.scrypt.tpl";
7
7
  import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/txUtils.scrypt.tpl";
8
- import "../utils/ownerUtils.scrypt.tpl";
9
8
  import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/stdUtils.scrypt.tpl";
10
9
  import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/types/structs.scrypt.tpl";
11
10
  import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/stateUtils.scrypt.tpl";
@@ -13,7 +12,8 @@ import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-lib
13
12
 
14
13
  contract CAT20Guard_12_12_2 {
15
14
  constructor(){}
16
- public function unlock(bytes[12] nextStateHashes, bytes[12] ownerAddrOrScriptHashes, int[12] outputTokens, int[12] tokenScriptHashIndexes, int[12] outputSatoshis, CAT20State[12] cat20States, int outputCount, SHPreimage __scrypt_ts_shPreimage, Sig __scrypt_ts_preimageSig, CAT20GuardConstState __scrypt_ts_curState, bytes __scrypt_ts_spentAmounts, bytes __scrypt_ts_spentDataHashes, bytes __scrypt_ts_spentScriptHashes) {
15
+ public function unlock(Sig deployerSig, PubKey deployerPubKey, int[4] tokenAmounts, int[4] tokenBurnAmounts, bytes[12] nextStateHashes, bytes[12] ownerAddrOrScriptHashes, int[12] outputTokens, int[12] tokenScriptHashIndexes, int[12] outputSatoshis, CAT20State[12] cat20States, int outputCount, SHPreimage __scrypt_ts_shPreimage, Sig __scrypt_ts_preimageSig, CAT20GuardConstState __scrypt_ts_curState, bytes __scrypt_ts_spentAmounts, bytes __scrypt_ts_spentDataHashes, bytes __scrypt_ts_spentScriptHashes) {
16
+ require(__scrypt_ts_shPreimage.sigHashType == 1);
17
17
  require(checkDataSig(Sig(__scrypt_ts_preimageSig[0 : len(__scrypt_ts_preimageSig) - 1]), sha256(ContextUtils.serializeSHPreimage(__scrypt_ts_shPreimage)), ContextUtils.pubKey) && checkSig(__scrypt_ts_preimageSig, ContextUtils.pubKey));
18
18
 
19
19
  int __scrypt_ts_inputCount = ContextUtils.checkSpentAmounts(__scrypt_ts_spentAmounts, __scrypt_ts_shPreimage.hashSpentAmounts);
@@ -26,14 +26,18 @@ contract CAT20Guard_12_12_2 {
26
26
 
27
27
  StateUtils.checkInputState(__scrypt_ts_shPreimage.inputIndex, CAT20Guard_12_12_2.stateHash(__scrypt_ts_curState), __scrypt_ts_spentDataHashes);
28
28
 
29
+ OwnerUtils.checkUserOwner(deployerPubKey, __scrypt_ts_nextState.deployerAddr);
30
+ require(checkSig(deployerSig, deployerPubKey));
29
31
  CAT20GuardStateLib.formalCheckState(__scrypt_ts_nextState, 12);
30
32
  int inputTokenTypes = 0;
31
33
  bytes[4] tokenScriptPlaceholders = [ConstantsLib.TOKEN_SCRIPT_HASH_PLACEHOLDER_FF, ConstantsLib.TOKEN_SCRIPT_HASH_PLACEHOLDER_FE, ConstantsLib.TOKEN_SCRIPT_HASH_PLACEHOLDER_FD, ConstantsLib.TOKEN_SCRIPT_HASH_PLACEHOLDER_FC];
32
34
  loop (4) : i {
35
+ require(tokenAmounts[(i)] >= 0);
36
+ require(tokenBurnAmounts[(i)] >= 0);
33
37
  if(i >= 2) {
34
38
  require(__scrypt_ts_nextState.tokenScriptHashes[(i)] == tokenScriptPlaceholders[(i)]);
35
- require(__scrypt_ts_nextState.tokenAmounts[(i)] == 0);
36
- require(__scrypt_ts_nextState.tokenBurnAmounts[(i)] == 0);
39
+ require(tokenAmounts[(i)] == 0);
40
+ require(tokenBurnAmounts[(i)] == 0);
37
41
  }
38
42
  }
39
43
  loop (2) : i {
@@ -53,6 +57,7 @@ contract CAT20Guard_12_12_2 {
53
57
  int[2] sumInputTokens = repeat(0, 2);
54
58
  int tokenScriptIndexMax = -1;
55
59
  int inputCount = __scrypt_ts_inputCount;
60
+ require(inputCount <= 12);
56
61
  loop (12) : i {
57
62
  int tokenScriptIndex = unpack(__scrypt_ts_nextState.tokenScriptIndexes[(i) : (i + 1)]);
58
63
  if(i < inputCount) {
@@ -62,7 +67,7 @@ contract CAT20Guard_12_12_2 {
62
67
  require(tokenScriptHash == ContextUtils.getSpentScriptHash(__scrypt_ts_spentScriptHashes, (i)));
63
68
  CAT20StateLib.checkState(cat20States[i]);
64
69
  require(ContextUtils.getSpentDataHash(__scrypt_ts_spentDataHashes, (i)) == CAT20StateLib.stateHash(cat20States[i]));
65
- sumInputTokens[(tokenScriptIndex)] = SafeMath.add(sumInputTokens[(tokenScriptIndex)], cat20States[i].amount);
70
+ sumInputTokens[(tokenScriptIndex)] = sumInputTokens[(tokenScriptIndex)] + cat20States[i].amount;
66
71
  tokenScriptIndexMax = tokenScriptIndex > tokenScriptIndexMax ? tokenScriptIndex : tokenScriptIndexMax;
67
72
  }
68
73
  } else {
@@ -76,13 +81,13 @@ contract CAT20Guard_12_12_2 {
76
81
  loop (12) : i {
77
82
  if(i < outputCount) {
78
83
  bytes ownerAddrOrScriptHash = ownerAddrOrScriptHashes[i];
79
- require(len(ownerAddrOrScriptHash) > 0);
80
84
  int tokenScriptHashIndex = tokenScriptHashIndexes[i];
81
85
  require(tokenScriptHashIndex < inputTokenTypes);
82
86
  if(tokenScriptHashIndex != -1) {
87
+ OwnerUtils.checkOwnerAddr(ownerAddrOrScriptHash);
83
88
  int tokenAmount = outputTokens[i];
84
89
  require(tokenAmount > 0);
85
- sumOutputTokens[(tokenScriptHashIndex)] = SafeMath.add(sumOutputTokens[(tokenScriptHashIndex)], tokenAmount);
90
+ sumOutputTokens[(tokenScriptHashIndex)] = sumOutputTokens[(tokenScriptHashIndex)] + tokenAmount;
86
91
  bytes tokenStateHash = CAT20StateLib.stateHash({ownerAddrOrScriptHash, tokenAmount});
87
92
  require(nextStateHashes[i] == tokenStateHash);
88
93
  bytes tokenScriptHash = __scrypt_ts_nextState.tokenScriptHashes[(tokenScriptHashIndex)];
@@ -103,39 +108,23 @@ contract CAT20Guard_12_12_2 {
103
108
  }
104
109
  }
105
110
  loop (2) : i {
106
- require(sumInputTokens[i] == __scrypt_ts_nextState.tokenAmounts[i]);
107
- require(sumInputTokens[i] == SafeMath.add(sumOutputTokens[i], __scrypt_ts_nextState.tokenBurnAmounts[i]));
111
+ require(sumInputTokens[i] == tokenAmounts[i]);
112
+ require(sumInputTokens[i] == sumOutputTokens[i] + tokenBurnAmounts[i]);
108
113
  if(i < (inputTokenTypes)) {
109
114
  require(sumInputTokens[i] > 0);
110
115
  } else {
111
116
  require(sumInputTokens[i] == 0);
112
117
  require(sumOutputTokens[i] == 0);
113
- require(__scrypt_ts_nextState.tokenAmounts[i] == 0);
114
- require(__scrypt_ts_nextState.tokenBurnAmounts[i] == 0);
118
+ require(tokenAmounts[i] == 0);
119
+ require(tokenBurnAmounts[i] == 0);
115
120
  }
116
121
  }
117
122
  require(hash256(outputs) == __scrypt_ts_shPreimage.hashOutputs);
118
123
  }
119
- public function destroy(Sig userSig, PubKey userPubKey, SHPreimage __scrypt_ts_shPreimage, Sig __scrypt_ts_preimageSig, ChangeInfo __scrypt_ts_changeInfo, CAT20GuardConstState __scrypt_ts_curState, bytes __scrypt_ts_spentAmounts, bytes __scrypt_ts_spentDataHashes) {
120
- require(checkDataSig(Sig(__scrypt_ts_preimageSig[0 : len(__scrypt_ts_preimageSig) - 1]), sha256(ContextUtils.serializeSHPreimage(__scrypt_ts_shPreimage)), ContextUtils.pubKey) && checkSig(__scrypt_ts_preimageSig, ContextUtils.pubKey));
121
-
122
- int __scrypt_ts_inputCount = ContextUtils.checkSpentAmounts(__scrypt_ts_spentAmounts, __scrypt_ts_shPreimage.hashSpentAmounts);
123
-
124
- ContextUtils.checkSpentDataHashes(__scrypt_ts_spentDataHashes, __scrypt_ts_shPreimage.hashSpentDataHashes, __scrypt_ts_inputCount);
125
-
126
- CAT20GuardConstState __scrypt_ts_nextState = __scrypt_ts_curState;
127
-
128
- StateUtils.checkInputState(__scrypt_ts_shPreimage.inputIndex, CAT20Guard_12_12_2.stateHash(__scrypt_ts_curState), __scrypt_ts_spentDataHashes);
129
-
130
- OwnerUtils.checkUserOwner(userPubKey, __scrypt_ts_nextState.deployerAddr);
131
- require(checkSig(userSig, userPubKey));
132
- require(hash256(
133
- (__scrypt_ts_changeInfo.satoshis > 0 ? TxUtils.buildDataOutput(sha256(TxUtils.buildP2PKHScript(__scrypt_ts_changeInfo.pubkeyhash)), __scrypt_ts_changeInfo.satoshis, __scrypt_ts_changeInfo.dataHash) : b'')) == __scrypt_ts_shPreimage.hashOutputs);
134
- }
135
124
  static function serializeState(CAT20GuardConstState __scrypt_ts_curState): bytes {
136
- return num2bin(len(__scrypt_ts_curState.deployerAddr), 2) + __scrypt_ts_curState.deployerAddr + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.deployerAddr) + hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(__scrypt_ts_curState.tokenScriptIndexes));
125
+ return num2bin(len(__scrypt_ts_curState.deployerAddr), 2) + __scrypt_ts_curState.deployerAddr + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.deployerAddr) + hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(__scrypt_ts_curState.tokenScriptIndexes));
137
126
  }
138
127
  static function stateHash(CAT20GuardConstState __scrypt_ts_curState): bytes {
139
- return sha256(num2bin(len(__scrypt_ts_curState.deployerAddr), 2) + __scrypt_ts_curState.deployerAddr + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.deployerAddr) + hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(__scrypt_ts_curState.tokenScriptIndexes)));
128
+ return sha256(num2bin(len(__scrypt_ts_curState.deployerAddr), 2) + __scrypt_ts_curState.deployerAddr + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.deployerAddr) + hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(__scrypt_ts_curState.tokenScriptIndexes)));
140
129
  }
141
130
  }
@@ -4,7 +4,6 @@
4
4
  "scryptfile": "cat20/cat20Guard_12_12_2.scrypt.tpl",
5
5
  "sourceMapFile": "cat20/cat20Guard_12_12_2.scrypt.map",
6
6
  "ctxMethods": [
7
- "unlock",
8
- "destroy"
7
+ "unlock"
9
8
  ]
10
9
  }
@@ -1 +1 @@
1
- [[],[],[],[],[],[],[],[],[],[],[],[],[],[[9,0,45,13]],[],[[2,0,47,4],[18,0,47,11],[25,0,48,25],[30,0,48,25],[35,0,48,8],[52,0,52,33],[57,0,52,33],[62,0,52,8],[87,0,56,22],[90,0,56,22],[95,0,56,8],[109,0,62,32],[112,0,62,32],[117,0,62,8],[141,0,67,24],[144,0,67,24],[149,0,67,8],[165,0,71,21],[175,0,71,21],[180,0,71,8],[193,0,73,21],[197,0,73,8]],[],[],[],[],[],[],[],[],[],[],[],[],[[4,0,77,8],[22,0,77,27],[63,0,77,56]],[[4,0,80,30],[8,0,80,12],[26,0,80,30]],[[4,0,81,39],[9,0,81,39],[13,0,81,14],[40,0,85,16],[52,0,85,29],[87,0,86,16],[99,0,86,29],[134,0,87,16],[146,0,87,29],[181,0,88,16],[193,0,88,29]],[[15,0,90,17]],[[8,0,91,12],[11,0,91,16],[13,0,91,16],[16,0,91,21]],[[10,0,92,16],[39,0,92,34],[58,0,92,52],[59,0,92,59],[63,0,92,23],[66,0,92,66],[90,0,92,90],[91,0,92,97]],[[10,0,93,16],[39,0,93,34],[53,0,93,47],[54,0,93,54],[58,0,93,23],[61,0,93,61]],[[10,0,94,16],[39,0,94,34],[57,0,94,51],[58,0,94,58],[62,0,94,23],[65,0,94,65]],[],[],[[15,0,98,17]],[[8,0,99,12],[32,0,99,27],[51,0,99,45],[54,0,99,16],[57,0,99,51],[81,0,99,75]],[[10,0,100,16],[25,0,100,16]],[],[],[[15,0,104,17]],[[8,0,105,12],[11,0,105,16],[13,0,105,16],[15,0,105,20],[16,0,105,27]],[[10,0,106,16],[39,0,106,34],[58,0,106,52],[61,0,106,23],[64,0,106,58],[88,0,106,82]],[[10,0,107,16],[18,0,108,20],[43,0,108,35],[62,0,108,53],[66,0,108,20],[69,0,108,60]],[],[[10,0,111,16],[39,0,111,34],[58,0,111,52],[61,0,111,23],[64,0,111,58],[88,0,111,82]],[],[],[[4,0,114,8],[12,0,114,15],[28,0,114,15],[30,0,114,33]],[[4,0,120,31],[7,0,120,31],[11,0,120,14],[28,0,120,31],[35,0,120,36],[38,0,120,40]],[[4,0,121,34],[8,0,121,12],[30,0,121,34],[31,0,121,35]],[[4,0,122,27],[8,0,122,14]],[[16,0,123,17]],[[8,0,124,37],[12,0,124,18],[31,0,124,37],[59,0,124,70],[79,0,124,90],[80,0,124,97],[85,0,124,101],[86,0,124,108],[88,0,124,108],[90,0,124,112]],[[8,0,125,12],[11,0,125,16],[13,0,125,16],[15,0,125,20]],[[10,0,126,16],[18,0,126,23],[35,0,126,23],[37,0,126,42]],[[10,0,127,16],[13,0,127,20],[30,0,127,20],[33,0,127,40],[34,0,127,41]],[[12,0,130,24],[18,0,129,26],[57,0,130,35],[76,0,130,53],[77,0,130,60]],[[12,0,131,20],[20,0,131,27],[36,0,131,27],[39,0,131,46],[51,0,131,59],[102,0,131,106],[103,0,131,113]],[[12,0,132,20],[25,0,132,34],[37,0,132,45],[49,0,132,57]],[[12,0,133,20],[20,0,133,27],[32,0,133,40],[79,0,133,83],[80,0,133,90],[84,0,133,27],[87,0,133,97],[100,0,133,111],[111,0,133,121],[123,0,133,133]],[[12,0,134,20],[27,0,134,35],[28,0,134,42],[47,0,134,20],[49,0,134,63],[57,0,134,72],[62,0,135,24],[77,0,135,39],[78,0,135,46],[98,0,136,24],[110,0,136,36],[112,0,136,39]],[[12,0,138,20],[32,0,138,20],[34,0,139,24],[51,0,139,24],[53,0,139,43],[75,0,140,30],[94,0,141,30]],[],[],[[10,0,144,16],[18,0,144,23],[35,0,144,23],[38,0,144,43],[39,0,144,44]],[],[],[[4,0,150,8],[12,0,151,12],[32,0,151,12],[35,0,151,35],[37,0,151,12],[40,0,151,41],[60,0,151,41],[63,0,151,64],[79,0,151,64],[81,0,151,82]],[[4,0,156,8],[12,0,156,15],[24,0,156,15],[27,0,156,30],[29,0,156,15],[32,0,156,36],[44,0,156,36],[47,0,156,51]],[[4,0,157,32],[7,0,157,32],[11,0,157,14],[29,0,157,32],[36,0,157,37],[39,0,157,41]],[[4,0,158,22],[10,0,158,12],[20,0,158,35]],[[16,0,159,17]],[[8,0,160,12],[11,0,160,16],[13,0,160,16],[15,0,160,20]],[[10,0,161,46],[16,0,161,22],[40,0,161,46],[64,0,161,70]],[[10,0,162,16],[18,0,162,23],[22,0,162,27],[45,0,162,23],[47,0,162,52]],[[10,0,163,45],[14,0,163,22],[37,0,163,45],[60,0,163,68]],[[10,0,164,16],[18,0,164,23],[39,0,164,23],[41,0,164,46]],[[10,0,165,16],[13,0,165,20],[34,0,165,20],[37,0,165,44],[38,0,165,45]],[[12,0,167,40],[16,0,167,26],[30,0,167,40],[43,0,167,53]],[[12,0,168,20],[20,0,168,27],[32,0,168,27],[34,0,168,41]],[[12,0,169,20],[28,0,169,36],[29,0,169,43],[52,0,169,20],[54,0,169,68],[62,0,169,77],[67,0,170,24],[83,0,170,40],[84,0,170,47],[108,0,171,24]],[[12,0,173,43],[18,0,173,26],[35,0,173,43],[48,0,173,57],[59,0,173,67],[60,0,174,35],[83,0,175,32]],[[12,0,177,20],[20,0,177,27],[36,0,177,43],[39,0,177,27],[42,0,177,49]],[[12,0,179,24],[18,0,178,26],[57,0,179,35],[76,0,179,53],[77,0,179,60]],[[12,0,180,20],[20,0,180,20],[23,0,180,31],[30,0,180,39],[47,0,181,24],[64,0,182,24],[79,0,182,39],[83,0,183,24]],[],[[12,0,187,20],[20,0,187,27],[33,0,187,40],[36,0,187,27],[39,0,187,46]],[[23,0,189,29]],[[14,0,190,24],[22,0,190,31],[44,0,190,31],[68,0,190,67],[87,0,190,85]],[],[[12,0,192,20],[20,0,192,20],[23,0,192,31],[30,0,192,39],[47,0,193,24],[70,0,194,24],[85,0,194,39],[89,0,195,24],[105,0,195,40]],[],[],[[10,0,199,16],[18,0,199,23],[22,0,199,27],[46,0,199,51],[50,0,199,23],[53,0,199,58]],[[10,0,200,16],[18,0,200,23],[41,0,200,46],[44,0,200,23],[47,0,200,52],[48,0,200,53]],[[10,0,201,16],[18,0,201,23],[31,0,201,36],[34,0,201,23],[37,0,201,42]],[[10,0,202,16],[18,0,202,23],[34,0,202,39],[37,0,202,23],[40,0,202,58]],[[10,0,203,16],[18,0,203,23],[33,0,203,38],[36,0,203,23],[39,0,203,44]],[],[],[[15,0,208,17]],[[8,0,209,12],[16,0,209,19],[31,0,209,34],[34,0,209,19],[58,0,209,51],[72,0,209,64]],[[8,0,210,12],[16,0,211,16],[31,0,211,31],[34,0,211,16],[37,0,212,16],[45,0,212,25],[50,0,212,29],[66,0,212,45],[91,0,212,60],[109,0,212,77]],[[8,0,215,12],[11,0,215,16],[13,0,215,16],[15,0,215,20],[16,0,215,27]],[[10,0,216,16],[18,0,216,23],[33,0,216,38],[36,0,216,23],[38,0,216,43]],[],[[10,0,218,16],[18,0,218,23],[33,0,218,38],[36,0,218,23],[39,0,218,44]],[[10,0,219,16],[18,0,219,23],[34,0,219,39],[37,0,219,23],[40,0,219,45]],[[10,0,221,16],[39,0,221,34],[53,0,221,47],[56,0,221,23],[59,0,221,53]],[[10,0,222,16],[39,0,222,34],[57,0,222,51],[60,0,222,23],[63,0,222,57]],[],[],[[4,0,227,8],[20,0,227,33]],[],[[2,0,238,4],[18,0,238,11],[26,0,238,28],[30,0,238,19],[39,0,238,45],[46,0,238,33]],[],[],[],[],[],[],[],[],[],[],[[4,0,239,8],[14,0,239,19],[30,0,239,34],[63,0,239,57]],[[4,0,240,8],[12,0,240,20],[20,0,240,15],[21,0,240,29],[30,0,240,38],[40,0,240,15]],[[4,0,241,8]],[],[],[],[],[],[],[],[],[]]
1
+ [[],[],[],[],[],[],[],[],[],[],[],[],[[9,0,45,13]],[],[[2,0,47,4],[18,0,47,11],[25,0,49,21],[29,0,49,8],[42,0,50,24],[49,0,50,8],[65,0,53,22],[68,0,53,22],[72,0,53,8],[86,0,56,26],[89,0,56,26],[93,0,56,8],[111,0,57,25],[116,0,57,25],[121,0,57,8],[138,0,61,33],[143,0,61,33],[148,0,61,8],[173,0,65,22],[176,0,65,22],[181,0,65,8],[195,0,71,32],[198,0,71,32],[203,0,71,8],[227,0,76,24],[230,0,76,24],[235,0,76,8],[251,0,80,21],[261,0,80,21],[266,0,80,8],[279,0,82,21],[283,0,82,8]],[],[],[],[],[],[],[],[],[],[],[],[],[],[[4,0,85,8],[14,0,85,19],[30,0,85,34],[67,0,85,61]],[[4,0,86,8],[12,0,86,20],[20,0,86,15],[21,0,86,29],[34,0,86,42],[48,0,86,15]],[[4,0,90,8],[22,0,90,27],[63,0,90,56]],[[4,0,93,30],[8,0,93,12],[26,0,93,30]],[[4,0,94,39],[9,0,94,39],[13,0,94,14],[40,0,98,16],[52,0,98,29],[87,0,99,16],[99,0,99,29],[134,0,100,16],[146,0,100,29],[181,0,101,16],[193,0,101,29]],[[15,0,103,17]],[[8,0,104,12],[16,0,104,19],[29,0,104,32],[30,0,104,39],[34,0,104,19],[37,0,104,46]],[[8,0,105,12],[16,0,105,19],[33,0,105,36],[34,0,105,43],[38,0,105,19],[41,0,105,50]],[[8,0,106,12],[11,0,106,16],[13,0,106,16],[16,0,106,21]],[[10,0,107,16],[39,0,107,34],[58,0,107,52],[59,0,107,59],[63,0,107,23],[66,0,107,66],[90,0,107,90],[91,0,107,97]],[[10,0,108,16],[18,0,108,23],[31,0,108,36],[32,0,108,43],[36,0,108,23],[39,0,108,50]],[[10,0,109,16],[18,0,109,23],[35,0,109,40],[36,0,109,47],[40,0,109,23],[43,0,109,54]],[],[],[[15,0,113,17]],[[8,0,114,12],[32,0,114,27],[51,0,114,45],[54,0,114,16],[57,0,114,51],[81,0,114,75]],[[10,0,115,16],[25,0,115,16]],[],[],[[15,0,119,17]],[[8,0,120,12],[11,0,120,16],[13,0,120,16],[15,0,120,20],[16,0,120,27]],[[10,0,121,16],[39,0,121,34],[58,0,121,52],[61,0,121,23],[64,0,121,58],[88,0,121,82]],[[10,0,122,16],[18,0,123,20],[43,0,123,35],[62,0,123,53],[66,0,123,20],[69,0,123,60]],[],[[10,0,126,16],[39,0,126,34],[58,0,126,52],[61,0,126,23],[64,0,126,58],[88,0,126,82]],[],[],[[4,0,129,8],[12,0,129,15],[28,0,129,15],[30,0,129,33]],[[4,0,135,31],[7,0,135,31],[11,0,135,14],[28,0,135,31],[35,0,135,36],[38,0,135,40]],[[4,0,136,34],[8,0,136,12],[30,0,136,34]],[[4,0,137,27],[8,0,137,14]],[[4,0,139,8],[12,0,139,15],[23,0,139,15],[26,0,139,29]],[[16,0,140,17]],[[8,0,141,37],[12,0,141,18],[31,0,141,37],[59,0,141,70],[79,0,141,90],[80,0,141,97],[85,0,141,101],[86,0,141,108],[88,0,141,108],[90,0,141,112]],[[8,0,142,12],[11,0,142,16],[13,0,142,16],[15,0,142,20]],[[10,0,143,16],[18,0,143,23],[35,0,143,23],[37,0,143,42]],[[10,0,144,16],[13,0,144,20],[30,0,144,20],[33,0,144,40]],[[12,0,147,24],[18,0,146,26],[57,0,147,35],[76,0,147,53],[77,0,147,60]],[[12,0,148,20],[20,0,148,27],[36,0,148,27],[39,0,148,46],[51,0,148,59],[102,0,148,106],[103,0,148,113]],[[12,0,149,20],[25,0,149,34],[37,0,149,45],[49,0,149,57]],[[12,0,150,20],[20,0,150,27],[32,0,150,40],[79,0,150,83],[80,0,150,90],[84,0,150,27],[87,0,150,97],[100,0,150,111],[111,0,150,121],[123,0,150,133]],[[12,0,151,20],[27,0,151,35],[28,0,151,42],[47,0,151,20],[49,0,151,63],[64,0,151,78],[65,0,151,85],[84,0,151,63],[86,0,151,106],[98,0,151,118],[100,0,151,121]],[[12,0,152,20],[32,0,152,20],[34,0,153,24],[51,0,153,24],[53,0,153,43],[75,0,154,30],[94,0,155,30]],[],[],[[10,0,158,16],[18,0,158,23],[35,0,158,23],[38,0,158,43]],[],[],[[4,0,164,8],[12,0,165,12],[32,0,165,12],[35,0,165,35],[37,0,165,12],[40,0,165,41],[60,0,165,41],[63,0,165,64],[79,0,165,64],[81,0,165,82]],[[4,0,170,8],[12,0,170,15],[24,0,170,15],[27,0,170,30],[29,0,170,15],[32,0,170,36],[44,0,170,36],[47,0,170,51]],[[4,0,171,32],[7,0,171,32],[11,0,171,14],[29,0,171,32],[36,0,171,37],[39,0,171,41]],[[4,0,172,22],[10,0,172,12],[20,0,172,35]],[[16,0,173,17]],[[8,0,174,12],[11,0,174,16],[13,0,174,16],[15,0,174,20]],[[10,0,175,46],[16,0,175,22],[40,0,175,46],[64,0,175,70]],[[10,0,176,45],[14,0,176,22],[37,0,176,45],[60,0,176,68]],[[10,0,177,16],[18,0,177,23],[39,0,177,23],[41,0,177,46]],[[10,0,178,16],[13,0,178,20],[34,0,178,20],[37,0,178,44]],[[12,0,181,20],[22,0,181,31],[38,0,181,46]],[[12,0,182,40],[16,0,182,26],[30,0,182,40],[43,0,182,53]],[[12,0,183,20],[20,0,183,27],[32,0,183,27],[34,0,183,41]],[[12,0,184,20],[28,0,184,36],[29,0,184,43],[52,0,184,20],[54,0,184,68],[70,0,184,84],[71,0,184,91],[94,0,184,68],[96,0,184,116]],[[12,0,185,43],[18,0,185,26],[35,0,185,43],[48,0,185,57],[59,0,185,67],[60,0,186,35],[83,0,187,32]],[[12,0,189,20],[20,0,189,27],[36,0,189,43],[39,0,189,27],[42,0,189,49]],[[12,0,191,24],[18,0,190,26],[57,0,191,35],[76,0,191,53],[77,0,191,60]],[[12,0,192,20],[20,0,192,20],[23,0,192,31],[30,0,192,39],[47,0,193,24],[64,0,194,24],[79,0,194,39],[83,0,195,24]],[],[[12,0,199,20],[20,0,199,27],[33,0,199,40],[36,0,199,27],[39,0,199,46]],[[23,0,201,29]],[[14,0,202,24],[22,0,202,31],[44,0,202,31],[68,0,202,67],[87,0,202,85]],[],[[12,0,204,20],[20,0,204,20],[23,0,204,31],[30,0,204,39],[47,0,205,24],[70,0,206,24],[85,0,206,39],[89,0,207,24],[105,0,207,40]],[],[],[[10,0,211,16],[18,0,211,23],[22,0,211,27],[46,0,211,51],[50,0,211,23],[53,0,211,58]],[[10,0,212,16],[18,0,212,23],[41,0,212,46],[44,0,212,23],[47,0,212,52]],[[10,0,213,16],[18,0,213,23],[31,0,213,36],[34,0,213,23],[37,0,213,42]],[[10,0,214,16],[18,0,214,23],[34,0,214,39],[37,0,214,23],[40,0,214,58]],[[10,0,215,16],[18,0,215,23],[33,0,215,38],[36,0,215,23],[39,0,215,44]],[],[],[[15,0,220,17]],[[8,0,221,12],[16,0,221,19],[31,0,221,34],[34,0,221,19],[37,0,221,40],[50,0,221,53]],[[8,0,222,12],[16,0,223,16],[31,0,223,31],[34,0,223,16],[37,0,224,16],[53,0,224,32],[56,0,224,16],[58,0,224,37],[75,0,224,54]],[[8,0,227,12],[11,0,227,16],[13,0,227,16],[15,0,227,20],[16,0,227,27]],[[10,0,228,16],[18,0,228,23],[33,0,228,38],[36,0,228,23],[38,0,228,43]],[],[[10,0,230,16],[18,0,230,23],[33,0,230,38],[36,0,230,23],[39,0,230,44]],[[10,0,231,16],[18,0,231,23],[34,0,231,39],[37,0,231,23],[40,0,231,45]],[[10,0,233,16],[18,0,233,23],[31,0,233,36],[34,0,233,23],[37,0,233,42]],[[10,0,234,16],[18,0,234,23],[35,0,234,40],[38,0,234,23],[41,0,234,46]],[],[],[[4,0,239,8],[20,0,239,33]],[],[],[],[],[],[],[],[]]
@@ -1,11 +1,10 @@
1
1
  import "./types.scrypt.tpl";
2
+ import "../utils/ownerUtils.scrypt.tpl";
2
3
  import "./cat20GuardStateLib.scrypt.tpl";
3
4
  import "../constants.scrypt.tpl";
4
5
  import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/contextUtils.scrypt.tpl";
5
6
  import "./cat20StateLib.scrypt.tpl";
6
- import "../utils/safeMath.scrypt.tpl";
7
7
  import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/txUtils.scrypt.tpl";
8
- import "../utils/ownerUtils.scrypt.tpl";
9
8
  import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/stdUtils.scrypt.tpl";
10
9
  import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/types/structs.scrypt.tpl";
11
10
  import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/stateUtils.scrypt.tpl";
@@ -13,7 +12,8 @@ import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-lib
13
12
 
14
13
  contract CAT20Guard_12_12_4 {
15
14
  constructor(){}
16
- public function unlock(bytes[12] nextStateHashes, bytes[12] ownerAddrOrScriptHashes, int[12] outputTokens, int[12] tokenScriptHashIndexes, int[12] outputSatoshis, CAT20State[12] cat20States, int outputCount, SHPreimage __scrypt_ts_shPreimage, Sig __scrypt_ts_preimageSig, CAT20GuardConstState __scrypt_ts_curState, bytes __scrypt_ts_spentAmounts, bytes __scrypt_ts_spentDataHashes, bytes __scrypt_ts_spentScriptHashes) {
15
+ public function unlock(Sig deployerSig, PubKey deployerPubKey, int[4] tokenAmounts, int[4] tokenBurnAmounts, bytes[12] nextStateHashes, bytes[12] ownerAddrOrScriptHashes, int[12] outputTokens, int[12] tokenScriptHashIndexes, int[12] outputSatoshis, CAT20State[12] cat20States, int outputCount, SHPreimage __scrypt_ts_shPreimage, Sig __scrypt_ts_preimageSig, CAT20GuardConstState __scrypt_ts_curState, bytes __scrypt_ts_spentAmounts, bytes __scrypt_ts_spentDataHashes, bytes __scrypt_ts_spentScriptHashes) {
16
+ require(__scrypt_ts_shPreimage.sigHashType == 1);
17
17
  require(checkDataSig(Sig(__scrypt_ts_preimageSig[0 : len(__scrypt_ts_preimageSig) - 1]), sha256(ContextUtils.serializeSHPreimage(__scrypt_ts_shPreimage)), ContextUtils.pubKey) && checkSig(__scrypt_ts_preimageSig, ContextUtils.pubKey));
18
18
 
19
19
  int __scrypt_ts_inputCount = ContextUtils.checkSpentAmounts(__scrypt_ts_spentAmounts, __scrypt_ts_shPreimage.hashSpentAmounts);
@@ -26,14 +26,18 @@ contract CAT20Guard_12_12_4 {
26
26
 
27
27
  StateUtils.checkInputState(__scrypt_ts_shPreimage.inputIndex, CAT20Guard_12_12_4.stateHash(__scrypt_ts_curState), __scrypt_ts_spentDataHashes);
28
28
 
29
+ OwnerUtils.checkUserOwner(deployerPubKey, __scrypt_ts_nextState.deployerAddr);
30
+ require(checkSig(deployerSig, deployerPubKey));
29
31
  CAT20GuardStateLib.formalCheckState(__scrypt_ts_nextState, 12);
30
32
  int inputTokenTypes = 0;
31
33
  bytes[4] tokenScriptPlaceholders = [ConstantsLib.TOKEN_SCRIPT_HASH_PLACEHOLDER_FF, ConstantsLib.TOKEN_SCRIPT_HASH_PLACEHOLDER_FE, ConstantsLib.TOKEN_SCRIPT_HASH_PLACEHOLDER_FD, ConstantsLib.TOKEN_SCRIPT_HASH_PLACEHOLDER_FC];
32
34
  loop (4) : i {
35
+ require(tokenAmounts[(i)] >= 0);
36
+ require(tokenBurnAmounts[(i)] >= 0);
33
37
  if(i >= 4) {
34
38
  require(__scrypt_ts_nextState.tokenScriptHashes[(i)] == tokenScriptPlaceholders[(i)]);
35
- require(__scrypt_ts_nextState.tokenAmounts[(i)] == 0);
36
- require(__scrypt_ts_nextState.tokenBurnAmounts[(i)] == 0);
39
+ require(tokenAmounts[(i)] == 0);
40
+ require(tokenBurnAmounts[(i)] == 0);
37
41
  }
38
42
  }
39
43
  loop (4) : i {
@@ -53,6 +57,7 @@ contract CAT20Guard_12_12_4 {
53
57
  int[4] sumInputTokens = repeat(0, 4);
54
58
  int tokenScriptIndexMax = -1;
55
59
  int inputCount = __scrypt_ts_inputCount;
60
+ require(inputCount <= 12);
56
61
  loop (12) : i {
57
62
  int tokenScriptIndex = unpack(__scrypt_ts_nextState.tokenScriptIndexes[(i) : (i + 1)]);
58
63
  if(i < inputCount) {
@@ -62,7 +67,7 @@ contract CAT20Guard_12_12_4 {
62
67
  require(tokenScriptHash == ContextUtils.getSpentScriptHash(__scrypt_ts_spentScriptHashes, (i)));
63
68
  CAT20StateLib.checkState(cat20States[i]);
64
69
  require(ContextUtils.getSpentDataHash(__scrypt_ts_spentDataHashes, (i)) == CAT20StateLib.stateHash(cat20States[i]));
65
- sumInputTokens[(tokenScriptIndex)] = SafeMath.add(sumInputTokens[(tokenScriptIndex)], cat20States[i].amount);
70
+ sumInputTokens[(tokenScriptIndex)] = sumInputTokens[(tokenScriptIndex)] + cat20States[i].amount;
66
71
  tokenScriptIndexMax = tokenScriptIndex > tokenScriptIndexMax ? tokenScriptIndex : tokenScriptIndexMax;
67
72
  }
68
73
  } else {
@@ -76,13 +81,13 @@ contract CAT20Guard_12_12_4 {
76
81
  loop (12) : i {
77
82
  if(i < outputCount) {
78
83
  bytes ownerAddrOrScriptHash = ownerAddrOrScriptHashes[i];
79
- require(len(ownerAddrOrScriptHash) > 0);
80
84
  int tokenScriptHashIndex = tokenScriptHashIndexes[i];
81
85
  require(tokenScriptHashIndex < inputTokenTypes);
82
86
  if(tokenScriptHashIndex != -1) {
87
+ OwnerUtils.checkOwnerAddr(ownerAddrOrScriptHash);
83
88
  int tokenAmount = outputTokens[i];
84
89
  require(tokenAmount > 0);
85
- sumOutputTokens[(tokenScriptHashIndex)] = SafeMath.add(sumOutputTokens[(tokenScriptHashIndex)], tokenAmount);
90
+ sumOutputTokens[(tokenScriptHashIndex)] = sumOutputTokens[(tokenScriptHashIndex)] + tokenAmount;
86
91
  bytes tokenStateHash = CAT20StateLib.stateHash({ownerAddrOrScriptHash, tokenAmount});
87
92
  require(nextStateHashes[i] == tokenStateHash);
88
93
  bytes tokenScriptHash = __scrypt_ts_nextState.tokenScriptHashes[(tokenScriptHashIndex)];
@@ -103,39 +108,23 @@ contract CAT20Guard_12_12_4 {
103
108
  }
104
109
  }
105
110
  loop (4) : i {
106
- require(sumInputTokens[i] == __scrypt_ts_nextState.tokenAmounts[i]);
107
- require(sumInputTokens[i] == SafeMath.add(sumOutputTokens[i], __scrypt_ts_nextState.tokenBurnAmounts[i]));
111
+ require(sumInputTokens[i] == tokenAmounts[i]);
112
+ require(sumInputTokens[i] == sumOutputTokens[i] + tokenBurnAmounts[i]);
108
113
  if(i < (inputTokenTypes)) {
109
114
  require(sumInputTokens[i] > 0);
110
115
  } else {
111
116
  require(sumInputTokens[i] == 0);
112
117
  require(sumOutputTokens[i] == 0);
113
- require(__scrypt_ts_nextState.tokenAmounts[i] == 0);
114
- require(__scrypt_ts_nextState.tokenBurnAmounts[i] == 0);
118
+ require(tokenAmounts[i] == 0);
119
+ require(tokenBurnAmounts[i] == 0);
115
120
  }
116
121
  }
117
122
  require(hash256(outputs) == __scrypt_ts_shPreimage.hashOutputs);
118
123
  }
119
- public function destroy(Sig userSig, PubKey userPubKey, SHPreimage __scrypt_ts_shPreimage, Sig __scrypt_ts_preimageSig, ChangeInfo __scrypt_ts_changeInfo, CAT20GuardConstState __scrypt_ts_curState, bytes __scrypt_ts_spentAmounts, bytes __scrypt_ts_spentDataHashes) {
120
- require(checkDataSig(Sig(__scrypt_ts_preimageSig[0 : len(__scrypt_ts_preimageSig) - 1]), sha256(ContextUtils.serializeSHPreimage(__scrypt_ts_shPreimage)), ContextUtils.pubKey) && checkSig(__scrypt_ts_preimageSig, ContextUtils.pubKey));
121
-
122
- int __scrypt_ts_inputCount = ContextUtils.checkSpentAmounts(__scrypt_ts_spentAmounts, __scrypt_ts_shPreimage.hashSpentAmounts);
123
-
124
- ContextUtils.checkSpentDataHashes(__scrypt_ts_spentDataHashes, __scrypt_ts_shPreimage.hashSpentDataHashes, __scrypt_ts_inputCount);
125
-
126
- CAT20GuardConstState __scrypt_ts_nextState = __scrypt_ts_curState;
127
-
128
- StateUtils.checkInputState(__scrypt_ts_shPreimage.inputIndex, CAT20Guard_12_12_4.stateHash(__scrypt_ts_curState), __scrypt_ts_spentDataHashes);
129
-
130
- OwnerUtils.checkUserOwner(userPubKey, __scrypt_ts_nextState.deployerAddr);
131
- require(checkSig(userSig, userPubKey));
132
- require(hash256(
133
- (__scrypt_ts_changeInfo.satoshis > 0 ? TxUtils.buildDataOutput(sha256(TxUtils.buildP2PKHScript(__scrypt_ts_changeInfo.pubkeyhash)), __scrypt_ts_changeInfo.satoshis, __scrypt_ts_changeInfo.dataHash) : b'')) == __scrypt_ts_shPreimage.hashOutputs);
134
- }
135
124
  static function serializeState(CAT20GuardConstState __scrypt_ts_curState): bytes {
136
- return num2bin(len(__scrypt_ts_curState.deployerAddr), 2) + __scrypt_ts_curState.deployerAddr + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.deployerAddr) + hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(__scrypt_ts_curState.tokenScriptIndexes));
125
+ return num2bin(len(__scrypt_ts_curState.deployerAddr), 2) + __scrypt_ts_curState.deployerAddr + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.deployerAddr) + hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(__scrypt_ts_curState.tokenScriptIndexes));
137
126
  }
138
127
  static function stateHash(CAT20GuardConstState __scrypt_ts_curState): bytes {
139
- return sha256(num2bin(len(__scrypt_ts_curState.deployerAddr), 2) + __scrypt_ts_curState.deployerAddr + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.deployerAddr) + hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(__scrypt_ts_curState.tokenScriptIndexes)));
128
+ return sha256(num2bin(len(__scrypt_ts_curState.deployerAddr), 2) + __scrypt_ts_curState.deployerAddr + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.deployerAddr) + hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(__scrypt_ts_curState.tokenScriptIndexes)));
140
129
  }
141
130
  }
@@ -4,7 +4,6 @@
4
4
  "scryptfile": "cat20/cat20Guard_12_12_4.scrypt.tpl",
5
5
  "sourceMapFile": "cat20/cat20Guard_12_12_4.scrypt.map",
6
6
  "ctxMethods": [
7
- "unlock",
8
- "destroy"
7
+ "unlock"
9
8
  ]
10
9
  }