tx · FSD43hVThB4AhJGhYFs4mn7ukcwkSkGQroLYD33xAHPc

3MwyBKGZcdChEK9Z55HwLn3A2EgwEJJpqC1:  -0.01000000 Waves

2020.10.14 11:01 [1219964] smart account 3MwyBKGZcdChEK9Z55HwLn3A2EgwEJJpqC1 > SELF 0.00000000 Waves

{ "type": 13, "id": "FSD43hVThB4AhJGhYFs4mn7ukcwkSkGQroLYD33xAHPc", "fee": 1000000, "feeAssetId": null, "timestamp": 1602662467551, "version": 2, "chainId": 84, "sender": "3MwyBKGZcdChEK9Z55HwLn3A2EgwEJJpqC1", "senderPublicKey": "7c3qLtcJ7EaPS2JDjXv8MBbd4kpyc6R27wcn5GgvZhur", "proofs": [ "3ts8VWrEoHgn6sXFkDZxY2W7Vs51Fob2hsLdXzhf3ESJgEJNakF9zd5vdUbRNg3cZqoHuAXRMRscaKyk2JcpP55L" ], "script": "base64:AAIEAAAAAAAAAAsIAhIDCgEIEgASAAAAAAYAAAAABk5TQlRpZAkAAlkAAAABCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwIAAAAGTlNCVGlkAgAAACBOU0JUaWQgaXMgbm90IHNwZWNpZmllZCBpbiBzdGF0ZQAAAAAJaGVpZ2h0RW5kCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwIAAAAKaGVpZ2h0X2VuZAIAAAAkaGVpZ2h0X2VuZCBpcyBub3Qgc3BlY2lmaWVkIGluIHN0YXRlAAAAAAxhc3NldHNTdHJpbmcJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAR0aGlzAgAAABBhdmFpbGFibGVfYXNzZXRzAgAAACVBc3NldHMgbGlzdCBpcyBub3Qgc3BlY2lmaWVkIGluIHN0YXRlAAAAAAZhc3NldHMJAAS1AAAAAgUAAAAMYXNzZXRzU3RyaW5nAgAAAAEsAQAAAA5rZXlVc2VyQmFsYW5jZQAAAAEAAAAIdXNlckFkZHIJAAS5AAAAAgkABEwAAAACAgAAAAdiYWxhbmNlCQAETAAAAAIJAAQlAAAAAQUAAAAIdXNlckFkZHIFAAAAA25pbAIAAAABXwEAAAATa2V5VXNlckFzc2V0QmFsYW5jZQAAAAIAAAAIdXNlckFkZHIAAAAEdm90ZQkABLkAAAACCQAETAAAAAICAAAABHZvdGUJAARMAAAAAgUAAAAIdXNlckFkZHIJAARMAAAAAgUAAAAEdm90ZQUAAAADbmlsAgAAAAFfAAAAAwAAAApjb250ZXh0T2JqAQAAAAhjYXN0Vm90ZQAAAAEAAAAEdm90ZQMJAAAAAAAAAgkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAABmFzc2V0cwUAAAAEdm90ZQcJAAACAAAAAQIAAAAPSW5jb3JyZWN0IHZvdGUhBAAAAAh2b2l0ZUtleQkABLkAAAACCQAETAAAAAICAAAABHZvdGUJAARMAAAAAgUAAAAEdm90ZQUAAAADbmlsAgAAAAFfBAAAAA52b3RlQWRkcmVzc0tleQkBAAAAE2tleVVzZXJBc3NldEJhbGFuY2UAAAACCQAEJQAAAAEIBQAAAApjb250ZXh0T2JqAAAABmNhbGxlcgUAAAAEdm90ZQQAAAAOdXNlckJhbGFuY2VLZXkJAQAAAA5rZXlVc2VyQmFsYW5jZQAAAAEIBQAAAApjb250ZXh0T2JqAAAABmNhbGxlcgQAAAAHcGF5bWVudAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAAKY29udGV4dE9iagAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAPYXNzZXRJZFJlY2VpdmVkCAUAAAAHcGF5bWVudAAAAAdhc3NldElkBAAAABJ0b2tlblJlY2VpdmVBbW91bnQIBQAAAAdwYXltZW50AAAABmFtb3VudAQAAAAOdm90ZU51bWJlclRoaXMJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAAIdm9pdGVLZXkAAAAAAAAAAAAEAAAAE2NvbnRyYWN0VXNlckJhbGFuY2UJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAAOdXNlckJhbGFuY2VLZXkAAAAAAAAAAAAEAAAAC3ZvdGVPbkFzc2V0CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAADnZvdGVBZGRyZXNzS2V5AAAAAAAAAAAAAwkBAAAAAiE9AAAAAgUAAAAPYXNzZXRJZFJlY2VpdmVkBQAAAAZOU0JUaWQJAAACAAAAAQIAAAAQaW5jb3JyZWN0IGFzc2V0cwMJAABnAAAAAgUAAAAGaGVpZ2h0BQAAAAloZWlnaHRFbmQJAAACAAAAAQIAAAANdm90ZSBmaW5pc2hlZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAIdm9pdGVLZXkJAABkAAAAAgUAAAAOdm90ZU51bWJlclRoaXMFAAAAEnRva2VuUmVjZWl2ZUFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAOdXNlckJhbGFuY2VLZXkJAABkAAAAAgUAAAATY29udHJhY3RVc2VyQmFsYW5jZQUAAAASdG9rZW5SZWNlaXZlQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA52b3RlQWRkcmVzc0tleQkAAGQAAAACBQAAAAt2b3RlT25Bc3NldAUAAAASdG9rZW5SZWNlaXZlQW1vdW50BQAAAANuaWwAAAAKY29udGV4dE9iagEAAAAKY2FuY2VsVm90ZQAAAAAEAAAADnVzZXJCYWxhbmNlS2V5CQEAAAAOa2V5VXNlckJhbGFuY2UAAAABCAUAAAAKY29udGV4dE9iagAAAAZjYWxsZXIEAAAAE2NvbnRyYWN0VXNlckJhbGFuY2UJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAAOdXNlckJhbGFuY2VLZXkAAAAAAAAAAAADCQAAAAAAAAIFAAAAE2NvbnRyYWN0VXNlckJhbGFuY2UAAAAAAAAAAAAFAAAAA25pbAoBAAAAFmNhbmNlbFZvdGVQcmVkaWNhdGVOZXcAAAACAAAAFWFjY3VtdWxhdGVkUmVzdWx0TGlzdAAAAAlhc3NldENvZGUEAAAAE3RvdGFsVm90ZXM0QXNzZXRLZXkJAAS5AAAAAgkABEwAAAACAgAAAAR2b3RlCQAETAAAAAIFAAAACWFzc2V0Q29kZQUAAAADbmlsAgAAAAFfBAAAABh1c2VyTnNidEJhbGFuY2U0QXNzZXRLZXkJAQAAABNrZXlVc2VyQXNzZXRCYWxhbmNlAAAAAgkABCUAAAABCAUAAAAKY29udGV4dE9iagAAAAZjYWxsZXIFAAAACWFzc2V0Q29kZQQAAAAQdG90YWxWb3RlczRBc3NldAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAABN0b3RhbFZvdGVzNEFzc2V0S2V5AAAAAAAAAAAABAAAABV1c2VyTnNidEJhbGFuY2U0QXNzZXQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAAYdXNlck5zYnRCYWxhbmNlNEFzc2V0S2V5AAAAAAAAAAAAAwkAAAAAAAACBQAAABB0b3RhbFZvdGVzNEFzc2V0AAAAAAAAAAAABQAAABVhY2N1bXVsYXRlZFJlc3VsdExpc3QJAARNAAAAAgkABE0AAAACBQAAABVhY2N1bXVsYXRlZFJlc3VsdExpc3QJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABN0b3RhbFZvdGVzNEFzc2V0S2V5CQAAZQAAAAIFAAAAEHRvdGFsVm90ZXM0QXNzZXQFAAAAFXVzZXJOc2J0QmFsYW5jZTRBc3NldAkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAGHVzZXJOc2J0QmFsYW5jZTRBc3NldEtleQAAAAAAAAAAAAkABE0AAAACBAAAAA0kbGlzdDI3MTEyODAwBQAAAAZhc3NldHMEAAAADSRzaXplMjcxMTI4MDAJAAGQAAAAAQUAAAANJGxpc3QyNzExMjgwMAQAAAANJGFjYzAyNzExMjgwMAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAOdXNlckJhbGFuY2VLZXkAAAAAAAAAAAAFAAAAA25pbAMJAAAAAAAAAgUAAAANJHNpemUyNzExMjgwMAAAAAAAAAAAAAUAAAANJGFjYzAyNzExMjgwMAQAAAANJGFjYzEyNzExMjgwMAkBAAAAFmNhbmNlbFZvdGVQcmVkaWNhdGVOZXcAAAACBQAAAA0kYWNjMDI3MTEyODAwCQABkQAAAAIFAAAADSRsaXN0MjcxMTI4MDAAAAAAAAAAAAADCQAAAAAAAAIFAAAADSRzaXplMjcxMTI4MDAAAAAAAAAAAAEFAAAADSRhY2MxMjcxMTI4MDAEAAAADSRhY2MyMjcxMTI4MDAJAQAAABZjYW5jZWxWb3RlUHJlZGljYXRlTmV3AAAAAgUAAAANJGFjYzEyNzExMjgwMAkAAZEAAAACBQAAAA0kbGlzdDI3MTEyODAwAAAAAAAAAAABAwkAAAAAAAACBQAAAA0kc2l6ZTI3MTEyODAwAAAAAAAAAAACBQAAAA0kYWNjMjI3MTEyODAwBAAAAA0kYWNjMzI3MTEyODAwCQEAAAAWY2FuY2VsVm90ZVByZWRpY2F0ZU5ldwAAAAIFAAAADSRhY2MyMjcxMTI4MDAJAAGRAAAAAgUAAAANJGxpc3QyNzExMjgwMAAAAAAAAAAAAgMJAAAAAAAAAgUAAAANJHNpemUyNzExMjgwMAAAAAAAAAAAAwUAAAANJGFjYzMyNzExMjgwMAQAAAANJGFjYzQyNzExMjgwMAkBAAAAFmNhbmNlbFZvdGVQcmVkaWNhdGVOZXcAAAACBQAAAA0kYWNjMzI3MTEyODAwCQABkQAAAAIFAAAADSRsaXN0MjcxMTI4MDAAAAAAAAAAAAMDCQAAAAAAAAIFAAAADSRzaXplMjcxMTI4MDAAAAAAAAAAAAQFAAAADSRhY2M0MjcxMTI4MDAEAAAADSRhY2M1MjcxMTI4MDAJAQAAABZjYW5jZWxWb3RlUHJlZGljYXRlTmV3AAAAAgUAAAANJGFjYzQyNzExMjgwMAkAAZEAAAACBQAAAA0kbGlzdDI3MTEyODAwAAAAAAAAAAAEAwkAAAAAAAACBQAAAA0kc2l6ZTI3MTEyODAwAAAAAAAAAAAFBQAAAA0kYWNjNTI3MTEyODAwBAAAAA0kYWNjNjI3MTEyODAwCQEAAAAWY2FuY2VsVm90ZVByZWRpY2F0ZU5ldwAAAAIFAAAADSRhY2M1MjcxMTI4MDAJAAGRAAAAAgUAAAANJGxpc3QyNzExMjgwMAAAAAAAAAAABQMJAAAAAAAAAgUAAAANJHNpemUyNzExMjgwMAAAAAAAAAAABgUAAAANJGFjYzYyNzExMjgwMAQAAAANJGFjYzcyNzExMjgwMAkBAAAAFmNhbmNlbFZvdGVQcmVkaWNhdGVOZXcAAAACBQAAAA0kYWNjNjI3MTEyODAwCQABkQAAAAIFAAAADSRsaXN0MjcxMTI4MDAAAAAAAAAAAAYDCQAAAAAAAAIFAAAADSRzaXplMjcxMTI4MDAAAAAAAAAAAAcFAAAADSRhY2M3MjcxMTI4MDAEAAAADSRhY2M4MjcxMTI4MDAJAQAAABZjYW5jZWxWb3RlUHJlZGljYXRlTmV3AAAAAgUAAAANJGFjYzcyNzExMjgwMAkAAZEAAAACBQAAAA0kbGlzdDI3MTEyODAwAAAAAAAAAAAHAwkAAAAAAAACBQAAAA0kc2l6ZTI3MTEyODAwAAAAAAAAAAAIBQAAAA0kYWNjODI3MTEyODAwBAAAAA0kYWNjOTI3MTEyODAwCQEAAAAWY2FuY2VsVm90ZVByZWRpY2F0ZU5ldwAAAAIFAAAADSRhY2M4MjcxMTI4MDAJAAGRAAAAAgUAAAANJGxpc3QyNzExMjgwMAAAAAAAAAAACAMJAAAAAAAAAgUAAAANJHNpemUyNzExMjgwMAAAAAAAAAAACQUAAAANJGFjYzkyNzExMjgwMAQAAAAOJGFjYzEwMjcxMTI4MDAJAQAAABZjYW5jZWxWb3RlUHJlZGljYXRlTmV3AAAAAgUAAAANJGFjYzkyNzExMjgwMAkAAZEAAAACBQAAAA0kbGlzdDI3MTEyODAwAAAAAAAAAAAJAwkAAAAAAAACBQAAAA0kc2l6ZTI3MTEyODAwAAAAAAAAAAAKBQAAAA4kYWNjMTAyNzExMjgwMAQAAAAOJGFjYzExMjcxMTI4MDAJAQAAABZjYW5jZWxWb3RlUHJlZGljYXRlTmV3AAAAAgUAAAAOJGFjYzEwMjcxMTI4MDAJAAGRAAAAAgUAAAANJGxpc3QyNzExMjgwMAAAAAAAAAAACgMJAAAAAAAAAgUAAAANJHNpemUyNzExMjgwMAAAAAAAAAAACwUAAAAOJGFjYzExMjcxMTI4MDAEAAAADiRhY2MxMjI3MTEyODAwCQEAAAAWY2FuY2VsVm90ZVByZWRpY2F0ZU5ldwAAAAIFAAAADiRhY2MxMTI3MTEyODAwCQABkQAAAAIFAAAADSRsaXN0MjcxMTI4MDAAAAAAAAAAAAsDCQAAAAAAAAIFAAAADSRzaXplMjcxMTI4MDAAAAAAAAAAAAwFAAAADiRhY2MxMjI3MTEyODAwBAAAAA4kYWNjMTMyNzExMjgwMAkBAAAAFmNhbmNlbFZvdGVQcmVkaWNhdGVOZXcAAAACBQAAAA4kYWNjMTIyNzExMjgwMAkAAZEAAAACBQAAAA0kbGlzdDI3MTEyODAwAAAAAAAAAAAMAwkAAAAAAAACBQAAAA0kc2l6ZTI3MTEyODAwAAAAAAAAAAANBQAAAA4kYWNjMTMyNzExMjgwMAQAAAAOJGFjYzE0MjcxMTI4MDAJAQAAABZjYW5jZWxWb3RlUHJlZGljYXRlTmV3AAAAAgUAAAAOJGFjYzEzMjcxMTI4MDAJAAGRAAAAAgUAAAANJGxpc3QyNzExMjgwMAAAAAAAAAAADQMJAAAAAAAAAgUAAAANJHNpemUyNzExMjgwMAAAAAAAAAAADgUAAAAOJGFjYzE0MjcxMTI4MDAEAAAADiRhY2MxNTI3MTEyODAwCQEAAAAWY2FuY2VsVm90ZVByZWRpY2F0ZU5ldwAAAAIFAAAADiRhY2MxNDI3MTEyODAwCQABkQAAAAIFAAAADSRsaXN0MjcxMTI4MDAAAAAAAAAAAA4DCQAAAAAAAAIFAAAADSRzaXplMjcxMTI4MDAAAAAAAAAAAA8FAAAADiRhY2MxNTI3MTEyODAwBAAAAA4kYWNjMTYyNzExMjgwMAkBAAAAFmNhbmNlbFZvdGVQcmVkaWNhdGVOZXcAAAACBQAAAA4kYWNjMTUyNzExMjgwMAkAAZEAAAACBQAAAA0kbGlzdDI3MTEyODAwAAAAAAAAAAAPAwkAAAAAAAACBQAAAA0kc2l6ZTI3MTEyODAwAAAAAAAAAAAQBQAAAA4kYWNjMTYyNzExMjgwMAQAAAAOJGFjYzE3MjcxMTI4MDAJAQAAABZjYW5jZWxWb3RlUHJlZGljYXRlTmV3AAAAAgUAAAAOJGFjYzE2MjcxMTI4MDAJAAGRAAAAAgUAAAANJGxpc3QyNzExMjgwMAAAAAAAAAAAEAMJAAAAAAAAAgUAAAANJHNpemUyNzExMjgwMAAAAAAAAAAAEQUAAAAOJGFjYzE3MjcxMTI4MDAEAAAADiRhY2MxODI3MTEyODAwCQEAAAAWY2FuY2VsVm90ZVByZWRpY2F0ZU5ldwAAAAIFAAAADiRhY2MxNzI3MTEyODAwCQABkQAAAAIFAAAADSRsaXN0MjcxMTI4MDAAAAAAAAAAABEDCQAAAAAAAAIFAAAADSRzaXplMjcxMTI4MDAAAAAAAAAAABIFAAAADiRhY2MxODI3MTEyODAwBAAAAA4kYWNjMTkyNzExMjgwMAkBAAAAFmNhbmNlbFZvdGVQcmVkaWNhdGVOZXcAAAACBQAAAA4kYWNjMTgyNzExMjgwMAkAAZEAAAACBQAAAA0kbGlzdDI3MTEyODAwAAAAAAAAAAASAwkAAAAAAAACBQAAAA0kc2l6ZTI3MTEyODAwAAAAAAAAAAATBQAAAA4kYWNjMTkyNzExMjgwMAQAAAAOJGFjYzIwMjcxMTI4MDAJAQAAABZjYW5jZWxWb3RlUHJlZGljYXRlTmV3AAAAAgUAAAAOJGFjYzE5MjcxMTI4MDAJAAGRAAAAAgUAAAANJGxpc3QyNzExMjgwMAAAAAAAAAAAEwMJAAAAAAAAAgUAAAANJHNpemUyNzExMjgwMAAAAAAAAAAAFAUAAAAOJGFjYzIwMjcxMTI4MDAEAAAADiRhY2MyMTI3MTEyODAwCQEAAAAWY2FuY2VsVm90ZVByZWRpY2F0ZU5ldwAAAAIFAAAADiRhY2MyMDI3MTEyODAwCQABkQAAAAIFAAAADSRsaXN0MjcxMTI4MDAAAAAAAAAAABQJAAACAAAAAQIAAAATTGlzdCBzaXplIGV4Y2VlZCAyMAkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAACmNvbnRleHRPYmoAAAAGY2FsbGVyBQAAABNjb250cmFjdFVzZXJCYWxhbmNlBQAAAAZOU0JUaWQAAAAKY29udGV4dE9iagEAAAAId2l0aGRyYXcAAAAABAAAAA51c2VyQmFsYW5jZUtleQkBAAAADmtleVVzZXJCYWxhbmNlAAAAAQgFAAAACmNvbnRleHRPYmoAAAAGY2FsbGVyAwkAAGYAAAACBQAAAAloZWlnaHRFbmQFAAAABmhlaWdodAkAAAIAAAABAgAAAA9Wb3RlIGluIHByb2Nlc3MEAAAADWNhbGxlckJhbGFuY2UJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAAOdXNlckJhbGFuY2VLZXkAAAAAAAAAAAADCQAAZwAAAAIAAAAAAAAAAAAFAAAADWNhbGxlckJhbGFuY2UJAAACAAAAAQIAAAAQYmFsYW5jZSBpcyBlbXB0eQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAAKY29udGV4dE9iagAAAAZjYWxsZXIFAAAADWNhbGxlckJhbGFuY2UFAAAABk5TQlRpZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAOdXNlckJhbGFuY2VLZXkAAAAAAAAAAAAFAAAAA25pbAAAAACcXXq2", "height": 1219964, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: J8UMm6yfgyCCDnktcS4URcE1XxBqtC9ukK8KQgKLEaSL Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 4 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let NSBTid = fromBase58String(valueOrErrorMessage(getString(this, "NSBTid"), "NSBTid is not specified in state"))
5+
6+let heightEnd = valueOrErrorMessage(getInteger(this, "height_end"), "height_end is not specified in state")
7+
8+let assetsString = valueOrErrorMessage(getString(this, "available_assets"), "Assets list is not specified in state")
9+
10+let assets = split(assetsString, ",")
11+
12+func keyUserBalance (userAddr) = makeString(["balance", toString(userAddr)], "_")
13+
14+
15+func keyUserAssetBalance (userAddr,vote) = makeString(["vote", userAddr, vote], "_")
16+
17+
18+@Callable(contextObj)
19+func castVote (vote) = if ((containsElement(assets, vote) == false))
20+ then throw("Incorrect vote!")
21+ else {
22+ let voiteKey = makeString(["vote", vote], "_")
23+ let voteAddressKey = keyUserAssetBalance(toString(contextObj.caller), vote)
24+ let userBalanceKey = keyUserBalance(contextObj.caller)
25+ let payment = value(contextObj.payments[0])
26+ let assetIdReceived = payment.assetId
27+ let tokenReceiveAmount = payment.amount
28+ let voteNumberThis = valueOrElse(getInteger(this, voiteKey), 0)
29+ let contractUserBalance = valueOrElse(getInteger(this, userBalanceKey), 0)
30+ let voteOnAsset = valueOrElse(getInteger(this, voteAddressKey), 0)
31+ if ((assetIdReceived != NSBTid))
32+ then throw("incorrect assets")
33+ else if ((height >= heightEnd))
34+ then throw("vote finished")
35+ else [IntegerEntry(voiteKey, (voteNumberThis + tokenReceiveAmount)), IntegerEntry(userBalanceKey, (contractUserBalance + tokenReceiveAmount)), IntegerEntry(voteAddressKey, (voteOnAsset + tokenReceiveAmount))]
36+ }
37+
38+
39+
40+@Callable(contextObj)
41+func cancelVote () = {
42+ let userBalanceKey = keyUserBalance(contextObj.caller)
43+ let contractUserBalance = valueOrElse(getInteger(this, userBalanceKey), 0)
44+ if ((contractUserBalance == 0))
45+ then nil
46+ else {
47+ func cancelVotePredicateNew (accumulatedResultList,assetCode) = {
48+ let totalVotes4AssetKey = makeString(["vote", assetCode], "_")
49+ let userNsbtBalance4AssetKey = keyUserAssetBalance(toString(contextObj.caller), assetCode)
50+ let totalVotes4Asset = valueOrElse(getInteger(this, totalVotes4AssetKey), 0)
51+ let userNsbtBalance4Asset = valueOrElse(getInteger(this, userNsbtBalance4AssetKey), 0)
52+ if ((totalVotes4Asset == 0))
53+ then accumulatedResultList
54+ else ((accumulatedResultList :+ IntegerEntry(totalVotes4AssetKey, (totalVotes4Asset - userNsbtBalance4Asset))) :+ IntegerEntry(userNsbtBalance4AssetKey, 0))
55+ }
56+
57+ ({
58+ let $list27112800 = assets
59+ let $size27112800 = size($list27112800)
60+ let $acc027112800 = [IntegerEntry(userBalanceKey, 0)]
61+ if (($size27112800 == 0))
62+ then $acc027112800
63+ else {
64+ let $acc127112800 = cancelVotePredicateNew($acc027112800, $list27112800[0])
65+ if (($size27112800 == 1))
66+ then $acc127112800
67+ else {
68+ let $acc227112800 = cancelVotePredicateNew($acc127112800, $list27112800[1])
69+ if (($size27112800 == 2))
70+ then $acc227112800
71+ else {
72+ let $acc327112800 = cancelVotePredicateNew($acc227112800, $list27112800[2])
73+ if (($size27112800 == 3))
74+ then $acc327112800
75+ else {
76+ let $acc427112800 = cancelVotePredicateNew($acc327112800, $list27112800[3])
77+ if (($size27112800 == 4))
78+ then $acc427112800
79+ else {
80+ let $acc527112800 = cancelVotePredicateNew($acc427112800, $list27112800[4])
81+ if (($size27112800 == 5))
82+ then $acc527112800
83+ else {
84+ let $acc627112800 = cancelVotePredicateNew($acc527112800, $list27112800[5])
85+ if (($size27112800 == 6))
86+ then $acc627112800
87+ else {
88+ let $acc727112800 = cancelVotePredicateNew($acc627112800, $list27112800[6])
89+ if (($size27112800 == 7))
90+ then $acc727112800
91+ else {
92+ let $acc827112800 = cancelVotePredicateNew($acc727112800, $list27112800[7])
93+ if (($size27112800 == 8))
94+ then $acc827112800
95+ else {
96+ let $acc927112800 = cancelVotePredicateNew($acc827112800, $list27112800[8])
97+ if (($size27112800 == 9))
98+ then $acc927112800
99+ else {
100+ let $acc1027112800 = cancelVotePredicateNew($acc927112800, $list27112800[9])
101+ if (($size27112800 == 10))
102+ then $acc1027112800
103+ else {
104+ let $acc1127112800 = cancelVotePredicateNew($acc1027112800, $list27112800[10])
105+ if (($size27112800 == 11))
106+ then $acc1127112800
107+ else {
108+ let $acc1227112800 = cancelVotePredicateNew($acc1127112800, $list27112800[11])
109+ if (($size27112800 == 12))
110+ then $acc1227112800
111+ else {
112+ let $acc1327112800 = cancelVotePredicateNew($acc1227112800, $list27112800[12])
113+ if (($size27112800 == 13))
114+ then $acc1327112800
115+ else {
116+ let $acc1427112800 = cancelVotePredicateNew($acc1327112800, $list27112800[13])
117+ if (($size27112800 == 14))
118+ then $acc1427112800
119+ else {
120+ let $acc1527112800 = cancelVotePredicateNew($acc1427112800, $list27112800[14])
121+ if (($size27112800 == 15))
122+ then $acc1527112800
123+ else {
124+ let $acc1627112800 = cancelVotePredicateNew($acc1527112800, $list27112800[15])
125+ if (($size27112800 == 16))
126+ then $acc1627112800
127+ else {
128+ let $acc1727112800 = cancelVotePredicateNew($acc1627112800, $list27112800[16])
129+ if (($size27112800 == 17))
130+ then $acc1727112800
131+ else {
132+ let $acc1827112800 = cancelVotePredicateNew($acc1727112800, $list27112800[17])
133+ if (($size27112800 == 18))
134+ then $acc1827112800
135+ else {
136+ let $acc1927112800 = cancelVotePredicateNew($acc1827112800, $list27112800[18])
137+ if (($size27112800 == 19))
138+ then $acc1927112800
139+ else {
140+ let $acc2027112800 = cancelVotePredicateNew($acc1927112800, $list27112800[19])
141+ if (($size27112800 == 20))
142+ then $acc2027112800
143+ else {
144+ let $acc2127112800 = cancelVotePredicateNew($acc2027112800, $list27112800[20])
145+ throw("List size exceed 20")
146+ }
147+ }
148+ }
149+ }
150+ }
151+ }
152+ }
153+ }
154+ }
155+ }
156+ }
157+ }
158+ }
159+ }
160+ }
161+ }
162+ }
163+ }
164+ }
165+ }
166+ }
167+ } :+ ScriptTransfer(contextObj.caller, contractUserBalance, NSBTid))
168+ }
169+ }
170+
171+
172+
173+@Callable(contextObj)
174+func withdraw () = {
175+ let userBalanceKey = keyUserBalance(contextObj.caller)
176+ if ((heightEnd > height))
177+ then throw("Vote in process")
178+ else {
179+ let callerBalance = valueOrElse(getInteger(this, userBalanceKey), 0)
180+ if ((0 >= callerBalance))
181+ then throw("balance is empty")
182+ else [ScriptTransfer(contextObj.caller, callerBalance, NSBTid), IntegerEntry(userBalanceKey, 0)]
183+ }
184+ }
185+
186+

github/deemru/w8io/169f3d6 
26.14 ms