@opcat-labs/cat-sdk 3.1.0 → 3.3.0

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 (285) hide show
  1. package/artifacts/.templates/cat20/cat20Admin.scrypt.tpl +4 -4
  2. package/artifacts/.templates/cat20/cat20GuardStateLib.scrypt.tpl +2 -2
  3. package/artifacts/.templates/cat20/cat20Guard_12_12_2.scrypt.map +1 -1
  4. package/artifacts/.templates/cat20/cat20Guard_12_12_2.scrypt.tpl +19 -2
  5. package/artifacts/.templates/cat20/cat20Guard_12_12_2.transformer.json +2 -1
  6. package/artifacts/.templates/cat20/cat20Guard_12_12_4.scrypt.map +1 -1
  7. package/artifacts/.templates/cat20/cat20Guard_12_12_4.scrypt.tpl +19 -2
  8. package/artifacts/.templates/cat20/cat20Guard_12_12_4.transformer.json +2 -1
  9. package/artifacts/.templates/cat20/cat20Guard_6_6_2.scrypt.map +1 -1
  10. package/artifacts/.templates/cat20/cat20Guard_6_6_2.scrypt.tpl +19 -2
  11. package/artifacts/.templates/cat20/cat20Guard_6_6_2.transformer.json +2 -1
  12. package/artifacts/.templates/cat20/cat20Guard_6_6_4.scrypt.map +1 -1
  13. package/artifacts/.templates/cat20/cat20Guard_6_6_4.scrypt.tpl +19 -2
  14. package/artifacts/.templates/cat20/cat20Guard_6_6_4.transformer.json +2 -1
  15. package/artifacts/.templates/cat20/minters/cat20ClosedMinter.scrypt.tpl +2 -2
  16. package/artifacts/.templates/cat20/minters/cat20OpenMinter.scrypt.tpl +2 -2
  17. package/artifacts/.templates/cat20/types.scrypt.map +1 -1
  18. package/artifacts/.templates/cat20/types.scrypt.tpl +1 -0
  19. package/artifacts/.templates/cat721/cat721GuardStateLib.scrypt.tpl +2 -2
  20. package/artifacts/.templates/cat721/cat721Guard_12_12_2.scrypt.map +1 -1
  21. package/artifacts/.templates/cat721/cat721Guard_12_12_2.scrypt.tpl +19 -2
  22. package/artifacts/.templates/cat721/cat721Guard_12_12_2.transformer.json +2 -1
  23. package/artifacts/.templates/cat721/cat721Guard_12_12_4.scrypt.map +1 -1
  24. package/artifacts/.templates/cat721/cat721Guard_12_12_4.scrypt.tpl +19 -2
  25. package/artifacts/.templates/cat721/cat721Guard_12_12_4.transformer.json +2 -1
  26. package/artifacts/.templates/cat721/cat721Guard_6_6_2.scrypt.map +1 -1
  27. package/artifacts/.templates/cat721/cat721Guard_6_6_2.scrypt.tpl +19 -2
  28. package/artifacts/.templates/cat721/cat721Guard_6_6_2.transformer.json +2 -1
  29. package/artifacts/.templates/cat721/cat721Guard_6_6_4.scrypt.map +1 -1
  30. package/artifacts/.templates/cat721/cat721Guard_6_6_4.scrypt.tpl +19 -2
  31. package/artifacts/.templates/cat721/cat721Guard_6_6_4.transformer.json +2 -1
  32. package/artifacts/.templates/cat721/minters/cat721ClosedMinter.scrypt.tpl +2 -2
  33. package/artifacts/.templates/cat721/minters/cat721OpenMinter.scrypt.tpl +2 -2
  34. package/artifacts/.templates/cat721/types.scrypt.map +1 -1
  35. package/artifacts/.templates/cat721/types.scrypt.tpl +1 -0
  36. package/artifacts/cat20/cat20.json +58 -36
  37. package/artifacts/cat20/cat20.scrypt +18 -18
  38. package/artifacts/cat20/cat20Admin.json +58 -36
  39. package/artifacts/cat20/cat20Admin.scrypt +30 -30
  40. package/artifacts/cat20/cat20GuardStateLib.json +43 -21
  41. package/artifacts/cat20/cat20GuardStateLib.scrypt +7 -7
  42. package/artifacts/cat20/cat20Guard_12_12_2.json +93 -32
  43. package/artifacts/cat20/cat20Guard_12_12_2.scrypt +40 -23
  44. package/artifacts/cat20/cat20Guard_12_12_4.json +93 -32
  45. package/artifacts/cat20/cat20Guard_12_12_4.scrypt +40 -23
  46. package/artifacts/cat20/cat20Guard_6_6_2.json +93 -32
  47. package/artifacts/cat20/cat20Guard_6_6_2.scrypt +40 -23
  48. package/artifacts/cat20/cat20Guard_6_6_4.json +93 -32
  49. package/artifacts/cat20/cat20Guard_6_6_4.scrypt +40 -23
  50. package/artifacts/cat20/cat20StateLib.json +44 -22
  51. package/artifacts/cat20/cat20StateLib.scrypt +5 -5
  52. package/artifacts/cat20/minters/cat20ClosedMinter.json +56 -34
  53. package/artifacts/cat20/minters/cat20ClosedMinter.scrypt +22 -22
  54. package/artifacts/cat20/minters/cat20OpenMinter.json +56 -34
  55. package/artifacts/cat20/minters/cat20OpenMinter.scrypt +18 -18
  56. package/artifacts/cat20/types.json +9 -5
  57. package/artifacts/cat20/types.scrypt +6 -5
  58. package/artifacts/cat721/cat721.json +58 -36
  59. package/artifacts/cat721/cat721.scrypt +18 -18
  60. package/artifacts/cat721/cat721GuardStateLib.json +43 -21
  61. package/artifacts/cat721/cat721GuardStateLib.scrypt +7 -7
  62. package/artifacts/cat721/cat721Guard_12_12_2.json +92 -31
  63. package/artifacts/cat721/cat721Guard_12_12_2.scrypt +37 -20
  64. package/artifacts/cat721/cat721Guard_12_12_4.json +92 -31
  65. package/artifacts/cat721/cat721Guard_12_12_4.scrypt +37 -20
  66. package/artifacts/cat721/cat721Guard_6_6_2.json +92 -31
  67. package/artifacts/cat721/cat721Guard_6_6_2.scrypt +37 -20
  68. package/artifacts/cat721/cat721Guard_6_6_4.json +92 -31
  69. package/artifacts/cat721/cat721Guard_6_6_4.scrypt +37 -20
  70. package/artifacts/cat721/cat721StateLib.json +44 -22
  71. package/artifacts/cat721/cat721StateLib.scrypt +5 -5
  72. package/artifacts/cat721/minters/cat721ClosedMinter.json +56 -34
  73. package/artifacts/cat721/minters/cat721ClosedMinter.scrypt +18 -18
  74. package/artifacts/cat721/minters/cat721OpenMintInfo.json +5 -5
  75. package/artifacts/cat721/minters/cat721OpenMintInfo.scrypt +4 -4
  76. package/artifacts/cat721/minters/cat721OpenMinter.json +61 -39
  77. package/artifacts/cat721/minters/cat721OpenMinter.scrypt +22 -22
  78. package/artifacts/cat721/minters/cat721OpenMinterMerkleTree.json +41 -19
  79. package/artifacts/cat721/minters/cat721OpenMinterMerkleTree.scrypt +6 -6
  80. package/artifacts/cat721/types.json +9 -5
  81. package/artifacts/cat721/types.scrypt +6 -5
  82. package/artifacts/constants.json +2 -2
  83. package/artifacts/constants.scrypt +1 -1
  84. package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/backtrace.scrypt +13 -13
  85. package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/contextUtils.scrypt +16 -16
  86. package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/stateUtils.scrypt +1 -1
  87. package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/stdUtils.scrypt +12 -12
  88. package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/txHashPreimageUtils.scrypt +7 -7
  89. package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/txUtils.scrypt +12 -12
  90. package/artifacts/scrypt-ts-opcat/assets/smart-contract/types/structs.scrypt +15 -9
  91. package/artifacts/types.json +2 -2
  92. package/artifacts/types.scrypt +2 -2
  93. package/artifacts/utils/ownerUtils.json +32 -14
  94. package/artifacts/utils/ownerUtils.scrypt +3 -3
  95. package/artifacts/utils/safeMath.json +32 -14
  96. package/artifacts/utils/safeMath.scrypt +1 -1
  97. package/dist/artifacts/cat20/cat20.json +58 -36
  98. package/dist/artifacts/cat20/cat20.scrypt +18 -18
  99. package/dist/artifacts/cat20/cat20Admin.json +58 -36
  100. package/dist/artifacts/cat20/cat20Admin.scrypt +30 -30
  101. package/dist/artifacts/cat20/cat20GuardStateLib.json +43 -21
  102. package/dist/artifacts/cat20/cat20GuardStateLib.scrypt +7 -7
  103. package/dist/artifacts/cat20/cat20Guard_12_12_2.json +93 -32
  104. package/dist/artifacts/cat20/cat20Guard_12_12_2.scrypt +40 -23
  105. package/dist/artifacts/cat20/cat20Guard_12_12_4.json +93 -32
  106. package/dist/artifacts/cat20/cat20Guard_12_12_4.scrypt +40 -23
  107. package/dist/artifacts/cat20/cat20Guard_6_6_2.json +93 -32
  108. package/dist/artifacts/cat20/cat20Guard_6_6_2.scrypt +40 -23
  109. package/dist/artifacts/cat20/cat20Guard_6_6_4.json +93 -32
  110. package/dist/artifacts/cat20/cat20Guard_6_6_4.scrypt +40 -23
  111. package/dist/artifacts/cat20/cat20StateLib.json +44 -22
  112. package/dist/artifacts/cat20/cat20StateLib.scrypt +5 -5
  113. package/dist/artifacts/cat20/minters/cat20ClosedMinter.json +56 -34
  114. package/dist/artifacts/cat20/minters/cat20ClosedMinter.scrypt +22 -22
  115. package/dist/artifacts/cat20/minters/cat20OpenMinter.json +56 -34
  116. package/dist/artifacts/cat20/minters/cat20OpenMinter.scrypt +18 -18
  117. package/dist/artifacts/cat20/types.json +9 -5
  118. package/dist/artifacts/cat20/types.scrypt +6 -5
  119. package/dist/artifacts/cat721/cat721.json +58 -36
  120. package/dist/artifacts/cat721/cat721.scrypt +18 -18
  121. package/dist/artifacts/cat721/cat721GuardStateLib.json +43 -21
  122. package/dist/artifacts/cat721/cat721GuardStateLib.scrypt +7 -7
  123. package/dist/artifacts/cat721/cat721Guard_12_12_2.json +92 -31
  124. package/dist/artifacts/cat721/cat721Guard_12_12_2.scrypt +37 -20
  125. package/dist/artifacts/cat721/cat721Guard_12_12_4.json +92 -31
  126. package/dist/artifacts/cat721/cat721Guard_12_12_4.scrypt +37 -20
  127. package/dist/artifacts/cat721/cat721Guard_6_6_2.json +92 -31
  128. package/dist/artifacts/cat721/cat721Guard_6_6_2.scrypt +37 -20
  129. package/dist/artifacts/cat721/cat721Guard_6_6_4.json +92 -31
  130. package/dist/artifacts/cat721/cat721Guard_6_6_4.scrypt +37 -20
  131. package/dist/artifacts/cat721/cat721StateLib.json +44 -22
  132. package/dist/artifacts/cat721/cat721StateLib.scrypt +5 -5
  133. package/dist/artifacts/cat721/minters/cat721ClosedMinter.json +56 -34
  134. package/dist/artifacts/cat721/minters/cat721ClosedMinter.scrypt +18 -18
  135. package/dist/artifacts/cat721/minters/cat721OpenMintInfo.json +5 -5
  136. package/dist/artifacts/cat721/minters/cat721OpenMintInfo.scrypt +4 -4
  137. package/dist/artifacts/cat721/minters/cat721OpenMinter.json +61 -39
  138. package/dist/artifacts/cat721/minters/cat721OpenMinter.scrypt +22 -22
  139. package/dist/artifacts/cat721/minters/cat721OpenMinterMerkleTree.json +41 -19
  140. package/dist/artifacts/cat721/minters/cat721OpenMinterMerkleTree.scrypt +6 -6
  141. package/dist/artifacts/cat721/types.json +9 -5
  142. package/dist/artifacts/cat721/types.scrypt +6 -5
  143. package/dist/artifacts/constants.json +2 -2
  144. package/dist/artifacts/constants.scrypt +1 -1
  145. package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/backtrace.scrypt +13 -13
  146. package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/contextUtils.scrypt +16 -16
  147. package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/stateUtils.scrypt +1 -1
  148. package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/stdUtils.scrypt +12 -12
  149. package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/txHashPreimageUtils.scrypt +7 -7
  150. package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/txUtils.scrypt +12 -12
  151. package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/types/structs.scrypt +15 -9
  152. package/dist/artifacts/types.json +2 -2
  153. package/dist/artifacts/types.scrypt +2 -2
  154. package/dist/artifacts/utils/ownerUtils.json +32 -14
  155. package/dist/artifacts/utils/ownerUtils.scrypt +3 -3
  156. package/dist/artifacts/utils/safeMath.json +32 -14
  157. package/dist/artifacts/utils/safeMath.scrypt +1 -1
  158. package/dist/cjs/contracts/cat20/cat20GuardStateLib.js +2 -1
  159. package/dist/cjs/contracts/cat20/cat20GuardStateLib.js.map +1 -1
  160. package/dist/cjs/contracts/cat20/cat20Guard_12_12_2.js +19 -0
  161. package/dist/cjs/contracts/cat20/cat20Guard_12_12_2.js.map +1 -1
  162. package/dist/cjs/contracts/cat20/cat20Guard_12_12_4.js +19 -0
  163. package/dist/cjs/contracts/cat20/cat20Guard_12_12_4.js.map +1 -1
  164. package/dist/cjs/contracts/cat20/cat20Guard_6_6_2.js +19 -0
  165. package/dist/cjs/contracts/cat20/cat20Guard_6_6_2.js.map +1 -1
  166. package/dist/cjs/contracts/cat20/cat20Guard_6_6_4.js +19 -0
  167. package/dist/cjs/contracts/cat20/cat20Guard_6_6_4.js.map +1 -1
  168. package/dist/cjs/contracts/cat721/cat721GuardStateLib.js +2 -1
  169. package/dist/cjs/contracts/cat721/cat721GuardStateLib.js.map +1 -1
  170. package/dist/cjs/contracts/cat721/cat721Guard_12_12_2.js +19 -0
  171. package/dist/cjs/contracts/cat721/cat721Guard_12_12_2.js.map +1 -1
  172. package/dist/cjs/contracts/cat721/cat721Guard_12_12_4.js +19 -0
  173. package/dist/cjs/contracts/cat721/cat721Guard_12_12_4.js.map +1 -1
  174. package/dist/cjs/contracts/cat721/cat721Guard_6_6_2.js +19 -0
  175. package/dist/cjs/contracts/cat721/cat721Guard_6_6_2.js.map +1 -1
  176. package/dist/cjs/contracts/cat721/cat721Guard_6_6_4.js +19 -0
  177. package/dist/cjs/contracts/cat721/cat721Guard_6_6_4.js.map +1 -1
  178. package/dist/cjs/contracts/cat721/types.js.map +1 -1
  179. package/dist/cjs/features/cat20/admin/burnByAdmin.js +2 -1
  180. package/dist/cjs/features/cat20/admin/burnByAdmin.js.map +1 -1
  181. package/dist/cjs/features/cat20/burn/burn.js +2 -1
  182. package/dist/cjs/features/cat20/burn/burn.js.map +1 -1
  183. package/dist/cjs/features/cat20/guard/destroyGuard.js +49 -0
  184. package/dist/cjs/features/cat20/guard/destroyGuard.js.map +1 -0
  185. package/dist/cjs/features/cat20/index.js +3 -1
  186. package/dist/cjs/features/cat20/index.js.map +1 -1
  187. package/dist/cjs/features/cat20/send/contractSend.js +2 -1
  188. package/dist/cjs/features/cat20/send/contractSend.js.map +1 -1
  189. package/dist/cjs/features/cat20/send/singleSend.js +4 -3
  190. package/dist/cjs/features/cat20/send/singleSend.js.map +1 -1
  191. package/dist/cjs/features/cat721/burn/burn.js +2 -1
  192. package/dist/cjs/features/cat721/burn/burn.js.map +1 -1
  193. package/dist/cjs/features/cat721/guard/destroyGuard.js +49 -0
  194. package/dist/cjs/features/cat721/guard/destroyGuard.js.map +1 -0
  195. package/dist/cjs/features/cat721/index.js +3 -1
  196. package/dist/cjs/features/cat721/index.js.map +1 -1
  197. package/dist/cjs/features/cat721/send/singleSend.js +4 -3
  198. package/dist/cjs/features/cat721/send/singleSend.js.map +1 -1
  199. package/dist/cjs/utils/contractPeripheral.js +8 -4
  200. package/dist/cjs/utils/contractPeripheral.js.map +1 -1
  201. package/dist/esm/contracts/cat20/cat20GuardStateLib.js +2 -1
  202. package/dist/esm/contracts/cat20/cat20GuardStateLib.js.map +1 -1
  203. package/dist/esm/contracts/cat20/cat20Guard_12_12_2.js +20 -1
  204. package/dist/esm/contracts/cat20/cat20Guard_12_12_2.js.map +1 -1
  205. package/dist/esm/contracts/cat20/cat20Guard_12_12_4.js +20 -1
  206. package/dist/esm/contracts/cat20/cat20Guard_12_12_4.js.map +1 -1
  207. package/dist/esm/contracts/cat20/cat20Guard_6_6_2.js +20 -1
  208. package/dist/esm/contracts/cat20/cat20Guard_6_6_2.js.map +1 -1
  209. package/dist/esm/contracts/cat20/cat20Guard_6_6_4.js +20 -1
  210. package/dist/esm/contracts/cat20/cat20Guard_6_6_4.js.map +1 -1
  211. package/dist/esm/contracts/cat721/cat721GuardStateLib.js +2 -1
  212. package/dist/esm/contracts/cat721/cat721GuardStateLib.js.map +1 -1
  213. package/dist/esm/contracts/cat721/cat721Guard_12_12_2.js +20 -1
  214. package/dist/esm/contracts/cat721/cat721Guard_12_12_2.js.map +1 -1
  215. package/dist/esm/contracts/cat721/cat721Guard_12_12_4.js +20 -1
  216. package/dist/esm/contracts/cat721/cat721Guard_12_12_4.js.map +1 -1
  217. package/dist/esm/contracts/cat721/cat721Guard_6_6_2.js +20 -1
  218. package/dist/esm/contracts/cat721/cat721Guard_6_6_2.js.map +1 -1
  219. package/dist/esm/contracts/cat721/cat721Guard_6_6_4.js +20 -1
  220. package/dist/esm/contracts/cat721/cat721Guard_6_6_4.js.map +1 -1
  221. package/dist/esm/contracts/cat721/types.js.map +1 -1
  222. package/dist/esm/features/cat20/admin/burnByAdmin.js +2 -1
  223. package/dist/esm/features/cat20/admin/burnByAdmin.js.map +1 -1
  224. package/dist/esm/features/cat20/burn/burn.js +3 -2
  225. package/dist/esm/features/cat20/burn/burn.js.map +1 -1
  226. package/dist/esm/features/cat20/guard/destroyGuard.js +46 -0
  227. package/dist/esm/features/cat20/guard/destroyGuard.js.map +1 -0
  228. package/dist/esm/features/cat20/index.js +1 -0
  229. package/dist/esm/features/cat20/index.js.map +1 -1
  230. package/dist/esm/features/cat20/send/contractSend.js +2 -1
  231. package/dist/esm/features/cat20/send/contractSend.js.map +1 -1
  232. package/dist/esm/features/cat20/send/singleSend.js +5 -4
  233. package/dist/esm/features/cat20/send/singleSend.js.map +1 -1
  234. package/dist/esm/features/cat721/burn/burn.js +3 -2
  235. package/dist/esm/features/cat721/burn/burn.js.map +1 -1
  236. package/dist/esm/features/cat721/guard/destroyGuard.js +46 -0
  237. package/dist/esm/features/cat721/guard/destroyGuard.js.map +1 -0
  238. package/dist/esm/features/cat721/index.js +1 -0
  239. package/dist/esm/features/cat721/index.js.map +1 -1
  240. package/dist/esm/features/cat721/send/singleSend.js +5 -4
  241. package/dist/esm/features/cat721/send/singleSend.js.map +1 -1
  242. package/dist/esm/utils/contractPeripheral.js +8 -4
  243. package/dist/esm/utils/contractPeripheral.js.map +1 -1
  244. package/dist/types/contracts/cat20/cat20GuardStateLib.d.ts.map +1 -1
  245. package/dist/types/contracts/cat20/cat20Guard_12_12_2.d.ts +9 -1
  246. package/dist/types/contracts/cat20/cat20Guard_12_12_2.d.ts.map +1 -1
  247. package/dist/types/contracts/cat20/cat20Guard_12_12_4.d.ts +9 -1
  248. package/dist/types/contracts/cat20/cat20Guard_12_12_4.d.ts.map +1 -1
  249. package/dist/types/contracts/cat20/cat20Guard_6_6_2.d.ts +9 -1
  250. package/dist/types/contracts/cat20/cat20Guard_6_6_2.d.ts.map +1 -1
  251. package/dist/types/contracts/cat20/cat20Guard_6_6_4.d.ts +9 -1
  252. package/dist/types/contracts/cat20/cat20Guard_6_6_4.d.ts.map +1 -1
  253. package/dist/types/contracts/cat20/types.d.ts +7 -2
  254. package/dist/types/contracts/cat20/types.d.ts.map +1 -1
  255. package/dist/types/contracts/cat721/cat721GuardStateLib.d.ts.map +1 -1
  256. package/dist/types/contracts/cat721/cat721Guard_12_12_2.d.ts +9 -1
  257. package/dist/types/contracts/cat721/cat721Guard_12_12_2.d.ts.map +1 -1
  258. package/dist/types/contracts/cat721/cat721Guard_12_12_4.d.ts +9 -1
  259. package/dist/types/contracts/cat721/cat721Guard_12_12_4.d.ts.map +1 -1
  260. package/dist/types/contracts/cat721/cat721Guard_6_6_2.d.ts +9 -1
  261. package/dist/types/contracts/cat721/cat721Guard_6_6_2.d.ts.map +1 -1
  262. package/dist/types/contracts/cat721/cat721Guard_6_6_4.d.ts +9 -1
  263. package/dist/types/contracts/cat721/cat721Guard_6_6_4.d.ts.map +1 -1
  264. package/dist/types/contracts/cat721/types.d.ts +6 -0
  265. package/dist/types/contracts/cat721/types.d.ts.map +1 -1
  266. package/dist/types/features/cat20/admin/burnByAdmin.d.ts.map +1 -1
  267. package/dist/types/features/cat20/burn/burn.d.ts.map +1 -1
  268. package/dist/types/features/cat20/guard/destroyGuard.d.ts +21 -0
  269. package/dist/types/features/cat20/guard/destroyGuard.d.ts.map +1 -0
  270. package/dist/types/features/cat20/index.d.ts +1 -0
  271. package/dist/types/features/cat20/index.d.ts.map +1 -1
  272. package/dist/types/features/cat20/send/contractSend.d.ts.map +1 -1
  273. package/dist/types/features/cat20/send/singleSend.d.ts +1 -1
  274. package/dist/types/features/cat20/send/singleSend.d.ts.map +1 -1
  275. package/dist/types/features/cat721/burn/burn.d.ts.map +1 -1
  276. package/dist/types/features/cat721/guard/destroyGuard.d.ts +21 -0
  277. package/dist/types/features/cat721/guard/destroyGuard.d.ts.map +1 -0
  278. package/dist/types/features/cat721/index.d.ts +1 -0
  279. package/dist/types/features/cat721/index.d.ts.map +1 -1
  280. package/dist/types/features/cat721/send/singleSend.d.ts +1 -1
  281. package/dist/types/features/cat721/send/singleSend.d.ts.map +1 -1
  282. package/dist/types/utils/contractPeripheral.d.ts +4 -4
  283. package/dist/types/utils/contractPeripheral.d.ts.map +1 -1
  284. package/package.json +4 -4
  285. package/scrypt.index.json +15 -15
@@ -13,7 +13,7 @@ contract CAT20Admin {
13
13
  constructor(bytes genesisOutpoint) {
14
14
  this.genesisOutpoint = genesisOutpoint;
15
15
  }
16
- public function authorizeToSpendToken(PubKey adminPubKey, Sig adminSig, BacktraceInfo backtraceInfo, SHPreimage __scrypt_ts_shPreimage, Sig __scrypt_ts_preimageSig, TxOut __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) {
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
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);
@@ -36,9 +36,9 @@ contract CAT20Admin {
36
36
  require(checkSig(adminSig, adminPubKey));
37
37
  bytes adminOutput = TxUtils.buildDataOutput(adminScriptHash, __scrypt_ts_shPreimage.value, __scrypt_ts_shPreimage.spentDataHash);
38
38
  require(hash256(adminOutput +
39
- (__scrypt_ts_changeInfo.satoshis > 0 ? TxUtils.buildOutput(__scrypt_ts_changeInfo.scriptHash, __scrypt_ts_changeInfo.satoshis) : b'')) == __scrypt_ts_shPreimage.hashOutputs);
39
+ (__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
40
  }
41
- public function transferOwnership(PubKey adminPubKey, Sig adminSig, Ripemd160 newPubKeyHash, BacktraceInfo backtraceInfo, SHPreimage __scrypt_ts_shPreimage, Sig __scrypt_ts_preimageSig, TxOut __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) {
41
+ 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) {
42
42
  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
43
 
44
44
  int __scrypt_ts_inputCount = ContextUtils.checkSpentAmounts(__scrypt_ts_spentAmounts, __scrypt_ts_shPreimage.hashSpentAmounts);
@@ -62,7 +62,7 @@ contract CAT20Admin {
62
62
  __scrypt_ts_nextState.adminAddress = OwnerUtils.pubKeyHashtoLockingScript(newPubKeyHash);
63
63
  bytes adminOutput = TxUtils.buildDataOutput(adminScriptHash, __scrypt_ts_shPreimage.value, CAT20Admin.stateHash(__scrypt_ts_nextState));
64
64
  require(hash256(adminOutput +
65
- (__scrypt_ts_changeInfo.satoshis > 0 ? TxUtils.buildOutput(__scrypt_ts_changeInfo.scriptHash, __scrypt_ts_changeInfo.satoshis) : b'')) == __scrypt_ts_shPreimage.hashOutputs);
65
+ (__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);
66
66
  }
67
67
  static function serializeState(CAT20AdminState __scrypt_ts_curState): bytes {
68
68
  return num2bin(len(__scrypt_ts_curState.tag), 2) + __scrypt_ts_curState.tag + num2bin(len(__scrypt_ts_curState.adminAddress), 2) + __scrypt_ts_curState.adminAddress + hash160(hash160(__scrypt_ts_curState.tag) + hash160(__scrypt_ts_curState.adminAddress));
@@ -29,9 +29,9 @@ library CAT20GuardStateLib {
29
29
  return true;
30
30
  }
31
31
  static function serializeState(CAT20GuardConstState __scrypt_ts_curState): bytes {
32
- return 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.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));
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));
33
33
  }
34
34
  static function stateHash(CAT20GuardConstState __scrypt_ts_curState): bytes {
35
- return sha256(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.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)));
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)));
36
36
  }
37
37
  }
@@ -1 +1 @@
1
- [[],[],[],[],[],[],[],[],[],[],[],[],[[9,0,41,13]],[],[[2,0,43,4],[18,0,43,11],[25,0,44,25],[30,0,44,25],[35,0,44,8],[52,0,48,33],[57,0,48,33],[62,0,48,8],[87,0,52,22],[90,0,52,22],[95,0,52,8],[109,0,58,32],[112,0,58,32],[117,0,58,8],[141,0,63,24],[144,0,63,24],[149,0,63,8],[165,0,67,21],[175,0,67,21],[180,0,67,8],[193,0,69,21],[197,0,69,8]],[],[],[],[],[],[],[],[],[],[],[],[],[[4,0,73,8],[22,0,73,27],[63,0,73,56]],[[4,0,76,30],[8,0,76,12],[26,0,76,30]],[[4,0,77,39],[9,0,77,39],[13,0,77,14],[40,0,81,16],[52,0,81,29],[87,0,82,16],[99,0,82,29],[134,0,83,16],[146,0,83,29],[181,0,84,16],[193,0,84,29]],[[15,0,86,17]],[[8,0,87,12],[11,0,87,16],[13,0,87,16],[16,0,87,21]],[[10,0,88,16],[39,0,88,34],[58,0,88,52],[59,0,88,59],[63,0,88,23],[66,0,88,66],[90,0,88,90],[91,0,88,97]],[[10,0,89,16],[39,0,89,34],[53,0,89,47],[54,0,89,54],[58,0,89,23],[61,0,89,61]],[[10,0,90,16],[39,0,90,34],[57,0,90,51],[58,0,90,58],[62,0,90,23],[65,0,90,65]],[],[],[[15,0,94,17]],[[8,0,95,12],[32,0,95,27],[51,0,95,45],[54,0,95,16],[57,0,95,51],[81,0,95,75]],[[10,0,96,16],[25,0,96,16]],[],[],[[15,0,100,17]],[[8,0,101,12],[11,0,101,16],[13,0,101,16],[15,0,101,20],[16,0,101,27]],[[10,0,102,16],[39,0,102,34],[58,0,102,52],[61,0,102,23],[64,0,102,58],[88,0,102,82]],[[10,0,103,16],[18,0,104,20],[43,0,104,35],[62,0,104,53],[66,0,104,20],[69,0,104,60]],[],[[10,0,107,16],[39,0,107,34],[58,0,107,52],[61,0,107,23],[64,0,107,58],[88,0,107,82]],[],[],[[4,0,110,8],[12,0,110,15],[28,0,110,15],[30,0,110,33]],[[4,0,116,31],[7,0,116,31],[11,0,116,14],[28,0,116,31],[35,0,116,36],[38,0,116,40]],[[4,0,117,34],[8,0,117,12],[30,0,117,34],[31,0,117,35]],[[4,0,118,27],[8,0,118,14]],[[16,0,119,17]],[[8,0,120,37],[12,0,120,18],[31,0,120,37],[59,0,120,70],[79,0,120,90],[80,0,120,97],[85,0,120,101],[86,0,120,108],[88,0,120,108],[90,0,120,112]],[[8,0,121,12],[11,0,121,16],[13,0,121,16],[15,0,121,20]],[[10,0,122,16],[18,0,122,23],[35,0,122,23],[37,0,122,42]],[[10,0,123,16],[13,0,123,20],[30,0,123,20],[33,0,123,40],[34,0,123,41]],[[12,0,126,24],[18,0,125,26],[57,0,126,35],[76,0,126,53],[77,0,126,60]],[[12,0,127,20],[20,0,127,27],[36,0,127,27],[39,0,127,46],[51,0,127,59],[102,0,127,106],[103,0,127,113]],[[12,0,128,20],[25,0,128,34],[37,0,128,45],[49,0,128,57]],[[12,0,129,20],[20,0,129,27],[32,0,129,40],[79,0,129,83],[80,0,129,90],[84,0,129,27],[87,0,129,97],[100,0,129,111],[111,0,129,121],[123,0,129,133]],[[12,0,130,20],[27,0,130,35],[28,0,130,42],[47,0,130,20],[49,0,130,63],[57,0,130,72],[62,0,131,24],[77,0,131,39],[78,0,131,46],[98,0,132,24],[110,0,132,36],[112,0,132,39]],[[12,0,134,20],[32,0,134,20],[34,0,135,24],[51,0,135,24],[53,0,135,43],[75,0,136,30],[94,0,137,30]],[],[],[[10,0,140,16],[18,0,140,23],[35,0,140,23],[38,0,140,43],[39,0,140,44]],[],[],[[4,0,146,8],[12,0,147,12],[32,0,147,12],[35,0,147,35],[37,0,147,12],[40,0,147,41],[60,0,147,41],[63,0,147,64],[79,0,147,64],[81,0,147,82]],[[4,0,152,8],[12,0,152,15],[24,0,152,15],[27,0,152,30],[29,0,152,15],[32,0,152,36],[44,0,152,36],[47,0,152,51]],[[4,0,153,32],[7,0,153,32],[11,0,153,14],[29,0,153,32],[36,0,153,37],[39,0,153,41]],[[4,0,154,22],[10,0,154,12],[20,0,154,35]],[[16,0,155,17]],[[8,0,156,12],[11,0,156,16],[13,0,156,16],[15,0,156,20]],[[10,0,157,46],[16,0,157,22],[40,0,157,46],[64,0,157,70]],[[10,0,158,16],[18,0,158,23],[22,0,158,27],[45,0,158,23],[47,0,158,52]],[[10,0,159,45],[14,0,159,22],[37,0,159,45],[60,0,159,68]],[[10,0,160,16],[18,0,160,23],[39,0,160,23],[41,0,160,46]],[[10,0,161,16],[13,0,161,20],[34,0,161,20],[37,0,161,44],[38,0,161,45]],[[12,0,163,40],[16,0,163,26],[30,0,163,40],[43,0,163,53]],[[12,0,164,20],[20,0,164,27],[32,0,164,27],[34,0,164,41]],[[12,0,165,20],[28,0,165,36],[29,0,165,43],[52,0,165,20],[54,0,165,68],[62,0,165,77],[67,0,166,24],[83,0,166,40],[84,0,166,47],[108,0,167,24]],[[12,0,169,43],[18,0,169,26],[35,0,169,43],[48,0,169,57],[59,0,169,67],[60,0,170,35],[83,0,171,32]],[[12,0,173,20],[20,0,173,27],[36,0,173,43],[39,0,173,27],[42,0,173,49]],[[12,0,175,24],[18,0,174,26],[57,0,175,35],[76,0,175,53],[77,0,175,60]],[[12,0,176,20],[20,0,176,20],[23,0,176,31],[30,0,176,39],[47,0,177,24],[64,0,178,24],[79,0,178,39],[83,0,179,24]],[],[[12,0,183,20],[20,0,183,27],[33,0,183,40],[36,0,183,27],[39,0,183,46]],[[23,0,185,29]],[[14,0,186,24],[22,0,186,31],[44,0,186,31],[68,0,186,67],[87,0,186,85]],[],[[12,0,188,20],[20,0,188,20],[23,0,188,31],[30,0,188,39],[47,0,189,24],[70,0,190,24],[85,0,190,39],[89,0,191,24],[105,0,191,40]],[],[],[[10,0,195,16],[18,0,195,23],[22,0,195,27],[46,0,195,51],[50,0,195,23],[53,0,195,58]],[[10,0,196,16],[18,0,196,23],[41,0,196,46],[44,0,196,23],[47,0,196,52],[48,0,196,53]],[[10,0,197,16],[18,0,197,23],[31,0,197,36],[34,0,197,23],[37,0,197,42]],[[10,0,198,16],[18,0,198,23],[34,0,198,39],[37,0,198,23],[40,0,198,58]],[[10,0,199,16],[18,0,199,23],[33,0,199,38],[36,0,199,23],[39,0,199,44]],[],[],[[15,0,204,17]],[[8,0,205,12],[16,0,205,19],[31,0,205,34],[34,0,205,19],[58,0,205,51],[72,0,205,64]],[[8,0,206,12],[16,0,207,16],[31,0,207,31],[34,0,207,16],[37,0,208,16],[45,0,208,25],[50,0,208,29],[66,0,208,45],[91,0,208,60],[109,0,208,77]],[[8,0,211,12],[11,0,211,16],[13,0,211,16],[15,0,211,20],[16,0,211,27]],[[10,0,212,16],[18,0,212,23],[33,0,212,38],[36,0,212,23],[38,0,212,43]],[],[[10,0,214,16],[18,0,214,23],[33,0,214,38],[36,0,214,23],[39,0,214,44]],[[10,0,215,16],[18,0,215,23],[34,0,215,39],[37,0,215,23],[40,0,215,45]],[[10,0,217,16],[39,0,217,34],[53,0,217,47],[56,0,217,23],[59,0,217,53]],[[10,0,218,16],[39,0,218,34],[57,0,218,51],[60,0,218,23],[63,0,218,57]],[],[],[[4,0,223,8],[20,0,223,33]],[],[],[],[],[],[],[],[]]
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]],[],[],[],[],[],[],[],[],[]]
@@ -5,6 +5,7 @@ import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-lib
5
5
  import "./cat20StateLib.scrypt.tpl";
6
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";
8
9
  import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/stdUtils.scrypt.tpl";
9
10
  import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/types/structs.scrypt.tpl";
10
11
  import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/stateUtils.scrypt.tpl";
@@ -115,10 +116,26 @@ contract CAT20Guard_12_12_2 {
115
116
  }
116
117
  require(hash256(outputs) == __scrypt_ts_shPreimage.hashOutputs);
117
118
  }
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
+ }
118
135
  static function serializeState(CAT20GuardConstState __scrypt_ts_curState): bytes {
119
- return 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.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));
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));
120
137
  }
121
138
  static function stateHash(CAT20GuardConstState __scrypt_ts_curState): bytes {
122
- return sha256(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.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)));
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)));
123
140
  }
124
141
  }
@@ -4,6 +4,7 @@
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"
7
+ "unlock",
8
+ "destroy"
8
9
  ]
9
10
  }
@@ -1 +1 @@
1
- [[],[],[],[],[],[],[],[],[],[],[],[],[[9,0,41,13]],[],[[2,0,43,4],[18,0,43,11],[25,0,44,25],[30,0,44,25],[35,0,44,8],[52,0,48,33],[57,0,48,33],[62,0,48,8],[87,0,52,22],[90,0,52,22],[95,0,52,8],[109,0,58,32],[112,0,58,32],[117,0,58,8],[141,0,63,24],[144,0,63,24],[149,0,63,8],[165,0,67,21],[175,0,67,21],[180,0,67,8],[193,0,69,21],[197,0,69,8]],[],[],[],[],[],[],[],[],[],[],[],[],[[4,0,73,8],[22,0,73,27],[63,0,73,56]],[[4,0,76,30],[8,0,76,12],[26,0,76,30]],[[4,0,77,39],[9,0,77,39],[13,0,77,14],[40,0,81,16],[52,0,81,29],[87,0,82,16],[99,0,82,29],[134,0,83,16],[146,0,83,29],[181,0,84,16],[193,0,84,29]],[[15,0,86,17]],[[8,0,87,12],[11,0,87,16],[13,0,87,16],[16,0,87,21]],[[10,0,88,16],[39,0,88,34],[58,0,88,52],[59,0,88,59],[63,0,88,23],[66,0,88,66],[90,0,88,90],[91,0,88,97]],[[10,0,89,16],[39,0,89,34],[53,0,89,47],[54,0,89,54],[58,0,89,23],[61,0,89,61]],[[10,0,90,16],[39,0,90,34],[57,0,90,51],[58,0,90,58],[62,0,90,23],[65,0,90,65]],[],[],[[15,0,94,17]],[[8,0,95,12],[32,0,95,27],[51,0,95,45],[54,0,95,16],[57,0,95,51],[81,0,95,75]],[[10,0,96,16],[25,0,96,16]],[],[],[[15,0,100,17]],[[8,0,101,12],[11,0,101,16],[13,0,101,16],[15,0,101,20],[16,0,101,27]],[[10,0,102,16],[39,0,102,34],[58,0,102,52],[61,0,102,23],[64,0,102,58],[88,0,102,82]],[[10,0,103,16],[18,0,104,20],[43,0,104,35],[62,0,104,53],[66,0,104,20],[69,0,104,60]],[],[[10,0,107,16],[39,0,107,34],[58,0,107,52],[61,0,107,23],[64,0,107,58],[88,0,107,82]],[],[],[[4,0,110,8],[12,0,110,15],[28,0,110,15],[30,0,110,33]],[[4,0,116,31],[7,0,116,31],[11,0,116,14],[28,0,116,31],[35,0,116,36],[38,0,116,40]],[[4,0,117,34],[8,0,117,12],[30,0,117,34],[31,0,117,35]],[[4,0,118,27],[8,0,118,14]],[[16,0,119,17]],[[8,0,120,37],[12,0,120,18],[31,0,120,37],[59,0,120,70],[79,0,120,90],[80,0,120,97],[85,0,120,101],[86,0,120,108],[88,0,120,108],[90,0,120,112]],[[8,0,121,12],[11,0,121,16],[13,0,121,16],[15,0,121,20]],[[10,0,122,16],[18,0,122,23],[35,0,122,23],[37,0,122,42]],[[10,0,123,16],[13,0,123,20],[30,0,123,20],[33,0,123,40],[34,0,123,41]],[[12,0,126,24],[18,0,125,26],[57,0,126,35],[76,0,126,53],[77,0,126,60]],[[12,0,127,20],[20,0,127,27],[36,0,127,27],[39,0,127,46],[51,0,127,59],[102,0,127,106],[103,0,127,113]],[[12,0,128,20],[25,0,128,34],[37,0,128,45],[49,0,128,57]],[[12,0,129,20],[20,0,129,27],[32,0,129,40],[79,0,129,83],[80,0,129,90],[84,0,129,27],[87,0,129,97],[100,0,129,111],[111,0,129,121],[123,0,129,133]],[[12,0,130,20],[27,0,130,35],[28,0,130,42],[47,0,130,20],[49,0,130,63],[57,0,130,72],[62,0,131,24],[77,0,131,39],[78,0,131,46],[98,0,132,24],[110,0,132,36],[112,0,132,39]],[[12,0,134,20],[32,0,134,20],[34,0,135,24],[51,0,135,24],[53,0,135,43],[75,0,136,30],[94,0,137,30]],[],[],[[10,0,140,16],[18,0,140,23],[35,0,140,23],[38,0,140,43],[39,0,140,44]],[],[],[[4,0,146,8],[12,0,147,12],[32,0,147,12],[35,0,147,35],[37,0,147,12],[40,0,147,41],[60,0,147,41],[63,0,147,64],[79,0,147,64],[81,0,147,82]],[[4,0,152,8],[12,0,152,15],[24,0,152,15],[27,0,152,30],[29,0,152,15],[32,0,152,36],[44,0,152,36],[47,0,152,51]],[[4,0,153,32],[7,0,153,32],[11,0,153,14],[29,0,153,32],[36,0,153,37],[39,0,153,41]],[[4,0,154,22],[10,0,154,12],[20,0,154,35]],[[16,0,155,17]],[[8,0,156,12],[11,0,156,16],[13,0,156,16],[15,0,156,20]],[[10,0,157,46],[16,0,157,22],[40,0,157,46],[64,0,157,70]],[[10,0,158,16],[18,0,158,23],[22,0,158,27],[45,0,158,23],[47,0,158,52]],[[10,0,159,45],[14,0,159,22],[37,0,159,45],[60,0,159,68]],[[10,0,160,16],[18,0,160,23],[39,0,160,23],[41,0,160,46]],[[10,0,161,16],[13,0,161,20],[34,0,161,20],[37,0,161,44],[38,0,161,45]],[[12,0,163,40],[16,0,163,26],[30,0,163,40],[43,0,163,53]],[[12,0,164,20],[20,0,164,27],[32,0,164,27],[34,0,164,41]],[[12,0,165,20],[28,0,165,36],[29,0,165,43],[52,0,165,20],[54,0,165,68],[62,0,165,77],[67,0,166,24],[83,0,166,40],[84,0,166,47],[108,0,167,24]],[[12,0,169,43],[18,0,169,26],[35,0,169,43],[48,0,169,57],[59,0,169,67],[60,0,170,35],[83,0,171,32]],[[12,0,173,20],[20,0,173,27],[36,0,173,43],[39,0,173,27],[42,0,173,49]],[[12,0,175,24],[18,0,174,26],[57,0,175,35],[76,0,175,53],[77,0,175,60]],[[12,0,176,20],[20,0,176,20],[23,0,176,31],[30,0,176,39],[47,0,177,24],[64,0,178,24],[79,0,178,39],[83,0,179,24]],[],[[12,0,183,20],[20,0,183,27],[33,0,183,40],[36,0,183,27],[39,0,183,46]],[[23,0,185,29]],[[14,0,186,24],[22,0,186,31],[44,0,186,31],[68,0,186,67],[87,0,186,85]],[],[[12,0,188,20],[20,0,188,20],[23,0,188,31],[30,0,188,39],[47,0,189,24],[70,0,190,24],[85,0,190,39],[89,0,191,24],[105,0,191,40]],[],[],[[10,0,195,16],[18,0,195,23],[22,0,195,27],[46,0,195,51],[50,0,195,23],[53,0,195,58]],[[10,0,196,16],[18,0,196,23],[41,0,196,46],[44,0,196,23],[47,0,196,52],[48,0,196,53]],[[10,0,197,16],[18,0,197,23],[31,0,197,36],[34,0,197,23],[37,0,197,42]],[[10,0,198,16],[18,0,198,23],[34,0,198,39],[37,0,198,23],[40,0,198,58]],[[10,0,199,16],[18,0,199,23],[33,0,199,38],[36,0,199,23],[39,0,199,44]],[],[],[[15,0,204,17]],[[8,0,205,12],[16,0,205,19],[31,0,205,34],[34,0,205,19],[58,0,205,51],[72,0,205,64]],[[8,0,206,12],[16,0,207,16],[31,0,207,31],[34,0,207,16],[37,0,208,16],[45,0,208,25],[50,0,208,29],[66,0,208,45],[91,0,208,60],[109,0,208,77]],[[8,0,211,12],[11,0,211,16],[13,0,211,16],[15,0,211,20],[16,0,211,27]],[[10,0,212,16],[18,0,212,23],[33,0,212,38],[36,0,212,23],[38,0,212,43]],[],[[10,0,214,16],[18,0,214,23],[33,0,214,38],[36,0,214,23],[39,0,214,44]],[[10,0,215,16],[18,0,215,23],[34,0,215,39],[37,0,215,23],[40,0,215,45]],[[10,0,217,16],[39,0,217,34],[53,0,217,47],[56,0,217,23],[59,0,217,53]],[[10,0,218,16],[39,0,218,34],[57,0,218,51],[60,0,218,23],[63,0,218,57]],[],[],[[4,0,223,8],[20,0,223,33]],[],[],[],[],[],[],[],[]]
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]],[],[],[],[],[],[],[],[],[]]
@@ -5,6 +5,7 @@ import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-lib
5
5
  import "./cat20StateLib.scrypt.tpl";
6
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";
8
9
  import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/stdUtils.scrypt.tpl";
9
10
  import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/types/structs.scrypt.tpl";
10
11
  import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/stateUtils.scrypt.tpl";
@@ -115,10 +116,26 @@ contract CAT20Guard_12_12_4 {
115
116
  }
116
117
  require(hash256(outputs) == __scrypt_ts_shPreimage.hashOutputs);
117
118
  }
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
+ }
118
135
  static function serializeState(CAT20GuardConstState __scrypt_ts_curState): bytes {
119
- return 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.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));
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));
120
137
  }
121
138
  static function stateHash(CAT20GuardConstState __scrypt_ts_curState): bytes {
122
- return sha256(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.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)));
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)));
123
140
  }
124
141
  }
@@ -4,6 +4,7 @@
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"
7
+ "unlock",
8
+ "destroy"
8
9
  ]
9
10
  }
@@ -1 +1 @@
1
- [[],[],[],[],[],[],[],[],[],[],[],[],[[9,0,41,13]],[],[[2,0,43,4],[18,0,43,11],[25,0,44,25],[30,0,44,25],[34,0,44,8],[51,0,48,33],[56,0,48,33],[60,0,48,8],[85,0,52,22],[88,0,52,22],[92,0,52,8],[106,0,58,32],[109,0,58,32],[113,0,58,8],[137,0,63,24],[140,0,63,24],[144,0,63,8],[160,0,67,21],[170,0,67,21],[174,0,67,8],[187,0,69,21],[191,0,69,8]],[],[],[],[],[],[],[],[],[],[],[],[],[[4,0,73,8],[22,0,73,27],[63,0,73,56]],[[4,0,76,30],[8,0,76,12],[26,0,76,30]],[[4,0,77,39],[9,0,77,39],[13,0,77,14],[40,0,81,16],[52,0,81,29],[87,0,82,16],[99,0,82,29],[134,0,83,16],[146,0,83,29],[181,0,84,16],[193,0,84,29]],[[15,0,86,17]],[[8,0,87,12],[11,0,87,16],[13,0,87,16],[16,0,87,21]],[[10,0,88,16],[39,0,88,34],[58,0,88,52],[59,0,88,59],[63,0,88,23],[66,0,88,66],[90,0,88,90],[91,0,88,97]],[[10,0,89,16],[39,0,89,34],[53,0,89,47],[54,0,89,54],[58,0,89,23],[61,0,89,61]],[[10,0,90,16],[39,0,90,34],[57,0,90,51],[58,0,90,58],[62,0,90,23],[65,0,90,65]],[],[],[[15,0,94,17]],[[8,0,95,12],[32,0,95,27],[51,0,95,45],[54,0,95,16],[57,0,95,51],[81,0,95,75]],[[10,0,96,16],[25,0,96,16]],[],[],[[15,0,100,17]],[[8,0,101,12],[11,0,101,16],[13,0,101,16],[15,0,101,20],[16,0,101,27]],[[10,0,102,16],[39,0,102,34],[58,0,102,52],[61,0,102,23],[64,0,102,58],[88,0,102,82]],[[10,0,103,16],[18,0,104,20],[43,0,104,35],[62,0,104,53],[66,0,104,20],[69,0,104,60]],[],[[10,0,107,16],[39,0,107,34],[58,0,107,52],[61,0,107,23],[64,0,107,58],[88,0,107,82]],[],[],[[4,0,110,8],[12,0,110,15],[28,0,110,15],[30,0,110,33]],[[4,0,116,31],[7,0,116,31],[11,0,116,14],[28,0,116,31],[35,0,116,36],[38,0,116,40]],[[4,0,117,34],[8,0,117,12],[30,0,117,34],[31,0,117,35]],[[4,0,118,27],[8,0,118,14]],[[15,0,119,17]],[[8,0,120,37],[12,0,120,18],[31,0,120,37],[59,0,120,70],[79,0,120,90],[80,0,120,97],[85,0,120,101],[86,0,120,108],[88,0,120,108],[90,0,120,112]],[[8,0,121,12],[11,0,121,16],[13,0,121,16],[15,0,121,20]],[[10,0,122,16],[18,0,122,23],[35,0,122,23],[37,0,122,42]],[[10,0,123,16],[13,0,123,20],[30,0,123,20],[33,0,123,40],[34,0,123,41]],[[12,0,126,24],[18,0,125,26],[57,0,126,35],[76,0,126,53],[77,0,126,60]],[[12,0,127,20],[20,0,127,27],[36,0,127,27],[39,0,127,46],[51,0,127,59],[102,0,127,106],[103,0,127,113]],[[12,0,128,20],[25,0,128,34],[37,0,128,45],[49,0,128,57]],[[12,0,129,20],[20,0,129,27],[32,0,129,40],[79,0,129,83],[80,0,129,90],[84,0,129,27],[87,0,129,97],[100,0,129,111],[111,0,129,121],[123,0,129,133]],[[12,0,130,20],[27,0,130,35],[28,0,130,42],[47,0,130,20],[49,0,130,63],[57,0,130,72],[62,0,131,24],[77,0,131,39],[78,0,131,46],[98,0,132,24],[110,0,132,36],[112,0,132,39]],[[12,0,134,20],[32,0,134,20],[34,0,135,24],[51,0,135,24],[53,0,135,43],[75,0,136,30],[94,0,137,30]],[],[],[[10,0,140,16],[18,0,140,23],[35,0,140,23],[38,0,140,43],[39,0,140,44]],[],[],[[4,0,146,8],[12,0,147,12],[32,0,147,12],[35,0,147,35],[37,0,147,12],[40,0,147,41],[60,0,147,41],[63,0,147,64],[79,0,147,64],[81,0,147,82]],[[4,0,152,8],[12,0,152,15],[24,0,152,15],[27,0,152,30],[29,0,152,15],[32,0,152,36],[44,0,152,36],[47,0,152,51]],[[4,0,153,32],[7,0,153,32],[11,0,153,14],[29,0,153,32],[36,0,153,37],[39,0,153,41]],[[4,0,154,22],[10,0,154,12],[20,0,154,35]],[[15,0,155,17]],[[8,0,156,12],[11,0,156,16],[13,0,156,16],[15,0,156,20]],[[10,0,157,46],[16,0,157,22],[40,0,157,46],[64,0,157,70]],[[10,0,158,16],[18,0,158,23],[22,0,158,27],[45,0,158,23],[47,0,158,52]],[[10,0,159,45],[14,0,159,22],[37,0,159,45],[60,0,159,68]],[[10,0,160,16],[18,0,160,23],[39,0,160,23],[41,0,160,46]],[[10,0,161,16],[13,0,161,20],[34,0,161,20],[37,0,161,44],[38,0,161,45]],[[12,0,163,40],[16,0,163,26],[30,0,163,40],[43,0,163,53]],[[12,0,164,20],[20,0,164,27],[32,0,164,27],[34,0,164,41]],[[12,0,165,20],[28,0,165,36],[29,0,165,43],[52,0,165,20],[54,0,165,68],[62,0,165,77],[67,0,166,24],[83,0,166,40],[84,0,166,47],[108,0,167,24]],[[12,0,169,43],[18,0,169,26],[35,0,169,43],[48,0,169,57],[59,0,169,67],[60,0,170,35],[83,0,171,32]],[[12,0,173,20],[20,0,173,27],[36,0,173,43],[39,0,173,27],[42,0,173,49]],[[12,0,175,24],[18,0,174,26],[57,0,175,35],[76,0,175,53],[77,0,175,60]],[[12,0,176,20],[20,0,176,20],[23,0,176,31],[30,0,176,39],[47,0,177,24],[64,0,178,24],[79,0,178,39],[83,0,179,24]],[],[[12,0,183,20],[20,0,183,27],[33,0,183,40],[36,0,183,27],[39,0,183,46]],[[23,0,185,29]],[[14,0,186,24],[22,0,186,31],[44,0,186,31],[68,0,186,67],[87,0,186,85]],[],[[12,0,188,20],[20,0,188,20],[23,0,188,31],[30,0,188,39],[47,0,189,24],[70,0,190,24],[85,0,190,39],[89,0,191,24],[105,0,191,40]],[],[],[[10,0,195,16],[18,0,195,23],[22,0,195,27],[46,0,195,51],[50,0,195,23],[53,0,195,58]],[[10,0,196,16],[18,0,196,23],[41,0,196,46],[44,0,196,23],[47,0,196,52],[48,0,196,53]],[[10,0,197,16],[18,0,197,23],[31,0,197,36],[34,0,197,23],[37,0,197,42]],[[10,0,198,16],[18,0,198,23],[34,0,198,39],[37,0,198,23],[40,0,198,58]],[[10,0,199,16],[18,0,199,23],[33,0,199,38],[36,0,199,23],[39,0,199,44]],[],[],[[15,0,204,17]],[[8,0,205,12],[16,0,205,19],[31,0,205,34],[34,0,205,19],[58,0,205,51],[72,0,205,64]],[[8,0,206,12],[16,0,207,16],[31,0,207,31],[34,0,207,16],[37,0,208,16],[45,0,208,25],[50,0,208,29],[66,0,208,45],[91,0,208,60],[109,0,208,77]],[[8,0,211,12],[11,0,211,16],[13,0,211,16],[15,0,211,20],[16,0,211,27]],[[10,0,212,16],[18,0,212,23],[33,0,212,38],[36,0,212,23],[38,0,212,43]],[],[[10,0,214,16],[18,0,214,23],[33,0,214,38],[36,0,214,23],[39,0,214,44]],[[10,0,215,16],[18,0,215,23],[34,0,215,39],[37,0,215,23],[40,0,215,45]],[[10,0,217,16],[39,0,217,34],[53,0,217,47],[56,0,217,23],[59,0,217,53]],[[10,0,218,16],[39,0,218,34],[57,0,218,51],[60,0,218,23],[63,0,218,57]],[],[],[[4,0,223,8],[20,0,223,33]],[],[],[],[],[],[],[],[]]
1
+ [[],[],[],[],[],[],[],[],[],[],[],[],[],[[9,0,45,13]],[],[[2,0,47,4],[18,0,47,11],[25,0,48,25],[30,0,48,25],[34,0,48,8],[51,0,52,33],[56,0,52,33],[60,0,52,8],[85,0,56,22],[88,0,56,22],[92,0,56,8],[106,0,62,32],[109,0,62,32],[113,0,62,8],[137,0,67,24],[140,0,67,24],[144,0,67,8],[160,0,71,21],[170,0,71,21],[174,0,71,8],[187,0,73,21],[191,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]],[[15,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]],[[15,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]],[],[],[],[],[],[],[],[],[]]
@@ -5,6 +5,7 @@ import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-lib
5
5
  import "./cat20StateLib.scrypt.tpl";
6
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";
8
9
  import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/stdUtils.scrypt.tpl";
9
10
  import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/types/structs.scrypt.tpl";
10
11
  import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/stateUtils.scrypt.tpl";
@@ -115,10 +116,26 @@ contract CAT20Guard_6_6_2 {
115
116
  }
116
117
  require(hash256(outputs) == __scrypt_ts_shPreimage.hashOutputs);
117
118
  }
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_6_6_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
+ }
118
135
  static function serializeState(CAT20GuardConstState __scrypt_ts_curState): bytes {
119
- return 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.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));
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));
120
137
  }
121
138
  static function stateHash(CAT20GuardConstState __scrypt_ts_curState): bytes {
122
- return sha256(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.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)));
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)));
123
140
  }
124
141
  }
@@ -4,6 +4,7 @@
4
4
  "scryptfile": "cat20/cat20Guard_6_6_2.scrypt.tpl",
5
5
  "sourceMapFile": "cat20/cat20Guard_6_6_2.scrypt.map",
6
6
  "ctxMethods": [
7
- "unlock"
7
+ "unlock",
8
+ "destroy"
8
9
  ]
9
10
  }
@@ -1 +1 @@
1
- [[],[],[],[],[],[],[],[],[],[],[],[],[[9,0,41,13]],[],[[2,0,43,4],[18,0,43,11],[25,0,44,25],[30,0,44,25],[34,0,44,8],[51,0,48,33],[56,0,48,33],[60,0,48,8],[85,0,52,22],[88,0,52,22],[92,0,52,8],[106,0,58,32],[109,0,58,32],[113,0,58,8],[137,0,63,24],[140,0,63,24],[144,0,63,8],[160,0,67,21],[170,0,67,21],[174,0,67,8],[187,0,69,21],[191,0,69,8]],[],[],[],[],[],[],[],[],[],[],[],[],[[4,0,73,8],[22,0,73,27],[63,0,73,56]],[[4,0,76,30],[8,0,76,12],[26,0,76,30]],[[4,0,77,39],[9,0,77,39],[13,0,77,14],[40,0,81,16],[52,0,81,29],[87,0,82,16],[99,0,82,29],[134,0,83,16],[146,0,83,29],[181,0,84,16],[193,0,84,29]],[[15,0,86,17]],[[8,0,87,12],[11,0,87,16],[13,0,87,16],[16,0,87,21]],[[10,0,88,16],[39,0,88,34],[58,0,88,52],[59,0,88,59],[63,0,88,23],[66,0,88,66],[90,0,88,90],[91,0,88,97]],[[10,0,89,16],[39,0,89,34],[53,0,89,47],[54,0,89,54],[58,0,89,23],[61,0,89,61]],[[10,0,90,16],[39,0,90,34],[57,0,90,51],[58,0,90,58],[62,0,90,23],[65,0,90,65]],[],[],[[15,0,94,17]],[[8,0,95,12],[32,0,95,27],[51,0,95,45],[54,0,95,16],[57,0,95,51],[81,0,95,75]],[[10,0,96,16],[25,0,96,16]],[],[],[[15,0,100,17]],[[8,0,101,12],[11,0,101,16],[13,0,101,16],[15,0,101,20],[16,0,101,27]],[[10,0,102,16],[39,0,102,34],[58,0,102,52],[61,0,102,23],[64,0,102,58],[88,0,102,82]],[[10,0,103,16],[18,0,104,20],[43,0,104,35],[62,0,104,53],[66,0,104,20],[69,0,104,60]],[],[[10,0,107,16],[39,0,107,34],[58,0,107,52],[61,0,107,23],[64,0,107,58],[88,0,107,82]],[],[],[[4,0,110,8],[12,0,110,15],[28,0,110,15],[30,0,110,33]],[[4,0,116,31],[7,0,116,31],[11,0,116,14],[28,0,116,31],[35,0,116,36],[38,0,116,40]],[[4,0,117,34],[8,0,117,12],[30,0,117,34],[31,0,117,35]],[[4,0,118,27],[8,0,118,14]],[[15,0,119,17]],[[8,0,120,37],[12,0,120,18],[31,0,120,37],[59,0,120,70],[79,0,120,90],[80,0,120,97],[85,0,120,101],[86,0,120,108],[88,0,120,108],[90,0,120,112]],[[8,0,121,12],[11,0,121,16],[13,0,121,16],[15,0,121,20]],[[10,0,122,16],[18,0,122,23],[35,0,122,23],[37,0,122,42]],[[10,0,123,16],[13,0,123,20],[30,0,123,20],[33,0,123,40],[34,0,123,41]],[[12,0,126,24],[18,0,125,26],[57,0,126,35],[76,0,126,53],[77,0,126,60]],[[12,0,127,20],[20,0,127,27],[36,0,127,27],[39,0,127,46],[51,0,127,59],[102,0,127,106],[103,0,127,113]],[[12,0,128,20],[25,0,128,34],[37,0,128,45],[49,0,128,57]],[[12,0,129,20],[20,0,129,27],[32,0,129,40],[79,0,129,83],[80,0,129,90],[84,0,129,27],[87,0,129,97],[100,0,129,111],[111,0,129,121],[123,0,129,133]],[[12,0,130,20],[27,0,130,35],[28,0,130,42],[47,0,130,20],[49,0,130,63],[57,0,130,72],[62,0,131,24],[77,0,131,39],[78,0,131,46],[98,0,132,24],[110,0,132,36],[112,0,132,39]],[[12,0,134,20],[32,0,134,20],[34,0,135,24],[51,0,135,24],[53,0,135,43],[75,0,136,30],[94,0,137,30]],[],[],[[10,0,140,16],[18,0,140,23],[35,0,140,23],[38,0,140,43],[39,0,140,44]],[],[],[[4,0,146,8],[12,0,147,12],[32,0,147,12],[35,0,147,35],[37,0,147,12],[40,0,147,41],[60,0,147,41],[63,0,147,64],[79,0,147,64],[81,0,147,82]],[[4,0,152,8],[12,0,152,15],[24,0,152,15],[27,0,152,30],[29,0,152,15],[32,0,152,36],[44,0,152,36],[47,0,152,51]],[[4,0,153,32],[7,0,153,32],[11,0,153,14],[29,0,153,32],[36,0,153,37],[39,0,153,41]],[[4,0,154,22],[10,0,154,12],[20,0,154,35]],[[15,0,155,17]],[[8,0,156,12],[11,0,156,16],[13,0,156,16],[15,0,156,20]],[[10,0,157,46],[16,0,157,22],[40,0,157,46],[64,0,157,70]],[[10,0,158,16],[18,0,158,23],[22,0,158,27],[45,0,158,23],[47,0,158,52]],[[10,0,159,45],[14,0,159,22],[37,0,159,45],[60,0,159,68]],[[10,0,160,16],[18,0,160,23],[39,0,160,23],[41,0,160,46]],[[10,0,161,16],[13,0,161,20],[34,0,161,20],[37,0,161,44],[38,0,161,45]],[[12,0,163,40],[16,0,163,26],[30,0,163,40],[43,0,163,53]],[[12,0,164,20],[20,0,164,27],[32,0,164,27],[34,0,164,41]],[[12,0,165,20],[28,0,165,36],[29,0,165,43],[52,0,165,20],[54,0,165,68],[62,0,165,77],[67,0,166,24],[83,0,166,40],[84,0,166,47],[108,0,167,24]],[[12,0,169,43],[18,0,169,26],[35,0,169,43],[48,0,169,57],[59,0,169,67],[60,0,170,35],[83,0,171,32]],[[12,0,173,20],[20,0,173,27],[36,0,173,43],[39,0,173,27],[42,0,173,49]],[[12,0,175,24],[18,0,174,26],[57,0,175,35],[76,0,175,53],[77,0,175,60]],[[12,0,176,20],[20,0,176,20],[23,0,176,31],[30,0,176,39],[47,0,177,24],[64,0,178,24],[79,0,178,39],[83,0,179,24]],[],[[12,0,183,20],[20,0,183,27],[33,0,183,40],[36,0,183,27],[39,0,183,46]],[[23,0,185,29]],[[14,0,186,24],[22,0,186,31],[44,0,186,31],[68,0,186,67],[87,0,186,85]],[],[[12,0,188,20],[20,0,188,20],[23,0,188,31],[30,0,188,39],[47,0,189,24],[70,0,190,24],[85,0,190,39],[89,0,191,24],[105,0,191,40]],[],[],[[10,0,195,16],[18,0,195,23],[22,0,195,27],[46,0,195,51],[50,0,195,23],[53,0,195,58]],[[10,0,196,16],[18,0,196,23],[41,0,196,46],[44,0,196,23],[47,0,196,52],[48,0,196,53]],[[10,0,197,16],[18,0,197,23],[31,0,197,36],[34,0,197,23],[37,0,197,42]],[[10,0,198,16],[18,0,198,23],[34,0,198,39],[37,0,198,23],[40,0,198,58]],[[10,0,199,16],[18,0,199,23],[33,0,199,38],[36,0,199,23],[39,0,199,44]],[],[],[[15,0,204,17]],[[8,0,205,12],[16,0,205,19],[31,0,205,34],[34,0,205,19],[58,0,205,51],[72,0,205,64]],[[8,0,206,12],[16,0,207,16],[31,0,207,31],[34,0,207,16],[37,0,208,16],[45,0,208,25],[50,0,208,29],[66,0,208,45],[91,0,208,60],[109,0,208,77]],[[8,0,211,12],[11,0,211,16],[13,0,211,16],[15,0,211,20],[16,0,211,27]],[[10,0,212,16],[18,0,212,23],[33,0,212,38],[36,0,212,23],[38,0,212,43]],[],[[10,0,214,16],[18,0,214,23],[33,0,214,38],[36,0,214,23],[39,0,214,44]],[[10,0,215,16],[18,0,215,23],[34,0,215,39],[37,0,215,23],[40,0,215,45]],[[10,0,217,16],[39,0,217,34],[53,0,217,47],[56,0,217,23],[59,0,217,53]],[[10,0,218,16],[39,0,218,34],[57,0,218,51],[60,0,218,23],[63,0,218,57]],[],[],[[4,0,223,8],[20,0,223,33]],[],[],[],[],[],[],[],[]]
1
+ [[],[],[],[],[],[],[],[],[],[],[],[],[],[[9,0,45,13]],[],[[2,0,47,4],[18,0,47,11],[25,0,48,25],[30,0,48,25],[34,0,48,8],[51,0,52,33],[56,0,52,33],[60,0,52,8],[85,0,56,22],[88,0,56,22],[92,0,56,8],[106,0,62,32],[109,0,62,32],[113,0,62,8],[137,0,67,24],[140,0,67,24],[144,0,67,8],[160,0,71,21],[170,0,71,21],[174,0,71,8],[187,0,73,21],[191,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]],[[15,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]],[[15,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]],[],[],[],[],[],[],[],[],[]]
@@ -5,6 +5,7 @@ import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-lib
5
5
  import "./cat20StateLib.scrypt.tpl";
6
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";
8
9
  import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/stdUtils.scrypt.tpl";
9
10
  import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/types/structs.scrypt.tpl";
10
11
  import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/stateUtils.scrypt.tpl";
@@ -115,10 +116,26 @@ contract CAT20Guard_6_6_4 {
115
116
  }
116
117
  require(hash256(outputs) == __scrypt_ts_shPreimage.hashOutputs);
117
118
  }
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_6_6_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
+ }
118
135
  static function serializeState(CAT20GuardConstState __scrypt_ts_curState): bytes {
119
- return 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.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));
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));
120
137
  }
121
138
  static function stateHash(CAT20GuardConstState __scrypt_ts_curState): bytes {
122
- return sha256(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.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)));
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)));
123
140
  }
124
141
  }
@@ -4,6 +4,7 @@
4
4
  "scryptfile": "cat20/cat20Guard_6_6_4.scrypt.tpl",
5
5
  "sourceMapFile": "cat20/cat20Guard_6_6_4.scrypt.map",
6
6
  "ctxMethods": [
7
- "unlock"
7
+ "unlock",
8
+ "destroy"
8
9
  ]
9
10
  }
@@ -16,7 +16,7 @@ contract CAT20ClosedMinter {
16
16
  this.issuerAddress = ownerAddress;
17
17
  this.genesisOutpoint = genesisOutpoint;
18
18
  }
19
- public function mint(CAT20State tokenMint, PubKey issuerPubKey, Sig issuerSig, int minterSatoshis, int tokenSatoshis, BacktraceInfo backtraceInfo, SHPreimage __scrypt_ts_shPreimage, Sig __scrypt_ts_preimageSig, TxOut __scrypt_ts_changeInfo, CAT20ClosedMinterState __scrypt_ts_curState, bytes __scrypt_ts_prevouts, bytes __scrypt_ts_spentAmounts, bytes __scrypt_ts_spentDataHashes, bytes __scrypt_ts_spentScriptHashes, TxHashPreimage __scrypt_ts_prevTxHashPreimage) {
19
+ public function mint(CAT20State tokenMint, PubKey issuerPubKey, Sig issuerSig, int minterSatoshis, int tokenSatoshis, BacktraceInfo backtraceInfo, SHPreimage __scrypt_ts_shPreimage, Sig __scrypt_ts_preimageSig, ChangeInfo __scrypt_ts_changeInfo, CAT20ClosedMinterState __scrypt_ts_curState, bytes __scrypt_ts_prevouts, bytes __scrypt_ts_spentAmounts, bytes __scrypt_ts_spentDataHashes, bytes __scrypt_ts_spentScriptHashes, TxHashPreimage __scrypt_ts_prevTxHashPreimage) {
20
20
  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));
21
21
 
22
22
  int __scrypt_ts_inputCount = ContextUtils.checkSpentAmounts(__scrypt_ts_spentAmounts, __scrypt_ts_shPreimage.hashSpentAmounts);
@@ -46,7 +46,7 @@ contract CAT20ClosedMinter {
46
46
  bytes tokenStateHash = CAT20StateLib.stateHash(tokenMint);
47
47
  bytes tokenOutput = TxUtils.buildDataOutput(__scrypt_ts_nextState.tokenScriptHash, tokenSatoshis, tokenStateHash);
48
48
  require(hash256(minterOutput + tokenOutput +
49
- (__scrypt_ts_changeInfo.satoshis > 0 ? TxUtils.buildOutput(__scrypt_ts_changeInfo.scriptHash, __scrypt_ts_changeInfo.satoshis) : b'')) == __scrypt_ts_shPreimage.hashOutputs);
49
+ (__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);
50
50
  }
51
51
  static function checkState(CAT20ClosedMinterState _state) : bool {
52
52
  require(len(_state.tokenScriptHash) == 32);
@@ -24,7 +24,7 @@ contract CAT20OpenMinter {
24
24
  this.limit = limit;
25
25
  this.preminerAddr = premineAddr;
26
26
  }
27
- public function mint(CAT20State tokenMint, int[2] nextRemainingCounts, PubKey preminerPubKey, Sig preminerSig, int minterSatoshis, int tokenSatoshis, BacktraceInfo backtraceInfo, SHPreimage __scrypt_ts_shPreimage, Sig __scrypt_ts_preimageSig, TxOut __scrypt_ts_changeInfo, CAT20OpenMinterState __scrypt_ts_curState, bytes __scrypt_ts_prevouts, bytes __scrypt_ts_spentAmounts, bytes __scrypt_ts_spentDataHashes, bytes __scrypt_ts_spentScriptHashes, TxHashPreimage __scrypt_ts_prevTxHashPreimage) {
27
+ public function mint(CAT20State tokenMint, int[2] nextRemainingCounts, PubKey preminerPubKey, Sig preminerSig, int minterSatoshis, int tokenSatoshis, BacktraceInfo backtraceInfo, SHPreimage __scrypt_ts_shPreimage, Sig __scrypt_ts_preimageSig, ChangeInfo __scrypt_ts_changeInfo, CAT20OpenMinterState __scrypt_ts_curState, bytes __scrypt_ts_prevouts, bytes __scrypt_ts_spentAmounts, bytes __scrypt_ts_spentDataHashes, bytes __scrypt_ts_spentScriptHashes, TxHashPreimage __scrypt_ts_prevTxHashPreimage) {
28
28
  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));
29
29
 
30
30
  int __scrypt_ts_inputCount = ContextUtils.checkSpentAmounts(__scrypt_ts_spentAmounts, __scrypt_ts_shPreimage.hashSpentAmounts);
@@ -69,7 +69,7 @@ contract CAT20OpenMinter {
69
69
  require(tokenMint.amount == this.limit);
70
70
  }
71
71
  bytes changeOutput =
72
- (__scrypt_ts_changeInfo.satoshis > 0 ? TxUtils.buildOutput(__scrypt_ts_changeInfo.scriptHash, __scrypt_ts_changeInfo.satoshis) : b'');
72
+ (__scrypt_ts_changeInfo.satoshis > 0 ? TxUtils.buildDataOutput(sha256(TxUtils.buildP2PKHScript(__scrypt_ts_changeInfo.pubkeyhash)), __scrypt_ts_changeInfo.satoshis, __scrypt_ts_changeInfo.dataHash) : b'');
73
73
  require(hash256(minterOutputs + tokenOutput + changeOutput) == __scrypt_ts_shPreimage.hashOutputs);
74
74
  }
75
75
  static function serializeState(CAT20OpenMinterState __scrypt_ts_curState): bytes {
@@ -1 +1 @@
1
- [[],[[7,0,24,35]],[[2,0,30,21],[7,0,30,21],[11,0,30,2]],[[2,0,36,16],[5,0,36,16],[9,0,36,2]],[[2,0,41,20],[5,0,41,20],[9,0,41,2]],[[2,0,59,22],[8,0,59,2]],[],[],[[7,0,12,25]],[[2,0,14,13],[8,0,14,2]],[[2,0,16,10],[6,0,16,2]],[],[],[[7,0,130,0]],[[2,0,132,19],[8,0,132,2]],[],[],[[7,0,116,0]],[[2,0,118,19],[8,0,118,2]],[[2,0,120,19],[7,0,120,2]],[[2,0,122,18],[6,0,122,2]],[],[],[[7,0,146,0]],[[2,0,147,7],[8,0,147,2]],[[2,0,148,16],[8,0,148,2]],[]]
1
+ [[],[[7,0,23,35]],[[2,0,29,16],[8,0,29,2]],[[2,0,35,21],[7,0,35,21],[11,0,35,2]],[[2,0,41,16],[5,0,41,16],[9,0,41,2]],[[2,0,46,20],[5,0,46,20],[9,0,46,2]],[[2,0,64,22],[8,0,64,2]],[],[],[[7,0,11,25]],[[2,0,13,13],[8,0,13,2]],[[2,0,15,10],[6,0,15,2]],[],[],[[7,0,134,0]],[[2,0,136,19],[8,0,136,2]],[],[],[[7,0,120,0]],[[2,0,122,19],[8,0,122,2]],[[2,0,124,19],[7,0,124,2]],[[2,0,126,18],[6,0,126,2]],[],[],[[7,0,150,0]],[[2,0,151,7],[8,0,151,2]],[[2,0,152,16],[8,0,152,2]],[]]
@@ -1,5 +1,6 @@
1
1
 
2
2
  struct CAT20GuardConstState {
3
+ bytes deployerAddr;
3
4
  bytes[4] tokenScriptHashes;
4
5
  int[4] tokenAmounts;
5
6
  int[4] tokenBurnAmounts;