@opcat-labs/cat-sdk 3.1.0 → 3.2.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/artifacts/.templates/cat20/cat20GuardStateLib.scrypt.tpl +2 -2
- package/artifacts/.templates/cat20/cat20Guard_12_12_2.scrypt.map +1 -1
- package/artifacts/.templates/cat20/cat20Guard_12_12_2.scrypt.tpl +19 -2
- package/artifacts/.templates/cat20/cat20Guard_12_12_2.transformer.json +2 -1
- package/artifacts/.templates/cat20/cat20Guard_12_12_4.scrypt.map +1 -1
- package/artifacts/.templates/cat20/cat20Guard_12_12_4.scrypt.tpl +19 -2
- package/artifacts/.templates/cat20/cat20Guard_12_12_4.transformer.json +2 -1
- package/artifacts/.templates/cat20/cat20Guard_6_6_2.scrypt.map +1 -1
- package/artifacts/.templates/cat20/cat20Guard_6_6_2.scrypt.tpl +19 -2
- package/artifacts/.templates/cat20/cat20Guard_6_6_2.transformer.json +2 -1
- package/artifacts/.templates/cat20/cat20Guard_6_6_4.scrypt.map +1 -1
- package/artifacts/.templates/cat20/cat20Guard_6_6_4.scrypt.tpl +19 -2
- package/artifacts/.templates/cat20/cat20Guard_6_6_4.transformer.json +2 -1
- package/artifacts/.templates/cat20/types.scrypt.map +1 -1
- package/artifacts/.templates/cat20/types.scrypt.tpl +1 -0
- package/artifacts/.templates/cat721/cat721GuardStateLib.scrypt.tpl +2 -2
- package/artifacts/.templates/cat721/cat721Guard_12_12_2.scrypt.map +1 -1
- package/artifacts/.templates/cat721/cat721Guard_12_12_2.scrypt.tpl +19 -2
- package/artifacts/.templates/cat721/cat721Guard_12_12_2.transformer.json +2 -1
- package/artifacts/.templates/cat721/cat721Guard_12_12_4.scrypt.map +1 -1
- package/artifacts/.templates/cat721/cat721Guard_12_12_4.scrypt.tpl +19 -2
- package/artifacts/.templates/cat721/cat721Guard_12_12_4.transformer.json +2 -1
- package/artifacts/.templates/cat721/cat721Guard_6_6_2.scrypt.map +1 -1
- package/artifacts/.templates/cat721/cat721Guard_6_6_2.scrypt.tpl +19 -2
- package/artifacts/.templates/cat721/cat721Guard_6_6_2.transformer.json +2 -1
- package/artifacts/.templates/cat721/cat721Guard_6_6_4.scrypt.map +1 -1
- package/artifacts/.templates/cat721/cat721Guard_6_6_4.scrypt.tpl +19 -2
- package/artifacts/.templates/cat721/cat721Guard_6_6_4.transformer.json +2 -1
- package/artifacts/.templates/cat721/types.scrypt.map +1 -1
- package/artifacts/.templates/cat721/types.scrypt.tpl +1 -0
- package/artifacts/cat20/cat20.json +40 -36
- package/artifacts/cat20/cat20.scrypt +18 -18
- package/artifacts/cat20/cat20Admin.json +38 -34
- package/artifacts/cat20/cat20Admin.scrypt +30 -30
- package/artifacts/cat20/cat20GuardStateLib.json +25 -21
- package/artifacts/cat20/cat20GuardStateLib.scrypt +7 -7
- package/artifacts/cat20/cat20Guard_12_12_2.json +75 -32
- package/artifacts/cat20/cat20Guard_12_12_2.scrypt +40 -23
- package/artifacts/cat20/cat20Guard_12_12_4.json +75 -32
- package/artifacts/cat20/cat20Guard_12_12_4.scrypt +40 -23
- package/artifacts/cat20/cat20Guard_6_6_2.json +75 -32
- package/artifacts/cat20/cat20Guard_6_6_2.scrypt +40 -23
- package/artifacts/cat20/cat20Guard_6_6_4.json +75 -32
- package/artifacts/cat20/cat20Guard_6_6_4.scrypt +40 -23
- package/artifacts/cat20/cat20StateLib.json +26 -22
- package/artifacts/cat20/cat20StateLib.scrypt +5 -5
- package/artifacts/cat20/minters/cat20ClosedMinter.json +36 -32
- package/artifacts/cat20/minters/cat20ClosedMinter.scrypt +22 -22
- package/artifacts/cat20/minters/cat20OpenMinter.json +36 -32
- package/artifacts/cat20/minters/cat20OpenMinter.scrypt +18 -18
- package/artifacts/cat20/types.json +9 -5
- package/artifacts/cat20/types.scrypt +6 -5
- package/artifacts/cat721/cat721.json +40 -36
- package/artifacts/cat721/cat721.scrypt +18 -18
- package/artifacts/cat721/cat721GuardStateLib.json +25 -21
- package/artifacts/cat721/cat721GuardStateLib.scrypt +7 -7
- package/artifacts/cat721/cat721Guard_12_12_2.json +74 -31
- package/artifacts/cat721/cat721Guard_12_12_2.scrypt +37 -20
- package/artifacts/cat721/cat721Guard_12_12_4.json +74 -31
- package/artifacts/cat721/cat721Guard_12_12_4.scrypt +37 -20
- package/artifacts/cat721/cat721Guard_6_6_2.json +74 -31
- package/artifacts/cat721/cat721Guard_6_6_2.scrypt +37 -20
- package/artifacts/cat721/cat721Guard_6_6_4.json +74 -31
- package/artifacts/cat721/cat721Guard_6_6_4.scrypt +37 -20
- package/artifacts/cat721/cat721StateLib.json +26 -22
- package/artifacts/cat721/cat721StateLib.scrypt +5 -5
- package/artifacts/cat721/minters/cat721ClosedMinter.json +36 -32
- package/artifacts/cat721/minters/cat721ClosedMinter.scrypt +18 -18
- package/artifacts/cat721/minters/cat721OpenMintInfo.json +5 -5
- package/artifacts/cat721/minters/cat721OpenMintInfo.scrypt +4 -4
- package/artifacts/cat721/minters/cat721OpenMinter.json +41 -37
- package/artifacts/cat721/minters/cat721OpenMinter.scrypt +22 -22
- package/artifacts/cat721/minters/cat721OpenMinterMerkleTree.json +23 -19
- package/artifacts/cat721/minters/cat721OpenMinterMerkleTree.scrypt +6 -6
- package/artifacts/cat721/types.json +9 -5
- package/artifacts/cat721/types.scrypt +6 -5
- package/artifacts/constants.json +2 -2
- package/artifacts/constants.scrypt +1 -1
- package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/backtrace.scrypt +13 -13
- package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/contextUtils.scrypt +16 -16
- package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/stateUtils.scrypt +1 -1
- package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/stdUtils.scrypt +12 -12
- package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/txHashPreimageUtils.scrypt +7 -7
- package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/txUtils.scrypt +12 -12
- package/artifacts/scrypt-ts-opcat/assets/smart-contract/types/structs.scrypt +8 -8
- package/artifacts/types.json +2 -2
- package/artifacts/types.scrypt +2 -2
- package/artifacts/utils/ownerUtils.json +14 -14
- package/artifacts/utils/ownerUtils.scrypt +3 -3
- package/artifacts/utils/safeMath.json +14 -14
- package/artifacts/utils/safeMath.scrypt +1 -1
- package/dist/artifacts/cat20/cat20.json +40 -36
- package/dist/artifacts/cat20/cat20.scrypt +18 -18
- package/dist/artifacts/cat20/cat20Admin.json +38 -34
- package/dist/artifacts/cat20/cat20Admin.scrypt +30 -30
- package/dist/artifacts/cat20/cat20GuardStateLib.json +25 -21
- package/dist/artifacts/cat20/cat20GuardStateLib.scrypt +7 -7
- package/dist/artifacts/cat20/cat20Guard_12_12_2.json +75 -32
- package/dist/artifacts/cat20/cat20Guard_12_12_2.scrypt +40 -23
- package/dist/artifacts/cat20/cat20Guard_12_12_4.json +75 -32
- package/dist/artifacts/cat20/cat20Guard_12_12_4.scrypt +40 -23
- package/dist/artifacts/cat20/cat20Guard_6_6_2.json +75 -32
- package/dist/artifacts/cat20/cat20Guard_6_6_2.scrypt +40 -23
- package/dist/artifacts/cat20/cat20Guard_6_6_4.json +75 -32
- package/dist/artifacts/cat20/cat20Guard_6_6_4.scrypt +40 -23
- package/dist/artifacts/cat20/cat20StateLib.json +26 -22
- package/dist/artifacts/cat20/cat20StateLib.scrypt +5 -5
- package/dist/artifacts/cat20/minters/cat20ClosedMinter.json +36 -32
- package/dist/artifacts/cat20/minters/cat20ClosedMinter.scrypt +22 -22
- package/dist/artifacts/cat20/minters/cat20OpenMinter.json +36 -32
- package/dist/artifacts/cat20/minters/cat20OpenMinter.scrypt +18 -18
- package/dist/artifacts/cat20/types.json +9 -5
- package/dist/artifacts/cat20/types.scrypt +6 -5
- package/dist/artifacts/cat721/cat721.json +40 -36
- package/dist/artifacts/cat721/cat721.scrypt +18 -18
- package/dist/artifacts/cat721/cat721GuardStateLib.json +25 -21
- package/dist/artifacts/cat721/cat721GuardStateLib.scrypt +7 -7
- package/dist/artifacts/cat721/cat721Guard_12_12_2.json +74 -31
- package/dist/artifacts/cat721/cat721Guard_12_12_2.scrypt +37 -20
- package/dist/artifacts/cat721/cat721Guard_12_12_4.json +74 -31
- package/dist/artifacts/cat721/cat721Guard_12_12_4.scrypt +37 -20
- package/dist/artifacts/cat721/cat721Guard_6_6_2.json +74 -31
- package/dist/artifacts/cat721/cat721Guard_6_6_2.scrypt +37 -20
- package/dist/artifacts/cat721/cat721Guard_6_6_4.json +74 -31
- package/dist/artifacts/cat721/cat721Guard_6_6_4.scrypt +37 -20
- package/dist/artifacts/cat721/cat721StateLib.json +26 -22
- package/dist/artifacts/cat721/cat721StateLib.scrypt +5 -5
- package/dist/artifacts/cat721/minters/cat721ClosedMinter.json +36 -32
- package/dist/artifacts/cat721/minters/cat721ClosedMinter.scrypt +18 -18
- package/dist/artifacts/cat721/minters/cat721OpenMintInfo.json +5 -5
- package/dist/artifacts/cat721/minters/cat721OpenMintInfo.scrypt +4 -4
- package/dist/artifacts/cat721/minters/cat721OpenMinter.json +41 -37
- package/dist/artifacts/cat721/minters/cat721OpenMinter.scrypt +22 -22
- package/dist/artifacts/cat721/minters/cat721OpenMinterMerkleTree.json +23 -19
- package/dist/artifacts/cat721/minters/cat721OpenMinterMerkleTree.scrypt +6 -6
- package/dist/artifacts/cat721/types.json +9 -5
- package/dist/artifacts/cat721/types.scrypt +6 -5
- package/dist/artifacts/constants.json +2 -2
- package/dist/artifacts/constants.scrypt +1 -1
- package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/backtrace.scrypt +13 -13
- package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/contextUtils.scrypt +16 -16
- package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/stateUtils.scrypt +1 -1
- package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/stdUtils.scrypt +12 -12
- package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/txHashPreimageUtils.scrypt +7 -7
- package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/txUtils.scrypt +12 -12
- package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/types/structs.scrypt +8 -8
- package/dist/artifacts/types.json +2 -2
- package/dist/artifacts/types.scrypt +2 -2
- package/dist/artifacts/utils/ownerUtils.json +14 -14
- package/dist/artifacts/utils/ownerUtils.scrypt +3 -3
- package/dist/artifacts/utils/safeMath.json +14 -14
- package/dist/artifacts/utils/safeMath.scrypt +1 -1
- package/dist/cjs/contracts/cat20/cat20GuardStateLib.js +2 -1
- package/dist/cjs/contracts/cat20/cat20GuardStateLib.js.map +1 -1
- package/dist/cjs/contracts/cat20/cat20Guard_12_12_2.js +19 -0
- package/dist/cjs/contracts/cat20/cat20Guard_12_12_2.js.map +1 -1
- package/dist/cjs/contracts/cat20/cat20Guard_12_12_4.js +19 -0
- package/dist/cjs/contracts/cat20/cat20Guard_12_12_4.js.map +1 -1
- package/dist/cjs/contracts/cat20/cat20Guard_6_6_2.js +19 -0
- package/dist/cjs/contracts/cat20/cat20Guard_6_6_2.js.map +1 -1
- package/dist/cjs/contracts/cat20/cat20Guard_6_6_4.js +19 -0
- package/dist/cjs/contracts/cat20/cat20Guard_6_6_4.js.map +1 -1
- package/dist/cjs/contracts/cat721/cat721GuardStateLib.js +2 -1
- package/dist/cjs/contracts/cat721/cat721GuardStateLib.js.map +1 -1
- package/dist/cjs/contracts/cat721/cat721Guard_12_12_2.js +19 -0
- package/dist/cjs/contracts/cat721/cat721Guard_12_12_2.js.map +1 -1
- package/dist/cjs/contracts/cat721/cat721Guard_12_12_4.js +19 -0
- package/dist/cjs/contracts/cat721/cat721Guard_12_12_4.js.map +1 -1
- package/dist/cjs/contracts/cat721/cat721Guard_6_6_2.js +19 -0
- package/dist/cjs/contracts/cat721/cat721Guard_6_6_2.js.map +1 -1
- package/dist/cjs/contracts/cat721/cat721Guard_6_6_4.js +19 -0
- package/dist/cjs/contracts/cat721/cat721Guard_6_6_4.js.map +1 -1
- package/dist/cjs/contracts/cat721/types.js.map +1 -1
- package/dist/cjs/features/cat20/admin/burnByAdmin.js +2 -1
- package/dist/cjs/features/cat20/admin/burnByAdmin.js.map +1 -1
- package/dist/cjs/features/cat20/burn/burn.js +2 -1
- package/dist/cjs/features/cat20/burn/burn.js.map +1 -1
- package/dist/cjs/features/cat20/guard/destroyGuard.js +49 -0
- package/dist/cjs/features/cat20/guard/destroyGuard.js.map +1 -0
- package/dist/cjs/features/cat20/index.js +3 -1
- package/dist/cjs/features/cat20/index.js.map +1 -1
- package/dist/cjs/features/cat20/send/contractSend.js +2 -1
- package/dist/cjs/features/cat20/send/contractSend.js.map +1 -1
- package/dist/cjs/features/cat20/send/singleSend.js +4 -3
- package/dist/cjs/features/cat20/send/singleSend.js.map +1 -1
- package/dist/cjs/features/cat721/burn/burn.js +2 -1
- package/dist/cjs/features/cat721/burn/burn.js.map +1 -1
- package/dist/cjs/features/cat721/guard/destroyGuard.js +49 -0
- package/dist/cjs/features/cat721/guard/destroyGuard.js.map +1 -0
- package/dist/cjs/features/cat721/index.js +3 -1
- package/dist/cjs/features/cat721/index.js.map +1 -1
- package/dist/cjs/features/cat721/send/singleSend.js +4 -3
- package/dist/cjs/features/cat721/send/singleSend.js.map +1 -1
- package/dist/cjs/utils/contractPeripheral.js +8 -4
- package/dist/cjs/utils/contractPeripheral.js.map +1 -1
- package/dist/esm/contracts/cat20/cat20GuardStateLib.js +2 -1
- package/dist/esm/contracts/cat20/cat20GuardStateLib.js.map +1 -1
- package/dist/esm/contracts/cat20/cat20Guard_12_12_2.js +20 -1
- package/dist/esm/contracts/cat20/cat20Guard_12_12_2.js.map +1 -1
- package/dist/esm/contracts/cat20/cat20Guard_12_12_4.js +20 -1
- package/dist/esm/contracts/cat20/cat20Guard_12_12_4.js.map +1 -1
- package/dist/esm/contracts/cat20/cat20Guard_6_6_2.js +20 -1
- package/dist/esm/contracts/cat20/cat20Guard_6_6_2.js.map +1 -1
- package/dist/esm/contracts/cat20/cat20Guard_6_6_4.js +20 -1
- package/dist/esm/contracts/cat20/cat20Guard_6_6_4.js.map +1 -1
- package/dist/esm/contracts/cat721/cat721GuardStateLib.js +2 -1
- package/dist/esm/contracts/cat721/cat721GuardStateLib.js.map +1 -1
- package/dist/esm/contracts/cat721/cat721Guard_12_12_2.js +20 -1
- package/dist/esm/contracts/cat721/cat721Guard_12_12_2.js.map +1 -1
- package/dist/esm/contracts/cat721/cat721Guard_12_12_4.js +20 -1
- package/dist/esm/contracts/cat721/cat721Guard_12_12_4.js.map +1 -1
- package/dist/esm/contracts/cat721/cat721Guard_6_6_2.js +20 -1
- package/dist/esm/contracts/cat721/cat721Guard_6_6_2.js.map +1 -1
- package/dist/esm/contracts/cat721/cat721Guard_6_6_4.js +20 -1
- package/dist/esm/contracts/cat721/cat721Guard_6_6_4.js.map +1 -1
- package/dist/esm/contracts/cat721/types.js.map +1 -1
- package/dist/esm/features/cat20/admin/burnByAdmin.js +2 -1
- package/dist/esm/features/cat20/admin/burnByAdmin.js.map +1 -1
- package/dist/esm/features/cat20/burn/burn.js +3 -2
- package/dist/esm/features/cat20/burn/burn.js.map +1 -1
- package/dist/esm/features/cat20/guard/destroyGuard.js +46 -0
- package/dist/esm/features/cat20/guard/destroyGuard.js.map +1 -0
- package/dist/esm/features/cat20/index.js +1 -0
- package/dist/esm/features/cat20/index.js.map +1 -1
- package/dist/esm/features/cat20/send/contractSend.js +2 -1
- package/dist/esm/features/cat20/send/contractSend.js.map +1 -1
- package/dist/esm/features/cat20/send/singleSend.js +5 -4
- package/dist/esm/features/cat20/send/singleSend.js.map +1 -1
- package/dist/esm/features/cat721/burn/burn.js +3 -2
- package/dist/esm/features/cat721/burn/burn.js.map +1 -1
- package/dist/esm/features/cat721/guard/destroyGuard.js +46 -0
- package/dist/esm/features/cat721/guard/destroyGuard.js.map +1 -0
- package/dist/esm/features/cat721/index.js +1 -0
- package/dist/esm/features/cat721/index.js.map +1 -1
- package/dist/esm/features/cat721/send/singleSend.js +5 -4
- package/dist/esm/features/cat721/send/singleSend.js.map +1 -1
- package/dist/esm/utils/contractPeripheral.js +8 -4
- package/dist/esm/utils/contractPeripheral.js.map +1 -1
- package/dist/types/contracts/cat20/cat20GuardStateLib.d.ts.map +1 -1
- package/dist/types/contracts/cat20/cat20Guard_12_12_2.d.ts +9 -1
- package/dist/types/contracts/cat20/cat20Guard_12_12_2.d.ts.map +1 -1
- package/dist/types/contracts/cat20/cat20Guard_12_12_4.d.ts +9 -1
- package/dist/types/contracts/cat20/cat20Guard_12_12_4.d.ts.map +1 -1
- package/dist/types/contracts/cat20/cat20Guard_6_6_2.d.ts +9 -1
- package/dist/types/contracts/cat20/cat20Guard_6_6_2.d.ts.map +1 -1
- package/dist/types/contracts/cat20/cat20Guard_6_6_4.d.ts +9 -1
- package/dist/types/contracts/cat20/cat20Guard_6_6_4.d.ts.map +1 -1
- package/dist/types/contracts/cat20/types.d.ts +7 -2
- package/dist/types/contracts/cat20/types.d.ts.map +1 -1
- package/dist/types/contracts/cat721/cat721GuardStateLib.d.ts.map +1 -1
- package/dist/types/contracts/cat721/cat721Guard_12_12_2.d.ts +9 -1
- package/dist/types/contracts/cat721/cat721Guard_12_12_2.d.ts.map +1 -1
- package/dist/types/contracts/cat721/cat721Guard_12_12_4.d.ts +9 -1
- package/dist/types/contracts/cat721/cat721Guard_12_12_4.d.ts.map +1 -1
- package/dist/types/contracts/cat721/cat721Guard_6_6_2.d.ts +9 -1
- package/dist/types/contracts/cat721/cat721Guard_6_6_2.d.ts.map +1 -1
- package/dist/types/contracts/cat721/cat721Guard_6_6_4.d.ts +9 -1
- package/dist/types/contracts/cat721/cat721Guard_6_6_4.d.ts.map +1 -1
- package/dist/types/contracts/cat721/types.d.ts +6 -0
- package/dist/types/contracts/cat721/types.d.ts.map +1 -1
- package/dist/types/features/cat20/admin/burnByAdmin.d.ts.map +1 -1
- package/dist/types/features/cat20/burn/burn.d.ts.map +1 -1
- package/dist/types/features/cat20/guard/destroyGuard.d.ts +21 -0
- package/dist/types/features/cat20/guard/destroyGuard.d.ts.map +1 -0
- package/dist/types/features/cat20/index.d.ts +1 -0
- package/dist/types/features/cat20/index.d.ts.map +1 -1
- package/dist/types/features/cat20/send/contractSend.d.ts.map +1 -1
- package/dist/types/features/cat20/send/singleSend.d.ts +1 -1
- package/dist/types/features/cat20/send/singleSend.d.ts.map +1 -1
- package/dist/types/features/cat721/burn/burn.d.ts.map +1 -1
- package/dist/types/features/cat721/guard/destroyGuard.d.ts +21 -0
- package/dist/types/features/cat721/guard/destroyGuard.d.ts.map +1 -0
- package/dist/types/features/cat721/index.d.ts +1 -0
- package/dist/types/features/cat721/index.d.ts.map +1 -1
- package/dist/types/features/cat721/send/singleSend.d.ts +1 -1
- package/dist/types/features/cat721/send/singleSend.d.ts.map +1 -1
- package/dist/types/utils/contractPeripheral.d.ts +4 -4
- package/dist/types/utils/contractPeripheral.d.ts.map +1 -1
- package/package.json +4 -4
- package/scrypt.index.json +10 -10
|
@@ -29,9 +29,9 @@ library CAT20GuardStateLib {
|
|
|
29
29
|
return true;
|
|
30
30
|
}
|
|
31
31
|
static function serializeState(CAT20GuardConstState __scrypt_ts_curState): bytes {
|
|
32
|
-
return num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(__scrypt_ts_curState.tokenScriptIndexes));
|
|
32
|
+
return num2bin(len(__scrypt_ts_curState.deployerAddr), 2) + __scrypt_ts_curState.deployerAddr + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.deployerAddr) + hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(__scrypt_ts_curState.tokenScriptIndexes));
|
|
33
33
|
}
|
|
34
34
|
static function stateHash(CAT20GuardConstState __scrypt_ts_curState): bytes {
|
|
35
|
-
return sha256(num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(__scrypt_ts_curState.tokenScriptIndexes)));
|
|
35
|
+
return sha256(num2bin(len(__scrypt_ts_curState.deployerAddr), 2) + __scrypt_ts_curState.deployerAddr + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.deployerAddr) + hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(__scrypt_ts_curState.tokenScriptIndexes)));
|
|
36
36
|
}
|
|
37
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[[],[],[],[],[],[],[],[],[],[],[],[],[[9,0,
|
|
1
|
+
[[],[],[],[],[],[],[],[],[],[],[],[],[],[[9,0,45,13]],[],[[2,0,47,4],[18,0,47,11],[25,0,48,25],[30,0,48,25],[35,0,48,8],[52,0,52,33],[57,0,52,33],[62,0,52,8],[87,0,56,22],[90,0,56,22],[95,0,56,8],[109,0,62,32],[112,0,62,32],[117,0,62,8],[141,0,67,24],[144,0,67,24],[149,0,67,8],[165,0,71,21],[175,0,71,21],[180,0,71,8],[193,0,73,21],[197,0,73,8]],[],[],[],[],[],[],[],[],[],[],[],[],[[4,0,77,8],[22,0,77,27],[63,0,77,56]],[[4,0,80,30],[8,0,80,12],[26,0,80,30]],[[4,0,81,39],[9,0,81,39],[13,0,81,14],[40,0,85,16],[52,0,85,29],[87,0,86,16],[99,0,86,29],[134,0,87,16],[146,0,87,29],[181,0,88,16],[193,0,88,29]],[[15,0,90,17]],[[8,0,91,12],[11,0,91,16],[13,0,91,16],[16,0,91,21]],[[10,0,92,16],[39,0,92,34],[58,0,92,52],[59,0,92,59],[63,0,92,23],[66,0,92,66],[90,0,92,90],[91,0,92,97]],[[10,0,93,16],[39,0,93,34],[53,0,93,47],[54,0,93,54],[58,0,93,23],[61,0,93,61]],[[10,0,94,16],[39,0,94,34],[57,0,94,51],[58,0,94,58],[62,0,94,23],[65,0,94,65]],[],[],[[15,0,98,17]],[[8,0,99,12],[32,0,99,27],[51,0,99,45],[54,0,99,16],[57,0,99,51],[81,0,99,75]],[[10,0,100,16],[25,0,100,16]],[],[],[[15,0,104,17]],[[8,0,105,12],[11,0,105,16],[13,0,105,16],[15,0,105,20],[16,0,105,27]],[[10,0,106,16],[39,0,106,34],[58,0,106,52],[61,0,106,23],[64,0,106,58],[88,0,106,82]],[[10,0,107,16],[18,0,108,20],[43,0,108,35],[62,0,108,53],[66,0,108,20],[69,0,108,60]],[],[[10,0,111,16],[39,0,111,34],[58,0,111,52],[61,0,111,23],[64,0,111,58],[88,0,111,82]],[],[],[[4,0,114,8],[12,0,114,15],[28,0,114,15],[30,0,114,33]],[[4,0,120,31],[7,0,120,31],[11,0,120,14],[28,0,120,31],[35,0,120,36],[38,0,120,40]],[[4,0,121,34],[8,0,121,12],[30,0,121,34],[31,0,121,35]],[[4,0,122,27],[8,0,122,14]],[[16,0,123,17]],[[8,0,124,37],[12,0,124,18],[31,0,124,37],[59,0,124,70],[79,0,124,90],[80,0,124,97],[85,0,124,101],[86,0,124,108],[88,0,124,108],[90,0,124,112]],[[8,0,125,12],[11,0,125,16],[13,0,125,16],[15,0,125,20]],[[10,0,126,16],[18,0,126,23],[35,0,126,23],[37,0,126,42]],[[10,0,127,16],[13,0,127,20],[30,0,127,20],[33,0,127,40],[34,0,127,41]],[[12,0,130,24],[18,0,129,26],[57,0,130,35],[76,0,130,53],[77,0,130,60]],[[12,0,131,20],[20,0,131,27],[36,0,131,27],[39,0,131,46],[51,0,131,59],[102,0,131,106],[103,0,131,113]],[[12,0,132,20],[25,0,132,34],[37,0,132,45],[49,0,132,57]],[[12,0,133,20],[20,0,133,27],[32,0,133,40],[79,0,133,83],[80,0,133,90],[84,0,133,27],[87,0,133,97],[100,0,133,111],[111,0,133,121],[123,0,133,133]],[[12,0,134,20],[27,0,134,35],[28,0,134,42],[47,0,134,20],[49,0,134,63],[57,0,134,72],[62,0,135,24],[77,0,135,39],[78,0,135,46],[98,0,136,24],[110,0,136,36],[112,0,136,39]],[[12,0,138,20],[32,0,138,20],[34,0,139,24],[51,0,139,24],[53,0,139,43],[75,0,140,30],[94,0,141,30]],[],[],[[10,0,144,16],[18,0,144,23],[35,0,144,23],[38,0,144,43],[39,0,144,44]],[],[],[[4,0,150,8],[12,0,151,12],[32,0,151,12],[35,0,151,35],[37,0,151,12],[40,0,151,41],[60,0,151,41],[63,0,151,64],[79,0,151,64],[81,0,151,82]],[[4,0,156,8],[12,0,156,15],[24,0,156,15],[27,0,156,30],[29,0,156,15],[32,0,156,36],[44,0,156,36],[47,0,156,51]],[[4,0,157,32],[7,0,157,32],[11,0,157,14],[29,0,157,32],[36,0,157,37],[39,0,157,41]],[[4,0,158,22],[10,0,158,12],[20,0,158,35]],[[16,0,159,17]],[[8,0,160,12],[11,0,160,16],[13,0,160,16],[15,0,160,20]],[[10,0,161,46],[16,0,161,22],[40,0,161,46],[64,0,161,70]],[[10,0,162,16],[18,0,162,23],[22,0,162,27],[45,0,162,23],[47,0,162,52]],[[10,0,163,45],[14,0,163,22],[37,0,163,45],[60,0,163,68]],[[10,0,164,16],[18,0,164,23],[39,0,164,23],[41,0,164,46]],[[10,0,165,16],[13,0,165,20],[34,0,165,20],[37,0,165,44],[38,0,165,45]],[[12,0,167,40],[16,0,167,26],[30,0,167,40],[43,0,167,53]],[[12,0,168,20],[20,0,168,27],[32,0,168,27],[34,0,168,41]],[[12,0,169,20],[28,0,169,36],[29,0,169,43],[52,0,169,20],[54,0,169,68],[62,0,169,77],[67,0,170,24],[83,0,170,40],[84,0,170,47],[108,0,171,24]],[[12,0,173,43],[18,0,173,26],[35,0,173,43],[48,0,173,57],[59,0,173,67],[60,0,174,35],[83,0,175,32]],[[12,0,177,20],[20,0,177,27],[36,0,177,43],[39,0,177,27],[42,0,177,49]],[[12,0,179,24],[18,0,178,26],[57,0,179,35],[76,0,179,53],[77,0,179,60]],[[12,0,180,20],[20,0,180,20],[23,0,180,31],[30,0,180,39],[47,0,181,24],[64,0,182,24],[79,0,182,39],[83,0,183,24]],[],[[12,0,187,20],[20,0,187,27],[33,0,187,40],[36,0,187,27],[39,0,187,46]],[[23,0,189,29]],[[14,0,190,24],[22,0,190,31],[44,0,190,31],[68,0,190,67],[87,0,190,85]],[],[[12,0,192,20],[20,0,192,20],[23,0,192,31],[30,0,192,39],[47,0,193,24],[70,0,194,24],[85,0,194,39],[89,0,195,24],[105,0,195,40]],[],[],[[10,0,199,16],[18,0,199,23],[22,0,199,27],[46,0,199,51],[50,0,199,23],[53,0,199,58]],[[10,0,200,16],[18,0,200,23],[41,0,200,46],[44,0,200,23],[47,0,200,52],[48,0,200,53]],[[10,0,201,16],[18,0,201,23],[31,0,201,36],[34,0,201,23],[37,0,201,42]],[[10,0,202,16],[18,0,202,23],[34,0,202,39],[37,0,202,23],[40,0,202,58]],[[10,0,203,16],[18,0,203,23],[33,0,203,38],[36,0,203,23],[39,0,203,44]],[],[],[[15,0,208,17]],[[8,0,209,12],[16,0,209,19],[31,0,209,34],[34,0,209,19],[58,0,209,51],[72,0,209,64]],[[8,0,210,12],[16,0,211,16],[31,0,211,31],[34,0,211,16],[37,0,212,16],[45,0,212,25],[50,0,212,29],[66,0,212,45],[91,0,212,60],[109,0,212,77]],[[8,0,215,12],[11,0,215,16],[13,0,215,16],[15,0,215,20],[16,0,215,27]],[[10,0,216,16],[18,0,216,23],[33,0,216,38],[36,0,216,23],[38,0,216,43]],[],[[10,0,218,16],[18,0,218,23],[33,0,218,38],[36,0,218,23],[39,0,218,44]],[[10,0,219,16],[18,0,219,23],[34,0,219,39],[37,0,219,23],[40,0,219,45]],[[10,0,221,16],[39,0,221,34],[53,0,221,47],[56,0,221,23],[59,0,221,53]],[[10,0,222,16],[39,0,222,34],[57,0,222,51],[60,0,222,23],[63,0,222,57]],[],[],[[4,0,227,8],[20,0,227,33]],[],[[2,0,238,4],[18,0,238,11],[26,0,238,28],[30,0,238,19],[39,0,238,45],[46,0,238,33]],[],[],[],[],[],[],[],[],[],[],[[4,0,239,8],[14,0,239,19],[30,0,239,34],[63,0,239,57]],[[4,0,240,8],[12,0,240,20],[20,0,240,15],[21,0,240,29],[30,0,240,38],[40,0,240,15]],[[4,0,241,8]],[],[],[],[],[],[],[],[],[]]
|
|
@@ -5,6 +5,7 @@ import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-lib
|
|
|
5
5
|
import "./cat20StateLib.scrypt.tpl";
|
|
6
6
|
import "../utils/safeMath.scrypt.tpl";
|
|
7
7
|
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/txUtils.scrypt.tpl";
|
|
8
|
+
import "../utils/ownerUtils.scrypt.tpl";
|
|
8
9
|
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/stdUtils.scrypt.tpl";
|
|
9
10
|
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/types/structs.scrypt.tpl";
|
|
10
11
|
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/stateUtils.scrypt.tpl";
|
|
@@ -115,10 +116,26 @@ contract CAT20Guard_12_12_2 {
|
|
|
115
116
|
}
|
|
116
117
|
require(hash256(outputs) == __scrypt_ts_shPreimage.hashOutputs);
|
|
117
118
|
}
|
|
119
|
+
public function destroy(Sig userSig, PubKey userPubKey, SHPreimage __scrypt_ts_shPreimage, Sig __scrypt_ts_preimageSig, TxOut __scrypt_ts_changeInfo, CAT20GuardConstState __scrypt_ts_curState, bytes __scrypt_ts_spentAmounts, bytes __scrypt_ts_spentDataHashes) {
|
|
120
|
+
require(checkDataSig(Sig(__scrypt_ts_preimageSig[0 : len(__scrypt_ts_preimageSig) - 1]), sha256(ContextUtils.serializeSHPreimage(__scrypt_ts_shPreimage)), ContextUtils.pubKey) && checkSig(__scrypt_ts_preimageSig, ContextUtils.pubKey));
|
|
121
|
+
|
|
122
|
+
int __scrypt_ts_inputCount = ContextUtils.checkSpentAmounts(__scrypt_ts_spentAmounts, __scrypt_ts_shPreimage.hashSpentAmounts);
|
|
123
|
+
|
|
124
|
+
ContextUtils.checkSpentDataHashes(__scrypt_ts_spentDataHashes, __scrypt_ts_shPreimage.hashSpentDataHashes, __scrypt_ts_inputCount);
|
|
125
|
+
|
|
126
|
+
CAT20GuardConstState __scrypt_ts_nextState = __scrypt_ts_curState;
|
|
127
|
+
|
|
128
|
+
StateUtils.checkInputState(__scrypt_ts_shPreimage.inputIndex, CAT20Guard_12_12_2.stateHash(__scrypt_ts_curState), __scrypt_ts_spentDataHashes);
|
|
129
|
+
|
|
130
|
+
OwnerUtils.checkUserOwner(userPubKey, __scrypt_ts_nextState.deployerAddr);
|
|
131
|
+
require(checkSig(userSig, userPubKey));
|
|
132
|
+
require(hash256(
|
|
133
|
+
(__scrypt_ts_changeInfo.satoshis > 0 ? TxUtils.buildOutput(__scrypt_ts_changeInfo.scriptHash, __scrypt_ts_changeInfo.satoshis) : b'')) == __scrypt_ts_shPreimage.hashOutputs);
|
|
134
|
+
}
|
|
118
135
|
static function serializeState(CAT20GuardConstState __scrypt_ts_curState): bytes {
|
|
119
|
-
return num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(__scrypt_ts_curState.tokenScriptIndexes));
|
|
136
|
+
return num2bin(len(__scrypt_ts_curState.deployerAddr), 2) + __scrypt_ts_curState.deployerAddr + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.deployerAddr) + hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(__scrypt_ts_curState.tokenScriptIndexes));
|
|
120
137
|
}
|
|
121
138
|
static function stateHash(CAT20GuardConstState __scrypt_ts_curState): bytes {
|
|
122
|
-
return sha256(num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(__scrypt_ts_curState.tokenScriptIndexes)));
|
|
139
|
+
return sha256(num2bin(len(__scrypt_ts_curState.deployerAddr), 2) + __scrypt_ts_curState.deployerAddr + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.deployerAddr) + hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(__scrypt_ts_curState.tokenScriptIndexes)));
|
|
123
140
|
}
|
|
124
141
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[[],[],[],[],[],[],[],[],[],[],[],[],[[9,0,
|
|
1
|
+
[[],[],[],[],[],[],[],[],[],[],[],[],[],[[9,0,45,13]],[],[[2,0,47,4],[18,0,47,11],[25,0,48,25],[30,0,48,25],[35,0,48,8],[52,0,52,33],[57,0,52,33],[62,0,52,8],[87,0,56,22],[90,0,56,22],[95,0,56,8],[109,0,62,32],[112,0,62,32],[117,0,62,8],[141,0,67,24],[144,0,67,24],[149,0,67,8],[165,0,71,21],[175,0,71,21],[180,0,71,8],[193,0,73,21],[197,0,73,8]],[],[],[],[],[],[],[],[],[],[],[],[],[[4,0,77,8],[22,0,77,27],[63,0,77,56]],[[4,0,80,30],[8,0,80,12],[26,0,80,30]],[[4,0,81,39],[9,0,81,39],[13,0,81,14],[40,0,85,16],[52,0,85,29],[87,0,86,16],[99,0,86,29],[134,0,87,16],[146,0,87,29],[181,0,88,16],[193,0,88,29]],[[15,0,90,17]],[[8,0,91,12],[11,0,91,16],[13,0,91,16],[16,0,91,21]],[[10,0,92,16],[39,0,92,34],[58,0,92,52],[59,0,92,59],[63,0,92,23],[66,0,92,66],[90,0,92,90],[91,0,92,97]],[[10,0,93,16],[39,0,93,34],[53,0,93,47],[54,0,93,54],[58,0,93,23],[61,0,93,61]],[[10,0,94,16],[39,0,94,34],[57,0,94,51],[58,0,94,58],[62,0,94,23],[65,0,94,65]],[],[],[[15,0,98,17]],[[8,0,99,12],[32,0,99,27],[51,0,99,45],[54,0,99,16],[57,0,99,51],[81,0,99,75]],[[10,0,100,16],[25,0,100,16]],[],[],[[15,0,104,17]],[[8,0,105,12],[11,0,105,16],[13,0,105,16],[15,0,105,20],[16,0,105,27]],[[10,0,106,16],[39,0,106,34],[58,0,106,52],[61,0,106,23],[64,0,106,58],[88,0,106,82]],[[10,0,107,16],[18,0,108,20],[43,0,108,35],[62,0,108,53],[66,0,108,20],[69,0,108,60]],[],[[10,0,111,16],[39,0,111,34],[58,0,111,52],[61,0,111,23],[64,0,111,58],[88,0,111,82]],[],[],[[4,0,114,8],[12,0,114,15],[28,0,114,15],[30,0,114,33]],[[4,0,120,31],[7,0,120,31],[11,0,120,14],[28,0,120,31],[35,0,120,36],[38,0,120,40]],[[4,0,121,34],[8,0,121,12],[30,0,121,34],[31,0,121,35]],[[4,0,122,27],[8,0,122,14]],[[16,0,123,17]],[[8,0,124,37],[12,0,124,18],[31,0,124,37],[59,0,124,70],[79,0,124,90],[80,0,124,97],[85,0,124,101],[86,0,124,108],[88,0,124,108],[90,0,124,112]],[[8,0,125,12],[11,0,125,16],[13,0,125,16],[15,0,125,20]],[[10,0,126,16],[18,0,126,23],[35,0,126,23],[37,0,126,42]],[[10,0,127,16],[13,0,127,20],[30,0,127,20],[33,0,127,40],[34,0,127,41]],[[12,0,130,24],[18,0,129,26],[57,0,130,35],[76,0,130,53],[77,0,130,60]],[[12,0,131,20],[20,0,131,27],[36,0,131,27],[39,0,131,46],[51,0,131,59],[102,0,131,106],[103,0,131,113]],[[12,0,132,20],[25,0,132,34],[37,0,132,45],[49,0,132,57]],[[12,0,133,20],[20,0,133,27],[32,0,133,40],[79,0,133,83],[80,0,133,90],[84,0,133,27],[87,0,133,97],[100,0,133,111],[111,0,133,121],[123,0,133,133]],[[12,0,134,20],[27,0,134,35],[28,0,134,42],[47,0,134,20],[49,0,134,63],[57,0,134,72],[62,0,135,24],[77,0,135,39],[78,0,135,46],[98,0,136,24],[110,0,136,36],[112,0,136,39]],[[12,0,138,20],[32,0,138,20],[34,0,139,24],[51,0,139,24],[53,0,139,43],[75,0,140,30],[94,0,141,30]],[],[],[[10,0,144,16],[18,0,144,23],[35,0,144,23],[38,0,144,43],[39,0,144,44]],[],[],[[4,0,150,8],[12,0,151,12],[32,0,151,12],[35,0,151,35],[37,0,151,12],[40,0,151,41],[60,0,151,41],[63,0,151,64],[79,0,151,64],[81,0,151,82]],[[4,0,156,8],[12,0,156,15],[24,0,156,15],[27,0,156,30],[29,0,156,15],[32,0,156,36],[44,0,156,36],[47,0,156,51]],[[4,0,157,32],[7,0,157,32],[11,0,157,14],[29,0,157,32],[36,0,157,37],[39,0,157,41]],[[4,0,158,22],[10,0,158,12],[20,0,158,35]],[[16,0,159,17]],[[8,0,160,12],[11,0,160,16],[13,0,160,16],[15,0,160,20]],[[10,0,161,46],[16,0,161,22],[40,0,161,46],[64,0,161,70]],[[10,0,162,16],[18,0,162,23],[22,0,162,27],[45,0,162,23],[47,0,162,52]],[[10,0,163,45],[14,0,163,22],[37,0,163,45],[60,0,163,68]],[[10,0,164,16],[18,0,164,23],[39,0,164,23],[41,0,164,46]],[[10,0,165,16],[13,0,165,20],[34,0,165,20],[37,0,165,44],[38,0,165,45]],[[12,0,167,40],[16,0,167,26],[30,0,167,40],[43,0,167,53]],[[12,0,168,20],[20,0,168,27],[32,0,168,27],[34,0,168,41]],[[12,0,169,20],[28,0,169,36],[29,0,169,43],[52,0,169,20],[54,0,169,68],[62,0,169,77],[67,0,170,24],[83,0,170,40],[84,0,170,47],[108,0,171,24]],[[12,0,173,43],[18,0,173,26],[35,0,173,43],[48,0,173,57],[59,0,173,67],[60,0,174,35],[83,0,175,32]],[[12,0,177,20],[20,0,177,27],[36,0,177,43],[39,0,177,27],[42,0,177,49]],[[12,0,179,24],[18,0,178,26],[57,0,179,35],[76,0,179,53],[77,0,179,60]],[[12,0,180,20],[20,0,180,20],[23,0,180,31],[30,0,180,39],[47,0,181,24],[64,0,182,24],[79,0,182,39],[83,0,183,24]],[],[[12,0,187,20],[20,0,187,27],[33,0,187,40],[36,0,187,27],[39,0,187,46]],[[23,0,189,29]],[[14,0,190,24],[22,0,190,31],[44,0,190,31],[68,0,190,67],[87,0,190,85]],[],[[12,0,192,20],[20,0,192,20],[23,0,192,31],[30,0,192,39],[47,0,193,24],[70,0,194,24],[85,0,194,39],[89,0,195,24],[105,0,195,40]],[],[],[[10,0,199,16],[18,0,199,23],[22,0,199,27],[46,0,199,51],[50,0,199,23],[53,0,199,58]],[[10,0,200,16],[18,0,200,23],[41,0,200,46],[44,0,200,23],[47,0,200,52],[48,0,200,53]],[[10,0,201,16],[18,0,201,23],[31,0,201,36],[34,0,201,23],[37,0,201,42]],[[10,0,202,16],[18,0,202,23],[34,0,202,39],[37,0,202,23],[40,0,202,58]],[[10,0,203,16],[18,0,203,23],[33,0,203,38],[36,0,203,23],[39,0,203,44]],[],[],[[15,0,208,17]],[[8,0,209,12],[16,0,209,19],[31,0,209,34],[34,0,209,19],[58,0,209,51],[72,0,209,64]],[[8,0,210,12],[16,0,211,16],[31,0,211,31],[34,0,211,16],[37,0,212,16],[45,0,212,25],[50,0,212,29],[66,0,212,45],[91,0,212,60],[109,0,212,77]],[[8,0,215,12],[11,0,215,16],[13,0,215,16],[15,0,215,20],[16,0,215,27]],[[10,0,216,16],[18,0,216,23],[33,0,216,38],[36,0,216,23],[38,0,216,43]],[],[[10,0,218,16],[18,0,218,23],[33,0,218,38],[36,0,218,23],[39,0,218,44]],[[10,0,219,16],[18,0,219,23],[34,0,219,39],[37,0,219,23],[40,0,219,45]],[[10,0,221,16],[39,0,221,34],[53,0,221,47],[56,0,221,23],[59,0,221,53]],[[10,0,222,16],[39,0,222,34],[57,0,222,51],[60,0,222,23],[63,0,222,57]],[],[],[[4,0,227,8],[20,0,227,33]],[],[[2,0,238,4],[18,0,238,11],[26,0,238,28],[30,0,238,19],[39,0,238,45],[46,0,238,33]],[],[],[],[],[],[],[],[],[],[],[[4,0,239,8],[14,0,239,19],[30,0,239,34],[63,0,239,57]],[[4,0,240,8],[12,0,240,20],[20,0,240,15],[21,0,240,29],[30,0,240,38],[40,0,240,15]],[[4,0,241,8]],[],[],[],[],[],[],[],[],[]]
|
|
@@ -5,6 +5,7 @@ import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-lib
|
|
|
5
5
|
import "./cat20StateLib.scrypt.tpl";
|
|
6
6
|
import "../utils/safeMath.scrypt.tpl";
|
|
7
7
|
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/txUtils.scrypt.tpl";
|
|
8
|
+
import "../utils/ownerUtils.scrypt.tpl";
|
|
8
9
|
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/stdUtils.scrypt.tpl";
|
|
9
10
|
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/types/structs.scrypt.tpl";
|
|
10
11
|
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/stateUtils.scrypt.tpl";
|
|
@@ -115,10 +116,26 @@ contract CAT20Guard_12_12_4 {
|
|
|
115
116
|
}
|
|
116
117
|
require(hash256(outputs) == __scrypt_ts_shPreimage.hashOutputs);
|
|
117
118
|
}
|
|
119
|
+
public function destroy(Sig userSig, PubKey userPubKey, SHPreimage __scrypt_ts_shPreimage, Sig __scrypt_ts_preimageSig, TxOut __scrypt_ts_changeInfo, CAT20GuardConstState __scrypt_ts_curState, bytes __scrypt_ts_spentAmounts, bytes __scrypt_ts_spentDataHashes) {
|
|
120
|
+
require(checkDataSig(Sig(__scrypt_ts_preimageSig[0 : len(__scrypt_ts_preimageSig) - 1]), sha256(ContextUtils.serializeSHPreimage(__scrypt_ts_shPreimage)), ContextUtils.pubKey) && checkSig(__scrypt_ts_preimageSig, ContextUtils.pubKey));
|
|
121
|
+
|
|
122
|
+
int __scrypt_ts_inputCount = ContextUtils.checkSpentAmounts(__scrypt_ts_spentAmounts, __scrypt_ts_shPreimage.hashSpentAmounts);
|
|
123
|
+
|
|
124
|
+
ContextUtils.checkSpentDataHashes(__scrypt_ts_spentDataHashes, __scrypt_ts_shPreimage.hashSpentDataHashes, __scrypt_ts_inputCount);
|
|
125
|
+
|
|
126
|
+
CAT20GuardConstState __scrypt_ts_nextState = __scrypt_ts_curState;
|
|
127
|
+
|
|
128
|
+
StateUtils.checkInputState(__scrypt_ts_shPreimage.inputIndex, CAT20Guard_12_12_4.stateHash(__scrypt_ts_curState), __scrypt_ts_spentDataHashes);
|
|
129
|
+
|
|
130
|
+
OwnerUtils.checkUserOwner(userPubKey, __scrypt_ts_nextState.deployerAddr);
|
|
131
|
+
require(checkSig(userSig, userPubKey));
|
|
132
|
+
require(hash256(
|
|
133
|
+
(__scrypt_ts_changeInfo.satoshis > 0 ? TxUtils.buildOutput(__scrypt_ts_changeInfo.scriptHash, __scrypt_ts_changeInfo.satoshis) : b'')) == __scrypt_ts_shPreimage.hashOutputs);
|
|
134
|
+
}
|
|
118
135
|
static function serializeState(CAT20GuardConstState __scrypt_ts_curState): bytes {
|
|
119
|
-
return num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(__scrypt_ts_curState.tokenScriptIndexes));
|
|
136
|
+
return num2bin(len(__scrypt_ts_curState.deployerAddr), 2) + __scrypt_ts_curState.deployerAddr + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.deployerAddr) + hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(__scrypt_ts_curState.tokenScriptIndexes));
|
|
120
137
|
}
|
|
121
138
|
static function stateHash(CAT20GuardConstState __scrypt_ts_curState): bytes {
|
|
122
|
-
return sha256(num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(__scrypt_ts_curState.tokenScriptIndexes)));
|
|
139
|
+
return sha256(num2bin(len(__scrypt_ts_curState.deployerAddr), 2) + __scrypt_ts_curState.deployerAddr + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.deployerAddr) + hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(__scrypt_ts_curState.tokenScriptIndexes)));
|
|
123
140
|
}
|
|
124
141
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[[],[],[],[],[],[],[],[],[],[],[],[],[[9,0,
|
|
1
|
+
[[],[],[],[],[],[],[],[],[],[],[],[],[],[[9,0,45,13]],[],[[2,0,47,4],[18,0,47,11],[25,0,48,25],[30,0,48,25],[34,0,48,8],[51,0,52,33],[56,0,52,33],[60,0,52,8],[85,0,56,22],[88,0,56,22],[92,0,56,8],[106,0,62,32],[109,0,62,32],[113,0,62,8],[137,0,67,24],[140,0,67,24],[144,0,67,8],[160,0,71,21],[170,0,71,21],[174,0,71,8],[187,0,73,21],[191,0,73,8]],[],[],[],[],[],[],[],[],[],[],[],[],[[4,0,77,8],[22,0,77,27],[63,0,77,56]],[[4,0,80,30],[8,0,80,12],[26,0,80,30]],[[4,0,81,39],[9,0,81,39],[13,0,81,14],[40,0,85,16],[52,0,85,29],[87,0,86,16],[99,0,86,29],[134,0,87,16],[146,0,87,29],[181,0,88,16],[193,0,88,29]],[[15,0,90,17]],[[8,0,91,12],[11,0,91,16],[13,0,91,16],[16,0,91,21]],[[10,0,92,16],[39,0,92,34],[58,0,92,52],[59,0,92,59],[63,0,92,23],[66,0,92,66],[90,0,92,90],[91,0,92,97]],[[10,0,93,16],[39,0,93,34],[53,0,93,47],[54,0,93,54],[58,0,93,23],[61,0,93,61]],[[10,0,94,16],[39,0,94,34],[57,0,94,51],[58,0,94,58],[62,0,94,23],[65,0,94,65]],[],[],[[15,0,98,17]],[[8,0,99,12],[32,0,99,27],[51,0,99,45],[54,0,99,16],[57,0,99,51],[81,0,99,75]],[[10,0,100,16],[25,0,100,16]],[],[],[[15,0,104,17]],[[8,0,105,12],[11,0,105,16],[13,0,105,16],[15,0,105,20],[16,0,105,27]],[[10,0,106,16],[39,0,106,34],[58,0,106,52],[61,0,106,23],[64,0,106,58],[88,0,106,82]],[[10,0,107,16],[18,0,108,20],[43,0,108,35],[62,0,108,53],[66,0,108,20],[69,0,108,60]],[],[[10,0,111,16],[39,0,111,34],[58,0,111,52],[61,0,111,23],[64,0,111,58],[88,0,111,82]],[],[],[[4,0,114,8],[12,0,114,15],[28,0,114,15],[30,0,114,33]],[[4,0,120,31],[7,0,120,31],[11,0,120,14],[28,0,120,31],[35,0,120,36],[38,0,120,40]],[[4,0,121,34],[8,0,121,12],[30,0,121,34],[31,0,121,35]],[[4,0,122,27],[8,0,122,14]],[[15,0,123,17]],[[8,0,124,37],[12,0,124,18],[31,0,124,37],[59,0,124,70],[79,0,124,90],[80,0,124,97],[85,0,124,101],[86,0,124,108],[88,0,124,108],[90,0,124,112]],[[8,0,125,12],[11,0,125,16],[13,0,125,16],[15,0,125,20]],[[10,0,126,16],[18,0,126,23],[35,0,126,23],[37,0,126,42]],[[10,0,127,16],[13,0,127,20],[30,0,127,20],[33,0,127,40],[34,0,127,41]],[[12,0,130,24],[18,0,129,26],[57,0,130,35],[76,0,130,53],[77,0,130,60]],[[12,0,131,20],[20,0,131,27],[36,0,131,27],[39,0,131,46],[51,0,131,59],[102,0,131,106],[103,0,131,113]],[[12,0,132,20],[25,0,132,34],[37,0,132,45],[49,0,132,57]],[[12,0,133,20],[20,0,133,27],[32,0,133,40],[79,0,133,83],[80,0,133,90],[84,0,133,27],[87,0,133,97],[100,0,133,111],[111,0,133,121],[123,0,133,133]],[[12,0,134,20],[27,0,134,35],[28,0,134,42],[47,0,134,20],[49,0,134,63],[57,0,134,72],[62,0,135,24],[77,0,135,39],[78,0,135,46],[98,0,136,24],[110,0,136,36],[112,0,136,39]],[[12,0,138,20],[32,0,138,20],[34,0,139,24],[51,0,139,24],[53,0,139,43],[75,0,140,30],[94,0,141,30]],[],[],[[10,0,144,16],[18,0,144,23],[35,0,144,23],[38,0,144,43],[39,0,144,44]],[],[],[[4,0,150,8],[12,0,151,12],[32,0,151,12],[35,0,151,35],[37,0,151,12],[40,0,151,41],[60,0,151,41],[63,0,151,64],[79,0,151,64],[81,0,151,82]],[[4,0,156,8],[12,0,156,15],[24,0,156,15],[27,0,156,30],[29,0,156,15],[32,0,156,36],[44,0,156,36],[47,0,156,51]],[[4,0,157,32],[7,0,157,32],[11,0,157,14],[29,0,157,32],[36,0,157,37],[39,0,157,41]],[[4,0,158,22],[10,0,158,12],[20,0,158,35]],[[15,0,159,17]],[[8,0,160,12],[11,0,160,16],[13,0,160,16],[15,0,160,20]],[[10,0,161,46],[16,0,161,22],[40,0,161,46],[64,0,161,70]],[[10,0,162,16],[18,0,162,23],[22,0,162,27],[45,0,162,23],[47,0,162,52]],[[10,0,163,45],[14,0,163,22],[37,0,163,45],[60,0,163,68]],[[10,0,164,16],[18,0,164,23],[39,0,164,23],[41,0,164,46]],[[10,0,165,16],[13,0,165,20],[34,0,165,20],[37,0,165,44],[38,0,165,45]],[[12,0,167,40],[16,0,167,26],[30,0,167,40],[43,0,167,53]],[[12,0,168,20],[20,0,168,27],[32,0,168,27],[34,0,168,41]],[[12,0,169,20],[28,0,169,36],[29,0,169,43],[52,0,169,20],[54,0,169,68],[62,0,169,77],[67,0,170,24],[83,0,170,40],[84,0,170,47],[108,0,171,24]],[[12,0,173,43],[18,0,173,26],[35,0,173,43],[48,0,173,57],[59,0,173,67],[60,0,174,35],[83,0,175,32]],[[12,0,177,20],[20,0,177,27],[36,0,177,43],[39,0,177,27],[42,0,177,49]],[[12,0,179,24],[18,0,178,26],[57,0,179,35],[76,0,179,53],[77,0,179,60]],[[12,0,180,20],[20,0,180,20],[23,0,180,31],[30,0,180,39],[47,0,181,24],[64,0,182,24],[79,0,182,39],[83,0,183,24]],[],[[12,0,187,20],[20,0,187,27],[33,0,187,40],[36,0,187,27],[39,0,187,46]],[[23,0,189,29]],[[14,0,190,24],[22,0,190,31],[44,0,190,31],[68,0,190,67],[87,0,190,85]],[],[[12,0,192,20],[20,0,192,20],[23,0,192,31],[30,0,192,39],[47,0,193,24],[70,0,194,24],[85,0,194,39],[89,0,195,24],[105,0,195,40]],[],[],[[10,0,199,16],[18,0,199,23],[22,0,199,27],[46,0,199,51],[50,0,199,23],[53,0,199,58]],[[10,0,200,16],[18,0,200,23],[41,0,200,46],[44,0,200,23],[47,0,200,52],[48,0,200,53]],[[10,0,201,16],[18,0,201,23],[31,0,201,36],[34,0,201,23],[37,0,201,42]],[[10,0,202,16],[18,0,202,23],[34,0,202,39],[37,0,202,23],[40,0,202,58]],[[10,0,203,16],[18,0,203,23],[33,0,203,38],[36,0,203,23],[39,0,203,44]],[],[],[[15,0,208,17]],[[8,0,209,12],[16,0,209,19],[31,0,209,34],[34,0,209,19],[58,0,209,51],[72,0,209,64]],[[8,0,210,12],[16,0,211,16],[31,0,211,31],[34,0,211,16],[37,0,212,16],[45,0,212,25],[50,0,212,29],[66,0,212,45],[91,0,212,60],[109,0,212,77]],[[8,0,215,12],[11,0,215,16],[13,0,215,16],[15,0,215,20],[16,0,215,27]],[[10,0,216,16],[18,0,216,23],[33,0,216,38],[36,0,216,23],[38,0,216,43]],[],[[10,0,218,16],[18,0,218,23],[33,0,218,38],[36,0,218,23],[39,0,218,44]],[[10,0,219,16],[18,0,219,23],[34,0,219,39],[37,0,219,23],[40,0,219,45]],[[10,0,221,16],[39,0,221,34],[53,0,221,47],[56,0,221,23],[59,0,221,53]],[[10,0,222,16],[39,0,222,34],[57,0,222,51],[60,0,222,23],[63,0,222,57]],[],[],[[4,0,227,8],[20,0,227,33]],[],[[2,0,238,4],[18,0,238,11],[26,0,238,28],[30,0,238,19],[39,0,238,45],[46,0,238,33]],[],[],[],[],[],[],[],[],[],[],[[4,0,239,8],[14,0,239,19],[30,0,239,34],[63,0,239,57]],[[4,0,240,8],[12,0,240,20],[20,0,240,15],[21,0,240,29],[30,0,240,38],[40,0,240,15]],[[4,0,241,8]],[],[],[],[],[],[],[],[],[]]
|
|
@@ -5,6 +5,7 @@ import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-lib
|
|
|
5
5
|
import "./cat20StateLib.scrypt.tpl";
|
|
6
6
|
import "../utils/safeMath.scrypt.tpl";
|
|
7
7
|
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/txUtils.scrypt.tpl";
|
|
8
|
+
import "../utils/ownerUtils.scrypt.tpl";
|
|
8
9
|
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/stdUtils.scrypt.tpl";
|
|
9
10
|
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/types/structs.scrypt.tpl";
|
|
10
11
|
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/stateUtils.scrypt.tpl";
|
|
@@ -115,10 +116,26 @@ contract CAT20Guard_6_6_2 {
|
|
|
115
116
|
}
|
|
116
117
|
require(hash256(outputs) == __scrypt_ts_shPreimage.hashOutputs);
|
|
117
118
|
}
|
|
119
|
+
public function destroy(Sig userSig, PubKey userPubKey, SHPreimage __scrypt_ts_shPreimage, Sig __scrypt_ts_preimageSig, TxOut __scrypt_ts_changeInfo, CAT20GuardConstState __scrypt_ts_curState, bytes __scrypt_ts_spentAmounts, bytes __scrypt_ts_spentDataHashes) {
|
|
120
|
+
require(checkDataSig(Sig(__scrypt_ts_preimageSig[0 : len(__scrypt_ts_preimageSig) - 1]), sha256(ContextUtils.serializeSHPreimage(__scrypt_ts_shPreimage)), ContextUtils.pubKey) && checkSig(__scrypt_ts_preimageSig, ContextUtils.pubKey));
|
|
121
|
+
|
|
122
|
+
int __scrypt_ts_inputCount = ContextUtils.checkSpentAmounts(__scrypt_ts_spentAmounts, __scrypt_ts_shPreimage.hashSpentAmounts);
|
|
123
|
+
|
|
124
|
+
ContextUtils.checkSpentDataHashes(__scrypt_ts_spentDataHashes, __scrypt_ts_shPreimage.hashSpentDataHashes, __scrypt_ts_inputCount);
|
|
125
|
+
|
|
126
|
+
CAT20GuardConstState __scrypt_ts_nextState = __scrypt_ts_curState;
|
|
127
|
+
|
|
128
|
+
StateUtils.checkInputState(__scrypt_ts_shPreimage.inputIndex, CAT20Guard_6_6_2.stateHash(__scrypt_ts_curState), __scrypt_ts_spentDataHashes);
|
|
129
|
+
|
|
130
|
+
OwnerUtils.checkUserOwner(userPubKey, __scrypt_ts_nextState.deployerAddr);
|
|
131
|
+
require(checkSig(userSig, userPubKey));
|
|
132
|
+
require(hash256(
|
|
133
|
+
(__scrypt_ts_changeInfo.satoshis > 0 ? TxUtils.buildOutput(__scrypt_ts_changeInfo.scriptHash, __scrypt_ts_changeInfo.satoshis) : b'')) == __scrypt_ts_shPreimage.hashOutputs);
|
|
134
|
+
}
|
|
118
135
|
static function serializeState(CAT20GuardConstState __scrypt_ts_curState): bytes {
|
|
119
|
-
return num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(__scrypt_ts_curState.tokenScriptIndexes));
|
|
136
|
+
return num2bin(len(__scrypt_ts_curState.deployerAddr), 2) + __scrypt_ts_curState.deployerAddr + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.deployerAddr) + hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(__scrypt_ts_curState.tokenScriptIndexes));
|
|
120
137
|
}
|
|
121
138
|
static function stateHash(CAT20GuardConstState __scrypt_ts_curState): bytes {
|
|
122
|
-
return sha256(num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(__scrypt_ts_curState.tokenScriptIndexes)));
|
|
139
|
+
return sha256(num2bin(len(__scrypt_ts_curState.deployerAddr), 2) + __scrypt_ts_curState.deployerAddr + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.deployerAddr) + hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(__scrypt_ts_curState.tokenScriptIndexes)));
|
|
123
140
|
}
|
|
124
141
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[[],[],[],[],[],[],[],[],[],[],[],[],[[9,0,
|
|
1
|
+
[[],[],[],[],[],[],[],[],[],[],[],[],[],[[9,0,45,13]],[],[[2,0,47,4],[18,0,47,11],[25,0,48,25],[30,0,48,25],[34,0,48,8],[51,0,52,33],[56,0,52,33],[60,0,52,8],[85,0,56,22],[88,0,56,22],[92,0,56,8],[106,0,62,32],[109,0,62,32],[113,0,62,8],[137,0,67,24],[140,0,67,24],[144,0,67,8],[160,0,71,21],[170,0,71,21],[174,0,71,8],[187,0,73,21],[191,0,73,8]],[],[],[],[],[],[],[],[],[],[],[],[],[[4,0,77,8],[22,0,77,27],[63,0,77,56]],[[4,0,80,30],[8,0,80,12],[26,0,80,30]],[[4,0,81,39],[9,0,81,39],[13,0,81,14],[40,0,85,16],[52,0,85,29],[87,0,86,16],[99,0,86,29],[134,0,87,16],[146,0,87,29],[181,0,88,16],[193,0,88,29]],[[15,0,90,17]],[[8,0,91,12],[11,0,91,16],[13,0,91,16],[16,0,91,21]],[[10,0,92,16],[39,0,92,34],[58,0,92,52],[59,0,92,59],[63,0,92,23],[66,0,92,66],[90,0,92,90],[91,0,92,97]],[[10,0,93,16],[39,0,93,34],[53,0,93,47],[54,0,93,54],[58,0,93,23],[61,0,93,61]],[[10,0,94,16],[39,0,94,34],[57,0,94,51],[58,0,94,58],[62,0,94,23],[65,0,94,65]],[],[],[[15,0,98,17]],[[8,0,99,12],[32,0,99,27],[51,0,99,45],[54,0,99,16],[57,0,99,51],[81,0,99,75]],[[10,0,100,16],[25,0,100,16]],[],[],[[15,0,104,17]],[[8,0,105,12],[11,0,105,16],[13,0,105,16],[15,0,105,20],[16,0,105,27]],[[10,0,106,16],[39,0,106,34],[58,0,106,52],[61,0,106,23],[64,0,106,58],[88,0,106,82]],[[10,0,107,16],[18,0,108,20],[43,0,108,35],[62,0,108,53],[66,0,108,20],[69,0,108,60]],[],[[10,0,111,16],[39,0,111,34],[58,0,111,52],[61,0,111,23],[64,0,111,58],[88,0,111,82]],[],[],[[4,0,114,8],[12,0,114,15],[28,0,114,15],[30,0,114,33]],[[4,0,120,31],[7,0,120,31],[11,0,120,14],[28,0,120,31],[35,0,120,36],[38,0,120,40]],[[4,0,121,34],[8,0,121,12],[30,0,121,34],[31,0,121,35]],[[4,0,122,27],[8,0,122,14]],[[15,0,123,17]],[[8,0,124,37],[12,0,124,18],[31,0,124,37],[59,0,124,70],[79,0,124,90],[80,0,124,97],[85,0,124,101],[86,0,124,108],[88,0,124,108],[90,0,124,112]],[[8,0,125,12],[11,0,125,16],[13,0,125,16],[15,0,125,20]],[[10,0,126,16],[18,0,126,23],[35,0,126,23],[37,0,126,42]],[[10,0,127,16],[13,0,127,20],[30,0,127,20],[33,0,127,40],[34,0,127,41]],[[12,0,130,24],[18,0,129,26],[57,0,130,35],[76,0,130,53],[77,0,130,60]],[[12,0,131,20],[20,0,131,27],[36,0,131,27],[39,0,131,46],[51,0,131,59],[102,0,131,106],[103,0,131,113]],[[12,0,132,20],[25,0,132,34],[37,0,132,45],[49,0,132,57]],[[12,0,133,20],[20,0,133,27],[32,0,133,40],[79,0,133,83],[80,0,133,90],[84,0,133,27],[87,0,133,97],[100,0,133,111],[111,0,133,121],[123,0,133,133]],[[12,0,134,20],[27,0,134,35],[28,0,134,42],[47,0,134,20],[49,0,134,63],[57,0,134,72],[62,0,135,24],[77,0,135,39],[78,0,135,46],[98,0,136,24],[110,0,136,36],[112,0,136,39]],[[12,0,138,20],[32,0,138,20],[34,0,139,24],[51,0,139,24],[53,0,139,43],[75,0,140,30],[94,0,141,30]],[],[],[[10,0,144,16],[18,0,144,23],[35,0,144,23],[38,0,144,43],[39,0,144,44]],[],[],[[4,0,150,8],[12,0,151,12],[32,0,151,12],[35,0,151,35],[37,0,151,12],[40,0,151,41],[60,0,151,41],[63,0,151,64],[79,0,151,64],[81,0,151,82]],[[4,0,156,8],[12,0,156,15],[24,0,156,15],[27,0,156,30],[29,0,156,15],[32,0,156,36],[44,0,156,36],[47,0,156,51]],[[4,0,157,32],[7,0,157,32],[11,0,157,14],[29,0,157,32],[36,0,157,37],[39,0,157,41]],[[4,0,158,22],[10,0,158,12],[20,0,158,35]],[[15,0,159,17]],[[8,0,160,12],[11,0,160,16],[13,0,160,16],[15,0,160,20]],[[10,0,161,46],[16,0,161,22],[40,0,161,46],[64,0,161,70]],[[10,0,162,16],[18,0,162,23],[22,0,162,27],[45,0,162,23],[47,0,162,52]],[[10,0,163,45],[14,0,163,22],[37,0,163,45],[60,0,163,68]],[[10,0,164,16],[18,0,164,23],[39,0,164,23],[41,0,164,46]],[[10,0,165,16],[13,0,165,20],[34,0,165,20],[37,0,165,44],[38,0,165,45]],[[12,0,167,40],[16,0,167,26],[30,0,167,40],[43,0,167,53]],[[12,0,168,20],[20,0,168,27],[32,0,168,27],[34,0,168,41]],[[12,0,169,20],[28,0,169,36],[29,0,169,43],[52,0,169,20],[54,0,169,68],[62,0,169,77],[67,0,170,24],[83,0,170,40],[84,0,170,47],[108,0,171,24]],[[12,0,173,43],[18,0,173,26],[35,0,173,43],[48,0,173,57],[59,0,173,67],[60,0,174,35],[83,0,175,32]],[[12,0,177,20],[20,0,177,27],[36,0,177,43],[39,0,177,27],[42,0,177,49]],[[12,0,179,24],[18,0,178,26],[57,0,179,35],[76,0,179,53],[77,0,179,60]],[[12,0,180,20],[20,0,180,20],[23,0,180,31],[30,0,180,39],[47,0,181,24],[64,0,182,24],[79,0,182,39],[83,0,183,24]],[],[[12,0,187,20],[20,0,187,27],[33,0,187,40],[36,0,187,27],[39,0,187,46]],[[23,0,189,29]],[[14,0,190,24],[22,0,190,31],[44,0,190,31],[68,0,190,67],[87,0,190,85]],[],[[12,0,192,20],[20,0,192,20],[23,0,192,31],[30,0,192,39],[47,0,193,24],[70,0,194,24],[85,0,194,39],[89,0,195,24],[105,0,195,40]],[],[],[[10,0,199,16],[18,0,199,23],[22,0,199,27],[46,0,199,51],[50,0,199,23],[53,0,199,58]],[[10,0,200,16],[18,0,200,23],[41,0,200,46],[44,0,200,23],[47,0,200,52],[48,0,200,53]],[[10,0,201,16],[18,0,201,23],[31,0,201,36],[34,0,201,23],[37,0,201,42]],[[10,0,202,16],[18,0,202,23],[34,0,202,39],[37,0,202,23],[40,0,202,58]],[[10,0,203,16],[18,0,203,23],[33,0,203,38],[36,0,203,23],[39,0,203,44]],[],[],[[15,0,208,17]],[[8,0,209,12],[16,0,209,19],[31,0,209,34],[34,0,209,19],[58,0,209,51],[72,0,209,64]],[[8,0,210,12],[16,0,211,16],[31,0,211,31],[34,0,211,16],[37,0,212,16],[45,0,212,25],[50,0,212,29],[66,0,212,45],[91,0,212,60],[109,0,212,77]],[[8,0,215,12],[11,0,215,16],[13,0,215,16],[15,0,215,20],[16,0,215,27]],[[10,0,216,16],[18,0,216,23],[33,0,216,38],[36,0,216,23],[38,0,216,43]],[],[[10,0,218,16],[18,0,218,23],[33,0,218,38],[36,0,218,23],[39,0,218,44]],[[10,0,219,16],[18,0,219,23],[34,0,219,39],[37,0,219,23],[40,0,219,45]],[[10,0,221,16],[39,0,221,34],[53,0,221,47],[56,0,221,23],[59,0,221,53]],[[10,0,222,16],[39,0,222,34],[57,0,222,51],[60,0,222,23],[63,0,222,57]],[],[],[[4,0,227,8],[20,0,227,33]],[],[[2,0,238,4],[18,0,238,11],[26,0,238,28],[30,0,238,19],[39,0,238,45],[46,0,238,33]],[],[],[],[],[],[],[],[],[],[],[[4,0,239,8],[14,0,239,19],[30,0,239,34],[63,0,239,57]],[[4,0,240,8],[12,0,240,20],[20,0,240,15],[21,0,240,29],[30,0,240,38],[40,0,240,15]],[[4,0,241,8]],[],[],[],[],[],[],[],[],[]]
|
|
@@ -5,6 +5,7 @@ import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-lib
|
|
|
5
5
|
import "./cat20StateLib.scrypt.tpl";
|
|
6
6
|
import "../utils/safeMath.scrypt.tpl";
|
|
7
7
|
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/txUtils.scrypt.tpl";
|
|
8
|
+
import "../utils/ownerUtils.scrypt.tpl";
|
|
8
9
|
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/stdUtils.scrypt.tpl";
|
|
9
10
|
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/types/structs.scrypt.tpl";
|
|
10
11
|
import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-libs/stateUtils.scrypt.tpl";
|
|
@@ -115,10 +116,26 @@ contract CAT20Guard_6_6_4 {
|
|
|
115
116
|
}
|
|
116
117
|
require(hash256(outputs) == __scrypt_ts_shPreimage.hashOutputs);
|
|
117
118
|
}
|
|
119
|
+
public function destroy(Sig userSig, PubKey userPubKey, SHPreimage __scrypt_ts_shPreimage, Sig __scrypt_ts_preimageSig, TxOut __scrypt_ts_changeInfo, CAT20GuardConstState __scrypt_ts_curState, bytes __scrypt_ts_spentAmounts, bytes __scrypt_ts_spentDataHashes) {
|
|
120
|
+
require(checkDataSig(Sig(__scrypt_ts_preimageSig[0 : len(__scrypt_ts_preimageSig) - 1]), sha256(ContextUtils.serializeSHPreimage(__scrypt_ts_shPreimage)), ContextUtils.pubKey) && checkSig(__scrypt_ts_preimageSig, ContextUtils.pubKey));
|
|
121
|
+
|
|
122
|
+
int __scrypt_ts_inputCount = ContextUtils.checkSpentAmounts(__scrypt_ts_spentAmounts, __scrypt_ts_shPreimage.hashSpentAmounts);
|
|
123
|
+
|
|
124
|
+
ContextUtils.checkSpentDataHashes(__scrypt_ts_spentDataHashes, __scrypt_ts_shPreimage.hashSpentDataHashes, __scrypt_ts_inputCount);
|
|
125
|
+
|
|
126
|
+
CAT20GuardConstState __scrypt_ts_nextState = __scrypt_ts_curState;
|
|
127
|
+
|
|
128
|
+
StateUtils.checkInputState(__scrypt_ts_shPreimage.inputIndex, CAT20Guard_6_6_4.stateHash(__scrypt_ts_curState), __scrypt_ts_spentDataHashes);
|
|
129
|
+
|
|
130
|
+
OwnerUtils.checkUserOwner(userPubKey, __scrypt_ts_nextState.deployerAddr);
|
|
131
|
+
require(checkSig(userSig, userPubKey));
|
|
132
|
+
require(hash256(
|
|
133
|
+
(__scrypt_ts_changeInfo.satoshis > 0 ? TxUtils.buildOutput(__scrypt_ts_changeInfo.scriptHash, __scrypt_ts_changeInfo.satoshis) : b'')) == __scrypt_ts_shPreimage.hashOutputs);
|
|
134
|
+
}
|
|
118
135
|
static function serializeState(CAT20GuardConstState __scrypt_ts_curState): bytes {
|
|
119
|
-
return num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(__scrypt_ts_curState.tokenScriptIndexes));
|
|
136
|
+
return num2bin(len(__scrypt_ts_curState.deployerAddr), 2) + __scrypt_ts_curState.deployerAddr + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.deployerAddr) + hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(__scrypt_ts_curState.tokenScriptIndexes));
|
|
120
137
|
}
|
|
121
138
|
static function stateHash(CAT20GuardConstState __scrypt_ts_curState): bytes {
|
|
122
|
-
return sha256(num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(__scrypt_ts_curState.tokenScriptIndexes)));
|
|
139
|
+
return sha256(num2bin(len(__scrypt_ts_curState.deployerAddr), 2) + __scrypt_ts_curState.deployerAddr + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(__scrypt_ts_curState.tokenScriptIndexes), 2) + __scrypt_ts_curState.tokenScriptIndexes + hash160(hash160(__scrypt_ts_curState.deployerAddr) + hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(__scrypt_ts_curState.tokenScriptIndexes)));
|
|
123
140
|
}
|
|
124
141
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[[],[[7,0,
|
|
1
|
+
[[],[[7,0,23,35]],[[2,0,29,16],[8,0,29,2]],[[2,0,35,21],[7,0,35,21],[11,0,35,2]],[[2,0,41,16],[5,0,41,16],[9,0,41,2]],[[2,0,46,20],[5,0,46,20],[9,0,46,2]],[[2,0,64,22],[8,0,64,2]],[],[],[[7,0,11,25]],[[2,0,13,13],[8,0,13,2]],[[2,0,15,10],[6,0,15,2]],[],[],[[7,0,134,0]],[[2,0,136,19],[8,0,136,2]],[],[],[[7,0,120,0]],[[2,0,122,19],[8,0,122,2]],[[2,0,124,19],[7,0,124,2]],[[2,0,126,18],[6,0,126,2]],[],[],[[7,0,150,0]],[[2,0,151,7],[8,0,151,2]],[[2,0,152,16],[8,0,152,2]],[]]
|
|
@@ -27,9 +27,9 @@ library CAT721GuardStateLib {
|
|
|
27
27
|
return true;
|
|
28
28
|
}
|
|
29
29
|
static function serializeState(CAT721GuardConstState __scrypt_ts_curState): bytes {
|
|
30
|
-
return num2bin(len(__scrypt_ts_curState.nftScriptHashes[0]), 2) + __scrypt_ts_curState.nftScriptHashes[0] + num2bin(len(__scrypt_ts_curState.nftScriptHashes[1]), 2) + __scrypt_ts_curState.nftScriptHashes[1] + num2bin(len(__scrypt_ts_curState.nftScriptHashes[2]), 2) + __scrypt_ts_curState.nftScriptHashes[2] + num2bin(len(__scrypt_ts_curState.nftScriptHashes[3]), 2) + __scrypt_ts_curState.nftScriptHashes[3] + num2bin(len(__scrypt_ts_curState.nftBurnMasks), 2) + __scrypt_ts_curState.nftBurnMasks + num2bin(len(__scrypt_ts_curState.nftScriptIndexes), 2) + __scrypt_ts_curState.nftScriptIndexes + hash160(hash160(__scrypt_ts_curState.nftScriptHashes[0]) + hash160(__scrypt_ts_curState.nftScriptHashes[1]) + hash160(__scrypt_ts_curState.nftScriptHashes[2]) + hash160(__scrypt_ts_curState.nftScriptHashes[3]) + hash160(__scrypt_ts_curState.nftBurnMasks) + hash160(__scrypt_ts_curState.nftScriptIndexes));
|
|
30
|
+
return num2bin(len(__scrypt_ts_curState.deployerAddr), 2) + __scrypt_ts_curState.deployerAddr + num2bin(len(__scrypt_ts_curState.nftScriptHashes[0]), 2) + __scrypt_ts_curState.nftScriptHashes[0] + num2bin(len(__scrypt_ts_curState.nftScriptHashes[1]), 2) + __scrypt_ts_curState.nftScriptHashes[1] + num2bin(len(__scrypt_ts_curState.nftScriptHashes[2]), 2) + __scrypt_ts_curState.nftScriptHashes[2] + num2bin(len(__scrypt_ts_curState.nftScriptHashes[3]), 2) + __scrypt_ts_curState.nftScriptHashes[3] + num2bin(len(__scrypt_ts_curState.nftBurnMasks), 2) + __scrypt_ts_curState.nftBurnMasks + num2bin(len(__scrypt_ts_curState.nftScriptIndexes), 2) + __scrypt_ts_curState.nftScriptIndexes + hash160(hash160(__scrypt_ts_curState.deployerAddr) + hash160(__scrypt_ts_curState.nftScriptHashes[0]) + hash160(__scrypt_ts_curState.nftScriptHashes[1]) + hash160(__scrypt_ts_curState.nftScriptHashes[2]) + hash160(__scrypt_ts_curState.nftScriptHashes[3]) + hash160(__scrypt_ts_curState.nftBurnMasks) + hash160(__scrypt_ts_curState.nftScriptIndexes));
|
|
31
31
|
}
|
|
32
32
|
static function stateHash(CAT721GuardConstState __scrypt_ts_curState): bytes {
|
|
33
|
-
return sha256(num2bin(len(__scrypt_ts_curState.nftScriptHashes[0]), 2) + __scrypt_ts_curState.nftScriptHashes[0] + num2bin(len(__scrypt_ts_curState.nftScriptHashes[1]), 2) + __scrypt_ts_curState.nftScriptHashes[1] + num2bin(len(__scrypt_ts_curState.nftScriptHashes[2]), 2) + __scrypt_ts_curState.nftScriptHashes[2] + num2bin(len(__scrypt_ts_curState.nftScriptHashes[3]), 2) + __scrypt_ts_curState.nftScriptHashes[3] + num2bin(len(__scrypt_ts_curState.nftBurnMasks), 2) + __scrypt_ts_curState.nftBurnMasks + num2bin(len(__scrypt_ts_curState.nftScriptIndexes), 2) + __scrypt_ts_curState.nftScriptIndexes + hash160(hash160(__scrypt_ts_curState.nftScriptHashes[0]) + hash160(__scrypt_ts_curState.nftScriptHashes[1]) + hash160(__scrypt_ts_curState.nftScriptHashes[2]) + hash160(__scrypt_ts_curState.nftScriptHashes[3]) + hash160(__scrypt_ts_curState.nftBurnMasks) + hash160(__scrypt_ts_curState.nftScriptIndexes)));
|
|
33
|
+
return sha256(num2bin(len(__scrypt_ts_curState.deployerAddr), 2) + __scrypt_ts_curState.deployerAddr + num2bin(len(__scrypt_ts_curState.nftScriptHashes[0]), 2) + __scrypt_ts_curState.nftScriptHashes[0] + num2bin(len(__scrypt_ts_curState.nftScriptHashes[1]), 2) + __scrypt_ts_curState.nftScriptHashes[1] + num2bin(len(__scrypt_ts_curState.nftScriptHashes[2]), 2) + __scrypt_ts_curState.nftScriptHashes[2] + num2bin(len(__scrypt_ts_curState.nftScriptHashes[3]), 2) + __scrypt_ts_curState.nftScriptHashes[3] + num2bin(len(__scrypt_ts_curState.nftBurnMasks), 2) + __scrypt_ts_curState.nftBurnMasks + num2bin(len(__scrypt_ts_curState.nftScriptIndexes), 2) + __scrypt_ts_curState.nftScriptIndexes + hash160(hash160(__scrypt_ts_curState.deployerAddr) + hash160(__scrypt_ts_curState.nftScriptHashes[0]) + hash160(__scrypt_ts_curState.nftScriptHashes[1]) + hash160(__scrypt_ts_curState.nftScriptHashes[2]) + hash160(__scrypt_ts_curState.nftScriptHashes[3]) + hash160(__scrypt_ts_curState.nftBurnMasks) + hash160(__scrypt_ts_curState.nftScriptIndexes)));
|
|
34
34
|
}
|
|
35
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[[],[],[],[],[],[],[],[],[],[],[],[[9,0,
|
|
1
|
+
[[],[],[],[],[],[],[],[],[],[],[],[],[[9,0,20,13]],[],[[2,0,22,4],[18,0,22,11],[25,0,23,25],[30,0,23,25],[35,0,23,8],[52,0,25,33],[57,0,25,33],[62,0,25,8],[87,0,39,24],[90,0,39,24],[95,0,39,8],[111,0,40,30],[114,0,40,30],[119,0,40,8],[141,0,41,24],[144,0,41,24],[149,0,41,8],[165,0,42,22],[176,0,42,22],[181,0,42,8],[195,0,44,21],[199,0,44,8]],[],[],[],[],[],[],[],[],[],[],[],[],[[4,0,46,8],[23,0,46,28],[64,0,46,57]],[[4,0,49,28],[8,0,49,12],[24,0,49,28]],[[4,0,50,37],[9,0,50,37],[13,0,50,14],[38,0,51,12],[50,0,51,25],[85,0,52,12],[97,0,52,25],[132,0,53,12],[144,0,53,25],[179,0,54,12],[191,0,54,25]],[[15,0,56,17]],[[8,0,57,12],[11,0,57,16],[13,0,57,16],[16,0,57,21]],[[10,0,58,16],[39,0,58,34],[56,0,58,50],[57,0,58,57],[61,0,58,23],[64,0,58,64],[86,0,58,86],[87,0,58,93]],[],[],[[15,0,61,17]],[[8,0,62,12],[32,0,62,27],[49,0,62,43],[52,0,62,16],[55,0,62,49],[77,0,62,71]],[[10,0,63,16],[23,0,63,16]],[],[],[[15,0,68,17]],[[8,0,69,12],[11,0,69,16],[13,0,69,16],[15,0,69,20],[16,0,69,27]],[[10,0,70,16],[39,0,70,34],[56,0,70,50],[59,0,70,23],[62,0,70,56],[84,0,70,78]],[[10,0,71,16],[18,0,71,23],[43,0,71,38],[60,0,71,54],[64,0,71,23],[67,0,71,61]],[],[[10,0,73,16],[39,0,73,34],[56,0,73,50],[59,0,73,23],[62,0,73,56],[84,0,73,78]],[],[],[[4,0,76,8],[12,0,76,15],[26,0,76,15],[28,0,76,31]],[[4,0,79,32],[8,0,79,12],[28,0,79,32],[29,0,79,33]],[[4,0,81,24],[9,0,81,24],[14,0,81,14],[25,0,81,80],[32,0,81,98],[37,0,81,103]],[[4,0,82,27],[8,0,82,12],[23,0,82,27]],[[4,0,83,27],[8,0,83,14]],[[16,0,84,17]],[[8,0,85,35],[12,0,85,18],[29,0,85,35],[57,0,85,68],[75,0,85,86],[79,0,85,89],[81,0,85,89],[83,0,85,93]],[[8,0,86,29],[13,0,86,18],[45,0,86,46],[59,0,86,60],[63,0,86,63],[65,0,86,63],[67,0,86,67],[70,0,86,29],[73,0,86,87],[81,0,86,95],[88,0,86,102]],[[8,0,87,12],[11,0,87,16],[13,0,87,16],[15,0,87,20]],[[10,0,88,16],[18,0,88,23],[33,0,88,23],[35,0,88,40]],[[10,0,89,16],[13,0,89,20],[28,0,89,20],[31,0,89,38],[32,0,89,39]],[[12,0,91,42],[18,0,91,26],[55,0,91,53],[72,0,91,69],[73,0,91,76]],[[12,0,92,20],[20,0,92,27],[34,0,92,27],[37,0,92,44],[49,0,92,57],[100,0,92,104],[101,0,92,111]],[[12,0,93,20],[26,0,93,35],[38,0,93,46],[51,0,93,59],[52,0,93,66]],[[12,0,94,20],[20,0,94,27],[32,0,94,40],[79,0,94,83],[80,0,94,90],[84,0,94,27],[87,0,94,97],[101,0,94,112],[112,0,94,122],[125,0,94,135],[126,0,94,142]],[[12,0,95,20],[30,0,95,20],[32,0,95,40],[47,0,95,40],[49,0,95,57],[69,0,95,77],[86,0,95,94]],[[12,0,96,20],[15,0,96,24],[16,0,96,25]],[[14,0,98,24],[23,0,98,33],[24,0,98,40],[39,0,98,24],[41,0,98,57],[55,0,98,57],[57,0,98,73],[65,0,98,81],[70,0,98,97],[83,0,98,110],[84,0,98,117],[87,0,98,121]],[[14,0,99,24],[26,0,99,24]],[],[],[[12,0,103,20],[20,0,103,27],[21,0,103,28]],[],[],[[10,0,106,16],[18,0,106,23],[33,0,106,23],[36,0,106,41],[37,0,106,42]],[],[],[[4,0,109,8],[12,0,109,15],[30,0,109,15],[33,0,109,36],[35,0,109,15],[38,0,109,42],[56,0,109,42],[59,0,109,63],[73,0,109,63],[75,0,109,79]],[[4,0,112,8],[12,0,112,15],[24,0,112,15],[27,0,112,30],[29,0,112,15],[32,0,112,36],[44,0,112,36],[47,0,112,51]],[[4,0,113,29],[8,0,113,12],[25,0,113,29]],[[4,0,114,22],[10,0,114,12],[20,0,114,35]],[[16,0,115,17]],[[8,0,116,12],[11,0,116,16],[13,0,116,16],[15,0,116,20]],[[10,0,117,46],[16,0,117,22],[40,0,117,46],[64,0,117,70],[65,0,117,77]],[[10,0,118,16],[18,0,118,23],[22,0,118,27],[45,0,118,23],[47,0,118,52]],[[10,0,119,39],[14,0,119,22],[31,0,119,39],[52,0,119,60],[53,0,119,67]],[[10,0,120,16],[18,0,120,23],[33,0,120,23],[35,0,120,40]],[[10,0,121,16],[13,0,121,20],[28,0,121,20],[31,0,121,38],[32,0,121,39]],[[12,0,123,42],[18,0,123,26],[55,0,123,53],[72,0,123,69],[73,0,123,76]],[[12,0,124,36],[16,0,124,26],[26,0,124,36],[41,0,124,51],[42,0,124,58]],[[12,0,125,20],[20,0,125,27],[28,0,125,27],[31,0,125,38]],[[12,0,126,20],[20,0,126,27],[29,0,126,36],[30,0,126,43],[47,0,126,27],[50,0,126,63],[64,0,126,63],[66,0,126,79],[74,0,126,87],[79,0,126,103]],[[12,0,127,20],[27,0,127,20],[29,0,127,37],[44,0,127,37],[46,0,127,54]],[[12,0,128,41],[18,0,128,26],[33,0,128,41],[47,0,128,56],[58,0,128,66],[59,0,129,35],[82,0,130,33]],[[12,0,132,20],[20,0,132,27],[36,0,132,43],[37,0,132,50],[41,0,132,27],[44,0,132,57]],[[12,0,133,20],[20,0,133,20],[23,0,133,31],[30,0,133,39],[68,0,134,35],[85,0,134,51],[86,0,134,58],[104,0,135,24],[119,0,135,39],[120,0,135,46],[125,0,136,24]],[],[[23,0,141,29]],[[14,0,142,24],[22,0,142,31],[44,0,142,31],[68,0,142,67],[85,0,142,83]],[],[[12,0,144,20],[20,0,144,20],[23,0,144,31],[30,0,144,39],[47,0,145,24],[70,0,146,24],[85,0,146,39],[86,0,146,46],[91,0,147,24],[107,0,147,40],[108,0,147,47]],[],[],[[10,0,151,16],[18,0,151,23],[22,0,151,27],[46,0,151,51],[47,0,151,58],[52,0,151,23],[55,0,151,66]],[[10,0,152,16],[18,0,152,23],[39,0,152,44],[40,0,152,51],[44,0,152,23],[47,0,152,58],[48,0,152,59]],[[10,0,153,16],[18,0,153,23],[33,0,153,38],[34,0,153,45],[38,0,153,23],[41,0,153,52],[42,0,153,53]],[[10,0,154,16],[18,0,154,23],[34,0,154,39],[35,0,154,46],[39,0,154,23],[42,0,154,66]],[[10,0,155,16],[18,0,155,23],[33,0,155,38],[34,0,155,45],[38,0,155,23],[41,0,155,52]],[],[],[[16,0,159,17]],[[8,0,160,12],[11,0,160,16],[13,0,160,16],[16,0,160,21]],[[10,0,161,16],[18,0,161,23],[33,0,161,38],[34,0,161,45],[38,0,161,23],[41,0,161,52],[42,0,161,53]],[],[],[[4,0,166,8],[12,0,166,15],[25,0,166,15],[28,0,166,31]],[[4,0,169,8],[20,0,169,33]],[],[[2,0,180,4],[18,0,180,11],[26,0,180,28],[30,0,180,19],[39,0,180,45],[46,0,180,33]],[],[],[],[],[],[],[],[],[],[],[[4,0,181,8],[14,0,181,19],[30,0,181,34],[63,0,181,57]],[[4,0,182,8],[12,0,182,20],[20,0,182,15],[21,0,182,29],[30,0,182,38],[40,0,182,15]],[[4,0,183,8]],[],[],[],[],[],[],[],[],[]]
|