tx · 9GYPAyfhqiYimH47YRCuTtH4YP9W1tuJsBGd9iX3mfeq 3N5NY2v5wdKQJbCvQA5o5hSihn7t7wYZ496: -0.01000000 Waves 2025.01.08 16:33 [3450261] smart account 3N5NY2v5wdKQJbCvQA5o5hSihn7t7wYZ496 > SELF 0.00000000 Waves
{ "type": 13, "id": "9GYPAyfhqiYimH47YRCuTtH4YP9W1tuJsBGd9iX3mfeq", "fee": 1000000, "feeAssetId": null, "timestamp": 1736343226237, "version": 2, "chainId": 84, "sender": "3N5NY2v5wdKQJbCvQA5o5hSihn7t7wYZ496", "senderPublicKey": "8Ti3dhEToApephiZ47QJeuQX3UYifveNLPQjNstsLho9", "proofs": [ "2ChfcG3Nme2NqQDMDbHDPfB1QpGFoZL9MzSqojb2FUgVb15F2V9gRLyh4SEWrY4gdRdvkoQsvQRguS943qdfpFwT" ], "script": "base64:AAIFAAAAAAAAABQIAhIFCgMICAgSAwoBCBIECgIICAAAAAMAAAAADGFkbWluQWRkcmVzcwkBAAAAB0FkZHJlc3MAAAABAQAAABoBVAqh3jB68WUdF1MeXFctJAWzG0XQgRHu1wAAAAALZEFwcEFkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVSNFVN42dVClMcMW1BboH6NujWeWSoZV/ABAAAADXNlYXJjaEZvclVzZXIAAAABAAAAB2FkZHJlc3MEAAAABHVzZXIEAAAAByRtYXRjaDAJAAQiAAAAAQUAAAAHYWRkcmVzcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwBQAAAAFzAgAAAAdObyBVc2VyBQAAAAR1c2VyAAAAAwAAAAFpAQAAAA9yZWdpc3RlckFjY291bnQAAAADAAAAB2FkZHJlc3MAAAAEcm9sZQAAAARuYW1lBAAAAAZjYWxsZXIIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQQAAAAEdXNlcgkBAAAADXNlYXJjaEZvclVzZXIAAAABCQACWAAAAAEFAAAABmNhbGxlcgMJAQAAAAIhPQAAAAIFAAAABHVzZXICAAAABUFkbWluCQAAAgAAAAECAAAAIk9ubHkgdGhlIGFkbWluIGNhbiBkZWxldGUgYWNjb3VudHMJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAHYWRkcmVzcwUAAAAEcm9sZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAAB2FkZHJlc3MCAAAABV9uYW1lBQAAAARuYW1lBQAAAANuaWwAAAABaQEAAAANZGVsZXRlQWNjb3VudAAAAAEAAAAHYWRkcmVzcwQAAAAGY2FsbGVyCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAABHVzZXIJAQAAAA1zZWFyY2hGb3JVc2VyAAAAAQkAAlgAAAABBQAAAAZjYWxsZXIDCQEAAAACIT0AAAACBQAAAAR1c2VyAgAAAAVBZG1pbgkAAAIAAAABAgAAACJPbmx5IHRoZSBhZG1pbiBjYW4gZGVsZXRlIGFjY291bnRzCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAAB2FkZHJlc3MJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACBQAAAAdhZGRyZXNzAgAAAAVfbmFtZQUAAAADbmlsAAAAAWkBAAAACHNhdmVEYXRhAAAAAgAAAAt0ZW1wZXJhdHVyZQAAAAhodW1pZGl0eQQAAAAGY2FsbGVyCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAABHVzZXIJAQAAAA1zZWFyY2hGb3JVc2VyAAAAAQkAAlgAAAABBQAAAAZjYWxsZXIDCQAAAAAAAAIFAAAABHVzZXICAAAAB05vIFVzZXIJAAACAAAAAQIAAAARVXNlciBub3QgZWxpZ2libGUEAAAACnBhcmFtZXRlcnMJAARMAAAAAgUAAAALdGVtcGVyYXR1cmUJAARMAAAAAgUAAAAIaHVtaWRpdHkFAAAAA25pbAQAAAAKaW52b2tlVGFzawkAA/wAAAAEBQAAAAtkQXBwQWRkcmVzcwIAAAAIU2F2ZURhdGEFAAAACnBhcmFtZXRlcnMFAAAAA25pbAMJAQAAAAIhPQAAAAIFAAAACmludm9rZVRhc2sFAAAACmludm9rZVRhc2sJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQAAAANuaWwAAAAA3mAeMQ==", "height": 3450261, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: C6R1q8tzqP3tQXxuDn6b9cWyGBzoq2oxbE6KjeQ3ToqL Next: none Diff:
Old | New | Differences | |
---|---|---|---|
17 | 17 | ||
18 | 18 | ||
19 | 19 | @Callable(i) | |
20 | - | func registerAccount (address,role,name) = if ((i.caller != adminAddress)) | |
21 | - | then throw("Only the admin can register accounts") | |
22 | - | else [StringEntry(address, role), StringEntry((address + "_name"), name)] | |
20 | + | func registerAccount (address,role,name) = { | |
21 | + | let caller = i.callerPublicKey | |
22 | + | let user = searchForUser(toBase58String(caller)) | |
23 | + | if ((user != "Admin")) | |
24 | + | then throw("Only the admin can delete accounts") | |
25 | + | else [StringEntry(address, role), StringEntry((address + "_name"), name)] | |
26 | + | } | |
23 | 27 | ||
24 | 28 | ||
25 | 29 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let adminAddress = Address(base58'3MptJSctbAkp5fddvpQmWYjjKrSoim6dL38') | |
5 | 5 | ||
6 | 6 | let dAppAddress = Address(base58'3N2n4bjG8CjdKiwLPyp3hBM4MDJ3XwMZR5h') | |
7 | 7 | ||
8 | 8 | func searchForUser (address) = { | |
9 | 9 | let user = match getString(address) { | |
10 | 10 | case s: String => | |
11 | 11 | s | |
12 | 12 | case _ => | |
13 | 13 | "No User" | |
14 | 14 | } | |
15 | 15 | user | |
16 | 16 | } | |
17 | 17 | ||
18 | 18 | ||
19 | 19 | @Callable(i) | |
20 | - | func registerAccount (address,role,name) = if ((i.caller != adminAddress)) | |
21 | - | then throw("Only the admin can register accounts") | |
22 | - | else [StringEntry(address, role), StringEntry((address + "_name"), name)] | |
20 | + | func registerAccount (address,role,name) = { | |
21 | + | let caller = i.callerPublicKey | |
22 | + | let user = searchForUser(toBase58String(caller)) | |
23 | + | if ((user != "Admin")) | |
24 | + | then throw("Only the admin can delete accounts") | |
25 | + | else [StringEntry(address, role), StringEntry((address + "_name"), name)] | |
26 | + | } | |
23 | 27 | ||
24 | 28 | ||
25 | 29 | ||
26 | 30 | @Callable(i) | |
27 | 31 | func deleteAccount (address) = { | |
28 | 32 | let caller = i.callerPublicKey | |
29 | 33 | let user = searchForUser(toBase58String(caller)) | |
30 | 34 | if ((user != "Admin")) | |
31 | 35 | then throw("Only the admin can delete accounts") | |
32 | 36 | else [DeleteEntry(address), DeleteEntry((address + "_name"))] | |
33 | 37 | } | |
34 | 38 | ||
35 | 39 | ||
36 | 40 | ||
37 | 41 | @Callable(i) | |
38 | 42 | func saveData (temperature,humidity) = { | |
39 | 43 | let caller = i.callerPublicKey | |
40 | 44 | let user = searchForUser(toBase58String(caller)) | |
41 | 45 | if ((user == "No User")) | |
42 | 46 | then throw("User not eligible") | |
43 | 47 | else { | |
44 | 48 | let parameters = [temperature, humidity] | |
45 | 49 | let invokeTask = invoke(dAppAddress, "SaveData", parameters, nil) | |
46 | 50 | if ((invokeTask != invokeTask)) | |
47 | 51 | then throw("Strict value is not equal to itself.") | |
48 | 52 | else nil | |
49 | 53 | } | |
50 | 54 | } | |
51 | 55 | ||
52 | 56 |
github/deemru/w8io/169f3d6 13.77 ms ◑