@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.
- package/assets/.templates/smart-contract/builtin-libs/TxHashPreimageUtils.scrypt.map +1 -0
- package/assets/.templates/smart-contract/builtin-libs/TxHashPreimageUtils.scrypt.tpl +18 -0
- package/assets/.templates/smart-contract/builtin-libs/TxHashPreimageUtils.transformer.json +7 -0
- package/assets/.templates/smart-contract/builtin-libs/backtrace.scrypt.map +1 -0
- package/assets/.templates/smart-contract/builtin-libs/backtrace.scrypt.tpl +36 -0
- package/assets/.templates/smart-contract/builtin-libs/backtrace.transformer.json +7 -0
- package/assets/.templates/smart-contract/builtin-libs/byteStringReader.scrypt.map +1 -0
- package/assets/.templates/smart-contract/builtin-libs/byteStringReader.scrypt.tpl +64 -0
- package/assets/.templates/smart-contract/builtin-libs/byteStringReader.transformer.json +7 -0
- package/assets/.templates/smart-contract/builtin-libs/byteStringWriter.scrypt.map +1 -0
- package/assets/.templates/smart-contract/builtin-libs/byteStringWriter.scrypt.tpl +48 -0
- package/assets/.templates/smart-contract/builtin-libs/byteStringWriter.transformer.json +7 -0
- package/assets/.templates/smart-contract/builtin-libs/contextUtils.scrypt.map +1 -0
- package/assets/.templates/smart-contract/builtin-libs/contextUtils.scrypt.tpl +101 -0
- package/assets/.templates/smart-contract/builtin-libs/contextUtils.transformer.json +7 -0
- package/assets/.templates/smart-contract/builtin-libs/p2pk.scrypt.map +1 -0
- package/assets/.templates/smart-contract/builtin-libs/p2pk.scrypt.tpl +7 -0
- package/assets/.templates/smart-contract/builtin-libs/p2pk.transformer.json +7 -0
- package/assets/.templates/smart-contract/builtin-libs/p2pkh.scrypt.map +1 -0
- package/assets/.templates/smart-contract/builtin-libs/p2pkh.scrypt.tpl +8 -0
- package/assets/.templates/smart-contract/builtin-libs/p2pkh.transformer.json +7 -0
- package/assets/.templates/smart-contract/builtin-libs/stateLib.scrypt.map +1 -0
- package/assets/.templates/smart-contract/builtin-libs/stateLib.scrypt.tpl +3 -0
- package/assets/.templates/smart-contract/builtin-libs/stateLib.transformer.json +7 -0
- package/assets/.templates/smart-contract/builtin-libs/stateUtils.scrypt.map +1 -0
- package/assets/.templates/smart-contract/builtin-libs/stateUtils.scrypt.tpl +7 -0
- package/assets/.templates/smart-contract/builtin-libs/stateUtils.transformer.json +7 -0
- package/assets/.templates/smart-contract/builtin-libs/stdUtils.scrypt.map +1 -0
- package/assets/.templates/smart-contract/builtin-libs/stdUtils.scrypt.tpl +89 -0
- package/assets/.templates/smart-contract/builtin-libs/stdUtils.transformer.json +7 -0
- package/assets/.templates/smart-contract/builtin-libs/txUtils.scrypt.map +1 -0
- package/assets/.templates/smart-contract/builtin-libs/txUtils.scrypt.tpl +42 -0
- package/assets/.templates/smart-contract/builtin-libs/txUtils.transformer.json +7 -0
- package/assets/.templates/smart-contract/types/structs.scrypt.map +1 -0
- package/assets/.templates/smart-contract/types/structs.scrypt.tpl +48 -0
- package/assets/.templates/smart-contract/types/structs.transformer.json +7 -0
- package/assets/smart-contract/builtin-libs/TxHashPreimageUtils.scrypt +20 -0
- package/assets/smart-contract/builtin-libs/backtrace.scrypt +38 -0
- package/assets/smart-contract/builtin-libs/byteStringReader.scrypt +66 -0
- package/assets/smart-contract/builtin-libs/byteStringWriter.scrypt +50 -0
- package/assets/smart-contract/builtin-libs/contextUtils.scrypt +103 -0
- package/assets/smart-contract/builtin-libs/p2pk.scrypt +9 -0
- package/assets/smart-contract/builtin-libs/p2pkh.scrypt +10 -0
- package/assets/smart-contract/builtin-libs/stateLib.scrypt +5 -0
- package/assets/smart-contract/builtin-libs/stateUtils.scrypt +9 -0
- package/assets/smart-contract/builtin-libs/stdUtils.scrypt +91 -0
- package/assets/smart-contract/builtin-libs/txUtils.scrypt +44 -0
- package/assets/smart-contract/types/structs.scrypt +50 -0
- package/dist/cjs/features/call.cjs +38 -0
- package/dist/cjs/features/call.js.map +1 -0
- package/dist/cjs/features/deploy.cjs +33 -0
- package/dist/cjs/features/deploy.js.map +1 -0
- package/dist/cjs/features/index.cjs +8 -0
- package/dist/cjs/features/index.js.map +1 -0
- package/dist/cjs/globalTypes.cjs +3 -0
- package/dist/cjs/globalTypes.js.map +1 -0
- package/dist/cjs/index.cjs +55 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/networks.cjs +69 -0
- package/dist/cjs/networks.js.map +1 -0
- package/dist/cjs/providers/chainProvider.cjs +3 -0
- package/dist/cjs/providers/chainProvider.js.map +1 -0
- package/dist/cjs/providers/dummyProvider.cjs +87 -0
- package/dist/cjs/providers/dummyProvider.js.map +1 -0
- package/dist/cjs/providers/index.cjs +13 -0
- package/dist/cjs/providers/index.js.map +1 -0
- package/dist/cjs/providers/mempoolProvider.cjs +207 -0
- package/dist/cjs/providers/mempoolProvider.js.map +1 -0
- package/dist/cjs/providers/rpcProvider.cjs +296 -0
- package/dist/cjs/providers/rpcProvider.js.map +1 -0
- package/dist/cjs/providers/utxoProvider.cjs +18 -0
- package/dist/cjs/providers/utxoProvider.js.map +1 -0
- package/dist/cjs/psbt/bip66.cjs +182 -0
- package/dist/cjs/psbt/bip66.js.map +1 -0
- package/dist/cjs/psbt/bufferutils.cjs +186 -0
- package/dist/cjs/psbt/bufferutils.js.map +1 -0
- package/dist/cjs/psbt/contextProvider.cjs +111 -0
- package/dist/cjs/psbt/contextProvider.js.map +1 -0
- package/dist/cjs/psbt/extPsbt.cjs +589 -0
- package/dist/cjs/psbt/extPsbt.js.map +1 -0
- package/dist/cjs/psbt/psbt.cjs +973 -0
- package/dist/cjs/psbt/psbt.js.map +1 -0
- package/dist/cjs/psbt/psbtutils.cjs +140 -0
- package/dist/cjs/psbt/psbtutils.js.map +1 -0
- package/dist/cjs/psbt/signatureutils.cjs +230 -0
- package/dist/cjs/psbt/signatureutils.js.map +1 -0
- package/dist/cjs/psbt/types.cjs +3 -0
- package/dist/cjs/psbt/types.js.map +1 -0
- package/dist/cjs/signer.cjs +3 -0
- package/dist/cjs/signer.js.map +1 -0
- package/dist/cjs/signers/defaultSigner.cjs +68 -0
- package/dist/cjs/signers/defaultSigner.js.map +1 -0
- package/dist/cjs/signers/index.cjs +8 -0
- package/dist/cjs/signers/index.js.map +1 -0
- package/dist/cjs/signers/unisatSigner.cjs +38 -0
- package/dist/cjs/signers/unisatSigner.js.map +1 -0
- package/dist/cjs/smart-contract/abi.cjs +380 -0
- package/dist/cjs/smart-contract/abi.js.map +1 -0
- package/dist/cjs/smart-contract/abiutils.cjs +183 -0
- package/dist/cjs/smart-contract/abiutils.js.map +1 -0
- package/dist/cjs/smart-contract/abstractContract.cjs +25 -0
- package/dist/cjs/smart-contract/abstractContract.js.map +1 -0
- package/dist/cjs/smart-contract/builtin-libs/backtrace.cjs +102 -0
- package/dist/cjs/smart-contract/builtin-libs/backtrace.js.map +1 -0
- package/dist/cjs/smart-contract/builtin-libs/byteStringReader.cjs +138 -0
- package/dist/cjs/smart-contract/builtin-libs/byteStringReader.js.map +1 -0
- package/dist/cjs/smart-contract/builtin-libs/byteStringWriter.cjs +109 -0
- package/dist/cjs/smart-contract/builtin-libs/byteStringWriter.js.map +1 -0
- package/dist/cjs/smart-contract/builtin-libs/contextUtils.cjs +304 -0
- package/dist/cjs/smart-contract/builtin-libs/contextUtils.js.map +1 -0
- package/dist/cjs/smart-contract/builtin-libs/index.cjs +18 -0
- package/dist/cjs/smart-contract/builtin-libs/index.js.map +1 -0
- package/dist/cjs/smart-contract/builtin-libs/p2pk.cjs +74 -0
- package/dist/cjs/smart-contract/builtin-libs/p2pk.js.map +1 -0
- package/dist/cjs/smart-contract/builtin-libs/p2pkh.cjs +80 -0
- package/dist/cjs/smart-contract/builtin-libs/p2pkh.js.map +1 -0
- package/dist/cjs/smart-contract/builtin-libs/stateLib.cjs +65 -0
- package/dist/cjs/smart-contract/builtin-libs/stateLib.js.map +1 -0
- package/dist/cjs/smart-contract/builtin-libs/stateUtils.cjs +42 -0
- package/dist/cjs/smart-contract/builtin-libs/stateUtils.js.map +1 -0
- package/dist/cjs/smart-contract/builtin-libs/stdUtils.cjs +192 -0
- package/dist/cjs/smart-contract/builtin-libs/stdUtils.js.map +1 -0
- package/dist/cjs/smart-contract/builtin-libs/txHashPreimageUtils.cjs +56 -0
- package/dist/cjs/smart-contract/builtin-libs/txHashPreimageUtils.js.map +1 -0
- package/dist/cjs/smart-contract/builtin-libs/txUtils.cjs +183 -0
- package/dist/cjs/smart-contract/builtin-libs/txUtils.js.map +1 -0
- package/dist/cjs/smart-contract/consts.cjs +100 -0
- package/dist/cjs/smart-contract/consts.js.map +1 -0
- package/dist/cjs/smart-contract/decorators.cjs +83 -0
- package/dist/cjs/smart-contract/decorators.js.map +1 -0
- package/dist/cjs/smart-contract/fns/assert.cjs +17 -0
- package/dist/cjs/smart-contract/fns/assert.js.map +1 -0
- package/dist/cjs/smart-contract/fns/bitwise.cjs +141 -0
- package/dist/cjs/smart-contract/fns/bitwise.js.map +1 -0
- package/dist/cjs/smart-contract/fns/byteString.cjs +106 -0
- package/dist/cjs/smart-contract/fns/byteString.js.map +1 -0
- package/dist/cjs/smart-contract/fns/equals.cjs +66 -0
- package/dist/cjs/smart-contract/fns/equals.js.map +1 -0
- package/dist/cjs/smart-contract/fns/fill.cjs +19 -0
- package/dist/cjs/smart-contract/fns/fill.js.map +1 -0
- package/dist/cjs/smart-contract/fns/hashes.cjs +81 -0
- package/dist/cjs/smart-contract/fns/hashes.js.map +1 -0
- package/dist/cjs/smart-contract/fns/index.cjs +37 -0
- package/dist/cjs/smart-contract/fns/index.js.map +1 -0
- package/dist/cjs/smart-contract/fns/math.cjs +52 -0
- package/dist/cjs/smart-contract/fns/math.js.map +1 -0
- package/dist/cjs/smart-contract/fns/pubKey2Addr.cjs +17 -0
- package/dist/cjs/smart-contract/fns/pubKey2Addr.js.map +1 -0
- package/dist/cjs/smart-contract/methods/backtraceToGenensis.cjs +41 -0
- package/dist/cjs/smart-contract/methods/backtraceToGenensis.js.map +1 -0
- package/dist/cjs/smart-contract/methods/buildOutput.cjs +41 -0
- package/dist/cjs/smart-contract/methods/buildOutput.js.map +1 -0
- package/dist/cjs/smart-contract/methods/checkCtx.cjs +58 -0
- package/dist/cjs/smart-contract/methods/checkCtx.js.map +1 -0
- package/dist/cjs/smart-contract/methods/checkInputState.cjs +16 -0
- package/dist/cjs/smart-contract/methods/checkInputState.js.map +1 -0
- package/dist/cjs/smart-contract/methods/checkInputStateHashes.cjs +16 -0
- package/dist/cjs/smart-contract/methods/checkInputStateHashes.js.map +1 -0
- package/dist/cjs/smart-contract/methods/checkSHPreimage.cjs +17 -0
- package/dist/cjs/smart-contract/methods/checkSHPreimage.js.map +1 -0
- package/dist/cjs/smart-contract/methods/checkSig.cjs +77 -0
- package/dist/cjs/smart-contract/methods/checkSig.js.map +1 -0
- package/dist/cjs/smart-contract/serializer.cjs +145 -0
- package/dist/cjs/smart-contract/serializer.js.map +1 -0
- package/dist/cjs/smart-contract/smartContract.cjs +568 -0
- package/dist/cjs/smart-contract/smartContract.js.map +1 -0
- package/dist/cjs/smart-contract/smartContractLib.cjs +46 -0
- package/dist/cjs/smart-contract/smartContractLib.js.map +1 -0
- package/dist/cjs/smart-contract/stateSerializer.cjs +134 -0
- package/dist/cjs/smart-contract/stateSerializer.js.map +1 -0
- package/dist/cjs/smart-contract/types/abi.cjs +69 -0
- package/dist/cjs/smart-contract/types/abi.js.map +1 -0
- package/dist/cjs/smart-contract/types/artifact.cjs +16 -0
- package/dist/cjs/smart-contract/types/artifact.js.map +1 -0
- package/dist/cjs/smart-contract/types/bn.cjs +117 -0
- package/dist/cjs/smart-contract/types/bn.js.map +1 -0
- package/dist/cjs/smart-contract/types/context.cjs +3 -0
- package/dist/cjs/smart-contract/types/context.js.map +1 -0
- package/dist/cjs/smart-contract/types/index.cjs +16 -0
- package/dist/cjs/smart-contract/types/index.js.map +1 -0
- package/dist/cjs/smart-contract/types/opCode.cjs +754 -0
- package/dist/cjs/smart-contract/types/opCode.js.map +1 -0
- package/dist/cjs/smart-contract/types/primitives.cjs +108 -0
- package/dist/cjs/smart-contract/types/primitives.js.map +1 -0
- package/dist/cjs/smart-contract/types/script.cjs +43 -0
- package/dist/cjs/smart-contract/types/script.js.map +1 -0
- package/dist/cjs/smart-contract/types/structs.cjs +3 -0
- package/dist/cjs/smart-contract/types/structs.js.map +1 -0
- package/dist/cjs/smart-contract/types/utils.cjs +21 -0
- package/dist/cjs/smart-contract/types/utils.js.map +1 -0
- package/dist/cjs/utils/bvm.cjs +30 -0
- package/dist/cjs/utils/bvm.js.map +1 -0
- package/dist/cjs/utils/checkIntegrity.cjs +49 -0
- package/dist/cjs/utils/checkIntegrity.js.map +1 -0
- package/dist/cjs/utils/common.cjs +228 -0
- package/dist/cjs/utils/common.js.map +1 -0
- package/dist/cjs/utils/constants.cjs +5 -0
- package/dist/cjs/utils/constants.js.map +1 -0
- package/dist/cjs/utils/index.cjs +45 -0
- package/dist/cjs/utils/index.js.map +1 -0
- package/dist/cjs/utils/preimage.cjs +93 -0
- package/dist/cjs/utils/preimage.js.map +1 -0
- package/dist/cjs/utils/proof.cjs +110 -0
- package/dist/cjs/utils/proof.js.map +1 -0
- package/dist/cjs/utils/script_number.cjs +107 -0
- package/dist/cjs/utils/script_number.js.map +1 -0
- package/dist/esm/features/call.js +34 -0
- package/dist/esm/features/call.js.map +1 -0
- package/dist/esm/features/deploy.js +29 -0
- package/dist/esm/features/deploy.js.map +1 -0
- package/dist/esm/features/index.js +3 -0
- package/dist/esm/features/index.js.map +1 -0
- package/dist/esm/globalTypes.js +2 -0
- package/dist/esm/globalTypes.js.map +1 -0
- package/dist/esm/index.js +23 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/networks.js +41 -0
- package/dist/esm/networks.js.map +1 -0
- package/dist/esm/providers/chainProvider.js +2 -0
- package/dist/esm/providers/chainProvider.js.map +1 -0
- package/dist/esm/providers/dummyProvider.js +60 -0
- package/dist/esm/providers/dummyProvider.js.map +1 -0
- package/dist/esm/providers/index.js +5 -0
- package/dist/esm/providers/index.js.map +1 -0
- package/dist/esm/providers/mempoolProvider.js +200 -0
- package/dist/esm/providers/mempoolProvider.js.map +1 -0
- package/dist/esm/providers/rpcProvider.js +266 -0
- package/dist/esm/providers/rpcProvider.js.map +1 -0
- package/dist/esm/providers/utxoProvider.js +13 -0
- package/dist/esm/providers/utxoProvider.js.map +1 -0
- package/dist/esm/psbt/bip66.js +175 -0
- package/dist/esm/psbt/bip66.js.map +1 -0
- package/dist/esm/psbt/bufferutils.js +156 -0
- package/dist/esm/psbt/bufferutils.js.map +1 -0
- package/dist/esm/psbt/contextProvider.js +84 -0
- package/dist/esm/psbt/contextProvider.js.map +1 -0
- package/dist/esm/psbt/extPsbt.js +562 -0
- package/dist/esm/psbt/extPsbt.js.map +1 -0
- package/dist/esm/psbt/psbt.js +945 -0
- package/dist/esm/psbt/psbt.js.map +1 -0
- package/dist/esm/psbt/psbtutils.js +110 -0
- package/dist/esm/psbt/psbtutils.js.map +1 -0
- package/dist/esm/psbt/signatureutils.js +199 -0
- package/dist/esm/psbt/signatureutils.js.map +1 -0
- package/dist/esm/psbt/types.js +2 -0
- package/dist/esm/psbt/types.js.map +1 -0
- package/dist/esm/signer.js +2 -0
- package/dist/esm/signer.js.map +1 -0
- package/dist/esm/signers/defaultSigner.js +63 -0
- package/dist/esm/signers/defaultSigner.js.map +1 -0
- package/dist/esm/signers/index.js +3 -0
- package/dist/esm/signers/index.js.map +1 -0
- package/dist/esm/signers/unisatSigner.js +34 -0
- package/dist/esm/signers/unisatSigner.js.map +1 -0
- package/dist/esm/smart-contract/abi.js +373 -0
- package/dist/esm/smart-contract/abi.js.map +1 -0
- package/dist/esm/smart-contract/abiutils.js +171 -0
- package/dist/esm/smart-contract/abiutils.js.map +1 -0
- package/dist/esm/smart-contract/abstractContract.js +21 -0
- package/dist/esm/smart-contract/abstractContract.js.map +1 -0
- package/dist/esm/smart-contract/builtin-libs/backtrace.js +98 -0
- package/dist/esm/smart-contract/builtin-libs/backtrace.js.map +1 -0
- package/dist/esm/smart-contract/builtin-libs/byteStringReader.js +134 -0
- package/dist/esm/smart-contract/builtin-libs/byteStringReader.js.map +1 -0
- package/dist/esm/smart-contract/builtin-libs/byteStringWriter.js +105 -0
- package/dist/esm/smart-contract/builtin-libs/byteStringWriter.js.map +1 -0
- package/dist/esm/smart-contract/builtin-libs/contextUtils.js +300 -0
- package/dist/esm/smart-contract/builtin-libs/contextUtils.js.map +1 -0
- package/dist/esm/smart-contract/builtin-libs/index.js +8 -0
- package/dist/esm/smart-contract/builtin-libs/index.js.map +1 -0
- package/dist/esm/smart-contract/builtin-libs/p2pk.js +70 -0
- package/dist/esm/smart-contract/builtin-libs/p2pk.js.map +1 -0
- package/dist/esm/smart-contract/builtin-libs/p2pkh.js +76 -0
- package/dist/esm/smart-contract/builtin-libs/p2pkh.js.map +1 -0
- package/dist/esm/smart-contract/builtin-libs/stateLib.js +61 -0
- package/dist/esm/smart-contract/builtin-libs/stateLib.js.map +1 -0
- package/dist/esm/smart-contract/builtin-libs/stateUtils.js +38 -0
- package/dist/esm/smart-contract/builtin-libs/stateUtils.js.map +1 -0
- package/dist/esm/smart-contract/builtin-libs/stdUtils.js +188 -0
- package/dist/esm/smart-contract/builtin-libs/stdUtils.js.map +1 -0
- package/dist/esm/smart-contract/builtin-libs/txHashPreimageUtils.js +52 -0
- package/dist/esm/smart-contract/builtin-libs/txHashPreimageUtils.js.map +1 -0
- package/dist/esm/smart-contract/builtin-libs/txUtils.js +179 -0
- package/dist/esm/smart-contract/builtin-libs/txUtils.js.map +1 -0
- package/dist/esm/smart-contract/consts.js +97 -0
- package/dist/esm/smart-contract/consts.js.map +1 -0
- package/dist/esm/smart-contract/decorators.js +78 -0
- package/dist/esm/smart-contract/decorators.js.map +1 -0
- package/dist/esm/smart-contract/fns/assert.js +13 -0
- package/dist/esm/smart-contract/fns/assert.js.map +1 -0
- package/dist/esm/smart-contract/fns/bitwise.js +109 -0
- package/dist/esm/smart-contract/fns/bitwise.js.map +1 -0
- package/dist/esm/smart-contract/fns/byteString.js +97 -0
- package/dist/esm/smart-contract/fns/byteString.js.map +1 -0
- package/dist/esm/smart-contract/fns/equals.js +62 -0
- package/dist/esm/smart-contract/fns/equals.js.map +1 -0
- package/dist/esm/smart-contract/fns/fill.js +15 -0
- package/dist/esm/smart-contract/fns/fill.js.map +1 -0
- package/dist/esm/smart-contract/fns/hashes.js +73 -0
- package/dist/esm/smart-contract/fns/hashes.js.map +1 -0
- package/dist/esm/smart-contract/fns/index.js +9 -0
- package/dist/esm/smart-contract/fns/index.js.map +1 -0
- package/dist/esm/smart-contract/fns/math.js +45 -0
- package/dist/esm/smart-contract/fns/math.js.map +1 -0
- package/dist/esm/smart-contract/fns/pubKey2Addr.js +13 -0
- package/dist/esm/smart-contract/fns/pubKey2Addr.js.map +1 -0
- package/dist/esm/smart-contract/methods/backtraceToGenensis.js +36 -0
- package/dist/esm/smart-contract/methods/backtraceToGenensis.js.map +1 -0
- package/dist/esm/smart-contract/methods/buildOutput.js +36 -0
- package/dist/esm/smart-contract/methods/buildOutput.js.map +1 -0
- package/dist/esm/smart-contract/methods/checkCtx.js +31 -0
- package/dist/esm/smart-contract/methods/checkCtx.js.map +1 -0
- package/dist/esm/smart-contract/methods/checkInputState.js +12 -0
- package/dist/esm/smart-contract/methods/checkInputState.js.map +1 -0
- package/dist/esm/smart-contract/methods/checkInputStateHashes.js +12 -0
- package/dist/esm/smart-contract/methods/checkInputStateHashes.js.map +1 -0
- package/dist/esm/smart-contract/methods/checkSHPreimage.js +13 -0
- package/dist/esm/smart-contract/methods/checkSHPreimage.js.map +1 -0
- package/dist/esm/smart-contract/methods/checkSig.js +73 -0
- package/dist/esm/smart-contract/methods/checkSig.js.map +1 -0
- package/dist/esm/smart-contract/serializer.js +112 -0
- package/dist/esm/smart-contract/serializer.js.map +1 -0
- package/dist/esm/smart-contract/smartContract.js +564 -0
- package/dist/esm/smart-contract/smartContract.js.map +1 -0
- package/dist/esm/smart-contract/smartContractLib.js +42 -0
- package/dist/esm/smart-contract/smartContractLib.js.map +1 -0
- package/dist/esm/smart-contract/stateSerializer.js +129 -0
- package/dist/esm/smart-contract/stateSerializer.js.map +1 -0
- package/dist/esm/smart-contract/types/abi.js +63 -0
- package/dist/esm/smart-contract/types/abi.js.map +1 -0
- package/dist/esm/smart-contract/types/artifact.js +13 -0
- package/dist/esm/smart-contract/types/artifact.js.map +1 -0
- package/dist/esm/smart-contract/types/bn.js +89 -0
- package/dist/esm/smart-contract/types/bn.js.map +1 -0
- package/dist/esm/smart-contract/types/context.js +2 -0
- package/dist/esm/smart-contract/types/context.js.map +1 -0
- package/dist/esm/smart-contract/types/index.js +3 -0
- package/dist/esm/smart-contract/types/index.js.map +1 -0
- package/dist/esm/smart-contract/types/opCode.js +750 -0
- package/dist/esm/smart-contract/types/opCode.js.map +1 -0
- package/dist/esm/smart-contract/types/primitives.js +95 -0
- package/dist/esm/smart-contract/types/primitives.js.map +1 -0
- package/dist/esm/smart-contract/types/script.js +16 -0
- package/dist/esm/smart-contract/types/script.js.map +1 -0
- package/dist/esm/smart-contract/types/structs.js +2 -0
- package/dist/esm/smart-contract/types/structs.js.map +1 -0
- package/dist/esm/smart-contract/types/utils.js +17 -0
- package/dist/esm/smart-contract/types/utils.js.map +1 -0
- package/dist/esm/utils/bvm.js +26 -0
- package/dist/esm/utils/bvm.js.map +1 -0
- package/dist/esm/utils/checkIntegrity.js +41 -0
- package/dist/esm/utils/checkIntegrity.js.map +1 -0
- package/dist/esm/utils/common.js +188 -0
- package/dist/esm/utils/common.js.map +1 -0
- package/dist/esm/utils/constants.js +2 -0
- package/dist/esm/utils/constants.js.map +1 -0
- package/dist/esm/utils/index.js +7 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/utils/preimage.js +65 -0
- package/dist/esm/utils/preimage.js.map +1 -0
- package/dist/esm/utils/proof.js +98 -0
- package/dist/esm/utils/proof.js.map +1 -0
- package/dist/esm/utils/script_number.js +79 -0
- package/dist/esm/utils/script_number.js.map +1 -0
- package/dist/types/features/call.d.ts +21 -0
- package/dist/types/features/call.d.ts.map +1 -0
- package/dist/types/features/deploy.d.ts +16 -0
- package/dist/types/features/deploy.d.ts.map +1 -0
- package/dist/types/features/index.d.ts +3 -0
- package/dist/types/features/index.d.ts.map +1 -0
- package/dist/types/globalTypes.d.ts +37 -0
- package/dist/types/globalTypes.d.ts.map +1 -0
- package/dist/types/index.d.ts +18 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/networks.d.ts +19 -0
- package/dist/types/networks.d.ts.map +1 -0
- package/dist/types/providers/chainProvider.d.ts +31 -0
- package/dist/types/providers/chainProvider.d.ts.map +1 -0
- package/dist/types/providers/dummyProvider.d.ts +23 -0
- package/dist/types/providers/dummyProvider.d.ts.map +1 -0
- package/dist/types/providers/index.d.ts +6 -0
- package/dist/types/providers/index.d.ts.map +1 -0
- package/dist/types/providers/mempoolProvider.d.ts +28 -0
- package/dist/types/providers/mempoolProvider.d.ts.map +1 -0
- package/dist/types/providers/rpcProvider.d.ts +34 -0
- package/dist/types/providers/rpcProvider.d.ts.map +1 -0
- package/dist/types/providers/utxoProvider.d.ts +43 -0
- package/dist/types/providers/utxoProvider.d.ts.map +1 -0
- package/dist/types/psbt/bip66.d.ts +28 -0
- package/dist/types/psbt/bip66.d.ts.map +1 -0
- package/dist/types/psbt/bufferutils.d.ts +47 -0
- package/dist/types/psbt/bufferutils.d.ts.map +1 -0
- package/dist/types/psbt/contextProvider.d.ts +15 -0
- package/dist/types/psbt/contextProvider.d.ts.map +1 -0
- package/dist/types/psbt/extPsbt.d.ts +131 -0
- package/dist/types/psbt/extPsbt.d.ts.map +1 -0
- package/dist/types/psbt/psbt.d.ts +194 -0
- package/dist/types/psbt/psbt.d.ts.map +1 -0
- package/dist/types/psbt/psbtutils.d.ts +37 -0
- package/dist/types/psbt/psbtutils.d.ts.map +1 -0
- package/dist/types/psbt/signatureutils.d.ts +52 -0
- package/dist/types/psbt/signatureutils.d.ts.map +1 -0
- package/dist/types/psbt/types.d.ts +63 -0
- package/dist/types/psbt/types.d.ts.map +1 -0
- package/dist/types/signer.d.ts +48 -0
- package/dist/types/signer.d.ts.map +1 -0
- package/dist/types/signers/defaultSigner.d.ts +30 -0
- package/dist/types/signers/defaultSigner.d.ts.map +1 -0
- package/dist/types/signers/index.d.ts +4 -0
- package/dist/types/signers/index.d.ts.map +1 -0
- package/dist/types/signers/unisatSigner.d.ts +32 -0
- package/dist/types/signers/unisatSigner.d.ts.map +1 -0
- package/dist/types/smart-contract/abi.d.ts +43 -0
- package/dist/types/smart-contract/abi.d.ts.map +1 -0
- package/dist/types/smart-contract/abiutils.d.ts +51 -0
- package/dist/types/smart-contract/abiutils.d.ts.map +1 -0
- package/dist/types/smart-contract/abstractContract.d.ts +115 -0
- package/dist/types/smart-contract/abstractContract.d.ts.map +1 -0
- package/dist/types/smart-contract/builtin-libs/backtrace.d.ts +43 -0
- package/dist/types/smart-contract/builtin-libs/backtrace.d.ts.map +1 -0
- package/dist/types/smart-contract/builtin-libs/byteStringReader.d.ts +32 -0
- package/dist/types/smart-contract/builtin-libs/byteStringReader.d.ts.map +1 -0
- package/dist/types/smart-contract/builtin-libs/byteStringWriter.d.ts +29 -0
- package/dist/types/smart-contract/builtin-libs/byteStringWriter.d.ts.map +1 -0
- package/dist/types/smart-contract/builtin-libs/contextUtils.d.ts +53 -0
- package/dist/types/smart-contract/builtin-libs/contextUtils.d.ts.map +1 -0
- package/dist/types/smart-contract/builtin-libs/index.d.ts +8 -0
- package/dist/types/smart-contract/builtin-libs/index.d.ts.map +1 -0
- package/dist/types/smart-contract/builtin-libs/p2pk.d.ts +8 -0
- package/dist/types/smart-contract/builtin-libs/p2pk.d.ts.map +1 -0
- package/dist/types/smart-contract/builtin-libs/p2pkh.d.ts +8 -0
- package/dist/types/smart-contract/builtin-libs/p2pkh.d.ts.map +1 -0
- package/dist/types/smart-contract/builtin-libs/stateLib.d.ts +27 -0
- package/dist/types/smart-contract/builtin-libs/stateLib.d.ts.map +1 -0
- package/dist/types/smart-contract/builtin-libs/stateUtils.d.ts +18 -0
- package/dist/types/smart-contract/builtin-libs/stateUtils.d.ts.map +1 -0
- package/dist/types/smart-contract/builtin-libs/stdUtils.d.ts +44 -0
- package/dist/types/smart-contract/builtin-libs/stdUtils.d.ts.map +1 -0
- package/dist/types/smart-contract/builtin-libs/txHashPreimageUtils.d.ts +8 -0
- package/dist/types/smart-contract/builtin-libs/txHashPreimageUtils.d.ts.map +1 -0
- package/dist/types/smart-contract/builtin-libs/txUtils.d.ts +69 -0
- package/dist/types/smart-contract/builtin-libs/txUtils.d.ts.map +1 -0
- package/dist/types/smart-contract/consts.d.ts +97 -0
- package/dist/types/smart-contract/consts.d.ts.map +1 -0
- package/dist/types/smart-contract/decorators.d.ts +40 -0
- package/dist/types/smart-contract/decorators.d.ts.map +1 -0
- package/dist/types/smart-contract/fns/assert.d.ts +8 -0
- package/dist/types/smart-contract/fns/assert.d.ts.map +1 -0
- package/dist/types/smart-contract/fns/bitwise.d.ts +50 -0
- package/dist/types/smart-contract/fns/bitwise.d.ts.map +1 -0
- package/dist/types/smart-contract/fns/byteString.d.ts +56 -0
- package/dist/types/smart-contract/fns/byteString.d.ts.map +1 -0
- package/dist/types/smart-contract/fns/equals.d.ts +8 -0
- package/dist/types/smart-contract/fns/equals.d.ts.map +1 -0
- package/dist/types/smart-contract/fns/fill.d.ts +11 -0
- package/dist/types/smart-contract/fns/fill.d.ts.map +1 -0
- package/dist/types/smart-contract/fns/hashes.d.ts +60 -0
- package/dist/types/smart-contract/fns/hashes.d.ts.map +1 -0
- package/dist/types/smart-contract/fns/index.d.ts +9 -0
- package/dist/types/smart-contract/fns/index.d.ts.map +1 -0
- package/dist/types/smart-contract/fns/math.d.ts +38 -0
- package/dist/types/smart-contract/fns/math.d.ts.map +1 -0
- package/dist/types/smart-contract/fns/pubKey2Addr.d.ts +11 -0
- package/dist/types/smart-contract/fns/pubKey2Addr.d.ts.map +1 -0
- package/dist/types/smart-contract/methods/backtraceToGenensis.d.ts +20 -0
- package/dist/types/smart-contract/methods/backtraceToGenensis.d.ts.map +1 -0
- package/dist/types/smart-contract/methods/buildOutput.d.ts +25 -0
- package/dist/types/smart-contract/methods/buildOutput.d.ts.map +1 -0
- package/dist/types/smart-contract/methods/checkCtx.d.ts +18 -0
- package/dist/types/smart-contract/methods/checkCtx.d.ts.map +1 -0
- package/dist/types/smart-contract/methods/checkInputState.d.ts +9 -0
- package/dist/types/smart-contract/methods/checkInputState.d.ts.map +1 -0
- package/dist/types/smart-contract/methods/checkInputStateHashes.d.ts +10 -0
- package/dist/types/smart-contract/methods/checkInputStateHashes.d.ts.map +1 -0
- package/dist/types/smart-contract/methods/checkSHPreimage.d.ts +10 -0
- package/dist/types/smart-contract/methods/checkSHPreimage.d.ts.map +1 -0
- package/dist/types/smart-contract/methods/checkSig.d.ts +11 -0
- package/dist/types/smart-contract/methods/checkSig.d.ts.map +1 -0
- package/dist/types/smart-contract/serializer.d.ts +48 -0
- package/dist/types/smart-contract/serializer.d.ts.map +1 -0
- package/dist/types/smart-contract/smartContract.d.ts +274 -0
- package/dist/types/smart-contract/smartContract.d.ts.map +1 -0
- package/dist/types/smart-contract/smartContractLib.d.ts +26 -0
- package/dist/types/smart-contract/smartContractLib.d.ts.map +1 -0
- package/dist/types/smart-contract/stateSerializer.d.ts +8 -0
- package/dist/types/smart-contract/stateSerializer.d.ts.map +1 -0
- package/dist/types/smart-contract/types/abi.d.ts +55 -0
- package/dist/types/smart-contract/types/abi.d.ts.map +1 -0
- package/dist/types/smart-contract/types/artifact.d.ts +108 -0
- package/dist/types/smart-contract/types/artifact.d.ts.map +1 -0
- package/dist/types/smart-contract/types/bn.d.ts +3 -0
- package/dist/types/smart-contract/types/bn.d.ts.map +1 -0
- package/dist/types/smart-contract/types/context.d.ts +126 -0
- package/dist/types/smart-contract/types/context.d.ts.map +1 -0
- package/dist/types/smart-contract/types/index.d.ts +4 -0
- package/dist/types/smart-contract/types/index.d.ts.map +1 -0
- package/dist/types/smart-contract/types/opCode.d.ts +747 -0
- package/dist/types/smart-contract/types/opCode.d.ts.map +1 -0
- package/dist/types/smart-contract/types/primitives.d.ts +217 -0
- package/dist/types/smart-contract/types/primitives.d.ts.map +1 -0
- package/dist/types/smart-contract/types/script.d.ts +14 -0
- package/dist/types/smart-contract/types/script.d.ts.map +1 -0
- package/dist/types/smart-contract/types/structs.d.ts +206 -0
- package/dist/types/smart-contract/types/structs.d.ts.map +1 -0
- package/dist/types/smart-contract/types/utils.d.ts +5 -0
- package/dist/types/smart-contract/types/utils.d.ts.map +1 -0
- package/dist/types/utils/bvm.d.ts +9 -0
- package/dist/types/utils/bvm.d.ts.map +1 -0
- package/dist/types/utils/checkIntegrity.d.ts +46 -0
- package/dist/types/utils/checkIntegrity.d.ts.map +1 -0
- package/dist/types/utils/common.d.ts +61 -0
- package/dist/types/utils/common.d.ts.map +1 -0
- package/dist/types/utils/constants.d.ts +3 -0
- package/dist/types/utils/constants.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +7 -0
- package/dist/types/utils/index.d.ts.map +1 -0
- package/dist/types/utils/preimage.d.ts +31 -0
- package/dist/types/utils/preimage.d.ts.map +1 -0
- package/dist/types/utils/proof.d.ts +31 -0
- package/dist/types/utils/proof.d.ts.map +1 -0
- package/dist/types/utils/script_number.d.ts +19 -0
- package/dist/types/utils/script_number.d.ts.map +1 -0
- package/package.json +79 -0
- package/scrypt.index.json +85 -0
- package/src/smart-contract/builtin-libs/backtrace.ts +116 -0
- package/src/smart-contract/builtin-libs/byteStringReader.ts +111 -0
- package/src/smart-contract/builtin-libs/byteStringWriter.ts +86 -0
- package/src/smart-contract/builtin-libs/contextUtils.ts +270 -0
- package/src/smart-contract/builtin-libs/index.ts +7 -0
- package/src/smart-contract/builtin-libs/p2pk.ts +58 -0
- package/src/smart-contract/builtin-libs/p2pkh.ts +67 -0
- package/src/smart-contract/builtin-libs/stateLib.ts +82 -0
- package/src/smart-contract/builtin-libs/stateUtils.ts +37 -0
- package/src/smart-contract/builtin-libs/stdUtils.ts +156 -0
- package/src/smart-contract/builtin-libs/txHashPreimageUtils.ts +34 -0
- package/src/smart-contract/builtin-libs/txUtils.ts +152 -0
- 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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"}
|