tx · 38DkxBW3tz2ZjJyLcpyZZAeM2FDgcoaG2xDXDdhTVj88 3MzLFtW4HAnHScA7x9AoxtiiPrGPLyKdK5f: -0.01400000 Waves 2021.01.11 08:30 [1348370] smart account 3MzLFtW4HAnHScA7x9AoxtiiPrGPLyKdK5f > SELF 0.00000000 Waves
{ "type": 13, "id": "38DkxBW3tz2ZjJyLcpyZZAeM2FDgcoaG2xDXDdhTVj88", "fee": 1400000, "feeAssetId": null, "timestamp": 1610343077900, "version": 2, "chainId": 84, "sender": "3MzLFtW4HAnHScA7x9AoxtiiPrGPLyKdK5f", "senderPublicKey": "6wBzB7Bw3oZwcxqF44P6x9GRDda14XkVXQdfCQSAWpeP", "proofs": [ "62hnHzJWb881JsYb7Z59BsNMUgw5JnAfjXxJqAv7MwTW5C3keUkZ1PY15ti4AbTuiT3yVRJeKg4nFvZ1ac5frt7y" ], "script": "base64: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", "height": 1348370, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4NJ59iwCA4nvPbJQLZzMw9ubZKMubhr3TzRJAwbopYxV Next: none Diff:
Old | New | Differences | |
---|---|---|---|
27 | 27 | func keyUserUpdate (caller) = ("update_" + caller) | |
28 | 28 | ||
29 | 29 | ||
30 | - | func makeJSON ( | |
30 | + | func makeJSON (requestStatus,result,msg,timestamp) = (((((((("{\"requestStatus\": \"" + requestStatus) + "\", \"result\": \"") + result) + "\", \"message\":\"") + msg) + "\",\"timestamp\":\"") + timestamp) + "\"}") | |
31 | 31 | ||
32 | 32 | ||
33 | 33 | @Callable(i) | |
34 | - | func setStatus (address,reqStatus, | |
34 | + | func setStatus (address,reqStatus,result,msg) = { | |
35 | 35 | let caller = toString(addressFromPublicKey(i.callerPublicKey)) | |
36 | 36 | let id = toBase58String(i.transactionId) | |
37 | 37 | let currentStatus = getStringByKey(keyUserStatus(address)) | |
38 | 38 | let timestamp = lastBlock.timestamp | |
39 | - | let statusToSet = if (containsElement([RECEIVED, REJECTED, ACCEPTED], reqStatus)) | |
39 | + | let resultToSet = if (containsElement([RECEIVED, REJECTED, ACCEPTED], result)) | |
40 | + | then result | |
41 | + | else throw("Unknown result for requested status") | |
42 | + | let requestedStatus = if (containsElement([REGULAR, VERIFIED], reqStatus)) | |
40 | 43 | then reqStatus | |
41 | - | else throw("Unknown status") | |
42 | - | if (if ((currentStatus == | |
43 | - | then ( | |
44 | + | else throw("Unknown status request") | |
45 | + | if (if ((currentStatus == REGULAR)) | |
46 | + | then (requestedStatus == REGULAR) | |
44 | 47 | else false) | |
45 | - | then throw("Application exist already") | |
46 | - | else if (containsElement([chris, joep, toString(this)], caller)) | |
47 | - | then [StringEntry(keyUserStatus(address), makeJSON(statusToSet, toBase64String(toBytes(msg)), toString(timestamp)))] | |
48 | - | else throw("Not allowed to change user status") | |
48 | + | then throw("This status is already set") | |
49 | + | else if (if ((currentStatus == VERIFIED)) | |
50 | + | then (requestedStatus == VERIFIED) | |
51 | + | else false) | |
52 | + | then throw("This status is already set") | |
53 | + | else if (containsElement([chris, joep, toString(this)], caller)) | |
54 | + | then [StringEntry(keyUserStatus(address), makeJSON(reqStatus, result, toBase64String(toBytes(msg)), toString(timestamp)))] | |
55 | + | else throw("Not allowed to change user status") | |
49 | 56 | } | |
50 | 57 | ||
51 | 58 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 4 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let chris = "3MsG6jPNCrVJUtYB7XJBxS7utWsXAf4n9Vp" | |
5 | 5 | ||
6 | 6 | let joep = "3Mzm4VLwsN9uZwbTMzPj3XuxV6kEfAR8UDN" | |
7 | 7 | ||
8 | 8 | let RECEIVED = "RECEIVED" | |
9 | 9 | ||
10 | 10 | let REJECTED = "REJECTED" | |
11 | 11 | ||
12 | 12 | let ACCEPTED = "ACCEPTED" | |
13 | 13 | ||
14 | 14 | let REGULAR = "REGULAR" | |
15 | 15 | ||
16 | 16 | let VERIFIED = "VERIFIED" | |
17 | 17 | ||
18 | 18 | func getStringByKey (key) = valueOrElse(getString(this, key), "") | |
19 | 19 | ||
20 | 20 | ||
21 | 21 | func keyUserStatus (caller) = ("user_" + caller) | |
22 | 22 | ||
23 | 23 | ||
24 | 24 | func keyUserMessage (caller) = ("msg_" + caller) | |
25 | 25 | ||
26 | 26 | ||
27 | 27 | func keyUserUpdate (caller) = ("update_" + caller) | |
28 | 28 | ||
29 | 29 | ||
30 | - | func makeJSON ( | |
30 | + | func makeJSON (requestStatus,result,msg,timestamp) = (((((((("{\"requestStatus\": \"" + requestStatus) + "\", \"result\": \"") + result) + "\", \"message\":\"") + msg) + "\",\"timestamp\":\"") + timestamp) + "\"}") | |
31 | 31 | ||
32 | 32 | ||
33 | 33 | @Callable(i) | |
34 | - | func setStatus (address,reqStatus, | |
34 | + | func setStatus (address,reqStatus,result,msg) = { | |
35 | 35 | let caller = toString(addressFromPublicKey(i.callerPublicKey)) | |
36 | 36 | let id = toBase58String(i.transactionId) | |
37 | 37 | let currentStatus = getStringByKey(keyUserStatus(address)) | |
38 | 38 | let timestamp = lastBlock.timestamp | |
39 | - | let statusToSet = if (containsElement([RECEIVED, REJECTED, ACCEPTED], reqStatus)) | |
39 | + | let resultToSet = if (containsElement([RECEIVED, REJECTED, ACCEPTED], result)) | |
40 | + | then result | |
41 | + | else throw("Unknown result for requested status") | |
42 | + | let requestedStatus = if (containsElement([REGULAR, VERIFIED], reqStatus)) | |
40 | 43 | then reqStatus | |
41 | - | else throw("Unknown status") | |
42 | - | if (if ((currentStatus == | |
43 | - | then ( | |
44 | + | else throw("Unknown status request") | |
45 | + | if (if ((currentStatus == REGULAR)) | |
46 | + | then (requestedStatus == REGULAR) | |
44 | 47 | else false) | |
45 | - | then throw("Application exist already") | |
46 | - | else if (containsElement([chris, joep, toString(this)], caller)) | |
47 | - | then [StringEntry(keyUserStatus(address), makeJSON(statusToSet, toBase64String(toBytes(msg)), toString(timestamp)))] | |
48 | - | else throw("Not allowed to change user status") | |
48 | + | then throw("This status is already set") | |
49 | + | else if (if ((currentStatus == VERIFIED)) | |
50 | + | then (requestedStatus == VERIFIED) | |
51 | + | else false) | |
52 | + | then throw("This status is already set") | |
53 | + | else if (containsElement([chris, joep, toString(this)], caller)) | |
54 | + | then [StringEntry(keyUserStatus(address), makeJSON(reqStatus, result, toBase64String(toBytes(msg)), toString(timestamp)))] | |
55 | + | else throw("Not allowed to change user status") | |
49 | 56 | } | |
50 | 57 | ||
51 | 58 |
github/deemru/w8io/169f3d6 54.11 ms ◑![]()