@opcat-labs/cat-sdk 3.3.0 → 3.4.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/minters/cat20OpenMinter.scrypt.map +1 -1
- package/artifacts/.templates/cat20/minters/cat20OpenMinter.scrypt.tpl +1 -0
- package/artifacts/cat20/cat20.json +35 -35
- package/artifacts/cat20/cat20.scrypt +18 -18
- package/artifacts/cat20/cat20Admin.json +35 -35
- package/artifacts/cat20/cat20Admin.scrypt +30 -30
- package/artifacts/cat20/cat20GuardStateLib.json +22 -22
- package/artifacts/cat20/cat20GuardStateLib.scrypt +5 -5
- package/artifacts/cat20/cat20Guard_12_12_2.json +34 -34
- package/artifacts/cat20/cat20Guard_12_12_2.scrypt +29 -29
- package/artifacts/cat20/cat20Guard_12_12_4.json +34 -34
- package/artifacts/cat20/cat20Guard_12_12_4.scrypt +29 -29
- package/artifacts/cat20/cat20Guard_6_6_2.json +34 -34
- package/artifacts/cat20/cat20Guard_6_6_2.scrypt +29 -29
- package/artifacts/cat20/cat20Guard_6_6_4.json +34 -34
- package/artifacts/cat20/cat20Guard_6_6_4.scrypt +29 -29
- package/artifacts/cat20/cat20StateLib.json +23 -23
- package/artifacts/cat20/cat20StateLib.scrypt +5 -5
- package/artifacts/cat20/minters/cat20ClosedMinter.json +33 -33
- package/artifacts/cat20/minters/cat20ClosedMinter.scrypt +22 -22
- package/artifacts/cat20/minters/cat20OpenMinter.json +35 -35
- package/artifacts/cat20/minters/cat20OpenMinter.scrypt +19 -18
- 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 +18 -18
- package/artifacts/cat721/cat721GuardStateLib.json +22 -22
- package/artifacts/cat721/cat721GuardStateLib.scrypt +5 -5
- package/artifacts/cat721/cat721Guard_12_12_2.json +33 -33
- package/artifacts/cat721/cat721Guard_12_12_2.scrypt +26 -26
- package/artifacts/cat721/cat721Guard_12_12_4.json +33 -33
- package/artifacts/cat721/cat721Guard_12_12_4.scrypt +26 -26
- package/artifacts/cat721/cat721Guard_6_6_2.json +33 -33
- package/artifacts/cat721/cat721Guard_6_6_2.scrypt +26 -26
- package/artifacts/cat721/cat721Guard_6_6_4.json +33 -33
- package/artifacts/cat721/cat721Guard_6_6_4.scrypt +26 -26
- package/artifacts/cat721/cat721StateLib.json +23 -23
- package/artifacts/cat721/cat721StateLib.scrypt +5 -5
- package/artifacts/cat721/minters/cat721ClosedMinter.json +33 -33
- 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 +38 -38
- package/artifacts/cat721/minters/cat721OpenMinter.scrypt +22 -22
- 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 +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 +13 -13
- 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/artifacts/utils/safeMath.json +15 -15
- package/artifacts/utils/safeMath.scrypt +1 -1
- package/dist/artifacts/cat20/cat20.json +35 -35
- package/dist/artifacts/cat20/cat20.scrypt +18 -18
- package/dist/artifacts/cat20/cat20Admin.json +35 -35
- package/dist/artifacts/cat20/cat20Admin.scrypt +30 -30
- package/dist/artifacts/cat20/cat20GuardStateLib.json +22 -22
- package/dist/artifacts/cat20/cat20GuardStateLib.scrypt +5 -5
- package/dist/artifacts/cat20/cat20Guard_12_12_2.json +34 -34
- package/dist/artifacts/cat20/cat20Guard_12_12_2.scrypt +29 -29
- package/dist/artifacts/cat20/cat20Guard_12_12_4.json +34 -34
- package/dist/artifacts/cat20/cat20Guard_12_12_4.scrypt +29 -29
- package/dist/artifacts/cat20/cat20Guard_6_6_2.json +34 -34
- package/dist/artifacts/cat20/cat20Guard_6_6_2.scrypt +29 -29
- package/dist/artifacts/cat20/cat20Guard_6_6_4.json +34 -34
- package/dist/artifacts/cat20/cat20Guard_6_6_4.scrypt +29 -29
- package/dist/artifacts/cat20/cat20StateLib.json +23 -23
- package/dist/artifacts/cat20/cat20StateLib.scrypt +5 -5
- package/dist/artifacts/cat20/minters/cat20ClosedMinter.json +33 -33
- package/dist/artifacts/cat20/minters/cat20ClosedMinter.scrypt +22 -22
- package/dist/artifacts/cat20/minters/cat20OpenMinter.json +35 -35
- package/dist/artifacts/cat20/minters/cat20OpenMinter.scrypt +19 -18
- 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 +18 -18
- package/dist/artifacts/cat721/cat721GuardStateLib.json +22 -22
- package/dist/artifacts/cat721/cat721GuardStateLib.scrypt +5 -5
- package/dist/artifacts/cat721/cat721Guard_12_12_2.json +33 -33
- package/dist/artifacts/cat721/cat721Guard_12_12_2.scrypt +26 -26
- package/dist/artifacts/cat721/cat721Guard_12_12_4.json +33 -33
- package/dist/artifacts/cat721/cat721Guard_12_12_4.scrypt +26 -26
- package/dist/artifacts/cat721/cat721Guard_6_6_2.json +33 -33
- package/dist/artifacts/cat721/cat721Guard_6_6_2.scrypt +26 -26
- package/dist/artifacts/cat721/cat721Guard_6_6_4.json +33 -33
- package/dist/artifacts/cat721/cat721Guard_6_6_4.scrypt +26 -26
- package/dist/artifacts/cat721/cat721StateLib.json +23 -23
- package/dist/artifacts/cat721/cat721StateLib.scrypt +5 -5
- package/dist/artifacts/cat721/minters/cat721ClosedMinter.json +33 -33
- 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 +38 -38
- package/dist/artifacts/cat721/minters/cat721OpenMinter.scrypt +22 -22
- 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 +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 +13 -13
- 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/artifacts/utils/safeMath.json +15 -15
- package/dist/artifacts/utils/safeMath.scrypt +1 -1
- package/dist/cjs/contracts/cat20/minters/cat20OpenMinter.js +1 -0
- package/dist/cjs/contracts/cat20/minters/cat20OpenMinter.js.map +1 -1
- package/dist/cjs/utils/index.js +1 -1
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/esm/contracts/cat20/minters/cat20OpenMinter.js +1 -0
- package/dist/esm/contracts/cat20/minters/cat20OpenMinter.js.map +1 -1
- package/dist/esm/utils/index.js +1 -1
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/types/contracts/cat20/minters/cat20OpenMinter.d.ts.map +1 -1
- package/package.json +4 -4
- package/scrypt.index.json +1 -1
|
@@ -11,7 +11,7 @@ import "../../scrypt-ts-opcat/assets/smart-contract/builtin-libs/stateUtils.scry
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
contract
|
|
14
|
+
contract _opcat_labs_cat_sdk_3_4_0__rs__CAT20OpenMinter {
|
|
15
15
|
bytes genesisOutpoint;
|
|
16
16
|
int maxCount;
|
|
17
17
|
int premine;
|
|
@@ -26,38 +26,39 @@ contract _opcat_labs_cat_sdk_3_3_0__rs__CAT20OpenMinter {
|
|
|
26
26
|
this.limit = limit;
|
|
27
27
|
this.preminerAddr = premineAddr;
|
|
28
28
|
}
|
|
29
|
-
public function mint(
|
|
30
|
-
require(checkDataSig(Sig(__scrypt_ts_preimageSig[0 : len(__scrypt_ts_preimageSig) - 1]), sha256(
|
|
29
|
+
public function mint(_opcat_labs_cat_sdk_3_4_0__rs__CAT20State tokenMint, int[2] nextRemainingCounts, PubKey preminerPubKey, Sig preminerSig, int minterSatoshis, int tokenSatoshis, _opcat_labs_scrypt_ts_opcat_3_4_0__rs__BacktraceInfo backtraceInfo, _opcat_labs_scrypt_ts_opcat_3_4_0__rs__SHPreimage __scrypt_ts_shPreimage, Sig __scrypt_ts_preimageSig, _opcat_labs_scrypt_ts_opcat_3_4_0__rs__ChangeInfo __scrypt_ts_changeInfo, _opcat_labs_cat_sdk_3_4_0__rs__CAT20OpenMinterState __scrypt_ts_curState, bytes __scrypt_ts_prevouts, bytes __scrypt_ts_spentAmounts, bytes __scrypt_ts_spentDataHashes, bytes __scrypt_ts_spentScriptHashes, _opcat_labs_scrypt_ts_opcat_3_4_0__rs__TxHashPreimage __scrypt_ts_prevTxHashPreimage) {
|
|
30
|
+
require(checkDataSig(Sig(__scrypt_ts_preimageSig[0 : len(__scrypt_ts_preimageSig) - 1]), sha256(_opcat_labs_scrypt_ts_opcat_3_4_0__rs__ContextUtils.serializeSHPreimage(__scrypt_ts_shPreimage)), _opcat_labs_scrypt_ts_opcat_3_4_0__rs__ContextUtils.pubKey) && checkSig(__scrypt_ts_preimageSig, _opcat_labs_scrypt_ts_opcat_3_4_0__rs__ContextUtils.pubKey));
|
|
31
31
|
|
|
32
|
-
int __scrypt_ts_inputCount =
|
|
32
|
+
int __scrypt_ts_inputCount = _opcat_labs_scrypt_ts_opcat_3_4_0__rs__ContextUtils.checkSpentAmounts(__scrypt_ts_spentAmounts, __scrypt_ts_shPreimage.hashSpentAmounts);
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
_opcat_labs_scrypt_ts_opcat_3_4_0__rs__Outpoint __scrypt_ts_prevout = _opcat_labs_scrypt_ts_opcat_3_4_0__rs__ContextUtils.checkPrevouts(__scrypt_ts_prevouts, __scrypt_ts_shPreimage.hashPrevouts, __scrypt_ts_shPreimage.inputIndex, __scrypt_ts_inputCount);
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
_opcat_labs_scrypt_ts_opcat_3_4_0__rs__ContextUtils.checkSpentScripts(__scrypt_ts_spentScriptHashes, __scrypt_ts_shPreimage.hashSpentScriptHashes, __scrypt_ts_inputCount);
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
_opcat_labs_scrypt_ts_opcat_3_4_0__rs__ContextUtils.checkSpentDataHashes(__scrypt_ts_spentDataHashes, __scrypt_ts_shPreimage.hashSpentDataHashes, __scrypt_ts_inputCount);
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
_opcat_labs_cat_sdk_3_4_0__rs__CAT20OpenMinterState __scrypt_ts_nextState = __scrypt_ts_curState;
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
_opcat_labs_scrypt_ts_opcat_3_4_0__rs__StateUtils.checkInputState(__scrypt_ts_shPreimage.inputIndex, _opcat_labs_cat_sdk_3_4_0__rs__CAT20OpenMinter.stateHash(__scrypt_ts_curState), __scrypt_ts_spentDataHashes);
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
_opcat_labs_scrypt_ts_opcat_3_4_0__rs__Backtrace.checkPrevTxHashPreimage(__scrypt_ts_prevTxHashPreimage, __scrypt_ts_prevouts, __scrypt_ts_shPreimage.inputIndex);
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
_opcat_labs_scrypt_ts_opcat_3_4_0__rs__Backtrace.verifyFromOutpoint(backtraceInfo, this.genesisOutpoint, __scrypt_ts_spentScriptHashes[__scrypt_ts_shPreimage.inputIndex * 32 : (__scrypt_ts_shPreimage.inputIndex + 1) * 32], __scrypt_ts_prevTxHashPreimage.inputList);
|
|
47
47
|
bytes minterOutputs = b'';
|
|
48
48
|
int sumNextRemainingCount = 0;
|
|
49
49
|
loop (2) : i {
|
|
50
50
|
int remainingCount = nextRemainingCounts[i];
|
|
51
51
|
if(remainingCount > 0) {
|
|
52
52
|
sumNextRemainingCount += remainingCount;
|
|
53
|
-
minterOutputs +=
|
|
53
|
+
minterOutputs += _opcat_labs_scrypt_ts_opcat_3_4_0__rs__TxUtils.buildDataOutput(__scrypt_ts_shPreimage.spentScriptHash, minterSatoshis, sha256(_opcat_labs_cat_sdk_3_4_0__rs__CAT20OpenMinter.serializeState({__scrypt_ts_nextState.tokenScriptHash, true, remainingCount})));
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
_opcat_labs_cat_sdk_3_4_0__rs__CAT20StateLib.checkState(tokenMint);
|
|
57
|
+
Sha256 tokenStateHash = sha256(_opcat_labs_cat_sdk_3_4_0__rs__CAT20StateLib.serializeState(tokenMint));
|
|
58
|
+
bytes tokenOutput = _opcat_labs_scrypt_ts_opcat_3_4_0__rs__TxUtils.buildDataOutput(__scrypt_ts_nextState.tokenScriptHash, tokenSatoshis, tokenStateHash);
|
|
58
59
|
if(!__scrypt_ts_nextState.hasMintedBefore && this.premine > 0) {
|
|
59
60
|
require(this.maxCount == __scrypt_ts_nextState.remainingCount + this.premineCount);
|
|
60
|
-
|
|
61
|
+
_opcat_labs_cat_sdk_3_4_0__rs__OwnerUtils.checkUserOwner(preminerPubKey, this.preminerAddr);
|
|
61
62
|
require(checkSig(preminerSig, preminerPubKey));
|
|
62
63
|
require(sumNextRemainingCount == __scrypt_ts_nextState.remainingCount);
|
|
63
64
|
require(tokenMint.amount == this.premine);
|
|
@@ -71,13 +72,13 @@ contract _opcat_labs_cat_sdk_3_3_0__rs__CAT20OpenMinter {
|
|
|
71
72
|
require(tokenMint.amount == this.limit);
|
|
72
73
|
}
|
|
73
74
|
bytes changeOutput =
|
|
74
|
-
(__scrypt_ts_changeInfo.satoshis > 0 ?
|
|
75
|
+
(__scrypt_ts_changeInfo.satoshis > 0 ? _opcat_labs_scrypt_ts_opcat_3_4_0__rs__TxUtils.buildDataOutput(sha256(_opcat_labs_scrypt_ts_opcat_3_4_0__rs__TxUtils.buildP2PKHScript(__scrypt_ts_changeInfo.pubkeyhash)), __scrypt_ts_changeInfo.satoshis, __scrypt_ts_changeInfo.dataHash) : b'');
|
|
75
76
|
require(hash256(minterOutputs + tokenOutput + changeOutput) == __scrypt_ts_shPreimage.hashOutputs);
|
|
76
77
|
}
|
|
77
|
-
static function serializeState(
|
|
78
|
+
static function serializeState(_opcat_labs_cat_sdk_3_4_0__rs__CAT20OpenMinterState __scrypt_ts_curState): bytes {
|
|
78
79
|
return num2bin(len(__scrypt_ts_curState.tokenScriptHash), 2) + __scrypt_ts_curState.tokenScriptHash + num2bin(len((__scrypt_ts_curState.hasMintedBefore ? b'01' : b'')), 2) + (__scrypt_ts_curState.hasMintedBefore ? b'01' : b'') + num2bin(len(pack(__scrypt_ts_curState.remainingCount)), 2) + pack(__scrypt_ts_curState.remainingCount) + hash160(hash160(__scrypt_ts_curState.tokenScriptHash) + hash160(__scrypt_ts_curState.hasMintedBefore ? b'01' : b'') + hash160(pack(__scrypt_ts_curState.remainingCount)));
|
|
79
80
|
}
|
|
80
|
-
static function stateHash(
|
|
81
|
+
static function stateHash(_opcat_labs_cat_sdk_3_4_0__rs__CAT20OpenMinterState __scrypt_ts_curState): bytes {
|
|
81
82
|
return sha256(num2bin(len(__scrypt_ts_curState.tokenScriptHash), 2) + __scrypt_ts_curState.tokenScriptHash + num2bin(len((__scrypt_ts_curState.hasMintedBefore ? b'01' : b'')), 2) + (__scrypt_ts_curState.hasMintedBefore ? b'01' : b'') + num2bin(len(pack(__scrypt_ts_curState.remainingCount)), 2) + pack(__scrypt_ts_curState.remainingCount) + hash160(hash160(__scrypt_ts_curState.tokenScriptHash) + hash160(__scrypt_ts_curState.hasMintedBefore ? b'01' : b'') + hash160(pack(__scrypt_ts_curState.remainingCount))));
|
|
82
83
|
}
|
|
83
84
|
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"md5": "d41d8cd98f00b204e9800998ecf8427e",
|
|
6
6
|
"structs": [
|
|
7
7
|
{
|
|
8
|
-
"name": "
|
|
8
|
+
"name": "_opcat_labs_cat_sdk_3_4_0__rs__CAT20GuardConstState",
|
|
9
9
|
"params": [
|
|
10
10
|
{
|
|
11
11
|
"name": "deployerAddr",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"genericTypes": []
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
|
-
"name": "
|
|
34
|
+
"name": "_opcat_labs_cat_sdk_3_4_0__rs__CAT20State",
|
|
35
35
|
"params": [
|
|
36
36
|
{
|
|
37
37
|
"name": "ownerAddr",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"genericTypes": []
|
|
46
46
|
},
|
|
47
47
|
{
|
|
48
|
-
"name": "
|
|
48
|
+
"name": "_opcat_labs_cat_sdk_3_4_0__rs__CAT20ClosedMinterState",
|
|
49
49
|
"params": [
|
|
50
50
|
{
|
|
51
51
|
"name": "tokenScriptHash",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"genericTypes": []
|
|
56
56
|
},
|
|
57
57
|
{
|
|
58
|
-
"name": "
|
|
58
|
+
"name": "_opcat_labs_cat_sdk_3_4_0__rs__CAT20OpenMinterState",
|
|
59
59
|
"params": [
|
|
60
60
|
{
|
|
61
61
|
"name": "tokenScriptHash",
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
"genericTypes": []
|
|
74
74
|
},
|
|
75
75
|
{
|
|
76
|
-
"name": "
|
|
76
|
+
"name": "_opcat_labs_cat_sdk_3_4_0__rs__CAT20AdminState",
|
|
77
77
|
"params": [
|
|
78
78
|
{
|
|
79
79
|
"name": "tag",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
struct
|
|
4
|
+
struct _opcat_labs_cat_sdk_3_4_0__rs__CAT20GuardConstState {
|
|
5
5
|
bytes deployerAddr;
|
|
6
6
|
bytes[4] tokenScriptHashes;
|
|
7
7
|
int[4] tokenAmounts;
|
|
@@ -9,22 +9,22 @@ struct _opcat_labs_cat_sdk_3_3_0__rs__CAT20GuardConstState {
|
|
|
9
9
|
bytes tokenScriptIndexes;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
struct
|
|
12
|
+
struct _opcat_labs_cat_sdk_3_4_0__rs__CAT20State {
|
|
13
13
|
bytes ownerAddr;
|
|
14
14
|
int amount;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
struct
|
|
17
|
+
struct _opcat_labs_cat_sdk_3_4_0__rs__CAT20ClosedMinterState {
|
|
18
18
|
bytes tokenScriptHash;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
struct
|
|
21
|
+
struct _opcat_labs_cat_sdk_3_4_0__rs__CAT20OpenMinterState {
|
|
22
22
|
bytes tokenScriptHash;
|
|
23
23
|
bool hasMintedBefore;
|
|
24
24
|
int remainingCount;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
struct
|
|
27
|
+
struct _opcat_labs_cat_sdk_3_4_0__rs__CAT20AdminState {
|
|
28
28
|
bytes tag;
|
|
29
29
|
bytes adminAddress;
|
|
30
30
|
}
|
|
@@ -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_3_4_0__rs__CAT721",
|
|
5
5
|
"md5": "de42677a0529e04ea0756b2b50ff5890",
|
|
6
6
|
"structs": [
|
|
7
7
|
{
|
|
8
|
-
"name": "
|
|
8
|
+
"name": "_opcat_labs_cat_sdk_3_4_0__rs__CAT721GuardConstState",
|
|
9
9
|
"params": [
|
|
10
10
|
{
|
|
11
11
|
"name": "deployerAddr",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"genericTypes": []
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
|
-
"name": "
|
|
30
|
+
"name": "_opcat_labs_cat_sdk_3_4_0__rs__CAT721State",
|
|
31
31
|
"params": [
|
|
32
32
|
{
|
|
33
33
|
"name": "ownerAddr",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"genericTypes": []
|
|
42
42
|
},
|
|
43
43
|
{
|
|
44
|
-
"name": "
|
|
44
|
+
"name": "_opcat_labs_cat_sdk_3_4_0__rs__CAT721ClosedMinterState",
|
|
45
45
|
"params": [
|
|
46
46
|
{
|
|
47
47
|
"name": "nftScriptHash",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"genericTypes": []
|
|
60
60
|
},
|
|
61
61
|
{
|
|
62
|
-
"name": "
|
|
62
|
+
"name": "_opcat_labs_cat_sdk_3_4_0__rs__CAT721MerkleLeaf",
|
|
63
63
|
"params": [
|
|
64
64
|
{
|
|
65
65
|
"name": "contentDataHash",
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
"genericTypes": []
|
|
78
78
|
},
|
|
79
79
|
{
|
|
80
|
-
"name": "
|
|
80
|
+
"name": "_opcat_labs_cat_sdk_3_4_0__rs__CAT721OpenMinterState",
|
|
81
81
|
"params": [
|
|
82
82
|
{
|
|
83
83
|
"name": "nftScriptHash",
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
"genericTypes": []
|
|
96
96
|
},
|
|
97
97
|
{
|
|
98
|
-
"name": "
|
|
98
|
+
"name": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__TxOut",
|
|
99
99
|
"params": [
|
|
100
100
|
{
|
|
101
101
|
"name": "scriptHash",
|
|
@@ -113,7 +113,7 @@
|
|
|
113
113
|
"genericTypes": []
|
|
114
114
|
},
|
|
115
115
|
{
|
|
116
|
-
"name": "
|
|
116
|
+
"name": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__TxIn",
|
|
117
117
|
"params": [
|
|
118
118
|
{
|
|
119
119
|
"name": "prevTxHash",
|
|
@@ -135,7 +135,7 @@
|
|
|
135
135
|
"genericTypes": []
|
|
136
136
|
},
|
|
137
137
|
{
|
|
138
|
-
"name": "
|
|
138
|
+
"name": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__TxHashPreimage",
|
|
139
139
|
"params": [
|
|
140
140
|
{
|
|
141
141
|
"name": "version",
|
|
@@ -157,11 +157,11 @@
|
|
|
157
157
|
"genericTypes": []
|
|
158
158
|
},
|
|
159
159
|
{
|
|
160
|
-
"name": "
|
|
160
|
+
"name": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__BacktraceInfo",
|
|
161
161
|
"params": [
|
|
162
162
|
{
|
|
163
163
|
"name": "prevTxInput",
|
|
164
|
-
"type": "
|
|
164
|
+
"type": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__TxIn"
|
|
165
165
|
},
|
|
166
166
|
{
|
|
167
167
|
"name": "prevTxInputIndex",
|
|
@@ -169,13 +169,13 @@
|
|
|
169
169
|
},
|
|
170
170
|
{
|
|
171
171
|
"name": "prevPrevTxPreimage",
|
|
172
|
-
"type": "
|
|
172
|
+
"type": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__TxHashPreimage"
|
|
173
173
|
}
|
|
174
174
|
],
|
|
175
175
|
"genericTypes": []
|
|
176
176
|
},
|
|
177
177
|
{
|
|
178
|
-
"name": "
|
|
178
|
+
"name": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__SHPreimage",
|
|
179
179
|
"params": [
|
|
180
180
|
{
|
|
181
181
|
"name": "nVersion",
|
|
@@ -237,7 +237,7 @@
|
|
|
237
237
|
"genericTypes": []
|
|
238
238
|
},
|
|
239
239
|
{
|
|
240
|
-
"name": "
|
|
240
|
+
"name": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__Outpoint",
|
|
241
241
|
"params": [
|
|
242
242
|
{
|
|
243
243
|
"name": "txHash",
|
|
@@ -251,7 +251,7 @@
|
|
|
251
251
|
"genericTypes": []
|
|
252
252
|
},
|
|
253
253
|
{
|
|
254
|
-
"name": "
|
|
254
|
+
"name": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__ChangeInfo",
|
|
255
255
|
"params": [
|
|
256
256
|
{
|
|
257
257
|
"name": "pubkeyhash",
|
|
@@ -269,7 +269,7 @@
|
|
|
269
269
|
"genericTypes": []
|
|
270
270
|
},
|
|
271
271
|
{
|
|
272
|
-
"name": "
|
|
272
|
+
"name": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__ChainTxVerifyResponse",
|
|
273
273
|
"params": [
|
|
274
274
|
{
|
|
275
275
|
"name": "prevPrevScript",
|
|
@@ -283,7 +283,7 @@
|
|
|
283
283
|
"genericTypes": []
|
|
284
284
|
},
|
|
285
285
|
{
|
|
286
|
-
"name": "
|
|
286
|
+
"name": "_opcat_labs_cat_sdk_3_4_0__rs__CAT20ContractUnlockArgs",
|
|
287
287
|
"params": [
|
|
288
288
|
{
|
|
289
289
|
"name": "spendType",
|
|
@@ -305,7 +305,7 @@
|
|
|
305
305
|
"genericTypes": []
|
|
306
306
|
},
|
|
307
307
|
{
|
|
308
|
-
"name": "
|
|
308
|
+
"name": "_opcat_labs_cat_sdk_3_4_0__rs__CAT721ContractUnlockArgs",
|
|
309
309
|
"params": [
|
|
310
310
|
{
|
|
311
311
|
"name": "userPubKey",
|
|
@@ -323,7 +323,7 @@
|
|
|
323
323
|
"genericTypes": []
|
|
324
324
|
},
|
|
325
325
|
{
|
|
326
|
-
"name": "
|
|
326
|
+
"name": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__ReadVarintResult",
|
|
327
327
|
"params": [
|
|
328
328
|
{
|
|
329
329
|
"name": "data",
|
|
@@ -339,50 +339,50 @@
|
|
|
339
339
|
],
|
|
340
340
|
"library": [
|
|
341
341
|
{
|
|
342
|
-
"name": "
|
|
342
|
+
"name": "_opcat_labs_cat_sdk_3_4_0__rs__OwnerUtils",
|
|
343
343
|
"params": [],
|
|
344
344
|
"properties": [],
|
|
345
345
|
"genericTypes": []
|
|
346
346
|
},
|
|
347
347
|
{
|
|
348
|
-
"name": "
|
|
348
|
+
"name": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__TxUtils",
|
|
349
349
|
"params": [],
|
|
350
350
|
"properties": [],
|
|
351
351
|
"genericTypes": []
|
|
352
352
|
},
|
|
353
353
|
{
|
|
354
|
-
"name": "
|
|
354
|
+
"name": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__StateUtils",
|
|
355
355
|
"params": [],
|
|
356
356
|
"properties": [],
|
|
357
357
|
"genericTypes": []
|
|
358
358
|
},
|
|
359
359
|
{
|
|
360
|
-
"name": "
|
|
360
|
+
"name": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__TxHashPreimageUtils",
|
|
361
361
|
"params": [],
|
|
362
362
|
"properties": [],
|
|
363
363
|
"genericTypes": []
|
|
364
364
|
},
|
|
365
365
|
{
|
|
366
|
-
"name": "
|
|
366
|
+
"name": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__Backtrace",
|
|
367
367
|
"params": [],
|
|
368
368
|
"properties": [],
|
|
369
369
|
"genericTypes": []
|
|
370
370
|
},
|
|
371
371
|
{
|
|
372
|
-
"name": "
|
|
372
|
+
"name": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__ContextUtils",
|
|
373
373
|
"params": [],
|
|
374
374
|
"properties": [],
|
|
375
375
|
"genericTypes": []
|
|
376
376
|
},
|
|
377
377
|
{
|
|
378
|
-
"name": "
|
|
378
|
+
"name": "_opcat_labs_cat_sdk_3_4_0__rs__CAT721GuardStateLib",
|
|
379
379
|
"params": [],
|
|
380
380
|
"properties": [],
|
|
381
381
|
"genericTypes": [],
|
|
382
|
-
"stateType": "
|
|
382
|
+
"stateType": "_opcat_labs_cat_sdk_3_4_0__rs__CAT721GuardConstState"
|
|
383
383
|
},
|
|
384
384
|
{
|
|
385
|
-
"name": "
|
|
385
|
+
"name": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__StdUtils",
|
|
386
386
|
"params": [],
|
|
387
387
|
"properties": [],
|
|
388
388
|
"genericTypes": []
|
|
@@ -397,11 +397,11 @@
|
|
|
397
397
|
"params": [
|
|
398
398
|
{
|
|
399
399
|
"name": "unlockArgs",
|
|
400
|
-
"type": "
|
|
400
|
+
"type": "_opcat_labs_cat_sdk_3_4_0__rs__CAT721ContractUnlockArgs"
|
|
401
401
|
},
|
|
402
402
|
{
|
|
403
403
|
"name": "guardState",
|
|
404
|
-
"type": "
|
|
404
|
+
"type": "_opcat_labs_cat_sdk_3_4_0__rs__CAT721GuardConstState"
|
|
405
405
|
},
|
|
406
406
|
{
|
|
407
407
|
"name": "guardInputIndex",
|
|
@@ -409,11 +409,11 @@
|
|
|
409
409
|
},
|
|
410
410
|
{
|
|
411
411
|
"name": "backtraceInfo",
|
|
412
|
-
"type": "
|
|
412
|
+
"type": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__BacktraceInfo"
|
|
413
413
|
},
|
|
414
414
|
{
|
|
415
415
|
"name": "__scrypt_ts_shPreimage",
|
|
416
|
-
"type": "
|
|
416
|
+
"type": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__SHPreimage"
|
|
417
417
|
},
|
|
418
418
|
{
|
|
419
419
|
"name": "__scrypt_ts_preimageSig",
|
|
@@ -421,7 +421,7 @@
|
|
|
421
421
|
},
|
|
422
422
|
{
|
|
423
423
|
"name": "__scrypt_ts_curState",
|
|
424
|
-
"type": "
|
|
424
|
+
"type": "_opcat_labs_cat_sdk_3_4_0__rs__CAT721State"
|
|
425
425
|
},
|
|
426
426
|
{
|
|
427
427
|
"name": "__scrypt_ts_prevouts",
|
|
@@ -441,7 +441,7 @@
|
|
|
441
441
|
},
|
|
442
442
|
{
|
|
443
443
|
"name": "__scrypt_ts_prevTxHashPreimage",
|
|
444
|
-
"type": "
|
|
444
|
+
"type": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__TxHashPreimage"
|
|
445
445
|
}
|
|
446
446
|
]
|
|
447
447
|
},
|
|
@@ -460,7 +460,7 @@
|
|
|
460
460
|
}
|
|
461
461
|
],
|
|
462
462
|
"stateProps": [],
|
|
463
|
-
"stateType": "
|
|
463
|
+
"stateType": "_opcat_labs_cat_sdk_3_4_0__rs__CAT721State",
|
|
464
464
|
"buildType": "release",
|
|
465
465
|
"file": "../cat721.scrypt",
|
|
466
466
|
"hex": "2102ba79df5f8ae7604a9830f03c7933028186aede0675a16f025dc4f8be8eec03820000000000<minterScriptHash><guardVariantScriptHashes[0]><guardVariantScriptHashes[1]><guardVariantScriptHashes[2]><guardVariantScriptHashes[3]>54795a7a75597a597a597a597a597a597a597a597a597a70705c7a5c7a5c7a5c7a6d6d587a587a587a587a587a6d6d75607901117982778c7f75007f77011f79011f79011f79011f79011f79011f79011f79011f79011f79011f79011f79011f79011f79011f795d798277549d5c79827701209d5b79827701209d5a79827701209d597900a26958798277549d5779827701209d5679827701209d5579827701209d5479827701209d5379827701209d527900a2697800a26976519c6476529c6751686476539c67516864760281009c67516864760282009c67516864760283009c675168695d795d797e5c797e5b797e5a79767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c7e59797e58797e57797e56797e55797e54797e5379546e8b806e7c7f75007f6b6d6d6c7e5279546e8b806e7c7f75007f6b6d6d6c7e7854807e6b6d6d6d6d6d6d6d6ca85779ba6360795679ac670068695c7901197978aa7888785878827d77527997009d6e7c966b6d6d6c775e79011f7901167970aa5379886e9f69765479012478827d77527997009d6e7c967777779d537952798b0124957f7552790124957f7d7701207f75007f777801247f7501207f77768277549d767601007e817777726d726d7b755d79011b7954795279aa527988765379012078827d77527997009d6e7c967777779d6d755e79011a7954795279aa527988765379012078827d77527997009d6e7c967777779d6d75011279011279011879011579011579788277528052797e78827752807e787e5279a95279a97ea97ea877770112797653798b0120957f7553790120957f775279886d755e795e795e795e79011679011d79557955795579557953798277549d5279014878827d77527997009d6e7c967777775279014878827d77527997009d6e7c96777777557952790000527902fd009f637551675279030000019f6301fd7b757c52776752790500000000019f6301fe7b757c54776701ff7b757c587768686878537952796e8b806e7c7f75007f6b6d6d6c7e7777777e55797e780000527902fd009f637551675279030000019f6301fd7b757c52776752790500000000019f6301fe7b757c54776701ff7b757c587768686878537952796e8b806e7c7f75007f6b6d6d6c7e7777777e54797e53797eaa6b6d6d6d6c76700124950120937f7553790124957f77886d6d6d75012c79012c79012c79012c79012c79012c79012c79012c79012c790112790119790123798b0120957f750123790120957f770118795b795b795b795b795b795b795b795b795b7959797656798b0148957f7556790148957f775a795a795a795a795379827701209d76827701209d707600a2637605ffffffff00a16700686976546e8b806e7c7f75007f6b6d6d6c777e787e52797600a2637605ffffffff00a16700686976546e8b806e7c7f75007f6b6d6d6c777e6b6d6d6c88597976567956795679567953798277549d5279014878827d77527997009d6e7c967777775279014878827d77527997009d6e7c96777777557952790000527902fd009f637551675279030000019f6301fd7b757c52776752790500000000019f6301fe7b757c54776701ff7b757c587768686878537952796e8b806e7c7f75007f6b6d6d6c7e7777777e55797e780000527902fd009f637551675279030000019f6301fd7b757c52776752790500000000019f6301fe7b757c54776701ff7b757c587768686878537952796e8b806e7c7f75007f6b6d6d6c7e7777777e54797e53797eaa6b6d6d6d6c8853795a7901489558930120937f755a7901489558937f77785b797600a2637605ffffffff00a16700686976546e8b806e7c7f75007f6b6d6d6c777e787c726d726d726d726d726d726d785579876478547987675168696d6d6d6d6d6d6d013479013479013479013479013479013479013479012879012079013679011979011b797853796e8b0120957f75780120957f7777777601167901167901167901167953766b796c756b6d6d6c87647601167901167901167901167952766b796c756b6d6d6c87675168647601167901167901167901167951766b796c756b6d6d6c87675168647601167901167901167901167900766b796c756b6d6d6c87675168697854796e8b0120957f75780120957f7777775d795d795d795d795d795d795d7956798277528057797e567956795679567953766b796c756b6d6d6c827752807e567956795679567953766b796c756b6d6d6c7e567956795679567952766b796c756b6d6d6c827752807e567956795679567952766b796c756b6d6d6c7e567956795679567951766b796c756b6d6d6c827752807e567956795679567951766b796c756b6d6d6c7e567956795679567900766b796c756b6d6d6c827752807e567956795679567900766b796c756b6d6d6c7e5279827752807e52797e78827752807e787e5779a9577957795779577953766b796c756b6d6d6ca97e577957795779577952766b796c756b6d6d6ca97e577957795779577951766b796c756b6d6d6ca97e577957795779577900766b796c756b6d6d6ca97e5379a97e5279a97ea97ea86b6d6d6d6c7788567955798b7f7555797f77815c795c795c795c795455797600a26976549f69948c766b796c756b6d6d6c5779886d6d6d6d6d6d6d78827701209c6301357900a26301357955799f670068697860790137796e8b0120957f75780120957f77777788670137795279787676827701219d750376a91478a97e0288ac7e7778886d013679013879ad686d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d51"
|
|
@@ -12,53 +12,53 @@ import "../scrypt-ts-opcat/assets/smart-contract/builtin-libs/stateUtils.scrypt"
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
contract
|
|
15
|
+
contract _opcat_labs_cat_sdk_3_4_0__rs__CAT721 {
|
|
16
16
|
bytes minterScriptHash;
|
|
17
17
|
Sha256[4] guardVariantScriptHashes;
|
|
18
18
|
constructor(bytes minterScriptHash, Sha256[4] guardVariantScriptHashes) {
|
|
19
19
|
this.minterScriptHash = minterScriptHash;
|
|
20
20
|
this.guardVariantScriptHashes = guardVariantScriptHashes;
|
|
21
21
|
}
|
|
22
|
-
public function unlock(
|
|
23
|
-
require(checkDataSig(Sig(__scrypt_ts_preimageSig[0 : len(__scrypt_ts_preimageSig) - 1]), sha256(
|
|
22
|
+
public function unlock(_opcat_labs_cat_sdk_3_4_0__rs__CAT721ContractUnlockArgs unlockArgs, _opcat_labs_cat_sdk_3_4_0__rs__CAT721GuardConstState guardState, int guardInputIndex, _opcat_labs_scrypt_ts_opcat_3_4_0__rs__BacktraceInfo backtraceInfo, _opcat_labs_scrypt_ts_opcat_3_4_0__rs__SHPreimage __scrypt_ts_shPreimage, Sig __scrypt_ts_preimageSig, _opcat_labs_cat_sdk_3_4_0__rs__CAT721State __scrypt_ts_curState, bytes __scrypt_ts_prevouts, bytes __scrypt_ts_spentAmounts, bytes __scrypt_ts_spentDataHashes, bytes __scrypt_ts_spentScriptHashes, _opcat_labs_scrypt_ts_opcat_3_4_0__rs__TxHashPreimage __scrypt_ts_prevTxHashPreimage) {
|
|
23
|
+
require(checkDataSig(Sig(__scrypt_ts_preimageSig[0 : len(__scrypt_ts_preimageSig) - 1]), sha256(_opcat_labs_scrypt_ts_opcat_3_4_0__rs__ContextUtils.serializeSHPreimage(__scrypt_ts_shPreimage)), _opcat_labs_scrypt_ts_opcat_3_4_0__rs__ContextUtils.pubKey) && checkSig(__scrypt_ts_preimageSig, _opcat_labs_scrypt_ts_opcat_3_4_0__rs__ContextUtils.pubKey));
|
|
24
24
|
|
|
25
|
-
int __scrypt_ts_inputCount =
|
|
25
|
+
int __scrypt_ts_inputCount = _opcat_labs_scrypt_ts_opcat_3_4_0__rs__ContextUtils.checkSpentAmounts(__scrypt_ts_spentAmounts, __scrypt_ts_shPreimage.hashSpentAmounts);
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
_opcat_labs_scrypt_ts_opcat_3_4_0__rs__Outpoint __scrypt_ts_prevout = _opcat_labs_scrypt_ts_opcat_3_4_0__rs__ContextUtils.checkPrevouts(__scrypt_ts_prevouts, __scrypt_ts_shPreimage.hashPrevouts, __scrypt_ts_shPreimage.inputIndex, __scrypt_ts_inputCount);
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
_opcat_labs_scrypt_ts_opcat_3_4_0__rs__ContextUtils.checkSpentScripts(__scrypt_ts_spentScriptHashes, __scrypt_ts_shPreimage.hashSpentScriptHashes, __scrypt_ts_inputCount);
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
_opcat_labs_scrypt_ts_opcat_3_4_0__rs__ContextUtils.checkSpentDataHashes(__scrypt_ts_spentDataHashes, __scrypt_ts_shPreimage.hashSpentDataHashes, __scrypt_ts_inputCount);
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
_opcat_labs_cat_sdk_3_4_0__rs__CAT721State __scrypt_ts_nextState = __scrypt_ts_curState;
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
_opcat_labs_scrypt_ts_opcat_3_4_0__rs__StateUtils.checkInputState(__scrypt_ts_shPreimage.inputIndex, _opcat_labs_cat_sdk_3_4_0__rs__CAT721.stateHash(__scrypt_ts_curState), __scrypt_ts_spentDataHashes);
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
_opcat_labs_scrypt_ts_opcat_3_4_0__rs__Backtrace.checkPrevTxHashPreimage(__scrypt_ts_prevTxHashPreimage, __scrypt_ts_prevouts, __scrypt_ts_shPreimage.inputIndex);
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
_opcat_labs_scrypt_ts_opcat_3_4_0__rs__Backtrace.verifyFromScript(backtraceInfo, this.minterScriptHash, __scrypt_ts_spentScriptHashes[__scrypt_ts_shPreimage.inputIndex * 32 : (__scrypt_ts_shPreimage.inputIndex + 1) * 32], __scrypt_ts_prevTxHashPreimage.inputList);
|
|
40
40
|
this.checkGuard(guardState, __scrypt_ts_shPreimage.spentScriptHash, __scrypt_ts_shPreimage.inputIndex, guardInputIndex, __scrypt_ts_spentScriptHashes, __scrypt_ts_spentDataHashes);
|
|
41
41
|
if(len(__scrypt_ts_nextState.ownerAddr) == 32) {
|
|
42
42
|
require(unlockArgs.contractInputIndex >= 0 && unlockArgs.contractInputIndex < __scrypt_ts_inputCount);
|
|
43
|
-
require(__scrypt_ts_nextState.ownerAddr ==
|
|
43
|
+
require(__scrypt_ts_nextState.ownerAddr == _opcat_labs_scrypt_ts_opcat_3_4_0__rs__ContextUtils.getSpentScriptHash(__scrypt_ts_spentScriptHashes, unlockArgs.contractInputIndex));
|
|
44
44
|
} else {
|
|
45
|
-
|
|
45
|
+
_opcat_labs_cat_sdk_3_4_0__rs__OwnerUtils.checkUserOwner(unlockArgs.userPubKey, __scrypt_ts_nextState.ownerAddr);
|
|
46
46
|
require(checkSig(unlockArgs.userSig, unlockArgs.userPubKey));
|
|
47
47
|
}
|
|
48
48
|
require(true);
|
|
49
49
|
}
|
|
50
|
-
function checkGuard(
|
|
51
|
-
bytes guardScriptHash =
|
|
50
|
+
function checkGuard(_opcat_labs_cat_sdk_3_4_0__rs__CAT721GuardConstState guardState, bytes t_cat721ScriptHash, int t_cat721InputIndex, int guardInputIndex, bytes t_spentScriptsCtx, bytes t_spentDataHashesCtx) : bool {
|
|
51
|
+
bytes guardScriptHash = _opcat_labs_scrypt_ts_opcat_3_4_0__rs__ContextUtils.getSpentScriptHash(t_spentScriptsCtx, guardInputIndex);
|
|
52
52
|
require(guardScriptHash == this.guardVariantScriptHashes[0] || guardScriptHash == this.guardVariantScriptHashes[1] || guardScriptHash == this.guardVariantScriptHashes[2] || guardScriptHash == this.guardVariantScriptHashes[3]);
|
|
53
|
-
require(
|
|
53
|
+
require(_opcat_labs_scrypt_ts_opcat_3_4_0__rs__ContextUtils.getSpentDataHash(t_spentDataHashesCtx, guardInputIndex) == _opcat_labs_cat_sdk_3_4_0__rs__CAT721GuardStateLib.stateHash(guardState));
|
|
54
54
|
int cat721ScriptIndex = unpack(guardState.nftScriptIndexes[t_cat721InputIndex : t_cat721InputIndex + 1]);
|
|
55
55
|
require(guardState.nftScriptHashes[(cat721ScriptIndex)] == t_cat721ScriptHash);
|
|
56
56
|
return true;
|
|
57
57
|
}
|
|
58
|
-
static function serializeState(
|
|
58
|
+
static function serializeState(_opcat_labs_cat_sdk_3_4_0__rs__CAT721State __scrypt_ts_curState): bytes {
|
|
59
59
|
return num2bin(len(__scrypt_ts_curState.ownerAddr), 2) + __scrypt_ts_curState.ownerAddr + num2bin(len(pack(__scrypt_ts_curState.localId)), 2) + pack(__scrypt_ts_curState.localId) + hash160(hash160(__scrypt_ts_curState.ownerAddr) + hash160(pack(__scrypt_ts_curState.localId)));
|
|
60
60
|
}
|
|
61
|
-
static function stateHash(
|
|
61
|
+
static function stateHash(_opcat_labs_cat_sdk_3_4_0__rs__CAT721State __scrypt_ts_curState): bytes {
|
|
62
62
|
return sha256(num2bin(len(__scrypt_ts_curState.ownerAddr), 2) + __scrypt_ts_curState.ownerAddr + num2bin(len(pack(__scrypt_ts_curState.localId)), 2) + pack(__scrypt_ts_curState.localId) + hash160(hash160(__scrypt_ts_curState.ownerAddr) + hash160(pack(__scrypt_ts_curState.localId))));
|
|
63
63
|
}
|
|
64
64
|
}
|