tx · BxEv1PPL3j6NzwwgZ4GCnXNj2cowPvnoAfdQQSVzAm9Y
3MwPfAfkrELWorzsNx3KyZU525FZksSmRq9: -0.01400000 Waves
2019.12.01 14:41 [789515] smart account 3MwPfAfkrELWorzsNx3KyZU525FZksSmRq9 > SELF 0.00000000 Waves
{
"type": 13,
"id": "BxEv1PPL3j6NzwwgZ4GCnXNj2cowPvnoAfdQQSVzAm9Y",
"fee": 1400000,
"feeAssetId": null,
"timestamp": 1575200519579,
"version": 1,
"sender": "3MwPfAfkrELWorzsNx3KyZU525FZksSmRq9",
"senderPublicKey": "xdeD5P7gGVng1RJJ4k7QRv7jMHJERkQnH2AJwLUV2Ju",
"proofs": [
"bmreh3xzM4ib9LVud7XdFcjFBFCZfq6nkMav1HFngRqH7XHwHteh7Xt1DKmGpp5iFcXeNW4FyiBoUjvJU8zCpXz"
],
"script": "base64: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",
"chainId": 84,
"height": 789515,
"spentComplexity": 0
}
View: original | compacted
Prev: H62kTtcZ2nW5Z1x1WkvqmpnVHYZU6gJaprRC29VnSjdn
Next: 2gYrqcJBmq3p8mtgrGdW7XNYGdNbeKSc3468BieRsLMB
Diff:
Old | New | | Differences |
---|
1 | 1 | | {-# STDLIB_VERSION 3 #-} |
---|
2 | 2 | | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
4 | | - | func get (json,key) = if (if ((take(json, 1) != "{")) |
---|
5 | | - | then (take(json, 1) != "]") |
---|
6 | | - | else false) |
---|
7 | | - | then throw("") |
---|
8 | | - | else { |
---|
9 | | - | let keyIndex = value(indexOf(json, (("\"" + key) + "\":"))) |
---|
10 | | - | let data = drop(json, ((keyIndex + size(key)) + 3)) |
---|
11 | | - | data |
---|
12 | | - | } |
---|
| 4 | + | func get (json,key) = { |
---|
| 5 | + | let keyIndex = value(indexOf(json, (("\"" + key) + "\":"))) |
---|
| 6 | + | let data = drop(json, ((keyIndex + size(key)) + 3)) |
---|
| 7 | + | data |
---|
| 8 | + | } |
---|
13 | 9 | | |
---|
14 | 10 | | |
---|
15 | | - | func getJsonBeforeKey (json,key) = if (if ((take(json, 1) != "{")) |
---|
16 | | - | then (take(json, 1) != "]") |
---|
17 | | - | else false) |
---|
18 | | - | then throw("") |
---|
19 | | - | else { |
---|
20 | | - | let keyIndex = value(indexOf(json, (("\"" + key) + "\":"))) |
---|
21 | | - | let data = take(json, ((keyIndex + size(key)) + 3)) |
---|
22 | | - | data |
---|
23 | | - | } |
---|
| 11 | + | func getJsonBeforeKey (json,key) = { |
---|
| 12 | + | let keyIndex = value(indexOf(json, (("\"" + key) + "\":"))) |
---|
| 13 | + | let data = take(json, ((keyIndex + size(key)) + 3)) |
---|
| 14 | + | data |
---|
| 15 | + | } |
---|
24 | 16 | | |
---|
25 | 17 | | |
---|
26 | | - | func getJsonAfterKey (json,key,oldValueSize) = if (if ((take(json, 1) != "{")) |
---|
27 | | - | then (take(json, 1) != "]") |
---|
28 | | - | else false) |
---|
29 | | - | then throw("") |
---|
30 | | - | else { |
---|
31 | | - | let keyIndex = value(indexOf(json, (("\"" + key) + "\":"))) |
---|
32 | | - | let data = takeRight(json, (size(json) - (((keyIndex + size(key)) + 3) + oldValueSize))) |
---|
33 | | - | data |
---|
34 | | - | } |
---|
| 18 | + | func getJsonAfterKey (json,key,oldValueSize) = { |
---|
| 19 | + | let keyIndex = value(indexOf(json, (("\"" + key) + "\":"))) |
---|
| 20 | + | let data = takeRight(json, (size(json) - (((keyIndex + size(key)) + 3) + oldValueSize))) |
---|
| 21 | + | data |
---|
| 22 | + | } |
---|
35 | 23 | | |
---|
36 | 24 | | |
---|
37 | 25 | | func getValueString (json) = take(drop(json, 1), value(indexOf(drop(json, 1), "\""))) |
---|
38 | | - | |
---|
39 | | - | |
---|
40 | | - | func getValueIntOrBool (json) = { |
---|
41 | | - | let indexSymbolOne = value(indexOf(json, "}")) |
---|
42 | | - | let indexSymbolTwo = value(indexOf(json, ",")) |
---|
43 | | - | if ((indexSymbolTwo > indexSymbolOne)) |
---|
44 | | - | then take(json, indexSymbolOne) |
---|
45 | | - | else take(json, indexSymbolTwo) |
---|
46 | | - | } |
---|
47 | | - | |
---|
48 | | - | |
---|
49 | | - | func getValueInt (json) = parseIntValue(getValueIntOrBool(json)) |
---|
50 | | - | |
---|
51 | | - | |
---|
52 | | - | func getValueBool (json) = if ((getValueIntOrBool(json) == "true")) |
---|
53 | | - | then true |
---|
54 | | - | else false |
---|
55 | 26 | | |
---|
56 | 27 | | |
---|
57 | 28 | | @Callable(i) |
---|
|
71 | 42 | | } |
---|
72 | 43 | | |
---|
73 | 44 | | |
---|
74 | | - | |
---|
75 | | - | @Callable(i) |
---|
76 | | - | func testGet (json,key) = WriteSet([DataEntry("json", get(json, key))]) |
---|
77 | | - | |
---|
78 | | - | |
---|
79 | | - | |
---|
80 | | - | @Callable(i) |
---|
81 | | - | func testGetValueString (json,key) = WriteSet([DataEntry("json", getValueString(get(json, key)))]) |
---|
82 | | - | |
---|
83 | | - | |
---|
84 | | - | |
---|
85 | | - | @Callable(i) |
---|
86 | | - | func testGetValueInt (json,key) = WriteSet([DataEntry("json", getValueInt(get(json, key)))]) |
---|
87 | | - | |
---|
88 | | - | |
---|
89 | | - | |
---|
90 | | - | @Callable(i) |
---|
91 | | - | func testGetValueBool (json,key) = WriteSet([DataEntry("json", getValueBool(get(json, key)))]) |
---|
92 | | - | |
---|
93 | | - | |
---|
Full:
Old | New | | Differences |
---|
1 | 1 | | {-# STDLIB_VERSION 3 #-} |
---|
2 | 2 | | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
4 | | - | func get (json,key) = if (if ((take(json, 1) != "{")) |
---|
5 | | - | then (take(json, 1) != "]") |
---|
6 | | - | else false) |
---|
7 | | - | then throw("") |
---|
8 | | - | else { |
---|
9 | | - | let keyIndex = value(indexOf(json, (("\"" + key) + "\":"))) |
---|
10 | | - | let data = drop(json, ((keyIndex + size(key)) + 3)) |
---|
11 | | - | data |
---|
12 | | - | } |
---|
| 4 | + | func get (json,key) = { |
---|
| 5 | + | let keyIndex = value(indexOf(json, (("\"" + key) + "\":"))) |
---|
| 6 | + | let data = drop(json, ((keyIndex + size(key)) + 3)) |
---|
| 7 | + | data |
---|
| 8 | + | } |
---|
13 | 9 | | |
---|
14 | 10 | | |
---|
15 | | - | func getJsonBeforeKey (json,key) = if (if ((take(json, 1) != "{")) |
---|
16 | | - | then (take(json, 1) != "]") |
---|
17 | | - | else false) |
---|
18 | | - | then throw("") |
---|
19 | | - | else { |
---|
20 | | - | let keyIndex = value(indexOf(json, (("\"" + key) + "\":"))) |
---|
21 | | - | let data = take(json, ((keyIndex + size(key)) + 3)) |
---|
22 | | - | data |
---|
23 | | - | } |
---|
| 11 | + | func getJsonBeforeKey (json,key) = { |
---|
| 12 | + | let keyIndex = value(indexOf(json, (("\"" + key) + "\":"))) |
---|
| 13 | + | let data = take(json, ((keyIndex + size(key)) + 3)) |
---|
| 14 | + | data |
---|
| 15 | + | } |
---|
24 | 16 | | |
---|
25 | 17 | | |
---|
26 | | - | func getJsonAfterKey (json,key,oldValueSize) = if (if ((take(json, 1) != "{")) |
---|
27 | | - | then (take(json, 1) != "]") |
---|
28 | | - | else false) |
---|
29 | | - | then throw("") |
---|
30 | | - | else { |
---|
31 | | - | let keyIndex = value(indexOf(json, (("\"" + key) + "\":"))) |
---|
32 | | - | let data = takeRight(json, (size(json) - (((keyIndex + size(key)) + 3) + oldValueSize))) |
---|
33 | | - | data |
---|
34 | | - | } |
---|
| 18 | + | func getJsonAfterKey (json,key,oldValueSize) = { |
---|
| 19 | + | let keyIndex = value(indexOf(json, (("\"" + key) + "\":"))) |
---|
| 20 | + | let data = takeRight(json, (size(json) - (((keyIndex + size(key)) + 3) + oldValueSize))) |
---|
| 21 | + | data |
---|
| 22 | + | } |
---|
35 | 23 | | |
---|
36 | 24 | | |
---|
37 | 25 | | func getValueString (json) = take(drop(json, 1), value(indexOf(drop(json, 1), "\""))) |
---|
38 | | - | |
---|
39 | | - | |
---|
40 | | - | func getValueIntOrBool (json) = { |
---|
41 | | - | let indexSymbolOne = value(indexOf(json, "}")) |
---|
42 | | - | let indexSymbolTwo = value(indexOf(json, ",")) |
---|
43 | | - | if ((indexSymbolTwo > indexSymbolOne)) |
---|
44 | | - | then take(json, indexSymbolOne) |
---|
45 | | - | else take(json, indexSymbolTwo) |
---|
46 | | - | } |
---|
47 | | - | |
---|
48 | | - | |
---|
49 | | - | func getValueInt (json) = parseIntValue(getValueIntOrBool(json)) |
---|
50 | | - | |
---|
51 | | - | |
---|
52 | | - | func getValueBool (json) = if ((getValueIntOrBool(json) == "true")) |
---|
53 | | - | then true |
---|
54 | | - | else false |
---|
55 | 26 | | |
---|
56 | 27 | | |
---|
57 | 28 | | @Callable(i) |
---|
58 | 29 | | func testUpdateJsonKeyValue (jsonKey,key,newValue) = { |
---|
59 | 30 | | let valueJSON = match getString(this, jsonKey) { |
---|
60 | 31 | | case s: String => |
---|
61 | 32 | | s |
---|
62 | 33 | | case _ => |
---|
63 | 34 | | throw("The key doesn't exist") |
---|
64 | 35 | | } |
---|
65 | 36 | | let valueBeforeJson = getJsonBeforeKey(valueJSON, key) |
---|
66 | 37 | | let valueAfterJson = getJsonAfterKey(valueJSON, key, size(get(valueJSON, key))) |
---|
67 | 38 | | let valueInJson = getValueString(get(valueJSON, key)) |
---|
68 | 39 | | if ((valueInJson == newValue)) |
---|
69 | 40 | | then throw("same value so no changes") |
---|
70 | 41 | | else WriteSet([DataEntry("newvalue", ((((valueBeforeJson + "\"") + newValue) + "\"") + valueAfterJson))]) |
---|
71 | 42 | | } |
---|
72 | 43 | | |
---|
73 | 44 | | |
---|
74 | | - | |
---|
75 | | - | @Callable(i) |
---|
76 | | - | func testGet (json,key) = WriteSet([DataEntry("json", get(json, key))]) |
---|
77 | | - | |
---|
78 | | - | |
---|
79 | | - | |
---|
80 | | - | @Callable(i) |
---|
81 | | - | func testGetValueString (json,key) = WriteSet([DataEntry("json", getValueString(get(json, key)))]) |
---|
82 | | - | |
---|
83 | | - | |
---|
84 | | - | |
---|
85 | | - | @Callable(i) |
---|
86 | | - | func testGetValueInt (json,key) = WriteSet([DataEntry("json", getValueInt(get(json, key)))]) |
---|
87 | | - | |
---|
88 | | - | |
---|
89 | | - | |
---|
90 | | - | @Callable(i) |
---|
91 | | - | func testGetValueBool (json,key) = WriteSet([DataEntry("json", getValueBool(get(json, key)))]) |
---|
92 | | - | |
---|
93 | | - | |
---|