@opcat-labs/cat-sdk 1.0.4 → 2.0.0-beta-ecd3cca7-20251118

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 (695) hide show
  1. package/artifacts/.templates/cat20/cat20.scrypt.map +1 -1
  2. package/artifacts/.templates/cat20/cat20.scrypt.tpl +26 -12
  3. package/artifacts/.templates/cat20/cat20Admin.scrypt.map +1 -0
  4. package/artifacts/.templates/cat20/cat20Admin.scrypt.tpl +73 -0
  5. package/artifacts/.templates/cat20/cat20Admin.transformer.json +10 -0
  6. package/artifacts/.templates/cat20/cat20GuardStateLib.scrypt.map +1 -1
  7. package/artifacts/.templates/cat20/cat20GuardStateLib.scrypt.tpl +7 -6
  8. package/artifacts/.templates/cat20/cat20Guard_12_12_2.scrypt.map +1 -0
  9. package/artifacts/.templates/cat20/cat20Guard_12_12_2.scrypt.tpl +124 -0
  10. package/artifacts/.templates/cat20/cat20Guard_12_12_2.transformer.json +9 -0
  11. package/artifacts/.templates/cat20/cat20Guard_12_12_4.scrypt.map +1 -0
  12. package/artifacts/.templates/cat20/{cat20Guard.scrypt.tpl → cat20Guard_12_12_4.scrypt.tpl} +19 -12
  13. package/artifacts/.templates/cat20/cat20Guard_12_12_4.transformer.json +9 -0
  14. package/artifacts/.templates/cat20/cat20Guard_6_6_2.scrypt.map +1 -0
  15. package/artifacts/.templates/cat20/cat20Guard_6_6_2.scrypt.tpl +124 -0
  16. package/artifacts/.templates/cat20/cat20Guard_6_6_2.transformer.json +9 -0
  17. package/artifacts/.templates/cat20/cat20Guard_6_6_4.scrypt.map +1 -0
  18. package/artifacts/.templates/cat20/cat20Guard_6_6_4.scrypt.tpl +124 -0
  19. package/artifacts/.templates/cat20/cat20Guard_6_6_4.transformer.json +9 -0
  20. package/artifacts/.templates/cat20/cat20StateLib.scrypt.map +1 -1
  21. package/artifacts/.templates/cat20/cat20StateLib.scrypt.tpl +2 -4
  22. package/artifacts/.templates/cat20/minters/cat20ClosedMinter.scrypt.map +1 -1
  23. package/artifacts/.templates/cat20/minters/cat20ClosedMinter.scrypt.tpl +2 -2
  24. package/artifacts/.templates/cat20/minters/cat20OpenMinter.scrypt.map +1 -1
  25. package/artifacts/.templates/cat20/minters/cat20OpenMinter.scrypt.tpl +4 -17
  26. package/artifacts/.templates/cat20/types.scrypt.map +1 -1
  27. package/artifacts/.templates/cat20/types.scrypt.tpl +6 -24
  28. package/artifacts/.templates/cat721/cat721.scrypt.map +1 -0
  29. package/artifacts/.templates/cat721/cat721.scrypt.tpl +62 -0
  30. package/artifacts/.templates/cat721/cat721.transformer.json +9 -0
  31. package/artifacts/.templates/cat721/cat721GuardStateLib.scrypt.map +1 -0
  32. package/artifacts/.templates/cat721/cat721GuardStateLib.scrypt.tpl +35 -0
  33. package/artifacts/.templates/cat721/cat721GuardStateLib.transformer.json +7 -0
  34. package/artifacts/.templates/cat721/cat721Guard_12_12_2.scrypt.map +1 -0
  35. package/artifacts/.templates/cat721/cat721Guard_12_12_2.scrypt.tpl +122 -0
  36. package/artifacts/.templates/cat721/cat721Guard_12_12_2.transformer.json +9 -0
  37. package/artifacts/.templates/cat721/cat721Guard_12_12_4.scrypt.map +1 -0
  38. package/artifacts/.templates/cat721/cat721Guard_12_12_4.scrypt.tpl +122 -0
  39. package/artifacts/.templates/cat721/cat721Guard_12_12_4.transformer.json +9 -0
  40. package/artifacts/.templates/cat721/cat721Guard_6_6_2.scrypt.map +1 -0
  41. package/artifacts/.templates/cat721/cat721Guard_6_6_2.scrypt.tpl +122 -0
  42. package/artifacts/.templates/cat721/cat721Guard_6_6_2.transformer.json +9 -0
  43. package/artifacts/.templates/cat721/cat721Guard_6_6_4.scrypt.map +1 -0
  44. package/artifacts/.templates/cat721/cat721Guard_6_6_4.scrypt.tpl +122 -0
  45. package/artifacts/.templates/cat721/cat721Guard_6_6_4.transformer.json +9 -0
  46. package/artifacts/.templates/cat721/cat721StateLib.scrypt.map +1 -0
  47. package/artifacts/.templates/cat721/cat721StateLib.scrypt.tpl +19 -0
  48. package/artifacts/.templates/cat721/cat721StateLib.transformer.json +7 -0
  49. package/artifacts/.templates/cat721/minters/cat721ClosedMinter.scrypt.map +1 -0
  50. package/artifacts/.templates/cat721/minters/cat721ClosedMinter.scrypt.tpl +62 -0
  51. package/artifacts/.templates/cat721/minters/cat721ClosedMinter.transformer.json +9 -0
  52. package/artifacts/.templates/cat721/minters/cat721OpenMintInfo.scrypt.map +1 -0
  53. package/artifacts/.templates/cat721/minters/cat721OpenMintInfo.scrypt.tpl +14 -0
  54. package/artifacts/.templates/cat721/minters/cat721OpenMintInfo.transformer.json +7 -0
  55. package/artifacts/.templates/cat721/minters/cat721OpenMinter.scrypt.map +1 -0
  56. package/artifacts/.templates/cat721/minters/cat721OpenMinter.scrypt.tpl +73 -0
  57. package/artifacts/.templates/cat721/minters/cat721OpenMinter.transformer.json +9 -0
  58. package/artifacts/.templates/cat721/minters/cat721OpenMinterMerkleTree.scrypt.map +1 -0
  59. package/artifacts/.templates/cat721/minters/cat721OpenMinterMerkleTree.scrypt.tpl +35 -0
  60. package/artifacts/.templates/cat721/minters/cat721OpenMinterMerkleTree.transformer.json +7 -0
  61. package/artifacts/.templates/cat721/types.scrypt.map +1 -0
  62. package/artifacts/.templates/cat721/types.scrypt.tpl +29 -0
  63. package/artifacts/.templates/cat721/types.transformer.json +7 -0
  64. package/artifacts/.templates/constants.scrypt.map +1 -1
  65. package/artifacts/.templates/constants.scrypt.tpl +1 -0
  66. package/artifacts/.templates/types.scrypt.map +1 -1
  67. package/artifacts/.templates/types.scrypt.tpl +8 -1
  68. package/artifacts/.templates/utils/ownerUtils.scrypt.map +1 -1
  69. package/artifacts/.templates/utils/ownerUtils.scrypt.tpl +4 -0
  70. package/artifacts/.templates/utils/safeMath.scrypt.map +1 -1
  71. package/artifacts/cat20/cat20.json +77 -113
  72. package/artifacts/cat20/cat20.scrypt +41 -27
  73. package/artifacts/cat20/cat20Admin.json +437 -0
  74. package/artifacts/cat20/cat20Admin.scrypt +75 -0
  75. package/artifacts/cat20/cat20GuardStateLib.json +27 -93
  76. package/artifacts/cat20/cat20GuardStateLib.scrypt +11 -10
  77. package/artifacts/cat20/cat20Guard_12_12_2.json +381 -0
  78. package/artifacts/cat20/cat20Guard_12_12_2.scrypt +126 -0
  79. package/artifacts/cat20/cat20Guard_12_12_4.json +381 -0
  80. package/artifacts/cat20/cat20Guard_12_12_4.scrypt +126 -0
  81. package/artifacts/cat20/cat20Guard_6_6_2.json +381 -0
  82. package/artifacts/cat20/cat20Guard_6_6_2.scrypt +126 -0
  83. package/artifacts/cat20/cat20Guard_6_6_4.json +381 -0
  84. package/artifacts/cat20/cat20Guard_6_6_4.scrypt +126 -0
  85. package/artifacts/cat20/cat20StateLib.json +28 -100
  86. package/artifacts/cat20/cat20StateLib.scrypt +7 -9
  87. package/artifacts/cat20/minters/cat20ClosedMinter.json +40 -112
  88. package/artifacts/cat20/minters/cat20ClosedMinter.scrypt +24 -24
  89. package/artifacts/cat20/minters/cat20OpenMinter.json +40 -123
  90. package/artifacts/cat20/minters/cat20OpenMinter.scrypt +20 -33
  91. package/artifacts/cat20/types.json +11 -77
  92. package/artifacts/cat20/types.scrypt +10 -28
  93. package/artifacts/cat721/cat721.json +441 -0
  94. package/artifacts/cat721/cat721.scrypt +64 -0
  95. package/artifacts/cat721/cat721GuardStateLib.json +303 -0
  96. package/artifacts/cat721/cat721GuardStateLib.scrypt +37 -0
  97. package/artifacts/cat721/cat721Guard_12_12_2.json +383 -0
  98. package/artifacts/cat721/cat721Guard_12_12_2.scrypt +124 -0
  99. package/artifacts/cat721/cat721Guard_12_12_4.json +383 -0
  100. package/artifacts/cat721/cat721Guard_12_12_4.scrypt +124 -0
  101. package/artifacts/cat721/cat721Guard_6_6_2.json +383 -0
  102. package/artifacts/cat721/cat721Guard_6_6_2.scrypt +124 -0
  103. package/artifacts/cat721/cat721Guard_6_6_4.json +383 -0
  104. package/artifacts/cat721/cat721Guard_6_6_4.scrypt +124 -0
  105. package/artifacts/cat721/cat721StateLib.json +309 -0
  106. package/artifacts/cat721/cat721StateLib.scrypt +21 -0
  107. package/artifacts/cat721/minters/cat721ClosedMinter.json +417 -0
  108. package/artifacts/cat721/minters/cat721ClosedMinter.scrypt +64 -0
  109. package/artifacts/cat721/minters/cat721OpenMintInfo.json +43 -0
  110. package/artifacts/cat721/minters/cat721OpenMintInfo.scrypt +16 -0
  111. package/artifacts/cat721/minters/cat721OpenMinter.json +460 -0
  112. package/artifacts/cat721/minters/cat721OpenMinter.scrypt +75 -0
  113. package/{dist/artifacts/p2pkh.json → artifacts/cat721/minters/cat721OpenMinterMerkleTree.json} +122 -50
  114. package/artifacts/cat721/minters/cat721OpenMinterMerkleTree.scrypt +37 -0
  115. package/artifacts/cat721/types.json +101 -0
  116. package/artifacts/cat721/types.scrypt +31 -0
  117. package/artifacts/constants.json +2 -2
  118. package/artifacts/constants.scrypt +2 -1
  119. package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/backtrace.scrypt +12 -12
  120. package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/contextUtils.scrypt +16 -16
  121. package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/stateUtils.scrypt +1 -1
  122. package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/stdUtils.scrypt +12 -12
  123. package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/txHashPreimageUtils.scrypt +7 -7
  124. package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/txUtils.scrypt +12 -12
  125. package/artifacts/scrypt-ts-opcat/assets/smart-contract/types/structs.scrypt +8 -8
  126. package/artifacts/types.json +23 -1
  127. package/artifacts/types.scrypt +8 -1
  128. package/artifacts/utils/ownerUtils.json +14 -14
  129. package/artifacts/utils/ownerUtils.scrypt +7 -3
  130. package/artifacts/utils/safeMath.json +14 -14
  131. package/artifacts/utils/safeMath.scrypt +1 -1
  132. package/dist/artifacts/.templates/cat20/cat20.scrypt.map +1 -1
  133. package/dist/artifacts/.templates/cat20/cat20.scrypt.tpl +26 -12
  134. package/dist/artifacts/.templates/cat20/cat20Admin.scrypt.map +1 -0
  135. package/dist/artifacts/.templates/cat20/cat20Admin.scrypt.tpl +73 -0
  136. package/dist/artifacts/.templates/cat20/cat20Admin.transformer.json +10 -0
  137. package/dist/artifacts/.templates/cat20/cat20GuardStateLib.scrypt.map +1 -1
  138. package/dist/artifacts/.templates/cat20/cat20GuardStateLib.scrypt.tpl +7 -6
  139. package/dist/artifacts/.templates/cat20/cat20Guard_12_12_2.scrypt.map +1 -0
  140. package/dist/artifacts/.templates/cat20/cat20Guard_12_12_2.scrypt.tpl +124 -0
  141. package/dist/artifacts/.templates/cat20/cat20Guard_12_12_2.transformer.json +9 -0
  142. package/dist/artifacts/.templates/cat20/cat20Guard_12_12_4.scrypt.map +1 -0
  143. package/dist/artifacts/.templates/cat20/{cat20Guard.scrypt.tpl → cat20Guard_12_12_4.scrypt.tpl} +19 -12
  144. package/dist/artifacts/.templates/cat20/cat20Guard_12_12_4.transformer.json +9 -0
  145. package/dist/artifacts/.templates/cat20/cat20Guard_6_6_2.scrypt.map +1 -0
  146. package/dist/artifacts/.templates/cat20/cat20Guard_6_6_2.scrypt.tpl +124 -0
  147. package/dist/artifacts/.templates/cat20/cat20Guard_6_6_2.transformer.json +9 -0
  148. package/dist/artifacts/.templates/cat20/cat20Guard_6_6_4.scrypt.map +1 -0
  149. package/dist/artifacts/.templates/cat20/cat20Guard_6_6_4.scrypt.tpl +124 -0
  150. package/dist/artifacts/.templates/cat20/cat20Guard_6_6_4.transformer.json +9 -0
  151. package/dist/artifacts/.templates/cat20/cat20StateLib.scrypt.map +1 -1
  152. package/dist/artifacts/.templates/cat20/cat20StateLib.scrypt.tpl +2 -4
  153. package/dist/artifacts/.templates/cat20/minters/cat20ClosedMinter.scrypt.map +1 -1
  154. package/dist/artifacts/.templates/cat20/minters/cat20ClosedMinter.scrypt.tpl +2 -2
  155. package/dist/artifacts/.templates/cat20/minters/cat20OpenMinter.scrypt.map +1 -1
  156. package/dist/artifacts/.templates/cat20/minters/cat20OpenMinter.scrypt.tpl +4 -17
  157. package/dist/artifacts/.templates/cat20/types.scrypt.map +1 -1
  158. package/dist/artifacts/.templates/cat20/types.scrypt.tpl +6 -24
  159. package/dist/artifacts/.templates/cat721/cat721.scrypt.map +1 -0
  160. package/dist/artifacts/.templates/cat721/cat721.scrypt.tpl +62 -0
  161. package/dist/artifacts/.templates/cat721/cat721.transformer.json +9 -0
  162. package/dist/artifacts/.templates/cat721/cat721GuardStateLib.scrypt.map +1 -0
  163. package/dist/artifacts/.templates/cat721/cat721GuardStateLib.scrypt.tpl +35 -0
  164. package/dist/artifacts/.templates/cat721/cat721GuardStateLib.transformer.json +7 -0
  165. package/dist/artifacts/.templates/cat721/cat721Guard_12_12_2.scrypt.map +1 -0
  166. package/dist/artifacts/.templates/cat721/cat721Guard_12_12_2.scrypt.tpl +122 -0
  167. package/dist/artifacts/.templates/cat721/cat721Guard_12_12_2.transformer.json +9 -0
  168. package/dist/artifacts/.templates/cat721/cat721Guard_12_12_4.scrypt.map +1 -0
  169. package/dist/artifacts/.templates/cat721/cat721Guard_12_12_4.scrypt.tpl +122 -0
  170. package/dist/artifacts/.templates/cat721/cat721Guard_12_12_4.transformer.json +9 -0
  171. package/dist/artifacts/.templates/cat721/cat721Guard_6_6_2.scrypt.map +1 -0
  172. package/dist/artifacts/.templates/cat721/cat721Guard_6_6_2.scrypt.tpl +122 -0
  173. package/dist/artifacts/.templates/cat721/cat721Guard_6_6_2.transformer.json +9 -0
  174. package/dist/artifacts/.templates/cat721/cat721Guard_6_6_4.scrypt.map +1 -0
  175. package/dist/artifacts/.templates/cat721/cat721Guard_6_6_4.scrypt.tpl +122 -0
  176. package/dist/artifacts/.templates/cat721/cat721Guard_6_6_4.transformer.json +9 -0
  177. package/dist/artifacts/.templates/cat721/cat721StateLib.scrypt.map +1 -0
  178. package/dist/artifacts/.templates/cat721/cat721StateLib.scrypt.tpl +19 -0
  179. package/dist/artifacts/.templates/cat721/cat721StateLib.transformer.json +7 -0
  180. package/dist/artifacts/.templates/cat721/minters/cat721ClosedMinter.scrypt.map +1 -0
  181. package/dist/artifacts/.templates/cat721/minters/cat721ClosedMinter.scrypt.tpl +62 -0
  182. package/dist/artifacts/.templates/cat721/minters/cat721ClosedMinter.transformer.json +9 -0
  183. package/dist/artifacts/.templates/cat721/minters/cat721OpenMintInfo.scrypt.map +1 -0
  184. package/dist/artifacts/.templates/cat721/minters/cat721OpenMintInfo.scrypt.tpl +14 -0
  185. package/dist/artifacts/.templates/cat721/minters/cat721OpenMintInfo.transformer.json +7 -0
  186. package/dist/artifacts/.templates/cat721/minters/cat721OpenMinter.scrypt.map +1 -0
  187. package/dist/artifacts/.templates/cat721/minters/cat721OpenMinter.scrypt.tpl +73 -0
  188. package/dist/artifacts/.templates/cat721/minters/cat721OpenMinter.transformer.json +9 -0
  189. package/dist/artifacts/.templates/cat721/minters/cat721OpenMinterMerkleTree.scrypt.map +1 -0
  190. package/dist/artifacts/.templates/cat721/minters/cat721OpenMinterMerkleTree.scrypt.tpl +35 -0
  191. package/dist/artifacts/.templates/cat721/minters/cat721OpenMinterMerkleTree.transformer.json +7 -0
  192. package/dist/artifacts/.templates/cat721/types.scrypt.map +1 -0
  193. package/dist/artifacts/.templates/cat721/types.scrypt.tpl +29 -0
  194. package/dist/artifacts/.templates/cat721/types.transformer.json +7 -0
  195. package/dist/artifacts/.templates/constants.scrypt.map +1 -1
  196. package/dist/artifacts/.templates/constants.scrypt.tpl +1 -0
  197. package/dist/artifacts/.templates/types.scrypt.map +1 -1
  198. package/dist/artifacts/.templates/types.scrypt.tpl +8 -1
  199. package/dist/artifacts/.templates/utils/ownerUtils.scrypt.map +1 -1
  200. package/dist/artifacts/.templates/utils/ownerUtils.scrypt.tpl +4 -0
  201. package/dist/artifacts/.templates/utils/safeMath.scrypt.map +1 -1
  202. package/dist/artifacts/cat20/cat20.json +77 -113
  203. package/dist/artifacts/cat20/cat20.scrypt +41 -27
  204. package/dist/artifacts/cat20/cat20Admin.json +437 -0
  205. package/dist/artifacts/cat20/cat20Admin.scrypt +75 -0
  206. package/dist/artifacts/cat20/cat20GuardStateLib.json +27 -93
  207. package/dist/artifacts/cat20/cat20GuardStateLib.scrypt +11 -10
  208. package/dist/artifacts/cat20/cat20Guard_12_12_2.json +381 -0
  209. package/dist/artifacts/cat20/cat20Guard_12_12_2.scrypt +126 -0
  210. package/dist/artifacts/cat20/cat20Guard_12_12_4.json +381 -0
  211. package/dist/artifacts/cat20/cat20Guard_12_12_4.scrypt +126 -0
  212. package/dist/artifacts/cat20/cat20Guard_6_6_2.json +381 -0
  213. package/dist/artifacts/cat20/cat20Guard_6_6_2.scrypt +126 -0
  214. package/dist/artifacts/cat20/cat20Guard_6_6_4.json +381 -0
  215. package/dist/artifacts/cat20/cat20Guard_6_6_4.scrypt +126 -0
  216. package/dist/artifacts/cat20/cat20StateLib.json +28 -100
  217. package/dist/artifacts/cat20/cat20StateLib.scrypt +7 -9
  218. package/dist/artifacts/cat20/minters/cat20ClosedMinter.json +40 -112
  219. package/dist/artifacts/cat20/minters/cat20ClosedMinter.scrypt +24 -24
  220. package/dist/artifacts/cat20/minters/cat20OpenMinter.json +40 -123
  221. package/dist/artifacts/cat20/minters/cat20OpenMinter.scrypt +20 -33
  222. package/dist/artifacts/cat20/types.json +11 -77
  223. package/dist/artifacts/cat20/types.scrypt +10 -28
  224. package/dist/artifacts/cat721/cat721.json +441 -0
  225. package/dist/artifacts/cat721/cat721.scrypt +64 -0
  226. package/dist/artifacts/cat721/cat721GuardStateLib.json +303 -0
  227. package/dist/artifacts/cat721/cat721GuardStateLib.scrypt +37 -0
  228. package/dist/artifacts/cat721/cat721Guard_12_12_2.json +383 -0
  229. package/dist/artifacts/cat721/cat721Guard_12_12_2.scrypt +124 -0
  230. package/dist/artifacts/cat721/cat721Guard_12_12_4.json +383 -0
  231. package/dist/artifacts/cat721/cat721Guard_12_12_4.scrypt +124 -0
  232. package/dist/artifacts/cat721/cat721Guard_6_6_2.json +383 -0
  233. package/dist/artifacts/cat721/cat721Guard_6_6_2.scrypt +124 -0
  234. package/dist/artifacts/cat721/cat721Guard_6_6_4.json +383 -0
  235. package/dist/artifacts/cat721/cat721Guard_6_6_4.scrypt +124 -0
  236. package/dist/artifacts/cat721/cat721StateLib.json +309 -0
  237. package/dist/artifacts/cat721/cat721StateLib.scrypt +21 -0
  238. package/dist/artifacts/cat721/minters/cat721ClosedMinter.json +417 -0
  239. package/dist/artifacts/cat721/minters/cat721ClosedMinter.scrypt +64 -0
  240. package/dist/artifacts/cat721/minters/cat721OpenMintInfo.json +43 -0
  241. package/dist/artifacts/cat721/minters/cat721OpenMintInfo.scrypt +16 -0
  242. package/dist/artifacts/cat721/minters/cat721OpenMinter.json +460 -0
  243. package/dist/artifacts/cat721/minters/cat721OpenMinter.scrypt +75 -0
  244. package/{artifacts/p2pkh.json → dist/artifacts/cat721/minters/cat721OpenMinterMerkleTree.json} +122 -50
  245. package/dist/artifacts/cat721/minters/cat721OpenMinterMerkleTree.scrypt +37 -0
  246. package/dist/artifacts/cat721/types.json +101 -0
  247. package/dist/artifacts/cat721/types.scrypt +31 -0
  248. package/dist/artifacts/constants.json +2 -2
  249. package/dist/artifacts/constants.scrypt +2 -1
  250. package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/backtrace.scrypt +12 -12
  251. package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/contextUtils.scrypt +16 -16
  252. package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/stateUtils.scrypt +1 -1
  253. package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/stdUtils.scrypt +12 -12
  254. package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/txHashPreimageUtils.scrypt +7 -7
  255. package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/txUtils.scrypt +12 -12
  256. package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/types/structs.scrypt +8 -8
  257. package/dist/artifacts/types.json +23 -1
  258. package/dist/artifacts/types.scrypt +8 -1
  259. package/dist/artifacts/utils/ownerUtils.json +14 -14
  260. package/dist/artifacts/utils/ownerUtils.scrypt +7 -3
  261. package/dist/artifacts/utils/safeMath.json +14 -14
  262. package/dist/artifacts/utils/safeMath.scrypt +1 -1
  263. package/dist/cjs/contracts/cat20/cat20.js +51 -15
  264. package/dist/cjs/contracts/cat20/cat20.js.map +1 -1
  265. package/dist/cjs/contracts/cat20/cat20Admin.js +73 -0
  266. package/dist/cjs/contracts/cat20/cat20Admin.js.map +1 -0
  267. package/dist/cjs/contracts/cat20/cat20GuardStateLib.js +16 -9
  268. package/dist/cjs/contracts/cat20/cat20GuardStateLib.js.map +1 -1
  269. package/dist/cjs/contracts/cat20/cat20Guard_12_12_2.js +190 -0
  270. package/dist/cjs/contracts/cat20/cat20Guard_12_12_2.js.map +1 -0
  271. package/dist/cjs/contracts/cat20/cat20Guard_12_12_4.js +190 -0
  272. package/dist/cjs/contracts/cat20/cat20Guard_12_12_4.js.map +1 -0
  273. package/dist/cjs/contracts/cat20/{cat20Guard.js → cat20Guard_6_6_2.js} +67 -46
  274. package/dist/cjs/contracts/cat20/cat20Guard_6_6_2.js.map +1 -0
  275. package/dist/cjs/contracts/cat20/cat20Guard_6_6_4.js +190 -0
  276. package/dist/cjs/contracts/cat20/cat20Guard_6_6_4.js.map +1 -0
  277. package/dist/cjs/contracts/cat20/cat20StateLib.js +6 -3
  278. package/dist/cjs/contracts/cat20/cat20StateLib.js.map +1 -1
  279. package/dist/cjs/contracts/cat20/minters/cat20ClosedMinter.js +15 -3
  280. package/dist/cjs/contracts/cat20/minters/cat20ClosedMinter.js.map +1 -1
  281. package/dist/cjs/contracts/cat20/minters/cat20ClosedMinterMetadata.js +7 -4
  282. package/dist/cjs/contracts/cat20/minters/cat20ClosedMinterMetadata.js.map +1 -1
  283. package/dist/cjs/contracts/cat20/minters/cat20OpenMinter.js +29 -32
  284. package/dist/cjs/contracts/cat20/minters/cat20OpenMinter.js.map +1 -1
  285. package/dist/cjs/contracts/cat20/minters/cat20OpenMinterMetadata.js +7 -4
  286. package/dist/cjs/contracts/cat20/minters/cat20OpenMinterMetadata.js.map +1 -1
  287. package/dist/cjs/contracts/cat721/cat721.js +84 -0
  288. package/dist/cjs/contracts/cat721/cat721.js.map +1 -0
  289. package/dist/cjs/contracts/cat721/cat721GuardStateLib.js +72 -0
  290. package/dist/cjs/contracts/cat721/cat721GuardStateLib.js.map +1 -0
  291. package/dist/cjs/contracts/cat721/cat721Guard_12_12_2.js +176 -0
  292. package/dist/cjs/contracts/cat721/cat721Guard_12_12_2.js.map +1 -0
  293. package/dist/cjs/contracts/cat721/cat721Guard_12_12_4.js +176 -0
  294. package/dist/cjs/contracts/cat721/cat721Guard_12_12_4.js.map +1 -0
  295. package/dist/cjs/contracts/cat721/cat721Guard_6_6_2.js +176 -0
  296. package/dist/cjs/contracts/cat721/cat721Guard_6_6_2.js.map +1 -0
  297. package/dist/cjs/contracts/cat721/cat721Guard_6_6_4.js +176 -0
  298. package/dist/cjs/contracts/cat721/cat721Guard_6_6_4.js.map +1 -0
  299. package/dist/cjs/contracts/{p2pkh.js → cat721/cat721StateLib.js} +21 -16
  300. package/dist/cjs/contracts/cat721/cat721StateLib.js.map +1 -0
  301. package/dist/cjs/contracts/cat721/minters/cat721ClosedMinter.js +94 -0
  302. package/dist/cjs/contracts/cat721/minters/cat721ClosedMinter.js.map +1 -0
  303. package/dist/cjs/contracts/cat721/minters/cat721ClosedMinterMetadata.js +23 -0
  304. package/dist/cjs/contracts/cat721/minters/cat721ClosedMinterMetadata.js.map +1 -0
  305. package/dist/cjs/contracts/cat721/minters/cat721OpenMintInfo.js +8 -0
  306. package/dist/cjs/contracts/cat721/minters/cat721OpenMintInfo.js.map +1 -0
  307. package/dist/cjs/contracts/cat721/minters/cat721OpenMinter.js +126 -0
  308. package/dist/cjs/contracts/cat721/minters/cat721OpenMinter.js.map +1 -0
  309. package/dist/cjs/contracts/cat721/minters/cat721OpenMinterMerkleTree.js +81 -0
  310. package/dist/cjs/contracts/cat721/minters/cat721OpenMinterMerkleTree.js.map +1 -0
  311. package/dist/cjs/contracts/cat721/minters/cat721OpenMinterMetadata.js +24 -0
  312. package/dist/cjs/contracts/cat721/minters/cat721OpenMinterMetadata.js.map +1 -0
  313. package/dist/cjs/contracts/cat721/types.js +9 -0
  314. package/dist/cjs/contracts/cat721/types.js.map +1 -0
  315. package/dist/cjs/contracts/catTags.js +22 -0
  316. package/dist/cjs/contracts/catTags.js.map +1 -0
  317. package/dist/cjs/contracts/constants.js +77 -8
  318. package/dist/cjs/contracts/constants.js.map +1 -1
  319. package/dist/cjs/contracts/index.js +17 -3
  320. package/dist/cjs/contracts/index.js.map +1 -1
  321. package/dist/cjs/contracts/types.js +4 -0
  322. package/dist/cjs/contracts/types.js.map +1 -1
  323. package/dist/cjs/contracts/utils/ownerUtils.js +26 -5
  324. package/dist/cjs/contracts/utils/ownerUtils.js.map +1 -1
  325. package/dist/cjs/contracts/utils/safeMath.js +6 -0
  326. package/dist/cjs/contracts/utils/safeMath.js.map +1 -1
  327. package/dist/cjs/features/cat20/admin/burnByAdmin.js +205 -0
  328. package/dist/cjs/features/cat20/admin/burnByAdmin.js.map +1 -0
  329. package/dist/cjs/features/cat20/admin/transferOwnership.js +74 -0
  330. package/dist/cjs/features/cat20/admin/transferOwnership.js.map +1 -0
  331. package/dist/cjs/features/cat20/burn/burn.js +34 -21
  332. package/dist/cjs/features/cat20/burn/burn.js.map +1 -1
  333. package/dist/cjs/features/cat20/deploy/closedMinter.js +83 -0
  334. package/dist/cjs/features/cat20/deploy/closedMinter.js.map +1 -0
  335. package/dist/cjs/features/cat20/deploy/openMinter.js +25 -15
  336. package/dist/cjs/features/cat20/deploy/openMinter.js.map +1 -1
  337. package/dist/cjs/features/cat20/index.js +43 -0
  338. package/dist/cjs/features/cat20/index.js.map +1 -0
  339. package/dist/cjs/features/cat20/mint/closedMinter.js +80 -0
  340. package/dist/cjs/features/cat20/mint/closedMinter.js.map +1 -0
  341. package/dist/cjs/features/cat20/mint/openMinter.js +21 -3
  342. package/dist/cjs/features/cat20/mint/openMinter.js.map +1 -1
  343. package/dist/cjs/features/cat20/send/contractSend.js +28 -11
  344. package/dist/cjs/features/cat20/send/contractSend.js.map +1 -1
  345. package/dist/cjs/features/cat20/send/singleSend.js +84 -22
  346. package/dist/cjs/features/cat20/send/singleSend.js.map +1 -1
  347. package/dist/cjs/features/cat721/burn/burn.js +99 -0
  348. package/dist/cjs/features/cat721/burn/burn.js.map +1 -0
  349. package/dist/cjs/features/cat721/deploy/cat721ClosedMinter.js +79 -0
  350. package/dist/cjs/features/cat721/deploy/cat721ClosedMinter.js.map +1 -0
  351. package/dist/cjs/features/cat721/deploy/cat721OpenMinter.js +74 -0
  352. package/dist/cjs/features/cat721/deploy/cat721OpenMinter.js.map +1 -0
  353. package/dist/cjs/features/cat721/index.js +30 -0
  354. package/dist/cjs/features/cat721/index.js.map +1 -0
  355. package/dist/cjs/features/cat721/mint/cat721ClosedMinter.js +83 -0
  356. package/dist/cjs/features/cat721/mint/cat721ClosedMinter.js.map +1 -0
  357. package/dist/cjs/features/cat721/mint/cat721OpenMinter.js +87 -0
  358. package/dist/cjs/features/cat721/mint/cat721OpenMinter.js.map +1 -0
  359. package/dist/cjs/features/cat721/mint/nft.js +39 -0
  360. package/dist/cjs/features/cat721/mint/nft.js.map +1 -0
  361. package/dist/cjs/features/cat721/send/singleSend.js +187 -0
  362. package/dist/cjs/features/cat721/send/singleSend.js.map +1 -0
  363. package/dist/cjs/features/index.js +4 -6
  364. package/dist/cjs/features/index.js.map +1 -1
  365. package/dist/cjs/index.js +4 -2
  366. package/dist/cjs/index.js.map +1 -1
  367. package/dist/cjs/lib/cat721OPenMinterMerkleTreeData.js +180 -0
  368. package/dist/cjs/lib/cat721OPenMinterMerkleTreeData.js.map +1 -0
  369. package/dist/cjs/lib/metadata.js +253 -1
  370. package/dist/cjs/lib/metadata.js.map +1 -1
  371. package/dist/cjs/typeConstants.js +22 -5
  372. package/dist/cjs/typeConstants.js.map +1 -1
  373. package/dist/cjs/utils/contractPeripheral.js +437 -29
  374. package/dist/cjs/utils/contractPeripheral.js.map +1 -1
  375. package/dist/cjs/utils/index.js +76 -64
  376. package/dist/cjs/utils/index.js.map +1 -1
  377. package/dist/cjs/utils/loadAllArtifacts.js +44 -11
  378. package/dist/cjs/utils/loadAllArtifacts.js.map +1 -1
  379. package/dist/esm/contracts/cat20/cat20.js +56 -17
  380. package/dist/esm/contracts/cat20/cat20.js.map +1 -1
  381. package/dist/esm/contracts/cat20/cat20Admin.js +70 -0
  382. package/dist/esm/contracts/cat20/cat20Admin.js.map +1 -0
  383. package/dist/esm/contracts/cat20/cat20GuardStateLib.js +18 -11
  384. package/dist/esm/contracts/cat20/cat20GuardStateLib.js.map +1 -1
  385. package/dist/esm/contracts/cat20/cat20Guard_12_12_2.js +187 -0
  386. package/dist/esm/contracts/cat20/cat20Guard_12_12_2.js.map +1 -0
  387. package/dist/esm/contracts/cat20/cat20Guard_12_12_4.js +187 -0
  388. package/dist/esm/contracts/cat20/cat20Guard_12_12_4.js.map +1 -0
  389. package/dist/esm/contracts/cat20/{cat20Guard.js → cat20Guard_6_6_2.js} +68 -46
  390. package/dist/esm/contracts/cat20/cat20Guard_6_6_2.js.map +1 -0
  391. package/dist/esm/contracts/cat20/cat20Guard_6_6_4.js +187 -0
  392. package/dist/esm/contracts/cat20/cat20Guard_6_6_4.js.map +1 -0
  393. package/dist/esm/contracts/cat20/cat20StateLib.js +6 -3
  394. package/dist/esm/contracts/cat20/cat20StateLib.js.map +1 -1
  395. package/dist/esm/contracts/cat20/minters/cat20ClosedMinter.js +17 -4
  396. package/dist/esm/contracts/cat20/minters/cat20ClosedMinter.js.map +1 -1
  397. package/dist/esm/contracts/cat20/minters/cat20ClosedMinterMetadata.js +7 -4
  398. package/dist/esm/contracts/cat20/minters/cat20ClosedMinterMetadata.js.map +1 -1
  399. package/dist/esm/contracts/cat20/minters/cat20OpenMinter.js +31 -33
  400. package/dist/esm/contracts/cat20/minters/cat20OpenMinter.js.map +1 -1
  401. package/dist/esm/contracts/cat20/minters/cat20OpenMinterMetadata.js +7 -4
  402. package/dist/esm/contracts/cat20/minters/cat20OpenMinterMetadata.js.map +1 -1
  403. package/dist/esm/contracts/cat721/cat721.js +83 -0
  404. package/dist/esm/contracts/cat721/cat721.js.map +1 -0
  405. package/dist/esm/contracts/cat721/cat721GuardStateLib.js +68 -0
  406. package/dist/esm/contracts/cat721/cat721GuardStateLib.js.map +1 -0
  407. package/dist/esm/contracts/cat721/cat721Guard_12_12_2.js +173 -0
  408. package/dist/esm/contracts/cat721/cat721Guard_12_12_2.js.map +1 -0
  409. package/dist/esm/contracts/cat721/cat721Guard_12_12_4.js +173 -0
  410. package/dist/esm/contracts/cat721/cat721Guard_12_12_4.js.map +1 -0
  411. package/dist/esm/contracts/cat721/cat721Guard_6_6_2.js +173 -0
  412. package/dist/esm/contracts/cat721/cat721Guard_6_6_2.js.map +1 -0
  413. package/dist/esm/contracts/cat721/cat721Guard_6_6_4.js +173 -0
  414. package/dist/esm/contracts/cat721/cat721Guard_6_6_4.js.map +1 -0
  415. package/dist/esm/contracts/{p2pkh.js → cat721/cat721StateLib.js} +20 -16
  416. package/dist/esm/contracts/cat721/cat721StateLib.js.map +1 -0
  417. package/dist/esm/contracts/cat721/minters/cat721ClosedMinter.js +94 -0
  418. package/dist/esm/contracts/cat721/minters/cat721ClosedMinter.js.map +1 -0
  419. package/dist/esm/contracts/cat721/minters/cat721ClosedMinterMetadata.js +19 -0
  420. package/dist/esm/contracts/cat721/minters/cat721ClosedMinterMetadata.js.map +1 -0
  421. package/dist/esm/contracts/cat721/minters/cat721OpenMintInfo.js +4 -0
  422. package/dist/esm/contracts/cat721/minters/cat721OpenMintInfo.js.map +1 -0
  423. package/dist/esm/contracts/cat721/minters/cat721OpenMinter.js +127 -0
  424. package/dist/esm/contracts/cat721/minters/cat721OpenMinter.js.map +1 -0
  425. package/dist/esm/contracts/cat721/minters/cat721OpenMinterMerkleTree.js +77 -0
  426. package/dist/esm/contracts/cat721/minters/cat721OpenMinterMerkleTree.js.map +1 -0
  427. package/dist/esm/contracts/cat721/minters/cat721OpenMinterMetadata.js +20 -0
  428. package/dist/esm/contracts/cat721/minters/cat721OpenMinterMetadata.js.map +1 -0
  429. package/dist/esm/contracts/cat721/types.js +6 -0
  430. package/dist/esm/contracts/cat721/types.js.map +1 -0
  431. package/dist/esm/contracts/catTags.js +18 -0
  432. package/dist/esm/contracts/catTags.js.map +1 -0
  433. package/dist/esm/contracts/constants.js +77 -8
  434. package/dist/esm/contracts/constants.js.map +1 -1
  435. package/dist/esm/contracts/index.js +17 -3
  436. package/dist/esm/contracts/index.js.map +1 -1
  437. package/dist/esm/contracts/types.js +3 -1
  438. package/dist/esm/contracts/types.js.map +1 -1
  439. package/dist/esm/contracts/utils/ownerUtils.js +27 -6
  440. package/dist/esm/contracts/utils/ownerUtils.js.map +1 -1
  441. package/dist/esm/contracts/utils/safeMath.js +6 -0
  442. package/dist/esm/contracts/utils/safeMath.js.map +1 -1
  443. package/dist/esm/features/cat20/admin/burnByAdmin.js +201 -0
  444. package/dist/esm/features/cat20/admin/burnByAdmin.js.map +1 -0
  445. package/dist/esm/features/cat20/admin/transferOwnership.js +70 -0
  446. package/dist/esm/features/cat20/admin/transferOwnership.js.map +1 -0
  447. package/dist/esm/features/cat20/burn/burn.js +36 -23
  448. package/dist/esm/features/cat20/burn/burn.js.map +1 -1
  449. package/dist/esm/features/cat20/deploy/closedMinter.js +79 -0
  450. package/dist/esm/features/cat20/deploy/closedMinter.js.map +1 -0
  451. package/dist/esm/features/cat20/deploy/openMinter.js +26 -16
  452. package/dist/esm/features/cat20/deploy/openMinter.js.map +1 -1
  453. package/dist/esm/features/cat20/index.js +24 -0
  454. package/dist/esm/features/cat20/index.js.map +1 -0
  455. package/dist/esm/features/cat20/mint/closedMinter.js +76 -0
  456. package/dist/esm/features/cat20/mint/closedMinter.js.map +1 -0
  457. package/dist/esm/features/cat20/mint/openMinter.js +20 -2
  458. package/dist/esm/features/cat20/mint/openMinter.js.map +1 -1
  459. package/dist/esm/features/cat20/send/contractSend.js +30 -13
  460. package/dist/esm/features/cat20/send/contractSend.js.map +1 -1
  461. package/dist/esm/features/cat20/send/singleSend.js +86 -24
  462. package/dist/esm/features/cat20/send/singleSend.js.map +1 -1
  463. package/dist/esm/features/cat721/burn/burn.js +95 -0
  464. package/dist/esm/features/cat721/burn/burn.js.map +1 -0
  465. package/dist/esm/features/cat721/deploy/cat721ClosedMinter.js +75 -0
  466. package/dist/esm/features/cat721/deploy/cat721ClosedMinter.js.map +1 -0
  467. package/dist/esm/features/cat721/deploy/cat721OpenMinter.js +70 -0
  468. package/dist/esm/features/cat721/deploy/cat721OpenMinter.js.map +1 -0
  469. package/dist/esm/features/cat721/index.js +16 -0
  470. package/dist/esm/features/cat721/index.js.map +1 -0
  471. package/dist/esm/features/cat721/mint/cat721ClosedMinter.js +79 -0
  472. package/dist/esm/features/cat721/mint/cat721ClosedMinter.js.map +1 -0
  473. package/dist/esm/features/cat721/mint/cat721OpenMinter.js +83 -0
  474. package/dist/esm/features/cat721/mint/cat721OpenMinter.js.map +1 -0
  475. package/dist/esm/features/cat721/mint/nft.js +35 -0
  476. package/dist/esm/features/cat721/mint/nft.js.map +1 -0
  477. package/dist/esm/features/cat721/send/singleSend.js +180 -0
  478. package/dist/esm/features/cat721/send/singleSend.js.map +1 -0
  479. package/dist/esm/features/index.js +4 -5
  480. package/dist/esm/features/index.js.map +1 -1
  481. package/dist/esm/index.js +3 -2
  482. package/dist/esm/index.js.map +1 -1
  483. package/dist/esm/lib/cat721OPenMinterMerkleTreeData.js +178 -0
  484. package/dist/esm/lib/cat721OPenMinterMerkleTreeData.js.map +1 -0
  485. package/dist/esm/lib/metadata.js +251 -0
  486. package/dist/esm/lib/metadata.js.map +1 -1
  487. package/dist/esm/typeConstants.js +22 -5
  488. package/dist/esm/typeConstants.js.map +1 -1
  489. package/dist/esm/utils/contractPeripheral.js +435 -30
  490. package/dist/esm/utils/contractPeripheral.js.map +1 -1
  491. package/dist/esm/utils/index.js +74 -63
  492. package/dist/esm/utils/index.js.map +1 -1
  493. package/dist/esm/utils/loadAllArtifacts.js +44 -11
  494. package/dist/esm/utils/loadAllArtifacts.js.map +1 -1
  495. package/dist/types/contracts/cat20/cat20.d.ts +14 -6
  496. package/dist/types/contracts/cat20/cat20.d.ts.map +1 -1
  497. package/dist/types/contracts/cat20/cat20Admin.d.ts +9 -0
  498. package/dist/types/contracts/cat20/cat20Admin.d.ts.map +1 -0
  499. package/dist/types/contracts/cat20/cat20GuardStateLib.d.ts +9 -3
  500. package/dist/types/contracts/cat20/cat20GuardStateLib.d.ts.map +1 -1
  501. package/dist/types/contracts/cat20/cat20Guard_12_12_2.d.ts +18 -0
  502. package/dist/types/contracts/cat20/cat20Guard_12_12_2.d.ts.map +1 -0
  503. package/dist/types/contracts/cat20/cat20Guard_12_12_4.d.ts +18 -0
  504. package/dist/types/contracts/cat20/cat20Guard_12_12_4.d.ts.map +1 -0
  505. package/dist/types/contracts/cat20/cat20Guard_6_6_2.d.ts +18 -0
  506. package/dist/types/contracts/cat20/cat20Guard_6_6_2.d.ts.map +1 -0
  507. package/dist/types/contracts/cat20/cat20Guard_6_6_4.d.ts +18 -0
  508. package/dist/types/contracts/cat20/cat20Guard_6_6_4.d.ts.map +1 -0
  509. package/dist/types/contracts/cat20/cat20StateLib.d.ts +6 -0
  510. package/dist/types/contracts/cat20/cat20StateLib.d.ts.map +1 -1
  511. package/dist/types/contracts/cat20/minters/cat20ClosedMinter.d.ts +6 -0
  512. package/dist/types/contracts/cat20/minters/cat20ClosedMinter.d.ts.map +1 -1
  513. package/dist/types/contracts/cat20/minters/cat20ClosedMinterMetadata.d.ts +7 -3
  514. package/dist/types/contracts/cat20/minters/cat20ClosedMinterMetadata.d.ts.map +1 -1
  515. package/dist/types/contracts/cat20/minters/cat20OpenMinter.d.ts +10 -2
  516. package/dist/types/contracts/cat20/minters/cat20OpenMinter.d.ts.map +1 -1
  517. package/dist/types/contracts/cat20/minters/cat20OpenMinterMetadata.d.ts +7 -3
  518. package/dist/types/contracts/cat20/minters/cat20OpenMinterMetadata.d.ts.map +1 -1
  519. package/dist/types/contracts/cat20/types.d.ts +69 -16
  520. package/dist/types/contracts/cat20/types.d.ts.map +1 -1
  521. package/dist/types/contracts/cat721/cat721.d.ts +19 -0
  522. package/dist/types/contracts/cat721/cat721.d.ts.map +1 -0
  523. package/dist/types/contracts/cat721/cat721GuardStateLib.d.ts +15 -0
  524. package/dist/types/contracts/cat721/cat721GuardStateLib.d.ts.map +1 -0
  525. package/dist/types/contracts/cat721/cat721Guard_12_12_2.d.ts +18 -0
  526. package/dist/types/contracts/cat721/cat721Guard_12_12_2.d.ts.map +1 -0
  527. package/dist/types/contracts/cat721/cat721Guard_12_12_4.d.ts +18 -0
  528. package/dist/types/contracts/cat721/cat721Guard_12_12_4.d.ts.map +1 -0
  529. package/dist/types/contracts/cat721/cat721Guard_6_6_2.d.ts +18 -0
  530. package/dist/types/contracts/cat721/cat721Guard_6_6_2.d.ts.map +1 -0
  531. package/dist/types/contracts/cat721/cat721Guard_6_6_4.d.ts +18 -0
  532. package/dist/types/contracts/cat721/cat721Guard_6_6_4.d.ts.map +1 -0
  533. package/dist/types/contracts/cat721/cat721StateLib.d.ts +13 -0
  534. package/dist/types/contracts/cat721/cat721StateLib.d.ts.map +1 -0
  535. package/dist/types/contracts/cat721/minters/cat721ClosedMinter.d.ts +17 -0
  536. package/dist/types/contracts/cat721/minters/cat721ClosedMinter.d.ts.map +1 -0
  537. package/dist/types/contracts/cat721/minters/cat721ClosedMinterMetadata.d.ts +10 -0
  538. package/dist/types/contracts/cat721/minters/cat721ClosedMinterMetadata.d.ts.map +1 -0
  539. package/dist/types/contracts/cat721/minters/cat721OpenMintInfo.d.ts +8 -0
  540. package/dist/types/contracts/cat721/minters/cat721OpenMintInfo.d.ts.map +1 -0
  541. package/dist/types/contracts/cat721/minters/cat721OpenMinter.d.ts +21 -0
  542. package/dist/types/contracts/cat721/minters/cat721OpenMinter.d.ts.map +1 -0
  543. package/dist/types/contracts/cat721/minters/cat721OpenMinterMerkleTree.d.ts +18 -0
  544. package/dist/types/contracts/cat721/minters/cat721OpenMinterMerkleTree.d.ts.map +1 -0
  545. package/dist/types/contracts/cat721/minters/cat721OpenMinterMetadata.d.ts +10 -0
  546. package/dist/types/contracts/cat721/minters/cat721OpenMinterMetadata.d.ts.map +1 -0
  547. package/dist/types/contracts/cat721/types.d.ts +126 -0
  548. package/dist/types/contracts/cat721/types.d.ts.map +1 -0
  549. package/dist/types/contracts/catTags.d.ts +18 -0
  550. package/dist/types/contracts/catTags.d.ts.map +1 -0
  551. package/dist/types/contracts/constants.d.ts +71 -3
  552. package/dist/types/contracts/constants.d.ts.map +1 -1
  553. package/dist/types/contracts/index.d.ts +27 -3
  554. package/dist/types/contracts/index.d.ts.map +1 -1
  555. package/dist/types/contracts/types.d.ts +26 -1
  556. package/dist/types/contracts/types.d.ts.map +1 -1
  557. package/dist/types/contracts/utils/ownerUtils.d.ts +17 -5
  558. package/dist/types/contracts/utils/ownerUtils.d.ts.map +1 -1
  559. package/dist/types/contracts/utils/safeMath.d.ts +6 -0
  560. package/dist/types/contracts/utils/safeMath.d.ts.map +1 -1
  561. package/dist/types/features/cat20/admin/burnByAdmin.d.ts +75 -0
  562. package/dist/types/features/cat20/admin/burnByAdmin.d.ts.map +1 -0
  563. package/dist/types/features/cat20/admin/transferOwnership.d.ts +17 -0
  564. package/dist/types/features/cat20/admin/transferOwnership.d.ts.map +1 -0
  565. package/dist/types/features/cat20/burn/burn.d.ts +15 -1
  566. package/dist/types/features/cat20/burn/burn.d.ts.map +1 -1
  567. package/dist/types/features/cat20/deploy/closedMinter.d.ts +19 -0
  568. package/dist/types/features/cat20/deploy/closedMinter.d.ts.map +1 -0
  569. package/dist/types/features/cat20/deploy/openMinter.d.ts +13 -1
  570. package/dist/types/features/cat20/deploy/openMinter.d.ts.map +1 -1
  571. package/dist/types/features/cat20/index.d.ts +23 -0
  572. package/dist/types/features/cat20/index.d.ts.map +1 -0
  573. package/dist/types/features/cat20/mint/closedMinter.d.ts +25 -0
  574. package/dist/types/features/cat20/mint/closedMinter.d.ts.map +1 -0
  575. package/dist/types/features/cat20/mint/openMinter.d.ts +16 -1
  576. package/dist/types/features/cat20/mint/openMinter.d.ts.map +1 -1
  577. package/dist/types/features/cat20/send/contractSend.d.ts +13 -1
  578. package/dist/types/features/cat20/send/contractSend.d.ts.map +1 -1
  579. package/dist/types/features/cat20/send/singleSend.d.ts +58 -4
  580. package/dist/types/features/cat20/send/singleSend.d.ts.map +1 -1
  581. package/dist/types/features/cat721/burn/burn.d.ts +18 -0
  582. package/dist/types/features/cat721/burn/burn.d.ts.map +1 -0
  583. package/dist/types/features/cat721/deploy/cat721ClosedMinter.d.ts +24 -0
  584. package/dist/types/features/cat721/deploy/cat721ClosedMinter.d.ts.map +1 -0
  585. package/dist/types/features/cat721/deploy/cat721OpenMinter.d.ts +21 -0
  586. package/dist/types/features/cat721/deploy/cat721OpenMinter.d.ts.map +1 -0
  587. package/dist/types/features/cat721/index.d.ts +15 -0
  588. package/dist/types/features/cat721/index.d.ts.map +1 -0
  589. package/dist/types/features/cat721/mint/cat721ClosedMinter.d.ts +30 -0
  590. package/dist/types/features/cat721/mint/cat721ClosedMinter.d.ts.map +1 -0
  591. package/dist/types/features/cat721/mint/cat721OpenMinter.d.ts +30 -0
  592. package/dist/types/features/cat721/mint/cat721OpenMinter.d.ts.map +1 -0
  593. package/dist/types/features/cat721/mint/nft.d.ts +11 -0
  594. package/dist/types/features/cat721/mint/nft.d.ts.map +1 -0
  595. package/dist/types/features/cat721/send/singleSend.d.ts +72 -0
  596. package/dist/types/features/cat721/send/singleSend.d.ts.map +1 -0
  597. package/dist/types/features/index.d.ts +4 -5
  598. package/dist/types/features/index.d.ts.map +1 -1
  599. package/dist/types/index.d.ts +3 -2
  600. package/dist/types/index.d.ts.map +1 -1
  601. package/dist/types/lib/cat721OPenMinterMerkleTreeData.d.ts +35 -0
  602. package/dist/types/lib/cat721OPenMinterMerkleTreeData.d.ts.map +1 -0
  603. package/dist/types/lib/metadata.d.ts +105 -2
  604. package/dist/types/lib/metadata.d.ts.map +1 -1
  605. package/dist/types/typeConstants.d.ts +22 -5
  606. package/dist/types/typeConstants.d.ts.map +1 -1
  607. package/dist/types/utils/contractPeripheral.d.ts +112 -7
  608. package/dist/types/utils/contractPeripheral.d.ts.map +1 -1
  609. package/dist/types/utils/index.d.ts +58 -1
  610. package/dist/types/utils/index.d.ts.map +1 -1
  611. package/dist/types/utils/loadAllArtifacts.d.ts.map +1 -1
  612. package/package.json +14 -11
  613. package/scrypt.index.json +116 -39
  614. package/artifacts/.templates/cat20/cat20Guard.scrypt.map +0 -1
  615. package/artifacts/.templates/cat20/cat20Guard.transformer.json +0 -9
  616. package/artifacts/.templates/cat20/minters/cat20ClosedMinterMetadata.scrypt.map +0 -1
  617. package/artifacts/.templates/cat20/minters/cat20ClosedMinterMetadata.scrypt.tpl +0 -11
  618. package/artifacts/.templates/cat20/minters/cat20ClosedMinterMetadata.transformer.json +0 -7
  619. package/artifacts/.templates/cat20/minters/cat20OpenMinterMetadata.scrypt.map +0 -1
  620. package/artifacts/.templates/cat20/minters/cat20OpenMinterMetadata.scrypt.tpl +0 -11
  621. package/artifacts/.templates/cat20/minters/cat20OpenMinterMetadata.transformer.json +0 -7
  622. package/artifacts/.templates/cat20Incinerator.scrypt.map +0 -1
  623. package/artifacts/.templates/cat20Incinerator.scrypt.tpl +0 -31
  624. package/artifacts/.templates/cat20Incinerator.transformer.json +0 -9
  625. package/artifacts/.templates/counter.scrypt.map +0 -1
  626. package/artifacts/.templates/counter.scrypt.tpl +0 -36
  627. package/artifacts/.templates/counter.transformer.json +0 -9
  628. package/artifacts/.templates/p2pkh.scrypt.map +0 -1
  629. package/artifacts/.templates/p2pkh.scrypt.tpl +0 -11
  630. package/artifacts/.templates/p2pkh.transformer.json +0 -7
  631. package/artifacts/cat20/cat20Guard.json +0 -447
  632. package/artifacts/cat20/cat20Guard.scrypt +0 -119
  633. package/artifacts/cat20/minters/cat20ClosedMinterMetadata.json +0 -173
  634. package/artifacts/cat20/minters/cat20ClosedMinterMetadata.scrypt +0 -13
  635. package/artifacts/cat20/minters/cat20OpenMinterMetadata.json +0 -173
  636. package/artifacts/cat20/minters/cat20OpenMinterMetadata.scrypt +0 -13
  637. package/artifacts/cat20Incinerator.json +0 -396
  638. package/artifacts/cat20Incinerator.scrypt +0 -33
  639. package/artifacts/counter.json +0 -253
  640. package/artifacts/counter.scrypt +0 -38
  641. package/artifacts/p2pkh.scrypt +0 -13
  642. package/dist/artifacts/.templates/cat20/cat20Guard.scrypt.map +0 -1
  643. package/dist/artifacts/.templates/cat20/cat20Guard.transformer.json +0 -9
  644. package/dist/artifacts/.templates/cat20/minters/cat20ClosedMinterMetadata.scrypt.map +0 -1
  645. package/dist/artifacts/.templates/cat20/minters/cat20ClosedMinterMetadata.scrypt.tpl +0 -11
  646. package/dist/artifacts/.templates/cat20/minters/cat20ClosedMinterMetadata.transformer.json +0 -7
  647. package/dist/artifacts/.templates/cat20/minters/cat20OpenMinterMetadata.scrypt.map +0 -1
  648. package/dist/artifacts/.templates/cat20/minters/cat20OpenMinterMetadata.scrypt.tpl +0 -11
  649. package/dist/artifacts/.templates/cat20/minters/cat20OpenMinterMetadata.transformer.json +0 -7
  650. package/dist/artifacts/.templates/cat20Incinerator.scrypt.map +0 -1
  651. package/dist/artifacts/.templates/cat20Incinerator.scrypt.tpl +0 -31
  652. package/dist/artifacts/.templates/cat20Incinerator.transformer.json +0 -9
  653. package/dist/artifacts/.templates/counter.scrypt.map +0 -1
  654. package/dist/artifacts/.templates/counter.scrypt.tpl +0 -36
  655. package/dist/artifacts/.templates/counter.transformer.json +0 -9
  656. package/dist/artifacts/.templates/p2pkh.scrypt.map +0 -1
  657. package/dist/artifacts/.templates/p2pkh.scrypt.tpl +0 -11
  658. package/dist/artifacts/.templates/p2pkh.transformer.json +0 -7
  659. package/dist/artifacts/cat20/cat20Guard.json +0 -447
  660. package/dist/artifacts/cat20/cat20Guard.scrypt +0 -119
  661. package/dist/artifacts/cat20/minters/cat20ClosedMinterMetadata.json +0 -173
  662. package/dist/artifacts/cat20/minters/cat20ClosedMinterMetadata.scrypt +0 -13
  663. package/dist/artifacts/cat20/minters/cat20OpenMinterMetadata.json +0 -173
  664. package/dist/artifacts/cat20/minters/cat20OpenMinterMetadata.scrypt +0 -13
  665. package/dist/artifacts/cat20Incinerator.json +0 -396
  666. package/dist/artifacts/cat20Incinerator.scrypt +0 -33
  667. package/dist/artifacts/counter.json +0 -253
  668. package/dist/artifacts/counter.scrypt +0 -38
  669. package/dist/artifacts/p2pkh.scrypt +0 -13
  670. package/dist/cjs/contracts/cat20/cat20Guard.js.map +0 -1
  671. package/dist/cjs/contracts/cat20Incinerator.js +0 -45
  672. package/dist/cjs/contracts/cat20Incinerator.js.map +0 -1
  673. package/dist/cjs/contracts/counter.js +0 -29
  674. package/dist/cjs/contracts/counter.js.map +0 -1
  675. package/dist/cjs/contracts/p2pkh.js.map +0 -1
  676. package/dist/cjs/features/cat20/incinerate.js +0 -110
  677. package/dist/cjs/features/cat20/incinerate.js.map +0 -1
  678. package/dist/esm/contracts/cat20/cat20Guard.js.map +0 -1
  679. package/dist/esm/contracts/cat20Incinerator.js +0 -42
  680. package/dist/esm/contracts/cat20Incinerator.js.map +0 -1
  681. package/dist/esm/contracts/counter.js +0 -25
  682. package/dist/esm/contracts/counter.js.map +0 -1
  683. package/dist/esm/contracts/p2pkh.js.map +0 -1
  684. package/dist/esm/features/cat20/incinerate.js +0 -106
  685. package/dist/esm/features/cat20/incinerate.js.map +0 -1
  686. package/dist/types/contracts/cat20/cat20Guard.d.ts +0 -8
  687. package/dist/types/contracts/cat20/cat20Guard.d.ts.map +0 -1
  688. package/dist/types/contracts/cat20Incinerator.d.ts +0 -8
  689. package/dist/types/contracts/cat20Incinerator.d.ts.map +0 -1
  690. package/dist/types/contracts/counter.d.ts +0 -8
  691. package/dist/types/contracts/counter.d.ts.map +0 -1
  692. package/dist/types/contracts/p2pkh.d.ts +0 -7
  693. package/dist/types/contracts/p2pkh.d.ts.map +0 -1
  694. package/dist/types/features/cat20/incinerate.d.ts +0 -6
  695. package/dist/types/features/cat20/incinerate.d.ts.map +0 -1
@@ -1 +1 @@
1
- [[],[],[],[],[],[],[],[],[],[],[],[],[[9,0,22,13]],[[2,0,24,20],[8,0,24,2]],[[2,0,27,19],[8,0,27,2]],[[2,0,29,2],[14,0,29,32],[20,0,29,14],[38,0,29,61],[44,0,29,44]],[[4,0,31,4],[8,0,31,9],[26,0,31,4],[28,0,31,28]],[[4,0,32,4],[8,0,32,9],[25,0,32,4],[27,0,32,27]],[],[[2,0,36,2],[18,0,36,9],[25,0,37,16],[44,0,37,4],[56,0,39,16],[77,0,39,4],[89,0,40,21],[93,0,40,4],[110,0,42,19],[124,0,42,4]],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[[31,0,44,27],[46,0,44,42],[50,0,44,47]],[[4,0,47,4],[8,0,47,9],[20,0,48,6],[107,0,51,6]],[[4,0,56,4],[7,0,56,8],[32,0,56,23],[44,0,56,8],[47,0,56,37]],[[8,0,58,6],[37,0,59,19],[48,0,59,8],[81,0,60,42],[91,0,60,53],[111,0,60,42],[113,0,60,74],[119,0,60,102],[129,0,60,113],[149,0,60,102],[151,0,60,134],[154,0,60,101],[156,0,60,140]],[],[[8,0,64,6],[18,0,64,17],[34,0,64,32],[44,0,64,43],[78,0,64,66]],[[8,0,65,6],[16,0,65,18],[24,0,65,13],[25,0,65,27],[35,0,65,38],[45,0,65,47],[55,0,65,58],[66,0,65,13]],[],[],[],[[11,0,70,2],[22,0,71,16],[43,0,71,4],[55,0,72,23],[61,0,72,4],[80,0,73,26],[84,0,73,4],[106,0,74,24],[110,0,74,4],[130,0,75,23],[136,0,75,4],[155,0,76,26],[161,0,76,4]],[[4,0,80,4],[12,0,80,11],[24,0,80,24],[44,0,80,43],[63,0,80,62],[83,0,80,11],[86,0,80,85],[90,0,80,90]],[[4,0,81,4],[12,0,81,11],[24,0,81,24],[42,0,81,41],[64,0,81,63],[84,0,81,11],[87,0,81,86],[105,0,81,105],[116,0,81,115]],[[4,0,87,6],[8,0,86,10],[27,0,87,6],[37,0,87,17],[57,0,87,36],[58,0,87,43]],[[4,0,88,4],[12,0,89,6],[22,0,89,17],[41,0,89,35],[42,0,89,42],[61,0,89,6],[64,0,90,6]],[],[],[],[],[],[],[],[],[]]
1
+ [[],[],[],[],[],[],[],[],[],[],[],[],[[9,0,33,13]],[[2,0,35,20],[8,0,35,2]],[[2,0,38,28],[8,0,38,28],[12,0,38,2]],[[2,0,41,12],[7,0,41,2]],[[2,0,44,19],[8,0,44,2]],[[2,0,46,2],[14,0,47,22],[20,0,47,4],[38,0,48,30],[44,0,48,30],[48,0,48,4],[74,0,49,14],[79,0,49,4],[89,0,50,21],[95,0,50,4]],[[4,0,53,4],[8,0,53,9],[26,0,53,4],[28,0,53,28]],[[4,0,54,4],[8,0,54,9],[34,0,54,4],[36,0,54,36]],[[4,0,55,4],[8,0,55,9],[18,0,55,4],[20,0,55,20]],[[4,0,56,4],[8,0,56,9],[25,0,56,4],[27,0,56,27]],[],[[2,0,60,2],[18,0,60,9],[25,0,61,16],[49,0,61,4],[61,0,63,16],[82,0,63,4],[94,0,64,21],[98,0,64,4],[115,0,66,19],[129,0,66,4]],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[[31,0,68,27],[46,0,68,42],[50,0,68,47]],[[4,0,71,4],[8,0,71,9],[20,0,72,6],[107,0,75,6]],[[4,0,80,4],[12,0,81,6],[22,0,81,17],[33,0,81,6],[36,0,81,30],[38,0,81,6],[41,0,81,36],[51,0,81,47],[62,0,81,36],[65,0,81,60]],[[4,0,85,26],[10,0,85,8],[28,0,85,39]],[[4,0,87,4],[7,0,87,8],[17,0,87,19],[40,0,87,8],[43,0,87,44]],[[8,0,89,6],[16,0,90,8],[26,0,90,19],[49,0,90,8]],[[8,0,93,6],[24,0,93,6],[26,0,93,24],[38,0,93,37],[89,0,95,8],[99,0,95,19]],[],[[4,0,99,4],[7,0,99,8],[17,0,99,19],[28,0,99,8],[31,0,99,32]],[[8,0,102,6],[18,0,102,17],[34,0,102,32],[44,0,102,43],[78,0,102,66]],[[8,0,103,6],[16,0,103,18],[24,0,103,13],[25,0,103,27],[35,0,103,38],[45,0,103,47],[55,0,103,58],[66,0,103,13]],[[13,0,104,11],[16,0,104,15],[26,0,104,26],[37,0,104,15],[40,0,104,39]],[[8,0,107,6],[37,0,107,24],[48,0,107,13],[51,0,107,37]],[],[[8,0,110,6],[16,0,110,13],[20,0,110,18]],[[8,0,111,6],[16,0,111,13],[32,0,111,13],[35,0,111,32],[39,0,111,37]],[],[],[],[[11,0,116,2],[22,0,117,16],[43,0,117,4],[55,0,118,23],[61,0,118,4],[80,0,119,26],[84,0,119,4],[106,0,120,24],[110,0,120,4],[130,0,121,23],[136,0,121,4],[155,0,122,26],[161,0,122,4]],[[4,0,125,28],[10,0,125,10],[28,0,125,28],[40,0,125,41],[60,0,125,60],[79,0,125,79]],[[4,0,126,4],[12,0,127,6],[28,0,127,6],[31,0,127,25],[35,0,127,30],[61,0,127,55],[64,0,127,6],[67,0,127,61],[83,0,127,61],[86,0,127,80],[90,0,127,85],[116,0,127,110],[119,0,127,6],[122,0,128,6],[138,0,128,6],[141,0,128,25],[145,0,128,30],[171,0,128,55],[174,0,127,6],[177,0,128,61],[193,0,128,61],[196,0,128,80],[200,0,128,85],[226,0,128,110]],[[4,0,131,4],[12,0,131,11],[24,0,131,24],[42,0,131,41],[64,0,131,63],[84,0,131,11],[87,0,131,86],[105,0,131,105],[116,0,131,115]],[[4,0,135,29],[8,0,135,10],[27,0,135,29],[34,0,135,51],[44,0,135,62],[64,0,135,82],[87,0,135,104],[108,0,135,104],[110,0,135,127]],[[4,0,136,4],[12,0,137,6],[22,0,137,17],[41,0,137,35],[42,0,137,42],[61,0,137,6],[64,0,138,8]],[],[],[],[],[],[],[],[],[]]
@@ -1,8 +1,8 @@
1
1
  import "./types.scrypt.tpl";
2
2
  import "../types.scrypt.tpl";
3
3
  import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/types/structs.scrypt.tpl";
4
- import "../utils/ownerUtils.scrypt.tpl";
5
4
  import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/contextUtils.scrypt.tpl";
5
+ import "../utils/ownerUtils.scrypt.tpl";
6
6
  import "./cat20GuardStateLib.scrypt.tpl";
7
7
  import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/stdUtils.scrypt.tpl";
8
8
  import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/txUtils.scrypt.tpl";
@@ -12,12 +12,16 @@ import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-lib
12
12
 
13
13
  contract CAT20 {
14
14
  bytes minterScriptHash;
15
- bytes guardScriptHash;
16
- constructor(bytes minterScriptHash, bytes guardScriptHash) {
15
+ Sha256[4] guardVariantScriptHashes;
16
+ bool hasAdmin;
17
+ bytes adminScriptHash;
18
+ constructor(bytes minterScriptHash, Sha256[4] guardVariantScriptHashes, bool hasAdmin, bytes adminScriptHash) {
17
19
  this.minterScriptHash = minterScriptHash;
18
- this.guardScriptHash = guardScriptHash;
20
+ this.guardVariantScriptHashes = guardVariantScriptHashes;
21
+ this.hasAdmin = hasAdmin;
22
+ this.adminScriptHash = adminScriptHash;
19
23
  }
20
- public function unlock(ContractUnlockArgs unlockArgs, CAT20GuardConstState guardState, int guardInputIndex, BacktraceInfo backtraceInfo, SHPreimage __scrypt_ts_shPreimage, CAT20State __scrypt_ts_curState, bytes __scrypt_ts_prevouts, bytes __scrypt_ts_spentAmounts, bytes __scrypt_ts_spentDataHashes, bytes __scrypt_ts_spentScriptHashes, TxHashPreimage __scrypt_ts_prevTxHashPreimage) {
24
+ public function unlock(CAT20ContractUnlockArgs unlockArgs, CAT20GuardConstState guardState, int guardInputIndex, BacktraceInfo backtraceInfo, SHPreimage __scrypt_ts_shPreimage, CAT20State __scrypt_ts_curState, bytes __scrypt_ts_prevouts, bytes __scrypt_ts_spentAmounts, bytes __scrypt_ts_spentDataHashes, bytes __scrypt_ts_spentScriptHashes, TxHashPreimage __scrypt_ts_prevTxHashPreimage) {
21
25
  require(Tx.checkPreimageSigHashType(ContextUtils.serializeSHPreimage(__scrypt_ts_shPreimage), SigHash.ALL));
22
26
 
23
27
  int __scrypt_ts_inputCount = ContextUtils.checkSpentAmounts(__scrypt_ts_spentAmounts, __scrypt_ts_shPreimage.hashSpentAmounts);
@@ -36,25 +40,35 @@ contract CAT20 {
36
40
 
37
41
  Backtrace.verifyFromScript(backtraceInfo, this.minterScriptHash, __scrypt_ts_spentScriptHashes[__scrypt_ts_shPreimage.inputIndex * 32 : (__scrypt_ts_shPreimage.inputIndex + 1) * 32], __scrypt_ts_prevTxHashPreimage.inputList);
38
42
  this.checkGuard(guardState, __scrypt_ts_shPreimage.spentScriptHash, __scrypt_ts_shPreimage.inputIndex, guardInputIndex, __scrypt_ts_spentScriptHashes, __scrypt_ts_spentDataHashes);
39
- if(len(__scrypt_ts_nextState.ownerAddr) == 32) {
40
- require(__scrypt_ts_nextState.ownerAddr == __scrypt_ts_spentScriptHashes[unlockArgs.contractInputIndex * 32 : (unlockArgs.contractInputIndex + 1) * 32]);
41
- } else {
43
+ require(unlockArgs.spendType >= 0 && unlockArgs.spendType <= 2);
44
+ bytes spentScriptHash = b'';
45
+ if(unlockArgs.spendScriptInputIndex >= 0) {
46
+ require(unlockArgs.spendScriptInputIndex < __scrypt_ts_inputCount);
47
+ spentScriptHash = ContextUtils.getSpentScriptHash(__scrypt_ts_spentScriptHashes, unlockArgs.spendScriptInputIndex);
48
+ }
49
+ if(unlockArgs.spendType == 0) {
42
50
  OwnerUtils.checkUserOwner(unlockArgs.userPubKey, __scrypt_ts_nextState.ownerAddr);
43
51
  require(checkSig(unlockArgs.userSig, unlockArgs.userPubKey));
52
+ } else if(unlockArgs.spendType == 1) {
53
+ require(__scrypt_ts_nextState.ownerAddr == spentScriptHash);
54
+ } else {
55
+ require(this.hasAdmin);
56
+ require(spentScriptHash == this.adminScriptHash);
44
57
  }
45
58
  require(true);
46
59
  }
47
60
  function checkGuard(CAT20GuardConstState guardState, bytes t_cat20ScriptHash, int t_cat20InputIndexVal, int guardInputIndexVal, bytes t_spentScriptsCtx, bytes t_spentDataHashesCtx) : bool {
48
- require(ContextUtils.getSpentScriptHash(t_spentScriptsCtx, guardInputIndexVal) == this.guardScriptHash);
61
+ bytes guardScriptHash = ContextUtils.getSpentScriptHash(t_spentScriptsCtx, guardInputIndexVal);
62
+ require(guardScriptHash == this.guardVariantScriptHashes[0] || guardScriptHash == this.guardVariantScriptHashes[1] || guardScriptHash == this.guardVariantScriptHashes[2] || guardScriptHash == this.guardVariantScriptHashes[3]);
49
63
  require(ContextUtils.getSpentDataHash(t_spentDataHashesCtx, guardInputIndexVal) == CAT20GuardStateLib.stateHash(guardState));
50
- int tokenScriptIndex = guardState.tokenScriptIndexes[(t_cat20InputIndexVal)];
64
+ int tokenScriptIndex = unpack(guardState.tokenScriptIndexes[t_cat20InputIndexVal : t_cat20InputIndexVal + 1]);
51
65
  require(guardState.tokenScriptHashes[(tokenScriptIndex)] == t_cat20ScriptHash);
52
66
  return true;
53
67
  }
54
68
  static function serializeState(CAT20State __scrypt_ts_curState): bytes {
55
- return num2bin(len(__scrypt_ts_curState.tag), 2) + __scrypt_ts_curState.tag + num2bin(len(__scrypt_ts_curState.ownerAddr), 2) + __scrypt_ts_curState.ownerAddr + num2bin(len(pack(__scrypt_ts_curState.amount)), 2) + pack(__scrypt_ts_curState.amount) + hash160(hash160(__scrypt_ts_curState.tag) + hash160(__scrypt_ts_curState.ownerAddr) + hash160(pack(__scrypt_ts_curState.amount)));
69
+ return num2bin(len(__scrypt_ts_curState.ownerAddr), 2) + __scrypt_ts_curState.ownerAddr + num2bin(len(pack(__scrypt_ts_curState.amount)), 2) + pack(__scrypt_ts_curState.amount) + hash160(hash160(__scrypt_ts_curState.ownerAddr) + hash160(pack(__scrypt_ts_curState.amount)));
56
70
  }
57
71
  static function stateHash(CAT20State __scrypt_ts_curState): bytes {
58
- return sha256(num2bin(len(__scrypt_ts_curState.tag), 2) + __scrypt_ts_curState.tag + num2bin(len(__scrypt_ts_curState.ownerAddr), 2) + __scrypt_ts_curState.ownerAddr + num2bin(len(pack(__scrypt_ts_curState.amount)), 2) + pack(__scrypt_ts_curState.amount) + hash160(hash160(__scrypt_ts_curState.tag) + hash160(__scrypt_ts_curState.ownerAddr) + hash160(pack(__scrypt_ts_curState.amount))));
72
+ return sha256(num2bin(len(__scrypt_ts_curState.ownerAddr), 2) + __scrypt_ts_curState.ownerAddr + num2bin(len(pack(__scrypt_ts_curState.amount)), 2) + pack(__scrypt_ts_curState.amount) + hash160(hash160(__scrypt_ts_curState.ownerAddr) + hash160(pack(__scrypt_ts_curState.amount))));
59
73
  }
60
74
  }
@@ -0,0 +1 @@
1
+ [[],[],[],[],[],[],[],[],[],[],[[9,0,15,13]],[[2,0,17,19],[8,0,17,2]],[[2,0,19,2],[14,0,19,31],[20,0,19,14]],[[4,0,21,4],[8,0,21,9],[25,0,21,4],[27,0,21,27]],[],[[2,0,25,2],[18,0,25,9],[40,0,27,17],[47,0,27,4],[60,0,28,14],[64,0,28,4],[74,0,30,19],[88,0,30,4]],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[[4,0,33,28],[10,0,33,10]],[[33,0,34,29],[48,0,34,44],[52,0,34,49]],[[4,0,37,4],[14,0,37,15],[30,0,37,30],[64,0,37,54]],[[4,0,38,4],[12,0,38,16],[20,0,38,11],[21,0,38,25],[31,0,38,35],[42,0,38,11]],[[4,0,41,24],[10,0,41,10],[24,0,41,24],[31,0,41,32],[48,0,42,6]],[[4,0,48,4],[20,0,48,29],[32,0,48,29]],[],[],[[2,0,52,2],[18,0,52,9],[36,0,54,17],[43,0,54,4],[56,0,55,14],[60,0,55,4],[70,0,56,19],[80,0,56,4],[95,0,58,19],[109,0,58,4]],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[[4,0,61,28],[10,0,61,10]],[[33,0,62,29],[48,0,62,44],[52,0,62,49]],[[4,0,64,4],[14,0,64,15],[30,0,64,30],[64,0,64,54]],[[4,0,65,4],[12,0,65,16],[20,0,65,11],[21,0,65,25],[31,0,65,35],[42,0,65,11]],[[25,0,68,15],[39,0,68,4],[41,0,69,6],[51,0,69,17],[78,0,69,43]],[[4,0,71,24],[10,0,71,10],[24,0,71,24],[31,0,71,32],[48,0,72,6],[95,0,74,6],[105,0,74,17]],[[4,0,77,4],[20,0,77,29],[32,0,77,29]],[],[],[],[],[],[],[],[],[]]
@@ -0,0 +1,73 @@
1
+ import "./types.scrypt.tpl";
2
+ import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/types/structs.scrypt.tpl";
3
+ import "../utils/ownerUtils.scrypt.tpl";
4
+ import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/txUtils.scrypt.tpl";
5
+ import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/stdUtils.scrypt.tpl";
6
+ import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/backtrace.scrypt.tpl";
7
+ import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/contextUtils.scrypt.tpl";
8
+ import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/stateUtils.scrypt.tpl";
9
+
10
+
11
+ contract CAT20Admin {
12
+ bytes genesisOutpoint;
13
+ constructor(bytes genesisOutpoint) {
14
+ this.genesisOutpoint = genesisOutpoint;
15
+ }
16
+ public function authorizeToSpendToken(PubKey adminPubKey, Sig adminSig, BacktraceInfo backtraceInfo, SHPreimage __scrypt_ts_shPreimage, 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) {
17
+ require(Tx.checkPreimageSigHashType(ContextUtils.serializeSHPreimage(__scrypt_ts_shPreimage), SigHash.ALL));
18
+
19
+ int __scrypt_ts_inputCount = ContextUtils.checkSpentAmounts(__scrypt_ts_spentAmounts, __scrypt_ts_shPreimage.hashSpentAmounts);
20
+
21
+ Outpoint __scrypt_ts_prevout = ContextUtils.checkPrevouts(__scrypt_ts_prevouts, __scrypt_ts_shPreimage.hashPrevouts, __scrypt_ts_shPreimage.inputIndex, __scrypt_ts_inputCount);
22
+
23
+ ContextUtils.checkSpentScripts(__scrypt_ts_spentScriptHashes, __scrypt_ts_shPreimage.hashSpentScriptHashes, __scrypt_ts_inputCount);
24
+
25
+ ContextUtils.checkSpentDataHashes(__scrypt_ts_spentDataHashes, __scrypt_ts_shPreimage.hashSpentDataHashes, __scrypt_ts_inputCount);
26
+
27
+ CAT20AdminState __scrypt_ts_nextState = __scrypt_ts_curState;
28
+
29
+ StateUtils.checkInputState(__scrypt_ts_shPreimage.inputIndex, CAT20Admin.stateHash(__scrypt_ts_curState), __scrypt_ts_spentDataHashes);
30
+
31
+ Backtrace.checkPrevTxHashPreimage(__scrypt_ts_prevTxHashPreimage, __scrypt_ts_prevouts, __scrypt_ts_shPreimage.inputIndex);
32
+
33
+ bytes adminScriptHash = __scrypt_ts_shPreimage.spentScriptHash;
34
+ Backtrace.verifyFromOutpoint(backtraceInfo, this.genesisOutpoint, __scrypt_ts_spentScriptHashes[__scrypt_ts_shPreimage.inputIndex * 32 : (__scrypt_ts_shPreimage.inputIndex + 1) * 32], __scrypt_ts_prevTxHashPreimage.inputList);
35
+ OwnerUtils.checkUserOwner(adminPubKey, __scrypt_ts_nextState.adminAddress);
36
+ require(checkSig(adminSig, adminPubKey));
37
+ bytes adminOutput = TxUtils.buildDataOutput(adminScriptHash, __scrypt_ts_shPreimage.value, __scrypt_ts_shPreimage.spentDataHash);
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);
40
+ }
41
+ public function transferOwnership(PubKey adminPubKey, Sig adminSig, Ripemd160 newPubKeyHash, BacktraceInfo backtraceInfo, SHPreimage __scrypt_ts_shPreimage, 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) {
42
+ require(Tx.checkPreimageSigHashType(ContextUtils.serializeSHPreimage(__scrypt_ts_shPreimage), SigHash.ALL));
43
+
44
+ int __scrypt_ts_inputCount = ContextUtils.checkSpentAmounts(__scrypt_ts_spentAmounts, __scrypt_ts_shPreimage.hashSpentAmounts);
45
+
46
+ Outpoint __scrypt_ts_prevout = ContextUtils.checkPrevouts(__scrypt_ts_prevouts, __scrypt_ts_shPreimage.hashPrevouts, __scrypt_ts_shPreimage.inputIndex, __scrypt_ts_inputCount);
47
+
48
+ ContextUtils.checkSpentScripts(__scrypt_ts_spentScriptHashes, __scrypt_ts_shPreimage.hashSpentScriptHashes, __scrypt_ts_inputCount);
49
+
50
+ ContextUtils.checkSpentDataHashes(__scrypt_ts_spentDataHashes, __scrypt_ts_shPreimage.hashSpentDataHashes, __scrypt_ts_inputCount);
51
+
52
+ CAT20AdminState __scrypt_ts_nextState = __scrypt_ts_curState;
53
+
54
+ StateUtils.checkInputState(__scrypt_ts_shPreimage.inputIndex, CAT20Admin.stateHash(__scrypt_ts_curState), __scrypt_ts_spentDataHashes);
55
+
56
+ Backtrace.checkPrevTxHashPreimage(__scrypt_ts_prevTxHashPreimage, __scrypt_ts_prevouts, __scrypt_ts_shPreimage.inputIndex);
57
+
58
+ bytes adminScriptHash = __scrypt_ts_shPreimage.spentScriptHash;
59
+ Backtrace.verifyFromOutpoint(backtraceInfo, this.genesisOutpoint, __scrypt_ts_spentScriptHashes[__scrypt_ts_shPreimage.inputIndex * 32 : (__scrypt_ts_shPreimage.inputIndex + 1) * 32], __scrypt_ts_prevTxHashPreimage.inputList);
60
+ OwnerUtils.checkUserOwner(adminPubKey, __scrypt_ts_nextState.adminAddress);
61
+ require(checkSig(adminSig, adminPubKey));
62
+ __scrypt_ts_nextState.adminAddress = OwnerUtils.pubKeyHashtoLockingScript(newPubKeyHash);
63
+ bytes adminOutput = TxUtils.buildDataOutput(adminScriptHash, __scrypt_ts_shPreimage.value, CAT20Admin.stateHash(__scrypt_ts_nextState));
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);
66
+ }
67
+ static function serializeState(CAT20AdminState __scrypt_ts_curState): bytes {
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));
69
+ }
70
+ static function stateHash(CAT20AdminState __scrypt_ts_curState): bytes {
71
+ return sha256(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)));
72
+ }
73
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "success": true,
3
+ "errors": [],
4
+ "scryptfile": "cat20/cat20Admin.scrypt.tpl",
5
+ "sourceMapFile": "cat20/cat20Admin.scrypt.map",
6
+ "ctxMethods": [
7
+ "authorizeToSpendToken",
8
+ "transferOwnership"
9
+ ]
10
+ }
@@ -1 +1 @@
1
- [[],[],[],[],[],[[8,0,5,13]],[[2,0,8,2],[18,0,8,9],[35,0,8,34],[56,0,8,26],[66,0,8,57]],[[4,0,9,4],[22,0,9,23],[45,0,9,45],[51,0,9,52]],[[15,0,11,13]],[[8,0,12,24],[12,0,12,12],[24,0,12,24],[28,0,12,28],[34,0,12,35],[53,0,12,53]],[[8,0,13,6],[16,0,13,13],[26,0,13,13],[29,0,13,26]],[[8,0,15,6],[16,0,15,13],[22,0,15,20],[36,0,15,33],[39,0,15,13],[42,0,15,39]],[[8,0,16,6],[16,0,16,13],[22,0,16,20],[40,0,16,37],[43,0,16,13],[46,0,16,43]],[],[[16,0,19,13]],[[8,0,21,26],[12,0,21,12],[26,0,21,26],[32,0,21,33],[52,0,21,52]],[[8,0,22,6],[16,0,22,13],[28,0,22,13],[31,0,22,28],[32,0,22,29],[34,0,22,13],[37,0,22,34],[49,0,22,34],[51,0,22,48]],[],[[4,0,25,4],[11,0,25,24]],[],[[2,0,34,2],[18,0,34,9],[40,0,35,18],[45,0,35,18],[49,0,35,4]],[[4,0,38,4],[12,0,38,11],[25,0,38,24],[28,0,38,11],[31,0,38,30],[44,0,38,43]],[[4,0,39,4],[12,0,39,11],[25,0,39,24],[28,0,39,11],[31,0,39,30],[44,0,39,43]],[[4,0,40,4],[12,0,40,11],[25,0,40,24],[28,0,40,11],[31,0,40,30],[44,0,40,43]],[[4,0,41,4],[12,0,41,11],[25,0,41,24],[28,0,41,11],[31,0,41,30],[44,0,41,43]],[[4,0,42,4],[12,0,42,11],[25,0,42,24],[28,0,42,11],[31,0,42,30],[44,0,42,43]],[[4,0,43,4],[12,0,43,11],[25,0,43,24],[28,0,43,11],[31,0,43,30],[44,0,43,43]],[],[],[],[],[],[],[],[],[]]
1
+ [[],[],[],[],[],[[8,0,10,13]],[[2,0,13,2],[18,0,13,9],[35,0,13,34],[56,0,13,26],[64,0,13,73],[81,0,13,56]],[[4,0,14,4],[22,0,14,23],[45,0,14,45],[51,0,14,52]],[[15,0,16,13]],[[8,0,17,24],[12,0,17,12],[24,0,17,24],[28,0,17,28],[34,0,17,35],[53,0,17,53]],[[8,0,18,6],[16,0,18,13],[26,0,18,13],[29,0,18,26]],[[8,0,20,6],[16,0,20,13],[22,0,20,20],[36,0,20,33],[39,0,20,13],[42,0,20,39]],[[8,0,21,6],[16,0,21,13],[22,0,21,20],[40,0,21,37],[43,0,21,13],[46,0,21,43]],[],[[4,0,24,4],[12,0,24,11],[16,0,24,15],[22,0,24,22],[43,0,24,11],[46,0,24,45],[47,0,24,52]],[[29,0,25,13]],[[8,0,26,26],[12,0,26,12],[26,0,26,26],[33,0,26,48],[39,0,26,55],[59,0,26,75],[60,0,26,82],[65,0,26,86],[66,0,26,93],[68,0,26,93],[70,0,26,97]],[[8,0,27,6],[16,0,27,13],[28,0,27,13],[31,0,27,28],[32,0,27,29],[34,0,27,13],[37,0,27,34],[49,0,27,34],[51,0,27,48]],[],[],[],[[2,0,36,2],[18,0,36,9],[40,0,37,18],[45,0,37,18],[49,0,37,4]],[[4,0,40,4],[12,0,40,11],[25,0,40,24],[28,0,40,11],[31,0,40,30],[44,0,40,43]],[[4,0,41,4],[12,0,41,11],[25,0,41,24],[28,0,41,11],[31,0,41,30],[44,0,41,43]],[[4,0,42,4],[12,0,42,11],[25,0,42,24],[28,0,42,11],[31,0,42,30],[44,0,42,43]],[[4,0,43,4],[12,0,43,11],[25,0,43,24],[28,0,43,11],[31,0,43,30],[44,0,43,43]],[[4,0,44,4],[12,0,44,11],[25,0,44,24],[28,0,44,11],[31,0,44,30],[44,0,44,43]],[[4,0,45,4],[12,0,45,11],[25,0,45,24],[28,0,45,11],[31,0,45,30],[44,0,45,43]],[],[],[],[],[],[],[],[],[]]
@@ -4,7 +4,7 @@ import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-lib
4
4
 
5
5
 
6
6
  library CAT20GuardStateLib {
7
- static function formalCheckState(CAT20GuardConstState _state) : bytes {
7
+ static function formalCheckState(CAT20GuardConstState _state, static const int txInputCountMax) : bool {
8
8
  CAT20GuardStateLib.checkTokenScriptsUniq(_state.tokenScriptHashes);
9
9
  loop (4) : i {
10
10
  int scriptLen = len(_state.tokenScriptHashes[i]);
@@ -12,11 +12,12 @@ library CAT20GuardStateLib {
12
12
  require(_state.tokenAmounts[i] >= 0);
13
13
  require(_state.tokenBurnAmounts[i] >= 0);
14
14
  }
15
- loop (10) : i {
16
- int scriptIndex = _state.tokenScriptIndexes[i];
15
+ require(len(_state.tokenScriptIndexes) == (txInputCountMax));
16
+ loop (txInputCountMax) : i {
17
+ int scriptIndex = unpack(_state.tokenScriptIndexes[(i) : (i + 1)]);
17
18
  require(scriptIndex >= -1 && scriptIndex < 4);
18
19
  }
19
- return b'';
20
+ return true;
20
21
  }
21
22
  static function checkTokenScriptsUniq(bytes[4] tokenScripts) : bool {
22
23
  require(tokenScripts[0] != tokenScripts[1]);
@@ -28,9 +29,9 @@ library CAT20GuardStateLib {
28
29
  return true;
29
30
  }
30
31
  static function serializeState(CAT20GuardConstState __scrypt_ts_curState): bytes {
31
- 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(pack(__scrypt_ts_curState.tokenScriptIndexes[0])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[1])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[2])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[3])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[4])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[4]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[5])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[5]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[6])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[6]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[7])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[7]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[8])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[8]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[9])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[9]) + 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(pack(__scrypt_ts_curState.tokenScriptIndexes[0])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[1])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[2])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[4])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[5])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[6])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[7])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[8])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[9])));
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
33
  }
33
34
  static function stateHash(CAT20GuardConstState __scrypt_ts_curState): bytes {
34
- 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(pack(__scrypt_ts_curState.tokenScriptIndexes[0])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[1])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[2])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[3])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[4])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[4]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[5])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[5]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[6])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[6]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[7])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[7]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[8])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[8]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[9])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[9]) + 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(pack(__scrypt_ts_curState.tokenScriptIndexes[0])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[1])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[2])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[4])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[5])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[6])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[7])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[8])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[9]))));
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
36
  }
36
37
  }
@@ -0,0 +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]],[],[],[],[],[],[],[],[]]
@@ -0,0 +1,124 @@
1
+ import "./types.scrypt.tpl";
2
+ import "./cat20GuardStateLib.scrypt.tpl";
3
+ import "../constants.scrypt.tpl";
4
+ import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/contextUtils.scrypt.tpl";
5
+ import "./cat20StateLib.scrypt.tpl";
6
+ import "../utils/safeMath.scrypt.tpl";
7
+ import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/txUtils.scrypt.tpl";
8
+ import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/stdUtils.scrypt.tpl";
9
+ import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/types/structs.scrypt.tpl";
10
+ import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/stateUtils.scrypt.tpl";
11
+
12
+
13
+ contract CAT20Guard_12_12_2 {
14
+ constructor(){}
15
+ public function unlock(bytes[12] nextStateHashes, bytes[12] ownerAddrOrScriptHashes, int[12] outputTokens, int[12] tokenScriptHashIndexes, int[12] outputSatoshis, CAT20State[12] cat20States, int outputCount, SHPreimage __scrypt_ts_shPreimage, CAT20GuardConstState __scrypt_ts_curState, bytes __scrypt_ts_spentAmounts, bytes __scrypt_ts_spentDataHashes, bytes __scrypt_ts_spentScriptHashes) {
16
+ require(Tx.checkPreimageSigHashType(ContextUtils.serializeSHPreimage(__scrypt_ts_shPreimage), SigHash.ALL));
17
+
18
+ int __scrypt_ts_inputCount = ContextUtils.checkSpentAmounts(__scrypt_ts_spentAmounts, __scrypt_ts_shPreimage.hashSpentAmounts);
19
+
20
+ ContextUtils.checkSpentScripts(__scrypt_ts_spentScriptHashes, __scrypt_ts_shPreimage.hashSpentScriptHashes, __scrypt_ts_inputCount);
21
+
22
+ ContextUtils.checkSpentDataHashes(__scrypt_ts_spentDataHashes, __scrypt_ts_shPreimage.hashSpentDataHashes, __scrypt_ts_inputCount);
23
+
24
+ CAT20GuardConstState __scrypt_ts_nextState = __scrypt_ts_curState;
25
+
26
+ StateUtils.checkInputState(__scrypt_ts_shPreimage.inputIndex, CAT20Guard_12_12_2.stateHash(__scrypt_ts_curState), __scrypt_ts_spentDataHashes);
27
+
28
+ CAT20GuardStateLib.formalCheckState(__scrypt_ts_nextState, 12);
29
+ int inputTokenTypes = 0;
30
+ bytes[4] tokenScriptPlaceholders = [ConstantsLib.TOKEN_SCRIPT_HASH_PLACEHOLDER_FF, ConstantsLib.TOKEN_SCRIPT_HASH_PLACEHOLDER_FE, ConstantsLib.TOKEN_SCRIPT_HASH_PLACEHOLDER_FD, ConstantsLib.TOKEN_SCRIPT_HASH_PLACEHOLDER_FC];
31
+ loop (4) : i {
32
+ if(i >= 2) {
33
+ require(__scrypt_ts_nextState.tokenScriptHashes[(i)] == tokenScriptPlaceholders[(i)]);
34
+ require(__scrypt_ts_nextState.tokenAmounts[(i)] == 0);
35
+ require(__scrypt_ts_nextState.tokenBurnAmounts[(i)] == 0);
36
+ }
37
+ }
38
+ loop (2) : i {
39
+ if(__scrypt_ts_nextState.tokenScriptHashes[i] != tokenScriptPlaceholders[i]) {
40
+ inputTokenTypes++;
41
+ }
42
+ }
43
+ loop (2) : i {
44
+ if(i < (inputTokenTypes)) {
45
+ require(__scrypt_ts_nextState.tokenScriptHashes[i] != tokenScriptPlaceholders[i]);
46
+ require(len(__scrypt_ts_nextState.tokenScriptHashes[i]) == 32);
47
+ } else {
48
+ require(__scrypt_ts_nextState.tokenScriptHashes[i] == tokenScriptPlaceholders[i]);
49
+ }
50
+ }
51
+ require(inputTokenTypes > 0);
52
+ int[2] sumInputTokens = repeat(0, 2);
53
+ int tokenScriptIndexMax = -1;
54
+ int inputCount = __scrypt_ts_inputCount;
55
+ loop (12) : i {
56
+ int tokenScriptIndex = unpack(__scrypt_ts_nextState.tokenScriptIndexes[(i) : (i + 1)]);
57
+ if(i < inputCount) {
58
+ require(tokenScriptIndex < inputTokenTypes);
59
+ if(tokenScriptIndex != -1) {
60
+ bytes tokenScriptHash = __scrypt_ts_nextState.tokenScriptHashes[(tokenScriptIndex)];
61
+ require(tokenScriptHash == ContextUtils.getSpentScriptHash(__scrypt_ts_spentScriptHashes, (i)));
62
+ CAT20StateLib.checkState(cat20States[i]);
63
+ require(ContextUtils.getSpentDataHash(__scrypt_ts_spentDataHashes, (i)) == CAT20StateLib.stateHash(cat20States[i]));
64
+ sumInputTokens[(tokenScriptIndex)] = SafeMath.add(sumInputTokens[(tokenScriptIndex)], cat20States[i].amount);
65
+ tokenScriptIndexMax = tokenScriptIndex > tokenScriptIndexMax ? tokenScriptIndex : tokenScriptIndexMax;
66
+ }
67
+ } else {
68
+ require(tokenScriptIndex == -1);
69
+ }
70
+ }
71
+ require(tokenScriptIndexMax >= 0 && tokenScriptIndexMax == inputTokenTypes - 1);
72
+ require(outputCount >= 0 && outputCount <= 12);
73
+ int[2] sumOutputTokens = repeat(0, 2);
74
+ bytes outputs = b'';
75
+ loop (12) : i {
76
+ if(i < outputCount) {
77
+ bytes ownerAddrOrScriptHash = ownerAddrOrScriptHashes[i];
78
+ require(len(ownerAddrOrScriptHash) > 0);
79
+ int tokenScriptHashIndex = tokenScriptHashIndexes[i];
80
+ require(tokenScriptHashIndex < inputTokenTypes);
81
+ if(tokenScriptHashIndex != -1) {
82
+ int tokenAmount = outputTokens[i];
83
+ require(tokenAmount > 0);
84
+ sumOutputTokens[(tokenScriptHashIndex)] = SafeMath.add(sumOutputTokens[(tokenScriptHashIndex)], tokenAmount);
85
+ bytes tokenStateHash = CAT20StateLib.stateHash({ownerAddrOrScriptHash, tokenAmount});
86
+ require(nextStateHashes[i] == tokenStateHash);
87
+ bytes tokenScriptHash = __scrypt_ts_nextState.tokenScriptHashes[(tokenScriptHashIndex)];
88
+ outputs += TxUtils.buildDataOutput(tokenScriptHash, outputSatoshis[i], tokenStateHash);
89
+ } else {
90
+ require(outputTokens[i] == 0);
91
+ loop (2) : j {
92
+ require(ownerAddrOrScriptHash != __scrypt_ts_nextState.tokenScriptHashes[j]);
93
+ }
94
+ outputs += TxUtils.buildDataOutput(ownerAddrOrScriptHash, outputSatoshis[i], nextStateHashes[i]);
95
+ }
96
+ } else {
97
+ require(len(ownerAddrOrScriptHashes[i]) == 0);
98
+ require(tokenScriptHashIndexes[i] == -1);
99
+ require(outputTokens[i] == 0);
100
+ require(nextStateHashes[i] == b'');
101
+ require(outputSatoshis[i] == 0);
102
+ }
103
+ }
104
+ loop (2) : i {
105
+ require(sumInputTokens[i] == __scrypt_ts_nextState.tokenAmounts[i]);
106
+ require(sumInputTokens[i] == SafeMath.add(sumOutputTokens[i], __scrypt_ts_nextState.tokenBurnAmounts[i]));
107
+ if(i < (inputTokenTypes)) {
108
+ require(sumInputTokens[i] > 0);
109
+ } else {
110
+ require(sumInputTokens[i] == 0);
111
+ require(sumOutputTokens[i] == 0);
112
+ require(__scrypt_ts_nextState.tokenAmounts[i] == 0);
113
+ require(__scrypt_ts_nextState.tokenBurnAmounts[i] == 0);
114
+ }
115
+ }
116
+ require(hash256(outputs) == __scrypt_ts_shPreimage.hashOutputs);
117
+ }
118
+ 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));
120
+ }
121
+ 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)));
123
+ }
124
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "success": true,
3
+ "errors": [],
4
+ "scryptfile": "cat20/cat20Guard_12_12_2.scrypt.tpl",
5
+ "sourceMapFile": "cat20/cat20Guard_12_12_2.scrypt.map",
6
+ "ctxMethods": [
7
+ "unlock"
8
+ ]
9
+ }
@@ -0,0 +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]],[],[],[],[],[],[],[],[]]
@@ -10,9 +10,9 @@ import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/types/struc
10
10
  import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/stateUtils.scrypt.tpl";
11
11
 
12
12
 
13
- contract CAT20Guard {
13
+ contract CAT20Guard_12_12_4 {
14
14
  constructor(){}
15
- public function unlock(bytes[10] nextStateHashes, bytes[10] ownerAddrOrScriptHashes, int[10] outputTokens, int[10] tokenScriptHashIndexes, int[10] outputSatoshis, CAT20State[10] cat20States, int outputCount, SHPreimage __scrypt_ts_shPreimage, CAT20GuardConstState __scrypt_ts_curState, bytes __scrypt_ts_spentAmounts, bytes __scrypt_ts_spentDataHashes, bytes __scrypt_ts_spentScriptHashes) {
15
+ public function unlock(bytes[12] nextStateHashes, bytes[12] ownerAddrOrScriptHashes, int[12] outputTokens, int[12] tokenScriptHashIndexes, int[12] outputSatoshis, CAT20State[12] cat20States, int outputCount, SHPreimage __scrypt_ts_shPreimage, CAT20GuardConstState __scrypt_ts_curState, bytes __scrypt_ts_spentAmounts, bytes __scrypt_ts_spentDataHashes, bytes __scrypt_ts_spentScriptHashes) {
16
16
  require(Tx.checkPreimageSigHashType(ContextUtils.serializeSHPreimage(__scrypt_ts_shPreimage), SigHash.ALL));
17
17
 
18
18
  int __scrypt_ts_inputCount = ContextUtils.checkSpentAmounts(__scrypt_ts_spentAmounts, __scrypt_ts_shPreimage.hashSpentAmounts);
@@ -23,11 +23,18 @@ contract CAT20Guard {
23
23
 
24
24
  CAT20GuardConstState __scrypt_ts_nextState = __scrypt_ts_curState;
25
25
 
26
- StateUtils.checkInputState(__scrypt_ts_shPreimage.inputIndex, CAT20Guard.stateHash(__scrypt_ts_curState), __scrypt_ts_spentDataHashes);
26
+ StateUtils.checkInputState(__scrypt_ts_shPreimage.inputIndex, CAT20Guard_12_12_4.stateHash(__scrypt_ts_curState), __scrypt_ts_spentDataHashes);
27
27
 
28
- CAT20GuardStateLib.formalCheckState(__scrypt_ts_nextState);
28
+ CAT20GuardStateLib.formalCheckState(__scrypt_ts_nextState, 12);
29
29
  int inputTokenTypes = 0;
30
30
  bytes[4] tokenScriptPlaceholders = [ConstantsLib.TOKEN_SCRIPT_HASH_PLACEHOLDER_FF, ConstantsLib.TOKEN_SCRIPT_HASH_PLACEHOLDER_FE, ConstantsLib.TOKEN_SCRIPT_HASH_PLACEHOLDER_FD, ConstantsLib.TOKEN_SCRIPT_HASH_PLACEHOLDER_FC];
31
+ loop (4) : i {
32
+ if(i >= 4) {
33
+ require(__scrypt_ts_nextState.tokenScriptHashes[(i)] == tokenScriptPlaceholders[(i)]);
34
+ require(__scrypt_ts_nextState.tokenAmounts[(i)] == 0);
35
+ require(__scrypt_ts_nextState.tokenBurnAmounts[(i)] == 0);
36
+ }
37
+ }
31
38
  loop (4) : i {
32
39
  if(__scrypt_ts_nextState.tokenScriptHashes[i] != tokenScriptPlaceholders[i]) {
33
40
  inputTokenTypes++;
@@ -45,8 +52,8 @@ contract CAT20Guard {
45
52
  int[4] sumInputTokens = repeat(0, 4);
46
53
  int tokenScriptIndexMax = -1;
47
54
  int inputCount = __scrypt_ts_inputCount;
48
- loop (10) : i {
49
- int tokenScriptIndex = __scrypt_ts_nextState.tokenScriptIndexes[(i)];
55
+ loop (12) : i {
56
+ int tokenScriptIndex = unpack(__scrypt_ts_nextState.tokenScriptIndexes[(i) : (i + 1)]);
50
57
  if(i < inputCount) {
51
58
  require(tokenScriptIndex < inputTokenTypes);
52
59
  if(tokenScriptIndex != -1) {
@@ -58,14 +65,14 @@ contract CAT20Guard {
58
65
  tokenScriptIndexMax = tokenScriptIndex > tokenScriptIndexMax ? tokenScriptIndex : tokenScriptIndexMax;
59
66
  }
60
67
  } else {
61
- require(__scrypt_ts_nextState.tokenScriptIndexes[i] == -1);
68
+ require(tokenScriptIndex == -1);
62
69
  }
63
70
  }
64
71
  require(tokenScriptIndexMax >= 0 && tokenScriptIndexMax == inputTokenTypes - 1);
65
- require(outputCount >= 0 && outputCount <= 10);
72
+ require(outputCount >= 0 && outputCount <= 12);
66
73
  int[4] sumOutputTokens = repeat(0, 4);
67
74
  bytes outputs = b'';
68
- loop (10) : i {
75
+ loop (12) : i {
69
76
  if(i < outputCount) {
70
77
  bytes ownerAddrOrScriptHash = ownerAddrOrScriptHashes[i];
71
78
  require(len(ownerAddrOrScriptHash) > 0);
@@ -75,7 +82,7 @@ contract CAT20Guard {
75
82
  int tokenAmount = outputTokens[i];
76
83
  require(tokenAmount > 0);
77
84
  sumOutputTokens[(tokenScriptHashIndex)] = SafeMath.add(sumOutputTokens[(tokenScriptHashIndex)], tokenAmount);
78
- bytes tokenStateHash = CAT20StateLib.stateHash({ConstantsLib.OPCAT_CAT20_TAG, ownerAddrOrScriptHash, tokenAmount});
85
+ bytes tokenStateHash = CAT20StateLib.stateHash({ownerAddrOrScriptHash, tokenAmount});
79
86
  require(nextStateHashes[i] == tokenStateHash);
80
87
  bytes tokenScriptHash = __scrypt_ts_nextState.tokenScriptHashes[(tokenScriptHashIndex)];
81
88
  outputs += TxUtils.buildDataOutput(tokenScriptHash, outputSatoshis[i], tokenStateHash);
@@ -109,9 +116,9 @@ contract CAT20Guard {
109
116
  require(hash256(outputs) == __scrypt_ts_shPreimage.hashOutputs);
110
117
  }
111
118
  static function serializeState(CAT20GuardConstState __scrypt_ts_curState): bytes {
112
- 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(pack(__scrypt_ts_curState.tokenScriptIndexes[0])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[1])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[2])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[3])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[4])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[4]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[5])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[5]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[6])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[6]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[7])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[7]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[8])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[8]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[9])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[9]) + 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(pack(__scrypt_ts_curState.tokenScriptIndexes[0])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[1])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[2])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[4])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[5])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[6])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[7])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[8])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[9])));
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));
113
120
  }
114
121
  static function stateHash(CAT20GuardConstState __scrypt_ts_curState): bytes {
115
- 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(pack(__scrypt_ts_curState.tokenScriptIndexes[0])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[1])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[2])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[3])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[4])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[4]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[5])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[5]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[6])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[6]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[7])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[7]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[8])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[8]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[9])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[9]) + 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(pack(__scrypt_ts_curState.tokenScriptIndexes[0])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[1])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[2])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[4])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[5])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[6])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[7])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[8])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[9]))));
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)));
116
123
  }
117
124
  }
@@ -0,0 +1,9 @@
1
+ {
2
+ "success": true,
3
+ "errors": [],
4
+ "scryptfile": "cat20/cat20Guard_12_12_4.scrypt.tpl",
5
+ "sourceMapFile": "cat20/cat20Guard_12_12_4.scrypt.map",
6
+ "ctxMethods": [
7
+ "unlock"
8
+ ]
9
+ }
@@ -0,0 +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]],[],[],[],[],[],[],[],[]]