tx · J1qUtT4rxPbsk1z75QTkADKefo7N2Knfve3JottujxUu

3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj:  -0.01400000 Waves

2022.07.04 11:57 [2124719] smart account 3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj > SELF 0.00000000 Waves

{ "type": 13, "id": "J1qUtT4rxPbsk1z75QTkADKefo7N2Knfve3JottujxUu", "fee": 1400000, "feeAssetId": null, "timestamp": 1656925090959, "version": 2, "chainId": 84, "sender": "3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj", "senderPublicKey": "A2m227AHcq7gWfSU59Q3UJaqkEa7SccFYmJuWHbFrrKE", "proofs": [ "2Pp5xbkUCmz84U5dq74wPSnCpUFsx9nZikzdSKFU8TTSwqNeX43h56Tah1anABqubjLHHfsrPNBar4mX93CYvyVt" ], "script": "base64:AAIFAAAAAAAAADwIAhIECgIECBIDCgEEEgYKBAgICAgSBgoECAgICBIFCgMICAgSAwoBCBIGCgQICAEBEgQKAggIEgMKAQgAAAAiAAAAAAVjaHJpcwIAAAAjM01zRzZqUE5DclZKVXRZQjdYSkJ4Uzd1dFdzWEFmNG45VnAAAAAABGpvZXACAAAAIzNNem00Vkx3c045dVp3YlRNelBqM1h1eFY2a0VmQVI4VUROAAAAAA5kYXBwUnVubmluZ0tleQIAAAAUY29uZl9kYXBwX2lzX3J1bm5pbmcAAAAAEW1haW50ZW5hbmNlTVNHS2V5AgAAABRjb25mX21haW50ZW5hbmNlX21zZwAAAAASd2hpdGVsaXN0ZWRvbmx5S2V5AgAAABVjb25mX3doaXRlbGlzdGVkX29ubHkAAAAAC2RhcHBSdW5uaW5nCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAABHRoaXMFAAAADmRhcHBSdW5uaW5nS2V5BgAAAAAObWFpbnRlbmFuY2VNU0cJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAARbWFpbnRlbmFuY2VNU0dLZXkCAAAAAAAAAAAPd2hpdGVsaXN0ZWRvbmx5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAABHRoaXMFAAAAEndoaXRlbGlzdGVkb25seUtleQYAAAAAC3VzZXJBbGxvd2VkAgAAAAdBTExPV0VEAAAAAA51c2VyUmVnaXN0ZXJlZAIAAAAKUkVHSVNURVJFRAAAAAAMdXNlclZlcmlmaWVkAgAAAAhWRVJJRklFRAAAAAANdXNlclN1c3BlbmRlZAIAAAAJU1VTUEVOREVEAAAAAAt1c2VyUmVtb3ZlZAIAAAAHUkVNT1ZFRAAAAAASdXNlckNoYW5nZVJlcXVpcmVkAgAAAA9DSEFOR0VfUkVRVUlSRUQAAAAAEHVzZXJVbnJlZ2lzdGVyZWQCAAAADFVOUkVHSVNURVJFRAAAAAAJdXNlclJlc2V0AgAAAAVSRVNFVAEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkCAAAAAAEAAAAPZ2V0Qm9vbGVhbkJ5S2V5AAAAAQAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQbAAAAAgUAAAAEdGhpcwUAAAADa2V5BwEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AAAAAAAAAAAAAQAAAAtrZXlVc2VyQWRkcgAAAAEAAAAGY2FsbGVyCQABLAAAAAICAAAABXVzZXJfBQAAAAZjYWxsZXIBAAAAC2tleVVzZXJOYW1lAAAAAQAAAAZjYWxsZXIJAAEsAAAAAgIAAAAKdXNlcl9uYW1lXwUAAAAGY2FsbGVyAQAAAAtrZXlVc2VyRGVzYwAAAAEAAAAGY2FsbGVyCQABLAAAAAICAAAACnVzZXJfZGVzY18FAAAABmNhbGxlcgEAAAANa2V5VXNlclNvY2lhbAAAAAEAAAAGY2FsbGVyCQABLAAAAAICAAAADHVzZXJfc29jaWFsXwUAAAAGY2FsbGVyAQAAAAxrZXlVc2VyVGh1bWIAAAABAAAABmNhbGxlcgkAASwAAAACAgAAAAt1c2VyX3RodW1iXwUAAAAGY2FsbGVyAQAAAA1rZXlVc2VyU3RhdHVzAAAAAQAAAAZjYWxsZXIJAAEsAAAAAgIAAAAMdXNlcl9zdGF0dXNfBQAAAAZjYWxsZXIBAAAAC2tleVVzZXJEYXRlAAAAAQAAAAZjYWxsZXIJAAEsAAAAAgIAAAAKdXNlcl9kYXRlXwUAAAAGY2FsbGVyAQAAABJrZXlBcnRpc3RBZ2VudEFkZHIAAAABAAAACmFydGlzdEFkZHIJAAEsAAAAAgIAAAANYXJ0aXN0X2FnZW50XwUAAAAKYXJ0aXN0QWRkcgEAAAASa2V5QWdlbnRBcnRpc3RBZGRyAAAAAgAAAAlhZ2VudEFkZHIAAAAKYXJ0aXN0QWRkcgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAGYWdlbnRfBQAAAAlhZ2VudEFkZHICAAAAAV8FAAAACmFydGlzdEFkZHIBAAAAD2tleVByaW1hcnlTaGFyZQAAAAEAAAAKYXJ0aXN0QWRkcgkAASwAAAACAgAAABVhcnRpc3RfYWdlbnRfcHJpbWFyeV8FAAAACmFydGlzdEFkZHIBAAAAEWtleVNlY29uZGFyeVNoYXJlAAAAAQAAAAphcnRpc3RBZGRyCQABLAAAAAICAAAAF2FydGlzdF9hZ2VudF9zZWNvbmRhcnlfBQAAAAphcnRpc3RBZGRyAQAAAAt2YWxpZGF0ZUNJRAAAAAEAAAADY2lkAwkBAAAACGNvbnRhaW5zAAAAAgUAAAADY2lkAgAAAAEvAwMJAABmAAAAAgAAAAAAAAAATAkAATEAAAABBQAAAANjaWQJAAAAAAAAAgkAATEAAAABCQABkQAAAAIJAAS1AAAAAgUAAAADY2lkAgAAAAEvAAAAAAAAAAAAAAAAAAAAAAA7BwkAAGYAAAACAAAAAAAAAAAQCQABMQAAAAEJAAGRAAAAAgkABLUAAAACBQAAAANjaWQCAAAAAS8AAAAAAAAAAAEHBwEAAAANdmFsaWRVc2VyRGF0YQAAAAUAAAAGY2FsbGVyAAAABG5hbWUAAAALZGVzY3JpcHRpb24AAAAFdGh1bWIAAAAKaXNBblVwZGF0ZQQAAAAIdmFsaWRDSUQDCQEAAAACIT0AAAACCQABMQAAAAEFAAAABXRodW1iAAAAAAAAAAAACQEAAAALdmFsaWRhdGVDSUQAAAABBQAAAAV0aHVtYgYDCQEAAAABIQAAAAEFAAAACHZhbGlkQ0lECQAAAgAAAAECAAAAHENJRCBkb24ndCBtYXRjaCByZXF1aXJlbWVudCEDAwkAAAAAAAACBQAAAARuYW1lAgAAAAAGCQAAAAAAAAIFAAAAC2Rlc2NyaXB0aW9uAgAAAAAJAAACAAAAAQIAAAAkTmFtZSBhbmQgZGVzY3JpcHRpb24gY2Fubm90IGJlIGVtcHR5AwkAAGYAAAACCQABMQAAAAEFAAAAC2Rlc2NyaXB0aW9uAAAAAAAAAAJYCQAAAgAAAAECAAAAGTYwMCBDaGFyLiBtYXggZGVzY3JpcHRpb24DCQAAZgAAAAIJAAExAAAAAQUAAAAEbmFtZQAAAAAAAAAALQkAAAIAAAABAgAAABE0NSBDaGFyLiBtYXggbmFtZQQAAAAGc3RhdHVzCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAANa2V5VXNlclN0YXR1cwAAAAEFAAAABmNhbGxlcgMDCQAAAAAAAAIFAAAABnN0YXR1cwUAAAANdXNlclN1c3BlbmRlZAYJAAAAAAAAAgUAAAAGc3RhdHVzBQAAAAt1c2VyUmVtb3ZlZAkAAAIAAAABAgAAABtBY2NvdW50IHN1c3BlbmRlZC8gcmVtb3ZlZC4DAwkBAAAAASEAAAABBQAAAAppc0FuVXBkYXRlCQAAAAAAAAIFAAAABnN0YXR1cwUAAAAOdXNlclJlZ2lzdGVyZWQHCQAAAgAAAAECAAAAEkFscmVhZHkgcmVnaXN0ZXJlZAMDAwkBAAAAASEAAAABBQAAAAppc0FuVXBkYXRlCQAAAAAAAAIFAAAABnN0YXR1cwIAAAAABwUAAAAPd2hpdGVsaXN0ZWRvbmx5BwkAAAIAAAABAgAAACNDYW4ndCByZWdpc3RlciwgZ2V0IGFwcHJvdmVkIGZpcnN0LgMDAwUAAAAKaXNBblVwZGF0ZQkAAAAAAAACBQAAAAZzdGF0dXMCAAAAAAcGAwUAAAAKaXNBblVwZGF0ZQkAAAAAAAACBQAAAAZzdGF0dXMFAAAAC3VzZXJBbGxvd2VkBwkAAAIAAAABAgAAAA5SZWdpc3RlciBmaXJzdAYBAAAAEXZhbGlkYXRlTmV3U3RhdHVzAAAAAwAAAAZzdGF0dXMAAAAHYWRkcmVzcwAAAA1jdXJyZW50U3RhdHVzBAAAAAlhbGxTdGF0dXMJAARMAAAAAgUAAAAMdXNlclZlcmlmaWVkCQAETAAAAAIFAAAADnVzZXJSZWdpc3RlcmVkCQAETAAAAAIFAAAADXVzZXJTdXNwZW5kZWQJAARMAAAAAgUAAAALdXNlclJlbW92ZWQJAARMAAAAAgUAAAALdXNlckFsbG93ZWQJAARMAAAAAgUAAAASdXNlckNoYW5nZVJlcXVpcmVkBQAAAANuaWwEAAAAC3N0YXR1c1RvU2V0AwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAACWFsbFN0YXR1cwUAAAAGc3RhdHVzBQAAAAZzdGF0dXMDAwkAAAAAAAACBQAAAAZzdGF0dXMFAAAACXVzZXJSZXNldAkAAAAAAAACBQAAAA1jdXJyZW50U3RhdHVzBQAAAAt1c2VyQWxsb3dlZAcCAAAAAAkAAAIAAAABAgAAAA5Vbmtub3duIHN0YXR1cwQAAAAQdXNlcklzUmVnaXN0ZXJlZAkBAAAAD2dldEludGVnZXJCeUtleQAA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", "height": 2124719, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 56xFbaw9eVk4EKrRpGFNPVjdkTScUSzAKzzBjjacSpNm Next: BuuECFZiZfu31aEQ3SDFVaLcsPRULEyzgusFZQt2pV56 Diff:
OldNewDifferences
100100 then throw("45 Char. max name")
101101 else {
102102 let status = getStringByKey(keyUserStatus(caller))
103- if (true)
104- then throw(((("caller = " + caller) + " status = ") + status))
105- else if (if ((status == userSuspended))
106- then true
107- else (status == userRemoved))
108- then throw("Account suspended/ removed.")
109- else if (if (!(isAnUpdate))
110- then (status == userRegistered)
103+ if (if ((status == userSuspended))
104+ then true
105+ else (status == userRemoved))
106+ then throw("Account suspended/ removed.")
107+ else if (if (!(isAnUpdate))
108+ then (status == userRegistered)
109+ else false)
110+ then throw("Already registered")
111+ else if (if (if (!(isAnUpdate))
112+ then (status == "")
111113 else false)
112- then throw("Already registered")
113- else if (if (if (!(isAnUpdate))
114+ then whitelistedonly
115+ else false)
116+ then throw("Can't register, get approved first.")
117+ else if (if (if (isAnUpdate)
114118 then (status == "")
115119 else false)
116- then whitelistedonly
117- else false)
118- then throw("Can't register, get approved first.")
119- else if (if (if (isAnUpdate)
120- then (status == "")
120+ then true
121+ else if (isAnUpdate)
122+ then (status == userAllowed)
121123 else false)
122- then true
123- else if (isAnUpdate)
124- then (status == userAllowed)
125- else false)
126- then throw("Register first")
127- else true
124+ then throw("Register first")
125+ else true
128126 }
129127 }
130128
164162
165163 @Callable(invoke)
166164 func appRunning (isLive,message) = {
167- let caller = toString(addressFromPublicKey(invoke.callerPublicKey))
165+ let caller = toString(invoke.caller)
168166 let id = toBase58String(invoke.transactionId)
169167 if (containsElement([chris, joep, toString(this)], caller))
170168 then [BooleanEntry(dappRunningKey, isLive), StringEntry(maintenanceMSGKey, message)]
175173
176174 @Callable(invoke)
177175 func registrationMode (WLonly) = {
178- let caller = toString(addressFromPublicKey(invoke.callerPublicKey))
176+ let caller = toString(invoke.caller)
179177 let id = toBase58String(invoke.transactionId)
180178 if (containsElement([chris, toString(this)], caller))
181179 then [BooleanEntry(whitelistedonlyKey, WLonly)]
189187 then throw(maintenanceMSG)
190188 else {
191189 let caller = toString(invoke.caller)
192- if (true)
193- then throw(("invoke.transactionId = " + toBase58String(invoke.transactionId)))
190+ let id = toBase58String(invoke.transactionId)
191+ let timestamp = lastBlock.timestamp
192+ if (!(validUserData(caller, name, description, thumb, false)))
193+ then throw("Something went wrong")
194194 else {
195- let id = toBase58String(invoke.transactionId)
196- let timestamp = lastBlock.timestamp
197- if (!(validUserData(caller, name, description, thumb, false)))
198- then throw("Something went wrong")
199- else {
200- let json = makeJSON(toBase64String(toBytes(name)), toBase64String(toBytes(thumb)), toString(timestamp))
195+ let json = makeJSON(toBase64String(toBytes(name)), toBase64String(toBytes(thumb)), toString(timestamp))
201196 [IntegerEntry(keyUserDate(caller), timestamp), StringEntry(keyUserAddr(caller), ((id + "_") + toString(timestamp))), StringEntry(keyUserName(caller), name), StringEntry(keyUserDesc(caller), description), StringEntry(keyUserSocial(caller), social), StringEntry(keyUserThumb(caller), thumb), StringEntry(keyUserStatus(caller), userRegistered), DeleteEntry(("ALLOWED_" + caller)), StringEntry(((userRegistered + "_") + caller), json)]
202- }
203197 }
204198 }
205199
209203 func updateUser (name,description,thumb,social) = if (!(dappRunning))
210204 then throw(maintenanceMSG)
211205 else {
212- let caller = toString(addressFromPublicKey(invoke.callerPublicKey))
206+ let caller = toString(invoke.caller)
213207 let id = toBase58String(invoke.transactionId)
214208 let status = getStringByKey(keyUserStatus(caller))
215209 if (!(validUserData(caller, name, description, thumb, true)))
225219
226220 @Callable(invoke)
227221 func changeUserStatus (address,status,note) = {
228- let caller = toString(addressFromPublicKey(invoke.callerPublicKey))
222+ let caller = toString(invoke.caller)
229223 let id = toBase58String(invoke.transactionId)
230224 let currentStatus = getStringByKey(keyUserStatus(address))
231225 let statusToSet = validateNewStatus(status, address, currentStatus)
242236
243237 @Callable(invoke)
244238 func deleteUser (address) = {
245- let caller = toString(addressFromPublicKey(invoke.callerPublicKey))
239+ let caller = toString(invoke.caller)
246240 let id = toBase58String(invoke.transactionId)
247241 let currentStatus = getStringByKey(keyUserStatus(address))
248242 if (containsElement([chris, toString(this)], caller))
256250 func setAgent (artistAddr,agentAddr,primaryShare,secondaryShare) = if (!(dappRunning))
257251 then throw(maintenanceMSG)
258252 else {
259- let caller = toString(addressFromPublicKey(i.callerPublicKey))
253+ let caller = toString(i.caller)
260254 if (containsElement([chris, toString(this)], caller))
261255 then if (if ((size(artistAddr) != 35))
262256 then true
272266 func unsetAgent (artistAddr,agentAddr) = if (!(dappRunning))
273267 then throw(maintenanceMSG)
274268 else {
275- let caller = toString(addressFromPublicKey(i.callerPublicKey))
269+ let caller = toString(i.caller)
276270 if (containsElement([chris, toString(this)], caller))
277271 then if (if ((size(artistAddr) != 35))
278272 then true
286280
287281 @Callable(i)
288282 func deleteEntry (entry) = {
289- let caller = toString(addressFromPublicKey(i.callerPublicKey))
283+ let caller = toString(i.caller)
290284 if ((caller == chris))
291285 then [DeleteEntry(entry)]
292286 else throw("no")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let chris = "3MsG6jPNCrVJUtYB7XJBxS7utWsXAf4n9Vp"
55
66 let joep = "3Mzm4VLwsN9uZwbTMzPj3XuxV6kEfAR8UDN"
77
88 let dappRunningKey = "conf_dapp_is_running"
99
1010 let maintenanceMSGKey = "conf_maintenance_msg"
1111
1212 let whitelistedonlyKey = "conf_whitelisted_only"
1313
1414 let dappRunning = valueOrElse(getBoolean(this, dappRunningKey), true)
1515
1616 let maintenanceMSG = valueOrElse(getString(this, maintenanceMSGKey), "")
1717
1818 let whitelistedonly = valueOrElse(getBoolean(this, whitelistedonlyKey), true)
1919
2020 let userAllowed = "ALLOWED"
2121
2222 let userRegistered = "REGISTERED"
2323
2424 let userVerified = "VERIFIED"
2525
2626 let userSuspended = "SUSPENDED"
2727
2828 let userRemoved = "REMOVED"
2929
3030 let userChangeRequired = "CHANGE_REQUIRED"
3131
3232 let userUnregistered = "UNREGISTERED"
3333
3434 let userReset = "RESET"
3535
3636 func getStringByKey (key) = valueOrElse(getString(this, key), "")
3737
3838
3939 func getBooleanByKey (key) = valueOrElse(getBoolean(this, key), false)
4040
4141
4242 func getIntegerByKey (key) = valueOrElse(getInteger(this, key), 0)
4343
4444
4545 func keyUserAddr (caller) = ("user_" + caller)
4646
4747
4848 func keyUserName (caller) = ("user_name_" + caller)
4949
5050
5151 func keyUserDesc (caller) = ("user_desc_" + caller)
5252
5353
5454 func keyUserSocial (caller) = ("user_social_" + caller)
5555
5656
5757 func keyUserThumb (caller) = ("user_thumb_" + caller)
5858
5959
6060 func keyUserStatus (caller) = ("user_status_" + caller)
6161
6262
6363 func keyUserDate (caller) = ("user_date_" + caller)
6464
6565
6666 func keyArtistAgentAddr (artistAddr) = ("artist_agent_" + artistAddr)
6767
6868
6969 func keyAgentArtistAddr (agentAddr,artistAddr) = ((("agent_" + agentAddr) + "_") + artistAddr)
7070
7171
7272 func keyPrimaryShare (artistAddr) = ("artist_agent_primary_" + artistAddr)
7373
7474
7575 func keySecondaryShare (artistAddr) = ("artist_agent_secondary_" + artistAddr)
7676
7777
7878 func validateCID (cid) = if (contains(cid, "/"))
7979 then if (if ((76 > size(cid)))
8080 then (size(split(cid, "/")[0]) == 59)
8181 else false)
8282 then (16 > size(split(cid, "/")[1]))
8383 else false
8484 else false
8585
8686
8787 func validUserData (caller,name,description,thumb,isAnUpdate) = {
8888 let validCID = if ((size(thumb) != 0))
8989 then validateCID(thumb)
9090 else true
9191 if (!(validCID))
9292 then throw("CID don't match requirement!")
9393 else if (if ((name == ""))
9494 then true
9595 else (description == ""))
9696 then throw("Name and description cannot be empty")
9797 else if ((size(description) > 600))
9898 then throw("600 Char. max description")
9999 else if ((size(name) > 45))
100100 then throw("45 Char. max name")
101101 else {
102102 let status = getStringByKey(keyUserStatus(caller))
103- if (true)
104- then throw(((("caller = " + caller) + " status = ") + status))
105- else if (if ((status == userSuspended))
106- then true
107- else (status == userRemoved))
108- then throw("Account suspended/ removed.")
109- else if (if (!(isAnUpdate))
110- then (status == userRegistered)
103+ if (if ((status == userSuspended))
104+ then true
105+ else (status == userRemoved))
106+ then throw("Account suspended/ removed.")
107+ else if (if (!(isAnUpdate))
108+ then (status == userRegistered)
109+ else false)
110+ then throw("Already registered")
111+ else if (if (if (!(isAnUpdate))
112+ then (status == "")
111113 else false)
112- then throw("Already registered")
113- else if (if (if (!(isAnUpdate))
114+ then whitelistedonly
115+ else false)
116+ then throw("Can't register, get approved first.")
117+ else if (if (if (isAnUpdate)
114118 then (status == "")
115119 else false)
116- then whitelistedonly
117- else false)
118- then throw("Can't register, get approved first.")
119- else if (if (if (isAnUpdate)
120- then (status == "")
120+ then true
121+ else if (isAnUpdate)
122+ then (status == userAllowed)
121123 else false)
122- then true
123- else if (isAnUpdate)
124- then (status == userAllowed)
125- else false)
126- then throw("Register first")
127- else true
124+ then throw("Register first")
125+ else true
128126 }
129127 }
130128
131129
132130 func validateNewStatus (status,address,currentStatus) = {
133131 let allStatus = [userVerified, userRegistered, userSuspended, userRemoved, userAllowed, userChangeRequired]
134132 let statusToSet = if (containsElement(allStatus, status))
135133 then status
136134 else if (if ((status == userReset))
137135 then (currentStatus == userAllowed)
138136 else false)
139137 then ""
140138 else throw("Unknown status")
141139 let userIsRegistered = getIntegerByKey(keyUserDate(address))
142140 if (if ((userIsRegistered == 0))
143141 then (statusToSet != userAllowed)
144142 else false)
145143 then throw("You cant set this status, user is not registered.")
146144 else if (if ((currentStatus == userAllowed))
147145 then (statusToSet == userAllowed)
148146 else false)
149147 then throw("User already allowed")
150148 else if (if ((currentStatus == userRegistered))
151149 then (statusToSet == userAllowed)
152150 else false)
153151 then throw("User already allowed & registered")
154152 else if (if ((currentStatus == userVerified))
155153 then (statusToSet == userAllowed)
156154 else false)
157155 then throw("User already allowed & verified")
158156 else statusToSet
159157 }
160158
161159
162160 func makeJSON (name,thumb,date) = (((((("{\"user_name\": \"" + name) + "\", \"user_thumb\":\"") + thumb) + "\",\"user_date\":\"") + date) + "\"}")
163161
164162
165163 @Callable(invoke)
166164 func appRunning (isLive,message) = {
167- let caller = toString(addressFromPublicKey(invoke.callerPublicKey))
165+ let caller = toString(invoke.caller)
168166 let id = toBase58String(invoke.transactionId)
169167 if (containsElement([chris, joep, toString(this)], caller))
170168 then [BooleanEntry(dappRunningKey, isLive), StringEntry(maintenanceMSGKey, message)]
171169 else throw("You are not allowed to change this")
172170 }
173171
174172
175173
176174 @Callable(invoke)
177175 func registrationMode (WLonly) = {
178- let caller = toString(addressFromPublicKey(invoke.callerPublicKey))
176+ let caller = toString(invoke.caller)
179177 let id = toBase58String(invoke.transactionId)
180178 if (containsElement([chris, toString(this)], caller))
181179 then [BooleanEntry(whitelistedonlyKey, WLonly)]
182180 else throw("You are not allowed to change this")
183181 }
184182
185183
186184
187185 @Callable(invoke)
188186 func registerUser (name,description,thumb,social) = if (!(dappRunning))
189187 then throw(maintenanceMSG)
190188 else {
191189 let caller = toString(invoke.caller)
192- if (true)
193- then throw(("invoke.transactionId = " + toBase58String(invoke.transactionId)))
190+ let id = toBase58String(invoke.transactionId)
191+ let timestamp = lastBlock.timestamp
192+ if (!(validUserData(caller, name, description, thumb, false)))
193+ then throw("Something went wrong")
194194 else {
195- let id = toBase58String(invoke.transactionId)
196- let timestamp = lastBlock.timestamp
197- if (!(validUserData(caller, name, description, thumb, false)))
198- then throw("Something went wrong")
199- else {
200- let json = makeJSON(toBase64String(toBytes(name)), toBase64String(toBytes(thumb)), toString(timestamp))
195+ let json = makeJSON(toBase64String(toBytes(name)), toBase64String(toBytes(thumb)), toString(timestamp))
201196 [IntegerEntry(keyUserDate(caller), timestamp), StringEntry(keyUserAddr(caller), ((id + "_") + toString(timestamp))), StringEntry(keyUserName(caller), name), StringEntry(keyUserDesc(caller), description), StringEntry(keyUserSocial(caller), social), StringEntry(keyUserThumb(caller), thumb), StringEntry(keyUserStatus(caller), userRegistered), DeleteEntry(("ALLOWED_" + caller)), StringEntry(((userRegistered + "_") + caller), json)]
202- }
203197 }
204198 }
205199
206200
207201
208202 @Callable(invoke)
209203 func updateUser (name,description,thumb,social) = if (!(dappRunning))
210204 then throw(maintenanceMSG)
211205 else {
212- let caller = toString(addressFromPublicKey(invoke.callerPublicKey))
206+ let caller = toString(invoke.caller)
213207 let id = toBase58String(invoke.transactionId)
214208 let status = getStringByKey(keyUserStatus(caller))
215209 if (!(validUserData(caller, name, description, thumb, true)))
216210 then throw("Something went wrong")
217211 else {
218212 let date = getIntegerByKey(keyUserDate(caller))
219213 let json = makeJSON(toBase64String(toBytes(name)), toBase64String(toBytes(thumb)), toString(date))
220214 [StringEntry(keyUserName(caller), name), StringEntry(keyUserDesc(caller), description), StringEntry(keyUserSocial(caller), social), StringEntry(keyUserThumb(caller), thumb), StringEntry(((status + "_") + caller), json)]
221215 }
222216 }
223217
224218
225219
226220 @Callable(invoke)
227221 func changeUserStatus (address,status,note) = {
228- let caller = toString(addressFromPublicKey(invoke.callerPublicKey))
222+ let caller = toString(invoke.caller)
229223 let id = toBase58String(invoke.transactionId)
230224 let currentStatus = getStringByKey(keyUserStatus(address))
231225 let statusToSet = validateNewStatus(status, address, currentStatus)
232226 let name = toBase64String(toBytes(getStringByKey(keyUserName(address))))
233227 let thumb = toBase64String(toBytes(getStringByKey(keyUserThumb(address))))
234228 let date = getIntegerByKey(keyUserDate(address))
235229 let json = makeJSON(name, thumb, toString(date))
236230 if (containsElement([chris, joep, toString(this)], caller))
237231 then [StringEntry(keyUserStatus(address), statusToSet), DeleteEntry(((currentStatus + "_") + address)), StringEntry(((statusToSet + "_") + address), json), StringEntry(("user_note_" + address), note)]
238232 else throw("Not allowed to change user status")
239233 }
240234
241235
242236
243237 @Callable(invoke)
244238 func deleteUser (address) = {
245- let caller = toString(addressFromPublicKey(invoke.callerPublicKey))
239+ let caller = toString(invoke.caller)
246240 let id = toBase58String(invoke.transactionId)
247241 let currentStatus = getStringByKey(keyUserStatus(address))
248242 if (containsElement([chris, toString(this)], caller))
249243 then [DeleteEntry(keyUserDate(address)), DeleteEntry(keyUserAddr(address)), DeleteEntry(keyUserName(address)), DeleteEntry(keyUserDesc(address)), DeleteEntry(keyUserSocial(address)), DeleteEntry(keyUserThumb(address)), DeleteEntry(("user_note_" + address)), DeleteEntry(((currentStatus + "_") + address)), StringEntry(keyUserStatus(address), userRemoved)]
250244 else throw("Not allowed")
251245 }
252246
253247
254248
255249 @Callable(i)
256250 func setAgent (artistAddr,agentAddr,primaryShare,secondaryShare) = if (!(dappRunning))
257251 then throw(maintenanceMSG)
258252 else {
259- let caller = toString(addressFromPublicKey(i.callerPublicKey))
253+ let caller = toString(i.caller)
260254 if (containsElement([chris, toString(this)], caller))
261255 then if (if ((size(artistAddr) != 35))
262256 then true
263257 else (size(agentAddr) != 35))
264258 then throw("Wrong address")
265259 else [StringEntry(keyArtistAgentAddr(artistAddr), agentAddr), StringEntry(keyAgentArtistAddr(agentAddr, artistAddr), artistAddr), IntegerEntry(keyPrimaryShare(artistAddr), primaryShare), IntegerEntry(keySecondaryShare(artistAddr), secondaryShare)]
266260 else throw("You are not allowed")
267261 }
268262
269263
270264
271265 @Callable(i)
272266 func unsetAgent (artistAddr,agentAddr) = if (!(dappRunning))
273267 then throw(maintenanceMSG)
274268 else {
275- let caller = toString(addressFromPublicKey(i.callerPublicKey))
269+ let caller = toString(i.caller)
276270 if (containsElement([chris, toString(this)], caller))
277271 then if (if ((size(artistAddr) != 35))
278272 then true
279273 else (size(agentAddr) != 35))
280274 then throw("Wrong address")
281275 else [DeleteEntry(keyArtistAgentAddr(artistAddr)), DeleteEntry(keyAgentArtistAddr(agentAddr, artistAddr)), DeleteEntry(keyPrimaryShare(artistAddr)), DeleteEntry(keySecondaryShare(artistAddr))]
282276 else throw("You are not allowed")
283277 }
284278
285279
286280
287281 @Callable(i)
288282 func deleteEntry (entry) = {
289- let caller = toString(addressFromPublicKey(i.callerPublicKey))
283+ let caller = toString(i.caller)
290284 if ((caller == chris))
291285 then [DeleteEntry(entry)]
292286 else throw("no")
293287 }
294288
295289

github/deemru/w8io/169f3d6 
64.34 ms