tx · HpfAiSgj3fx9gMje7X7CJ6xg2HdiT96vSP6BS9TN75Ej

3P2mH5mhQqgjXNZuNNabjJdkEJ9CWsFy9yj:  -0.01000000 Waves

2023.05.11 09:41 [3638337] smart account 3P2mH5mhQqgjXNZuNNabjJdkEJ9CWsFy9yj > SELF 0.00000000 Waves

{ "type": 13, "id": "HpfAiSgj3fx9gMje7X7CJ6xg2HdiT96vSP6BS9TN75Ej", "fee": 1000000, "feeAssetId": null, "timestamp": 1683787298777, "version": 2, "chainId": 87, "sender": "3P2mH5mhQqgjXNZuNNabjJdkEJ9CWsFy9yj", "senderPublicKey": "94C4GHd1nYV5KUVJLPE4kf27mrY2yRc4nSLDujToBzga", "proofs": [ "5cRYRFQ7T5bjhov6nfpdX9328GpJiif1pvaEKm5GKJmvrxmqHhDbmf3v3ux9RUKga8nFJuWtcN1tveK7Jpf6WD7h" ], "script": "base64:AAIFAAAAAAAAABQIAhIHCgUBAQEICBIDCgEEEgASAAAAABgAAAAADGFkbWluUHViS2V5MQEAAAAgd669PD3rrdKQ/IJwTd7gu9aExkLSCOPWIeosKwi85SsAAAAADGFkbWluUHViS2V5MgEAAAAgd669PD3rrdKQ/IJwTd7gu9aExkLSCOPWIeosKwi85SsAAAAADGFkbWluUHViS2V5MwEAAAAgd669PD3rrdKQ/IJwTd7gu9aExkLSCOPWIeosKwi85SsAAAAAFGFkbWluUHViS2V5U3RhcnRTdG9wAQAAACB3rr08Peut0pD8gnBN3uC71oTGQtII49Yh6iwrCLzlKwAAAAAJa2V5QWN0aXZlAgAAAAZhY3RpdmUAAAAACGtleUNhdXNlAgAAAA5zaHV0ZG93bl9jYXVzZQAAAAARa2V5VXNlclZPVEVBbW91bnQCAAAADF9WT1RFX2Ftb3VudAAAAAALa2V5VXNlclZPVEUCAAAABV9WT1RFAAAAAAxrZXlUb3RhbFZPVEUCAAAAEl90b3RhbF9WT1RFX2Ftb3VudAAAAAANa2V5Vm90ZU51bWJlcgIAAAAMdm90ZV9zZXNzaW9uAAAAAAxrZXlWb3RlU3RhcnQCAAAAEXZvdGVfc3RhcnRfaGVpZ2h0AAAAAAprZXlWb3RlRW5kAgAAAA92b3RlX2VuZF9oZWlnaHQAAAAACmtleVZvdGVZZXMCAAAAC195ZXNfYW1vdW50AAAAAAlrZXlWb3RlTm8CAAAACl9ub19hbW91bnQAAAAAEWtleVVzZXJFTk5PTG9ja2VkAgAAAAxfRU5OT19hbW91bnQAAAAAC2tleVZvdGVOYW1lAgAAAAl2b3RlX25hbWUAAAAAEmtleVZvdGVEZXNjcmlwdGlvbgIAAAAQdm90ZV9kZXNjcmlwdGlvbgAAAAAIaXNBY3RpdmUJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQbAAAAAgUAAAAEdGhpcwUAAAAJa2V5QWN0aXZlBgAAAAAJc3Rha2VEYXRhCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABAQAAACDJxyCCGGPk89xsFxmaDibmd1jcSfgQ8HxDeftk0Ox5KgEAAAARZ2V0VXNlckVOTk9Mb2NrZWQAAAABAAAABHVzZXIJAQAAAAt2YWx1ZU9yRWxz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", "height": 3638337, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: DVyuf1YAmGbvzkgRpjrwqYaibHCBpV5fs8Fu3vR3meQ1 Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 5 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let adminPubKey1 = base58'94C4GHd1nYV5KUVJLPE4kf27mrY2yRc4nSLDujToBzga'
5+
6+let adminPubKey2 = base58'94C4GHd1nYV5KUVJLPE4kf27mrY2yRc4nSLDujToBzga'
7+
8+let adminPubKey3 = base58'94C4GHd1nYV5KUVJLPE4kf27mrY2yRc4nSLDujToBzga'
9+
10+let adminPubKeyStartStop = base58'94C4GHd1nYV5KUVJLPE4kf27mrY2yRc4nSLDujToBzga'
11+
12+let keyActive = "active"
13+
14+let keyCause = "shutdown_cause"
15+
16+let keyUserVOTEAmount = "_VOTE_amount"
17+
18+let keyUserVOTE = "_VOTE"
19+
20+let keyTotalVOTE = "_total_VOTE_amount"
21+
22+let keyVoteNumber = "vote_session"
23+
24+let keyVoteStart = "vote_start_height"
25+
26+let keyVoteEnd = "vote_end_height"
27+
28+let keyVoteYes = "_yes_amount"
29+
30+let keyVoteNo = "_no_amount"
31+
32+let keyUserENNOLocked = "_ENNO_amount"
33+
34+let keyVoteName = "vote_name"
35+
36+let keyVoteDescription = "vote_description"
37+
38+let isActive = valueOrElse(getBoolean(this, keyActive), true)
39+
40+let stakeData = addressFromPublicKey(base58'Eaf4FwUufqN2GjEDu6h1w8UT5zB58jCghAoQRg1H3Pv1')
41+
42+func getUserENNOLocked (user) = valueOrElse(getInteger(stakeData, (toString(user) + keyUserENNOLocked)), 0)
43+
44+
45+func getUserVoteAmount (user,session) = valueOrElse(getInteger(this, (((toString(user) + keyUserVOTEAmount) + "_") + session)), 0)
46+
47+
48+func getUserVote (user,session) = valueOrElse(getBoolean(this, (((toString(user) + keyUserVOTE) + "_") + session)), false)
49+
50+
51+func getVal (key) = valueOrElse(getInteger(this, key), 0)
52+
53+
54+func suspend (cause) = [BooleanEntry(keyActive, false), StringEntry(keyCause, cause)]
55+
56+
57+@Callable(i)
58+func initVote (session,start,end,voteName,voteDescription) = if (!(isActive))
59+ then throw("DApp is inactive at this moment")
60+ else if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3, adminPubKeyStartStop], i.callerPublicKey)))
61+ then throw("Only admin can call this function")
62+ else [IntegerEntry(keyVoteNumber, session), IntegerEntry(((keyVoteStart + "_") + toString(session)), start), IntegerEntry(((keyVoteEnd + "_") + toString(session)), end), IntegerEntry((toString(session) + keyVoteYes), 0), IntegerEntry((toString(session) + keyVoteNo), 0), IntegerEntry((toString(session) + keyTotalVOTE), 0), StringEntry(((keyVoteName + "_") + toString(session)), voteName), StringEntry(((keyVoteDescription + "_") + toString(session)), voteDescription)]
63+
64+
65+
66+@Callable(i)
67+func vote (vote) = if (!(isActive))
68+ then throw("DApp is inactive at this moment")
69+ else {
70+ let session = toString(getVal(keyVoteNumber))
71+ let start = getVal(((keyVoteStart + "_") + session))
72+ let end = getVal(((keyVoteEnd + "_") + session))
73+ if ((start > height))
74+ then throw(((("Voting has not started yet. Start: " + toString(start)) + "Height: ") + toString(height)))
75+ else if ((height > end))
76+ then throw(((("Voting has already ended. End: " + toString(end)) + "Height: ") + toString(height)))
77+ else {
78+ let totalYes = getVal((session + keyVoteYes))
79+ let totalNo = getVal((session + keyVoteNo))
80+ let userVoteAmount = getUserVoteAmount(i.caller, session)
81+ let userVote = getUserVote(i.caller, session)
82+ let userENNOLocked = getUserENNOLocked(i.caller)
83+ let userENNOVotedNew = userENNOLocked
84+ if ((0 > userENNOVotedNew))
85+ then throw("Vote must be more than 0")
86+ else if (if ((vote != userVote))
87+ then (userVoteAmount > 0)
88+ else false)
89+ then throw("Please use change my vote option the update your vote")
90+ else if ((userVoteAmount == userENNOLocked))
91+ then throw("You have already voted. Stake more enno to update voting")
92+ else {
93+ let newTotalYesVoted = (totalYes + (if ((vote == true))
94+ then (userENNOLocked - userVoteAmount)
95+ else 0))
96+ let newTotalNoVoted = (totalNo + (if ((vote == false))
97+ then (userENNOLocked - userVoteAmount)
98+ else 0))
99+[IntegerEntry((((toString(i.caller) + keyUserVOTEAmount) + "_") + session), userENNOLocked), BooleanEntry((((toString(i.caller) + keyUserVOTE) + "_") + session), vote), IntegerEntry((session + keyVoteYes), newTotalYesVoted), IntegerEntry((session + keyVoteNo), newTotalNoVoted), IntegerEntry((session + keyTotalVOTE), (newTotalNoVoted + newTotalYesVoted))]
100+ }
101+ }
102+ }
103+
104+
105+
106+@Callable(i)
107+func changeVote () = if (!(isActive))
108+ then throw("DApp is inactive at this moment")
109+ else {
110+ let session = toString(getVal(keyVoteNumber))
111+ let start = getVal(((keyVoteStart + "_") + session))
112+ let end = getVal(((keyVoteEnd + "_") + session))
113+ if ((start > height))
114+ then throw(((("Voting has not started yet. Start: " + toString(start)) + "Height: ") + toString(height)))
115+ else if ((height > end))
116+ then throw(((("Voting has already ended. End: " + toString(end)) + "Height: ") + toString(height)))
117+ else {
118+ let totalYes = getVal((session + keyVoteYes))
119+ let totalNo = getVal((session + keyVoteNo))
120+ let userVoteAmount = getUserVoteAmount(i.caller, session)
121+ let userVote = getUserVote(i.caller, session)
122+ let userENNOLocked = getUserENNOLocked(i.caller)
123+ let userENNOVotedNew = userENNOLocked
124+ if ((userVoteAmount == 0))
125+ then throw("You do not have any vote to change")
126+ else if ((0 > userENNOVotedNew))
127+ then throw("Vote must be more than 0")
128+ else {
129+ let newTotalYesVoted = (totalYes - (if ((userVote == true))
130+ then userVoteAmount
131+ else -(userVoteAmount)))
132+ let newTotalNoVoted = (totalNo + (if ((userVote == true))
133+ then userVoteAmount
134+ else -(userVoteAmount)))
135+[IntegerEntry((((toString(i.caller) + keyUserVOTEAmount) + "_") + session), userVoteAmount), BooleanEntry((((toString(i.caller) + keyUserVOTE) + "_") + session), !(userVote)), IntegerEntry((session + keyVoteYes), newTotalYesVoted), IntegerEntry((session + keyVoteNo), newTotalNoVoted), IntegerEntry((session + keyTotalVOTE), (newTotalNoVoted + newTotalYesVoted))]
136+ }
137+ }
138+ }
139+
140+
141+
142+@Callable(i)
143+func shutdown () = if (!(isActive))
144+ then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, keyCause), "the cause wasn't specified")))
145+ else if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3, adminPubKeyStartStop], i.callerPublicKey)))
146+ then throw("Only admin can call this function")
147+ else suspend("Paused by admin")
148+
149+
150+@Verifier(tx)
151+func verify () = match tx {
152+ case d: DataTransaction =>
153+ sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
154+ case _ =>
155+ let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
156+ then 1
157+ else 0
158+ let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
159+ then 1
160+ else 0
161+ let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
162+ then 1
163+ else 0
164+ (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 2)
165+}
166+

github/deemru/w8io/3ef1775 
25.94 ms