tx · 2xXtEsXG1n1DJPtdWQq4F1Vwsx4o5fn7Sdfz2RTHvHr2

3Ms3vFkrTaXvYNw9Vna8vgTmHzEhWCBkBmT:  -0.04000000 Waves

2021.11.10 15:36 [1784925] smart account 3Ms3vFkrTaXvYNw9Vna8vgTmHzEhWCBkBmT > SELF 0.00000000 Waves

{ "type": 13, "id": "2xXtEsXG1n1DJPtdWQq4F1Vwsx4o5fn7Sdfz2RTHvHr2", "fee": 4000000, "feeAssetId": null, "timestamp": 1636547792281, "version": 2, "chainId": 84, "sender": "3Ms3vFkrTaXvYNw9Vna8vgTmHzEhWCBkBmT", "senderPublicKey": "4cDpBfmEAxfhEbF9jxuT8xqJa14SqZgPfZ9Tov6ka4Qj", "proofs": [ "m8R38eH24bKsTamtFLGwQ96hCcZvdv5UavN9DKNPjTfxKynH1m24GJgJzZPfboWPi1rijFcqRBac7fAxCZpSQhg" ], "script": "base64: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", "height": 1784925, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 83ksPwasUBVy9kenqjpdPmPXoKTKM73iemifQU6KGZGX Next: 8ge7sMCfwzf4EdN5vyoPGuWJUThpxv13GfHtSzM7jbxH Diff:
OldNewDifferences
9191 then throw("Invalid Status")
9292 else match getString(getAdressStatusKey(address)) {
9393 case t: String =>
94+[StringEntry(getAdressStatusKey(address), status)]
95+ case _ =>
9496 throw("User Not Found")
95- case _ =>
96-[StringEntry(getAdressStatusKey(address), status)]
9797 }
9898 }
9999
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let ADMIN = "3N8FWN9orV8D8px6xrYqTjWHHu2Qd3Jx4bV"
55
66 let DAPP = "3Mza5Ao6wJgpw1JG3jxRY1xigD44zgfhdK6"
77
88 let VERIFIED = "verified"
99
1010 let BLOCKED = "blocked"
1111
1212 func getAdressStatusKey (address) = (address + "_status")
1313
1414
1515 func getAddressAdminKey (address) = (address + "_admin")
1616
1717
1818 func isStatusValid (status) = match status {
1919 case t: String =>
2020 if ((t == BLOCKED))
2121 then true
2222 else (t == VERIFIED)
2323 case _ =>
2424 false
2525 }
2626
2727
2828 func isAdmin (address) = if ((address == ADMIN))
2929 then true
3030 else match getBoolean(this, getAddressAdminKey(address)) {
3131 case t: Boolean =>
3232 t
3333 case _ =>
3434 false
3535 }
3636
3737
3838 func getAddresVerifiedStatus (address) = match getString(getAdressStatusKey(address)) {
3939 case s: String =>
4040 s
4141 case _ =>
4242 VERIFIED
4343 }
4444
4545
4646 @Callable(i)
4747 func addAdmin (address) = {
4848 let account = toBase58String(i.caller.bytes)
4949 if (!(isAdmin(account)))
5050 then throw("No Access")
5151 else if (isAdmin(address))
5252 then throw("Alredy Is Admin")
5353 else [BooleanEntry(getAddressAdminKey(address), true)]
5454 }
5555
5656
5757
5858 @Callable(i)
5959 func removeAdmin (address) = {
6060 let account = toBase58String(i.caller.bytes)
6161 if (!(isAdmin(account)))
6262 then throw("No Access")
6363 else if (!(isAdmin(address)))
6464 then throw("Admin Not Found")
6565 else [BooleanEntry(getAddressAdminKey(address), false)]
6666 }
6767
6868
6969
7070 @Callable(i)
7171 func addUser (address) = {
7272 let account = toBase58String(i.caller.bytes)
7373 if (!(isAdmin(account)))
7474 then throw("No Access")
7575 else match getString(getAdressStatusKey(address)) {
7676 case t: String =>
7777 throw("Alredy Exists")
7878 case _ =>
7979 [StringEntry(getAdressStatusKey(address), VERIFIED)]
8080 }
8181 }
8282
8383
8484
8585 @Callable(i)
8686 func setUserStatus (address,status) = {
8787 let account = toBase58String(i.caller.bytes)
8888 if (!(isAdmin(account)))
8989 then throw("No Access")
9090 else if (!(isStatusValid(status)))
9191 then throw("Invalid Status")
9292 else match getString(getAdressStatusKey(address)) {
9393 case t: String =>
94+[StringEntry(getAdressStatusKey(address), status)]
95+ case _ =>
9496 throw("User Not Found")
95- case _ =>
96-[StringEntry(getAdressStatusKey(address), status)]
9797 }
9898 }
9999
100100
101101 @Verifier(tx)
102102 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
103103

github/deemru/w8io/169f3d6 
31.91 ms