@opcat-labs/cat-sdk 1.0.1
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/README.md +19 -0
- package/artifacts/.templates/cat20/cat20.scrypt.map +1 -0
- package/artifacts/.templates/cat20/cat20.scrypt.tpl +60 -0
- package/artifacts/.templates/cat20/cat20.transformer.json +9 -0
- package/artifacts/.templates/cat20/cat20Guard.scrypt.map +1 -0
- package/artifacts/.templates/cat20/cat20Guard.scrypt.tpl +117 -0
- package/artifacts/.templates/cat20/cat20Guard.transformer.json +9 -0
- package/artifacts/.templates/cat20/cat20GuardStateLib.scrypt.map +1 -0
- package/artifacts/.templates/cat20/cat20GuardStateLib.scrypt.tpl +36 -0
- package/artifacts/.templates/cat20/cat20GuardStateLib.transformer.json +7 -0
- package/artifacts/.templates/cat20/cat20StateLib.scrypt.map +1 -0
- package/artifacts/.templates/cat20/cat20StateLib.scrypt.tpl +21 -0
- package/artifacts/.templates/cat20/cat20StateLib.transformer.json +7 -0
- package/artifacts/.templates/cat20/minters/cat20ClosedMinter.scrypt.map +1 -0
- package/artifacts/.templates/cat20/minters/cat20ClosedMinter.scrypt.tpl +61 -0
- package/artifacts/.templates/cat20/minters/cat20ClosedMinter.transformer.json +9 -0
- package/artifacts/.templates/cat20/minters/cat20ClosedMinterMetadata.scrypt.map +1 -0
- package/artifacts/.templates/cat20/minters/cat20ClosedMinterMetadata.scrypt.tpl +11 -0
- package/artifacts/.templates/cat20/minters/cat20ClosedMinterMetadata.transformer.json +7 -0
- package/artifacts/.templates/cat20/minters/cat20OpenMinter.scrypt.map +1 -0
- package/artifacts/.templates/cat20/minters/cat20OpenMinter.scrypt.tpl +94 -0
- package/artifacts/.templates/cat20/minters/cat20OpenMinter.transformer.json +9 -0
- package/artifacts/.templates/cat20/minters/cat20OpenMinterMetadata.scrypt.map +1 -0
- package/artifacts/.templates/cat20/minters/cat20OpenMinterMetadata.scrypt.tpl +11 -0
- package/artifacts/.templates/cat20/minters/cat20OpenMinterMetadata.transformer.json +7 -0
- package/artifacts/.templates/cat20/types.scrypt.map +1 -0
- package/artifacts/.templates/cat20/types.scrypt.tpl +45 -0
- package/artifacts/.templates/cat20/types.transformer.json +7 -0
- package/artifacts/.templates/cat20Incinerator.scrypt.map +1 -0
- package/artifacts/.templates/cat20Incinerator.scrypt.tpl +31 -0
- package/artifacts/.templates/cat20Incinerator.transformer.json +9 -0
- package/artifacts/.templates/constants.scrypt.map +1 -0
- package/artifacts/.templates/constants.scrypt.tpl +16 -0
- package/artifacts/.templates/constants.transformer.json +7 -0
- package/artifacts/.templates/counter.scrypt.map +1 -0
- package/artifacts/.templates/counter.scrypt.tpl +36 -0
- package/artifacts/.templates/counter.transformer.json +9 -0
- package/artifacts/.templates/p2pkh.scrypt.map +1 -0
- package/artifacts/.templates/p2pkh.scrypt.tpl +11 -0
- package/artifacts/.templates/p2pkh.transformer.json +7 -0
- package/artifacts/.templates/types.scrypt.map +1 -0
- package/artifacts/.templates/types.scrypt.tpl +6 -0
- package/artifacts/.templates/types.transformer.json +7 -0
- package/artifacts/.templates/utils/ownerUtils.scrypt.map +1 -0
- package/artifacts/.templates/utils/ownerUtils.scrypt.tpl +26 -0
- package/artifacts/.templates/utils/ownerUtils.transformer.json +7 -0
- package/artifacts/.templates/utils/safeMath.scrypt.map +1 -0
- package/artifacts/.templates/utils/safeMath.scrypt.tpl +11 -0
- package/artifacts/.templates/utils/safeMath.transformer.json +7 -0
- package/artifacts/cat20/cat20.json +477 -0
- package/artifacts/cat20/cat20.scrypt +62 -0
- package/artifacts/cat20/cat20Guard.json +447 -0
- package/artifacts/cat20/cat20Guard.scrypt +119 -0
- package/artifacts/cat20/cat20GuardStateLib.json +361 -0
- package/artifacts/cat20/cat20GuardStateLib.scrypt +38 -0
- package/artifacts/cat20/cat20StateLib.json +373 -0
- package/artifacts/cat20/cat20StateLib.scrypt +23 -0
- package/artifacts/cat20/minters/cat20ClosedMinter.json +477 -0
- package/artifacts/cat20/minters/cat20ClosedMinter.scrypt +63 -0
- package/artifacts/cat20/minters/cat20ClosedMinterMetadata.json +173 -0
- package/artifacts/cat20/minters/cat20ClosedMinterMetadata.scrypt +13 -0
- package/artifacts/cat20/minters/cat20OpenMinter.json +508 -0
- package/artifacts/cat20/minters/cat20OpenMinter.scrypt +96 -0
- package/artifacts/cat20/minters/cat20OpenMinterMetadata.json +173 -0
- package/artifacts/cat20/minters/cat20OpenMinterMetadata.scrypt +13 -0
- package/artifacts/cat20/types.json +159 -0
- package/artifacts/cat20/types.scrypt +47 -0
- package/artifacts/cat20Incinerator.json +396 -0
- package/artifacts/cat20Incinerator.scrypt +33 -0
- package/artifacts/constants.json +26 -0
- package/artifacts/constants.scrypt +18 -0
- package/artifacts/counter.json +253 -0
- package/artifacts/counter.scrypt +38 -0
- package/artifacts/p2pkh.json +229 -0
- package/artifacts/p2pkh.scrypt +13 -0
- package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/backtrace.scrypt +38 -0
- package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/contextUtils.scrypt +93 -0
- package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/stateUtils.scrypt +9 -0
- package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/stdUtils.scrypt +96 -0
- package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/txHashPreimageUtils.scrypt +20 -0
- package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/txUtils.scrypt +48 -0
- package/artifacts/scrypt-ts-opcat/assets/smart-contract/types/structs.scrypt +50 -0
- package/artifacts/types.json +33 -0
- package/artifacts/types.scrypt +8 -0
- package/artifacts/utils/ownerUtils.json +215 -0
- package/artifacts/utils/ownerUtils.scrypt +28 -0
- package/artifacts/utils/safeMath.json +215 -0
- package/artifacts/utils/safeMath.scrypt +13 -0
- package/dist/artifacts/.templates/cat20/cat20.scrypt.map +1 -0
- package/dist/artifacts/.templates/cat20/cat20.scrypt.tpl +60 -0
- package/dist/artifacts/.templates/cat20/cat20.transformer.json +9 -0
- package/dist/artifacts/.templates/cat20/cat20Guard.scrypt.map +1 -0
- package/dist/artifacts/.templates/cat20/cat20Guard.scrypt.tpl +117 -0
- package/dist/artifacts/.templates/cat20/cat20Guard.transformer.json +9 -0
- package/dist/artifacts/.templates/cat20/cat20GuardStateLib.scrypt.map +1 -0
- package/dist/artifacts/.templates/cat20/cat20GuardStateLib.scrypt.tpl +36 -0
- package/dist/artifacts/.templates/cat20/cat20GuardStateLib.transformer.json +7 -0
- package/dist/artifacts/.templates/cat20/cat20StateLib.scrypt.map +1 -0
- package/dist/artifacts/.templates/cat20/cat20StateLib.scrypt.tpl +21 -0
- package/dist/artifacts/.templates/cat20/cat20StateLib.transformer.json +7 -0
- package/dist/artifacts/.templates/cat20/minters/cat20ClosedMinter.scrypt.map +1 -0
- package/dist/artifacts/.templates/cat20/minters/cat20ClosedMinter.scrypt.tpl +61 -0
- package/dist/artifacts/.templates/cat20/minters/cat20ClosedMinter.transformer.json +9 -0
- package/dist/artifacts/.templates/cat20/minters/cat20ClosedMinterMetadata.scrypt.map +1 -0
- package/dist/artifacts/.templates/cat20/minters/cat20ClosedMinterMetadata.scrypt.tpl +11 -0
- package/dist/artifacts/.templates/cat20/minters/cat20ClosedMinterMetadata.transformer.json +7 -0
- package/dist/artifacts/.templates/cat20/minters/cat20OpenMinter.scrypt.map +1 -0
- package/dist/artifacts/.templates/cat20/minters/cat20OpenMinter.scrypt.tpl +94 -0
- package/dist/artifacts/.templates/cat20/minters/cat20OpenMinter.transformer.json +9 -0
- package/dist/artifacts/.templates/cat20/minters/cat20OpenMinterMetadata.scrypt.map +1 -0
- package/dist/artifacts/.templates/cat20/minters/cat20OpenMinterMetadata.scrypt.tpl +11 -0
- package/dist/artifacts/.templates/cat20/minters/cat20OpenMinterMetadata.transformer.json +7 -0
- package/dist/artifacts/.templates/cat20/types.scrypt.map +1 -0
- package/dist/artifacts/.templates/cat20/types.scrypt.tpl +45 -0
- package/dist/artifacts/.templates/cat20/types.transformer.json +7 -0
- package/dist/artifacts/.templates/cat20Incinerator.scrypt.map +1 -0
- package/dist/artifacts/.templates/cat20Incinerator.scrypt.tpl +31 -0
- package/dist/artifacts/.templates/cat20Incinerator.transformer.json +9 -0
- package/dist/artifacts/.templates/constants.scrypt.map +1 -0
- package/dist/artifacts/.templates/constants.scrypt.tpl +16 -0
- package/dist/artifacts/.templates/constants.transformer.json +7 -0
- package/dist/artifacts/.templates/counter.scrypt.map +1 -0
- package/dist/artifacts/.templates/counter.scrypt.tpl +36 -0
- package/dist/artifacts/.templates/counter.transformer.json +9 -0
- package/dist/artifacts/.templates/p2pkh.scrypt.map +1 -0
- package/dist/artifacts/.templates/p2pkh.scrypt.tpl +11 -0
- package/dist/artifacts/.templates/p2pkh.transformer.json +7 -0
- package/dist/artifacts/.templates/types.scrypt.map +1 -0
- package/dist/artifacts/.templates/types.scrypt.tpl +6 -0
- package/dist/artifacts/.templates/types.transformer.json +7 -0
- package/dist/artifacts/.templates/utils/ownerUtils.scrypt.map +1 -0
- package/dist/artifacts/.templates/utils/ownerUtils.scrypt.tpl +26 -0
- package/dist/artifacts/.templates/utils/ownerUtils.transformer.json +7 -0
- package/dist/artifacts/.templates/utils/safeMath.scrypt.map +1 -0
- package/dist/artifacts/.templates/utils/safeMath.scrypt.tpl +11 -0
- package/dist/artifacts/.templates/utils/safeMath.transformer.json +7 -0
- package/dist/artifacts/cat20/cat20.json +477 -0
- package/dist/artifacts/cat20/cat20.scrypt +62 -0
- package/dist/artifacts/cat20/cat20Guard.json +447 -0
- package/dist/artifacts/cat20/cat20Guard.scrypt +119 -0
- package/dist/artifacts/cat20/cat20GuardStateLib.json +361 -0
- package/dist/artifacts/cat20/cat20GuardStateLib.scrypt +38 -0
- package/dist/artifacts/cat20/cat20StateLib.json +373 -0
- package/dist/artifacts/cat20/cat20StateLib.scrypt +23 -0
- package/dist/artifacts/cat20/minters/cat20ClosedMinter.json +477 -0
- package/dist/artifacts/cat20/minters/cat20ClosedMinter.scrypt +63 -0
- package/dist/artifacts/cat20/minters/cat20ClosedMinterMetadata.json +173 -0
- package/dist/artifacts/cat20/minters/cat20ClosedMinterMetadata.scrypt +13 -0
- package/dist/artifacts/cat20/minters/cat20OpenMinter.json +508 -0
- package/dist/artifacts/cat20/minters/cat20OpenMinter.scrypt +96 -0
- package/dist/artifacts/cat20/minters/cat20OpenMinterMetadata.json +173 -0
- package/dist/artifacts/cat20/minters/cat20OpenMinterMetadata.scrypt +13 -0
- package/dist/artifacts/cat20/types.json +159 -0
- package/dist/artifacts/cat20/types.scrypt +47 -0
- package/dist/artifacts/cat20Incinerator.json +396 -0
- package/dist/artifacts/cat20Incinerator.scrypt +33 -0
- package/dist/artifacts/constants.json +26 -0
- package/dist/artifacts/constants.scrypt +18 -0
- package/dist/artifacts/counter.json +253 -0
- package/dist/artifacts/counter.scrypt +38 -0
- package/dist/artifacts/p2pkh.json +229 -0
- package/dist/artifacts/p2pkh.scrypt +13 -0
- package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/backtrace.scrypt +38 -0
- package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/contextUtils.scrypt +93 -0
- package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/stateUtils.scrypt +9 -0
- package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/stdUtils.scrypt +96 -0
- package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/txHashPreimageUtils.scrypt +20 -0
- package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/txUtils.scrypt +48 -0
- package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/types/structs.scrypt +50 -0
- package/dist/artifacts/types.json +33 -0
- package/dist/artifacts/types.scrypt +8 -0
- package/dist/artifacts/utils/ownerUtils.json +215 -0
- package/dist/artifacts/utils/ownerUtils.scrypt +28 -0
- package/dist/artifacts/utils/safeMath.json +215 -0
- package/dist/artifacts/utils/safeMath.scrypt +13 -0
- package/dist/cjs/contracts/cat20/cat20.js +74 -0
- package/dist/cjs/contracts/cat20/cat20.js.map +1 -0
- package/dist/cjs/contracts/cat20/cat20Guard.js +169 -0
- package/dist/cjs/contracts/cat20/cat20Guard.js.map +1 -0
- package/dist/cjs/contracts/cat20/cat20GuardStateLib.js +72 -0
- package/dist/cjs/contracts/cat20/cat20GuardStateLib.js.map +1 -0
- package/dist/cjs/contracts/cat20/cat20StateLib.js +37 -0
- package/dist/cjs/contracts/cat20/cat20StateLib.js.map +1 -0
- package/dist/cjs/contracts/cat20/minters/cat20ClosedMinter.js +77 -0
- package/dist/cjs/contracts/cat20/minters/cat20ClosedMinter.js.map +1 -0
- package/dist/cjs/contracts/cat20/minters/cat20ClosedMinterMetadata.js +18 -0
- package/dist/cjs/contracts/cat20/minters/cat20ClosedMinterMetadata.js.map +1 -0
- package/dist/cjs/contracts/cat20/minters/cat20OpenMinter.js +138 -0
- package/dist/cjs/contracts/cat20/minters/cat20OpenMinter.js.map +1 -0
- package/dist/cjs/contracts/cat20/minters/cat20OpenMinterMetadata.js +22 -0
- package/dist/cjs/contracts/cat20/minters/cat20OpenMinterMetadata.js.map +1 -0
- package/dist/cjs/contracts/cat20/types.js +3 -0
- package/dist/cjs/contracts/cat20/types.js.map +1 -0
- package/dist/cjs/contracts/cat20Incinerator.js +45 -0
- package/dist/cjs/contracts/cat20Incinerator.js.map +1 -0
- package/dist/cjs/contracts/constants.js +110 -0
- package/dist/cjs/contracts/constants.js.map +1 -0
- package/dist/cjs/contracts/counter.js +29 -0
- package/dist/cjs/contracts/counter.js.map +1 -0
- package/dist/cjs/contracts/index.js +32 -0
- package/dist/cjs/contracts/index.js.map +1 -0
- package/dist/cjs/contracts/p2pkh.js +35 -0
- package/dist/cjs/contracts/p2pkh.js.map +1 -0
- package/dist/cjs/contracts/types.js +3 -0
- package/dist/cjs/contracts/types.js.map +1 -0
- package/dist/cjs/contracts/utils/ownerUtils.js +78 -0
- package/dist/cjs/contracts/utils/ownerUtils.js.map +1 -0
- package/dist/cjs/contracts/utils/safeMath.js +28 -0
- package/dist/cjs/contracts/utils/safeMath.js.map +1 -0
- package/dist/cjs/features/cat20/burn/burn.js +91 -0
- package/dist/cjs/features/cat20/burn/burn.js.map +1 -0
- package/dist/cjs/features/cat20/deploy/openMinter.js +135 -0
- package/dist/cjs/features/cat20/deploy/openMinter.js.map +1 -0
- package/dist/cjs/features/cat20/incinerate.js +108 -0
- package/dist/cjs/features/cat20/incinerate.js.map +1 -0
- package/dist/cjs/features/cat20/mint/openMinter.js +37 -0
- package/dist/cjs/features/cat20/mint/openMinter.js.map +1 -0
- package/dist/cjs/features/cat20/send/contractSend.js +130 -0
- package/dist/cjs/features/cat20/send/contractSend.js.map +1 -0
- package/dist/cjs/features/cat20/send/singleSend.js +172 -0
- package/dist/cjs/features/cat20/send/singleSend.js.map +1 -0
- package/dist/cjs/features/index.js +19 -0
- package/dist/cjs/features/index.js.map +1 -0
- package/dist/cjs/index.js +35 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/lib/index.js +19 -0
- package/dist/cjs/lib/index.js.map +1 -0
- package/dist/cjs/lib/metadata.js +32 -0
- package/dist/cjs/lib/metadata.js.map +1 -0
- package/dist/cjs/typeConstants.js +18 -0
- package/dist/cjs/typeConstants.js.map +1 -0
- package/dist/cjs/utils/check.js +24 -0
- package/dist/cjs/utils/check.js.map +1 -0
- package/dist/cjs/utils/contractPeripheral.js +189 -0
- package/dist/cjs/utils/contractPeripheral.js.map +1 -0
- package/dist/cjs/utils/index.js +223 -0
- package/dist/cjs/utils/index.js.map +1 -0
- package/dist/cjs/utils/loadAllArtifacts.js +39 -0
- package/dist/cjs/utils/loadAllArtifacts.js.map +1 -0
- package/dist/esm/contracts/cat20/cat20.js +72 -0
- package/dist/esm/contracts/cat20/cat20.js.map +1 -0
- package/dist/esm/contracts/cat20/cat20Guard.js +165 -0
- package/dist/esm/contracts/cat20/cat20Guard.js.map +1 -0
- package/dist/esm/contracts/cat20/cat20GuardStateLib.js +68 -0
- package/dist/esm/contracts/cat20/cat20GuardStateLib.js.map +1 -0
- package/dist/esm/contracts/cat20/cat20StateLib.js +33 -0
- package/dist/esm/contracts/cat20/cat20StateLib.js.map +1 -0
- package/dist/esm/contracts/cat20/minters/cat20ClosedMinter.js +75 -0
- package/dist/esm/contracts/cat20/minters/cat20ClosedMinter.js.map +1 -0
- package/dist/esm/contracts/cat20/minters/cat20ClosedMinterMetadata.js +14 -0
- package/dist/esm/contracts/cat20/minters/cat20ClosedMinterMetadata.js.map +1 -0
- package/dist/esm/contracts/cat20/minters/cat20OpenMinter.js +142 -0
- package/dist/esm/contracts/cat20/minters/cat20OpenMinter.js.map +1 -0
- package/dist/esm/contracts/cat20/minters/cat20OpenMinterMetadata.js +18 -0
- package/dist/esm/contracts/cat20/minters/cat20OpenMinterMetadata.js.map +1 -0
- package/dist/esm/contracts/cat20/types.js +2 -0
- package/dist/esm/contracts/cat20/types.js.map +1 -0
- package/dist/esm/contracts/cat20Incinerator.js +42 -0
- package/dist/esm/contracts/cat20Incinerator.js.map +1 -0
- package/dist/esm/contracts/constants.js +106 -0
- package/dist/esm/contracts/constants.js.map +1 -0
- package/dist/esm/contracts/counter.js +25 -0
- package/dist/esm/contracts/counter.js.map +1 -0
- package/dist/esm/contracts/index.js +16 -0
- package/dist/esm/contracts/index.js.map +1 -0
- package/dist/esm/contracts/p2pkh.js +32 -0
- package/dist/esm/contracts/p2pkh.js.map +1 -0
- package/dist/esm/contracts/types.js +2 -0
- package/dist/esm/contracts/types.js.map +1 -0
- package/dist/esm/contracts/utils/ownerUtils.js +74 -0
- package/dist/esm/contracts/utils/ownerUtils.js.map +1 -0
- package/dist/esm/contracts/utils/safeMath.js +24 -0
- package/dist/esm/contracts/utils/safeMath.js.map +1 -0
- package/dist/esm/features/cat20/burn/burn.js +87 -0
- package/dist/esm/features/cat20/burn/burn.js.map +1 -0
- package/dist/esm/features/cat20/deploy/openMinter.js +130 -0
- package/dist/esm/features/cat20/deploy/openMinter.js.map +1 -0
- package/dist/esm/features/cat20/incinerate.js +104 -0
- package/dist/esm/features/cat20/incinerate.js.map +1 -0
- package/dist/esm/features/cat20/mint/openMinter.js +33 -0
- package/dist/esm/features/cat20/mint/openMinter.js.map +1 -0
- package/dist/esm/features/cat20/send/contractSend.js +126 -0
- package/dist/esm/features/cat20/send/contractSend.js.map +1 -0
- package/dist/esm/features/cat20/send/singleSend.js +142 -0
- package/dist/esm/features/cat20/send/singleSend.js.map +1 -0
- package/dist/esm/features/index.js +7 -0
- package/dist/esm/features/index.js.map +1 -0
- package/dist/esm/index.js +9 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/index.js +3 -0
- package/dist/esm/lib/index.js.map +1 -0
- package/dist/esm/lib/metadata.js +28 -0
- package/dist/esm/lib/metadata.js.map +1 -0
- package/dist/esm/typeConstants.js +15 -0
- package/dist/esm/typeConstants.js.map +1 -0
- package/dist/esm/utils/check.js +19 -0
- package/dist/esm/utils/check.js.map +1 -0
- package/dist/esm/utils/contractPeripheral.js +183 -0
- package/dist/esm/utils/contractPeripheral.js.map +1 -0
- package/dist/esm/utils/index.js +184 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/utils/loadAllArtifacts.js +32 -0
- package/dist/esm/utils/loadAllArtifacts.js.map +1 -0
- package/dist/types/contracts/cat20/cat20.d.ts +12 -0
- package/dist/types/contracts/cat20/cat20.d.ts.map +1 -0
- package/dist/types/contracts/cat20/cat20Guard.d.ts +8 -0
- package/dist/types/contracts/cat20/cat20Guard.d.ts.map +1 -0
- package/dist/types/contracts/cat20/cat20GuardStateLib.d.ts +13 -0
- package/dist/types/contracts/cat20/cat20GuardStateLib.d.ts.map +1 -0
- package/dist/types/contracts/cat20/cat20StateLib.d.ts +7 -0
- package/dist/types/contracts/cat20/cat20StateLib.d.ts.map +1 -0
- package/dist/types/contracts/cat20/minters/cat20ClosedMinter.d.ts +10 -0
- package/dist/types/contracts/cat20/minters/cat20ClosedMinter.d.ts.map +1 -0
- package/dist/types/contracts/cat20/minters/cat20ClosedMinterMetadata.d.ts +6 -0
- package/dist/types/contracts/cat20/minters/cat20ClosedMinterMetadata.d.ts.map +1 -0
- package/dist/types/contracts/cat20/minters/cat20OpenMinter.d.ts +16 -0
- package/dist/types/contracts/cat20/minters/cat20OpenMinter.d.ts.map +1 -0
- package/dist/types/contracts/cat20/minters/cat20OpenMinterMetadata.d.ts +6 -0
- package/dist/types/contracts/cat20/minters/cat20OpenMinterMetadata.d.ts.map +1 -0
- package/dist/types/contracts/cat20/types.d.ts +58 -0
- package/dist/types/contracts/cat20/types.d.ts.map +1 -0
- package/dist/types/contracts/cat20Incinerator.d.ts +8 -0
- package/dist/types/contracts/cat20Incinerator.d.ts.map +1 -0
- package/dist/types/contracts/constants.d.ts +33 -0
- package/dist/types/contracts/constants.d.ts.map +1 -0
- package/dist/types/contracts/counter.d.ts +8 -0
- package/dist/types/contracts/counter.d.ts.map +1 -0
- package/dist/types/contracts/index.d.ts +16 -0
- package/dist/types/contracts/index.d.ts.map +1 -0
- package/dist/types/contracts/p2pkh.d.ts +7 -0
- package/dist/types/contracts/p2pkh.d.ts.map +1 -0
- package/dist/types/contracts/types.d.ts +9 -0
- package/dist/types/contracts/types.d.ts.map +1 -0
- package/dist/types/contracts/utils/ownerUtils.d.ts +19 -0
- package/dist/types/contracts/utils/ownerUtils.d.ts.map +1 -0
- package/dist/types/contracts/utils/safeMath.d.ts +5 -0
- package/dist/types/contracts/utils/safeMath.d.ts.map +1 -0
- package/dist/types/features/cat20/burn/burn.d.ts +6 -0
- package/dist/types/features/cat20/burn/burn.d.ts.map +1 -0
- package/dist/types/features/cat20/deploy/openMinter.d.ts +11 -0
- package/dist/types/features/cat20/deploy/openMinter.d.ts.map +1 -0
- package/dist/types/features/cat20/incinerate.d.ts +6 -0
- package/dist/types/features/cat20/incinerate.d.ts.map +1 -0
- package/dist/types/features/cat20/mint/openMinter.d.ts +7 -0
- package/dist/types/features/cat20/mint/openMinter.d.ts.map +1 -0
- package/dist/types/features/cat20/send/contractSend.d.ts +14 -0
- package/dist/types/features/cat20/send/contractSend.d.ts.map +1 -0
- package/dist/types/features/cat20/send/singleSend.d.ts +33 -0
- package/dist/types/features/cat20/send/singleSend.d.ts.map +1 -0
- package/dist/types/features/index.d.ts +7 -0
- package/dist/types/features/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/lib/index.d.ts +2 -0
- package/dist/types/lib/index.d.ts.map +1 -0
- package/dist/types/lib/metadata.d.ts +18 -0
- package/dist/types/lib/metadata.d.ts.map +1 -0
- package/dist/types/typeConstants.d.ts +31 -0
- package/dist/types/typeConstants.d.ts.map +1 -0
- package/dist/types/utils/check.d.ts +3 -0
- package/dist/types/utils/check.d.ts.map +1 -0
- package/dist/types/utils/contractPeripheral.d.ts +45 -0
- package/dist/types/utils/contractPeripheral.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +29 -0
- package/dist/types/utils/index.d.ts.map +1 -0
- package/dist/types/utils/loadAllArtifacts.d.ts +2 -0
- package/dist/types/utils/loadAllArtifacts.d.ts.map +1 -0
- package/package.json +76 -0
- package/scrypt.index.json +132 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import "../types.scrypt.tpl";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
library CAT20ClosedMinterMetadata {
|
|
5
|
+
static function serializeState(ClosedMinterCAT20Meta __scrypt_ts_curState): bytes {
|
|
6
|
+
return num2bin(len(__scrypt_ts_curState.tag), 2) + __scrypt_ts_curState.tag + num2bin(len(__scrypt_ts_curState.name), 2) + __scrypt_ts_curState.name + num2bin(len(__scrypt_ts_curState.symbol), 2) + __scrypt_ts_curState.symbol + num2bin(len(pack(__scrypt_ts_curState.decimals)), 2) + pack(__scrypt_ts_curState.decimals) + num2bin(len(__scrypt_ts_curState.minterMd5), 2) + __scrypt_ts_curState.minterMd5 + hash160(hash160(__scrypt_ts_curState.tag) + hash160(__scrypt_ts_curState.name) + hash160(__scrypt_ts_curState.symbol) + hash160(pack(__scrypt_ts_curState.decimals)) + hash160(__scrypt_ts_curState.minterMd5));
|
|
7
|
+
}
|
|
8
|
+
static function stateHash(ClosedMinterCAT20Meta __scrypt_ts_curState): bytes {
|
|
9
|
+
return sha256(num2bin(len(__scrypt_ts_curState.tag), 2) + __scrypt_ts_curState.tag + num2bin(len(__scrypt_ts_curState.name), 2) + __scrypt_ts_curState.name + num2bin(len(__scrypt_ts_curState.symbol), 2) + __scrypt_ts_curState.symbol + num2bin(len(pack(__scrypt_ts_curState.decimals)), 2) + pack(__scrypt_ts_curState.decimals) + num2bin(len(__scrypt_ts_curState.minterMd5), 2) + __scrypt_ts_curState.minterMd5 + hash160(hash160(__scrypt_ts_curState.tag) + hash160(__scrypt_ts_curState.name) + hash160(__scrypt_ts_curState.symbol) + hash160(pack(__scrypt_ts_curState.decimals)) + hash160(__scrypt_ts_curState.minterMd5)));
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[[],[],[],[],[],[],[],[],[],[],[],[],[],[],[[9,0,31,13]],[[2,0,33,19],[8,0,33,2]],[[2,0,37,12],[6,0,37,2]],[[2,0,41,11],[6,0,41,2]],[[2,0,44,16],[6,0,44,2]],[[2,0,47,9],[6,0,47,2]],[[2,0,50,16],[8,0,50,2]],[[2,0,52,2],[14,0,53,21],[20,0,53,4],[37,0,54,14],[41,0,54,4],[51,0,55,13],[55,0,55,4],[64,0,56,18],[68,0,56,4],[82,0,57,11],[86,0,57,4],[93,0,58,17],[99,0,58,4]],[[4,0,61,4],[8,0,61,9],[25,0,61,4],[27,0,61,27]],[[4,0,62,4],[8,0,62,9],[18,0,62,4],[20,0,62,20]],[[4,0,65,4],[8,0,65,9],[17,0,65,4],[19,0,65,19]],[[4,0,66,4],[8,0,66,9],[22,0,66,4],[24,0,66,24]],[[4,0,67,4],[8,0,67,9],[15,0,67,4],[17,0,67,17]],[[4,0,68,4],[8,0,68,9],[22,0,68,4],[24,0,68,24]],[],[[2,0,72,2],[18,0,72,9],[23,0,74,15],[34,0,74,4],[45,0,75,25],[48,0,75,25],[52,0,75,4],[73,0,77,20],[80,0,77,4],[96,0,78,17],[100,0,78,4],[113,0,80,20],[117,0,80,4],[133,0,82,19],[137,0,82,4],[152,0,84,19],[166,0,84,4],[181,0,85,14],[201,0,85,4]],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[[33,0,88,29],[48,0,88,44],[52,0,88,49]],[[4,0,91,4],[7,0,91,8],[29,0,91,20]],[[8,0,92,6],[16,0,92,13],[24,0,92,22],[33,0,92,13],[36,0,92,33],[40,0,92,38]],[[8,0,93,6],[16,0,93,13],[24,0,93,22],[38,0,93,13],[41,0,93,38],[45,0,93,43]],[[8,0,94,6],[16,0,94,13],[24,0,94,22],[31,0,94,13],[34,0,94,31],[38,0,94,36]],[[8,0,96,6],[16,0,96,13],[20,0,96,18],[29,0,96,13],[32,0,96,29],[36,0,96,34],[50,0,96,29],[52,0,96,49],[56,0,96,54]],[[8,0,97,6],[16,0,97,13],[24,0,97,22],[29,0,97,13],[32,0,97,29],[36,0,97,34],[46,0,97,29],[48,0,97,45],[52,0,97,50]],[[8,0,99,27],[14,0,99,12],[29,0,99,27],[52,0,99,51],[63,0,99,61]],[[8,0,100,29],[14,0,100,12],[31,0,100,29],[50,0,100,49],[71,0,100,69],[84,0,100,83],[105,0,100,103],[118,0,100,117],[130,0,100,129]],[[8,0,101,6],[16,0,102,8],[29,0,102,8],[32,0,104,10],[47,0,105,10],[52,0,106,10],[55,0,106,10],[57,0,106,35]],[],[[4,0,114,24],[10,0,114,8],[26,0,114,37]],[[4,0,115,32],[8,0,115,8],[32,0,115,32]],[[15,0,116,13]],[[8,0,117,29],[12,0,117,12],[29,0,117,29],[49,0,117,49]],[[8,0,118,6],[11,0,118,10],[26,0,118,10],[28,0,118,27]],[[10,0,119,8],[32,0,119,8],[35,0,119,33]],[[10,0,120,8],[24,0,120,8],[27,0,120,25],[34,0,120,33],[91,0,122,10],[107,0,123,10],[114,0,123,17],[129,0,123,33],[145,0,123,48],[146,0,124,17],[158,0,124,30],[198,0,125,40],[216,0,126,29]],[],[],[[4,0,134,27],[11,0,134,10],[28,0,134,27],[35,0,134,34],[48,0,134,48],[64,0,134,63]],[[4,0,135,24],[10,0,135,10],[24,0,135,24],[31,0,135,32],[69,0,136,17],[87,0,137,6],[102,0,138,6]],[[4,0,140,4],[7,0,140,8],[29,0,140,20],[46,0,140,8],[49,0,140,39],[53,0,140,44],[62,0,140,39],[64,0,140,54]],[[8,0,142,6],[16,0,142,13],[20,0,142,18],[30,0,142,13],[54,0,142,41],[70,0,142,30],[72,0,142,58],[76,0,142,63]],[[8,0,144,6],[18,0,144,17],[34,0,144,32],[50,0,144,48],[54,0,144,53]],[[8,0,145,6],[16,0,145,18],[24,0,145,13],[25,0,145,27],[38,0,145,40],[52,0,145,13]],[[8,0,147,6],[16,0,147,13],[38,0,147,13],[62,0,147,49]],[[8,0,148,6],[16,0,148,13],[25,0,148,23],[33,0,148,13],[36,0,148,33],[40,0,148,38]],[],[[8,0,151,6],[11,0,151,10],[33,0,151,22]],[[10,0,153,8],[18,0,153,15],[22,0,153,20],[32,0,153,15],[56,0,153,43]],[[10,0,154,8],[18,0,154,15],[22,0,154,20],[36,0,154,15],[39,0,154,36]],[[10,0,155,8],[18,0,155,15],[22,0,155,20],[31,0,155,15],[34,0,155,31]],[],[[8,0,157,6],[16,0,157,13],[38,0,157,13],[62,0,157,49],[78,0,157,38],[80,0,157,66]],[[8,0,158,6],[16,0,158,13],[25,0,158,23],[33,0,158,13],[36,0,158,33],[40,0,158,38]],[],[[4,0,162,25],[10,0,162,10]],[],[[4,0,165,4],[20,0,165,29],[34,0,165,29],[36,0,165,45],[48,0,165,29],[50,0,165,59]],[],[],[],[],[],[],[],[]]
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import "../types.scrypt.tpl";
|
|
2
|
+
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/types/structs.scrypt.tpl";
|
|
3
|
+
import "./cat20OpenMinterMetadata.scrypt.tpl";
|
|
4
|
+
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/txHashPreimageUtils.scrypt.tpl";
|
|
5
|
+
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/txUtils.scrypt.tpl";
|
|
6
|
+
import "../../constants.scrypt.tpl";
|
|
7
|
+
import "../cat20StateLib.scrypt.tpl";
|
|
8
|
+
import "../../utils/ownerUtils.scrypt.tpl";
|
|
9
|
+
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/stdUtils.scrypt.tpl";
|
|
10
|
+
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/backtrace.scrypt.tpl";
|
|
11
|
+
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/contextUtils.scrypt.tpl";
|
|
12
|
+
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/stateUtils.scrypt.tpl";
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
contract CAT20OpenMinter {
|
|
16
|
+
bytes genesisOutpoint;
|
|
17
|
+
int maxCount;
|
|
18
|
+
int premine;
|
|
19
|
+
int premineCount;
|
|
20
|
+
int limit;
|
|
21
|
+
bytes preminerAddr;
|
|
22
|
+
constructor(bytes genesisOutpoint, int maxCount, int premine, int premineCount, int limit, bytes premineAddr) {
|
|
23
|
+
this.genesisOutpoint = genesisOutpoint;
|
|
24
|
+
this.maxCount = maxCount;
|
|
25
|
+
this.premine = premine;
|
|
26
|
+
this.premineCount = premineCount;
|
|
27
|
+
this.limit = limit;
|
|
28
|
+
this.preminerAddr = premineAddr;
|
|
29
|
+
}
|
|
30
|
+
public function mint(CAT20State tokenMint, int[2] nextRemainingCounts, PubKey preminerPubKey, Sig preminerSig, int minterSatoshis, int tokenSatoshis, BacktraceInfo backtraceInfo, OpenMinterCAT20Meta metadata, SHPreimage __scrypt_ts_shPreimage, TxOut __scrypt_ts_changeInfo, CAT20OpenMinterState __scrypt_ts_curState, bytes __scrypt_ts_prevouts, bytes __scrypt_ts_spentAmounts, bytes __scrypt_ts_spentDataHashes, bytes __scrypt_ts_spentScriptHashes, TxHashPreimage __scrypt_ts_prevTxHashPreimage) {
|
|
31
|
+
require(Tx.checkPreimageSigHashType(ContextUtils.serializeSHPreimage(__scrypt_ts_shPreimage), SigHash.ALL));
|
|
32
|
+
|
|
33
|
+
int __scrypt_ts_inputCount = ContextUtils.checkSpentAmounts(__scrypt_ts_spentAmounts, __scrypt_ts_shPreimage.hashSpentAmounts);
|
|
34
|
+
|
|
35
|
+
Outpoint __scrypt_ts_prevout = ContextUtils.checkPrevouts(__scrypt_ts_prevouts, __scrypt_ts_shPreimage.hashPrevouts, __scrypt_ts_shPreimage.inputIndex, __scrypt_ts_inputCount);
|
|
36
|
+
|
|
37
|
+
ContextUtils.checkSpentScripts(__scrypt_ts_spentScriptHashes, __scrypt_ts_shPreimage.hashSpentScriptHashes, __scrypt_ts_inputCount);
|
|
38
|
+
|
|
39
|
+
ContextUtils.checkSpentDataHashes(__scrypt_ts_spentDataHashes, __scrypt_ts_shPreimage.hashSpentDataHashes, __scrypt_ts_inputCount);
|
|
40
|
+
|
|
41
|
+
CAT20OpenMinterState __scrypt_ts_nextState = __scrypt_ts_curState;
|
|
42
|
+
|
|
43
|
+
StateUtils.checkInputState(__scrypt_ts_shPreimage.inputIndex, CAT20OpenMinter.stateHash(__scrypt_ts_curState), __scrypt_ts_spentDataHashes);
|
|
44
|
+
|
|
45
|
+
Backtrace.checkPrevTxHashPreimage(__scrypt_ts_prevTxHashPreimage, __scrypt_ts_prevouts, __scrypt_ts_shPreimage.inputIndex);
|
|
46
|
+
|
|
47
|
+
Backtrace.verifyFromOutpoint(backtraceInfo, this.genesisOutpoint, __scrypt_ts_spentScriptHashes[__scrypt_ts_shPreimage.inputIndex * 32 : (__scrypt_ts_shPreimage.inputIndex + 1) * 32], __scrypt_ts_prevTxHashPreimage.inputList);
|
|
48
|
+
if(!__scrypt_ts_nextState.hasMintedBefore) {
|
|
49
|
+
require(metadata.premine == this.premine);
|
|
50
|
+
require(metadata.preminerAddr == this.preminerAddr);
|
|
51
|
+
require(metadata.limit == this.limit);
|
|
52
|
+
require(this.premine == this.premineCount * this.limit);
|
|
53
|
+
require(metadata.max == this.maxCount * this.limit);
|
|
54
|
+
bytes metadataHash = CAT20OpenMinterMetadata.stateHash(metadata);
|
|
55
|
+
bytes metadataOutput = TxHashPreimageUtils.getOutputByteString(backtraceInfo.prevPrevTxPreimage, backtraceInfo.prevTxInput.prevOutputIndex);
|
|
56
|
+
require(metadataHash == metadataOutput[40 : 40 + 32]);
|
|
57
|
+
}
|
|
58
|
+
bytes minterOutputs = b'';
|
|
59
|
+
int sumNextRemainingCount = 0;
|
|
60
|
+
loop (2) : i {
|
|
61
|
+
int remainingCount = nextRemainingCounts[i];
|
|
62
|
+
if(remainingCount > 0) {
|
|
63
|
+
sumNextRemainingCount += remainingCount;
|
|
64
|
+
minterOutputs += TxUtils.buildDataOutput(__scrypt_ts_shPreimage.spentScriptHash, minterSatoshis, sha256(CAT20OpenMinter.serializeState({ConstantsLib.OPCAT_MINTER_TAG, __scrypt_ts_nextState.tokenScriptHash, true, remainingCount})));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
Sha256 tokenStateHash = sha256(CAT20StateLib.serializeState(tokenMint));
|
|
68
|
+
bytes tokenOutput = TxUtils.buildDataOutput(__scrypt_ts_nextState.tokenScriptHash, tokenSatoshis, tokenStateHash);
|
|
69
|
+
if(!__scrypt_ts_nextState.hasMintedBefore && this.premine > 0) {
|
|
70
|
+
require(this.maxCount == __scrypt_ts_nextState.remainingCount + this.premineCount);
|
|
71
|
+
OwnerUtils.checkUserOwner(preminerPubKey, this.preminerAddr);
|
|
72
|
+
require(checkSig(preminerSig, preminerPubKey));
|
|
73
|
+
require(sumNextRemainingCount == __scrypt_ts_nextState.remainingCount);
|
|
74
|
+
require(tokenMint.amount == this.premine);
|
|
75
|
+
} else {
|
|
76
|
+
if(!__scrypt_ts_nextState.hasMintedBefore) {
|
|
77
|
+
require(this.maxCount == __scrypt_ts_nextState.remainingCount);
|
|
78
|
+
require(this.premineCount == 0);
|
|
79
|
+
require(this.premine == 0);
|
|
80
|
+
}
|
|
81
|
+
require(sumNextRemainingCount == __scrypt_ts_nextState.remainingCount - 1);
|
|
82
|
+
require(tokenMint.amount == this.limit);
|
|
83
|
+
}
|
|
84
|
+
bytes changeOutput =
|
|
85
|
+
(__scrypt_ts_changeInfo.satoshis > 0 ? TxUtils.buildOutput(__scrypt_ts_changeInfo.scriptHash, __scrypt_ts_changeInfo.satoshis) : b'');
|
|
86
|
+
require(hash256(minterOutputs + tokenOutput + changeOutput) == __scrypt_ts_shPreimage.hashOutputs);
|
|
87
|
+
}
|
|
88
|
+
static function serializeState(CAT20OpenMinterState __scrypt_ts_curState): bytes {
|
|
89
|
+
return num2bin(len(__scrypt_ts_curState.tag), 2) + __scrypt_ts_curState.tag + num2bin(len(__scrypt_ts_curState.tokenScriptHash), 2) + __scrypt_ts_curState.tokenScriptHash + num2bin(len((__scrypt_ts_curState.hasMintedBefore ? b'01' : b'')), 2) + (__scrypt_ts_curState.hasMintedBefore ? b'01' : b'') + num2bin(len(pack(__scrypt_ts_curState.remainingCount)), 2) + pack(__scrypt_ts_curState.remainingCount) + hash160(hash160(__scrypt_ts_curState.tag) + hash160(__scrypt_ts_curState.tokenScriptHash) + hash160(__scrypt_ts_curState.hasMintedBefore ? b'01' : b'') + hash160(pack(__scrypt_ts_curState.remainingCount)));
|
|
90
|
+
}
|
|
91
|
+
static function stateHash(CAT20OpenMinterState __scrypt_ts_curState): bytes {
|
|
92
|
+
return sha256(num2bin(len(__scrypt_ts_curState.tag), 2) + __scrypt_ts_curState.tag + num2bin(len(__scrypt_ts_curState.tokenScriptHash), 2) + __scrypt_ts_curState.tokenScriptHash + num2bin(len((__scrypt_ts_curState.hasMintedBefore ? b'01' : b'')), 2) + (__scrypt_ts_curState.hasMintedBefore ? b'01' : b'') + num2bin(len(pack(__scrypt_ts_curState.remainingCount)), 2) + pack(__scrypt_ts_curState.remainingCount) + hash160(hash160(__scrypt_ts_curState.tag) + hash160(__scrypt_ts_curState.tokenScriptHash) + hash160(__scrypt_ts_curState.hasMintedBefore ? b'01' : b'') + hash160(pack(__scrypt_ts_curState.remainingCount))));
|
|
93
|
+
}
|
|
94
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[[],[],[],[[8,0,5,13]],[],[],[],[],[],[],[]]
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import "../types.scrypt.tpl";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
library CAT20OpenMinterMetadata {
|
|
5
|
+
static function serializeState(OpenMinterCAT20Meta __scrypt_ts_curState): bytes {
|
|
6
|
+
return num2bin(len(__scrypt_ts_curState.tag), 2) + __scrypt_ts_curState.tag + num2bin(len(__scrypt_ts_curState.name), 2) + __scrypt_ts_curState.name + num2bin(len(__scrypt_ts_curState.symbol), 2) + __scrypt_ts_curState.symbol + num2bin(len(pack(__scrypt_ts_curState.decimals)), 2) + pack(__scrypt_ts_curState.decimals) + num2bin(len(__scrypt_ts_curState.minterMd5), 2) + __scrypt_ts_curState.minterMd5 + num2bin(len(pack(__scrypt_ts_curState.max)), 2) + pack(__scrypt_ts_curState.max) + num2bin(len(pack(__scrypt_ts_curState.limit)), 2) + pack(__scrypt_ts_curState.limit) + num2bin(len(pack(__scrypt_ts_curState.premine)), 2) + pack(__scrypt_ts_curState.premine) + num2bin(len(__scrypt_ts_curState.preminerAddr), 2) + __scrypt_ts_curState.preminerAddr + hash160(hash160(__scrypt_ts_curState.tag) + hash160(__scrypt_ts_curState.name) + hash160(__scrypt_ts_curState.symbol) + hash160(pack(__scrypt_ts_curState.decimals)) + hash160(__scrypt_ts_curState.minterMd5) + hash160(pack(__scrypt_ts_curState.max)) + hash160(pack(__scrypt_ts_curState.limit)) + hash160(pack(__scrypt_ts_curState.premine)) + hash160(__scrypt_ts_curState.preminerAddr));
|
|
7
|
+
}
|
|
8
|
+
static function stateHash(OpenMinterCAT20Meta __scrypt_ts_curState): bytes {
|
|
9
|
+
return sha256(num2bin(len(__scrypt_ts_curState.tag), 2) + __scrypt_ts_curState.tag + num2bin(len(__scrypt_ts_curState.name), 2) + __scrypt_ts_curState.name + num2bin(len(__scrypt_ts_curState.symbol), 2) + __scrypt_ts_curState.symbol + num2bin(len(pack(__scrypt_ts_curState.decimals)), 2) + pack(__scrypt_ts_curState.decimals) + num2bin(len(__scrypt_ts_curState.minterMd5), 2) + __scrypt_ts_curState.minterMd5 + num2bin(len(pack(__scrypt_ts_curState.max)), 2) + pack(__scrypt_ts_curState.max) + num2bin(len(pack(__scrypt_ts_curState.limit)), 2) + pack(__scrypt_ts_curState.limit) + num2bin(len(pack(__scrypt_ts_curState.premine)), 2) + pack(__scrypt_ts_curState.premine) + num2bin(len(__scrypt_ts_curState.preminerAddr), 2) + __scrypt_ts_curState.preminerAddr + hash160(hash160(__scrypt_ts_curState.tag) + hash160(__scrypt_ts_curState.name) + hash160(__scrypt_ts_curState.symbol) + hash160(pack(__scrypt_ts_curState.decimals)) + hash160(__scrypt_ts_curState.minterMd5) + hash160(pack(__scrypt_ts_curState.max)) + hash160(pack(__scrypt_ts_curState.limit)) + hash160(pack(__scrypt_ts_curState.premine)) + hash160(__scrypt_ts_curState.preminerAddr)));
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[[],[[7,0,30,35]],[[2,0,36,21],[7,0,36,21],[11,0,36,2]],[[2,0,42,16],[5,0,42,16],[9,0,42,2]],[[2,0,47,20],[5,0,47,20],[9,0,47,2]],[[2,0,62,22],[5,0,62,22],[9,0,62,2]],[],[],[[7,0,8,25]],[[2,0,9,7],[8,0,9,2]],[[2,0,11,13],[8,0,11,2]],[[2,0,13,10],[6,0,13,2]],[],[],[[7,0,120,0]],[[2,0,121,7],[8,0,121,2]],[[2,0,124,19],[8,0,124,2]],[],[],[[7,0,81,0]],[[2,0,82,7],[8,0,82,2]],[[2,0,83,8],[8,0,83,2]],[[2,0,84,10],[8,0,84,2]],[[2,0,85,12],[6,0,85,2]],[[2,0,86,13],[8,0,86,2]],[],[],[[7,0,89,0]],[[2,0,90,7],[8,0,90,2]],[[2,0,92,8],[8,0,92,2]],[[2,0,94,10],[8,0,94,2]],[[2,0,96,12],[6,0,96,2]],[[2,0,98,13],[8,0,98,2]],[[2,0,101,7],[6,0,101,2]],[[2,0,103,9],[6,0,103,2]],[[2,0,105,11],[6,0,105,2]],[[2,0,107,16],[8,0,107,2]],[],[],[[7,0,110,0]],[[2,0,111,7],[8,0,111,2]],[[2,0,113,19],[8,0,113,2]],[[2,0,115,19],[7,0,115,2]],[[2,0,117,18],[6,0,117,2]],[]]
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
|
|
2
|
+
struct CAT20GuardConstState {
|
|
3
|
+
bytes[4] tokenScriptHashes;
|
|
4
|
+
int[4] tokenAmounts;
|
|
5
|
+
int[4] tokenBurnAmounts;
|
|
6
|
+
int[6] tokenScriptIndexes;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
struct CAT20State {
|
|
10
|
+
bytes tag;
|
|
11
|
+
bytes ownerAddr;
|
|
12
|
+
int amount;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
struct CAT20ClosedMinterState {
|
|
16
|
+
bytes tag;
|
|
17
|
+
bytes tokenScriptHash;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
struct ClosedMinterCAT20Meta {
|
|
21
|
+
bytes tag;
|
|
22
|
+
bytes name;
|
|
23
|
+
bytes symbol;
|
|
24
|
+
int decimals;
|
|
25
|
+
bytes minterMd5;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
struct OpenMinterCAT20Meta {
|
|
29
|
+
bytes tag;
|
|
30
|
+
bytes name;
|
|
31
|
+
bytes symbol;
|
|
32
|
+
int decimals;
|
|
33
|
+
bytes minterMd5;
|
|
34
|
+
int max;
|
|
35
|
+
int limit;
|
|
36
|
+
int premine;
|
|
37
|
+
bytes preminerAddr;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
struct CAT20OpenMinterState {
|
|
41
|
+
bytes tag;
|
|
42
|
+
bytes tokenScriptHash;
|
|
43
|
+
bool hasMintedBefore;
|
|
44
|
+
int remainingCount;
|
|
45
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[[],[],[],[],[],[],[],[[9,0,7,13]],[[2,0,9,26],[8,0,9,4]],[[2,0,11,4],[14,0,12,30],[20,0,12,8]],[[4,0,15,8],[8,0,15,13],[30,0,15,8],[32,0,15,36]],[],[[2,0,19,4],[18,0,19,11],[29,0,20,25],[33,0,20,8],[50,0,21,20],[71,0,21,8]],[],[],[],[],[],[],[],[],[[4,0,25,39],[10,0,25,14],[35,0,25,39],[47,0,25,52],[98,0,25,99]],[[4,0,26,8],[12,0,26,15],[35,0,26,15],[38,0,26,41],[42,0,26,46]],[[4,0,27,38],[10,0,27,14],[34,0,27,38],[46,0,27,51],[93,0,27,94]],[[4,0,28,8],[12,0,28,15],[30,0,28,34],[41,0,28,44],[53,0,28,15],[56,0,28,59]],[[15,0,31,17]],[[8,0,32,12],[16,0,32,19],[26,0,32,30],[40,0,32,43],[43,0,32,19],[46,0,32,49],[56,0,32,60],[74,0,32,77]],[],[[4,0,34,8],[12,0,34,15]],[],[]]
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import "./cat20/types.scrypt.tpl";
|
|
2
|
+
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/contextUtils.scrypt.tpl";
|
|
3
|
+
import "./cat20/cat20GuardStateLib.scrypt.tpl";
|
|
4
|
+
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/txUtils.scrypt.tpl";
|
|
5
|
+
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/types/structs.scrypt.tpl";
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
contract CAT20Incinerator {
|
|
9
|
+
bytes cat20GuardScriptHash;
|
|
10
|
+
constructor(bytes cat20GuardScriptHash) {
|
|
11
|
+
this.cat20GuardScriptHash = cat20GuardScriptHash;
|
|
12
|
+
}
|
|
13
|
+
public function incinerate(int guardInputIndex, CAT20GuardConstState guardState, SHPreimage __scrypt_ts_shPreimage, bytes __scrypt_ts_spentAmounts, bytes __scrypt_ts_spentDataHashes, bytes __scrypt_ts_spentScriptHashes) {
|
|
14
|
+
require(Tx.checkPreimageSigHashType(ContextUtils.serializeSHPreimage(__scrypt_ts_shPreimage), SigHash.ALL));
|
|
15
|
+
|
|
16
|
+
int __scrypt_ts_inputCount = ContextUtils.checkSpentAmounts(__scrypt_ts_spentAmounts, __scrypt_ts_shPreimage.hashSpentAmounts);
|
|
17
|
+
|
|
18
|
+
ContextUtils.checkSpentScripts(__scrypt_ts_spentScriptHashes, __scrypt_ts_shPreimage.hashSpentScriptHashes, __scrypt_ts_inputCount);
|
|
19
|
+
|
|
20
|
+
ContextUtils.checkSpentDataHashes(__scrypt_ts_spentDataHashes, __scrypt_ts_shPreimage.hashSpentDataHashes, __scrypt_ts_inputCount);
|
|
21
|
+
|
|
22
|
+
bytes currentGuardScriptHash = ContextUtils.getSpentScriptHash(__scrypt_ts_spentScriptHashes, guardInputIndex);
|
|
23
|
+
require(currentGuardScriptHash == this.cat20GuardScriptHash);
|
|
24
|
+
bytes currentGuardStateHash = ContextUtils.getSpentDataHash(__scrypt_ts_spentDataHashes, guardInputIndex);
|
|
25
|
+
require(CAT20GuardStateLib.stateHash(guardState) == currentGuardStateHash);
|
|
26
|
+
loop (4) : i {
|
|
27
|
+
require(guardState.tokenAmounts[i] == guardState.tokenBurnAmounts[i]);
|
|
28
|
+
}
|
|
29
|
+
require(true);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[[],[[8,0,32,13]],[[2,0,34,4],[9,0,34,11],[15,0,34,39],[21,0,34,20],[41,0,34,52],[48,0,36,8]],[[2,0,40,4],[9,0,40,11],[15,0,40,54],[21,0,40,20],[56,0,40,67],[63,0,42,8]],[[2,0,46,4],[9,0,46,11],[15,0,46,54],[21,0,46,20],[56,0,46,67],[63,0,48,8]],[[2,0,52,4],[9,0,52,11],[15,0,52,54],[21,0,52,20],[56,0,52,67],[63,0,54,8]],[[2,0,58,4],[9,0,58,11],[15,0,58,54],[21,0,58,20],[56,0,58,67],[63,0,60,8]],[[2,0,66,4],[9,0,66,11],[15,0,66,32],[21,0,66,20],[34,0,66,58]],[[2,0,68,4],[9,0,68,11],[15,0,68,36],[21,0,68,20],[38,0,68,62]],[[2,0,70,4],[9,0,70,11],[15,0,70,45],[21,0,70,20],[47,0,70,71]],[[2,0,72,4],[9,0,72,11],[15,0,72,43],[21,0,72,20],[45,0,72,69]],[[2,0,74,4],[9,0,74,11],[15,0,74,42],[21,0,74,20],[44,0,74,68]],[[2,0,83,4],[9,0,83,11],[15,0,83,40],[21,0,83,20],[42,0,83,66]],[[2,0,85,4],[9,0,85,11],[15,0,85,38],[21,0,85,20],[40,0,85,64]],[[2,0,87,4],[9,0,87,11],[15,0,87,37],[21,0,87,20],[39,0,87,63]],[]]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
|
|
2
|
+
library ConstantsLib {
|
|
3
|
+
static const bytes ZERO_SHA1256_HASH = Sha256(b'0000000000000000000000000000000000000000000000000000000000000000');
|
|
4
|
+
static const bytes TOKEN_SCRIPT_HASH_PLACEHOLDER_FF = Sha256(b'00000000000000000000000000000000000000000000000000000000000000ff');
|
|
5
|
+
static const bytes TOKEN_SCRIPT_HASH_PLACEHOLDER_FE = Sha256(b'00000000000000000000000000000000000000000000000000000000000000fe');
|
|
6
|
+
static const bytes TOKEN_SCRIPT_HASH_PLACEHOLDER_FD = Sha256(b'00000000000000000000000000000000000000000000000000000000000000fd');
|
|
7
|
+
static const bytes TOKEN_SCRIPT_HASH_PLACEHOLDER_FC = Sha256(b'00000000000000000000000000000000000000000000000000000000000000fc');
|
|
8
|
+
static const bytes _OPCAT_TAG = b'6f70636174';
|
|
9
|
+
static const bytes _OPCAT_VERSION = b'01';
|
|
10
|
+
static const bytes _OPCAT_METADATA_SUB_TAG = b'00';
|
|
11
|
+
static const bytes _OPCAT_MINTER_SUB_TAG = b'01';
|
|
12
|
+
static const bytes _OPCAT_CAT20_SUB_TAG = b'02';
|
|
13
|
+
static const bytes OPCAT_METADATA_TAG = b'6f706361740100';
|
|
14
|
+
static const bytes OPCAT_MINTER_TAG = b'6f706361740101';
|
|
15
|
+
static const bytes OPCAT_CAT20_TAG = b'6f706361740102';
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[[],[],[],[],[],[],[],[[7,0,8,0]],[[2,0,9,9],[6,0,9,2]],[],[],[[9,0,12,13]],[],[[2,0,14,2],[18,0,14,9]],[],[],[],[],[],[],[],[],[],[],[[25,0,17,15],[31,0,17,4]],[[4,0,20,6],[10,0,19,10],[20,0,20,6],[27,0,20,14],[114,0,23,8],[121,0,23,15],[128,0,23,23],[169,0,20,6]],[],[[4,0,26,4],[20,0,26,29]],[],[],[],[],[],[],[],[]]
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/txUtils.scrypt.tpl";
|
|
2
|
+
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/stdUtils.scrypt.tpl";
|
|
3
|
+
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/types/structs.scrypt.tpl";
|
|
4
|
+
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/contextUtils.scrypt.tpl";
|
|
5
|
+
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/stateUtils.scrypt.tpl";
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
struct CounterState {
|
|
9
|
+
int count;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
contract Counter {
|
|
13
|
+
constructor(){}
|
|
14
|
+
public function increase(SHPreimage __scrypt_ts_shPreimage, TxOut __scrypt_ts_changeInfo, CounterState __scrypt_ts_curState, bytes __scrypt_ts_spentAmounts, bytes __scrypt_ts_spentDataHashes) {
|
|
15
|
+
require(Tx.checkPreimageSigHashType(ContextUtils.serializeSHPreimage(__scrypt_ts_shPreimage), SigHash.ALL));
|
|
16
|
+
|
|
17
|
+
int __scrypt_ts_inputCount = ContextUtils.checkSpentAmounts(__scrypt_ts_spentAmounts, __scrypt_ts_shPreimage.hashSpentAmounts);
|
|
18
|
+
|
|
19
|
+
ContextUtils.checkSpentDataHashes(__scrypt_ts_spentDataHashes, __scrypt_ts_shPreimage.hashSpentDataHashes, __scrypt_ts_inputCount);
|
|
20
|
+
|
|
21
|
+
CounterState __scrypt_ts_nextState = __scrypt_ts_curState;
|
|
22
|
+
|
|
23
|
+
StateUtils.checkInputState(__scrypt_ts_shPreimage.inputIndex, Counter.stateHash(__scrypt_ts_curState), __scrypt_ts_spentDataHashes);
|
|
24
|
+
|
|
25
|
+
__scrypt_ts_nextState.count++;
|
|
26
|
+
bytes outputs = TxUtils.buildDataOutput(__scrypt_ts_shPreimage.spentScriptHash, __scrypt_ts_shPreimage.value, sha256(Counter.serializeState(__scrypt_ts_nextState))) +
|
|
27
|
+
(__scrypt_ts_changeInfo.satoshis > 0 ? TxUtils.buildOutput(__scrypt_ts_changeInfo.scriptHash, __scrypt_ts_changeInfo.satoshis) : b'');
|
|
28
|
+
require(hash256(outputs) == __scrypt_ts_shPreimage.hashOutputs);
|
|
29
|
+
}
|
|
30
|
+
static function serializeState(CounterState __scrypt_ts_curState): bytes {
|
|
31
|
+
return num2bin(len(pack(__scrypt_ts_curState.count)), 2) + pack(__scrypt_ts_curState.count) + hash160(hash160(pack(__scrypt_ts_curState.count)));
|
|
32
|
+
}
|
|
33
|
+
static function stateHash(CounterState __scrypt_ts_curState): bytes {
|
|
34
|
+
return sha256(num2bin(len(pack(__scrypt_ts_curState.count)), 2) + pack(__scrypt_ts_curState.count) + hash160(hash160(pack(__scrypt_ts_curState.count))));
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[[],[],[],[],[[9,0,11,13]],[[2,0,13,7],[8,0,13,2]],[[2,0,21,2],[18,0,21,9],[25,0,21,21],[29,0,21,16],[34,0,21,34],[41,0,21,26]],[[4,0,22,4],[12,0,22,16],[20,0,22,11],[21,0,22,25],[26,0,22,30],[32,0,22,11]],[[4,0,23,4],[12,0,23,11],[20,0,23,19],[28,0,23,11],[31,0,23,30],[35,0,23,35]],[],[]]
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/txUtils.scrypt.tpl";
|
|
2
|
+
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/contextUtils.scrypt.tpl";
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
contract P2PKH {
|
|
6
|
+
bytes pkh;
|
|
7
|
+
public function unlock(Sig sig, PubKey pubKey) {
|
|
8
|
+
require(checkSig(sig, pubKey));
|
|
9
|
+
require(hash160(pubKey) == this.pkh);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[[],[[7,0,4,33]],[[2,0,6,16],[9,0,6,4]],[[2,0,7,13],[6,0,7,4]],[[2,0,9,24],[6,0,9,4]],[]]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[[],[],[],[],[[8,0,7,13]],[[2,0,14,2],[18,0,14,9],[34,0,14,33],[40,0,14,25],[50,0,14,46]],[[4,0,15,4],[14,0,15,15],[27,0,15,27]],[[4,0,16,4],[11,0,16,24],[21,0,16,11],[23,0,16,36],[31,0,16,44],[39,0,16,11],[41,0,16,67]],[],[[2,0,25,2],[18,0,25,9],[33,0,25,32],[39,0,25,24],[47,0,25,55],[53,0,25,44]],[[4,0,26,4],[12,0,26,11],[22,0,26,22],[39,0,26,38],[47,0,26,11],[50,0,26,49]],[],[],[[2,0,30,2],[18,0,30,9],[30,0,30,29],[36,0,30,21]],[[4,0,31,4],[12,0,31,11],[16,0,31,15],[24,0,31,11],[27,0,31,26]],[],[],[[2,0,35,2],[18,0,35,9],[33,0,35,35],[39,0,35,24]],[[4,0,36,20],[8,0,36,10],[18,0,36,20],[22,0,36,24]],[[4,0,37,4],[12,0,38,6],[20,0,38,6],[23,0,38,17],[26,0,38,6],[29,0,39,8],[37,0,39,8],[40,0,39,19]],[],[],[[2,0,44,2],[18,0,44,9],[28,0,44,30],[34,0,44,19],[47,0,44,43]],[[4,0,46,4],[11,0,46,11]],[],[]]
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/txUtils.scrypt.tpl";
|
|
2
|
+
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/contextUtils.scrypt.tpl";
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
library OwnerUtils {
|
|
6
|
+
static function toLockingScript(bytes pubKey) : bytes {
|
|
7
|
+
OwnerUtils.checkPubKey(pubKey);
|
|
8
|
+
return b'76a914' + hash160(pubKey) + b'88ac';
|
|
9
|
+
}
|
|
10
|
+
static function checkUserOwner(bytes pubKey, bytes ownerAddr) : bool {
|
|
11
|
+
require(OwnerUtils.toLockingScript(pubKey) == ownerAddr);
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
static function checkPubKey(bytes pubKey) : bool {
|
|
15
|
+
require(len(pubKey) == 33);
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
static function checkOwnerAddr(bytes ownerAddr) : bool {
|
|
19
|
+
int addrLen = len(ownerAddr);
|
|
20
|
+
require(addrLen == 25 || addrLen == 32);
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
static function serialize(bytes ownerAddr) : bytes {
|
|
24
|
+
return ownerAddr;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[[],[],[],[],[[8,0,2,13]],[[2,0,4,2],[18,0,4,9],[22,0,4,16],[26,0,4,13],[29,0,4,27],[33,0,4,24],[38,0,4,36]],[[4,0,5,14],[8,0,5,10],[12,0,5,14],[14,0,5,14],[16,0,5,18]],[[4,0,6,4],[12,0,6,11],[14,0,6,11],[17,0,6,16],[19,0,6,11],[22,0,6,21],[24,0,6,21],[27,0,6,26]],[[4,0,7,4],[11,0,7,11]],[],[]]
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/txUtils.scrypt.tpl";
|
|
2
|
+
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/contextUtils.scrypt.tpl";
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
library SafeMath {
|
|
6
|
+
static function add(int a, int b) : int {
|
|
7
|
+
int c = a + b;
|
|
8
|
+
require(c >= a && c >= b);
|
|
9
|
+
return c;
|
|
10
|
+
}
|
|
11
|
+
}
|