tx · 55sNeuNEZttPuSXm3PjEEJR3xoVkXSyQbpbMgmtKRNxk 3MswZg1fApcC9ASPGWTzXVF1e36xrWrj73n: -0.01000000 Waves 2022.06.21 18:26 [2106336] smart account 3MswZg1fApcC9ASPGWTzXVF1e36xrWrj73n > SELF 0.00000000 Waves
{ "type": 13, "id": "55sNeuNEZttPuSXm3PjEEJR3xoVkXSyQbpbMgmtKRNxk", "fee": 1000000, "feeAssetId": null, "timestamp": 1655825162560, "version": 2, "chainId": 84, "sender": "3MswZg1fApcC9ASPGWTzXVF1e36xrWrj73n", "senderPublicKey": "44j2xzKGrREbsdWj2Rqjw9nddZuT8ShaBrK67Q6rJZvC", "proofs": [ "4RRFtGa7RJ9x5iTnFAKp7S1GwsNKVBqxXKJdhaqAB4fgcQXwBnbWy9WVeRStFS9JcnZyft5MCHybeuELVMqgLAHz" ], "script": "base64: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RW50cnkAAAACCQEAAAARa2V5Q29udHJvbEFkZHJlc3MAAAAABQAAABBjb250cm9sQWRkcmVzczU4CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA5rZXlSZXN0QWRkcmVzcwAAAAAFAAAADXJlc3RBZGRyZXNzNTgFAAAAA25pbAAAAAFpAQAAABVzdGFrZU5zYnRQYWdlUkVBRE9OTFkAAAACAAAAEXVzZXJBZGRyZXNzU3RyT3B0AAAAC25zYnRBbXREaWZmBAAAAAlnbnNidEluZm8JAQAAAAhhc1N0cmluZwAAAAEJAAP8AAAABAUAAAAHcmVzdEFjYwIAAAARZ25zYnRJbmZvUkVBRE9OTFkJAARMAAAAAgUAAAARdXNlckFkZHJlc3NTdHJPcHQJAARMAAAAAgUAAAALbnNidEFtdERpZmYFAAAAA25pbAUAAAADbmlsBAAAAAhzd2FwSW5mbwkBAAAACGFzU3RyaW5nAAAAAQkAA/wAAAAEBQAAAAdyZXN0QWNjAgAAABBzd2FwSW5mb1JFQURPTkxZCQAETAAAAAIFAAAAEXVzZXJBZGRyZXNzU3RyT3B0BQAAAANuaWwFAAAAA25pbAkABRQAAAACBQAAAANuaWwJAQAAAAtwcm9kdWNlSnNvbgAAAAEJAARMAAAAAgIAAAARZ25zYnRJbmZvUkVBRE9OTFkJAARMAAAAAgUAAAAJZ25zYnRJbmZvCQAETAAAAAICAAAAEHN3YXBJbmZvUkVBRE9OTFkJAARMAAAAAgUAAAAIc3dhcEluZm8FAAAAA25pbAAAAAFpAQAAABNidXlOc2J0UGFnZVJFQURPTkxZAAAAAQAAABF1c2VyQWRkcmVzc1N0ck9wdAQAAAAJZ25zYnRJbmZvCQEAAAAIYXNTdHJpbmcAAAABCQAD/AAAAAQFAAAAB3Jlc3RBY2MCAAAAEWduc2J0SW5mb1JFQURPTkxZCQAETAAAAAIFAAAAEXVzZXJBZGRyZXNzU3RyT3B0CQAETAAAAAIAAAAAAAAAAAAFAAAAA25pbAUAAAADbmlsBAAAAA1uZXV0cmlub1N0YXRzCQEAAAAIYXNTdHJpbmcAAAABCQAD/AAAAAQFAAAAB3Jlc3RBY2MCAAAAFW5ldXRyaW5vU3RhdHNSRUFET05MWQUAAAADbmlsBQAA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", "height": 2106336, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4gXEvChp3mrge7wS26tjG74SN1rPCqUtfQD2wFSFU4eh Next: none Diff:
Old | New | Differences | |
---|---|---|---|
91 | 91 | let funcsIndexes = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] | |
92 | 92 | let paramIndexes = [1, 3, 5, 7, 9, 11] | |
93 | 93 | let payloadArr = split(payload, SEP) | |
94 | - | func invokesAgregator (accum,funcIdx) = { | |
95 | - | let call = payloadArr[funcIdx] | |
96 | - | let callArr = split(call, "+") | |
97 | - | let address = addressFromStringValue(callArr[0]) | |
98 | - | let funcName = callArr[1] | |
99 | - | let paramsArr = split(callArr[2], "+") | |
100 | - | func paramsAgregator (paramsAcc,paramIdx) = { | |
101 | - | let p = if ((paramsArr[(paramIdx - 1)] == "s")) | |
102 | - | then paramsArr[paramIdx] | |
103 | - | else parseIntValue(paramsArr[paramIdx]) | |
104 | - | (paramsAcc :+ p) | |
94 | + | let payloadSize = size(payloadArr) | |
95 | + | func invokesAgregator (accum,funcIdx) = if ((funcIdx >= payloadSize)) | |
96 | + | then accum | |
97 | + | else { | |
98 | + | let call = payloadArr[funcIdx] | |
99 | + | let callArr = split(call, "+") | |
100 | + | let address = addressFromStringValue(callArr[0]) | |
101 | + | let funcName = callArr[1] | |
102 | + | let paramsArr = split(callArr[2], ":") | |
103 | + | let paramsSize = size(paramsArr) | |
104 | + | func paramsAgregator (paramsAcc,paramIdx) = if ((paramIdx >= paramsSize)) | |
105 | + | then paramsAcc | |
106 | + | else { | |
107 | + | let p = if ((paramsArr[(paramIdx - 1)] == "s")) | |
108 | + | then paramsArr[paramIdx] | |
109 | + | else parseIntValue(paramsArr[paramIdx]) | |
110 | + | (paramsAcc :+ p) | |
111 | + | } | |
112 | + | ||
113 | + | let params = { | |
114 | + | let $l = paramIndexes | |
115 | + | let $s = size($l) | |
116 | + | let $acc0 = nil | |
117 | + | func $f0_1 ($a,$i) = if (($i >= $s)) | |
118 | + | then $a | |
119 | + | else paramsAgregator($a, $l[$i]) | |
120 | + | ||
121 | + | func $f0_2 ($a,$i) = if (($i >= $s)) | |
122 | + | then $a | |
123 | + | else throw("List size exceeds 6") | |
124 | + | ||
125 | + | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6) | |
126 | + | } | |
127 | + | let result = asString(invoke(address, funcName, params, nil)) | |
128 | + | (accum ++ [funcName, result]) | |
105 | 129 | } | |
106 | - | ||
107 | - | let params = { | |
108 | - | let $l = paramIndexes | |
109 | - | let $s = size($l) | |
110 | - | let $acc0 = nil | |
111 | - | func $f0_1 ($a,$i) = if (($i >= $s)) | |
112 | - | then $a | |
113 | - | else paramsAgregator($a, $l[$i]) | |
114 | - | ||
115 | - | func $f0_2 ($a,$i) = if (($i >= $s)) | |
116 | - | then $a | |
117 | - | else throw("List size exceeds 6") | |
118 | - | ||
119 | - | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6) | |
120 | - | } | |
121 | - | let result = asString(invoke(address, funcName, params, nil)) | |
122 | - | (accum ++ [funcName, result]) | |
123 | - | } | |
124 | 130 | ||
125 | 131 | let invokesResults = { | |
126 | 132 | let $l = funcsIndexes |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let SEP = "__" | |
5 | 5 | ||
6 | 6 | func keyControlAddress () = "%s%s__config__controlAddress" | |
7 | 7 | ||
8 | 8 | ||
9 | 9 | func keyRestAddress () = "%s%s__config__restAddress" | |
10 | 10 | ||
11 | 11 | ||
12 | 12 | func getStrOrFail (key) = valueOrErrorMessage(getString(this, key), (("Mandatory this." + key) + " is not defined")) | |
13 | 13 | ||
14 | 14 | ||
15 | 15 | func getAddressOrFail (key) = valueOrErrorMessage(addressFromString(getStrOrFail(key)), ("fail to parse address for this." + key)) | |
16 | 16 | ||
17 | 17 | ||
18 | 18 | func asString (val) = match val { | |
19 | 19 | case valStr: String => | |
20 | 20 | valStr | |
21 | 21 | case _ => | |
22 | 22 | throw("fail to cast into String") | |
23 | 23 | } | |
24 | 24 | ||
25 | 25 | ||
26 | 26 | func produceJson (strMap) = { | |
27 | 27 | let indexes = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] | |
28 | 28 | let length = size(strMap) | |
29 | 29 | if (((length % 2) != 0)) | |
30 | 30 | then throw("only even args size is accepeted") | |
31 | 31 | else if ((length > size(indexes))) | |
32 | 32 | then throw(("strMap length is greater then " + toString(size(indexes)))) | |
33 | 33 | else { | |
34 | 34 | func produceJson (jsonAccum,nextIdx) = if (if (((nextIdx % 2) == 0)) | |
35 | 35 | then (length >= (nextIdx + 1)) | |
36 | 36 | else false) | |
37 | 37 | then (((((jsonAccum + " | |
38 | 38 | \"") + strMap[nextIdx]) + "\": \"") + strMap[(nextIdx + 1)]) + "\",") | |
39 | 39 | else jsonAccum | |
40 | 40 | ||
41 | 41 | let preJsonResult = { | |
42 | 42 | let $l = indexes | |
43 | 43 | let $s = size($l) | |
44 | 44 | let $acc0 = "" | |
45 | 45 | func $f0_1 ($a,$i) = if (($i >= $s)) | |
46 | 46 | then $a | |
47 | 47 | else produceJson($a, $l[$i]) | |
48 | 48 | ||
49 | 49 | func $f0_2 ($a,$i) = if (($i >= $s)) | |
50 | 50 | then $a | |
51 | 51 | else throw("List size exceeds 20") | |
52 | 52 | ||
53 | 53 | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20) | |
54 | 54 | } | |
55 | 55 | (("{" + dropRight(preJsonResult, 1)) + "}") | |
56 | 56 | } | |
57 | 57 | } | |
58 | 58 | ||
59 | 59 | ||
60 | 60 | let controlAcc = getAddressOrFail(keyControlAddress()) | |
61 | 61 | ||
62 | 62 | let restAcc = getAddressOrFail(keyRestAddress()) | |
63 | 63 | ||
64 | 64 | @Callable(i) | |
65 | 65 | func constructor (controlAddress58,restAddress58) = if ((i.caller != this)) | |
66 | 66 | then throw("not authorized") | |
67 | 67 | else [StringEntry(keyControlAddress(), controlAddress58), StringEntry(keyRestAddress(), restAddress58)] | |
68 | 68 | ||
69 | 69 | ||
70 | 70 | ||
71 | 71 | @Callable(i) | |
72 | 72 | func stakeNsbtPageREADONLY (userAddressStrOpt,nsbtAmtDiff) = { | |
73 | 73 | let gnsbtInfo = asString(invoke(restAcc, "gnsbtInfoREADONLY", [userAddressStrOpt, nsbtAmtDiff], nil)) | |
74 | 74 | let swapInfo = asString(invoke(restAcc, "swapInfoREADONLY", [userAddressStrOpt], nil)) | |
75 | 75 | $Tuple2(nil, produceJson(["gnsbtInfoREADONLY", gnsbtInfo, "swapInfoREADONLY", swapInfo])) | |
76 | 76 | } | |
77 | 77 | ||
78 | 78 | ||
79 | 79 | ||
80 | 80 | @Callable(i) | |
81 | 81 | func buyNsbtPageREADONLY (userAddressStrOpt) = { | |
82 | 82 | let gnsbtInfo = asString(invoke(restAcc, "gnsbtInfoREADONLY", [userAddressStrOpt, 0], nil)) | |
83 | 83 | let neutrinoStats = asString(invoke(restAcc, "neutrinoStatsREADONLY", nil, nil)) | |
84 | 84 | $Tuple2(nil, produceJson(["gnsbtInfoREADONLY", gnsbtInfo, "neutrinoStatsREADONLY", neutrinoStats])) | |
85 | 85 | } | |
86 | 86 | ||
87 | 87 | ||
88 | 88 | ||
89 | 89 | @Callable(i) | |
90 | 90 | func genericREADONLY (payload) = { | |
91 | 91 | let funcsIndexes = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] | |
92 | 92 | let paramIndexes = [1, 3, 5, 7, 9, 11] | |
93 | 93 | let payloadArr = split(payload, SEP) | |
94 | - | func invokesAgregator (accum,funcIdx) = { | |
95 | - | let call = payloadArr[funcIdx] | |
96 | - | let callArr = split(call, "+") | |
97 | - | let address = addressFromStringValue(callArr[0]) | |
98 | - | let funcName = callArr[1] | |
99 | - | let paramsArr = split(callArr[2], "+") | |
100 | - | func paramsAgregator (paramsAcc,paramIdx) = { | |
101 | - | let p = if ((paramsArr[(paramIdx - 1)] == "s")) | |
102 | - | then paramsArr[paramIdx] | |
103 | - | else parseIntValue(paramsArr[paramIdx]) | |
104 | - | (paramsAcc :+ p) | |
94 | + | let payloadSize = size(payloadArr) | |
95 | + | func invokesAgregator (accum,funcIdx) = if ((funcIdx >= payloadSize)) | |
96 | + | then accum | |
97 | + | else { | |
98 | + | let call = payloadArr[funcIdx] | |
99 | + | let callArr = split(call, "+") | |
100 | + | let address = addressFromStringValue(callArr[0]) | |
101 | + | let funcName = callArr[1] | |
102 | + | let paramsArr = split(callArr[2], ":") | |
103 | + | let paramsSize = size(paramsArr) | |
104 | + | func paramsAgregator (paramsAcc,paramIdx) = if ((paramIdx >= paramsSize)) | |
105 | + | then paramsAcc | |
106 | + | else { | |
107 | + | let p = if ((paramsArr[(paramIdx - 1)] == "s")) | |
108 | + | then paramsArr[paramIdx] | |
109 | + | else parseIntValue(paramsArr[paramIdx]) | |
110 | + | (paramsAcc :+ p) | |
111 | + | } | |
112 | + | ||
113 | + | let params = { | |
114 | + | let $l = paramIndexes | |
115 | + | let $s = size($l) | |
116 | + | let $acc0 = nil | |
117 | + | func $f0_1 ($a,$i) = if (($i >= $s)) | |
118 | + | then $a | |
119 | + | else paramsAgregator($a, $l[$i]) | |
120 | + | ||
121 | + | func $f0_2 ($a,$i) = if (($i >= $s)) | |
122 | + | then $a | |
123 | + | else throw("List size exceeds 6") | |
124 | + | ||
125 | + | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6) | |
126 | + | } | |
127 | + | let result = asString(invoke(address, funcName, params, nil)) | |
128 | + | (accum ++ [funcName, result]) | |
105 | 129 | } | |
106 | - | ||
107 | - | let params = { | |
108 | - | let $l = paramIndexes | |
109 | - | let $s = size($l) | |
110 | - | let $acc0 = nil | |
111 | - | func $f0_1 ($a,$i) = if (($i >= $s)) | |
112 | - | then $a | |
113 | - | else paramsAgregator($a, $l[$i]) | |
114 | - | ||
115 | - | func $f0_2 ($a,$i) = if (($i >= $s)) | |
116 | - | then $a | |
117 | - | else throw("List size exceeds 6") | |
118 | - | ||
119 | - | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6) | |
120 | - | } | |
121 | - | let result = asString(invoke(address, funcName, params, nil)) | |
122 | - | (accum ++ [funcName, result]) | |
123 | - | } | |
124 | 130 | ||
125 | 131 | let invokesResults = { | |
126 | 132 | let $l = funcsIndexes | |
127 | 133 | let $s = size($l) | |
128 | 134 | let $acc0 = nil | |
129 | 135 | func $f0_1 ($a,$i) = if (($i >= $s)) | |
130 | 136 | then $a | |
131 | 137 | else invokesAgregator($a, $l[$i]) | |
132 | 138 | ||
133 | 139 | func $f0_2 ($a,$i) = if (($i >= $s)) | |
134 | 140 | then $a | |
135 | 141 | else throw("List size exceeds 10") | |
136 | 142 | ||
137 | 143 | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
138 | 144 | } | |
139 | 145 | $Tuple2(nil, produceJson(invokesResults)) | |
140 | 146 | } | |
141 | 147 | ||
142 | 148 |
github/deemru/w8io/026f985 38.10 ms ◑