tx · GsD4d3LYof1YEMvpY3Hzun1XuaSuwygvoRQsjbxTsTJk

3N4ziXSMRverXyxHDUKKMR9MHXnB3TyU3Yh:  -0.01000000 Waves

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

{ "type": 13, "id": "GsD4d3LYof1YEMvpY3Hzun1XuaSuwygvoRQsjbxTsTJk", "fee": 1000000, "feeAssetId": null, "timestamp": 1681827897162, "version": 2, "chainId": 84, "sender": "3N4ziXSMRverXyxHDUKKMR9MHXnB3TyU3Yh", "senderPublicKey": "EU9obW1yVhR8qug3EmXPeew3DMagvJFQzY5Ku8bmcsU7", "proofs": [ "4bHFQ6ZmMcZcoQDu6BNPBStkxfKckq4f5kMjCU52wx4zrmwEzmTvuEEFo2fFTt36sCReE75rRjWZnzHg6TnQ7xNJ" ], "script": "base64:BgINCAISABIDCgEIEgASABgAA1NFUAICX18AEGNvbnRyYWN0RmlsZW5hbWUCCXRlc3QucmlkZQEIdGhyb3dFcnIBAXMJAAIBCQCsAgIJAKwCAgUQY29udHJhY3RGaWxlbmFtZQICOiAFAXMBGWtleUFjdGl2ZU1hbmFnZXJQdWJsaWNLZXkACQC5CQIJAMwIAgICJXMJAMwIAgIQbWFuYWdlclB1YmxpY0tleQUDbmlsBQNTRVABGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAkAuQkCCQDMCAICAiVzCQDMCAICF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BQNuaWwFA1NFUAEdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQABAckbWF0Y2gwCQCiCAEJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yARprZXlTZXROZXdNYW5hZ2VyVm90ZVByZWZpeAEQbWFuYWdlclB1YmxpY0tleQkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgpzZXRNYW5hZ2VyCQDMCAIFEG1hbmFnZXJQdWJsaWNLZXkFA25pbAUDU0VQARRrZXlTZXROZXdNYW5hZ2VyVm90ZQIQbWFuYWdlclB1YmxpY0tleQVhZG1pbgkAuQkCCQDMCAIJARprZXlTZXROZXdNYW5hZ2VyVm90ZVByZWZpeAEFEG1hbmFnZXJQdWJsaWNLZXkJAMwIAgUFYWRtaW4FA25pbAUDU0VQARRnZXRTZXROZXdNYW5hZ2VyVm90ZQIQbWFuYWdlclB1YmxpY0tleQVhZG1pbgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEUa2V5U2V0TmV3TWFuYWdlclZvdGUCBRBtYW5hZ2VyUHVibGljS2V5BQVhZG1pbgAAAR5rZXlEZWFjdGl2YXRlTWFuYWdlclZvdGVQcmVmaXgACQC5CQIJAMwIAgIEJXMlcwkAzAgCAhFkZWFjdGl2YXRlTWFuYWdlcgUDbmlsBQNTRVABGGtleURlYWN0aXZhdGVNYW5hZ2VyVm90ZQEFYWRtaW4JALkJAgkAzAgCCQEea2V5RGVhY3RpdmF0ZU1hbmFnZXJWb3RlUHJlZml4AAkAzAgCBQVhZG1pbgUDbmlsBQNTRVABGGdldERlYWN0aXZhdGVNYW5hZ2VyVm90ZQEFYWRtaW4JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBGGtleURlYWN0aXZhdGVNYW5hZ2VyVm90ZQEFBWFkbWluAAABHGtleUFjdGl2YXRlTWFuYWdlclZvdGVQcmVmaXgACQC5CQIJAMwIAgIEJXMlcwkAzAgCAg9hY3RpdmF0ZU1hbmFnZXIFA25pbAUDU0VQARZrZXlBY3RpdmF0ZU1hbmFnZXJWb3RlAQVhZG1pbgkAuQkCCQDMCAIJARxrZXlBY3RpdmF0ZU1hbmFnZXJWb3RlUHJlZml4AAkAzAgCBQVhZG1pbgUDbmlsBQNTRVABFmdldEFjdGl2YXRlTWFuYWdlclZvdGUBBWFkbWluCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlBY3RpdmF0ZU1hbmFnZXJWb3RlAQUFYWRtaW4AAAEPYWRtaW5BZHJlc3NMaXN0AAkAuQkCCQDMCAICAiVzCQDMCAICEGFkbWluQWRkcmVzc0xpc3QFA25pbAUDU0VQAQ1nZXRBZG1pbnNMaXN0AAkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ9hZG1pbkFkcmVzc0xpc3QAAgAFA1NFUAENaXNJbkFkbWluTGlzdAEHYWRkcmVzcwQHJG1hdGNoMAkAzwgCCQENZ2V0QWRtaW5zTGlzdAAFB2FkZHJlc3MDCQABAgUHJG1hdGNoMAIDSW50BAF0BQckbWF0Y2gwBgcBEmdlblZvdGVzS2V5c0hlbHBlcgIDbHN0DGFkbWluQWRkcmVzcwQLJHQwMjE2NDIxOTAFA2xzdAQGcmVzdWx0CAULJHQwMjE2NDIxOTACXzEEBnByZWZpeAgFCyR0MDIxNjQyMTkwAl8yCQCUCgIJAM0IAgUGcmVzdWx0CQC5CQIJAMwIAgUGcHJlZml4CQDMCAIFDGFkbWluQWRkcmVzcwUDbmlsBQNTRVAFBnByZWZpeAEMZ2VuVm90ZXNLZXlzAQlrZXlQcmVmaXgECWFkbWluTGlzdAkBD2FkbWluQWRyZXNzTGlzdAAKAAIkbAkBDWdldEFkbWluc0xpc3QACgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQNuaWwFCWtleVByZWZpeAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQESZ2VuVm90ZXNLZXlzSGVscGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKARBjb3VudFZvdGVzSGVscGVyAgZyZXN1bHQHdm90ZUtleQkAZAIFBnJlc3VsdAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQd2b3RlS2V5AAABCmNvdW50Vm90ZXMBBnByZWZpeAQFdm90ZXMICQEMZ2VuVm90ZXNLZXlzAQUGcHJlZml4Al8xCgACJGwFBXZvdGVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARBjb3VudFZvdGVzSGVscGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKARBjbGVhclZvdGVzSGVscGVyAgZyZXN1bHQDa2V5CQDNCAIFBnJlc3VsdAkBC0RlbGV0ZUVudHJ5AQUDa2V5ARRnZXRDbGVhclZvdGVzRW50cmllcwEGcHJlZml4BAV2b3RlcwgJAQxnZW5Wb3Rlc0tleXMBBQZwcmVmaXgCXzEKAAIkbAUFdm90ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEGNsZWFyVm90ZXNIZWxwZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoEAWkBDmNvbmZpcm1NYW5hZ2VyAAQCcG0JAR1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdAAEBWhhc1BNAwkBCWlzRGVmaW5lZAEFAnBtBgkBCHRocm93RXJyAQISbm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFBWhhc1BNBQVoYXNQTQQHY2hlY2tQTQMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAnBtBgkBCHRocm93RXJyAQIbeW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFB2NoZWNrUE0FB2NoZWNrUE0JAMwIAgkBC1N0cmluZ0VudHJ5AgkBGWtleUFjdGl2ZU1hbmFnZXJQdWJsaWNLZXkACQDYBAEJAQV2YWx1ZQEFAnBtBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEQdm90ZUZvck5ld01hbmdlcgETbmV3TWFuYWdlclB1YmxpY0tleQQTY2FsbGVyQWRkcmVzc1N0cmluZwkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzAwkBDWlzSW5BZG1pbkxpc3QBBRNjYWxsZXJBZGRyZXNzU3RyaW5nAwkAAAIJARRnZXRTZXROZXdNYW5hZ2VyVm90ZQIFE25ld01hbmFnZXJQdWJsaWNLZXkFE2NhbGxlckFkZHJlc3NTdHJpbmcAAQkBCHRocm93RXJyAQkArAICCQCsAgIJAKwCAgkArAICAglBZGRyZXNzOiAFE2NhbGxlckFkZHJlc3NTdHJpbmcCDSBOZXdNYW5hZ2VyOiAFE25ld01hbmFnZXJQdWJsaWNLZXkCJSB2b3RlRm9yTmV3TWFuZ2VyKCkgeW91IGFscmVhZHkgdm90ZWQEBXZvdGVzCQEKY291bnRWb3RlcwEJARprZXlTZXROZXdNYW5hZ2VyVm90ZVByZWZpeAEFE25ld01hbmFnZXJQdWJsaWNLZXkDCQBnAgkAZAIFBXZvdGVzAAEAAgQRY2xlYXJWb3Rlc0VudHJpZXMJARRnZXRDbGVhclZvdGVzRW50cmllcwEJARprZXlTZXROZXdNYW5hZ2VyVm90ZVByZWZpeAEFE25ld01hbmFnZXJQdWJsaWNLZXkJAM4IAgURY2xlYXJWb3Rlc0VudHJpZXMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAUTbmV3TWFuYWdlclB1YmxpY0tleQUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEUa2V5U2V0TmV3TWFuYWdlclZvdGUCBRNuZXdNYW5hZ2VyUHVibGljS2V5BRNjYWxsZXJBZGRyZXNzU3RyaW5nAAEFA25pbAkBCHRocm93RXJyAQkArAICCQCsAgICCUFkZHJlc3M6IAUTY2FsbGVyQWRkcmVzc1N0cmluZwISIG5vdCBpbiBBZG1pbiBsaXN0AWkBEWRlYWN0aXZhdGVNYW5hZ2VyAAQTY2FsbGVyQWRkcmVzc1N0cmluZwkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzAwkBDWlzSW5BZG1pbkxpc3QBBRNjYWxsZXJBZGRyZXNzU3RyaW5nAwkAAAIJARhnZXREZWFjdGl2YXRlTWFuYWdlclZvdGUBBRNjYWxsZXJBZGRyZXNzU3RyaW5nAAEJAQh0aHJvd0VycgEJAKwCAgkArAICAglBZGRyZXNzOiAFE2NhbGxlckFkZHJlc3NTdHJpbmcCJiBkZWFjdGl2YXRlTWFuYWdlcigpIHlvdSBhbHJlYWR5IHZvdGVkBAV2b3RlcwkBCmNvdW50Vm90ZXMBCQEea2V5RGVhY3RpdmF0ZU1hbmFnZXJWb3RlUHJlZml4AAMJAGcCCQBkAgUFdm90ZXMAAQABBBFjbGVhclZvdGVzRW50cmllcwkBFGdldENsZWFyVm90ZXNFbnRyaWVzAQkBHmtleURlYWN0aXZhdGVNYW5hZ2VyVm90ZVByZWZpeAAJAM4IAgURY2xlYXJWb3Rlc0VudHJpZXMJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGWtleUFjdGl2ZU1hbmFnZXJQdWJsaWNLZXkABQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJARhrZXlEZWFjdGl2YXRlTWFuYWdlclZvdGUBBRNjYWxsZXJBZGRyZXNzU3RyaW5nAAEFA25pbAkBCHRocm93RXJyAQkArAICCQCsAgICCUFkZHJlc3M6IAUTY2FsbGVyQWRkcmVzc1N0cmluZwISIG5vdCBpbiBBZG1pbiBsaXN0AWkBD2FjdGl2YXRlTWFuYWdlcgAEE2NhbGxlckFkZHJlc3NTdHJpbmcJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQUcGVuZGluZ01hbmFnZXJTdHJpbmcJARFAZXh0ck5hdGl2ZSgxMDU4KQEJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQADCQENaXNJbkFkbWluTGlzdAEFE2NhbGxlckFkZHJlc3NTdHJpbmcDCQAAAgkBFmdldEFjdGl2YXRlTWFuYWdlclZvdGUBBRNjYWxsZXJBZGRyZXNzU3RyaW5nAAEJAQh0aHJvd0VycgEJAKwCAgkArAICAglBZGRyZXNzOiAFE2NhbGxlckFkZHJlc3NTdHJpbmcCJCBhY3RpdmF0ZU1hbmFnZXIoKSB5b3UgYWxyZWFkeSB2b3RlZAQFdm90ZXMJAQpjb3VudFZvdGVzAQkBHGtleUFjdGl2YXRlTWFuYWdlclZvdGVQcmVmaXgAAwkAZwIJAGQCBQV2b3RlcwABAAIEEWNsZWFyVm90ZXNFbnRyaWVzCQEUZ2V0Q2xlYXJWb3Rlc0VudHJpZXMBCQEca2V5QWN0aXZhdGVNYW5hZ2VyVm90ZVByZWZpeAAJAM4IAgURY2xlYXJWb3Rlc0VudHJpZXMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBGWtleUFjdGl2ZU1hbmFnZXJQdWJsaWNLZXkABRRwZW5kaW5nTWFuYWdlclN0cmluZwUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5QWN0aXZhdGVNYW5hZ2VyVm90ZQEFE2NhbGxlckFkZHJlc3NTdHJpbmcAAQUDbmlsCQEIdGhyb3dFcnIBCQCsAgIJAKwCAgIJQWRkcmVzczogBRNjYWxsZXJBZGRyZXNzU3RyaW5nAhIgbm90IGluIEFkbWluIGxpc3QAkuYW7w==", "height": 2540095, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: AR6YkGR42shTBWuk6u8eBmFfXR5oPExJkGxYXmv6iGzo Next: CbYhGEjzPX1JjdCuyLLsou7jLwXwBGooHPFCbrykkgar Diff:
OldNewDifferences
4242 func getDeactivateManagerVote (admin) = valueOrElse(getInteger(keyDeactivateManagerVote(admin)), 0)
4343
4444
45+func keyActivateManagerVotePrefix () = makeString(["%s%s", "activateManager"], SEP)
46+
47+
48+func keyActivateManagerVote (admin) = makeString([keyActivateManagerVotePrefix(), admin], SEP)
49+
50+
51+func getActivateManagerVote (admin) = valueOrElse(getInteger(keyActivateManagerVote(admin)), 0)
52+
53+
4554 func adminAdressList () = makeString(["%s", "adminAddressList"], SEP)
4655
4756
5766
5867
5968 func genVotesKeysHelper (lst,adminAddress) = {
60- let $t018291855 = lst
61- let result = $t018291855._1
62- let prefix = $t018291855._2
69+ let $t021642190 = lst
70+ let result = $t021642190._1
71+ let prefix = $t021642190._2
6372 $Tuple2((result :+ makeString([prefix, adminAddress], SEP)), prefix)
6473 }
6574
164173 @Callable(i)
165174 func deactivateManager () = {
166175 let callerAddressString = toBase58String(i.caller.bytes)
167- let pendingManagerString = getStringValue(keyPendingManagerPublicKey())
168176 if (isInAdminList(callerAddressString))
169177 then if ((getDeactivateManagerVote(callerAddressString) == 1))
170178 then throwErr((("Address: " + callerAddressString) + " deactivateManager() you already voted"))
181189 }
182190
183191
192+
193+@Callable(i)
194+func activateManager () = {
195+ let callerAddressString = toBase58String(i.caller.bytes)
196+ let pendingManagerString = getStringValue(keyPendingManagerPublicKey())
197+ if (isInAdminList(callerAddressString))
198+ then if ((getActivateManagerVote(callerAddressString) == 1))
199+ then throwErr((("Address: " + callerAddressString) + " activateManager() you already voted"))
200+ else {
201+ let votes = countVotes(keyActivateManagerVotePrefix())
202+ if (((votes + 1) >= 2))
203+ then {
204+ let clearVotesEntries = getClearVotesEntries(keyActivateManagerVotePrefix())
205+ (clearVotesEntries ++ [StringEntry(keyActiveManagerPublicKey(), pendingManagerString)])
206+ }
207+ else [IntegerEntry(keyActivateManagerVote(callerAddressString), 1)]
208+ }
209+ else throwErr((("Address: " + callerAddressString) + " not in Admin list"))
210+ }
211+
212+
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
45+func keyActivateManagerVotePrefix () = makeString(["%s%s", "activateManager"], SEP)
46+
47+
48+func keyActivateManagerVote (admin) = makeString([keyActivateManagerVotePrefix(), admin], SEP)
49+
50+
51+func getActivateManagerVote (admin) = valueOrElse(getInteger(keyActivateManagerVote(admin)), 0)
52+
53+
4554 func adminAdressList () = makeString(["%s", "adminAddressList"], SEP)
4655
4756
4857 func getAdminsList () = split(valueOrElse(getString(this, adminAdressList()), ""), SEP)
4958
5059
5160 func isInAdminList (address) = match indexOf(getAdminsList(), address) {
5261 case t: Int =>
5362 true
5463 case _ =>
5564 false
5665 }
5766
5867
5968 func genVotesKeysHelper (lst,adminAddress) = {
60- let $t018291855 = lst
61- let result = $t018291855._1
62- let prefix = $t018291855._2
69+ let $t021642190 = lst
70+ let result = $t021642190._1
71+ let prefix = $t021642190._2
6372 $Tuple2((result :+ makeString([prefix, adminAddress], SEP)), prefix)
6473 }
6574
6675
6776 func genVotesKeys (keyPrefix) = {
6877 let adminList = adminAdressList()
6978 let $l = getAdminsList()
7079 let $s = size($l)
7180 let $acc0 = $Tuple2(nil, keyPrefix)
7281 func $f0_1 ($a,$i) = if (($i >= $s))
7382 then $a
7483 else genVotesKeysHelper($a, $l[$i])
7584
7685 func $f0_2 ($a,$i) = if (($i >= $s))
7786 then $a
7887 else throw("List size exceeds 10")
7988
8089 $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)
8190 }
8291
8392
8493 func countVotesHelper (result,voteKey) = (result + valueOrElse(getInteger(voteKey), 0))
8594
8695
8796 func countVotes (prefix) = {
8897 let votes = genVotesKeys(prefix)._1
8998 let $l = votes
9099 let $s = size($l)
91100 let $acc0 = 0
92101 func $f0_1 ($a,$i) = if (($i >= $s))
93102 then $a
94103 else countVotesHelper($a, $l[$i])
95104
96105 func $f0_2 ($a,$i) = if (($i >= $s))
97106 then $a
98107 else throw("List size exceeds 10")
99108
100109 $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)
101110 }
102111
103112
104113 func clearVotesHelper (result,key) = (result :+ DeleteEntry(key))
105114
106115
107116 func getClearVotesEntries (prefix) = {
108117 let votes = genVotesKeys(prefix)._1
109118 let $l = votes
110119 let $s = size($l)
111120 let $acc0 = nil
112121 func $f0_1 ($a,$i) = if (($i >= $s))
113122 then $a
114123 else clearVotesHelper($a, $l[$i])
115124
116125 func $f0_2 ($a,$i) = if (($i >= $s))
117126 then $a
118127 else throw("List size exceeds 10")
119128
120129 $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)
121130 }
122131
123132
124133 @Callable(i)
125134 func confirmManager () = {
126135 let pm = pendingManagerPublicKeyOrUnit()
127136 let hasPM = if (isDefined(pm))
128137 then true
129138 else throwErr("no pending manager")
130139 if ((hasPM == hasPM))
131140 then {
132141 let checkPM = if ((i.callerPublicKey == value(pm)))
133142 then true
134143 else throwErr("you are not pending manager")
135144 if ((checkPM == checkPM))
136145 then [StringEntry(keyActiveManagerPublicKey(), toBase58String(value(pm)))]
137146 else throw("Strict value is not equal to itself.")
138147 }
139148 else throw("Strict value is not equal to itself.")
140149 }
141150
142151
143152
144153 @Callable(i)
145154 func voteForNewManger (newManagerPublicKey) = {
146155 let callerAddressString = toBase58String(i.caller.bytes)
147156 if (isInAdminList(callerAddressString))
148157 then if ((getSetNewManagerVote(newManagerPublicKey, callerAddressString) == 1))
149158 then throwErr((((("Address: " + callerAddressString) + " NewManager: ") + newManagerPublicKey) + " voteForNewManger() you already voted"))
150159 else {
151160 let votes = countVotes(keySetNewManagerVotePrefix(newManagerPublicKey))
152161 if (((votes + 1) >= 2))
153162 then {
154163 let clearVotesEntries = getClearVotesEntries(keySetNewManagerVotePrefix(newManagerPublicKey))
155164 (clearVotesEntries ++ [StringEntry(keyPendingManagerPublicKey(), newManagerPublicKey)])
156165 }
157166 else [IntegerEntry(keySetNewManagerVote(newManagerPublicKey, callerAddressString), 1)]
158167 }
159168 else throwErr((("Address: " + callerAddressString) + " not in Admin list"))
160169 }
161170
162171
163172
164173 @Callable(i)
165174 func deactivateManager () = {
166175 let callerAddressString = toBase58String(i.caller.bytes)
167- let pendingManagerString = getStringValue(keyPendingManagerPublicKey())
168176 if (isInAdminList(callerAddressString))
169177 then if ((getDeactivateManagerVote(callerAddressString) == 1))
170178 then throwErr((("Address: " + callerAddressString) + " deactivateManager() you already voted"))
171179 else {
172180 let votes = countVotes(keyDeactivateManagerVotePrefix())
173181 if (((votes + 1) >= 1))
174182 then {
175183 let clearVotesEntries = getClearVotesEntries(keyDeactivateManagerVotePrefix())
176184 (clearVotesEntries ++ [DeleteEntry(keyActiveManagerPublicKey())])
177185 }
178186 else [IntegerEntry(keyDeactivateManagerVote(callerAddressString), 1)]
179187 }
180188 else throwErr((("Address: " + callerAddressString) + " not in Admin list"))
181189 }
182190
183191
192+
193+@Callable(i)
194+func activateManager () = {
195+ let callerAddressString = toBase58String(i.caller.bytes)
196+ let pendingManagerString = getStringValue(keyPendingManagerPublicKey())
197+ if (isInAdminList(callerAddressString))
198+ then if ((getActivateManagerVote(callerAddressString) == 1))
199+ then throwErr((("Address: " + callerAddressString) + " activateManager() you already voted"))
200+ else {
201+ let votes = countVotes(keyActivateManagerVotePrefix())
202+ if (((votes + 1) >= 2))
203+ then {
204+ let clearVotesEntries = getClearVotesEntries(keyActivateManagerVotePrefix())
205+ (clearVotesEntries ++ [StringEntry(keyActiveManagerPublicKey(), pendingManagerString)])
206+ }
207+ else [IntegerEntry(keyActivateManagerVote(callerAddressString), 1)]
208+ }
209+ else throwErr((("Address: " + callerAddressString) + " not in Admin list"))
210+ }
211+
212+

github/deemru/w8io/873ac7e 
38.79 ms