@opcat-labs/cat-sdk 3.2.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/cat20Admin.scrypt.tpl +4 -4
- package/artifacts/.templates/cat20/cat20Guard_12_12_2.scrypt.tpl +2 -2
- package/artifacts/.templates/cat20/cat20Guard_12_12_4.scrypt.tpl +2 -2
- package/artifacts/.templates/cat20/cat20Guard_6_6_2.scrypt.tpl +2 -2
- package/artifacts/.templates/cat20/cat20Guard_6_6_4.scrypt.tpl +2 -2
- package/artifacts/.templates/cat20/minters/cat20ClosedMinter.scrypt.tpl +2 -2
- package/artifacts/.templates/cat20/minters/cat20OpenMinter.scrypt.map +1 -1
- package/artifacts/.templates/cat20/minters/cat20OpenMinter.scrypt.tpl +3 -2
- package/artifacts/.templates/cat721/cat721Guard_12_12_2.scrypt.tpl +2 -2
- package/artifacts/.templates/cat721/cat721Guard_12_12_4.scrypt.tpl +2 -2
- package/artifacts/.templates/cat721/cat721Guard_6_6_2.scrypt.tpl +2 -2
- package/artifacts/.templates/cat721/cat721Guard_6_6_4.scrypt.tpl +2 -2
- package/artifacts/.templates/cat721/minters/cat721ClosedMinter.scrypt.tpl +2 -2
- package/artifacts/.templates/cat721/minters/cat721OpenMinter.scrypt.tpl +2 -2
- package/artifacts/cat20/cat20.json +52 -34
- package/artifacts/cat20/cat20.scrypt +18 -18
- package/artifacts/cat20/cat20Admin.json +54 -36
- package/artifacts/cat20/cat20Admin.scrypt +30 -30
- package/artifacts/cat20/cat20GuardStateLib.json +39 -21
- package/artifacts/cat20/cat20GuardStateLib.scrypt +5 -5
- package/artifacts/cat20/cat20Guard_12_12_2.json +53 -35
- package/artifacts/cat20/cat20Guard_12_12_2.scrypt +29 -29
- package/artifacts/cat20/cat20Guard_12_12_4.json +53 -35
- package/artifacts/cat20/cat20Guard_12_12_4.scrypt +29 -29
- package/artifacts/cat20/cat20Guard_6_6_2.json +53 -35
- package/artifacts/cat20/cat20Guard_6_6_2.scrypt +29 -29
- package/artifacts/cat20/cat20Guard_6_6_4.json +53 -35
- package/artifacts/cat20/cat20Guard_6_6_4.scrypt +29 -29
- package/artifacts/cat20/cat20StateLib.json +40 -22
- package/artifacts/cat20/cat20StateLib.scrypt +5 -5
- package/artifacts/cat20/minters/cat20ClosedMinter.json +52 -34
- package/artifacts/cat20/minters/cat20ClosedMinter.scrypt +22 -22
- package/artifacts/cat20/minters/cat20OpenMinter.json +52 -34
- 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 +52 -34
- package/artifacts/cat721/cat721.scrypt +18 -18
- package/artifacts/cat721/cat721GuardStateLib.json +39 -21
- package/artifacts/cat721/cat721GuardStateLib.scrypt +5 -5
- package/artifacts/cat721/cat721Guard_12_12_2.json +52 -34
- package/artifacts/cat721/cat721Guard_12_12_2.scrypt +26 -26
- package/artifacts/cat721/cat721Guard_12_12_4.json +52 -34
- package/artifacts/cat721/cat721Guard_12_12_4.scrypt +26 -26
- package/artifacts/cat721/cat721Guard_6_6_2.json +52 -34
- package/artifacts/cat721/cat721Guard_6_6_2.scrypt +26 -26
- package/artifacts/cat721/cat721Guard_6_6_4.json +52 -34
- package/artifacts/cat721/cat721Guard_6_6_4.scrypt +26 -26
- package/artifacts/cat721/cat721StateLib.json +40 -22
- package/artifacts/cat721/cat721StateLib.scrypt +5 -5
- package/artifacts/cat721/minters/cat721ClosedMinter.json +52 -34
- 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 +57 -39
- package/artifacts/cat721/minters/cat721OpenMinter.scrypt +22 -22
- package/artifacts/cat721/minters/cat721OpenMinterMerkleTree.json +37 -19
- 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 +15 -9
- package/artifacts/types.json +2 -2
- package/artifacts/types.scrypt +2 -2
- package/artifacts/utils/ownerUtils.json +32 -14
- package/artifacts/utils/ownerUtils.scrypt +3 -3
- package/artifacts/utils/safeMath.json +32 -14
- package/artifacts/utils/safeMath.scrypt +1 -1
- package/dist/artifacts/cat20/cat20.json +52 -34
- package/dist/artifacts/cat20/cat20.scrypt +18 -18
- package/dist/artifacts/cat20/cat20Admin.json +54 -36
- package/dist/artifacts/cat20/cat20Admin.scrypt +30 -30
- package/dist/artifacts/cat20/cat20GuardStateLib.json +39 -21
- package/dist/artifacts/cat20/cat20GuardStateLib.scrypt +5 -5
- package/dist/artifacts/cat20/cat20Guard_12_12_2.json +53 -35
- package/dist/artifacts/cat20/cat20Guard_12_12_2.scrypt +29 -29
- package/dist/artifacts/cat20/cat20Guard_12_12_4.json +53 -35
- package/dist/artifacts/cat20/cat20Guard_12_12_4.scrypt +29 -29
- package/dist/artifacts/cat20/cat20Guard_6_6_2.json +53 -35
- package/dist/artifacts/cat20/cat20Guard_6_6_2.scrypt +29 -29
- package/dist/artifacts/cat20/cat20Guard_6_6_4.json +53 -35
- package/dist/artifacts/cat20/cat20Guard_6_6_4.scrypt +29 -29
- package/dist/artifacts/cat20/cat20StateLib.json +40 -22
- package/dist/artifacts/cat20/cat20StateLib.scrypt +5 -5
- package/dist/artifacts/cat20/minters/cat20ClosedMinter.json +52 -34
- package/dist/artifacts/cat20/minters/cat20ClosedMinter.scrypt +22 -22
- package/dist/artifacts/cat20/minters/cat20OpenMinter.json +52 -34
- 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 +52 -34
- package/dist/artifacts/cat721/cat721.scrypt +18 -18
- package/dist/artifacts/cat721/cat721GuardStateLib.json +39 -21
- package/dist/artifacts/cat721/cat721GuardStateLib.scrypt +5 -5
- package/dist/artifacts/cat721/cat721Guard_12_12_2.json +52 -34
- package/dist/artifacts/cat721/cat721Guard_12_12_2.scrypt +26 -26
- package/dist/artifacts/cat721/cat721Guard_12_12_4.json +52 -34
- package/dist/artifacts/cat721/cat721Guard_12_12_4.scrypt +26 -26
- package/dist/artifacts/cat721/cat721Guard_6_6_2.json +52 -34
- package/dist/artifacts/cat721/cat721Guard_6_6_2.scrypt +26 -26
- package/dist/artifacts/cat721/cat721Guard_6_6_4.json +52 -34
- package/dist/artifacts/cat721/cat721Guard_6_6_4.scrypt +26 -26
- package/dist/artifacts/cat721/cat721StateLib.json +40 -22
- package/dist/artifacts/cat721/cat721StateLib.scrypt +5 -5
- package/dist/artifacts/cat721/minters/cat721ClosedMinter.json +52 -34
- 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 +57 -39
- package/dist/artifacts/cat721/minters/cat721OpenMinter.scrypt +22 -22
- package/dist/artifacts/cat721/minters/cat721OpenMinterMerkleTree.json +37 -19
- 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 +15 -9
- package/dist/artifacts/types.json +2 -2
- package/dist/artifacts/types.scrypt +2 -2
- package/dist/artifacts/utils/ownerUtils.json +32 -14
- package/dist/artifacts/utils/ownerUtils.scrypt +3 -3
- package/dist/artifacts/utils/safeMath.json +32 -14
- 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 +13 -13
|
@@ -12,7 +12,7 @@ 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__CAT20 {
|
|
16
16
|
bytes minterScriptHash;
|
|
17
17
|
Sha256[4] guardVariantScriptHashes;
|
|
18
18
|
bool hasAdmin;
|
|
@@ -23,33 +23,33 @@ contract _opcat_labs_cat_sdk_3_2_0__rs__CAT20 {
|
|
|
23
23
|
this.hasAdmin = hasAdmin;
|
|
24
24
|
this.adminScriptHash = adminScriptHash;
|
|
25
25
|
}
|
|
26
|
-
public function unlock(
|
|
27
|
-
require(checkDataSig(Sig(__scrypt_ts_preimageSig[0 : len(__scrypt_ts_preimageSig) - 1]), sha256(
|
|
26
|
+
public function unlock(_opcat_labs_cat_sdk_3_4_0__rs__CAT20ContractUnlockArgs unlockArgs, _opcat_labs_cat_sdk_3_4_0__rs__CAT20GuardConstState 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__CAT20State __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) {
|
|
27
|
+
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));
|
|
28
28
|
|
|
29
|
-
int __scrypt_ts_inputCount =
|
|
29
|
+
int __scrypt_ts_inputCount = _opcat_labs_scrypt_ts_opcat_3_4_0__rs__ContextUtils.checkSpentAmounts(__scrypt_ts_spentAmounts, __scrypt_ts_shPreimage.hashSpentAmounts);
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
_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);
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
_opcat_labs_scrypt_ts_opcat_3_4_0__rs__ContextUtils.checkSpentScripts(__scrypt_ts_spentScriptHashes, __scrypt_ts_shPreimage.hashSpentScriptHashes, __scrypt_ts_inputCount);
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
_opcat_labs_scrypt_ts_opcat_3_4_0__rs__ContextUtils.checkSpentDataHashes(__scrypt_ts_spentDataHashes, __scrypt_ts_shPreimage.hashSpentDataHashes, __scrypt_ts_inputCount);
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
_opcat_labs_cat_sdk_3_4_0__rs__CAT20State __scrypt_ts_nextState = __scrypt_ts_curState;
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
_opcat_labs_scrypt_ts_opcat_3_4_0__rs__StateUtils.checkInputState(__scrypt_ts_shPreimage.inputIndex, _opcat_labs_cat_sdk_3_4_0__rs__CAT20.stateHash(__scrypt_ts_curState), __scrypt_ts_spentDataHashes);
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
_opcat_labs_scrypt_ts_opcat_3_4_0__rs__Backtrace.checkPrevTxHashPreimage(__scrypt_ts_prevTxHashPreimage, __scrypt_ts_prevouts, __scrypt_ts_shPreimage.inputIndex);
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
_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);
|
|
44
44
|
this.checkGuard(guardState, __scrypt_ts_shPreimage.spentScriptHash, __scrypt_ts_shPreimage.inputIndex, guardInputIndex, __scrypt_ts_spentScriptHashes, __scrypt_ts_spentDataHashes);
|
|
45
45
|
require(unlockArgs.spendType >= 0 && unlockArgs.spendType <= 2);
|
|
46
46
|
bytes spentScriptHash = b'';
|
|
47
47
|
if(unlockArgs.spendScriptInputIndex >= 0) {
|
|
48
48
|
require(unlockArgs.spendScriptInputIndex < __scrypt_ts_inputCount);
|
|
49
|
-
spentScriptHash =
|
|
49
|
+
spentScriptHash = _opcat_labs_scrypt_ts_opcat_3_4_0__rs__ContextUtils.getSpentScriptHash(__scrypt_ts_spentScriptHashes, unlockArgs.spendScriptInputIndex);
|
|
50
50
|
}
|
|
51
51
|
if(unlockArgs.spendType == 0) {
|
|
52
|
-
|
|
52
|
+
_opcat_labs_cat_sdk_3_4_0__rs__OwnerUtils.checkUserOwner(unlockArgs.userPubKey, __scrypt_ts_nextState.ownerAddr);
|
|
53
53
|
require(checkSig(unlockArgs.userSig, unlockArgs.userPubKey));
|
|
54
54
|
} else if(unlockArgs.spendType == 1) {
|
|
55
55
|
require(__scrypt_ts_nextState.ownerAddr == spentScriptHash);
|
|
@@ -59,18 +59,18 @@ contract _opcat_labs_cat_sdk_3_2_0__rs__CAT20 {
|
|
|
59
59
|
}
|
|
60
60
|
require(true);
|
|
61
61
|
}
|
|
62
|
-
function checkGuard(
|
|
63
|
-
bytes guardScriptHash =
|
|
62
|
+
function checkGuard(_opcat_labs_cat_sdk_3_4_0__rs__CAT20GuardConstState guardState, bytes t_cat20ScriptHash, int t_cat20InputIndexVal, int guardInputIndexVal, bytes t_spentScriptsCtx, bytes t_spentDataHashesCtx) : bool {
|
|
63
|
+
bytes guardScriptHash = _opcat_labs_scrypt_ts_opcat_3_4_0__rs__ContextUtils.getSpentScriptHash(t_spentScriptsCtx, guardInputIndexVal);
|
|
64
64
|
require(guardScriptHash == this.guardVariantScriptHashes[0] || guardScriptHash == this.guardVariantScriptHashes[1] || guardScriptHash == this.guardVariantScriptHashes[2] || guardScriptHash == this.guardVariantScriptHashes[3]);
|
|
65
|
-
require(
|
|
65
|
+
require(_opcat_labs_scrypt_ts_opcat_3_4_0__rs__ContextUtils.getSpentDataHash(t_spentDataHashesCtx, guardInputIndexVal) == _opcat_labs_cat_sdk_3_4_0__rs__CAT20GuardStateLib.stateHash(guardState));
|
|
66
66
|
int tokenScriptIndex = unpack(guardState.tokenScriptIndexes[t_cat20InputIndexVal : t_cat20InputIndexVal + 1]);
|
|
67
67
|
require(guardState.tokenScriptHashes[(tokenScriptIndex)] == t_cat20ScriptHash);
|
|
68
68
|
return true;
|
|
69
69
|
}
|
|
70
|
-
static function serializeState(
|
|
70
|
+
static function serializeState(_opcat_labs_cat_sdk_3_4_0__rs__CAT20State __scrypt_ts_curState): bytes {
|
|
71
71
|
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)));
|
|
72
72
|
}
|
|
73
|
-
static function stateHash(
|
|
73
|
+
static function stateHash(_opcat_labs_cat_sdk_3_4_0__rs__CAT20State __scrypt_ts_curState): bytes {
|
|
74
74
|
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))));
|
|
75
75
|
}
|
|
76
76
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 10,
|
|
3
3
|
"compilerVersion": "1.22.0+commit.47800da",
|
|
4
|
-
"contract": "
|
|
5
|
-
"md5": "
|
|
4
|
+
"contract": "_opcat_labs_cat_sdk_3_4_0__rs__CAT20Admin",
|
|
5
|
+
"md5": "a41d1c54e125d54e620044bdc5a2ecb7",
|
|
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",
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
"genericTypes": []
|
|
88
88
|
},
|
|
89
89
|
{
|
|
90
|
-
"name": "
|
|
90
|
+
"name": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__TxOut",
|
|
91
91
|
"params": [
|
|
92
92
|
{
|
|
93
93
|
"name": "scriptHash",
|
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
"genericTypes": []
|
|
106
106
|
},
|
|
107
107
|
{
|
|
108
|
-
"name": "
|
|
108
|
+
"name": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__TxIn",
|
|
109
109
|
"params": [
|
|
110
110
|
{
|
|
111
111
|
"name": "prevTxHash",
|
|
@@ -127,7 +127,7 @@
|
|
|
127
127
|
"genericTypes": []
|
|
128
128
|
},
|
|
129
129
|
{
|
|
130
|
-
"name": "
|
|
130
|
+
"name": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__TxHashPreimage",
|
|
131
131
|
"params": [
|
|
132
132
|
{
|
|
133
133
|
"name": "version",
|
|
@@ -149,11 +149,11 @@
|
|
|
149
149
|
"genericTypes": []
|
|
150
150
|
},
|
|
151
151
|
{
|
|
152
|
-
"name": "
|
|
152
|
+
"name": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__BacktraceInfo",
|
|
153
153
|
"params": [
|
|
154
154
|
{
|
|
155
155
|
"name": "prevTxInput",
|
|
156
|
-
"type": "
|
|
156
|
+
"type": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__TxIn"
|
|
157
157
|
},
|
|
158
158
|
{
|
|
159
159
|
"name": "prevTxInputIndex",
|
|
@@ -161,13 +161,13 @@
|
|
|
161
161
|
},
|
|
162
162
|
{
|
|
163
163
|
"name": "prevPrevTxPreimage",
|
|
164
|
-
"type": "
|
|
164
|
+
"type": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__TxHashPreimage"
|
|
165
165
|
}
|
|
166
166
|
],
|
|
167
167
|
"genericTypes": []
|
|
168
168
|
},
|
|
169
169
|
{
|
|
170
|
-
"name": "
|
|
170
|
+
"name": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__SHPreimage",
|
|
171
171
|
"params": [
|
|
172
172
|
{
|
|
173
173
|
"name": "nVersion",
|
|
@@ -229,7 +229,7 @@
|
|
|
229
229
|
"genericTypes": []
|
|
230
230
|
},
|
|
231
231
|
{
|
|
232
|
-
"name": "
|
|
232
|
+
"name": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__Outpoint",
|
|
233
233
|
"params": [
|
|
234
234
|
{
|
|
235
235
|
"name": "txHash",
|
|
@@ -243,7 +243,25 @@
|
|
|
243
243
|
"genericTypes": []
|
|
244
244
|
},
|
|
245
245
|
{
|
|
246
|
-
"name": "
|
|
246
|
+
"name": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__ChangeInfo",
|
|
247
|
+
"params": [
|
|
248
|
+
{
|
|
249
|
+
"name": "pubkeyhash",
|
|
250
|
+
"type": "Ripemd160"
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
"name": "satoshis",
|
|
254
|
+
"type": "int"
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"name": "dataHash",
|
|
258
|
+
"type": "Sha256"
|
|
259
|
+
}
|
|
260
|
+
],
|
|
261
|
+
"genericTypes": []
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
"name": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__ChainTxVerifyResponse",
|
|
247
265
|
"params": [
|
|
248
266
|
{
|
|
249
267
|
"name": "prevPrevScript",
|
|
@@ -257,7 +275,7 @@
|
|
|
257
275
|
"genericTypes": []
|
|
258
276
|
},
|
|
259
277
|
{
|
|
260
|
-
"name": "
|
|
278
|
+
"name": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__ReadVarintResult",
|
|
261
279
|
"params": [
|
|
262
280
|
{
|
|
263
281
|
"name": "data",
|
|
@@ -273,43 +291,43 @@
|
|
|
273
291
|
],
|
|
274
292
|
"library": [
|
|
275
293
|
{
|
|
276
|
-
"name": "
|
|
294
|
+
"name": "_opcat_labs_cat_sdk_3_4_0__rs__OwnerUtils",
|
|
277
295
|
"params": [],
|
|
278
296
|
"properties": [],
|
|
279
297
|
"genericTypes": []
|
|
280
298
|
},
|
|
281
299
|
{
|
|
282
|
-
"name": "
|
|
300
|
+
"name": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__TxUtils",
|
|
283
301
|
"params": [],
|
|
284
302
|
"properties": [],
|
|
285
303
|
"genericTypes": []
|
|
286
304
|
},
|
|
287
305
|
{
|
|
288
|
-
"name": "
|
|
306
|
+
"name": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__StateUtils",
|
|
289
307
|
"params": [],
|
|
290
308
|
"properties": [],
|
|
291
309
|
"genericTypes": []
|
|
292
310
|
},
|
|
293
311
|
{
|
|
294
|
-
"name": "
|
|
312
|
+
"name": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__ContextUtils",
|
|
295
313
|
"params": [],
|
|
296
314
|
"properties": [],
|
|
297
315
|
"genericTypes": []
|
|
298
316
|
},
|
|
299
317
|
{
|
|
300
|
-
"name": "
|
|
318
|
+
"name": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__TxHashPreimageUtils",
|
|
301
319
|
"params": [],
|
|
302
320
|
"properties": [],
|
|
303
321
|
"genericTypes": []
|
|
304
322
|
},
|
|
305
323
|
{
|
|
306
|
-
"name": "
|
|
324
|
+
"name": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__Backtrace",
|
|
307
325
|
"params": [],
|
|
308
326
|
"properties": [],
|
|
309
327
|
"genericTypes": []
|
|
310
328
|
},
|
|
311
329
|
{
|
|
312
|
-
"name": "
|
|
330
|
+
"name": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__StdUtils",
|
|
313
331
|
"params": [],
|
|
314
332
|
"properties": [],
|
|
315
333
|
"genericTypes": []
|
|
@@ -332,11 +350,11 @@
|
|
|
332
350
|
},
|
|
333
351
|
{
|
|
334
352
|
"name": "backtraceInfo",
|
|
335
|
-
"type": "
|
|
353
|
+
"type": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__BacktraceInfo"
|
|
336
354
|
},
|
|
337
355
|
{
|
|
338
356
|
"name": "__scrypt_ts_shPreimage",
|
|
339
|
-
"type": "
|
|
357
|
+
"type": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__SHPreimage"
|
|
340
358
|
},
|
|
341
359
|
{
|
|
342
360
|
"name": "__scrypt_ts_preimageSig",
|
|
@@ -344,11 +362,11 @@
|
|
|
344
362
|
},
|
|
345
363
|
{
|
|
346
364
|
"name": "__scrypt_ts_changeInfo",
|
|
347
|
-
"type": "
|
|
365
|
+
"type": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__ChangeInfo"
|
|
348
366
|
},
|
|
349
367
|
{
|
|
350
368
|
"name": "__scrypt_ts_curState",
|
|
351
|
-
"type": "
|
|
369
|
+
"type": "_opcat_labs_cat_sdk_3_4_0__rs__CAT20AdminState"
|
|
352
370
|
},
|
|
353
371
|
{
|
|
354
372
|
"name": "__scrypt_ts_prevouts",
|
|
@@ -368,7 +386,7 @@
|
|
|
368
386
|
},
|
|
369
387
|
{
|
|
370
388
|
"name": "__scrypt_ts_prevTxHashPreimage",
|
|
371
|
-
"type": "
|
|
389
|
+
"type": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__TxHashPreimage"
|
|
372
390
|
}
|
|
373
391
|
]
|
|
374
392
|
},
|
|
@@ -391,11 +409,11 @@
|
|
|
391
409
|
},
|
|
392
410
|
{
|
|
393
411
|
"name": "backtraceInfo",
|
|
394
|
-
"type": "
|
|
412
|
+
"type": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__BacktraceInfo"
|
|
395
413
|
},
|
|
396
414
|
{
|
|
397
415
|
"name": "__scrypt_ts_shPreimage",
|
|
398
|
-
"type": "
|
|
416
|
+
"type": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__SHPreimage"
|
|
399
417
|
},
|
|
400
418
|
{
|
|
401
419
|
"name": "__scrypt_ts_preimageSig",
|
|
@@ -403,11 +421,11 @@
|
|
|
403
421
|
},
|
|
404
422
|
{
|
|
405
423
|
"name": "__scrypt_ts_changeInfo",
|
|
406
|
-
"type": "
|
|
424
|
+
"type": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__ChangeInfo"
|
|
407
425
|
},
|
|
408
426
|
{
|
|
409
427
|
"name": "__scrypt_ts_curState",
|
|
410
|
-
"type": "
|
|
428
|
+
"type": "_opcat_labs_cat_sdk_3_4_0__rs__CAT20AdminState"
|
|
411
429
|
},
|
|
412
430
|
{
|
|
413
431
|
"name": "__scrypt_ts_prevouts",
|
|
@@ -427,7 +445,7 @@
|
|
|
427
445
|
},
|
|
428
446
|
{
|
|
429
447
|
"name": "__scrypt_ts_prevTxHashPreimage",
|
|
430
|
-
"type": "
|
|
448
|
+
"type": "_opcat_labs_scrypt_ts_opcat_3_4_0__rs__TxHashPreimage"
|
|
431
449
|
}
|
|
432
450
|
]
|
|
433
451
|
},
|
|
@@ -442,8 +460,8 @@
|
|
|
442
460
|
}
|
|
443
461
|
],
|
|
444
462
|
"stateProps": [],
|
|
445
|
-
"stateType": "
|
|
463
|
+
"stateType": "_opcat_labs_cat_sdk_3_4_0__rs__CAT20AdminState",
|
|
446
464
|
"buildType": "release",
|
|
447
465
|
"file": "../cat20Admin.scrypt",
|
|
448
|
-
"hex": "
|
|
466
|
+
"hex": "0176018801a901ac2102ba79df5f8ae7604a9830f03c7933028186aede0675a16f025dc4f8be8eec038220836c4b45ab7a625549ca7c799b02d3304adf996557929ee809613e602d26c1f800<genesisOutpoint>77577900876301157901167982778c7f75007f770124790124790124790124790124790124790124790124790124790124790124790124790124790124795d798277549d5c79827701209d5b79827701209d5a79827701209d597900a26958798277549d5779827701209d5679827701209d5579827701209d5479827701209d5379827701209d527900a2697800a26976519c6476529c6751686476539c67516864760281009c67516864760282009c67516864760283009c675168695d795d797e5c797e5b797e5a79767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c7e59797e58797e57797e56797e55797e54797e5379546e8b806e7c7f75007f6b6d6d6c7e5279546e8b806e7c7f75007f6b6d6d6c7e7854807e6b6d6d6d6d6d6d6d6ca85479ba630115795379ac670068695e79011e7978aa7888785878827d77527997009d6e7c966b6d6d6c776079012479011b7970aa5379886e9f69765479012478827d77527997009d6e7c967777779d537952798b0124957f7552790124957f7d7701207f75007f777801247f7501207f77768277549d767601007e817777726d726d7b755f7901207954795279aa527988765379012078827d77527997009d6e7c967777779d6d756079011f7954795279aa527988765379012078827d77527997009d6e7c967777779d6d75011479011479011d79011779011779788277528052797e78827752807e787e5279a95279a97ea97ea877770114797653798b0120957f7553790120957f775279886d756079607960796079011879012279557955795579557953798277549d5279014878827d77527997009d6e7c967777775279014878827d77527997009d6e7c96777777557952790000527902fd009f637551675279030000019f6301fd7b757c52776752790500000000019f6301fe7b757c54776701ff7b757c587768686878537952796e8b806e7c7f75007f6b6d6d6c7e7777777e55797e780000527902fd009f637551675279030000019f6301fd7b757c52776752790500000000019f6301fe7b757c54776701ff7b757c587768686878537952796e8b806e7c7f75007f6b6d6d6c7e7777777e54797e53797eaa6b6d6d6d6c76700124950120937f7553790124957f77886d6d6d750126790132790132790132790132790132790132790132790132790132795f79011c790129798b0120957f750129790120957f77011b795b795b795b795b795b795b795b795b795b7959797656798b0148957f7556790148957f775a795a795a795a795379827701209d76827701209d707600a2637605ffffffff00a16700686976546e8b806e7c7f75007f6b6d6d6c777e787e52797600a2637605ffffffff00a16700686976546e8b806e7c7f75007f6b6d6d6c777e6b6d6d6c88597976567956795679567953798277549d5279014878827d77527997009d6e7c967777775279014878827d77527997009d6e7c96777777557952790000527902fd009f637551675279030000019f6301fd7b757c52776752790500000000019f6301fe7b757c54776701ff7b757c587768686878537952796e8b806e7c7f75007f6b6d6d6c7e7777777e55797e780000527902fd009f637551675279030000019f6301fd7b757c52776752790500000000019f6301fe7b757c54776701ff7b757c587768686878537952796e8b806e7c7f75007f6b6d6d6c7e7777777e54797e53797eaa6b6d6d6d6c8853795a7901489558930120937f755a7901489558937f77785b797600a2637605ffffffff00a16700686976546e8b806e7c7f75007f6b6d6d6c777e787c726d726d726d726d726d726d7655798763780116798868765579876478547987675168696d6d6d6d6d6d6d0134795279787676827701219d750376a91478a97e0288ac7e7778886d013379013579ad76012679012879527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c7776011b7900a063011c795f795e797e01147e787e5f797e5d797e77a8011c79011c79527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c776700687eaa012179876b6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6c67577951876301157901167982778c7f75007f770124790124790124790124790124790124790124790124790124790124790124790124790124790124795d798277549d5c79827701209d5b79827701209d5a79827701209d597900a26958798277549d5779827701209d5679827701209d5579827701209d5479827701209d5379827701209d527900a2697800a26976519c6476529c6751686476539c67516864760281009c67516864760282009c67516864760283009c675168695d795d797e5c797e5b797e5a79767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c7e59797e58797e57797e56797e55797e54797e5379546e8b806e7c7f75007f6b6d6d6c7e5279546e8b806e7c7f75007f6b6d6d6c7e7854807e6b6d6d6d6d6d6d6d6ca85479ba630115795379ac670068695e79011e7978aa7888785878827d77527997009d6e7c966b6d6d6c776079012479011b7970aa5379886e9f69765479012478827d77527997009d6e7c967777779d537952798b0124957f7552790124957f7d7701207f75007f777801247f7501207f77768277549d767601007e817777726d726d7b755f7901207954795279aa527988765379012078827d77527997009d6e7c967777779d6d756079011f7954795279aa527988765379012078827d77527997009d6e7c967777779d6d75011479011479011d79011779011779788277528052797e78827752807e787e5279a95279a97ea97ea877770114797653798b0120957f7553790120957f775279886d756079607960796079011879012279557955795579557953798277549d5279014878827d77527997009d6e7c967777775279014878827d77527997009d6e7c96777777557952790000527902fd009f637551675279030000019f6301fd7b757c52776752790500000000019f6301fe7b757c54776701ff7b757c587768686878537952796e8b806e7c7f75007f6b6d6d6c7e7777777e55797e780000527902fd009f637551675279030000019f6301fd7b757c52776752790500000000019f6301fe7b757c54776701ff7b757c587768686878537952796e8b806e7c7f75007f6b6d6d6c7e7777777e54797e53797eaa6b6d6d6d6c76700124950120937f7553790124957f77886d6d6d750126790132790132790132790132790132790132790132790132790132795f79011c790129798b0120957f750129790120957f77011b795b795b795b795b795b795b795b795b795b7959797656798b0148957f7556790148957f775a795a795a795a795379827701209d76827701209d707600a2637605ffffffff00a16700686976546e8b806e7c7f75007f6b6d6d6c777e787e52797600a2637605ffffffff00a16700686976546e8b806e7c7f75007f6b6d6d6c777e6b6d6d6c88597976567956795679567953798277549d5279014878827d77527997009d6e7c967777775279014878827d77527997009d6e7c96777777557952790000527902fd009f637551675279030000019f6301fd7b757c52776752790500000000019f6301fe7b757c54776701ff7b757c587768686878537952796e8b806e7c7f75007f6b6d6d6c7e7777777e55797e780000527902fd009f637551675279030000019f6301fd7b757c52776752790500000000019f6301fe7b757c54776701ff7b757c587768686878537952796e8b806e7c7f75007f6b6d6d6c7e7777777e54797e53797eaa6b6d6d6d6c8853795a7901489558930120937f755a7901489558937f77785b797600a2637605ffffffff00a16700686976546e8b806e7c7f75007f6b6d6d6c777e787c726d726d726d726d726d726d7655798763780116798868765579876478547987675168696d6d6d6d6d6d6d0135795279787676827701219d750376a91478a97e0288ac7e7778886d013479013679ad01337976827701149d0376a914787e0288ac7e777b757c7601267954795479788277528052797e78827752807e787e5279a95279a97ea97ea87777527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c7776011b7900a063011c795f795e797e01147e787e5f797e5d797e77a8011c79011c79527982777882777801209d7601209d537900a2695379767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c55797e53797e6b6d6d6c776700687eaa012179876b6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6c7767006868"
|
|
449
467
|
}
|
|
@@ -10,66 +10,66 @@ import "../scrypt-ts-opcat/assets/smart-contract/builtin-libs/stateUtils.scrypt"
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
contract
|
|
13
|
+
contract _opcat_labs_cat_sdk_3_4_0__rs__CAT20Admin {
|
|
14
14
|
bytes genesisOutpoint;
|
|
15
15
|
constructor(bytes genesisOutpoint) {
|
|
16
16
|
this.genesisOutpoint = genesisOutpoint;
|
|
17
17
|
}
|
|
18
|
-
public function authorizeToSpendToken(PubKey adminPubKey, Sig adminSig,
|
|
19
|
-
require(checkDataSig(Sig(__scrypt_ts_preimageSig[0 : len(__scrypt_ts_preimageSig) - 1]), sha256(
|
|
18
|
+
public function authorizeToSpendToken(PubKey adminPubKey, Sig adminSig, _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__CAT20AdminState __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) {
|
|
19
|
+
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));
|
|
20
20
|
|
|
21
|
-
int __scrypt_ts_inputCount =
|
|
21
|
+
int __scrypt_ts_inputCount = _opcat_labs_scrypt_ts_opcat_3_4_0__rs__ContextUtils.checkSpentAmounts(__scrypt_ts_spentAmounts, __scrypt_ts_shPreimage.hashSpentAmounts);
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
_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);
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
_opcat_labs_scrypt_ts_opcat_3_4_0__rs__ContextUtils.checkSpentScripts(__scrypt_ts_spentScriptHashes, __scrypt_ts_shPreimage.hashSpentScriptHashes, __scrypt_ts_inputCount);
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
_opcat_labs_scrypt_ts_opcat_3_4_0__rs__ContextUtils.checkSpentDataHashes(__scrypt_ts_spentDataHashes, __scrypt_ts_shPreimage.hashSpentDataHashes, __scrypt_ts_inputCount);
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
_opcat_labs_cat_sdk_3_4_0__rs__CAT20AdminState __scrypt_ts_nextState = __scrypt_ts_curState;
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
_opcat_labs_scrypt_ts_opcat_3_4_0__rs__StateUtils.checkInputState(__scrypt_ts_shPreimage.inputIndex, _opcat_labs_cat_sdk_3_4_0__rs__CAT20Admin.stateHash(__scrypt_ts_curState), __scrypt_ts_spentDataHashes);
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
_opcat_labs_scrypt_ts_opcat_3_4_0__rs__Backtrace.checkPrevTxHashPreimage(__scrypt_ts_prevTxHashPreimage, __scrypt_ts_prevouts, __scrypt_ts_shPreimage.inputIndex);
|
|
34
34
|
|
|
35
35
|
bytes adminScriptHash = __scrypt_ts_shPreimage.spentScriptHash;
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
_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);
|
|
37
|
+
_opcat_labs_cat_sdk_3_4_0__rs__OwnerUtils.checkUserOwner(adminPubKey, __scrypt_ts_nextState.adminAddress);
|
|
38
38
|
require(checkSig(adminSig, adminPubKey));
|
|
39
|
-
bytes adminOutput =
|
|
39
|
+
bytes adminOutput = _opcat_labs_scrypt_ts_opcat_3_4_0__rs__TxUtils.buildDataOutput(adminScriptHash, __scrypt_ts_shPreimage.value, __scrypt_ts_shPreimage.spentDataHash);
|
|
40
40
|
require(hash256(adminOutput +
|
|
41
|
-
(__scrypt_ts_changeInfo.satoshis > 0 ?
|
|
41
|
+
(__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'')) == __scrypt_ts_shPreimage.hashOutputs);
|
|
42
42
|
}
|
|
43
|
-
public function transferOwnership(PubKey adminPubKey, Sig adminSig, Ripemd160 newPubKeyHash,
|
|
44
|
-
require(checkDataSig(Sig(__scrypt_ts_preimageSig[0 : len(__scrypt_ts_preimageSig) - 1]), sha256(
|
|
43
|
+
public function transferOwnership(PubKey adminPubKey, Sig adminSig, Ripemd160 newPubKeyHash, _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__CAT20AdminState __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) {
|
|
44
|
+
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));
|
|
45
45
|
|
|
46
|
-
int __scrypt_ts_inputCount =
|
|
46
|
+
int __scrypt_ts_inputCount = _opcat_labs_scrypt_ts_opcat_3_4_0__rs__ContextUtils.checkSpentAmounts(__scrypt_ts_spentAmounts, __scrypt_ts_shPreimage.hashSpentAmounts);
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
_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);
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
_opcat_labs_scrypt_ts_opcat_3_4_0__rs__ContextUtils.checkSpentScripts(__scrypt_ts_spentScriptHashes, __scrypt_ts_shPreimage.hashSpentScriptHashes, __scrypt_ts_inputCount);
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
_opcat_labs_scrypt_ts_opcat_3_4_0__rs__ContextUtils.checkSpentDataHashes(__scrypt_ts_spentDataHashes, __scrypt_ts_shPreimage.hashSpentDataHashes, __scrypt_ts_inputCount);
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
_opcat_labs_cat_sdk_3_4_0__rs__CAT20AdminState __scrypt_ts_nextState = __scrypt_ts_curState;
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
_opcat_labs_scrypt_ts_opcat_3_4_0__rs__StateUtils.checkInputState(__scrypt_ts_shPreimage.inputIndex, _opcat_labs_cat_sdk_3_4_0__rs__CAT20Admin.stateHash(__scrypt_ts_curState), __scrypt_ts_spentDataHashes);
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
_opcat_labs_scrypt_ts_opcat_3_4_0__rs__Backtrace.checkPrevTxHashPreimage(__scrypt_ts_prevTxHashPreimage, __scrypt_ts_prevouts, __scrypt_ts_shPreimage.inputIndex);
|
|
59
59
|
|
|
60
60
|
bytes adminScriptHash = __scrypt_ts_shPreimage.spentScriptHash;
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
_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);
|
|
62
|
+
_opcat_labs_cat_sdk_3_4_0__rs__OwnerUtils.checkUserOwner(adminPubKey, __scrypt_ts_nextState.adminAddress);
|
|
63
63
|
require(checkSig(adminSig, adminPubKey));
|
|
64
|
-
__scrypt_ts_nextState.adminAddress =
|
|
65
|
-
bytes adminOutput =
|
|
64
|
+
__scrypt_ts_nextState.adminAddress = _opcat_labs_cat_sdk_3_4_0__rs__OwnerUtils.pubKeyHashtoLockingScript(newPubKeyHash);
|
|
65
|
+
bytes adminOutput = _opcat_labs_scrypt_ts_opcat_3_4_0__rs__TxUtils.buildDataOutput(adminScriptHash, __scrypt_ts_shPreimage.value, _opcat_labs_cat_sdk_3_4_0__rs__CAT20Admin.stateHash(__scrypt_ts_nextState));
|
|
66
66
|
require(hash256(adminOutput +
|
|
67
|
-
(__scrypt_ts_changeInfo.satoshis > 0 ?
|
|
67
|
+
(__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'')) == __scrypt_ts_shPreimage.hashOutputs);
|
|
68
68
|
}
|
|
69
|
-
static function serializeState(
|
|
69
|
+
static function serializeState(_opcat_labs_cat_sdk_3_4_0__rs__CAT20AdminState __scrypt_ts_curState): bytes {
|
|
70
70
|
return num2bin(len(__scrypt_ts_curState.tag), 2) + __scrypt_ts_curState.tag + num2bin(len(__scrypt_ts_curState.adminAddress), 2) + __scrypt_ts_curState.adminAddress + hash160(hash160(__scrypt_ts_curState.tag) + hash160(__scrypt_ts_curState.adminAddress));
|
|
71
71
|
}
|
|
72
|
-
static function stateHash(
|
|
72
|
+
static function stateHash(_opcat_labs_cat_sdk_3_4_0__rs__CAT20AdminState __scrypt_ts_curState): bytes {
|
|
73
73
|
return sha256(num2bin(len(__scrypt_ts_curState.tag), 2) + __scrypt_ts_curState.tag + num2bin(len(__scrypt_ts_curState.adminAddress), 2) + __scrypt_ts_curState.adminAddress + hash160(hash160(__scrypt_ts_curState.tag) + hash160(__scrypt_ts_curState.adminAddress)));
|
|
74
74
|
}
|
|
75
75
|
}
|