@opcat-labs/scrypt-ts-opcat 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (537) hide show
  1. package/assets/.templates/smart-contract/builtin-libs/TxHashPreimageUtils.scrypt.map +1 -0
  2. package/assets/.templates/smart-contract/builtin-libs/TxHashPreimageUtils.scrypt.tpl +18 -0
  3. package/assets/.templates/smart-contract/builtin-libs/TxHashPreimageUtils.transformer.json +7 -0
  4. package/assets/.templates/smart-contract/builtin-libs/backtrace.scrypt.map +1 -0
  5. package/assets/.templates/smart-contract/builtin-libs/backtrace.scrypt.tpl +36 -0
  6. package/assets/.templates/smart-contract/builtin-libs/backtrace.transformer.json +7 -0
  7. package/assets/.templates/smart-contract/builtin-libs/byteStringReader.scrypt.map +1 -0
  8. package/assets/.templates/smart-contract/builtin-libs/byteStringReader.scrypt.tpl +64 -0
  9. package/assets/.templates/smart-contract/builtin-libs/byteStringReader.transformer.json +7 -0
  10. package/assets/.templates/smart-contract/builtin-libs/byteStringWriter.scrypt.map +1 -0
  11. package/assets/.templates/smart-contract/builtin-libs/byteStringWriter.scrypt.tpl +48 -0
  12. package/assets/.templates/smart-contract/builtin-libs/byteStringWriter.transformer.json +7 -0
  13. package/assets/.templates/smart-contract/builtin-libs/contextUtils.scrypt.map +1 -0
  14. package/assets/.templates/smart-contract/builtin-libs/contextUtils.scrypt.tpl +101 -0
  15. package/assets/.templates/smart-contract/builtin-libs/contextUtils.transformer.json +7 -0
  16. package/assets/.templates/smart-contract/builtin-libs/p2pk.scrypt.map +1 -0
  17. package/assets/.templates/smart-contract/builtin-libs/p2pk.scrypt.tpl +7 -0
  18. package/assets/.templates/smart-contract/builtin-libs/p2pk.transformer.json +7 -0
  19. package/assets/.templates/smart-contract/builtin-libs/p2pkh.scrypt.map +1 -0
  20. package/assets/.templates/smart-contract/builtin-libs/p2pkh.scrypt.tpl +8 -0
  21. package/assets/.templates/smart-contract/builtin-libs/p2pkh.transformer.json +7 -0
  22. package/assets/.templates/smart-contract/builtin-libs/stateLib.scrypt.map +1 -0
  23. package/assets/.templates/smart-contract/builtin-libs/stateLib.scrypt.tpl +3 -0
  24. package/assets/.templates/smart-contract/builtin-libs/stateLib.transformer.json +7 -0
  25. package/assets/.templates/smart-contract/builtin-libs/stateUtils.scrypt.map +1 -0
  26. package/assets/.templates/smart-contract/builtin-libs/stateUtils.scrypt.tpl +7 -0
  27. package/assets/.templates/smart-contract/builtin-libs/stateUtils.transformer.json +7 -0
  28. package/assets/.templates/smart-contract/builtin-libs/stdUtils.scrypt.map +1 -0
  29. package/assets/.templates/smart-contract/builtin-libs/stdUtils.scrypt.tpl +89 -0
  30. package/assets/.templates/smart-contract/builtin-libs/stdUtils.transformer.json +7 -0
  31. package/assets/.templates/smart-contract/builtin-libs/txUtils.scrypt.map +1 -0
  32. package/assets/.templates/smart-contract/builtin-libs/txUtils.scrypt.tpl +42 -0
  33. package/assets/.templates/smart-contract/builtin-libs/txUtils.transformer.json +7 -0
  34. package/assets/.templates/smart-contract/types/structs.scrypt.map +1 -0
  35. package/assets/.templates/smart-contract/types/structs.scrypt.tpl +48 -0
  36. package/assets/.templates/smart-contract/types/structs.transformer.json +7 -0
  37. package/assets/smart-contract/builtin-libs/TxHashPreimageUtils.scrypt +20 -0
  38. package/assets/smart-contract/builtin-libs/backtrace.scrypt +38 -0
  39. package/assets/smart-contract/builtin-libs/byteStringReader.scrypt +66 -0
  40. package/assets/smart-contract/builtin-libs/byteStringWriter.scrypt +50 -0
  41. package/assets/smart-contract/builtin-libs/contextUtils.scrypt +103 -0
  42. package/assets/smart-contract/builtin-libs/p2pk.scrypt +9 -0
  43. package/assets/smart-contract/builtin-libs/p2pkh.scrypt +10 -0
  44. package/assets/smart-contract/builtin-libs/stateLib.scrypt +5 -0
  45. package/assets/smart-contract/builtin-libs/stateUtils.scrypt +9 -0
  46. package/assets/smart-contract/builtin-libs/stdUtils.scrypt +91 -0
  47. package/assets/smart-contract/builtin-libs/txUtils.scrypt +44 -0
  48. package/assets/smart-contract/types/structs.scrypt +50 -0
  49. package/dist/cjs/features/call.cjs +38 -0
  50. package/dist/cjs/features/call.js.map +1 -0
  51. package/dist/cjs/features/deploy.cjs +33 -0
  52. package/dist/cjs/features/deploy.js.map +1 -0
  53. package/dist/cjs/features/index.cjs +8 -0
  54. package/dist/cjs/features/index.js.map +1 -0
  55. package/dist/cjs/globalTypes.cjs +3 -0
  56. package/dist/cjs/globalTypes.js.map +1 -0
  57. package/dist/cjs/index.cjs +55 -0
  58. package/dist/cjs/index.js.map +1 -0
  59. package/dist/cjs/networks.cjs +69 -0
  60. package/dist/cjs/networks.js.map +1 -0
  61. package/dist/cjs/providers/chainProvider.cjs +3 -0
  62. package/dist/cjs/providers/chainProvider.js.map +1 -0
  63. package/dist/cjs/providers/dummyProvider.cjs +87 -0
  64. package/dist/cjs/providers/dummyProvider.js.map +1 -0
  65. package/dist/cjs/providers/index.cjs +13 -0
  66. package/dist/cjs/providers/index.js.map +1 -0
  67. package/dist/cjs/providers/mempoolProvider.cjs +207 -0
  68. package/dist/cjs/providers/mempoolProvider.js.map +1 -0
  69. package/dist/cjs/providers/rpcProvider.cjs +296 -0
  70. package/dist/cjs/providers/rpcProvider.js.map +1 -0
  71. package/dist/cjs/providers/utxoProvider.cjs +18 -0
  72. package/dist/cjs/providers/utxoProvider.js.map +1 -0
  73. package/dist/cjs/psbt/bip66.cjs +182 -0
  74. package/dist/cjs/psbt/bip66.js.map +1 -0
  75. package/dist/cjs/psbt/bufferutils.cjs +186 -0
  76. package/dist/cjs/psbt/bufferutils.js.map +1 -0
  77. package/dist/cjs/psbt/contextProvider.cjs +111 -0
  78. package/dist/cjs/psbt/contextProvider.js.map +1 -0
  79. package/dist/cjs/psbt/extPsbt.cjs +589 -0
  80. package/dist/cjs/psbt/extPsbt.js.map +1 -0
  81. package/dist/cjs/psbt/psbt.cjs +973 -0
  82. package/dist/cjs/psbt/psbt.js.map +1 -0
  83. package/dist/cjs/psbt/psbtutils.cjs +140 -0
  84. package/dist/cjs/psbt/psbtutils.js.map +1 -0
  85. package/dist/cjs/psbt/signatureutils.cjs +230 -0
  86. package/dist/cjs/psbt/signatureutils.js.map +1 -0
  87. package/dist/cjs/psbt/types.cjs +3 -0
  88. package/dist/cjs/psbt/types.js.map +1 -0
  89. package/dist/cjs/signer.cjs +3 -0
  90. package/dist/cjs/signer.js.map +1 -0
  91. package/dist/cjs/signers/defaultSigner.cjs +68 -0
  92. package/dist/cjs/signers/defaultSigner.js.map +1 -0
  93. package/dist/cjs/signers/index.cjs +8 -0
  94. package/dist/cjs/signers/index.js.map +1 -0
  95. package/dist/cjs/signers/unisatSigner.cjs +38 -0
  96. package/dist/cjs/signers/unisatSigner.js.map +1 -0
  97. package/dist/cjs/smart-contract/abi.cjs +380 -0
  98. package/dist/cjs/smart-contract/abi.js.map +1 -0
  99. package/dist/cjs/smart-contract/abiutils.cjs +183 -0
  100. package/dist/cjs/smart-contract/abiutils.js.map +1 -0
  101. package/dist/cjs/smart-contract/abstractContract.cjs +25 -0
  102. package/dist/cjs/smart-contract/abstractContract.js.map +1 -0
  103. package/dist/cjs/smart-contract/builtin-libs/backtrace.cjs +102 -0
  104. package/dist/cjs/smart-contract/builtin-libs/backtrace.js.map +1 -0
  105. package/dist/cjs/smart-contract/builtin-libs/byteStringReader.cjs +138 -0
  106. package/dist/cjs/smart-contract/builtin-libs/byteStringReader.js.map +1 -0
  107. package/dist/cjs/smart-contract/builtin-libs/byteStringWriter.cjs +109 -0
  108. package/dist/cjs/smart-contract/builtin-libs/byteStringWriter.js.map +1 -0
  109. package/dist/cjs/smart-contract/builtin-libs/contextUtils.cjs +304 -0
  110. package/dist/cjs/smart-contract/builtin-libs/contextUtils.js.map +1 -0
  111. package/dist/cjs/smart-contract/builtin-libs/index.cjs +18 -0
  112. package/dist/cjs/smart-contract/builtin-libs/index.js.map +1 -0
  113. package/dist/cjs/smart-contract/builtin-libs/p2pk.cjs +74 -0
  114. package/dist/cjs/smart-contract/builtin-libs/p2pk.js.map +1 -0
  115. package/dist/cjs/smart-contract/builtin-libs/p2pkh.cjs +80 -0
  116. package/dist/cjs/smart-contract/builtin-libs/p2pkh.js.map +1 -0
  117. package/dist/cjs/smart-contract/builtin-libs/stateLib.cjs +65 -0
  118. package/dist/cjs/smart-contract/builtin-libs/stateLib.js.map +1 -0
  119. package/dist/cjs/smart-contract/builtin-libs/stateUtils.cjs +42 -0
  120. package/dist/cjs/smart-contract/builtin-libs/stateUtils.js.map +1 -0
  121. package/dist/cjs/smart-contract/builtin-libs/stdUtils.cjs +192 -0
  122. package/dist/cjs/smart-contract/builtin-libs/stdUtils.js.map +1 -0
  123. package/dist/cjs/smart-contract/builtin-libs/txHashPreimageUtils.cjs +56 -0
  124. package/dist/cjs/smart-contract/builtin-libs/txHashPreimageUtils.js.map +1 -0
  125. package/dist/cjs/smart-contract/builtin-libs/txUtils.cjs +183 -0
  126. package/dist/cjs/smart-contract/builtin-libs/txUtils.js.map +1 -0
  127. package/dist/cjs/smart-contract/consts.cjs +100 -0
  128. package/dist/cjs/smart-contract/consts.js.map +1 -0
  129. package/dist/cjs/smart-contract/decorators.cjs +83 -0
  130. package/dist/cjs/smart-contract/decorators.js.map +1 -0
  131. package/dist/cjs/smart-contract/fns/assert.cjs +17 -0
  132. package/dist/cjs/smart-contract/fns/assert.js.map +1 -0
  133. package/dist/cjs/smart-contract/fns/bitwise.cjs +141 -0
  134. package/dist/cjs/smart-contract/fns/bitwise.js.map +1 -0
  135. package/dist/cjs/smart-contract/fns/byteString.cjs +106 -0
  136. package/dist/cjs/smart-contract/fns/byteString.js.map +1 -0
  137. package/dist/cjs/smart-contract/fns/equals.cjs +66 -0
  138. package/dist/cjs/smart-contract/fns/equals.js.map +1 -0
  139. package/dist/cjs/smart-contract/fns/fill.cjs +19 -0
  140. package/dist/cjs/smart-contract/fns/fill.js.map +1 -0
  141. package/dist/cjs/smart-contract/fns/hashes.cjs +81 -0
  142. package/dist/cjs/smart-contract/fns/hashes.js.map +1 -0
  143. package/dist/cjs/smart-contract/fns/index.cjs +37 -0
  144. package/dist/cjs/smart-contract/fns/index.js.map +1 -0
  145. package/dist/cjs/smart-contract/fns/math.cjs +52 -0
  146. package/dist/cjs/smart-contract/fns/math.js.map +1 -0
  147. package/dist/cjs/smart-contract/fns/pubKey2Addr.cjs +17 -0
  148. package/dist/cjs/smart-contract/fns/pubKey2Addr.js.map +1 -0
  149. package/dist/cjs/smart-contract/methods/backtraceToGenensis.cjs +41 -0
  150. package/dist/cjs/smart-contract/methods/backtraceToGenensis.js.map +1 -0
  151. package/dist/cjs/smart-contract/methods/buildOutput.cjs +41 -0
  152. package/dist/cjs/smart-contract/methods/buildOutput.js.map +1 -0
  153. package/dist/cjs/smart-contract/methods/checkCtx.cjs +58 -0
  154. package/dist/cjs/smart-contract/methods/checkCtx.js.map +1 -0
  155. package/dist/cjs/smart-contract/methods/checkInputState.cjs +16 -0
  156. package/dist/cjs/smart-contract/methods/checkInputState.js.map +1 -0
  157. package/dist/cjs/smart-contract/methods/checkInputStateHashes.cjs +16 -0
  158. package/dist/cjs/smart-contract/methods/checkInputStateHashes.js.map +1 -0
  159. package/dist/cjs/smart-contract/methods/checkSHPreimage.cjs +17 -0
  160. package/dist/cjs/smart-contract/methods/checkSHPreimage.js.map +1 -0
  161. package/dist/cjs/smart-contract/methods/checkSig.cjs +77 -0
  162. package/dist/cjs/smart-contract/methods/checkSig.js.map +1 -0
  163. package/dist/cjs/smart-contract/serializer.cjs +145 -0
  164. package/dist/cjs/smart-contract/serializer.js.map +1 -0
  165. package/dist/cjs/smart-contract/smartContract.cjs +568 -0
  166. package/dist/cjs/smart-contract/smartContract.js.map +1 -0
  167. package/dist/cjs/smart-contract/smartContractLib.cjs +46 -0
  168. package/dist/cjs/smart-contract/smartContractLib.js.map +1 -0
  169. package/dist/cjs/smart-contract/stateSerializer.cjs +134 -0
  170. package/dist/cjs/smart-contract/stateSerializer.js.map +1 -0
  171. package/dist/cjs/smart-contract/types/abi.cjs +69 -0
  172. package/dist/cjs/smart-contract/types/abi.js.map +1 -0
  173. package/dist/cjs/smart-contract/types/artifact.cjs +16 -0
  174. package/dist/cjs/smart-contract/types/artifact.js.map +1 -0
  175. package/dist/cjs/smart-contract/types/bn.cjs +117 -0
  176. package/dist/cjs/smart-contract/types/bn.js.map +1 -0
  177. package/dist/cjs/smart-contract/types/context.cjs +3 -0
  178. package/dist/cjs/smart-contract/types/context.js.map +1 -0
  179. package/dist/cjs/smart-contract/types/index.cjs +16 -0
  180. package/dist/cjs/smart-contract/types/index.js.map +1 -0
  181. package/dist/cjs/smart-contract/types/opCode.cjs +754 -0
  182. package/dist/cjs/smart-contract/types/opCode.js.map +1 -0
  183. package/dist/cjs/smart-contract/types/primitives.cjs +108 -0
  184. package/dist/cjs/smart-contract/types/primitives.js.map +1 -0
  185. package/dist/cjs/smart-contract/types/script.cjs +43 -0
  186. package/dist/cjs/smart-contract/types/script.js.map +1 -0
  187. package/dist/cjs/smart-contract/types/structs.cjs +3 -0
  188. package/dist/cjs/smart-contract/types/structs.js.map +1 -0
  189. package/dist/cjs/smart-contract/types/utils.cjs +21 -0
  190. package/dist/cjs/smart-contract/types/utils.js.map +1 -0
  191. package/dist/cjs/utils/bvm.cjs +30 -0
  192. package/dist/cjs/utils/bvm.js.map +1 -0
  193. package/dist/cjs/utils/checkIntegrity.cjs +49 -0
  194. package/dist/cjs/utils/checkIntegrity.js.map +1 -0
  195. package/dist/cjs/utils/common.cjs +228 -0
  196. package/dist/cjs/utils/common.js.map +1 -0
  197. package/dist/cjs/utils/constants.cjs +5 -0
  198. package/dist/cjs/utils/constants.js.map +1 -0
  199. package/dist/cjs/utils/index.cjs +45 -0
  200. package/dist/cjs/utils/index.js.map +1 -0
  201. package/dist/cjs/utils/preimage.cjs +93 -0
  202. package/dist/cjs/utils/preimage.js.map +1 -0
  203. package/dist/cjs/utils/proof.cjs +110 -0
  204. package/dist/cjs/utils/proof.js.map +1 -0
  205. package/dist/cjs/utils/script_number.cjs +107 -0
  206. package/dist/cjs/utils/script_number.js.map +1 -0
  207. package/dist/esm/features/call.js +34 -0
  208. package/dist/esm/features/call.js.map +1 -0
  209. package/dist/esm/features/deploy.js +29 -0
  210. package/dist/esm/features/deploy.js.map +1 -0
  211. package/dist/esm/features/index.js +3 -0
  212. package/dist/esm/features/index.js.map +1 -0
  213. package/dist/esm/globalTypes.js +2 -0
  214. package/dist/esm/globalTypes.js.map +1 -0
  215. package/dist/esm/index.js +23 -0
  216. package/dist/esm/index.js.map +1 -0
  217. package/dist/esm/networks.js +41 -0
  218. package/dist/esm/networks.js.map +1 -0
  219. package/dist/esm/providers/chainProvider.js +2 -0
  220. package/dist/esm/providers/chainProvider.js.map +1 -0
  221. package/dist/esm/providers/dummyProvider.js +60 -0
  222. package/dist/esm/providers/dummyProvider.js.map +1 -0
  223. package/dist/esm/providers/index.js +5 -0
  224. package/dist/esm/providers/index.js.map +1 -0
  225. package/dist/esm/providers/mempoolProvider.js +200 -0
  226. package/dist/esm/providers/mempoolProvider.js.map +1 -0
  227. package/dist/esm/providers/rpcProvider.js +266 -0
  228. package/dist/esm/providers/rpcProvider.js.map +1 -0
  229. package/dist/esm/providers/utxoProvider.js +13 -0
  230. package/dist/esm/providers/utxoProvider.js.map +1 -0
  231. package/dist/esm/psbt/bip66.js +175 -0
  232. package/dist/esm/psbt/bip66.js.map +1 -0
  233. package/dist/esm/psbt/bufferutils.js +156 -0
  234. package/dist/esm/psbt/bufferutils.js.map +1 -0
  235. package/dist/esm/psbt/contextProvider.js +84 -0
  236. package/dist/esm/psbt/contextProvider.js.map +1 -0
  237. package/dist/esm/psbt/extPsbt.js +562 -0
  238. package/dist/esm/psbt/extPsbt.js.map +1 -0
  239. package/dist/esm/psbt/psbt.js +945 -0
  240. package/dist/esm/psbt/psbt.js.map +1 -0
  241. package/dist/esm/psbt/psbtutils.js +110 -0
  242. package/dist/esm/psbt/psbtutils.js.map +1 -0
  243. package/dist/esm/psbt/signatureutils.js +199 -0
  244. package/dist/esm/psbt/signatureutils.js.map +1 -0
  245. package/dist/esm/psbt/types.js +2 -0
  246. package/dist/esm/psbt/types.js.map +1 -0
  247. package/dist/esm/signer.js +2 -0
  248. package/dist/esm/signer.js.map +1 -0
  249. package/dist/esm/signers/defaultSigner.js +63 -0
  250. package/dist/esm/signers/defaultSigner.js.map +1 -0
  251. package/dist/esm/signers/index.js +3 -0
  252. package/dist/esm/signers/index.js.map +1 -0
  253. package/dist/esm/signers/unisatSigner.js +34 -0
  254. package/dist/esm/signers/unisatSigner.js.map +1 -0
  255. package/dist/esm/smart-contract/abi.js +373 -0
  256. package/dist/esm/smart-contract/abi.js.map +1 -0
  257. package/dist/esm/smart-contract/abiutils.js +171 -0
  258. package/dist/esm/smart-contract/abiutils.js.map +1 -0
  259. package/dist/esm/smart-contract/abstractContract.js +21 -0
  260. package/dist/esm/smart-contract/abstractContract.js.map +1 -0
  261. package/dist/esm/smart-contract/builtin-libs/backtrace.js +98 -0
  262. package/dist/esm/smart-contract/builtin-libs/backtrace.js.map +1 -0
  263. package/dist/esm/smart-contract/builtin-libs/byteStringReader.js +134 -0
  264. package/dist/esm/smart-contract/builtin-libs/byteStringReader.js.map +1 -0
  265. package/dist/esm/smart-contract/builtin-libs/byteStringWriter.js +105 -0
  266. package/dist/esm/smart-contract/builtin-libs/byteStringWriter.js.map +1 -0
  267. package/dist/esm/smart-contract/builtin-libs/contextUtils.js +300 -0
  268. package/dist/esm/smart-contract/builtin-libs/contextUtils.js.map +1 -0
  269. package/dist/esm/smart-contract/builtin-libs/index.js +8 -0
  270. package/dist/esm/smart-contract/builtin-libs/index.js.map +1 -0
  271. package/dist/esm/smart-contract/builtin-libs/p2pk.js +70 -0
  272. package/dist/esm/smart-contract/builtin-libs/p2pk.js.map +1 -0
  273. package/dist/esm/smart-contract/builtin-libs/p2pkh.js +76 -0
  274. package/dist/esm/smart-contract/builtin-libs/p2pkh.js.map +1 -0
  275. package/dist/esm/smart-contract/builtin-libs/stateLib.js +61 -0
  276. package/dist/esm/smart-contract/builtin-libs/stateLib.js.map +1 -0
  277. package/dist/esm/smart-contract/builtin-libs/stateUtils.js +38 -0
  278. package/dist/esm/smart-contract/builtin-libs/stateUtils.js.map +1 -0
  279. package/dist/esm/smart-contract/builtin-libs/stdUtils.js +188 -0
  280. package/dist/esm/smart-contract/builtin-libs/stdUtils.js.map +1 -0
  281. package/dist/esm/smart-contract/builtin-libs/txHashPreimageUtils.js +52 -0
  282. package/dist/esm/smart-contract/builtin-libs/txHashPreimageUtils.js.map +1 -0
  283. package/dist/esm/smart-contract/builtin-libs/txUtils.js +179 -0
  284. package/dist/esm/smart-contract/builtin-libs/txUtils.js.map +1 -0
  285. package/dist/esm/smart-contract/consts.js +97 -0
  286. package/dist/esm/smart-contract/consts.js.map +1 -0
  287. package/dist/esm/smart-contract/decorators.js +78 -0
  288. package/dist/esm/smart-contract/decorators.js.map +1 -0
  289. package/dist/esm/smart-contract/fns/assert.js +13 -0
  290. package/dist/esm/smart-contract/fns/assert.js.map +1 -0
  291. package/dist/esm/smart-contract/fns/bitwise.js +109 -0
  292. package/dist/esm/smart-contract/fns/bitwise.js.map +1 -0
  293. package/dist/esm/smart-contract/fns/byteString.js +97 -0
  294. package/dist/esm/smart-contract/fns/byteString.js.map +1 -0
  295. package/dist/esm/smart-contract/fns/equals.js +62 -0
  296. package/dist/esm/smart-contract/fns/equals.js.map +1 -0
  297. package/dist/esm/smart-contract/fns/fill.js +15 -0
  298. package/dist/esm/smart-contract/fns/fill.js.map +1 -0
  299. package/dist/esm/smart-contract/fns/hashes.js +73 -0
  300. package/dist/esm/smart-contract/fns/hashes.js.map +1 -0
  301. package/dist/esm/smart-contract/fns/index.js +9 -0
  302. package/dist/esm/smart-contract/fns/index.js.map +1 -0
  303. package/dist/esm/smart-contract/fns/math.js +45 -0
  304. package/dist/esm/smart-contract/fns/math.js.map +1 -0
  305. package/dist/esm/smart-contract/fns/pubKey2Addr.js +13 -0
  306. package/dist/esm/smart-contract/fns/pubKey2Addr.js.map +1 -0
  307. package/dist/esm/smart-contract/methods/backtraceToGenensis.js +36 -0
  308. package/dist/esm/smart-contract/methods/backtraceToGenensis.js.map +1 -0
  309. package/dist/esm/smart-contract/methods/buildOutput.js +36 -0
  310. package/dist/esm/smart-contract/methods/buildOutput.js.map +1 -0
  311. package/dist/esm/smart-contract/methods/checkCtx.js +31 -0
  312. package/dist/esm/smart-contract/methods/checkCtx.js.map +1 -0
  313. package/dist/esm/smart-contract/methods/checkInputState.js +12 -0
  314. package/dist/esm/smart-contract/methods/checkInputState.js.map +1 -0
  315. package/dist/esm/smart-contract/methods/checkInputStateHashes.js +12 -0
  316. package/dist/esm/smart-contract/methods/checkInputStateHashes.js.map +1 -0
  317. package/dist/esm/smart-contract/methods/checkSHPreimage.js +13 -0
  318. package/dist/esm/smart-contract/methods/checkSHPreimage.js.map +1 -0
  319. package/dist/esm/smart-contract/methods/checkSig.js +73 -0
  320. package/dist/esm/smart-contract/methods/checkSig.js.map +1 -0
  321. package/dist/esm/smart-contract/serializer.js +112 -0
  322. package/dist/esm/smart-contract/serializer.js.map +1 -0
  323. package/dist/esm/smart-contract/smartContract.js +564 -0
  324. package/dist/esm/smart-contract/smartContract.js.map +1 -0
  325. package/dist/esm/smart-contract/smartContractLib.js +42 -0
  326. package/dist/esm/smart-contract/smartContractLib.js.map +1 -0
  327. package/dist/esm/smart-contract/stateSerializer.js +129 -0
  328. package/dist/esm/smart-contract/stateSerializer.js.map +1 -0
  329. package/dist/esm/smart-contract/types/abi.js +63 -0
  330. package/dist/esm/smart-contract/types/abi.js.map +1 -0
  331. package/dist/esm/smart-contract/types/artifact.js +13 -0
  332. package/dist/esm/smart-contract/types/artifact.js.map +1 -0
  333. package/dist/esm/smart-contract/types/bn.js +89 -0
  334. package/dist/esm/smart-contract/types/bn.js.map +1 -0
  335. package/dist/esm/smart-contract/types/context.js +2 -0
  336. package/dist/esm/smart-contract/types/context.js.map +1 -0
  337. package/dist/esm/smart-contract/types/index.js +3 -0
  338. package/dist/esm/smart-contract/types/index.js.map +1 -0
  339. package/dist/esm/smart-contract/types/opCode.js +750 -0
  340. package/dist/esm/smart-contract/types/opCode.js.map +1 -0
  341. package/dist/esm/smart-contract/types/primitives.js +95 -0
  342. package/dist/esm/smart-contract/types/primitives.js.map +1 -0
  343. package/dist/esm/smart-contract/types/script.js +16 -0
  344. package/dist/esm/smart-contract/types/script.js.map +1 -0
  345. package/dist/esm/smart-contract/types/structs.js +2 -0
  346. package/dist/esm/smart-contract/types/structs.js.map +1 -0
  347. package/dist/esm/smart-contract/types/utils.js +17 -0
  348. package/dist/esm/smart-contract/types/utils.js.map +1 -0
  349. package/dist/esm/utils/bvm.js +26 -0
  350. package/dist/esm/utils/bvm.js.map +1 -0
  351. package/dist/esm/utils/checkIntegrity.js +41 -0
  352. package/dist/esm/utils/checkIntegrity.js.map +1 -0
  353. package/dist/esm/utils/common.js +188 -0
  354. package/dist/esm/utils/common.js.map +1 -0
  355. package/dist/esm/utils/constants.js +2 -0
  356. package/dist/esm/utils/constants.js.map +1 -0
  357. package/dist/esm/utils/index.js +7 -0
  358. package/dist/esm/utils/index.js.map +1 -0
  359. package/dist/esm/utils/preimage.js +65 -0
  360. package/dist/esm/utils/preimage.js.map +1 -0
  361. package/dist/esm/utils/proof.js +98 -0
  362. package/dist/esm/utils/proof.js.map +1 -0
  363. package/dist/esm/utils/script_number.js +79 -0
  364. package/dist/esm/utils/script_number.js.map +1 -0
  365. package/dist/types/features/call.d.ts +21 -0
  366. package/dist/types/features/call.d.ts.map +1 -0
  367. package/dist/types/features/deploy.d.ts +16 -0
  368. package/dist/types/features/deploy.d.ts.map +1 -0
  369. package/dist/types/features/index.d.ts +3 -0
  370. package/dist/types/features/index.d.ts.map +1 -0
  371. package/dist/types/globalTypes.d.ts +37 -0
  372. package/dist/types/globalTypes.d.ts.map +1 -0
  373. package/dist/types/index.d.ts +18 -0
  374. package/dist/types/index.d.ts.map +1 -0
  375. package/dist/types/networks.d.ts +19 -0
  376. package/dist/types/networks.d.ts.map +1 -0
  377. package/dist/types/providers/chainProvider.d.ts +31 -0
  378. package/dist/types/providers/chainProvider.d.ts.map +1 -0
  379. package/dist/types/providers/dummyProvider.d.ts +23 -0
  380. package/dist/types/providers/dummyProvider.d.ts.map +1 -0
  381. package/dist/types/providers/index.d.ts +6 -0
  382. package/dist/types/providers/index.d.ts.map +1 -0
  383. package/dist/types/providers/mempoolProvider.d.ts +28 -0
  384. package/dist/types/providers/mempoolProvider.d.ts.map +1 -0
  385. package/dist/types/providers/rpcProvider.d.ts +34 -0
  386. package/dist/types/providers/rpcProvider.d.ts.map +1 -0
  387. package/dist/types/providers/utxoProvider.d.ts +43 -0
  388. package/dist/types/providers/utxoProvider.d.ts.map +1 -0
  389. package/dist/types/psbt/bip66.d.ts +28 -0
  390. package/dist/types/psbt/bip66.d.ts.map +1 -0
  391. package/dist/types/psbt/bufferutils.d.ts +47 -0
  392. package/dist/types/psbt/bufferutils.d.ts.map +1 -0
  393. package/dist/types/psbt/contextProvider.d.ts +15 -0
  394. package/dist/types/psbt/contextProvider.d.ts.map +1 -0
  395. package/dist/types/psbt/extPsbt.d.ts +131 -0
  396. package/dist/types/psbt/extPsbt.d.ts.map +1 -0
  397. package/dist/types/psbt/psbt.d.ts +194 -0
  398. package/dist/types/psbt/psbt.d.ts.map +1 -0
  399. package/dist/types/psbt/psbtutils.d.ts +37 -0
  400. package/dist/types/psbt/psbtutils.d.ts.map +1 -0
  401. package/dist/types/psbt/signatureutils.d.ts +52 -0
  402. package/dist/types/psbt/signatureutils.d.ts.map +1 -0
  403. package/dist/types/psbt/types.d.ts +63 -0
  404. package/dist/types/psbt/types.d.ts.map +1 -0
  405. package/dist/types/signer.d.ts +48 -0
  406. package/dist/types/signer.d.ts.map +1 -0
  407. package/dist/types/signers/defaultSigner.d.ts +30 -0
  408. package/dist/types/signers/defaultSigner.d.ts.map +1 -0
  409. package/dist/types/signers/index.d.ts +4 -0
  410. package/dist/types/signers/index.d.ts.map +1 -0
  411. package/dist/types/signers/unisatSigner.d.ts +32 -0
  412. package/dist/types/signers/unisatSigner.d.ts.map +1 -0
  413. package/dist/types/smart-contract/abi.d.ts +43 -0
  414. package/dist/types/smart-contract/abi.d.ts.map +1 -0
  415. package/dist/types/smart-contract/abiutils.d.ts +51 -0
  416. package/dist/types/smart-contract/abiutils.d.ts.map +1 -0
  417. package/dist/types/smart-contract/abstractContract.d.ts +115 -0
  418. package/dist/types/smart-contract/abstractContract.d.ts.map +1 -0
  419. package/dist/types/smart-contract/builtin-libs/backtrace.d.ts +43 -0
  420. package/dist/types/smart-contract/builtin-libs/backtrace.d.ts.map +1 -0
  421. package/dist/types/smart-contract/builtin-libs/byteStringReader.d.ts +32 -0
  422. package/dist/types/smart-contract/builtin-libs/byteStringReader.d.ts.map +1 -0
  423. package/dist/types/smart-contract/builtin-libs/byteStringWriter.d.ts +29 -0
  424. package/dist/types/smart-contract/builtin-libs/byteStringWriter.d.ts.map +1 -0
  425. package/dist/types/smart-contract/builtin-libs/contextUtils.d.ts +53 -0
  426. package/dist/types/smart-contract/builtin-libs/contextUtils.d.ts.map +1 -0
  427. package/dist/types/smart-contract/builtin-libs/index.d.ts +8 -0
  428. package/dist/types/smart-contract/builtin-libs/index.d.ts.map +1 -0
  429. package/dist/types/smart-contract/builtin-libs/p2pk.d.ts +8 -0
  430. package/dist/types/smart-contract/builtin-libs/p2pk.d.ts.map +1 -0
  431. package/dist/types/smart-contract/builtin-libs/p2pkh.d.ts +8 -0
  432. package/dist/types/smart-contract/builtin-libs/p2pkh.d.ts.map +1 -0
  433. package/dist/types/smart-contract/builtin-libs/stateLib.d.ts +27 -0
  434. package/dist/types/smart-contract/builtin-libs/stateLib.d.ts.map +1 -0
  435. package/dist/types/smart-contract/builtin-libs/stateUtils.d.ts +18 -0
  436. package/dist/types/smart-contract/builtin-libs/stateUtils.d.ts.map +1 -0
  437. package/dist/types/smart-contract/builtin-libs/stdUtils.d.ts +44 -0
  438. package/dist/types/smart-contract/builtin-libs/stdUtils.d.ts.map +1 -0
  439. package/dist/types/smart-contract/builtin-libs/txHashPreimageUtils.d.ts +8 -0
  440. package/dist/types/smart-contract/builtin-libs/txHashPreimageUtils.d.ts.map +1 -0
  441. package/dist/types/smart-contract/builtin-libs/txUtils.d.ts +69 -0
  442. package/dist/types/smart-contract/builtin-libs/txUtils.d.ts.map +1 -0
  443. package/dist/types/smart-contract/consts.d.ts +97 -0
  444. package/dist/types/smart-contract/consts.d.ts.map +1 -0
  445. package/dist/types/smart-contract/decorators.d.ts +40 -0
  446. package/dist/types/smart-contract/decorators.d.ts.map +1 -0
  447. package/dist/types/smart-contract/fns/assert.d.ts +8 -0
  448. package/dist/types/smart-contract/fns/assert.d.ts.map +1 -0
  449. package/dist/types/smart-contract/fns/bitwise.d.ts +50 -0
  450. package/dist/types/smart-contract/fns/bitwise.d.ts.map +1 -0
  451. package/dist/types/smart-contract/fns/byteString.d.ts +56 -0
  452. package/dist/types/smart-contract/fns/byteString.d.ts.map +1 -0
  453. package/dist/types/smart-contract/fns/equals.d.ts +8 -0
  454. package/dist/types/smart-contract/fns/equals.d.ts.map +1 -0
  455. package/dist/types/smart-contract/fns/fill.d.ts +11 -0
  456. package/dist/types/smart-contract/fns/fill.d.ts.map +1 -0
  457. package/dist/types/smart-contract/fns/hashes.d.ts +60 -0
  458. package/dist/types/smart-contract/fns/hashes.d.ts.map +1 -0
  459. package/dist/types/smart-contract/fns/index.d.ts +9 -0
  460. package/dist/types/smart-contract/fns/index.d.ts.map +1 -0
  461. package/dist/types/smart-contract/fns/math.d.ts +38 -0
  462. package/dist/types/smart-contract/fns/math.d.ts.map +1 -0
  463. package/dist/types/smart-contract/fns/pubKey2Addr.d.ts +11 -0
  464. package/dist/types/smart-contract/fns/pubKey2Addr.d.ts.map +1 -0
  465. package/dist/types/smart-contract/methods/backtraceToGenensis.d.ts +20 -0
  466. package/dist/types/smart-contract/methods/backtraceToGenensis.d.ts.map +1 -0
  467. package/dist/types/smart-contract/methods/buildOutput.d.ts +25 -0
  468. package/dist/types/smart-contract/methods/buildOutput.d.ts.map +1 -0
  469. package/dist/types/smart-contract/methods/checkCtx.d.ts +18 -0
  470. package/dist/types/smart-contract/methods/checkCtx.d.ts.map +1 -0
  471. package/dist/types/smart-contract/methods/checkInputState.d.ts +9 -0
  472. package/dist/types/smart-contract/methods/checkInputState.d.ts.map +1 -0
  473. package/dist/types/smart-contract/methods/checkInputStateHashes.d.ts +10 -0
  474. package/dist/types/smart-contract/methods/checkInputStateHashes.d.ts.map +1 -0
  475. package/dist/types/smart-contract/methods/checkSHPreimage.d.ts +10 -0
  476. package/dist/types/smart-contract/methods/checkSHPreimage.d.ts.map +1 -0
  477. package/dist/types/smart-contract/methods/checkSig.d.ts +11 -0
  478. package/dist/types/smart-contract/methods/checkSig.d.ts.map +1 -0
  479. package/dist/types/smart-contract/serializer.d.ts +48 -0
  480. package/dist/types/smart-contract/serializer.d.ts.map +1 -0
  481. package/dist/types/smart-contract/smartContract.d.ts +274 -0
  482. package/dist/types/smart-contract/smartContract.d.ts.map +1 -0
  483. package/dist/types/smart-contract/smartContractLib.d.ts +26 -0
  484. package/dist/types/smart-contract/smartContractLib.d.ts.map +1 -0
  485. package/dist/types/smart-contract/stateSerializer.d.ts +8 -0
  486. package/dist/types/smart-contract/stateSerializer.d.ts.map +1 -0
  487. package/dist/types/smart-contract/types/abi.d.ts +55 -0
  488. package/dist/types/smart-contract/types/abi.d.ts.map +1 -0
  489. package/dist/types/smart-contract/types/artifact.d.ts +108 -0
  490. package/dist/types/smart-contract/types/artifact.d.ts.map +1 -0
  491. package/dist/types/smart-contract/types/bn.d.ts +3 -0
  492. package/dist/types/smart-contract/types/bn.d.ts.map +1 -0
  493. package/dist/types/smart-contract/types/context.d.ts +126 -0
  494. package/dist/types/smart-contract/types/context.d.ts.map +1 -0
  495. package/dist/types/smart-contract/types/index.d.ts +4 -0
  496. package/dist/types/smart-contract/types/index.d.ts.map +1 -0
  497. package/dist/types/smart-contract/types/opCode.d.ts +747 -0
  498. package/dist/types/smart-contract/types/opCode.d.ts.map +1 -0
  499. package/dist/types/smart-contract/types/primitives.d.ts +217 -0
  500. package/dist/types/smart-contract/types/primitives.d.ts.map +1 -0
  501. package/dist/types/smart-contract/types/script.d.ts +14 -0
  502. package/dist/types/smart-contract/types/script.d.ts.map +1 -0
  503. package/dist/types/smart-contract/types/structs.d.ts +206 -0
  504. package/dist/types/smart-contract/types/structs.d.ts.map +1 -0
  505. package/dist/types/smart-contract/types/utils.d.ts +5 -0
  506. package/dist/types/smart-contract/types/utils.d.ts.map +1 -0
  507. package/dist/types/utils/bvm.d.ts +9 -0
  508. package/dist/types/utils/bvm.d.ts.map +1 -0
  509. package/dist/types/utils/checkIntegrity.d.ts +46 -0
  510. package/dist/types/utils/checkIntegrity.d.ts.map +1 -0
  511. package/dist/types/utils/common.d.ts +61 -0
  512. package/dist/types/utils/common.d.ts.map +1 -0
  513. package/dist/types/utils/constants.d.ts +3 -0
  514. package/dist/types/utils/constants.d.ts.map +1 -0
  515. package/dist/types/utils/index.d.ts +7 -0
  516. package/dist/types/utils/index.d.ts.map +1 -0
  517. package/dist/types/utils/preimage.d.ts +31 -0
  518. package/dist/types/utils/preimage.d.ts.map +1 -0
  519. package/dist/types/utils/proof.d.ts +31 -0
  520. package/dist/types/utils/proof.d.ts.map +1 -0
  521. package/dist/types/utils/script_number.d.ts +19 -0
  522. package/dist/types/utils/script_number.d.ts.map +1 -0
  523. package/package.json +79 -0
  524. package/scrypt.index.json +85 -0
  525. package/src/smart-contract/builtin-libs/backtrace.ts +116 -0
  526. package/src/smart-contract/builtin-libs/byteStringReader.ts +111 -0
  527. package/src/smart-contract/builtin-libs/byteStringWriter.ts +86 -0
  528. package/src/smart-contract/builtin-libs/contextUtils.ts +270 -0
  529. package/src/smart-contract/builtin-libs/index.ts +7 -0
  530. package/src/smart-contract/builtin-libs/p2pk.ts +58 -0
  531. package/src/smart-contract/builtin-libs/p2pkh.ts +67 -0
  532. package/src/smart-contract/builtin-libs/stateLib.ts +82 -0
  533. package/src/smart-contract/builtin-libs/stateUtils.ts +37 -0
  534. package/src/smart-contract/builtin-libs/stdUtils.ts +156 -0
  535. package/src/smart-contract/builtin-libs/txHashPreimageUtils.ts +34 -0
  536. package/src/smart-contract/builtin-libs/txUtils.ts +152 -0
  537. package/src/smart-contract/types/structs.ts +244 -0
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Comparing two struct/FixedArray
3
+ * @returns {boolean} returns true if equal; otherwise returns false
4
+ * @category Global Function
5
+ * @onchain
6
+ */
7
+ export function equals(a, b) {
8
+ if (Array.isArray(a) && Array.isArray(b)) {
9
+ return equalsArray(a, b);
10
+ }
11
+ if (typeof a === 'object' && typeof b === 'object') {
12
+ return equalsStruct(a, b);
13
+ }
14
+ return a === b;
15
+ }
16
+ function equalsArray(a, b) {
17
+ if (Array.isArray(a[0])) {
18
+ const results = [];
19
+ for (let i = 0; i < a.length; i++) {
20
+ results.push(equals(a[i], b[i]));
21
+ }
22
+ for (let i = 0; i < results.length; i++) {
23
+ if (!results[i]) {
24
+ return false;
25
+ }
26
+ }
27
+ return true;
28
+ }
29
+ if (a.length !== b.length) {
30
+ return false;
31
+ }
32
+ for (let i = 0; i < a.length; i++) {
33
+ if (!equals(a[i], b[i])) {
34
+ return false;
35
+ }
36
+ }
37
+ return true;
38
+ }
39
+ function equalsStruct(a, b) {
40
+ if (typeof a !== 'object' || typeof b !== 'object') {
41
+ return false;
42
+ }
43
+ if (a === null || b === null) {
44
+ return false;
45
+ }
46
+ const akeys = Object.keys(a);
47
+ const bkeys = Object.keys(b);
48
+ if (akeys.length !== bkeys.length) {
49
+ return false;
50
+ }
51
+ const results = [];
52
+ for (let i = 0; i < akeys.length; i++) {
53
+ results.push(equals(a[akeys[i]], b[bkeys[i]]));
54
+ }
55
+ for (let i = 0; i < results.length; i++) {
56
+ if (!results[i]) {
57
+ return false;
58
+ }
59
+ }
60
+ return true;
61
+ }
62
+ //# sourceMappingURL=equals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"equals.js","sourceRoot":"","sources":["../../../../src/smart-contract/fns/equals.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { cloneDeep } from '../../utils/common.js';
2
+ /**
3
+ * Returns an `FixedArray` with all `size` elements set to `value`, where `value` can be any type.
4
+ * Note that `length` must be a numeric literal or a compiled-time constant
5
+ * @category Global Function
6
+ * @onchain
7
+ * @param value - the value of each element to set
8
+ * @param length - the length of FixedArray
9
+ */
10
+ export function fill(value, length) {
11
+ return Array(length)
12
+ .fill(0)
13
+ .map((_) => cloneDeep(value));
14
+ }
15
+ //# sourceMappingURL=fill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fill.js","sourceRoot":"","sources":["../../../../src/smart-contract/fns/fill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD;;;;;;;GAOG;AACH,MAAM,UAAU,IAAI,CAAsB,KAAQ,EAAE,MAAS;IAC3D,OAAO,KAAK,CAAC,MAAM,CAAC;SACjB,IAAI,CAAC,CAAC,CAAC;SACP,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAqB,CAAC;AACtD,CAAC"}
@@ -0,0 +1,73 @@
1
+ import { sha256 as sha256_ } from '@noble/hashes/sha2';
2
+ import { ripemd160 as ripemd160_, sha1 as sha1_ } from '@noble/hashes/legacy';
3
+ import { Ripemd160, Sha1 } from '../types/index.js';
4
+ import { hexToUint8Array, uint8ArrayToHex } from '../../utils/common.js';
5
+ /**
6
+ * A RIPEMD160 hash of a SHA256 hash, which is always 160 bits or 20 bytes long.
7
+ * This value is commonly used inside Bitcoin, particularly for Bitcoin
8
+ * addresses.
9
+ *
10
+ * See:
11
+ * https://en.wikipedia.org/wiki/RIPEMD
12
+ * @category Hashing
13
+ * @onchain
14
+ * @param {ByteString} a ByteString Data, a.k.a. pre-image, which can be any size.
15
+ * @returns {Ripemd160} The hash in the form of a string.
16
+ */
17
+ export function hash160(a) {
18
+ return uint8ArrayToHex(ripemd160_(sha256_(hexToUint8Array(a))));
19
+ }
20
+ /**
21
+ * A SHA256 hash, which is always 256 bits or 32 bytes long.
22
+ *
23
+ * See:
24
+ * https://www.movable-type.co.uk/scripts/sha256.html
25
+ * @category Hashing
26
+ * @onchain
27
+ * @param {ByteString} a ByteString Data, a.k.a. pre-image, which can be any size.
28
+ * @returns {Sha256} The hash in the form of a string.
29
+ */
30
+ export function sha256(a) {
31
+ return uint8ArrayToHex(sha256_(hexToUint8Array(a)));
32
+ }
33
+ /**
34
+ * A double SHA256 hash, which is always 256 bits or 32 bytes bytes long. This
35
+ * hash function is commonly used inside Bitcoin, particularly for the hash of a
36
+ * block and the hash of a transaction.
37
+ *
38
+ * See:
39
+ * https://www.movable-type.co.uk/scripts/sha256.html
40
+ * @category Hashing
41
+ * @onchain
42
+ * @param {ByteString} a ByteString data, a.k.a. pre-image, which can be any size.
43
+ * @returns {Sha256} The hash in the form of a string.
44
+ */
45
+ export function hash256(a) {
46
+ return sha256(sha256(a));
47
+ }
48
+ /**
49
+ * A SHA or SHA1 hash, which is always 160 bits or 20 bytes long.
50
+ *
51
+ * See:
52
+ * https://en.wikipedia.org/wiki/SHA-1
53
+ * @category Hashing
54
+ * @onchain
55
+ * @param {ByteString} a ByteString Data, a.k.a. pre-image, which can be any size.
56
+ * @returns {Sha1} The hash in the form of a string.
57
+ */
58
+ export function sha1(a) {
59
+ return Sha1(uint8ArrayToHex(sha1_(hexToUint8Array(a))));
60
+ }
61
+ /**
62
+ * A RIPEMD160 hash, which is always 160 bits or 20 bytes long.
63
+ * See:
64
+ * https://en.wikipedia.org/wiki/RIPEMD
65
+ * @category Hashing
66
+ * @onchain
67
+ * @param {ByteString} a ByteString Data, a.k.a. pre-image, which can be any size.
68
+ * @returns {Ripemd160} The hash in the form of a ByteString.
69
+ */
70
+ export function ripemd160(a) {
71
+ return Ripemd160(uint8ArrayToHex(ripemd160_(hexToUint8Array(a))));
72
+ }
73
+ //# sourceMappingURL=hashes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hashes.js","sourceRoot":"","sources":["../../../../src/smart-contract/fns/hashes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,SAAS,IAAI,UAAU,EAAE,IAAI,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAc,SAAS,EAAE,IAAI,EAAU,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEzE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,OAAO,CAAC,CAAa;IACnC,OAAO,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAc,CAAC;AAC/E,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,MAAM,CAAC,CAAa;IAClC,OAAO,eAAe,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAW,CAAC;AAChE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,OAAO,CAAC,CAAa;IACnC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAW,CAAC;AACrC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,IAAI,CAAC,CAAa;IAChC,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CAAC,CAAa;IACrC,OAAO,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC"}
@@ -0,0 +1,9 @@
1
+ export { assert } from './assert.js';
2
+ export { fill } from './fill.js';
3
+ export { hash160, hash256, sha256, sha1, ripemd160 } from './hashes.js';
4
+ export { toByteString, intToByteString, byteStringToInt, len, slice, reverseByteString } from './byteString.js';
5
+ export { pubKey2Addr } from './pubKey2Addr.js';
6
+ export { max, min, within, abs } from './math.js';
7
+ export { equals } from './equals.js';
8
+ export { lshift, rshift, and, or, xor, invert } from './bitwise.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/smart-contract/fns/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,EAAE,KAAK,EAAE,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAC/G,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Returns the maximum of two Int32 values.
3
+ * @category BigInt Operations
4
+ * @onchain
5
+ * @param a - First Int32 value
6
+ * @param b - Second Int32 value
7
+ * @returns {Int32} The larger of the two Int32 values.
8
+ */
9
+ export function max(a, b) {
10
+ return a > b ? a : b;
11
+ }
12
+ /**
13
+ * Returns the minimum of two Int32 values.
14
+ * @category BigInt Operations
15
+ * @onchain
16
+ * @param a - First Int32 value
17
+ * @param b - Second Int32 value
18
+ * @returns {Int32} The smaller of the two Int32 values.
19
+ */
20
+ export function min(a, b) {
21
+ return a < b ? a : b;
22
+ }
23
+ /**
24
+ * Checks whether a Int32 value is strictly between two other Int32 values.
25
+ * @category BigInt Operations
26
+ * @onchain
27
+ * @param value - The Int32 value to check
28
+ * @param lower - The lower bound (exclusive)
29
+ * @param upper - The upper bound (exclusive)
30
+ * @returns {boolean} True if value is strictly between lower and upper, otherwise false.
31
+ */
32
+ export function within(value, lower, upper) {
33
+ return value > lower && value < upper;
34
+ }
35
+ /**
36
+ * Returns the absolute value of a Int32.
37
+ * @category BigInt Operations
38
+ * @onchain
39
+ * @param value - The Int32 value
40
+ * @returns {Int32} The absolute value of the Int32.
41
+ */
42
+ export function abs(value) {
43
+ return value < 0n ? -value : value;
44
+ }
45
+ //# sourceMappingURL=math.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.js","sourceRoot":"","sources":["../../../../src/smart-contract/fns/math.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,UAAU,GAAG,CAAC,CAAQ,EAAE,CAAQ;IACpC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,GAAG,CAAC,CAAQ,EAAE,CAAQ;IACpC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,MAAM,CAAC,KAAY,EAAE,KAAY,EAAE,KAAY;IAC7D,OAAO,KAAK,GAAG,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC;AACxC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,GAAG,CAAC,KAAY;IAC9B,OAAO,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AACrC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { hash160 } from './hashes.js';
2
+ /**
3
+ * Get Addr for PubKey.
4
+ * Under the hood this just wraps the hash160 function.
5
+ * @category Hashing
6
+ * @onchain
7
+ * @param {PubKey} pubkey the public key.
8
+ * @returns {Addr} address for the passed public key.
9
+ */
10
+ export function pubKey2Addr(pubkey) {
11
+ return hash160(pubkey);
12
+ }
13
+ //# sourceMappingURL=pubKey2Addr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pubKey2Addr.js","sourceRoot":"","sources":["../../../../src/smart-contract/fns/pubKey2Addr.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { hexToUint8Array } from '../../utils/common.js';
2
+ import { toTxHashPreimage } from '../../utils/proof.js';
3
+ import { Backtrace } from '../builtin-libs/backtrace.js';
4
+ /**
5
+ * @ignore
6
+ * @param self
7
+ * @param backtraceInfo
8
+ * @param genesisOutpoint
9
+ * @returns
10
+ */
11
+ export function backtraceToOutpointImpl(_self, _backtraceInfo, _genesisOutpoint) {
12
+ const prevTxHashPreimageBytes = _self.utxo.txHashPreimage;
13
+ if (!prevTxHashPreimageBytes) {
14
+ throw new Error('utxo should have txHashPreimage for backtrace to genesis outpoint');
15
+ }
16
+ const prevTxHashPreimage = toTxHashPreimage(hexToUint8Array(prevTxHashPreimageBytes));
17
+ Backtrace.verifyFromOutpoint(_backtraceInfo, _genesisOutpoint, _self.ctx.spentScriptHash, prevTxHashPreimage.inputList);
18
+ return true;
19
+ }
20
+ /**
21
+ * @ignore
22
+ * @param self
23
+ * @param backtraceInfo
24
+ * @param genesisScript
25
+ * @returns
26
+ */
27
+ export function backtraceToScriptImpl(_self, _backtraceInfo, _genesisScript) {
28
+ const prevTxHashPreimageBytes = _self.utxo.txHashPreimage;
29
+ if (!prevTxHashPreimageBytes) {
30
+ throw new Error('utxo should have txHashPreimage for backtrace to script');
31
+ }
32
+ const prevTxHashPreimage = toTxHashPreimage(hexToUint8Array(prevTxHashPreimageBytes));
33
+ Backtrace.verifyFromScript(_backtraceInfo, _genesisScript, _self.ctx.spentScriptHash, prevTxHashPreimage.inputList);
34
+ return true;
35
+ }
36
+ //# sourceMappingURL=backtraceToGenensis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backtraceToGenensis.js","sourceRoot":"","sources":["../../../../src/smart-contract/methods/backtraceToGenensis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGxD,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAOzD;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACrC,KAAuB,EACvB,cAA6B,EAC7B,gBAA4B;IAE5B,MAAM,uBAAuB,GAAI,KAAa,CAAC,IAAI,CAAC,cAAc,CAAC;IACnE,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvF,CAAC;IACD,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,eAAe,CAAC,uBAAwB,CAAC,CAAC,CAAC;IACvF,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,gBAAgB,EAAE,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACxH,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAuB,EACvB,cAA6B,EAC7B,cAA0B;IAE1B,MAAM,uBAAuB,GAAI,KAAa,CAAC,IAAI,CAAC,cAAc,CAAC;IACnE,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,eAAe,CAAC,uBAAwB,CAAC,CAAC,CAAC;IACvF,SAAS,CAAC,gBAAgB,CAAC,cAAc,EAAE,cAAc,EAAE,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACpH,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { assert } from '../fns/assert.js';
2
+ import { toByteString, len } from '../fns/byteString.js';
3
+ import { TxUtils } from '../builtin-libs/txUtils.js';
4
+ import { sha256 } from '../fns/hashes.js';
5
+ /**
6
+ * @ignore
7
+ * Builds a change output for a PSBT (Partially Signed Bitcoin Transaction).
8
+ *
9
+ * @param psbt - The contextual PSBT containing change information.
10
+ * @returns The serialized change output as a ByteString. Returns empty ByteString if no change script exists.
11
+ */
12
+ export function buildChangeOutputImpl(psbt) {
13
+ const changeInfo = psbt.getChangeInfo();
14
+ if (changeInfo.satoshis === 0n) {
15
+ return toByteString('');
16
+ }
17
+ return TxUtils.buildOutput(changeInfo.scriptHash, changeInfo.satoshis);
18
+ }
19
+ /**
20
+ * @ignore
21
+ * Builds a state output for an OP_CAT enabled smart contract.
22
+ *
23
+ * @param self - The contract instance
24
+ * @param state - The contract state to serialize
25
+ * @param satoshis - The amount in satoshis for the output
26
+ * @param script - The locking script for the output
27
+ * @returns The built output as ByteString
28
+ * @throws Throws if script is empty
29
+ */
30
+ export function buildStateOutputImpl(self, state, satoshis, scriptHash) {
31
+ const lenScriptHash = len(scriptHash);
32
+ assert(lenScriptHash === 32n, 'invalid ScriptHash');
33
+ const Class = Object.getPrototypeOf(self).constructor;
34
+ return TxUtils.buildDataOutput(scriptHash, satoshis, sha256(Class.serializeState(state)));
35
+ }
36
+ //# sourceMappingURL=buildOutput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildOutput.js","sourceRoot":"","sources":["../../../../src/smart-contract/methods/buildOutput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAGzD,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAGpD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAG1C;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAgB;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;IACxC,IAAI,UAAU,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;QAC/B,OAAO,YAAY,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;AACzE,CAAC;AAGD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAsB,EACtB,KAAQ,EACR,QAAe,EACf,UAAsB;IAEtB,MAAM,aAAa,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,CAAC,aAAa,KAAK,GAAG,EAAE,oBAAoB,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,WAAsC,CAAC;IACjF,OAAO,OAAO,CAAC,eAAe,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAC3F,CAAC"}
@@ -0,0 +1,31 @@
1
+ import * as tools from 'uint8array-tools';
2
+ import { assert, hash256, intToByteString, slice } from '../fns/index.js';
3
+ /**
4
+ * @ignore
5
+ * @param self
6
+ * @param shPreimage
7
+ * @param inputIndex
8
+ * @param prevouts
9
+ * @param prevout
10
+ * @param spentScriptHashes
11
+ * @param spentAmounts
12
+ * @param stateHashes
13
+ * @returns
14
+ */
15
+ export function checkCtxImpl(self, shPreimage, inputIndex, prevouts, prevout, spentScriptHashes, spentAmounts, stateHashes) {
16
+ // check sHPreimage
17
+ self.checkSHPreimage(shPreimage);
18
+ // check inputIndex
19
+ assert(BigInt(inputIndex) === shPreimage.inputIndex, 'inputIndex mismatch');
20
+ // check prevouts
21
+ assert(tools.compare(tools.fromHex(shPreimage.hashPrevouts), tools.fromHex(hash256(prevouts))) === 0, 'hashPrevouts mismatch');
22
+ // check prevout
23
+ assert(prevout.txHash + intToByteString(prevout.outputIndex, 4n) === slice(prevouts, BigInt(inputIndex) * 36n, BigInt(inputIndex + 1) * 36n), `invalid prevout`);
24
+ // check spentScripts
25
+ assert(tools.compare(tools.fromHex(shPreimage.hashSpentScriptHashes), tools.fromHex(hash256(spentScriptHashes))) === 0, 'hashSpentScriptHashes mismatch');
26
+ // check spentAmounts
27
+ assert(tools.compare(tools.fromHex(shPreimage.hashSpentAmounts), tools.fromHex(hash256(spentAmounts))) === 0, 'hashSpentAmounts mismatch');
28
+ assert(tools.compare(tools.fromHex(shPreimage.hashSpentDataHashes), tools.fromHex(hash256(stateHashes))) === 0, 'hashSpentDataHashes mismatch');
29
+ return true;
30
+ }
31
+ //# sourceMappingURL=checkCtx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkCtx.js","sourceRoot":"","sources":["../../../../src/smart-contract/methods/checkCtx.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAG1E;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAsB,EACtB,UAAsB,EACtB,UAAsB,EACtB,QAAkB,EAClB,OAAiB,EACjB,iBAAoC,EACpC,YAA0B,EAC1B,WAA4B;IAE5B,mBAAmB;IACnB,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;IAEjC,mBAAmB;IACnB,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,UAAU,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;IAC5E,iBAAiB;IACjB,MAAM,CACJ,KAAK,CAAC,OAAO,CACX,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,EACtC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CACjC,KAAK,CAAC,EACP,uBAAuB,CACxB,CAAC;IAEF,gBAAgB;IAChB,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,GAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,GAAC,GAAG,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAE7J,qBAAqB;IACrB,MAAM,CACJ,KAAK,CAAC,OAAO,CACX,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAC/C,KAAK,CAAC,OAAO,CACX,OAAO,CAAC,iBAAiB,CAAC,CAC3B,CACF,KAAK,CAAC,EACP,gCAAgC,CACjC,CAAC;IAEF,qBAAqB;IACrB,MAAM,CACJ,KAAK,CAAC,OAAO,CACX,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAC1C,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CACrC,KAAK,CAAC,EACP,2BAA2B,CAC5B,CAAC;IAGF,MAAM,CACJ,KAAK,CAAC,OAAO,CACX,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAC7C,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CACpC,KAAK,CAAC,EACP,8BAA8B,CAC/B,CAAC;IAEF,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { assert } from '../fns/assert.js';
2
+ import { sha256 } from '../fns/hashes.js';
3
+ /**
4
+ * Verifies that the hash of the input data matches the expected state hash.
5
+ * @param stateHash - The expected hash value of the state
6
+ * @param data - The input data to be hashed and verified
7
+ * @throws Throws an error if the hash of the data does not match the stateHash
8
+ */
9
+ export function checkInputStateImpl(stateHash, data) {
10
+ assert(sha256(data) == stateHash, 'stateHash mismatch');
11
+ }
12
+ //# sourceMappingURL=checkInputState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkInputState.js","sourceRoot":"","sources":["../../../../src/smart-contract/methods/checkInputState.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAG1C;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,SAAqB,EACrB,IAAgB;IAEhB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE,oBAAoB,CAAC,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { assert } from '../fns/assert.js';
2
+ import { hash256 } from '../fns/hashes.js';
3
+ /**
4
+ * Verifies that the hash of the input data matches the expected state hash.
5
+ * @param stateHash - The expected hash value of the state
6
+ * @param data - The input data to be hashed and verified
7
+ * @throws Throws an error if the hash of the data does not match the stateHash
8
+ */
9
+ export function checkInputStateHashesImpl(hashSpentDatas, spentDataHashes) {
10
+ assert(hash256(spentDataHashes) == hashSpentDatas, 'spentDataHashes mismatch');
11
+ }
12
+ //# sourceMappingURL=checkInputStateHashes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkInputStateHashes.js","sourceRoot":"","sources":["../../../../src/smart-contract/methods/checkInputStateHashes.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAM3C;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,cAA0B,EAC1B,eAAgC;IAEhC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,cAAc,EAAE,0BAA0B,CAAC,CAAC;AACjF,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { ContextUtils } from '../builtin-libs/contextUtils.js';
2
+ import { toByteString } from '../fns/byteString.js';
3
+ /**
4
+ * @ignore
5
+ * @param self
6
+ * @param shPreimage
7
+ * @returns
8
+ */
9
+ export function checkSHPreimageImpl(self, shPreimage) {
10
+ const sig = ContextUtils.checkSHPreimage(shPreimage, toByteString('01'));
11
+ return self.checkSig(sig, ContextUtils.pubKey);
12
+ }
13
+ //# sourceMappingURL=checkSHPreimage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkSHPreimage.js","sourceRoot":"","sources":["../../../../src/smart-contract/methods/checkSHPreimage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAsB,EAAE,UAAsB;IAChF,MAAM,GAAG,GAAQ,YAAY,CAAC,eAAe,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAA;IAC7E,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,73 @@
1
+ import { crypto, PublicKey, Interpreter } from '@opcat-labs/opcat';
2
+ import { hash256, toByteString } from '../fns/index.js';
3
+ import { encodeSHPreimage } from '../../utils/preimage.js';
4
+ /**
5
+ * @ignore
6
+ * @param signature
7
+ * @returns true signature valid.
8
+ */
9
+ function checkSignatureEncoding(signature) {
10
+ const buf = Buffer.from(toByteString(signature), 'hex');
11
+ let sig;
12
+ // Empty signature. Not strictly DER encoded, but allowed to provide a
13
+ // compact way to provide an invalid signature for use with CHECK(MULTI)SIG
14
+ if (buf.length === 0) {
15
+ return true;
16
+ }
17
+ if (!crypto.Signature.isTxDER(buf)) {
18
+ return false;
19
+ }
20
+ else if ((Interpreter.DEFAULT_FLAGS & Interpreter.SCRIPT_VERIFY_LOW_S) !== 0) {
21
+ sig = crypto.Signature.fromTxFormat(buf);
22
+ if (!sig.hasLowS()) {
23
+ return false;
24
+ }
25
+ }
26
+ else if ((Interpreter.DEFAULT_FLAGS & Interpreter.SCRIPT_VERIFY_STRICTENC) !== 0) {
27
+ sig = crypto.Signature.fromTxFormat(buf);
28
+ if (!sig.hasDefinedHashtype()) {
29
+ return false;
30
+ }
31
+ }
32
+ return true;
33
+ }
34
+ /**
35
+ * @ignore
36
+ * @param publickey
37
+ * @returns true publickey valid.
38
+ */
39
+ function checkPubkeyEncoding(publickey) {
40
+ if ((Interpreter.DEFAULT_FLAGS & Interpreter.SCRIPT_VERIFY_STRICTENC) !== 0 && !PublicKey.isValid(toByteString(publickey))) {
41
+ return false;
42
+ }
43
+ return true;
44
+ }
45
+ /**
46
+ * @ignore
47
+ * @param self
48
+ * @param signature
49
+ * @param publickey
50
+ * @returns
51
+ */
52
+ export function checkSigImpl(self, signature, publickey) {
53
+ if (!checkSignatureEncoding(signature) || !checkPubkeyEncoding(publickey)) {
54
+ return false;
55
+ }
56
+ let fSuccess = false;
57
+ const bufSig = Buffer.from(signature, 'hex');
58
+ const bufPubkey = Buffer.from(publickey, 'hex');
59
+ try {
60
+ const sig = crypto.Signature.fromTxFormat(bufSig);
61
+ const pubkey = PublicKey.fromBuffer(bufPubkey, false);
62
+ const shPreimage = self.ctx;
63
+ const byteString = encodeSHPreimage(shPreimage);
64
+ const hashbuf = Buffer.from(hash256(byteString), 'hex').reverse();
65
+ fSuccess = crypto.ECDSA.verify(hashbuf, sig, pubkey, 'little');
66
+ }
67
+ catch (_err) {
68
+ // invalid sig or pubkey
69
+ fSuccess = false;
70
+ }
71
+ return fSuccess;
72
+ }
73
+ //# sourceMappingURL=checkSig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkSig.js","sourceRoot":"","sources":["../../../../src/smart-contract/methods/checkSig.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,112 @@
1
+ import { assert, intToByteString, toByteString } from './fns/index.js';
2
+ import * as tools from 'uint8array-tools';
3
+ import { Script } from './types/script.js';
4
+ import { uint8ArrayToHex } from '../utils/common.js';
5
+ import { TX_IO_INDEX_VAL_MIN, TX_IO_INDEX_VAL_MAX } from './consts.js';
6
+ import { BufferReader } from '../psbt/bufferutils.js';
7
+ /**
8
+ * @ignore
9
+ * int to little-endian signed magnitude
10
+ */
11
+ export function int2hex(n) {
12
+ if (n === BigInt(0)) {
13
+ return '00';
14
+ }
15
+ else if (n === BigInt(-1)) {
16
+ return '4f';
17
+ }
18
+ else if (n > BigInt(0) && n <= BigInt(16)) {
19
+ n += BigInt(80);
20
+ return n.toString(16);
21
+ }
22
+ return Script.fromASM(intToByteString(n)).toHex();
23
+ }
24
+ /**
25
+ * @ignore
26
+ * @param b
27
+ * @returns
28
+ */
29
+ export function bool2hex(b) {
30
+ if (b) {
31
+ return '51';
32
+ }
33
+ return '00';
34
+ }
35
+ /**
36
+ * @ignore
37
+ * @param b
38
+ * @returns
39
+ */
40
+ export function bytes2hex(b) {
41
+ if (b) {
42
+ if (b.length / 2 > 1) {
43
+ return Script.fromASM(b).toHex();
44
+ }
45
+ const intValue = parseInt(b, 16);
46
+ if (intValue >= 1 && intValue <= 16) {
47
+ return BigInt(intValue + 80).toString(16);
48
+ }
49
+ return Script.fromASM(b).toHex();
50
+ }
51
+ return '00';
52
+ }
53
+ /**
54
+ * @ignore
55
+ * @param x
56
+ * @returns
57
+ */
58
+ export function toScriptHex(x) {
59
+ if (typeof x === 'number' || typeof x === 'bigint') {
60
+ return int2hex(x);
61
+ }
62
+ else if (typeof x === 'boolean') {
63
+ return bool2hex(x);
64
+ }
65
+ else if (typeof x === 'string') {
66
+ return bytes2hex(x);
67
+ }
68
+ throw new Error(`unsupport PrimitiveTypes: ${x}`);
69
+ }
70
+ /**
71
+ * @ignore
72
+ * @param indexVal
73
+ * @returns
74
+ */
75
+ export function indexValueToBytes(indexVal) {
76
+ assert(indexVal >= TX_IO_INDEX_VAL_MIN && indexVal <= TX_IO_INDEX_VAL_MAX);
77
+ let indexBytes = intToByteString(indexVal);
78
+ if (indexBytes == toByteString('')) {
79
+ indexBytes = toByteString('00');
80
+ }
81
+ return indexBytes + toByteString('000000');
82
+ }
83
+ /**
84
+ * @ignore
85
+ * @param outpoint
86
+ * @returns
87
+ */
88
+ export function outpointToBytes(outpoint) {
89
+ return outpoint.txHash + outpoint.outputIndex;
90
+ }
91
+ /**
92
+ * @ignore
93
+ * @param outputsByte
94
+ * @returns
95
+ */
96
+ export function deserializeOutputs(outputsByte) {
97
+ const reader = new BufferReader(tools.fromHex(outputsByte));
98
+ const outputs = [];
99
+ try {
100
+ while (reader.offset < reader.buffer.length) {
101
+ const value = reader.readInt64();
102
+ const scriptHash = uint8ArrayToHex(reader.readSlice(32));
103
+ const dataHash = uint8ArrayToHex(reader.readSlice(32));
104
+ outputs.push({ value, scriptHash, dataHash });
105
+ }
106
+ }
107
+ catch (_error) {
108
+ throw new Error(`Invalid format of serialized outputs: ${outputsByte}`);
109
+ }
110
+ return outputs;
111
+ }
112
+ //# sourceMappingURL=serializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../../src/smart-contract/serializer.ts"],"names":[],"mappings":"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"}