@opcat-labs/cat-sdk 1.0.2 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -19
- package/artifacts/.templates/cat20/cat20Guard.scrypt.map +1 -1
- package/artifacts/.templates/cat20/cat20Guard.scrypt.tpl +6 -6
- package/artifacts/.templates/cat20/cat20GuardStateLib.scrypt.map +1 -1
- package/artifacts/.templates/cat20/cat20GuardStateLib.scrypt.tpl +3 -3
- package/artifacts/.templates/cat20/types.scrypt.map +1 -1
- package/artifacts/.templates/cat20/types.scrypt.tpl +1 -1
- package/artifacts/cat20/cat20.json +38 -38
- package/artifacts/cat20/cat20.scrypt +17 -17
- package/artifacts/cat20/cat20Guard.json +40 -40
- package/artifacts/cat20/cat20Guard.scrypt +26 -26
- package/artifacts/cat20/cat20GuardStateLib.json +24 -24
- package/artifacts/cat20/cat20GuardStateLib.scrypt +8 -8
- package/artifacts/cat20/cat20StateLib.json +26 -26
- package/artifacts/cat20/cat20StateLib.scrypt +6 -6
- package/artifacts/cat20/minters/cat20ClosedMinter.json +36 -36
- package/artifacts/cat20/minters/cat20ClosedMinter.scrypt +22 -22
- package/artifacts/cat20/minters/cat20ClosedMinterMetadata.json +12 -12
- package/artifacts/cat20/minters/cat20ClosedMinterMetadata.scrypt +3 -3
- package/artifacts/cat20/minters/cat20OpenMinter.json +39 -39
- package/artifacts/cat20/minters/cat20OpenMinter.scrypt +20 -20
- package/artifacts/cat20/minters/cat20OpenMinterMetadata.json +12 -12
- package/artifacts/cat20/minters/cat20OpenMinterMetadata.scrypt +3 -3
- package/artifacts/cat20/types.json +8 -8
- package/artifacts/cat20/types.scrypt +7 -7
- package/artifacts/cat20Incinerator.json +27 -27
- package/artifacts/cat20Incinerator.scrypt +9 -9
- package/artifacts/constants.json +3 -3
- package/artifacts/constants.scrypt +1 -1
- package/artifacts/counter.json +20 -20
- package/artifacts/counter.scrypt +12 -12
- package/artifacts/p2pkh.json +14 -14
- package/artifacts/p2pkh.scrypt +1 -1
- package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/backtrace.scrypt +12 -12
- package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/contextUtils.scrypt +16 -16
- package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/stateUtils.scrypt +1 -1
- package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/stdUtils.scrypt +12 -12
- package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/txHashPreimageUtils.scrypt +7 -7
- package/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/txUtils.scrypt +12 -12
- package/artifacts/scrypt-ts-opcat/assets/smart-contract/types/structs.scrypt +8 -8
- package/artifacts/types.json +2 -2
- package/artifacts/types.scrypt +1 -1
- 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/.templates/cat20/cat20Guard.scrypt.map +1 -1
- package/dist/artifacts/.templates/cat20/cat20Guard.scrypt.tpl +6 -6
- package/dist/artifacts/.templates/cat20/cat20GuardStateLib.scrypt.map +1 -1
- package/dist/artifacts/.templates/cat20/cat20GuardStateLib.scrypt.tpl +3 -3
- package/dist/artifacts/.templates/cat20/types.scrypt.map +1 -1
- package/dist/artifacts/.templates/cat20/types.scrypt.tpl +1 -1
- package/dist/artifacts/cat20/cat20.json +38 -38
- package/dist/artifacts/cat20/cat20.scrypt +17 -17
- package/dist/artifacts/cat20/cat20Guard.json +40 -40
- package/dist/artifacts/cat20/cat20Guard.scrypt +26 -26
- package/dist/artifacts/cat20/cat20GuardStateLib.json +24 -24
- package/dist/artifacts/cat20/cat20GuardStateLib.scrypt +8 -8
- package/dist/artifacts/cat20/cat20StateLib.json +26 -26
- package/dist/artifacts/cat20/cat20StateLib.scrypt +6 -6
- package/dist/artifacts/cat20/minters/cat20ClosedMinter.json +36 -36
- package/dist/artifacts/cat20/minters/cat20ClosedMinter.scrypt +22 -22
- package/dist/artifacts/cat20/minters/cat20ClosedMinterMetadata.json +12 -12
- package/dist/artifacts/cat20/minters/cat20ClosedMinterMetadata.scrypt +3 -3
- package/dist/artifacts/cat20/minters/cat20OpenMinter.json +39 -39
- package/dist/artifacts/cat20/minters/cat20OpenMinter.scrypt +20 -20
- package/dist/artifacts/cat20/minters/cat20OpenMinterMetadata.json +12 -12
- package/dist/artifacts/cat20/minters/cat20OpenMinterMetadata.scrypt +3 -3
- package/dist/artifacts/cat20/types.json +8 -8
- package/dist/artifacts/cat20/types.scrypt +7 -7
- package/dist/artifacts/cat20Incinerator.json +27 -27
- package/dist/artifacts/cat20Incinerator.scrypt +9 -9
- package/dist/artifacts/constants.json +3 -3
- package/dist/artifacts/constants.scrypt +1 -1
- package/dist/artifacts/counter.json +20 -20
- package/dist/artifacts/counter.scrypt +12 -12
- package/dist/artifacts/p2pkh.json +14 -14
- package/dist/artifacts/p2pkh.scrypt +1 -1
- package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/backtrace.scrypt +12 -12
- package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/contextUtils.scrypt +16 -16
- package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/stateUtils.scrypt +1 -1
- package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/stdUtils.scrypt +12 -12
- package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/txHashPreimageUtils.scrypt +7 -7
- package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/builtin-libs/txUtils.scrypt +12 -12
- package/dist/artifacts/scrypt-ts-opcat/assets/smart-contract/types/structs.scrypt +8 -8
- package/dist/artifacts/types.json +2 -2
- package/dist/artifacts/types.scrypt +1 -1
- 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/constants.js +2 -2
- package/dist/cjs/contracts/constants.js.map +1 -1
- package/dist/cjs/features/cat20/incinerate.js +2 -0
- package/dist/cjs/features/cat20/incinerate.js.map +1 -1
- package/dist/cjs/features/cat20/send/singleSend.js +8 -8
- package/dist/cjs/features/cat20/send/singleSend.js.map +1 -1
- package/dist/esm/contracts/constants.js +2 -2
- package/dist/esm/contracts/constants.js.map +1 -1
- package/dist/esm/features/cat20/incinerate.js +3 -1
- package/dist/esm/features/cat20/incinerate.js.map +1 -1
- package/dist/esm/features/cat20/send/singleSend.js +8 -8
- package/dist/esm/features/cat20/send/singleSend.js.map +1 -1
- package/dist/types/contracts/constants.d.ts +2 -2
- package/dist/types/contracts/constants.d.ts.map +1 -1
- package/dist/types/features/cat20/incinerate.d.ts.map +1 -1
- package/dist/types/features/cat20/send/singleSend.d.ts +2 -2
- package/dist/types/features/cat20/send/singleSend.d.ts.map +1 -1
- package/dist/types/utils/index.d.ts +1 -1
- package/dist/types/utils/index.d.ts.map +1 -1
- package/package.json +2 -2
- package/scrypt.index.json +3 -3
package/README.md
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
# Opcat20
|
|
2
|
-
|
|
3
|
-
## Build
|
|
4
|
-
|
|
5
|
-
```sh
|
|
6
|
-
npm run build
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
## Testing Locally
|
|
10
|
-
|
|
11
|
-
```sh
|
|
12
|
-
npm run test
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
## Run Tests on the Bitcoin Testnet
|
|
16
|
-
|
|
17
|
-
```sh
|
|
18
|
-
npm run test:testnet
|
|
19
|
-
```
|
|
1
|
+
# Opcat20
|
|
2
|
+
|
|
3
|
+
## Build
|
|
4
|
+
|
|
5
|
+
```sh
|
|
6
|
+
npm run build
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Testing Locally
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
npm run test
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Run Tests on the Bitcoin Testnet
|
|
16
|
+
|
|
17
|
+
```sh
|
|
18
|
+
npm run test:testnet
|
|
19
|
+
```
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[[],[],[],[],[],[],[],[],[],[],[],[],[[9,0,27,13]],[],[[2,0,29,4],[18,0,29,11],[25,0,30,25],[30,0,30,25],[
|
|
1
|
+
[[],[],[],[],[],[],[],[],[],[],[],[],[[9,0,27,13]],[],[[2,0,29,4],[18,0,29,11],[25,0,30,25],[30,0,30,25],[35,0,30,8],[52,0,34,33],[57,0,34,33],[62,0,34,8],[87,0,38,22],[90,0,38,22],[95,0,38,8],[109,0,44,32],[112,0,44,32],[117,0,44,8],[141,0,49,24],[144,0,49,24],[149,0,49,8],[165,0,53,21],[175,0,53,21],[180,0,53,8],[193,0,55,21],[197,0,55,8]],[],[],[],[],[],[],[],[],[],[],[],[],[[4,0,59,8],[22,0,59,27]],[[4,0,62,30],[8,0,62,12],[26,0,62,30]],[[4,0,63,39],[9,0,63,39],[13,0,63,14],[40,0,67,16],[52,0,67,29],[87,0,68,16],[99,0,68,29],[134,0,69,16],[146,0,69,29],[181,0,70,16],[193,0,70,29]],[[15,0,72,17]],[[8,0,73,12],[32,0,73,27],[51,0,73,45],[54,0,73,16],[57,0,73,51],[81,0,73,75]],[[10,0,74,16],[25,0,74,16]],[],[],[[15,0,78,17]],[[8,0,79,12],[11,0,79,16],[13,0,79,16],[15,0,79,20],[16,0,79,27]],[[10,0,80,16],[39,0,80,34],[58,0,80,52],[61,0,80,23],[64,0,80,58],[88,0,80,82]],[[10,0,81,16],[18,0,82,20],[43,0,82,35],[62,0,82,53],[66,0,82,20],[69,0,82,60]],[],[[10,0,85,16],[39,0,85,34],[58,0,85,52],[61,0,85,23],[64,0,85,58],[88,0,85,82]],[],[],[[4,0,88,8],[12,0,88,15],[28,0,88,15],[30,0,88,33]],[[4,0,94,31],[7,0,94,31],[11,0,94,14],[28,0,94,31],[35,0,94,36],[38,0,94,40]],[[4,0,95,34],[8,0,95,12],[30,0,95,34],[31,0,95,35]],[[4,0,96,27],[8,0,96,14]],[[16,0,97,17]],[[8,0,98,37],[12,0,98,18],[52,0,98,48],[72,0,98,67],[73,0,98,74]],[[8,0,99,12],[11,0,99,16],[13,0,99,16],[15,0,99,20]],[[10,0,100,16],[18,0,100,23],[35,0,100,23],[37,0,100,42]],[[10,0,101,16],[13,0,101,20],[30,0,101,20],[33,0,101,40],[34,0,101,41]],[[12,0,104,24],[18,0,103,26],[57,0,104,35],[76,0,104,53],[77,0,104,60]],[[12,0,105,20],[20,0,105,27],[36,0,105,27],[39,0,105,46],[51,0,105,59],[102,0,105,106],[103,0,105,113]],[[12,0,106,20],[25,0,106,34],[37,0,106,45],[49,0,106,57]],[[12,0,107,20],[20,0,107,27],[32,0,107,40],[79,0,107,83],[80,0,107,90],[84,0,107,27],[87,0,107,97],[100,0,107,111],[111,0,107,121],[123,0,107,133]],[[12,0,108,20],[27,0,108,35],[28,0,108,42],[47,0,108,20],[49,0,108,63],[57,0,108,72],[62,0,109,24],[77,0,109,39],[78,0,109,46],[98,0,110,24],[110,0,110,36],[112,0,110,39]],[[12,0,112,20],[32,0,112,20],[34,0,113,24],[51,0,113,24],[53,0,113,43],[75,0,114,30],[94,0,115,30]],[],[],[[10,0,118,16],[39,0,118,34],[59,0,118,53],[62,0,118,23],[65,0,118,59],[66,0,118,60]],[],[],[[4,0,124,8],[12,0,125,12],[32,0,125,12],[35,0,125,35],[37,0,125,12],[40,0,125,41],[60,0,125,41],[63,0,125,64],[79,0,125,64],[81,0,125,82]],[[4,0,130,8],[12,0,130,15],[24,0,130,15],[27,0,130,30],[29,0,130,15],[32,0,130,36],[44,0,130,36],[47,0,130,51]],[[4,0,131,32],[7,0,131,32],[11,0,131,14],[29,0,131,32],[36,0,131,37],[39,0,131,41]],[[4,0,132,22],[10,0,132,12],[20,0,132,35]],[[16,0,133,17]],[[8,0,134,12],[11,0,134,16],[13,0,134,16],[15,0,134,20]],[[10,0,135,46],[16,0,135,22],[40,0,135,46],[64,0,135,70]],[[10,0,136,16],[18,0,136,23],[22,0,136,27],[45,0,136,23],[47,0,136,52]],[[10,0,137,45],[14,0,137,22],[37,0,137,45],[60,0,137,68]],[[10,0,138,16],[18,0,138,23],[39,0,138,23],[41,0,138,46]],[[10,0,139,16],[13,0,139,20],[34,0,139,20],[37,0,139,44],[38,0,139,45]],[[12,0,141,40],[16,0,141,26],[30,0,141,40],[43,0,141,53]],[[12,0,142,20],[20,0,142,27],[32,0,142,27],[34,0,142,41]],[[12,0,143,20],[28,0,143,36],[29,0,143,43],[52,0,143,20],[54,0,143,68],[62,0,143,77],[67,0,144,24],[83,0,144,40],[84,0,144,47],[108,0,145,24]],[[12,0,147,43],[18,0,147,26],[35,0,147,43],[48,0,147,57],[59,0,147,67],[60,0,148,29],[72,0,148,42],[90,0,149,35],[113,0,150,32]],[[12,0,152,20],[20,0,152,27],[36,0,152,43],[39,0,152,27],[42,0,152,49]],[[12,0,154,24],[18,0,153,26],[57,0,154,35],[76,0,154,53],[77,0,154,60]],[[12,0,155,20],[20,0,155,20],[23,0,155,31],[30,0,155,39],[47,0,156,24],[64,0,157,24],[79,0,157,39],[83,0,158,24]],[],[[12,0,162,20],[20,0,162,27],[33,0,162,40],[36,0,162,27],[39,0,162,46]],[[23,0,164,29]],[[14,0,165,24],[22,0,165,31],[44,0,165,31],[68,0,165,67],[87,0,165,85]],[],[[12,0,167,20],[20,0,167,20],[23,0,167,31],[30,0,167,39],[47,0,168,24],[70,0,169,24],[85,0,169,39],[89,0,170,24],[105,0,170,40]],[],[],[[10,0,174,16],[18,0,174,23],[22,0,174,27],[46,0,174,51],[50,0,174,23],[53,0,174,58]],[[10,0,175,16],[18,0,175,23],[41,0,175,46],[44,0,175,23],[47,0,175,52],[48,0,175,53]],[[10,0,176,16],[18,0,176,23],[31,0,176,36],[34,0,176,23],[37,0,176,42]],[[10,0,177,16],[18,0,177,23],[34,0,177,39],[37,0,177,23],[40,0,177,58]],[[10,0,178,16],[18,0,178,23],[33,0,178,38],[36,0,178,23],[39,0,178,44]],[],[],[[15,0,183,17]],[[8,0,184,12],[16,0,184,19],[31,0,184,34],[34,0,184,19],[58,0,184,51],[72,0,184,64]],[[8,0,185,12],[16,0,186,16],[31,0,186,31],[34,0,186,16],[37,0,187,16],[45,0,187,25],[50,0,187,29],[66,0,187,45],[91,0,187,60],[109,0,187,77]],[[8,0,189,12],[11,0,189,16],[13,0,189,16],[15,0,189,20],[16,0,189,27]],[[10,0,190,16],[18,0,190,23],[33,0,190,38],[36,0,190,23],[38,0,190,43]],[],[[10,0,192,16],[18,0,192,23],[33,0,192,38],[36,0,192,23],[39,0,192,44]],[[10,0,193,16],[18,0,193,23],[34,0,193,39],[37,0,193,23],[40,0,193,45]],[[10,0,195,16],[39,0,195,34],[53,0,195,47],[56,0,195,23],[59,0,195,53]],[[10,0,196,16],[39,0,196,34],[57,0,196,51],[60,0,196,23],[63,0,196,57]],[],[],[[4,0,201,8],[20,0,201,33]],[],[],[],[],[],[],[],[]]
|
|
@@ -12,7 +12,7 @@ import "@opcat-labs/scrypt-ts-opcat/assets/.templates/smart-contract/builtin-lib
|
|
|
12
12
|
|
|
13
13
|
contract CAT20Guard {
|
|
14
14
|
constructor(){}
|
|
15
|
-
public function unlock(bytes[
|
|
15
|
+
public function unlock(bytes[10] nextStateHashes, bytes[10] ownerAddrOrScriptHashes, int[10] outputTokens, int[10] tokenScriptHashIndexes, int[10] outputSatoshis, CAT20State[10] cat20States, int outputCount, SHPreimage __scrypt_ts_shPreimage, CAT20GuardConstState __scrypt_ts_curState, bytes __scrypt_ts_spentAmounts, bytes __scrypt_ts_spentDataHashes, bytes __scrypt_ts_spentScriptHashes) {
|
|
16
16
|
require(Tx.checkPreimageSigHashType(ContextUtils.serializeSHPreimage(__scrypt_ts_shPreimage), SigHash.ALL));
|
|
17
17
|
|
|
18
18
|
int __scrypt_ts_inputCount = ContextUtils.checkSpentAmounts(__scrypt_ts_spentAmounts, __scrypt_ts_shPreimage.hashSpentAmounts);
|
|
@@ -45,7 +45,7 @@ contract CAT20Guard {
|
|
|
45
45
|
int[4] sumInputTokens = repeat(0, 4);
|
|
46
46
|
int tokenScriptIndexMax = -1;
|
|
47
47
|
int inputCount = __scrypt_ts_inputCount;
|
|
48
|
-
loop (
|
|
48
|
+
loop (10) : i {
|
|
49
49
|
int tokenScriptIndex = __scrypt_ts_nextState.tokenScriptIndexes[(i)];
|
|
50
50
|
if(i < inputCount) {
|
|
51
51
|
require(tokenScriptIndex < inputTokenTypes);
|
|
@@ -62,10 +62,10 @@ contract CAT20Guard {
|
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
64
|
require(tokenScriptIndexMax >= 0 && tokenScriptIndexMax == inputTokenTypes - 1);
|
|
65
|
-
require(outputCount >= 0 && outputCount <=
|
|
65
|
+
require(outputCount >= 0 && outputCount <= 10);
|
|
66
66
|
int[4] sumOutputTokens = repeat(0, 4);
|
|
67
67
|
bytes outputs = b'';
|
|
68
|
-
loop (
|
|
68
|
+
loop (10) : i {
|
|
69
69
|
if(i < outputCount) {
|
|
70
70
|
bytes ownerAddrOrScriptHash = ownerAddrOrScriptHashes[i];
|
|
71
71
|
require(len(ownerAddrOrScriptHash) > 0);
|
|
@@ -109,9 +109,9 @@ contract CAT20Guard {
|
|
|
109
109
|
require(hash256(outputs) == __scrypt_ts_shPreimage.hashOutputs);
|
|
110
110
|
}
|
|
111
111
|
static function serializeState(CAT20GuardConstState __scrypt_ts_curState): bytes {
|
|
112
|
-
return num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[0])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[1])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[2])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[3])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[4])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[4]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[5])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[5]) + hash160(hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[0])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[1])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[2])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[4])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[5])));
|
|
112
|
+
return num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[0])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[1])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[2])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[3])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[4])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[4]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[5])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[5]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[6])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[6]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[7])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[7]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[8])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[8]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[9])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[9]) + hash160(hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[0])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[1])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[2])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[4])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[5])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[6])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[7])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[8])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[9])));
|
|
113
113
|
}
|
|
114
114
|
static function stateHash(CAT20GuardConstState __scrypt_ts_curState): bytes {
|
|
115
|
-
return sha256(num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[0])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[1])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[2])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[3])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[4])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[4]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[5])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[5]) + hash160(hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[0])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[1])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[2])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[4])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[5]))));
|
|
115
|
+
return sha256(num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[0])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[1])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[2])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[3])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[4])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[4]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[5])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[5]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[6])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[6]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[7])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[7]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[8])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[8]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[9])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[9]) + hash160(hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[0])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[1])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[2])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[4])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[5])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[6])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[7])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[8])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[9]))));
|
|
116
116
|
}
|
|
117
117
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[[],[],[],[],[],[[8,0,5,13]],[[2,0,8,2],[18,0,8,9],[35,0,8,34],[56,0,8,26],[66,0,8,57]],[[4,0,9,4],[22,0,9,23],[45,0,9,45],[51,0,9,52]],[[15,0,11,13]],[[8,0,12,24],[12,0,12,12],[24,0,12,24],[28,0,12,28],[34,0,12,35],[53,0,12,53]],[[8,0,13,6],[16,0,13,13],[26,0,13,13],[29,0,13,26]],[[8,0,15,6],[16,0,15,13],[22,0,15,20],[36,0,15,33],[39,0,15,13],[42,0,15,39]],[[8,0,16,6],[16,0,16,13],[22,0,16,20],[40,0,16,37],[43,0,16,13],[46,0,16,43]],[],[[
|
|
1
|
+
[[],[],[],[],[],[[8,0,5,13]],[[2,0,8,2],[18,0,8,9],[35,0,8,34],[56,0,8,26],[66,0,8,57]],[[4,0,9,4],[22,0,9,23],[45,0,9,45],[51,0,9,52]],[[15,0,11,13]],[[8,0,12,24],[12,0,12,12],[24,0,12,24],[28,0,12,28],[34,0,12,35],[53,0,12,53]],[[8,0,13,6],[16,0,13,13],[26,0,13,13],[29,0,13,26]],[[8,0,15,6],[16,0,15,13],[22,0,15,20],[36,0,15,33],[39,0,15,13],[42,0,15,39]],[[8,0,16,6],[16,0,16,13],[22,0,16,20],[40,0,16,37],[43,0,16,13],[46,0,16,43]],[],[[16,0,19,13]],[[8,0,21,26],[12,0,21,12],[26,0,21,26],[32,0,21,33],[52,0,21,52]],[[8,0,22,6],[16,0,22,13],[28,0,22,13],[31,0,22,28],[32,0,22,29],[34,0,22,13],[37,0,22,34],[49,0,22,34],[51,0,22,48]],[],[[4,0,25,4],[11,0,25,24]],[],[[2,0,34,2],[18,0,34,9],[40,0,35,18],[45,0,35,18],[49,0,35,4]],[[4,0,38,4],[12,0,38,11],[25,0,38,24],[28,0,38,11],[31,0,38,30],[44,0,38,43]],[[4,0,39,4],[12,0,39,11],[25,0,39,24],[28,0,39,11],[31,0,39,30],[44,0,39,43]],[[4,0,40,4],[12,0,40,11],[25,0,40,24],[28,0,40,11],[31,0,40,30],[44,0,40,43]],[[4,0,41,4],[12,0,41,11],[25,0,41,24],[28,0,41,11],[31,0,41,30],[44,0,41,43]],[[4,0,42,4],[12,0,42,11],[25,0,42,24],[28,0,42,11],[31,0,42,30],[44,0,42,43]],[[4,0,43,4],[12,0,43,11],[25,0,43,24],[28,0,43,11],[31,0,43,30],[44,0,43,43]],[],[],[],[],[],[],[],[],[]]
|
|
@@ -12,7 +12,7 @@ library CAT20GuardStateLib {
|
|
|
12
12
|
require(_state.tokenAmounts[i] >= 0);
|
|
13
13
|
require(_state.tokenBurnAmounts[i] >= 0);
|
|
14
14
|
}
|
|
15
|
-
loop (
|
|
15
|
+
loop (10) : i {
|
|
16
16
|
int scriptIndex = _state.tokenScriptIndexes[i];
|
|
17
17
|
require(scriptIndex >= -1 && scriptIndex < 4);
|
|
18
18
|
}
|
|
@@ -28,9 +28,9 @@ library CAT20GuardStateLib {
|
|
|
28
28
|
return true;
|
|
29
29
|
}
|
|
30
30
|
static function serializeState(CAT20GuardConstState __scrypt_ts_curState): bytes {
|
|
31
|
-
return num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[0])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[1])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[2])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[3])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[4])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[4]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[5])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[5]) + hash160(hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[0])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[1])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[2])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[4])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[5])));
|
|
31
|
+
return num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[0])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[1])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[2])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[3])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[4])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[4]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[5])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[5]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[6])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[6]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[7])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[7]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[8])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[8]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[9])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[9]) + hash160(hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[0])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[1])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[2])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[4])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[5])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[6])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[7])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[8])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[9])));
|
|
32
32
|
}
|
|
33
33
|
static function stateHash(CAT20GuardConstState __scrypt_ts_curState): bytes {
|
|
34
|
-
return sha256(num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[0])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[1])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[2])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[3])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[4])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[4]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[5])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[5]) + hash160(hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[0])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[1])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[2])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[4])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[5]))));
|
|
34
|
+
return sha256(num2bin(len(__scrypt_ts_curState.tokenScriptHashes[0]), 2) + __scrypt_ts_curState.tokenScriptHashes[0] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[1]), 2) + __scrypt_ts_curState.tokenScriptHashes[1] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[2]), 2) + __scrypt_ts_curState.tokenScriptHashes[2] + num2bin(len(__scrypt_ts_curState.tokenScriptHashes[3]), 2) + __scrypt_ts_curState.tokenScriptHashes[3] + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[0])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[1])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[2])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenBurnAmounts[3])), 2) + pack(__scrypt_ts_curState.tokenBurnAmounts[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[0])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[0]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[1])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[1]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[2])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[2]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[3])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[3]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[4])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[4]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[5])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[5]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[6])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[6]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[7])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[7]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[8])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[8]) + num2bin(len(pack(__scrypt_ts_curState.tokenScriptIndexes[9])), 2) + pack(__scrypt_ts_curState.tokenScriptIndexes[9]) + hash160(hash160(__scrypt_ts_curState.tokenScriptHashes[0]) + hash160(__scrypt_ts_curState.tokenScriptHashes[1]) + hash160(__scrypt_ts_curState.tokenScriptHashes[2]) + hash160(__scrypt_ts_curState.tokenScriptHashes[3]) + hash160(pack(__scrypt_ts_curState.tokenAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[0])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[1])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[2])) + hash160(pack(__scrypt_ts_curState.tokenBurnAmounts[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[0])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[1])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[2])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[3])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[4])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[5])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[6])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[7])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[8])) + hash160(pack(__scrypt_ts_curState.tokenScriptIndexes[9]))));
|
|
35
35
|
}
|
|
36
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[[],[[7,0,30,35]],[[2,0,36,21],[7,0,36,21],[11,0,36,2]],[[2,0,42,16],[5,0,42,16],[9,0,42,2]],[[2,0,47,20],[5,0,47,20],[9,0,47,2]],[[2,0,62,22],[5,0,62,22],[
|
|
1
|
+
[[],[[7,0,30,35]],[[2,0,36,21],[7,0,36,21],[11,0,36,2]],[[2,0,42,16],[5,0,42,16],[9,0,42,2]],[[2,0,47,20],[5,0,47,20],[9,0,47,2]],[[2,0,62,22],[5,0,62,22],[10,0,62,2]],[],[],[[7,0,8,25]],[[2,0,9,7],[8,0,9,2]],[[2,0,11,13],[8,0,11,2]],[[2,0,13,10],[6,0,13,2]],[],[],[[7,0,120,0]],[[2,0,121,7],[8,0,121,2]],[[2,0,124,19],[8,0,124,2]],[],[],[[7,0,81,0]],[[2,0,82,7],[8,0,82,2]],[[2,0,83,8],[8,0,83,2]],[[2,0,84,10],[8,0,84,2]],[[2,0,85,12],[6,0,85,2]],[[2,0,86,13],[8,0,86,2]],[],[],[[7,0,89,0]],[[2,0,90,7],[8,0,90,2]],[[2,0,92,8],[8,0,92,2]],[[2,0,94,10],[8,0,94,2]],[[2,0,96,12],[6,0,96,2]],[[2,0,98,13],[8,0,98,2]],[[2,0,101,7],[6,0,101,2]],[[2,0,103,9],[6,0,103,2]],[[2,0,105,11],[6,0,105,2]],[[2,0,107,16],[8,0,107,2]],[],[],[[7,0,110,0]],[[2,0,111,7],[8,0,111,2]],[[2,0,113,19],[8,0,113,2]],[[2,0,115,19],[7,0,115,2]],[[2,0,117,18],[6,0,117,2]],[]]
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 10,
|
|
3
3
|
"compilerVersion": "1.21.0+commit.2ada378",
|
|
4
|
-
"contract": "
|
|
5
|
-
"md5": "
|
|
4
|
+
"contract": "_opcat_labs_cat_sdk_1_0_4__rs__CAT20",
|
|
5
|
+
"md5": "d46641788ec786994a2c393c5669566e",
|
|
6
6
|
"structs": [
|
|
7
7
|
{
|
|
8
|
-
"name": "
|
|
8
|
+
"name": "_opcat_labs_cat_sdk_1_0_4__rs__CAT20GuardConstState",
|
|
9
9
|
"params": [
|
|
10
10
|
{
|
|
11
11
|
"name": "tokenScriptHashes",
|
|
@@ -21,13 +21,13 @@
|
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
23
|
"name": "tokenScriptIndexes",
|
|
24
|
-
"type": "int[
|
|
24
|
+
"type": "int[10]"
|
|
25
25
|
}
|
|
26
26
|
],
|
|
27
27
|
"genericTypes": []
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
|
-
"name": "
|
|
30
|
+
"name": "_opcat_labs_cat_sdk_1_0_4__rs__CAT20State",
|
|
31
31
|
"params": [
|
|
32
32
|
{
|
|
33
33
|
"name": "tag",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"genericTypes": []
|
|
46
46
|
},
|
|
47
47
|
{
|
|
48
|
-
"name": "
|
|
48
|
+
"name": "_opcat_labs_cat_sdk_1_0_4__rs__CAT20ClosedMinterState",
|
|
49
49
|
"params": [
|
|
50
50
|
{
|
|
51
51
|
"name": "tag",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"genericTypes": []
|
|
60
60
|
},
|
|
61
61
|
{
|
|
62
|
-
"name": "
|
|
62
|
+
"name": "_opcat_labs_cat_sdk_1_0_4__rs__ClosedMinterCAT20Meta",
|
|
63
63
|
"params": [
|
|
64
64
|
{
|
|
65
65
|
"name": "tag",
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
"genericTypes": []
|
|
86
86
|
},
|
|
87
87
|
{
|
|
88
|
-
"name": "
|
|
88
|
+
"name": "_opcat_labs_cat_sdk_1_0_4__rs__OpenMinterCAT20Meta",
|
|
89
89
|
"params": [
|
|
90
90
|
{
|
|
91
91
|
"name": "tag",
|
|
@@ -127,7 +127,7 @@
|
|
|
127
127
|
"genericTypes": []
|
|
128
128
|
},
|
|
129
129
|
{
|
|
130
|
-
"name": "
|
|
130
|
+
"name": "_opcat_labs_cat_sdk_1_0_4__rs__CAT20OpenMinterState",
|
|
131
131
|
"params": [
|
|
132
132
|
{
|
|
133
133
|
"name": "tag",
|
|
@@ -149,7 +149,7 @@
|
|
|
149
149
|
"genericTypes": []
|
|
150
150
|
},
|
|
151
151
|
{
|
|
152
|
-
"name": "
|
|
152
|
+
"name": "_opcat_labs_scrypt_ts_opcat_1_0_5__rs__TxOut",
|
|
153
153
|
"params": [
|
|
154
154
|
{
|
|
155
155
|
"name": "scriptHash",
|
|
@@ -167,7 +167,7 @@
|
|
|
167
167
|
"genericTypes": []
|
|
168
168
|
},
|
|
169
169
|
{
|
|
170
|
-
"name": "
|
|
170
|
+
"name": "_opcat_labs_scrypt_ts_opcat_1_0_5__rs__TxIn",
|
|
171
171
|
"params": [
|
|
172
172
|
{
|
|
173
173
|
"name": "prevTxHash",
|
|
@@ -189,7 +189,7 @@
|
|
|
189
189
|
"genericTypes": []
|
|
190
190
|
},
|
|
191
191
|
{
|
|
192
|
-
"name": "
|
|
192
|
+
"name": "_opcat_labs_scrypt_ts_opcat_1_0_5__rs__TxHashPreimage",
|
|
193
193
|
"params": [
|
|
194
194
|
{
|
|
195
195
|
"name": "version",
|
|
@@ -211,11 +211,11 @@
|
|
|
211
211
|
"genericTypes": []
|
|
212
212
|
},
|
|
213
213
|
{
|
|
214
|
-
"name": "
|
|
214
|
+
"name": "_opcat_labs_scrypt_ts_opcat_1_0_5__rs__BacktraceInfo",
|
|
215
215
|
"params": [
|
|
216
216
|
{
|
|
217
217
|
"name": "prevTxInput",
|
|
218
|
-
"type": "
|
|
218
|
+
"type": "_opcat_labs_scrypt_ts_opcat_1_0_5__rs__TxIn"
|
|
219
219
|
},
|
|
220
220
|
{
|
|
221
221
|
"name": "prevTxInputIndex",
|
|
@@ -223,13 +223,13 @@
|
|
|
223
223
|
},
|
|
224
224
|
{
|
|
225
225
|
"name": "prevPrevTxPreimage",
|
|
226
|
-
"type": "
|
|
226
|
+
"type": "_opcat_labs_scrypt_ts_opcat_1_0_5__rs__TxHashPreimage"
|
|
227
227
|
}
|
|
228
228
|
],
|
|
229
229
|
"genericTypes": []
|
|
230
230
|
},
|
|
231
231
|
{
|
|
232
|
-
"name": "
|
|
232
|
+
"name": "_opcat_labs_scrypt_ts_opcat_1_0_5__rs__SHPreimage",
|
|
233
233
|
"params": [
|
|
234
234
|
{
|
|
235
235
|
"name": "nVersion",
|
|
@@ -291,7 +291,7 @@
|
|
|
291
291
|
"genericTypes": []
|
|
292
292
|
},
|
|
293
293
|
{
|
|
294
|
-
"name": "
|
|
294
|
+
"name": "_opcat_labs_scrypt_ts_opcat_1_0_5__rs__Outpoint",
|
|
295
295
|
"params": [
|
|
296
296
|
{
|
|
297
297
|
"name": "txHash",
|
|
@@ -305,7 +305,7 @@
|
|
|
305
305
|
"genericTypes": []
|
|
306
306
|
},
|
|
307
307
|
{
|
|
308
|
-
"name": "
|
|
308
|
+
"name": "_opcat_labs_scrypt_ts_opcat_1_0_5__rs__ChainTxVerifyResponse",
|
|
309
309
|
"params": [
|
|
310
310
|
{
|
|
311
311
|
"name": "prevPrevScript",
|
|
@@ -319,7 +319,7 @@
|
|
|
319
319
|
"genericTypes": []
|
|
320
320
|
},
|
|
321
321
|
{
|
|
322
|
-
"name": "
|
|
322
|
+
"name": "_opcat_labs_scrypt_ts_opcat_1_0_5__rs__ReadVarintResult",
|
|
323
323
|
"params": [
|
|
324
324
|
{
|
|
325
325
|
"name": "data",
|
|
@@ -333,7 +333,7 @@
|
|
|
333
333
|
"genericTypes": []
|
|
334
334
|
},
|
|
335
335
|
{
|
|
336
|
-
"name": "
|
|
336
|
+
"name": "_opcat_labs_cat_sdk_1_0_4__rs__ContractUnlockArgs",
|
|
337
337
|
"params": [
|
|
338
338
|
{
|
|
339
339
|
"name": "userPubKey",
|
|
@@ -353,50 +353,50 @@
|
|
|
353
353
|
],
|
|
354
354
|
"library": [
|
|
355
355
|
{
|
|
356
|
-
"name": "
|
|
356
|
+
"name": "_opcat_labs_cat_sdk_1_0_4__rs__OwnerUtils",
|
|
357
357
|
"params": [],
|
|
358
358
|
"properties": [],
|
|
359
359
|
"genericTypes": []
|
|
360
360
|
},
|
|
361
361
|
{
|
|
362
|
-
"name": "
|
|
362
|
+
"name": "_opcat_labs_scrypt_ts_opcat_1_0_5__rs__TxUtils",
|
|
363
363
|
"params": [],
|
|
364
364
|
"properties": [],
|
|
365
365
|
"genericTypes": []
|
|
366
366
|
},
|
|
367
367
|
{
|
|
368
|
-
"name": "
|
|
368
|
+
"name": "_opcat_labs_scrypt_ts_opcat_1_0_5__rs__StateUtils",
|
|
369
369
|
"params": [],
|
|
370
370
|
"properties": [],
|
|
371
371
|
"genericTypes": []
|
|
372
372
|
},
|
|
373
373
|
{
|
|
374
|
-
"name": "
|
|
374
|
+
"name": "_opcat_labs_scrypt_ts_opcat_1_0_5__rs__ContextUtils",
|
|
375
375
|
"params": [],
|
|
376
376
|
"properties": [],
|
|
377
377
|
"genericTypes": []
|
|
378
378
|
},
|
|
379
379
|
{
|
|
380
|
-
"name": "
|
|
380
|
+
"name": "_opcat_labs_scrypt_ts_opcat_1_0_5__rs__TxHashPreimageUtils",
|
|
381
381
|
"params": [],
|
|
382
382
|
"properties": [],
|
|
383
383
|
"genericTypes": []
|
|
384
384
|
},
|
|
385
385
|
{
|
|
386
|
-
"name": "
|
|
386
|
+
"name": "_opcat_labs_cat_sdk_1_0_4__rs__CAT20GuardStateLib",
|
|
387
387
|
"params": [],
|
|
388
388
|
"properties": [],
|
|
389
389
|
"genericTypes": [],
|
|
390
|
-
"stateType": "
|
|
390
|
+
"stateType": "_opcat_labs_cat_sdk_1_0_4__rs__CAT20GuardConstState"
|
|
391
391
|
},
|
|
392
392
|
{
|
|
393
|
-
"name": "
|
|
393
|
+
"name": "_opcat_labs_scrypt_ts_opcat_1_0_5__rs__Backtrace",
|
|
394
394
|
"params": [],
|
|
395
395
|
"properties": [],
|
|
396
396
|
"genericTypes": []
|
|
397
397
|
},
|
|
398
398
|
{
|
|
399
|
-
"name": "
|
|
399
|
+
"name": "_opcat_labs_scrypt_ts_opcat_1_0_5__rs__StdUtils",
|
|
400
400
|
"params": [],
|
|
401
401
|
"properties": [],
|
|
402
402
|
"genericTypes": []
|
|
@@ -411,11 +411,11 @@
|
|
|
411
411
|
"params": [
|
|
412
412
|
{
|
|
413
413
|
"name": "unlockArgs",
|
|
414
|
-
"type": "
|
|
414
|
+
"type": "_opcat_labs_cat_sdk_1_0_4__rs__ContractUnlockArgs"
|
|
415
415
|
},
|
|
416
416
|
{
|
|
417
417
|
"name": "guardState",
|
|
418
|
-
"type": "
|
|
418
|
+
"type": "_opcat_labs_cat_sdk_1_0_4__rs__CAT20GuardConstState"
|
|
419
419
|
},
|
|
420
420
|
{
|
|
421
421
|
"name": "guardInputIndex",
|
|
@@ -423,15 +423,15 @@
|
|
|
423
423
|
},
|
|
424
424
|
{
|
|
425
425
|
"name": "backtraceInfo",
|
|
426
|
-
"type": "
|
|
426
|
+
"type": "_opcat_labs_scrypt_ts_opcat_1_0_5__rs__BacktraceInfo"
|
|
427
427
|
},
|
|
428
428
|
{
|
|
429
429
|
"name": "__scrypt_ts_shPreimage",
|
|
430
|
-
"type": "
|
|
430
|
+
"type": "_opcat_labs_scrypt_ts_opcat_1_0_5__rs__SHPreimage"
|
|
431
431
|
},
|
|
432
432
|
{
|
|
433
433
|
"name": "__scrypt_ts_curState",
|
|
434
|
-
"type": "
|
|
434
|
+
"type": "_opcat_labs_cat_sdk_1_0_4__rs__CAT20State"
|
|
435
435
|
},
|
|
436
436
|
{
|
|
437
437
|
"name": "__scrypt_ts_prevouts",
|
|
@@ -451,7 +451,7 @@
|
|
|
451
451
|
},
|
|
452
452
|
{
|
|
453
453
|
"name": "__scrypt_ts_prevTxHashPreimage",
|
|
454
|
-
"type": "
|
|
454
|
+
"type": "_opcat_labs_scrypt_ts_opcat_1_0_5__rs__TxHashPreimage"
|
|
455
455
|
}
|
|
456
456
|
]
|
|
457
457
|
},
|
|
@@ -470,8 +470,8 @@
|
|
|
470
470
|
}
|
|
471
471
|
],
|
|
472
472
|
"stateProps": [],
|
|
473
|
-
"stateType": "
|
|
473
|
+
"stateType": "_opcat_labs_cat_sdk_1_0_4__rs__CAT20State",
|
|
474
474
|
"buildType": "release",
|
|
475
|
-
"file": "
|
|
476
|
-
"hex": "512097dfd76851bf465e8f715593b217714858bbe9570ff3bd5e33840a34e20ff0262102ba79df5f8ae7604a9830f03c7933028186aede0675a16f025dc4f8be8eec0382201008ce7480da41702918d1ec8e6849ba32b4d65b1e40dc669c31a1e6306b266c0000<minterScriptHash><guardScriptHash>
|
|
475
|
+
"file": "../cat20.scrypt",
|
|
476
|
+
"hex": "512097dfd76851bf465e8f715593b217714858bbe9570ff3bd5e33840a34e20ff0262102ba79df5f8ae7604a9830f03c7933028186aede0675a16f025dc4f8be8eec0382201008ce7480da41702918d1ec8e6849ba32b4d65b1e40dc669c31a1e6306b266c0000<minterScriptHash><guardScriptHash>78547a7572537a76537a757777011e79011e79011e79011e79011e79011e79011e79011e79011e79011e79011e79011e79011e79011e795d798277549d5c79827701209d5b79827701209d5a79827701209d597900a26958798277549d5779827701209d5679827701209d5579827701209d5479827701209d5379827701209d527900a2697800a26976519c6476529c6751686476539c67516864760281009c67516864760282009c67516864760283009c675168695d795d797e5c797e5b797e5a79767600a2637609ffffffffffffffff00a16700686976586e8b806e7c7f75007f6b6d6d6d6c7e59797e58797e57797e56797e55797e54797e5379546e8b806e7c7f75007f6b6d6d6c7e5279546e8b806e7c7f75007f6b6d6d6c7e7854807e6b6d6d6d6d6d6d6d6c56797857795779210ac407f0e4bd44bfc207355a778b046225a7068fc59ee7eda43ad905aadbffc800206c266b30e6a1319c66dc401e5bd6b432ba49688eecd118297041da8074ce0810597956795679aa7676517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e01007e817757795679567956795679537956795479577995939521414136d08c5ed2bf3ba048afe6dcaebafeffffffffffffffffffffffffffffff006e6e9776009f636e936776687777777b757c6e5296a0636e7c947b757c6853798277527982775379012080517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f517f7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e7c7e01205279947f77545379935279930130787e527e54797e58797e527e53797e52797e57797e6b6d6d6d6d6d6d6c765779ac6b6d6d6d6d6d6c77695c7901197978aa7888785878827d77527997009d6e7c966b6d6d6c775e79011f7901167970aa5379886e9f69765479012478827d77527997009d6e7c967777779d537952798b0124957f7552790124957f7d7701207f75007f777801247f7501207f77768277549d767601007e817777726d726d7b755d79011b7954795279aa527988765379012078827d77527997009d6e7c967777779d6d755e79011a7954795279aa527988765379012078827d77527997009d6e7c967777779d6d7501137901137901137901197901177901177901177952798277528053797e5279827752807e52797e78827752807e787e5379a95379a97e5279a97ea97ea87777770113797653798b0120957f7553790120957f775279886d755f795f795f795f79011779011e79557955795579557953798277549d5279014878827d77527997009d6e7c967777775279014878827d77527997009d6e7c96777777557952790000527902fd009f637551675279030000019f6301fd7b757c52776752790500000000019f6301fe7b757c54776701ff7b757c587768686878537952796e8b806e7c7f75007f6b6d6d6c7e7777777e55797e780000527902fd009f637551675279030000019f6301fd7b757c52776752790500000000019f6301fe7b757c54776701ff7b757c587768686878537952796e8b806e7c7f75007f6b6d6d6c7e7777777e54797e53797eaa6b6d6d6d6c76700124950120937f7553790124957f77886d6d6d75012d79012d79012d79012d79012d79012d79012d79012d79012d796079011a790124798b0120957f750124790120957f770119795b795b795b795b795b795b795b795b795b7959797656798b0148957f7556790148957f775a795a795a795a795379827701209d76827701209d707600a2637605ffffffff00a16700686976546e8b806e7c7f75007f6b6d6d6c777e787e52797600a2637605ffffffff00a16700686976546e8b806e7c7f75007f6b6d6d6c777e6b6d6d6c88597976567956795679567953798277549d5279014878827d77527997009d6e7c967777775279014878827d77527997009d6e7c96777777557952790000527902fd009f637551675279030000019f6301fd7b757c52776752790500000000019f6301fe7b757c54776701ff7b757c587768686878537952796e8b806e7c7f75007f6b6d6d6c7e7777777e55797e780000527902fd009f637551675279030000019f6301fd7b757c52776752790500000000019f6301fe7b757c54776701ff7b757c587768686878537952796e8b806e7c7f75007f6b6d6d6c7e7777777e54797e53797eaa6b6d6d6d6c8853795a7901489558930120937f755a7901489558937f77785b797600a2637605ffffffff00a16700686976546e8b806e7c7f75007f6b6d6d6c777e787c726d726d726d726d726d726d785579876478547987675168696d6d6d6d6d6d6d014479014479014479014479014479014479014479014479014479014479014479014479014479014479014479014479014479014479014479014479014479014479013879013079014679012979012b797853796e8b0120957f75780120957f777777012279887653796e8b0120957f75780120957f777777011b79011b79011b79011b79011b79011b79011b79011b79011b79011b79011b79011b79011b79011b79011b79011b79011b79011b79011b79011b79011b79011b7901157901157901157901157953766b796c756b6d6d6c8277528001167901167901167901167953766b796c756b6d6d6c7e01167901167901167901167952766b796c756b6d6d6c827752807e01167901167901167901167952766b796c756b6d6d6c7e01167901167901167901167951766b796c756b6d6d6c827752807e01167901167901167901167951766b796c756b6d6d6c7e01167901167901167901167900766b796c756b6d6d6c827752807e01167901167901167901167900766b796c756b6d6d6c7e01127901127901127901127953766b796c756b6d6d6c827752807e01127901127901127901127953766b796c756b6d6d6c7e01127901127901127901127952766b796c756b6d6d6c827752807e01127901127901127901127952766b796c756b6d6d6c7e01127901127901127901127951766b796c756b6d6d6c827752807e01127901127901127901127951766b796c756b6d6d6c7e01127901127901127901127900766b796c756b6d6d6c827752807e01127901127901127901127900766b796c756b6d6d6c7e5e795e795e795e7953766b796c756b6d6d6c827752807e5e795e795e795e7953766b796c756b6d6d6c7e5e795e795e795e7952766b796c756b6d6d6c827752807e5e795e795e795e7952766b796c756b6d6d6c7e5e795e795e795e7951766b796c756b6d6d6c827752807e5e795e795e795e7951766b796c756b6d6d6c7e5e795e795e795e7900766b796c756b6d6d6c827752807e5e795e795e795e7900766b796c756b6d6d6c7e5a795a795a795a795a795a795a795a795a795a7959766b796c756b6d6d6d6d6d6c827752807e5a795a795a795a795a795a795a795a795a795a7959766b796c756b6d6d6d6d6d6c7e5a795a795a795a795a795a795a795a795a795a7958766b796c756b6d6d6d6d6d6c827752807e5a795a795a795a795a795a795a795a795a795a7958766b796c756b6d6d6d6d6d6c7e5a795a795a795a795a795a795a795a795a795a7957766b796c756b6d6d6d6d6d6c827752807e5a795a795a795a795a795a795a795a795a795a7957766b796c756b6d6d6d6d6d6c7e5a795a795a795a795a795a795a795a795a795a7956766b796c756b6d6d6d6d6d6c827752807e5a795a795a795a795a795a795a795a795a795a7956766b796c756b6d6d6d6d6d6c7e5a795a795a795a795a795a795a795a795a795a7955766b796c756b6d6d6d6d6d6c827752807e5a795a795a795a795a795a795a795a795a795a7955766b796c756b6d6d6d6d6d6c7e5a795a795a795a795a795a795a795a795a795a7954766b796c756b6d6d6d6d6d6c827752807e5a795a795a795a795a795a795a795a795a795a7954766b796c756b6d6d6d6d6d6c7e5a795a795a795a795a795a795a795a795a795a7953766b796c756b6d6d6d6d6d6c827752807e5a795a795a795a795a795a795a795a795a795a7953766b796c756b6d6d6d6d6d6c7e5a795a795a795a795a795a795a795a795a795a7952766b796c756b6d6d6d6d6d6c827752807e5a795a795a795a795a795a795a795a795a795a7952766b796c756b6d6d6d6d6d6c7e5a795a795a795a795a795a795a795a795a795a7951766b796c756b6d6d6d6d6d6c827752807e5a795a795a795a795a795a795a795a795a795a7951766b796c756b6d6d6d6d6d6c7e5a795a795a795a795a795a795a795a795a795a7900766b796c756b6d6d6d6d6d6c827752807e5a795a795a795a795a795a795a795a795a795a7900766b796c756b6d6d6d6d6d6c7e01167901167901167901167953766b796c756b6d6d6ca901177901177901177901177952766b796c756b6d6d6ca97e01177901177901177901177951766b796c756b6d6d6ca97e01177901177901177901177900766b796c756b6d6d6ca97e01137901137901137901137953766b796c756b6d6d6ca97e01137901137901137901137952766b796c756b6d6d6ca97e01137901137901137901137951766b796c756b6d6d6ca97e01137901137901137901137900766b796c756b6d6d6ca97e5f795f795f795f7953766b796c756b6d6d6ca97e5f795f795f795f7952766b796c756b6d6d6ca97e5f795f795f795f7951766b796c756b6d6d6ca97e5f795f795f795f7900766b796c756b6d6d6ca97e5b795b795b795b795b795b795b795b795b795b7959766b796c756b6d6d6d6d6d6ca97e5b795b795b795b795b795b795b795b795b795b7958766b796c756b6d6d6d6d6d6ca97e5b795b795b795b795b795b795b795b795b795b7957766b796c756b6d6d6d6d6d6ca97e5b795b795b795b795b795b795b795b795b795b7956766b796c756b6d6d6d6d6d6ca97e5b795b795b795b795b795b795b795b795b795b7955766b796c756b6d6d6d6d6d6ca97e5b795b795b795b795b795b795b795b795b795b7954766b796c756b6d6d6d6d6d6ca97e5b795b795b795b795b795b795b795b795b795b7953766b796c756b6d6d6d6d6d6ca97e5b795b795b795b795b795b795b795b795b795b7952766b796c756b6d6d6d6d6d6ca97e5b795b795b795b795b795b795b795b795b795b7951766b796c756b6d6d6d6d6d6ca97e5b795b795b795b795b795b795b795b795b795b7900766b796c756b6d6d6d6d6d6ca97ea97ea86b6d6d6d6d6d6d6d6d6d6d6d6c885e795e795e795e795e795e795e795e795e795e795a5e797600a269765a9f69948c766b796c756b6d6d6d6d6d6c011b79011b79011b79011b795455797600a26976549f69948c766b796c756b6d6d6c5679886d6d6d6d6d6d6d6d6d6d6d6d6d6d78827701209c63780111790147798b0120957f750147790120957f7788670147795279787676827701219d750376a91478a97e0288ac7e7778886d014679014879ad686d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d51"
|
|
477
477
|
}
|
|
@@ -12,51 +12,51 @@ 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_1_0_4__rs__CAT20 {
|
|
16
16
|
bytes minterScriptHash;
|
|
17
17
|
bytes guardScriptHash;
|
|
18
18
|
constructor(bytes minterScriptHash, bytes guardScriptHash) {
|
|
19
19
|
this.minterScriptHash = minterScriptHash;
|
|
20
20
|
this.guardScriptHash = guardScriptHash;
|
|
21
21
|
}
|
|
22
|
-
public function unlock(
|
|
23
|
-
require(Tx.checkPreimageSigHashType(
|
|
22
|
+
public function unlock(_opcat_labs_cat_sdk_1_0_4__rs__ContractUnlockArgs unlockArgs, _opcat_labs_cat_sdk_1_0_4__rs__CAT20GuardConstState guardState, int guardInputIndex, _opcat_labs_scrypt_ts_opcat_1_0_5__rs__BacktraceInfo backtraceInfo, _opcat_labs_scrypt_ts_opcat_1_0_5__rs__SHPreimage __scrypt_ts_shPreimage, _opcat_labs_cat_sdk_1_0_4__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_1_0_5__rs__TxHashPreimage __scrypt_ts_prevTxHashPreimage) {
|
|
23
|
+
require(Tx.checkPreimageSigHashType(_opcat_labs_scrypt_ts_opcat_1_0_5__rs__ContextUtils.serializeSHPreimage(__scrypt_ts_shPreimage), SigHash.ALL));
|
|
24
24
|
|
|
25
|
-
int __scrypt_ts_inputCount =
|
|
25
|
+
int __scrypt_ts_inputCount = _opcat_labs_scrypt_ts_opcat_1_0_5__rs__ContextUtils.checkSpentAmounts(__scrypt_ts_spentAmounts, __scrypt_ts_shPreimage.hashSpentAmounts);
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
_opcat_labs_scrypt_ts_opcat_1_0_5__rs__Outpoint __scrypt_ts_prevout = _opcat_labs_scrypt_ts_opcat_1_0_5__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_1_0_5__rs__ContextUtils.checkSpentScripts(__scrypt_ts_spentScriptHashes, __scrypt_ts_shPreimage.hashSpentScriptHashes, __scrypt_ts_inputCount);
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
_opcat_labs_scrypt_ts_opcat_1_0_5__rs__ContextUtils.checkSpentDataHashes(__scrypt_ts_spentDataHashes, __scrypt_ts_shPreimage.hashSpentDataHashes, __scrypt_ts_inputCount);
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
_opcat_labs_cat_sdk_1_0_4__rs__CAT20State __scrypt_ts_nextState = __scrypt_ts_curState;
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
_opcat_labs_scrypt_ts_opcat_1_0_5__rs__StateUtils.checkInputState(__scrypt_ts_shPreimage.inputIndex, _opcat_labs_cat_sdk_1_0_4__rs__CAT20.stateHash(__scrypt_ts_curState), __scrypt_ts_spentDataHashes);
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
_opcat_labs_scrypt_ts_opcat_1_0_5__rs__Backtrace.checkPrevTxHashPreimage(__scrypt_ts_prevTxHashPreimage, __scrypt_ts_prevouts, __scrypt_ts_shPreimage.inputIndex);
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
_opcat_labs_scrypt_ts_opcat_1_0_5__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(__scrypt_ts_nextState.ownerAddr == __scrypt_ts_spentScriptHashes[unlockArgs.contractInputIndex * 32 : (unlockArgs.contractInputIndex + 1) * 32]);
|
|
43
43
|
} else {
|
|
44
|
-
|
|
44
|
+
_opcat_labs_cat_sdk_1_0_4__rs__OwnerUtils.checkUserOwner(unlockArgs.userPubKey, __scrypt_ts_nextState.ownerAddr);
|
|
45
45
|
require(checkSig(unlockArgs.userSig, unlockArgs.userPubKey));
|
|
46
46
|
}
|
|
47
47
|
require(true);
|
|
48
48
|
}
|
|
49
|
-
function checkGuard(
|
|
50
|
-
require(
|
|
51
|
-
require(
|
|
49
|
+
function checkGuard(_opcat_labs_cat_sdk_1_0_4__rs__CAT20GuardConstState guardState, bytes t_cat20ScriptHash, int t_cat20InputIndexVal, int guardInputIndexVal, bytes t_spentScriptsCtx, bytes t_spentDataHashesCtx) : bool {
|
|
50
|
+
require(_opcat_labs_scrypt_ts_opcat_1_0_5__rs__ContextUtils.getSpentScriptHash(t_spentScriptsCtx, guardInputIndexVal) == this.guardScriptHash);
|
|
51
|
+
require(_opcat_labs_scrypt_ts_opcat_1_0_5__rs__ContextUtils.getSpentDataHash(t_spentDataHashesCtx, guardInputIndexVal) == _opcat_labs_cat_sdk_1_0_4__rs__CAT20GuardStateLib.stateHash(guardState));
|
|
52
52
|
int tokenScriptIndex = guardState.tokenScriptIndexes[(t_cat20InputIndexVal)];
|
|
53
53
|
require(guardState.tokenScriptHashes[(tokenScriptIndex)] == t_cat20ScriptHash);
|
|
54
54
|
return true;
|
|
55
55
|
}
|
|
56
|
-
static function serializeState(
|
|
56
|
+
static function serializeState(_opcat_labs_cat_sdk_1_0_4__rs__CAT20State __scrypt_ts_curState): bytes {
|
|
57
57
|
return num2bin(len(__scrypt_ts_curState.tag), 2) + __scrypt_ts_curState.tag + 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.tag) + hash160(__scrypt_ts_curState.ownerAddr) + hash160(pack(__scrypt_ts_curState.amount)));
|
|
58
58
|
}
|
|
59
|
-
static function stateHash(
|
|
59
|
+
static function stateHash(_opcat_labs_cat_sdk_1_0_4__rs__CAT20State __scrypt_ts_curState): bytes {
|
|
60
60
|
return sha256(num2bin(len(__scrypt_ts_curState.tag), 2) + __scrypt_ts_curState.tag + 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.tag) + hash160(__scrypt_ts_curState.ownerAddr) + hash160(pack(__scrypt_ts_curState.amount))));
|
|
61
61
|
}
|
|
62
62
|
}
|