@opcat-labs/cat-sdk 4.0.0 → 4.1.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/cat20/cat20.json +35 -35
- package/artifacts/cat20/cat20.scrypt +19 -19
- package/artifacts/cat20/cat20Admin.json +34 -34
- package/artifacts/cat20/cat20Admin.scrypt +24 -24
- package/artifacts/cat20/cat20GuardStateLib.json +22 -22
- package/artifacts/cat20/cat20GuardStateLib.scrypt +5 -5
- package/artifacts/cat20/cat20GuardVariants.json +2 -2
- package/artifacts/cat20/cat20GuardVariants.scrypt +1 -1
- package/artifacts/cat20/cat20Guard_12_12_2.json +29 -29
- package/artifacts/cat20/cat20Guard_12_12_2.scrypt +20 -20
- package/artifacts/cat20/cat20Guard_12_12_4.json +29 -29
- package/artifacts/cat20/cat20Guard_12_12_4.scrypt +20 -20
- package/artifacts/cat20/cat20Guard_6_6_2.json +29 -29
- package/artifacts/cat20/cat20Guard_6_6_2.scrypt +20 -20
- package/artifacts/cat20/cat20Guard_6_6_4.json +29 -29
- package/artifacts/cat20/cat20Guard_6_6_4.scrypt +20 -20
- package/artifacts/cat20/cat20StateLib.json +23 -23
- package/artifacts/cat20/cat20StateLib.scrypt +5 -5
- package/artifacts/cat20/minters/cat20ClosedMinter.json +32 -32
- package/artifacts/cat20/minters/cat20ClosedMinter.scrypt +19 -19
- package/artifacts/cat20/minters/cat20OpenMinter.json +32 -32
- package/artifacts/cat20/minters/cat20OpenMinter.scrypt +16 -16
- package/artifacts/cat20/types.json +5 -5
- package/artifacts/cat20/types.scrypt +5 -5
- package/artifacts/cat721/cat721.json +35 -35
- package/artifacts/cat721/cat721.scrypt +19 -19
- package/artifacts/cat721/cat721GuardStateLib.json +22 -22
- package/artifacts/cat721/cat721GuardStateLib.scrypt +5 -5
- package/artifacts/cat721/cat721GuardVariants.json +2 -2
- package/artifacts/cat721/cat721GuardVariants.scrypt +1 -1
- package/artifacts/cat721/cat721Guard_12_12_2.json +29 -29
- package/artifacts/cat721/cat721Guard_12_12_2.scrypt +20 -20
- package/artifacts/cat721/cat721Guard_12_12_4.json +29 -29
- package/artifacts/cat721/cat721Guard_12_12_4.scrypt +20 -20
- package/artifacts/cat721/cat721Guard_6_6_2.json +29 -29
- package/artifacts/cat721/cat721Guard_6_6_2.scrypt +20 -20
- package/artifacts/cat721/cat721Guard_6_6_4.json +29 -29
- package/artifacts/cat721/cat721Guard_6_6_4.scrypt +20 -20
- package/artifacts/cat721/cat721StateLib.json +23 -23
- package/artifacts/cat721/cat721StateLib.scrypt +5 -5
- package/artifacts/cat721/minters/cat721ClosedMinter.json +32 -32
- package/artifacts/cat721/minters/cat721ClosedMinter.scrypt +15 -15
- package/artifacts/cat721/minters/cat721OpenMintInfo.json +5 -5
- package/artifacts/cat721/minters/cat721OpenMintInfo.scrypt +4 -4
- package/artifacts/cat721/minters/cat721OpenMinter.json +37 -37
- package/artifacts/cat721/minters/cat721OpenMinter.scrypt +21 -21
- package/artifacts/cat721/minters/cat721OpenMinterMerkleTree.json +20 -20
- package/artifacts/cat721/minters/cat721OpenMinterMerkleTree.scrypt +6 -6
- package/artifacts/cat721/types.json +5 -5
- package/artifacts/cat721/types.scrypt +5 -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 +18 -18
- package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/stdUtils.scrypt +18 -18
- 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 +9 -9
- package/artifacts/types.json +2 -2
- package/artifacts/types.scrypt +2 -2
- package/artifacts/utils/ownerUtils.json +15 -15
- package/artifacts/utils/ownerUtils.scrypt +3 -3
- package/dist/artifacts/cat20/cat20.json +35 -35
- package/dist/artifacts/cat20/cat20.scrypt +19 -19
- package/dist/artifacts/cat20/cat20Admin.json +34 -34
- package/dist/artifacts/cat20/cat20Admin.scrypt +24 -24
- package/dist/artifacts/cat20/cat20GuardStateLib.json +22 -22
- package/dist/artifacts/cat20/cat20GuardStateLib.scrypt +5 -5
- package/dist/artifacts/cat20/cat20GuardVariants.json +2 -2
- package/dist/artifacts/cat20/cat20GuardVariants.scrypt +1 -1
- package/dist/artifacts/cat20/cat20Guard_12_12_2.json +29 -29
- package/dist/artifacts/cat20/cat20Guard_12_12_2.scrypt +20 -20
- package/dist/artifacts/cat20/cat20Guard_12_12_4.json +29 -29
- package/dist/artifacts/cat20/cat20Guard_12_12_4.scrypt +20 -20
- package/dist/artifacts/cat20/cat20Guard_6_6_2.json +29 -29
- package/dist/artifacts/cat20/cat20Guard_6_6_2.scrypt +20 -20
- package/dist/artifacts/cat20/cat20Guard_6_6_4.json +29 -29
- package/dist/artifacts/cat20/cat20Guard_6_6_4.scrypt +20 -20
- package/dist/artifacts/cat20/cat20StateLib.json +23 -23
- package/dist/artifacts/cat20/cat20StateLib.scrypt +5 -5
- package/dist/artifacts/cat20/minters/cat20ClosedMinter.json +32 -32
- package/dist/artifacts/cat20/minters/cat20ClosedMinter.scrypt +19 -19
- package/dist/artifacts/cat20/minters/cat20OpenMinter.json +32 -32
- package/dist/artifacts/cat20/minters/cat20OpenMinter.scrypt +16 -16
- package/dist/artifacts/cat20/types.json +5 -5
- package/dist/artifacts/cat20/types.scrypt +5 -5
- package/dist/artifacts/cat721/cat721.json +35 -35
- package/dist/artifacts/cat721/cat721.scrypt +19 -19
- package/dist/artifacts/cat721/cat721GuardStateLib.json +22 -22
- package/dist/artifacts/cat721/cat721GuardStateLib.scrypt +5 -5
- package/dist/artifacts/cat721/cat721GuardVariants.json +2 -2
- package/dist/artifacts/cat721/cat721GuardVariants.scrypt +1 -1
- package/dist/artifacts/cat721/cat721Guard_12_12_2.json +29 -29
- package/dist/artifacts/cat721/cat721Guard_12_12_2.scrypt +20 -20
- package/dist/artifacts/cat721/cat721Guard_12_12_4.json +29 -29
- package/dist/artifacts/cat721/cat721Guard_12_12_4.scrypt +20 -20
- package/dist/artifacts/cat721/cat721Guard_6_6_2.json +29 -29
- package/dist/artifacts/cat721/cat721Guard_6_6_2.scrypt +20 -20
- package/dist/artifacts/cat721/cat721Guard_6_6_4.json +29 -29
- package/dist/artifacts/cat721/cat721Guard_6_6_4.scrypt +20 -20
- package/dist/artifacts/cat721/cat721StateLib.json +23 -23
- package/dist/artifacts/cat721/cat721StateLib.scrypt +5 -5
- package/dist/artifacts/cat721/minters/cat721ClosedMinter.json +32 -32
- package/dist/artifacts/cat721/minters/cat721ClosedMinter.scrypt +15 -15
- 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 +37 -37
- package/dist/artifacts/cat721/minters/cat721OpenMinter.scrypt +21 -21
- package/dist/artifacts/cat721/minters/cat721OpenMinterMerkleTree.json +20 -20
- package/dist/artifacts/cat721/minters/cat721OpenMinterMerkleTree.scrypt +6 -6
- package/dist/artifacts/cat721/types.json +5 -5
- package/dist/artifacts/cat721/types.scrypt +5 -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 +18 -18
- package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/stdUtils.scrypt +18 -18
- 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 +9 -9
- package/dist/artifacts/types.json +2 -2
- package/dist/artifacts/types.scrypt +2 -2
- package/dist/artifacts/utils/ownerUtils.json +15 -15
- package/dist/artifacts/utils/ownerUtils.scrypt +3 -3
- package/dist/cjs/lib/metadata.js +96 -2
- package/dist/cjs/lib/metadata.js.map +1 -1
- package/dist/esm/lib/metadata.js +92 -1
- package/dist/esm/lib/metadata.js.map +1 -1
- package/dist/types/lib/metadata.d.ts +38 -1
- package/dist/types/lib/metadata.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -11,27 +11,27 @@ import "../scrypt-ts-opcat/assets/smart-contract/types/structs.scrypt";
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
contract
|
|
14
|
+
contract _opcat_labs_cat_sdk_4_1_0__rs__CAT20Guard_6_6_4 {
|
|
15
15
|
constructor(){}
|
|
16
|
-
public function unlock(Sig deployerSig, PubKey deployerPubKey, int[4] tokenAmounts, int[4] tokenBurnAmounts, bytes[6] nextStateHashes, bytes[6] ownerAddrOrScriptHashes, int[6] outputTokens, int[6] tokenScriptHashIndexes, int[6] outputSatoshis,
|
|
16
|
+
public function unlock(Sig deployerSig, PubKey deployerPubKey, int[4] tokenAmounts, int[4] tokenBurnAmounts, bytes[6] nextStateHashes, bytes[6] ownerAddrOrScriptHashes, int[6] outputTokens, int[6] tokenScriptHashIndexes, int[6] outputSatoshis, _opcat_labs_cat_sdk_4_1_0__rs__CAT20State[6] cat20States, int outputCount, _opcat_labs_scrypt_ts_opcat_4_1_0__rs__SHPreimage __scrypt_ts_shPreimage, Sig __scrypt_ts_preimageSig, _opcat_labs_cat_sdk_4_1_0__rs__CAT20GuardConstState __scrypt_ts_curState, bytes __scrypt_ts_spentAmounts, bytes __scrypt_ts_spentDataHashes, bytes __scrypt_ts_spentScriptHashes) {
|
|
17
17
|
require(__scrypt_ts_shPreimage.sigHashType == 1);
|
|
18
|
-
require(__scrypt_ts_preimageSig[len(__scrypt_ts_preimageSig) - 1 : ] == num2bin(__scrypt_ts_shPreimage.sigHashType, 2)[0 : 1] && num2bin(__scrypt_ts_shPreimage.sigHashType, 2)[1 : ] == b'00' && checkDataSig(Sig(__scrypt_ts_preimageSig[0 : len(__scrypt_ts_preimageSig) - 1]), sha256(
|
|
18
|
+
require(__scrypt_ts_preimageSig[len(__scrypt_ts_preimageSig) - 1 : ] == num2bin(__scrypt_ts_shPreimage.sigHashType, 2)[0 : 1] && num2bin(__scrypt_ts_shPreimage.sigHashType, 2)[1 : ] == b'00' && checkDataSig(Sig(__scrypt_ts_preimageSig[0 : len(__scrypt_ts_preimageSig) - 1]), sha256(_opcat_labs_scrypt_ts_opcat_4_1_0__rs__ContextUtils.serializeSHPreimage(__scrypt_ts_shPreimage)), _opcat_labs_scrypt_ts_opcat_4_1_0__rs__ContextUtils.pubKey) && checkSig(__scrypt_ts_preimageSig, _opcat_labs_scrypt_ts_opcat_4_1_0__rs__ContextUtils.pubKey));
|
|
19
19
|
|
|
20
|
-
int __scrypt_ts_inputCount =
|
|
20
|
+
int __scrypt_ts_inputCount = _opcat_labs_scrypt_ts_opcat_4_1_0__rs__ContextUtils.checkSpentAmounts(__scrypt_ts_spentAmounts, __scrypt_ts_shPreimage.hashSpentAmounts);
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
_opcat_labs_scrypt_ts_opcat_4_1_0__rs__ContextUtils.checkSpentScripts(__scrypt_ts_spentScriptHashes, __scrypt_ts_shPreimage.hashSpentScriptHashes, __scrypt_ts_inputCount);
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
_opcat_labs_scrypt_ts_opcat_4_1_0__rs__ContextUtils.checkSpentDataHashes(__scrypt_ts_spentDataHashes, __scrypt_ts_shPreimage.hashSpentDataHashes, __scrypt_ts_inputCount);
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
_opcat_labs_cat_sdk_4_1_0__rs__CAT20GuardConstState __scrypt_ts_nextState = __scrypt_ts_curState;
|
|
27
27
|
|
|
28
|
-
require(__scrypt_ts_shPreimage.spentDataHash ==
|
|
28
|
+
require(__scrypt_ts_shPreimage.spentDataHash == _opcat_labs_cat_sdk_4_1_0__rs__CAT20Guard_6_6_4.stateHash(__scrypt_ts_curState));
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
_opcat_labs_cat_sdk_4_1_0__rs__OwnerUtils.checkUserOwner(deployerPubKey, __scrypt_ts_nextState.deployerAddr);
|
|
31
31
|
require((deployerSig[len(deployerSig) - 1 : ] == num2bin(1, 2)[0 : 1] && num2bin(1, 2)[1 : ] == b'00' && checkSig(deployerSig, deployerPubKey)));
|
|
32
|
-
|
|
32
|
+
_opcat_labs_cat_sdk_4_1_0__rs__CAT20GuardStateLib.formalCheckState(__scrypt_ts_nextState, 6);
|
|
33
33
|
int inputTokenTypes = 0;
|
|
34
|
-
bytes[4] tokenScriptPlaceholders = [
|
|
34
|
+
bytes[4] tokenScriptPlaceholders = [_opcat_labs_cat_sdk_4_1_0__rs__ConstantsLib.TOKEN_SCRIPT_HASH_PLACEHOLDER_FF, _opcat_labs_cat_sdk_4_1_0__rs__ConstantsLib.TOKEN_SCRIPT_HASH_PLACEHOLDER_FE, _opcat_labs_cat_sdk_4_1_0__rs__ConstantsLib.TOKEN_SCRIPT_HASH_PLACEHOLDER_FD, _opcat_labs_cat_sdk_4_1_0__rs__ConstantsLib.TOKEN_SCRIPT_HASH_PLACEHOLDER_FC];
|
|
35
35
|
loop (4) : i {
|
|
36
36
|
require(tokenAmounts[(i)] >= 0);
|
|
37
37
|
require(tokenBurnAmounts[(i)] >= 0);
|
|
@@ -66,9 +66,9 @@ contract _opcat_labs_cat_sdk_4_0_0__rs__CAT20Guard_6_6_4 {
|
|
|
66
66
|
require(tokenScriptIndex < inputTokenTypes);
|
|
67
67
|
if(tokenScriptIndex != -1) {
|
|
68
68
|
bytes tokenScriptHash = __scrypt_ts_nextState.tokenScriptHashes[(tokenScriptIndex)];
|
|
69
|
-
require(tokenScriptHash ==
|
|
70
|
-
|
|
71
|
-
require(
|
|
69
|
+
require(tokenScriptHash == _opcat_labs_scrypt_ts_opcat_4_1_0__rs__ContextUtils.getSpentScriptHash(__scrypt_ts_spentScriptHashes, (i)));
|
|
70
|
+
_opcat_labs_cat_sdk_4_1_0__rs__CAT20StateLib.checkState(cat20States[i]);
|
|
71
|
+
require(_opcat_labs_scrypt_ts_opcat_4_1_0__rs__ContextUtils.getSpentDataHash(__scrypt_ts_spentDataHashes, (i)) == _opcat_labs_cat_sdk_4_1_0__rs__CAT20StateLib.stateHash(cat20States[i]));
|
|
72
72
|
sumInputTokens[(tokenScriptIndex)] = sumInputTokens[(tokenScriptIndex)] + cat20States[i].amount;
|
|
73
73
|
tokenScriptIndexMax = tokenScriptIndex > tokenScriptIndexMax ? tokenScriptIndex : tokenScriptIndexMax;
|
|
74
74
|
}
|
|
@@ -87,21 +87,21 @@ contract _opcat_labs_cat_sdk_4_0_0__rs__CAT20Guard_6_6_4 {
|
|
|
87
87
|
require(tokenScriptHashIndex >= -1);
|
|
88
88
|
require(tokenScriptHashIndex < inputTokenTypes);
|
|
89
89
|
if(tokenScriptHashIndex != -1) {
|
|
90
|
-
|
|
90
|
+
_opcat_labs_cat_sdk_4_1_0__rs__OwnerUtils.checkOwnerAddr(ownerAddrOrScriptHash);
|
|
91
91
|
int tokenAmount = outputTokens[i];
|
|
92
92
|
require(tokenAmount > 0);
|
|
93
93
|
require(outputSatoshis[i] > 0);
|
|
94
94
|
sumOutputTokens[(tokenScriptHashIndex)] = sumOutputTokens[(tokenScriptHashIndex)] + tokenAmount;
|
|
95
|
-
bytes tokenStateHash =
|
|
95
|
+
bytes tokenStateHash = _opcat_labs_cat_sdk_4_1_0__rs__CAT20StateLib.stateHash({ownerAddrOrScriptHash, tokenAmount});
|
|
96
96
|
require(nextStateHashes[i] == tokenStateHash);
|
|
97
97
|
bytes tokenScriptHash = __scrypt_ts_nextState.tokenScriptHashes[(tokenScriptHashIndex)];
|
|
98
|
-
outputs +=
|
|
98
|
+
outputs += _opcat_labs_scrypt_ts_opcat_4_1_0__rs__TxUtils.buildDataOutput(tokenScriptHash, outputSatoshis[i], tokenStateHash);
|
|
99
99
|
} else {
|
|
100
100
|
require(outputTokens[i] == 0);
|
|
101
101
|
loop (4) : j {
|
|
102
102
|
require(ownerAddrOrScriptHash != __scrypt_ts_nextState.tokenScriptHashes[j]);
|
|
103
103
|
}
|
|
104
|
-
outputs +=
|
|
104
|
+
outputs += _opcat_labs_scrypt_ts_opcat_4_1_0__rs__TxUtils.buildDataOutput(ownerAddrOrScriptHash, outputSatoshis[i], nextStateHashes[i]);
|
|
105
105
|
}
|
|
106
106
|
} else {
|
|
107
107
|
require(len(ownerAddrOrScriptHashes[i]) == 0);
|
|
@@ -125,10 +125,10 @@ contract _opcat_labs_cat_sdk_4_0_0__rs__CAT20Guard_6_6_4 {
|
|
|
125
125
|
}
|
|
126
126
|
require(hash256(outputs) == __scrypt_ts_shPreimage.hashOutputs);
|
|
127
127
|
}
|
|
128
|
-
static function serializeState(
|
|
128
|
+
static function serializeState(_opcat_labs_cat_sdk_4_1_0__rs__CAT20GuardConstState __scrypt_ts_curState): bytes {
|
|
129
129
|
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(__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(__scrypt_ts_curState.tokenScriptIndexes));
|
|
130
130
|
}
|
|
131
|
-
static function stateHash(
|
|
131
|
+
static function stateHash(_opcat_labs_cat_sdk_4_1_0__rs__CAT20GuardConstState __scrypt_ts_curState): bytes {
|
|
132
132
|
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(__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(__scrypt_ts_curState.tokenScriptIndexes)));
|
|
133
133
|
}
|
|
134
134
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 10,
|
|
3
3
|
"compilerVersion": "1.22.0+commit.47800da",
|
|
4
|
-
"contract": "
|
|
4
|
+
"contract": "_opcat_labs_cat_sdk_4_1_0__rs__CAT20StateLib",
|
|
5
5
|
"md5": "d41d8cd98f00b204e9800998ecf8427e",
|
|
6
6
|
"structs": [
|
|
7
7
|
{
|
|
8
|
-
"name": "
|
|
8
|
+
"name": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__TxOut",
|
|
9
9
|
"params": [
|
|
10
10
|
{
|
|
11
11
|
"name": "scriptHash",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"genericTypes": []
|
|
24
24
|
},
|
|
25
25
|
{
|
|
26
|
-
"name": "
|
|
26
|
+
"name": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__TxIn",
|
|
27
27
|
"params": [
|
|
28
28
|
{
|
|
29
29
|
"name": "prevTxHash",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"genericTypes": []
|
|
46
46
|
},
|
|
47
47
|
{
|
|
48
|
-
"name": "
|
|
48
|
+
"name": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__TxHashPreimage",
|
|
49
49
|
"params": [
|
|
50
50
|
{
|
|
51
51
|
"name": "version",
|
|
@@ -67,11 +67,11 @@
|
|
|
67
67
|
"genericTypes": []
|
|
68
68
|
},
|
|
69
69
|
{
|
|
70
|
-
"name": "
|
|
70
|
+
"name": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__BacktraceInfo",
|
|
71
71
|
"params": [
|
|
72
72
|
{
|
|
73
73
|
"name": "prevTxInput",
|
|
74
|
-
"type": "
|
|
74
|
+
"type": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__TxIn"
|
|
75
75
|
},
|
|
76
76
|
{
|
|
77
77
|
"name": "prevTxInputIndex",
|
|
@@ -79,13 +79,13 @@
|
|
|
79
79
|
},
|
|
80
80
|
{
|
|
81
81
|
"name": "prevPrevTxPreimage",
|
|
82
|
-
"type": "
|
|
82
|
+
"type": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__TxHashPreimage"
|
|
83
83
|
}
|
|
84
84
|
],
|
|
85
85
|
"genericTypes": []
|
|
86
86
|
},
|
|
87
87
|
{
|
|
88
|
-
"name": "
|
|
88
|
+
"name": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__SHPreimage",
|
|
89
89
|
"params": [
|
|
90
90
|
{
|
|
91
91
|
"name": "nVersion",
|
|
@@ -151,7 +151,7 @@
|
|
|
151
151
|
"genericTypes": []
|
|
152
152
|
},
|
|
153
153
|
{
|
|
154
|
-
"name": "
|
|
154
|
+
"name": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__Outpoint",
|
|
155
155
|
"params": [
|
|
156
156
|
{
|
|
157
157
|
"name": "txHash",
|
|
@@ -165,7 +165,7 @@
|
|
|
165
165
|
"genericTypes": []
|
|
166
166
|
},
|
|
167
167
|
{
|
|
168
|
-
"name": "
|
|
168
|
+
"name": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__ChangeInfo",
|
|
169
169
|
"params": [
|
|
170
170
|
{
|
|
171
171
|
"name": "pubkeyhash",
|
|
@@ -183,7 +183,7 @@
|
|
|
183
183
|
"genericTypes": []
|
|
184
184
|
},
|
|
185
185
|
{
|
|
186
|
-
"name": "
|
|
186
|
+
"name": "_opcat_labs_cat_sdk_4_1_0__rs__CAT20GuardConstState",
|
|
187
187
|
"params": [
|
|
188
188
|
{
|
|
189
189
|
"name": "deployerAddr",
|
|
@@ -201,7 +201,7 @@
|
|
|
201
201
|
"genericTypes": []
|
|
202
202
|
},
|
|
203
203
|
{
|
|
204
|
-
"name": "
|
|
204
|
+
"name": "_opcat_labs_cat_sdk_4_1_0__rs__CAT20State",
|
|
205
205
|
"params": [
|
|
206
206
|
{
|
|
207
207
|
"name": "ownerAddr",
|
|
@@ -215,7 +215,7 @@
|
|
|
215
215
|
"genericTypes": []
|
|
216
216
|
},
|
|
217
217
|
{
|
|
218
|
-
"name": "
|
|
218
|
+
"name": "_opcat_labs_cat_sdk_4_1_0__rs__CAT20ClosedMinterState",
|
|
219
219
|
"params": [
|
|
220
220
|
{
|
|
221
221
|
"name": "tokenScriptHash",
|
|
@@ -225,7 +225,7 @@
|
|
|
225
225
|
"genericTypes": []
|
|
226
226
|
},
|
|
227
227
|
{
|
|
228
|
-
"name": "
|
|
228
|
+
"name": "_opcat_labs_cat_sdk_4_1_0__rs__CAT20OpenMinterState",
|
|
229
229
|
"params": [
|
|
230
230
|
{
|
|
231
231
|
"name": "tokenScriptHash",
|
|
@@ -243,7 +243,7 @@
|
|
|
243
243
|
"genericTypes": []
|
|
244
244
|
},
|
|
245
245
|
{
|
|
246
|
-
"name": "
|
|
246
|
+
"name": "_opcat_labs_cat_sdk_4_1_0__rs__CAT20AdminState",
|
|
247
247
|
"params": [
|
|
248
248
|
{
|
|
249
249
|
"name": "tag",
|
|
@@ -257,7 +257,7 @@
|
|
|
257
257
|
"genericTypes": []
|
|
258
258
|
},
|
|
259
259
|
{
|
|
260
|
-
"name": "
|
|
260
|
+
"name": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__ReadVarintResult",
|
|
261
261
|
"params": [
|
|
262
262
|
{
|
|
263
263
|
"name": "data",
|
|
@@ -273,32 +273,32 @@
|
|
|
273
273
|
],
|
|
274
274
|
"library": [
|
|
275
275
|
{
|
|
276
|
-
"name": "
|
|
276
|
+
"name": "_opcat_labs_cat_sdk_4_1_0__rs__CAT20StateLib",
|
|
277
277
|
"params": [],
|
|
278
278
|
"properties": [],
|
|
279
279
|
"genericTypes": [],
|
|
280
|
-
"stateType": "
|
|
280
|
+
"stateType": "_opcat_labs_cat_sdk_4_1_0__rs__CAT20State"
|
|
281
281
|
},
|
|
282
282
|
{
|
|
283
|
-
"name": "
|
|
283
|
+
"name": "_opcat_labs_cat_sdk_4_1_0__rs__OwnerUtils",
|
|
284
284
|
"params": [],
|
|
285
285
|
"properties": [],
|
|
286
286
|
"genericTypes": []
|
|
287
287
|
},
|
|
288
288
|
{
|
|
289
|
-
"name": "
|
|
289
|
+
"name": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__TxUtils",
|
|
290
290
|
"params": [],
|
|
291
291
|
"properties": [],
|
|
292
292
|
"genericTypes": []
|
|
293
293
|
},
|
|
294
294
|
{
|
|
295
|
-
"name": "
|
|
295
|
+
"name": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__ContextUtils",
|
|
296
296
|
"params": [],
|
|
297
297
|
"properties": [],
|
|
298
298
|
"genericTypes": []
|
|
299
299
|
},
|
|
300
300
|
{
|
|
301
|
-
"name": "
|
|
301
|
+
"name": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__StdUtils",
|
|
302
302
|
"params": [],
|
|
303
303
|
"properties": [],
|
|
304
304
|
"genericTypes": []
|
|
@@ -312,7 +312,7 @@
|
|
|
312
312
|
}
|
|
313
313
|
],
|
|
314
314
|
"stateProps": [],
|
|
315
|
-
"stateType": "
|
|
315
|
+
"stateType": "_opcat_labs_cat_sdk_4_1_0__rs__CAT20State",
|
|
316
316
|
"buildType": "release",
|
|
317
317
|
"file": "../cat20StateLib.scrypt",
|
|
318
318
|
"hex": ""
|
|
@@ -6,16 +6,16 @@ import "../scrypt-ts-opcat/assets/smart-contract/builtin-libs/contextUtils.scryp
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
library
|
|
10
|
-
static function checkState(
|
|
11
|
-
|
|
9
|
+
library _opcat_labs_cat_sdk_4_1_0__rs__CAT20StateLib {
|
|
10
|
+
static function checkState(_opcat_labs_cat_sdk_4_1_0__rs__CAT20State _state) : bool {
|
|
11
|
+
_opcat_labs_cat_sdk_4_1_0__rs__OwnerUtils.checkOwnerAddr(_state.ownerAddr);
|
|
12
12
|
require(_state.amount > 0);
|
|
13
13
|
return true;
|
|
14
14
|
}
|
|
15
|
-
static function serializeState(
|
|
15
|
+
static function serializeState(_opcat_labs_cat_sdk_4_1_0__rs__CAT20State __scrypt_ts_curState): bytes {
|
|
16
16
|
return num2bin(len(__scrypt_ts_curState.ownerAddr), 2) + __scrypt_ts_curState.ownerAddr + num2bin(len(pack(__scrypt_ts_curState.amount)), 2) + pack(__scrypt_ts_curState.amount) + hash160(hash160(__scrypt_ts_curState.ownerAddr) + hash160(pack(__scrypt_ts_curState.amount)));
|
|
17
17
|
}
|
|
18
|
-
static function stateHash(
|
|
18
|
+
static function stateHash(_opcat_labs_cat_sdk_4_1_0__rs__CAT20State __scrypt_ts_curState): bytes {
|
|
19
19
|
return sha256(num2bin(len(__scrypt_ts_curState.ownerAddr), 2) + __scrypt_ts_curState.ownerAddr + num2bin(len(pack(__scrypt_ts_curState.amount)), 2) + pack(__scrypt_ts_curState.amount) + hash160(hash160(__scrypt_ts_curState.ownerAddr) + hash160(pack(__scrypt_ts_curState.amount))));
|
|
20
20
|
}
|
|
21
21
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 10,
|
|
3
3
|
"compilerVersion": "1.22.0+commit.47800da",
|
|
4
|
-
"contract": "
|
|
4
|
+
"contract": "_opcat_labs_cat_sdk_4_1_0__rs__CAT20ClosedMinter",
|
|
5
5
|
"md5": "2b04f8f4af55c13338cd6380b64852d9",
|
|
6
6
|
"structs": [
|
|
7
7
|
{
|
|
8
|
-
"name": "
|
|
8
|
+
"name": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__ReadVarintResult",
|
|
9
9
|
"params": [
|
|
10
10
|
{
|
|
11
11
|
"name": "data",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"genericTypes": []
|
|
20
20
|
},
|
|
21
21
|
{
|
|
22
|
-
"name": "
|
|
22
|
+
"name": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__TxOut",
|
|
23
23
|
"params": [
|
|
24
24
|
{
|
|
25
25
|
"name": "scriptHash",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"genericTypes": []
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
|
-
"name": "
|
|
40
|
+
"name": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__TxIn",
|
|
41
41
|
"params": [
|
|
42
42
|
{
|
|
43
43
|
"name": "prevTxHash",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"genericTypes": []
|
|
60
60
|
},
|
|
61
61
|
{
|
|
62
|
-
"name": "
|
|
62
|
+
"name": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__TxHashPreimage",
|
|
63
63
|
"params": [
|
|
64
64
|
{
|
|
65
65
|
"name": "version",
|
|
@@ -81,11 +81,11 @@
|
|
|
81
81
|
"genericTypes": []
|
|
82
82
|
},
|
|
83
83
|
{
|
|
84
|
-
"name": "
|
|
84
|
+
"name": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__BacktraceInfo",
|
|
85
85
|
"params": [
|
|
86
86
|
{
|
|
87
87
|
"name": "prevTxInput",
|
|
88
|
-
"type": "
|
|
88
|
+
"type": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__TxIn"
|
|
89
89
|
},
|
|
90
90
|
{
|
|
91
91
|
"name": "prevTxInputIndex",
|
|
@@ -93,13 +93,13 @@
|
|
|
93
93
|
},
|
|
94
94
|
{
|
|
95
95
|
"name": "prevPrevTxPreimage",
|
|
96
|
-
"type": "
|
|
96
|
+
"type": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__TxHashPreimage"
|
|
97
97
|
}
|
|
98
98
|
],
|
|
99
99
|
"genericTypes": []
|
|
100
100
|
},
|
|
101
101
|
{
|
|
102
|
-
"name": "
|
|
102
|
+
"name": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__SHPreimage",
|
|
103
103
|
"params": [
|
|
104
104
|
{
|
|
105
105
|
"name": "nVersion",
|
|
@@ -165,7 +165,7 @@
|
|
|
165
165
|
"genericTypes": []
|
|
166
166
|
},
|
|
167
167
|
{
|
|
168
|
-
"name": "
|
|
168
|
+
"name": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__Outpoint",
|
|
169
169
|
"params": [
|
|
170
170
|
{
|
|
171
171
|
"name": "txHash",
|
|
@@ -179,7 +179,7 @@
|
|
|
179
179
|
"genericTypes": []
|
|
180
180
|
},
|
|
181
181
|
{
|
|
182
|
-
"name": "
|
|
182
|
+
"name": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__ChangeInfo",
|
|
183
183
|
"params": [
|
|
184
184
|
{
|
|
185
185
|
"name": "pubkeyhash",
|
|
@@ -197,7 +197,7 @@
|
|
|
197
197
|
"genericTypes": []
|
|
198
198
|
},
|
|
199
199
|
{
|
|
200
|
-
"name": "
|
|
200
|
+
"name": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__ChainTxVerifyResponse",
|
|
201
201
|
"params": [
|
|
202
202
|
{
|
|
203
203
|
"name": "prevPrevScript",
|
|
@@ -211,7 +211,7 @@
|
|
|
211
211
|
"genericTypes": []
|
|
212
212
|
},
|
|
213
213
|
{
|
|
214
|
-
"name": "
|
|
214
|
+
"name": "_opcat_labs_cat_sdk_4_1_0__rs__CAT20GuardConstState",
|
|
215
215
|
"params": [
|
|
216
216
|
{
|
|
217
217
|
"name": "deployerAddr",
|
|
@@ -229,7 +229,7 @@
|
|
|
229
229
|
"genericTypes": []
|
|
230
230
|
},
|
|
231
231
|
{
|
|
232
|
-
"name": "
|
|
232
|
+
"name": "_opcat_labs_cat_sdk_4_1_0__rs__CAT20State",
|
|
233
233
|
"params": [
|
|
234
234
|
{
|
|
235
235
|
"name": "ownerAddr",
|
|
@@ -243,7 +243,7 @@
|
|
|
243
243
|
"genericTypes": []
|
|
244
244
|
},
|
|
245
245
|
{
|
|
246
|
-
"name": "
|
|
246
|
+
"name": "_opcat_labs_cat_sdk_4_1_0__rs__CAT20ClosedMinterState",
|
|
247
247
|
"params": [
|
|
248
248
|
{
|
|
249
249
|
"name": "tokenScriptHash",
|
|
@@ -253,7 +253,7 @@
|
|
|
253
253
|
"genericTypes": []
|
|
254
254
|
},
|
|
255
255
|
{
|
|
256
|
-
"name": "
|
|
256
|
+
"name": "_opcat_labs_cat_sdk_4_1_0__rs__CAT20OpenMinterState",
|
|
257
257
|
"params": [
|
|
258
258
|
{
|
|
259
259
|
"name": "tokenScriptHash",
|
|
@@ -271,7 +271,7 @@
|
|
|
271
271
|
"genericTypes": []
|
|
272
272
|
},
|
|
273
273
|
{
|
|
274
|
-
"name": "
|
|
274
|
+
"name": "_opcat_labs_cat_sdk_4_1_0__rs__CAT20AdminState",
|
|
275
275
|
"params": [
|
|
276
276
|
{
|
|
277
277
|
"name": "tag",
|
|
@@ -287,44 +287,44 @@
|
|
|
287
287
|
],
|
|
288
288
|
"library": [
|
|
289
289
|
{
|
|
290
|
-
"name": "
|
|
290
|
+
"name": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__TxHashPreimageUtils",
|
|
291
291
|
"params": [],
|
|
292
292
|
"properties": [],
|
|
293
293
|
"genericTypes": []
|
|
294
294
|
},
|
|
295
295
|
{
|
|
296
|
-
"name": "
|
|
296
|
+
"name": "_opcat_labs_cat_sdk_4_1_0__rs__CAT20StateLib",
|
|
297
297
|
"params": [],
|
|
298
298
|
"properties": [],
|
|
299
299
|
"genericTypes": [],
|
|
300
|
-
"stateType": "
|
|
300
|
+
"stateType": "_opcat_labs_cat_sdk_4_1_0__rs__CAT20State"
|
|
301
301
|
},
|
|
302
302
|
{
|
|
303
|
-
"name": "
|
|
303
|
+
"name": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__StdUtils",
|
|
304
304
|
"params": [],
|
|
305
305
|
"properties": [],
|
|
306
306
|
"genericTypes": []
|
|
307
307
|
},
|
|
308
308
|
{
|
|
309
|
-
"name": "
|
|
309
|
+
"name": "_opcat_labs_cat_sdk_4_1_0__rs__OwnerUtils",
|
|
310
310
|
"params": [],
|
|
311
311
|
"properties": [],
|
|
312
312
|
"genericTypes": []
|
|
313
313
|
},
|
|
314
314
|
{
|
|
315
|
-
"name": "
|
|
315
|
+
"name": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__ContextUtils",
|
|
316
316
|
"params": [],
|
|
317
317
|
"properties": [],
|
|
318
318
|
"genericTypes": []
|
|
319
319
|
},
|
|
320
320
|
{
|
|
321
|
-
"name": "
|
|
321
|
+
"name": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__Backtrace",
|
|
322
322
|
"params": [],
|
|
323
323
|
"properties": [],
|
|
324
324
|
"genericTypes": []
|
|
325
325
|
},
|
|
326
326
|
{
|
|
327
|
-
"name": "
|
|
327
|
+
"name": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__TxUtils",
|
|
328
328
|
"params": [],
|
|
329
329
|
"properties": [],
|
|
330
330
|
"genericTypes": []
|
|
@@ -339,7 +339,7 @@
|
|
|
339
339
|
"params": [
|
|
340
340
|
{
|
|
341
341
|
"name": "tokenMint",
|
|
342
|
-
"type": "
|
|
342
|
+
"type": "_opcat_labs_cat_sdk_4_1_0__rs__CAT20State"
|
|
343
343
|
},
|
|
344
344
|
{
|
|
345
345
|
"name": "issuerPubKey",
|
|
@@ -359,11 +359,11 @@
|
|
|
359
359
|
},
|
|
360
360
|
{
|
|
361
361
|
"name": "backtraceInfo",
|
|
362
|
-
"type": "
|
|
362
|
+
"type": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__BacktraceInfo"
|
|
363
363
|
},
|
|
364
364
|
{
|
|
365
365
|
"name": "__scrypt_ts_shPreimage",
|
|
366
|
-
"type": "
|
|
366
|
+
"type": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__SHPreimage"
|
|
367
367
|
},
|
|
368
368
|
{
|
|
369
369
|
"name": "__scrypt_ts_preimageSig",
|
|
@@ -371,15 +371,15 @@
|
|
|
371
371
|
},
|
|
372
372
|
{
|
|
373
373
|
"name": "__scrypt_ts_changeInfo",
|
|
374
|
-
"type": "
|
|
374
|
+
"type": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__ChangeInfo"
|
|
375
375
|
},
|
|
376
376
|
{
|
|
377
377
|
"name": "__scrypt_ts_curState",
|
|
378
|
-
"type": "
|
|
378
|
+
"type": "_opcat_labs_cat_sdk_4_1_0__rs__CAT20ClosedMinterState"
|
|
379
379
|
},
|
|
380
380
|
{
|
|
381
381
|
"name": "__scrypt_ts_prevTxHashPreimage",
|
|
382
|
-
"type": "
|
|
382
|
+
"type": "_opcat_labs_scrypt_ts_opcat_4_1_0__rs__TxHashPreimage"
|
|
383
383
|
}
|
|
384
384
|
]
|
|
385
385
|
},
|
|
@@ -398,7 +398,7 @@
|
|
|
398
398
|
}
|
|
399
399
|
],
|
|
400
400
|
"stateProps": [],
|
|
401
|
-
"stateType": "
|
|
401
|
+
"stateType": "_opcat_labs_cat_sdk_4_1_0__rs__CAT20ClosedMinterState",
|
|
402
402
|
"buildType": "release",
|
|
403
403
|
"file": "../cat20ClosedMinter.scrypt",
|
|
404
404
|
"hex": "0176018801a901ac01fd01fe01ff2102ba79df5f8ae7604a9830f03c7933028186aede0675a16f025dc4f8be8eec0382206712360d7ad09ba9a59cd236aab61db7183c8d881c74ea029debd1f6b26711f80000<ownerAddress><genesisOutpoint>78547a7572537a76537a757777011479519d01137901147982778c7f770115795280517f75007f7787630114795280517f770100876700686301137901147982778c7f75007f770123790123790123790123790123790123790123790123790123790123790123790123790123790123790123795e798277549d5d79827701209d5c7900a2695b79827701249d5a79827701209d5979827701209d587900a26957798277549d5679827701209d5579827701209d5479827701209d5379827701209d5279827701209d7800a26976519c6476529c6751686476539c67516864760281009c67516864760282009c67516864760283009c675168695e795e797e5d79546e8b806e7c7f75007f6b6d6d6c7e5c797e5b797e5a797e5979767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c7e58797e57797e56797e55797e54797e53797e5279546e8b806e7c7f75007f6b6d6d6c7e7854807e6b6d6d6d6d6d6d6d6c77a85579ba670068630113795479ac670068690122790122790122790122790122790122790122790122790122790122790122790122790122790122790122795b7901207f75007f775c7901247f7501207f77768277549d767601007e817777726d726d726d726d726d726d726d7b750111790120790113797682775280787e78a9a97ea87788011179011179011179011179012679547954795479547953798277549d5279014878827d77527997009d6e7c967777775279014878827d77527997009d6e7c96777777557952790000527902fd009f637551675279030000019f630118797b757c52776752790500000000019f630117797b757c5477670116797b757c587768686878537952796e8b806e7c7f75007f6b6d6d6c7e7777777e55797e780000527902fd009f637551675279030000019f630118797b757c52776752790500000000019f630117797b757c5477670116797b757c587768686878537952796e8b806e7c7f75007f6b6d6d6c7e7777777e54797e53797eaa6b6d6d6d6c6e7c01207f75007f77886d6d6d012379009d012f7900a069012179012f79012f79012f79012f79012f79012f79012f79012f79012f795b795e79012d79011d795c795c795c795c795c795c795c795c795c7959797656798b0148957f7556790148957f775a795a795a795a795379827701209d76827701209d707600a2637605ffffffff00a16700686976546e8b806e7c7f75007f6b6d6d6c777e787e52797600a2637605ffffffff00a16700686976546e8b806e7c7f75007f6b6d6d6c777e6b6d6d6c88597976567956795679567953798277549d5279014878827d77527997009d6e7c967777775279014878827d77527997009d6e7c96777777557952790000527902fd009f637551675279030000019f63012d797b757c52776752790500000000019f63012c797b757c547767012b797b757c587768686878537952796e8b806e7c7f75007f6b6d6d6c7e7777777e55797e780000527902fd009f637551675279030000019f63012d797b757c52776752790500000000019f63012c797b757c547767012b797b757c587768686878537952796e8b806e7c7f75007f6b6d6d6c7e7777777e54797e53797eaa6b6d6d6d6c8853795a7901489558930120937f755a7901489558937f77785b797600a2637605ffffffff00a16700686976546e8b806e7c7f75007f6b6d6d6c777e787c726d726d726d726d726d726d765579876378011679885579009d68765579876478547987675168696d6d6d6d6d6d6d750133795679787676827701219d750376a91478a97e0288ac7e7778886d01327901337982778c7f77515280517f75007f778763515280517f7701008767006863013279013479ac670068697876827701209d750001327900a06378013379012479527982777882777801209d7601209d537900a0695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6d6c680136790136797876827d7701199c647601209c675168696d51787700a0696d013679013679788277528052797e78827752807e787e5279a95279a97ea97ea8777753790133796f7582777882777801209d7601209d537900a0695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c775279787e01197900a063011a790113790112797e01147e787e0113797e0111797e77a8011a79011a79527982777882777801209d7601209d537900a0695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c776700687eaa011e79876b6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6c77"
|
|
@@ -10,50 +10,50 @@ import "../../scrypt-ts-opcat/assets/smart-contract/builtin-libs/contextUtils.sc
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
contract
|
|
13
|
+
contract _opcat_labs_cat_sdk_4_1_0__rs__CAT20ClosedMinter {
|
|
14
14
|
bytes issuerAddress;
|
|
15
15
|
bytes genesisOutpoint;
|
|
16
16
|
constructor(bytes ownerAddress, bytes genesisOutpoint) {
|
|
17
17
|
this.issuerAddress = ownerAddress;
|
|
18
18
|
this.genesisOutpoint = genesisOutpoint;
|
|
19
19
|
}
|
|
20
|
-
public function mint(
|
|
20
|
+
public function mint(_opcat_labs_cat_sdk_4_1_0__rs__CAT20State tokenMint, PubKey issuerPubKey, Sig issuerSig, int minterSatoshis, int tokenSatoshis, _opcat_labs_scrypt_ts_opcat_4_1_0__rs__BacktraceInfo backtraceInfo, _opcat_labs_scrypt_ts_opcat_4_1_0__rs__SHPreimage __scrypt_ts_shPreimage, Sig __scrypt_ts_preimageSig, _opcat_labs_scrypt_ts_opcat_4_1_0__rs__ChangeInfo __scrypt_ts_changeInfo, _opcat_labs_cat_sdk_4_1_0__rs__CAT20ClosedMinterState __scrypt_ts_curState, _opcat_labs_scrypt_ts_opcat_4_1_0__rs__TxHashPreimage __scrypt_ts_prevTxHashPreimage) {
|
|
21
21
|
require(__scrypt_ts_shPreimage.sigHashType == 1);
|
|
22
|
-
require(__scrypt_ts_preimageSig[len(__scrypt_ts_preimageSig) - 1 : ] == num2bin(__scrypt_ts_shPreimage.sigHashType, 2)[0 : 1] && num2bin(__scrypt_ts_shPreimage.sigHashType, 2)[1 : ] == b'00' && checkDataSig(Sig(__scrypt_ts_preimageSig[0 : len(__scrypt_ts_preimageSig) - 1]), sha256(
|
|
22
|
+
require(__scrypt_ts_preimageSig[len(__scrypt_ts_preimageSig) - 1 : ] == num2bin(__scrypt_ts_shPreimage.sigHashType, 2)[0 : 1] && num2bin(__scrypt_ts_shPreimage.sigHashType, 2)[1 : ] == b'00' && checkDataSig(Sig(__scrypt_ts_preimageSig[0 : len(__scrypt_ts_preimageSig) - 1]), sha256(_opcat_labs_scrypt_ts_opcat_4_1_0__rs__ContextUtils.serializeSHPreimage(__scrypt_ts_shPreimage)), _opcat_labs_scrypt_ts_opcat_4_1_0__rs__ContextUtils.pubKey) && checkSig(__scrypt_ts_preimageSig, _opcat_labs_scrypt_ts_opcat_4_1_0__rs__ContextUtils.pubKey));
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
_opcat_labs_scrypt_ts_opcat_4_1_0__rs__Outpoint __scrypt_ts_prevout = _opcat_labs_scrypt_ts_opcat_4_1_0__rs__ContextUtils.getOutpoint(__scrypt_ts_shPreimage);
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
_opcat_labs_cat_sdk_4_1_0__rs__CAT20ClosedMinterState __scrypt_ts_nextState = __scrypt_ts_curState;
|
|
27
27
|
|
|
28
|
-
require(__scrypt_ts_shPreimage.spentDataHash ==
|
|
28
|
+
require(__scrypt_ts_shPreimage.spentDataHash == _opcat_labs_cat_sdk_4_1_0__rs__CAT20ClosedMinter.stateHash(__scrypt_ts_curState));
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
_opcat_labs_scrypt_ts_opcat_4_1_0__rs__Backtrace.checkPrevTxHashPreimage(__scrypt_ts_prevTxHashPreimage, __scrypt_ts_shPreimage.outpoint);
|
|
31
31
|
|
|
32
32
|
require(__scrypt_ts_shPreimage.inputIndex == 0);
|
|
33
33
|
require(tokenSatoshis > 0);
|
|
34
34
|
bytes minterScript = __scrypt_ts_shPreimage.spentScriptHash;
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
_opcat_labs_scrypt_ts_opcat_4_1_0__rs__Backtrace.verifyFromOutpoint(backtraceInfo, __scrypt_ts_prevout.outputIndex, this.genesisOutpoint, __scrypt_ts_shPreimage.spentScriptHash, __scrypt_ts_prevTxHashPreimage.inputList);
|
|
36
|
+
_opcat_labs_cat_sdk_4_1_0__rs__OwnerUtils.checkUserOwner(issuerPubKey, this.issuerAddress);
|
|
37
37
|
require((issuerSig[len(issuerSig) - 1 : ] == num2bin(1, 2)[0 : 1] && num2bin(1, 2)[1 : ] == b'00' && checkSig(issuerSig, issuerPubKey)));
|
|
38
|
-
|
|
38
|
+
_opcat_labs_cat_sdk_4_1_0__rs__CAT20ClosedMinter.checkState(__scrypt_ts_nextState);
|
|
39
39
|
bytes minterOutput = b'';
|
|
40
|
-
if(minterSatoshis >
|
|
41
|
-
minterOutput =
|
|
40
|
+
if(minterSatoshis > _opcat_labs_scrypt_ts_opcat_4_1_0__rs__TxUtils.ZERO_SATS) {
|
|
41
|
+
minterOutput = _opcat_labs_scrypt_ts_opcat_4_1_0__rs__TxUtils.buildDataOutput(minterScript, minterSatoshis, __scrypt_ts_shPreimage.spentDataHash);
|
|
42
42
|
}
|
|
43
|
-
|
|
44
|
-
bytes tokenStateHash =
|
|
45
|
-
bytes tokenOutput =
|
|
43
|
+
_opcat_labs_cat_sdk_4_1_0__rs__CAT20StateLib.checkState(tokenMint);
|
|
44
|
+
bytes tokenStateHash = _opcat_labs_cat_sdk_4_1_0__rs__CAT20StateLib.stateHash(tokenMint);
|
|
45
|
+
bytes tokenOutput = _opcat_labs_scrypt_ts_opcat_4_1_0__rs__TxUtils.buildDataOutput(__scrypt_ts_nextState.tokenScriptHash, tokenSatoshis, tokenStateHash);
|
|
46
46
|
require(hash256(minterOutput + tokenOutput +
|
|
47
|
-
(__scrypt_ts_changeInfo.satoshis > 0 ?
|
|
47
|
+
(__scrypt_ts_changeInfo.satoshis > 0 ? _opcat_labs_scrypt_ts_opcat_4_1_0__rs__TxUtils.buildDataOutput(sha256(_opcat_labs_scrypt_ts_opcat_4_1_0__rs__TxUtils.buildP2PKHScript(__scrypt_ts_changeInfo.pubkeyhash)), __scrypt_ts_changeInfo.satoshis, __scrypt_ts_changeInfo.dataHash) : b'')) == __scrypt_ts_shPreimage.hashOutputs);
|
|
48
48
|
}
|
|
49
|
-
static function checkState(
|
|
49
|
+
static function checkState(_opcat_labs_cat_sdk_4_1_0__rs__CAT20ClosedMinterState _state) : bool {
|
|
50
50
|
require(len(_state.tokenScriptHash) == 32);
|
|
51
51
|
return true;
|
|
52
52
|
}
|
|
53
|
-
static function serializeState(
|
|
53
|
+
static function serializeState(_opcat_labs_cat_sdk_4_1_0__rs__CAT20ClosedMinterState __scrypt_ts_curState): bytes {
|
|
54
54
|
return num2bin(len(__scrypt_ts_curState.tokenScriptHash), 2) + __scrypt_ts_curState.tokenScriptHash + hash160(hash160(__scrypt_ts_curState.tokenScriptHash));
|
|
55
55
|
}
|
|
56
|
-
static function stateHash(
|
|
56
|
+
static function stateHash(_opcat_labs_cat_sdk_4_1_0__rs__CAT20ClosedMinterState __scrypt_ts_curState): bytes {
|
|
57
57
|
return sha256(num2bin(len(__scrypt_ts_curState.tokenScriptHash), 2) + __scrypt_ts_curState.tokenScriptHash + hash160(hash160(__scrypt_ts_curState.tokenScriptHash)));
|
|
58
58
|
}
|
|
59
59
|
}
|