tx · CKXTy7STEeMVoxfMEuiYmgDHtokpGxXWFtQuzRWWcqNK

3N4ziXSMRverXyxHDUKKMR9MHXnB3TyU3Yh:  -0.01000000 Waves

2023.04.18 14:19 [2539915] smart account 3N4ziXSMRverXyxHDUKKMR9MHXnB3TyU3Yh > SELF 0.00000000 Waves

{ "type": 13, "id": "CKXTy7STEeMVoxfMEuiYmgDHtokpGxXWFtQuzRWWcqNK", "fee": 1000000, "feeAssetId": null, "timestamp": 1681816821392, "version": 2, "chainId": 84, "sender": "3N4ziXSMRverXyxHDUKKMR9MHXnB3TyU3Yh", "senderPublicKey": "EU9obW1yVhR8qug3EmXPeew3DMagvJFQzY5Ku8bmcsU7", "proofs": [ "4PD3vwcGAVbfgAFqJmCvY5tDTcMUM9d9kstRndxXvQJsPNpNm4aawfAa1d4xDrQNzAJMdxciMRxJHz85Fd246tKq" ], "script": "base64:BgIHCAISAwoBCBIAA1NFUAICX18AEGNvbnRyYWN0RmlsZW5hbWUCCXRlc3QucmlkZQEIdGhyb3dFcnIBAXMJAAIBCQCsAgIJAKwCAgUQY29udHJhY3RGaWxlbmFtZQICOiAFAXMBGWtleUFjdGl2ZU1hbmFnZXJQdWJsaWNLZXkACQC5CQIJAMwIAgICJXMJAMwIAgIQbWFuYWdlclB1YmxpY0tleQUDbmlsBQNTRVABGmtleUN1cnJlbnRNYW5hZ2VyUHVibGljS2V5AAkAuQkCCQDMCAICAiVzCQDMCAICEWtleUN1cnJlbnRNYW5hZ2VyBQNuaWwFA1NFUAEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkACQC5CQIJAMwIAgICJXMJAMwIAgIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkFA25pbAUDU0VQARprZXlTZXROZXdNYW5hZ2VyVm90ZVByZWZpeAEQbWFuYWdlclB1YmxpY0tleQkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgpzZXRNYW5hZ2VyCQDMCAIFEG1hbmFnZXJQdWJsaWNLZXkFA25pbAUDU0VQARRrZXlTZXROZXdNYW5hZ2VyVm90ZQIQbWFuYWdlclB1YmxpY0tleQVhZG1pbgkAuQkCCQDMCAIJARprZXlTZXROZXdNYW5hZ2VyVm90ZVByZWZpeAEFEG1hbmFnZXJQdWJsaWNLZXkJAMwIAgUFYWRtaW4FA25pbAUDU0VQARRnZXRTZXROZXdNYW5hZ2VyVm90ZQIFYWRtaW4QbWFuYWdlclB1YmxpY0tleQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEUa2V5U2V0TmV3TWFuYWdlclZvdGUCBQVhZG1pbgUQbWFuYWdlclB1YmxpY0tleQAAAQ9hZG1pbkFkcmVzc0xpc3QACQC5CQIJAMwIAgICJXMJAMwIAgIQYWRtaW5BZGRyZXNzTGlzdAUDbmlsBQNTRVABDWdldEFkbWluc0xpc3QACQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBD2FkbWluQWRyZXNzTGlzdAACAAUDU0VQAQ1pc0luQWRtaW5MaXN0AQdhZGRyZXNzBAckbWF0Y2gwCQDPCAIJAQ1nZXRBZG1pbnNMaXN0AAUHYWRkcmVzcwMJAAECBQckbWF0Y2gwAgNJbnQEAXQFByRtYXRjaDAGBwESZ2VuVm90ZXNLZXlzSGVscGVyAgNsc3QMYWRtaW5BZGRyZXNzBAskdDAxMzE5MTM0NQUDbHN0BAZyZXN1bHQIBQskdDAxMzE5MTM0NQJfMQQGcHJlZml4CAULJHQwMTMxOTEzNDUCXzIJAJQKAgkAzQgCBQZyZXN1bHQJALkJAgkAzAgCBQZwcmVmaXgJAMwIAgUMYWRtaW5BZGRyZXNzBQNuaWwFA1NFUAUGcHJlZml4AQxnZW5Wb3Rlc0tleXMBCWtleVByZWZpeAQJYWRtaW5MaXN0CQEPYWRtaW5BZHJlc3NMaXN0AAoAAiRsCQENZ2V0QWRtaW5zTGlzdAAKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFA25pbAUJa2V5UHJlZml4CgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARJnZW5Wb3Rlc0tleXNIZWxwZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoBEGNvdW50Vm90ZXNIZWxwZXICBnJlc3VsdAd2b3RlS2V5CQBkAgUGcmVzdWx0CQELdmFsdWVPckVsc2UCCQCfCAEFB3ZvdGVLZXkAAAEKY291bnRWb3RlcwEGcHJlZml4BAV2b3RlcwgJAQxnZW5Wb3Rlc0tleXMBBQZwcmVmaXgCXzEKAAIkbAUFdm90ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEGNvdW50Vm90ZXNIZWxwZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoBEGNsZWFyVm90ZXNIZWxwZXICBnJlc3VsdANrZXkJAM0IAgUGcmVzdWx0CQELRGVsZXRlRW50cnkBBQNrZXkBFGdldENsZWFyVm90ZXNFbnRyaWVzAQZwcmVmaXgEBXZvdGVzCAkBDGdlblZvdGVzS2V5cwEFBnByZWZpeAJfMQoAAiRsBQV2b3RlcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEQY2xlYXJWb3Rlc0hlbHBlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgEBaQEQdm90ZUZvck5ld01hbmdlcgETbmV3TWFuYWdlclB1YmxpY0tleQQTY2FsbGVyQWRkcmVzc1N0cmluZwkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzAwkBDWlzSW5BZG1pbkxpc3QBBRNjYWxsZXJBZGRyZXNzU3RyaW5nBAV2b3RlcwkBCmNvdW50Vm90ZXMBCQEaa2V5U2V0TmV3TWFuYWdlclZvdGVQcmVmaXgBBRNuZXdNYW5hZ2VyUHVibGljS2V5AwkAZgIJAGQCBQV2b3RlcwABAAEEEWNsZWFyVm90ZXNFbnRyaWVzCQEUZ2V0Q2xlYXJWb3Rlc0VudHJpZXMBCQEaa2V5U2V0TmV3TWFuYWdlclZvdGVQcmVmaXgBBRNuZXdNYW5hZ2VyUHVibGljS2V5CQDOCAIFEWNsZWFyVm90ZXNFbnRyaWVzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAFE25ld01hbmFnZXJQdWJsaWNLZXkFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFGtleVNldE5ld01hbmFnZXJWb3RlAgUTbmV3TWFuYWdlclB1YmxpY0tleQUTY2FsbGVyQWRkcmVzc1N0cmluZwABBQNuaWwJAQh0aHJvd0VycgEJAKwCAgUTY2FsbGVyQWRkcmVzc1N0cmluZwITOiBub3QgaW4gQWRtaW4gbGlzdADpgelF", "height": 2539915, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FnsZGczRfLRYUpQ5Pg9zjdd3JC9GNCVjWVP6Uq8Nk1b Next: 7JSUxBcotPbE6cWuYza6ezr7rnyVT21Y2yqermkkB9R5 Diff:
OldNewDifferences
8585 }
8686
8787
88+func clearVotesHelper (result,key) = (result :+ DeleteEntry(key))
89+
90+
91+func getClearVotesEntries (prefix) = {
92+ let votes = genVotesKeys(prefix)._1
93+ let $l = votes
94+ let $s = size($l)
95+ let $acc0 = nil
96+ func $f0_1 ($a,$i) = if (($i >= $s))
97+ then $a
98+ else clearVotesHelper($a, $l[$i])
99+
100+ func $f0_2 ($a,$i) = if (($i >= $s))
101+ then $a
102+ else throw("List size exceeds 10")
103+
104+ $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)
105+ }
106+
107+
88108 @Callable(i)
89109 func voteForNewManger (newManagerPublicKey) = {
90110 let callerAddressString = toBase58String(i.caller.bytes)
91111 if (isInAdminList(callerAddressString))
92- then nil
112+ then {
113+ let votes = countVotes(keySetNewManagerVotePrefix(newManagerPublicKey))
114+ if (((votes + 1) > 1))
115+ then {
116+ let clearVotesEntries = getClearVotesEntries(keySetNewManagerVotePrefix(newManagerPublicKey))
117+ (clearVotesEntries ++ [StringEntry(keyPendingManagerPublicKey(), newManagerPublicKey)])
118+ }
119+ else [IntegerEntry(keySetNewManagerVote(newManagerPublicKey, callerAddressString), 1)]
120+ }
93121 else throwErr((callerAddressString + ": not in Admin list"))
94122 }
95123
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 keyCurrentManagerPublicKey () = makeString(["%s", "keyCurrentManager"], SEP)
1515
1616
1717 func keyPendingManagerPublicKey () = makeString(["%s", "pendingManagerPublicKey"], SEP)
1818
1919
2020 func keySetNewManagerVotePrefix (managerPublicKey) = makeString(["%s%s%s", "setManager", managerPublicKey], SEP)
2121
2222
2323 func keySetNewManagerVote (managerPublicKey,admin) = makeString([keySetNewManagerVotePrefix(managerPublicKey), admin], SEP)
2424
2525
2626 func getSetNewManagerVote (admin,managerPublicKey) = valueOrElse(getInteger(keySetNewManagerVote(admin, managerPublicKey)), 0)
2727
2828
2929 func adminAdressList () = makeString(["%s", "adminAddressList"], SEP)
3030
3131
3232 func getAdminsList () = split(valueOrElse(getString(this, adminAdressList()), ""), SEP)
3333
3434
3535 func isInAdminList (address) = match indexOf(getAdminsList(), address) {
3636 case t: Int =>
3737 true
3838 case _ =>
3939 false
4040 }
4141
4242
4343 func genVotesKeysHelper (lst,adminAddress) = {
4444 let $t013191345 = lst
4545 let result = $t013191345._1
4646 let prefix = $t013191345._2
4747 $Tuple2((result :+ makeString([prefix, adminAddress], SEP)), prefix)
4848 }
4949
5050
5151 func genVotesKeys (keyPrefix) = {
5252 let adminList = adminAdressList()
5353 let $l = getAdminsList()
5454 let $s = size($l)
5555 let $acc0 = $Tuple2(nil, keyPrefix)
5656 func $f0_1 ($a,$i) = if (($i >= $s))
5757 then $a
5858 else genVotesKeysHelper($a, $l[$i])
5959
6060 func $f0_2 ($a,$i) = if (($i >= $s))
6161 then $a
6262 else throw("List size exceeds 10")
6363
6464 $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)
6565 }
6666
6767
6868 func countVotesHelper (result,voteKey) = (result + valueOrElse(getInteger(voteKey), 0))
6969
7070
7171 func countVotes (prefix) = {
7272 let votes = genVotesKeys(prefix)._1
7373 let $l = votes
7474 let $s = size($l)
7575 let $acc0 = 0
7676 func $f0_1 ($a,$i) = if (($i >= $s))
7777 then $a
7878 else countVotesHelper($a, $l[$i])
7979
8080 func $f0_2 ($a,$i) = if (($i >= $s))
8181 then $a
8282 else throw("List size exceeds 10")
8383
8484 $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)
8585 }
8686
8787
88+func clearVotesHelper (result,key) = (result :+ DeleteEntry(key))
89+
90+
91+func getClearVotesEntries (prefix) = {
92+ let votes = genVotesKeys(prefix)._1
93+ let $l = votes
94+ let $s = size($l)
95+ let $acc0 = nil
96+ func $f0_1 ($a,$i) = if (($i >= $s))
97+ then $a
98+ else clearVotesHelper($a, $l[$i])
99+
100+ func $f0_2 ($a,$i) = if (($i >= $s))
101+ then $a
102+ else throw("List size exceeds 10")
103+
104+ $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)
105+ }
106+
107+
88108 @Callable(i)
89109 func voteForNewManger (newManagerPublicKey) = {
90110 let callerAddressString = toBase58String(i.caller.bytes)
91111 if (isInAdminList(callerAddressString))
92- then nil
112+ then {
113+ let votes = countVotes(keySetNewManagerVotePrefix(newManagerPublicKey))
114+ if (((votes + 1) > 1))
115+ then {
116+ let clearVotesEntries = getClearVotesEntries(keySetNewManagerVotePrefix(newManagerPublicKey))
117+ (clearVotesEntries ++ [StringEntry(keyPendingManagerPublicKey(), newManagerPublicKey)])
118+ }
119+ else [IntegerEntry(keySetNewManagerVote(newManagerPublicKey, callerAddressString), 1)]
120+ }
93121 else throwErr((callerAddressString + ": not in Admin list"))
94122 }
95123
96124

github/deemru/w8io/026f985 
23.75 ms