tx · 9WTWmrDj3xHekfa78f7sHmGLo7nPf5iyLiRKqVCabkvy

3MriS1yLhFcKRAM51jDyNAdusa6bCWrTCYj:  -0.05000000 Waves

2024.02.07 15:30 [2965821] smart account 3MriS1yLhFcKRAM51jDyNAdusa6bCWrTCYj > SELF 0.00000000 Waves

{ "type": 13, "id": "9WTWmrDj3xHekfa78f7sHmGLo7nPf5iyLiRKqVCabkvy", "fee": 5000000, "feeAssetId": null, "timestamp": 1707309052546, "version": 2, "chainId": 84, "sender": "3MriS1yLhFcKRAM51jDyNAdusa6bCWrTCYj", "senderPublicKey": "CgjXoHPsstPW1WBAcTeBgjKtLSNFmLbQ7pLJ19JzkCy9", "proofs": [ "4MQiEEJs5ioYuLwLPRHK9JG8AYBkT9py7j9gA1eiNBEnUPQhkZPHwodz3ESD64E8B6h65dq9EHVscnhpbEeuEnv7" ], "script": "base64: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ZAQAAAAPdm90ZXNGcm9tQ2FsbGVyCQEAAAASZ2V0Vm90ZXNGcm9tQ2FsbGVyAAAAAQUAAAAPY2FsbGVyUHVibGljS2V5BAAAAAxhbHJlYWR5Vm90ZWQJAQAAAA9nZXRBbHJlYWR5Vm90ZWQAAAACBQAAAAZ2b3RlSWQFAAAAD2NhbGxlclB1YmxpY0tleQMJAAAAAAAAAgUAAAAPY3VycmVudFllc1ZvdGVzAP//////////CQAAAgAAAAECAAAAD1ZvdGUgbm90IGZvdW5kIQMFAAAADGFscmVhZHlWb3RlZAkAAAIAAAABAgAAABZBZGRyZXNzIGFscmVhZHkgdm90ZWQhCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABnZvdGVJZAIAAAAEX3llcwkAAGQAAAACBQAAAA9jdXJyZW50WWVzVm90ZXMFAAAAD3ZvdGVzRnJvbUNhbGxlcgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAGdm90ZUlkAgAAAAFfBQAAAA9jYWxsZXJQdWJsaWNLZXkCAAAABF95ZXMFAAAAD3ZvdGVzRnJvbUNhbGxlcgkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAGdm90ZUlkAgAAAAFfBQAAAA9jYWxsZXJQdWJsaWNLZXkCAAAABl92b3RlZAYFAAAAA25pbAAAAAFpAQAAAAJubwAAAAEAAAAGdm90ZUlkBAAAAA9jYWxsZXJQdWJsaWNLZXkJAAJYAAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BAAAAA5jdXJyZW50Tm9Wb3RlcwkBAAAAFmdldEN1cnJlbnROb1ZvdGVzRm9ySWQAAAABBQAAAAZ2b3RlSWQEAAAAD3ZvdGVzRnJvbUNhbGxlcgkBAAAAEmdldFZvdGVzRnJvbUNhbGxlcgAAAAEFAAAAD2NhbGxlclB1YmxpY0tleQQAAAAMYWxyZWFkeVZvdGVkCQEAAAAPZ2V0QWxyZWFkeVZvdGVkAAAAAgUAAAAGdm90ZUlkBQAAAA9jYWxsZXJQdWJsaWNLZXkDCQAAAAAAAAIFAAAADmN1cnJl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", "height": 2965821, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6fcRYCzvb6mLmjpGTEqqzn7ZXpaJQ5WcCUzG57Z3T8o9 Next: 89M6nn5Tu9uL2j6m7rJFuEGPoRLmtP8FMeCiMK9PY5WQ Diff:
OldNewDifferences
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let mainDAOContract = addressFromStringValue("3N9tKixzqTYWnEXQxrDQ5pBTGvQd6sFsvmV")
5+
6+let voteInitiateThreshold = 100000000
57
68 func getVotesFromCaller (publicKey) = match getInteger(mainDAOContract, ("dao_user_" + publicKey)) {
79 case i: Int =>
3739
3840 @Callable(i)
3941 func registerVote (title,desc,link) = {
42+ let callerPublicKey = toBase58String(i.callerPublicKey)
4043 let voteId = toBase58String(i.transactionId)
4144 let endBlock = (height + 7200)
42-[IntegerEntry((voteId + "_endHeight"), endBlock), StringEntry((voteId + "_title"), title), StringEntry((voteId + "_description"), desc), StringEntry((voteId + "_link"), link), IntegerEntry((voteId + "_yes"), 0), IntegerEntry((voteId + "_no"), 0)]
45+ let votingPower = getVotesFromCaller(callerPublicKey)
46+ if ((voteInitiateThreshold > votingPower))
47+ then throw("User has not been active enough on the platform!")
48+ else [IntegerEntry((voteId + "_endHeight"), endBlock), StringEntry((voteId + "_title"), title), StringEntry((voteId + "_description"), desc), StringEntry((voteId + "_link"), link), IntegerEntry((voteId + "_yes"), 0), IntegerEntry((voteId + "_no"), 0)]
4349 }
4450
4551
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let mainDAOContract = addressFromStringValue("3N9tKixzqTYWnEXQxrDQ5pBTGvQd6sFsvmV")
5+
6+let voteInitiateThreshold = 100000000
57
68 func getVotesFromCaller (publicKey) = match getInteger(mainDAOContract, ("dao_user_" + publicKey)) {
79 case i: Int =>
810 i
911 case _ =>
1012 -1
1113 }
1214
1315
1416 func getAlreadyVoted (voteId,publicKey) = match getBoolean(this, (((voteId + "_") + publicKey) + "_voted")) {
1517 case b: Boolean =>
1618 b
1719 case _ =>
1820 false
1921 }
2022
2123
2224 func getCurrentYesVotesForId (voteId) = match getInteger(this, (voteId + "_yes")) {
2325 case i: Int =>
2426 i
2527 case _ =>
2628 -1
2729 }
2830
2931
3032 func getCurrentNoVotesForId (voteId) = match getInteger(this, (voteId + "_no")) {
3133 case i: Int =>
3234 i
3335 case _ =>
3436 -1
3537 }
3638
3739
3840 @Callable(i)
3941 func registerVote (title,desc,link) = {
42+ let callerPublicKey = toBase58String(i.callerPublicKey)
4043 let voteId = toBase58String(i.transactionId)
4144 let endBlock = (height + 7200)
42-[IntegerEntry((voteId + "_endHeight"), endBlock), StringEntry((voteId + "_title"), title), StringEntry((voteId + "_description"), desc), StringEntry((voteId + "_link"), link), IntegerEntry((voteId + "_yes"), 0), IntegerEntry((voteId + "_no"), 0)]
45+ let votingPower = getVotesFromCaller(callerPublicKey)
46+ if ((voteInitiateThreshold > votingPower))
47+ then throw("User has not been active enough on the platform!")
48+ else [IntegerEntry((voteId + "_endHeight"), endBlock), StringEntry((voteId + "_title"), title), StringEntry((voteId + "_description"), desc), StringEntry((voteId + "_link"), link), IntegerEntry((voteId + "_yes"), 0), IntegerEntry((voteId + "_no"), 0)]
4349 }
4450
4551
4652
4753 @Callable(i)
4854 func yes (voteId) = {
4955 let callerPublicKey = toBase58String(i.callerPublicKey)
5056 let currentYesVotes = getCurrentYesVotesForId(voteId)
5157 let votesFromCaller = getVotesFromCaller(callerPublicKey)
5258 let alreadyVoted = getAlreadyVoted(voteId, callerPublicKey)
5359 if ((currentYesVotes == -1))
5460 then throw("Vote not found!")
5561 else if (alreadyVoted)
5662 then throw("Address already voted!")
5763 else [IntegerEntry((voteId + "_yes"), (currentYesVotes + votesFromCaller)), IntegerEntry((((voteId + "_") + callerPublicKey) + "_yes"), votesFromCaller), BooleanEntry((((voteId + "_") + callerPublicKey) + "_voted"), true)]
5864 }
5965
6066
6167
6268 @Callable(i)
6369 func no (voteId) = {
6470 let callerPublicKey = toBase58String(i.callerPublicKey)
6571 let currentNoVotes = getCurrentNoVotesForId(voteId)
6672 let votesFromCaller = getVotesFromCaller(callerPublicKey)
6773 let alreadyVoted = getAlreadyVoted(voteId, callerPublicKey)
6874 if ((currentNoVotes == -1))
6975 then throw("Vote not found!")
7076 else if (alreadyVoted)
7177 then throw("Address already voted!")
7278 else [IntegerEntry((voteId + "_no"), (currentNoVotes + votesFromCaller)), IntegerEntry((((voteId + "_") + callerPublicKey) + "_no"), votesFromCaller), BooleanEntry((((voteId + "_") + callerPublicKey) + "_voted"), true)]
7379 }
7480
7581
7682
7783 @Callable(i)
7884 func retractVote (voteId) = {
7985 let callerPublicKey = toBase58String(i.callerPublicKey)
8086 let currentNoVotes = getCurrentNoVotesForId(voteId)
8187 let currentYesVotes = getCurrentYesVotesForId(voteId)
8288 let noVotesFromCaller = match getInteger(this, (((voteId + "_") + callerPublicKey) + "_no")) {
8389 case n: Int =>
8490 n
8591 case _ =>
8692 0
8793 }
8894 let yesVotesFromCaller = match getInteger(this, (((voteId + "_") + callerPublicKey) + "_yes")) {
8995 case n: Int =>
9096 n
9197 case _ =>
9298 0
9399 }
94100 if (if ((currentYesVotes == -1))
95101 then true
96102 else (currentNoVotes == -1))
97103 then throw("No active vote for this vote id!")
98104 else [IntegerEntry((voteId + "_no"), (currentNoVotes - noVotesFromCaller)), IntegerEntry((voteId + "_yes"), (currentYesVotes - yesVotesFromCaller)), IntegerEntry((((voteId + "_") + callerPublicKey) + "_no"), 0), IntegerEntry((((voteId + "_") + callerPublicKey) + "_yes"), 0), BooleanEntry((((voteId + "_") + callerPublicKey) + "_voted"), false)]
99105 }
100106
101107
102108 @Verifier(tx)
103109 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
104110

github/deemru/w8io/6500d08 
36.03 ms