tx · AR6YkGR42shTBWuk6u8eBmFfXR5oPExJkGxYXmv6iGzo

3N4ziXSMRverXyxHDUKKMR9MHXnB3TyU3Yh:  -0.01000000 Waves

2023.04.18 17:17 [2540089] smart account 3N4ziXSMRverXyxHDUKKMR9MHXnB3TyU3Yh > SELF 0.00000000 Waves

{ "type": 13, "id": "AR6YkGR42shTBWuk6u8eBmFfXR5oPExJkGxYXmv6iGzo", "fee": 1000000, "feeAssetId": null, "timestamp": 1681827430024, "version": 2, "chainId": 84, "sender": "3N4ziXSMRverXyxHDUKKMR9MHXnB3TyU3Yh", "senderPublicKey": "EU9obW1yVhR8qug3EmXPeew3DMagvJFQzY5Ku8bmcsU7", "proofs": [ "ngNkHFKkUgWSdRaX7PzsbsNLBwprM5zZmprZAr5tUpT52JUGR2XZH3sJ92dAGsZHJxrW2wAsiC3vxCE2CFbejAv" ], "script": "base64:BgILCAISABIDCgEIEgAVAANTRVACAl9fABBjb250cmFjdEZpbGVuYW1lAgl0ZXN0LnJpZGUBCHRocm93RXJyAQFzCQACAQkArAICCQCsAgIFEGNvbnRyYWN0RmlsZW5hbWUCAjogBQFzARlrZXlBY3RpdmVNYW5hZ2VyUHVibGljS2V5AAkAuQkCCQDMCAICAiVzCQDMCAICEG1hbmFnZXJQdWJsaWNLZXkFA25pbAUDU0VQARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAJALkJAgkAzAgCAgIlcwkAzAgCAhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQUDbmlsBQNTRVABHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAQHJG1hdGNoMAkAoggBCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgEaa2V5U2V0TmV3TWFuYWdlclZvdGVQcmVmaXgBEG1hbmFnZXJQdWJsaWNLZXkJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIKc2V0TWFuYWdlcgkAzAgCBRBtYW5hZ2VyUHVibGljS2V5BQNuaWwFA1NFUAEUa2V5U2V0TmV3TWFuYWdlclZvdGUCEG1hbmFnZXJQdWJsaWNLZXkFYWRtaW4JALkJAgkAzAgCCQEaa2V5U2V0TmV3TWFuYWdlclZvdGVQcmVmaXgBBRBtYW5hZ2VyUHVibGljS2V5CQDMCAIFBWFkbWluBQNuaWwFA1NFUAEUZ2V0U2V0TmV3TWFuYWdlclZvdGUCEG1hbmFnZXJQdWJsaWNLZXkFYWRtaW4JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFGtleVNldE5ld01hbmFnZXJWb3RlAgUQbWFuYWdlclB1YmxpY0tleQUFYWRtaW4AAAEea2V5RGVhY3RpdmF0ZU1hbmFnZXJWb3RlUHJlZml4AAkAuQkCCQDMCAICBCVzJXMJAMwIAgIRZGVhY3RpdmF0ZU1hbmFnZXIFA25pbAUDU0VQARhrZXlEZWFjdGl2YXRlTWFuYWdlclZvdGUBBWFkbWluCQC5CQIJAMwIAgkBHmtleURlYWN0aXZhdGVNYW5hZ2VyVm90ZVByZWZpeAAJAMwIAgUFYWRtaW4FA25pbAUDU0VQARhnZXREZWFjdGl2YXRlTWFuYWdlclZvdGUBBWFkbWluCQELdmFsdWVPckVsc2UCCQCfCAEJARhrZXlEZWFjdGl2YXRlTWFuYWdlclZvdGUBBQVhZG1pbgAAAQ9hZG1pbkFkcmVzc0xpc3QACQC5CQIJAMwIAgICJXMJAMwIAgIQYWRtaW5BZGRyZXNzTGlzdAUDbmlsBQNTRVABDWdldEFkbWluc0xpc3QACQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBD2FkbWluQWRyZXNzTGlzdAACAAUDU0VQAQ1pc0luQWRtaW5MaXN0AQdhZGRyZXNzBAckbWF0Y2gwCQDPCAIJAQ1nZXRBZG1pbnNMaXN0AAUHYWRkcmVzcwMJAAECBQckbWF0Y2gwAgNJbnQEAXQFByRtYXRjaDAGBwESZ2VuVm90ZXNLZXlzSGVscGVyAgNsc3QMYWRtaW5BZGRyZXNzBAskdDAxODI5MTg1NQUDbHN0BAZyZXN1bHQIBQskdDAxODI5MTg1NQJfMQQGcHJlZml4CAULJHQwMTgyOTE4NTUCXzIJAJQKAgkAzQgCBQZyZXN1bHQJALkJAgkAzAgCBQZwcmVmaXgJAMwIAgUMYWRtaW5BZGRyZXNzBQNuaWwFA1NFUAUGcHJlZml4AQxnZW5Wb3Rlc0tleXMBCWtleVByZWZpeAQJYWRtaW5MaXN0CQEPYWRtaW5BZHJlc3NMaXN0AAoAAiRsCQENZ2V0QWRtaW5zTGlzdAAKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFA25pbAUJa2V5UHJlZml4CgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARJnZW5Wb3Rlc0tleXNIZWxwZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoBEGNvdW50Vm90ZXNIZWxwZXICBnJlc3VsdAd2b3RlS2V5CQBkAgUGcmVzdWx0CQELdmFsdWVPckVsc2UCCQCfCAEFB3ZvdGVLZXkAAAEKY291bnRWb3RlcwEGcHJlZml4BAV2b3RlcwgJAQxnZW5Wb3Rlc0tleXMBBQZwcmVmaXgCXzEKAAIkbAUFdm90ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEGNvdW50Vm90ZXNIZWxwZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoBEGNsZWFyVm90ZXNIZWxwZXICBnJlc3VsdANrZXkJAM0IAgUGcmVzdWx0CQELRGVsZXRlRW50cnkBBQNrZXkBFGdldENsZWFyVm90ZXNFbnRyaWVzAQZwcmVmaXgEBXZvdGVzCAkBDGdlblZvdGVzS2V5cwEFBnByZWZpeAJfMQoAAiRsBQV2b3RlcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEQY2xlYXJWb3Rlc0hlbHBlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgMBaQEOY29uZmlybU1hbmFnZXIABAJwbQkBHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAQFaGFzUE0DCQEJaXNEZWZpbmVkAQUCcG0GCQEIdGhyb3dFcnIBAhJubyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUFaGFzUE0FBWhhc1BNBAdjaGVja1BNAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCcG0GCQEIdGhyb3dFcnIBAht5b3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUHY2hlY2tQTQUHY2hlY2tQTQkAzAgCCQELU3RyaW5nRW50cnkCCQEZa2V5QWN0aXZlTWFuYWdlclB1YmxpY0tleQAJANgEAQkBBXZhbHVlAQUCcG0FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARB2b3RlRm9yTmV3TWFuZ2VyARNuZXdNYW5hZ2VyUHVibGljS2V5BBNjYWxsZXJBZGRyZXNzU3RyaW5nCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMDCQENaXNJbkFkbWluTGlzdAEFE2NhbGxlckFkZHJlc3NTdHJpbmcDCQAAAgkBFGdldFNldE5ld01hbmFnZXJWb3RlAgUTbmV3TWFuYWdlclB1YmxpY0tleQUTY2FsbGVyQWRkcmVzc1N0cmluZwABCQEIdGhyb3dFcnIBCQCsAgIJAKwCAgkArAICCQCsAgICCUFkZHJlc3M6IAUTY2FsbGVyQWRkcmVzc1N0cmluZwINIE5ld01hbmFnZXI6IAUTbmV3TWFuYWdlclB1YmxpY0tleQIlIHZvdGVGb3JOZXdNYW5nZXIoKSB5b3UgYWxyZWFkeSB2b3RlZAQFdm90ZXMJAQpjb3VudFZvdGVzAQkBGmtleVNldE5ld01hbmFnZXJWb3RlUHJlZml4AQUTbmV3TWFuYWdlclB1YmxpY0tleQMJAGcCCQBkAgUFdm90ZXMAAQACBBFjbGVhclZvdGVzRW50cmllcwkBFGdldENsZWFyVm90ZXNFbnRyaWVzAQkBGmtleVNldE5ld01hbmFnZXJWb3RlUHJlZml4AQUTbmV3TWFuYWdlclB1YmxpY0tleQkAzggCBRFjbGVhclZvdGVzRW50cmllcwkAzAgCCQELU3RyaW5nRW50cnkCCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkABRNuZXdNYW5hZ2VyUHVibGljS2V5BQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJARRrZXlTZXROZXdNYW5hZ2VyVm90ZQIFE25ld01hbmFnZXJQdWJsaWNLZXkFE2NhbGxlckFkZHJlc3NTdHJpbmcAAQUDbmlsCQEIdGhyb3dFcnIBCQCsAgIJAKwCAgIJQWRkcmVzczogBRNjYWxsZXJBZGRyZXNzU3RyaW5nAhIgbm90IGluIEFkbWluIGxpc3QBaQERZGVhY3RpdmF0ZU1hbmFnZXIABBNjYWxsZXJBZGRyZXNzU3RyaW5nCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEFHBlbmRpbmdNYW5hZ2VyU3RyaW5nCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAwkBDWlzSW5BZG1pbkxpc3QBBRNjYWxsZXJBZGRyZXNzU3RyaW5nAwkAAAIJARhnZXREZWFjdGl2YXRlTWFuYWdlclZvdGUBBRNjYWxsZXJBZGRyZXNzU3RyaW5nAAEJAQh0aHJvd0VycgEJAKwCAgkArAICAglBZGRyZXNzOiAFE2NhbGxlckFkZHJlc3NTdHJpbmcCJiBkZWFjdGl2YXRlTWFuYWdlcigpIHlvdSBhbHJlYWR5IHZvdGVkBAV2b3RlcwkBCmNvdW50Vm90ZXMBCQEea2V5RGVhY3RpdmF0ZU1hbmFnZXJWb3RlUHJlZml4AAMJAGcCCQBkAgUFdm90ZXMAAQABBBFjbGVhclZvdGVzRW50cmllcwkBFGdldENsZWFyVm90ZXNFbnRyaWVzAQkBHmtleURlYWN0aXZhdGVNYW5hZ2VyVm90ZVByZWZpeAAJAM4IAgURY2xlYXJWb3Rlc0VudHJpZXMJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGWtleUFjdGl2ZU1hbmFnZXJQdWJsaWNLZXkABQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJARhrZXlEZWFjdGl2YXRlTWFuYWdlclZvdGUBBRNjYWxsZXJBZGRyZXNzU3RyaW5nAAEFA25pbAkBCHRocm93RXJyAQkArAICCQCsAgICCUFkZHJlc3M6IAUTY2FsbGVyQWRkcmVzc1N0cmluZwISIG5vdCBpbiBBZG1pbiBsaXN0AMtx+dw=", "height": 2540089, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DyfEUMjxzzXeydsTn1xjZi2aKd7W1j91MeFiouDRgkVt Next: GsD4d3LYof1YEMvpY3Hzun1XuaSuwygvoRQsjbxTsTJk Diff:
OldNewDifferences
173173 if (((votes + 1) >= 1))
174174 then {
175175 let clearVotesEntries = getClearVotesEntries(keyDeactivateManagerVotePrefix())
176- (clearVotesEntries ++ [StringEntry(keyActiveManagerPublicKey(), pendingManagerString)])
176+ (clearVotesEntries ++ [DeleteEntry(keyActiveManagerPublicKey())])
177177 }
178178 else [IntegerEntry(keyDeactivateManagerVote(callerAddressString), 1)]
179179 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let SEP = "__"
55
66 let contractFilename = "test.ride"
77
88 func throwErr (s) = throw(((contractFilename + ": ") + s))
99
1010
1111 func keyActiveManagerPublicKey () = makeString(["%s", "managerPublicKey"], SEP)
1212
1313
1414 func keyPendingManagerPublicKey () = makeString(["%s", "pendingManagerPublicKey"], SEP)
1515
1616
1717 func pendingManagerPublicKeyOrUnit () = match getString(keyPendingManagerPublicKey()) {
1818 case s: String =>
1919 fromBase58String(s)
2020 case _: Unit =>
2121 unit
2222 case _ =>
2323 throw("Match error")
2424 }
2525
2626
2727 func keySetNewManagerVotePrefix (managerPublicKey) = makeString(["%s%s%s", "setManager", managerPublicKey], SEP)
2828
2929
3030 func keySetNewManagerVote (managerPublicKey,admin) = makeString([keySetNewManagerVotePrefix(managerPublicKey), admin], SEP)
3131
3232
3333 func getSetNewManagerVote (managerPublicKey,admin) = valueOrElse(getInteger(keySetNewManagerVote(managerPublicKey, admin)), 0)
3434
3535
3636 func keyDeactivateManagerVotePrefix () = makeString(["%s%s", "deactivateManager"], SEP)
3737
3838
3939 func keyDeactivateManagerVote (admin) = makeString([keyDeactivateManagerVotePrefix(), admin], SEP)
4040
4141
4242 func getDeactivateManagerVote (admin) = valueOrElse(getInteger(keyDeactivateManagerVote(admin)), 0)
4343
4444
4545 func adminAdressList () = makeString(["%s", "adminAddressList"], SEP)
4646
4747
4848 func getAdminsList () = split(valueOrElse(getString(this, adminAdressList()), ""), SEP)
4949
5050
5151 func isInAdminList (address) = match indexOf(getAdminsList(), address) {
5252 case t: Int =>
5353 true
5454 case _ =>
5555 false
5656 }
5757
5858
5959 func genVotesKeysHelper (lst,adminAddress) = {
6060 let $t018291855 = lst
6161 let result = $t018291855._1
6262 let prefix = $t018291855._2
6363 $Tuple2((result :+ makeString([prefix, adminAddress], SEP)), prefix)
6464 }
6565
6666
6767 func genVotesKeys (keyPrefix) = {
6868 let adminList = adminAdressList()
6969 let $l = getAdminsList()
7070 let $s = size($l)
7171 let $acc0 = $Tuple2(nil, keyPrefix)
7272 func $f0_1 ($a,$i) = if (($i >= $s))
7373 then $a
7474 else genVotesKeysHelper($a, $l[$i])
7575
7676 func $f0_2 ($a,$i) = if (($i >= $s))
7777 then $a
7878 else throw("List size exceeds 10")
7979
8080 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
8181 }
8282
8383
8484 func countVotesHelper (result,voteKey) = (result + valueOrElse(getInteger(voteKey), 0))
8585
8686
8787 func countVotes (prefix) = {
8888 let votes = genVotesKeys(prefix)._1
8989 let $l = votes
9090 let $s = size($l)
9191 let $acc0 = 0
9292 func $f0_1 ($a,$i) = if (($i >= $s))
9393 then $a
9494 else countVotesHelper($a, $l[$i])
9595
9696 func $f0_2 ($a,$i) = if (($i >= $s))
9797 then $a
9898 else throw("List size exceeds 10")
9999
100100 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
101101 }
102102
103103
104104 func clearVotesHelper (result,key) = (result :+ DeleteEntry(key))
105105
106106
107107 func getClearVotesEntries (prefix) = {
108108 let votes = genVotesKeys(prefix)._1
109109 let $l = votes
110110 let $s = size($l)
111111 let $acc0 = nil
112112 func $f0_1 ($a,$i) = if (($i >= $s))
113113 then $a
114114 else clearVotesHelper($a, $l[$i])
115115
116116 func $f0_2 ($a,$i) = if (($i >= $s))
117117 then $a
118118 else throw("List size exceeds 10")
119119
120120 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
121121 }
122122
123123
124124 @Callable(i)
125125 func confirmManager () = {
126126 let pm = pendingManagerPublicKeyOrUnit()
127127 let hasPM = if (isDefined(pm))
128128 then true
129129 else throwErr("no pending manager")
130130 if ((hasPM == hasPM))
131131 then {
132132 let checkPM = if ((i.callerPublicKey == value(pm)))
133133 then true
134134 else throwErr("you are not pending manager")
135135 if ((checkPM == checkPM))
136136 then [StringEntry(keyActiveManagerPublicKey(), toBase58String(value(pm)))]
137137 else throw("Strict value is not equal to itself.")
138138 }
139139 else throw("Strict value is not equal to itself.")
140140 }
141141
142142
143143
144144 @Callable(i)
145145 func voteForNewManger (newManagerPublicKey) = {
146146 let callerAddressString = toBase58String(i.caller.bytes)
147147 if (isInAdminList(callerAddressString))
148148 then if ((getSetNewManagerVote(newManagerPublicKey, callerAddressString) == 1))
149149 then throwErr((((("Address: " + callerAddressString) + " NewManager: ") + newManagerPublicKey) + " voteForNewManger() you already voted"))
150150 else {
151151 let votes = countVotes(keySetNewManagerVotePrefix(newManagerPublicKey))
152152 if (((votes + 1) >= 2))
153153 then {
154154 let clearVotesEntries = getClearVotesEntries(keySetNewManagerVotePrefix(newManagerPublicKey))
155155 (clearVotesEntries ++ [StringEntry(keyPendingManagerPublicKey(), newManagerPublicKey)])
156156 }
157157 else [IntegerEntry(keySetNewManagerVote(newManagerPublicKey, callerAddressString), 1)]
158158 }
159159 else throwErr((("Address: " + callerAddressString) + " not in Admin list"))
160160 }
161161
162162
163163
164164 @Callable(i)
165165 func deactivateManager () = {
166166 let callerAddressString = toBase58String(i.caller.bytes)
167167 let pendingManagerString = getStringValue(keyPendingManagerPublicKey())
168168 if (isInAdminList(callerAddressString))
169169 then if ((getDeactivateManagerVote(callerAddressString) == 1))
170170 then throwErr((("Address: " + callerAddressString) + " deactivateManager() you already voted"))
171171 else {
172172 let votes = countVotes(keyDeactivateManagerVotePrefix())
173173 if (((votes + 1) >= 1))
174174 then {
175175 let clearVotesEntries = getClearVotesEntries(keyDeactivateManagerVotePrefix())
176- (clearVotesEntries ++ [StringEntry(keyActiveManagerPublicKey(), pendingManagerString)])
176+ (clearVotesEntries ++ [DeleteEntry(keyActiveManagerPublicKey())])
177177 }
178178 else [IntegerEntry(keyDeactivateManagerVote(callerAddressString), 1)]
179179 }
180180 else throwErr((("Address: " + callerAddressString) + " not in Admin list"))
181181 }
182182
183183

github/deemru/w8io/169f3d6 
37.54 ms