tx · 89M6nn5Tu9uL2j6m7rJFuEGPoRLmtP8FMeCiMK9PY5WQ

3MriS1yLhFcKRAM51jDyNAdusa6bCWrTCYj:  -0.05000000 Waves

2024.02.08 12:40 [2967105] smart account 3MriS1yLhFcKRAM51jDyNAdusa6bCWrTCYj > SELF 0.00000000 Waves

{ "type": 13, "id": "89M6nn5Tu9uL2j6m7rJFuEGPoRLmtP8FMeCiMK9PY5WQ", "fee": 5000000, "feeAssetId": null, "timestamp": 1707385233592, "version": 2, "chainId": 84, "sender": "3MriS1yLhFcKRAM51jDyNAdusa6bCWrTCYj", "senderPublicKey": "CgjXoHPsstPW1WBAcTeBgjKtLSNFmLbQ7pLJ19JzkCy9", "proofs": [ "2obyu9YGvPb3QoDtsDbmafEaRtbQR4BHnJPGdS2fsuYDBpvwWU1V3tBZTUznHwMvAHmGggJbeVSniT1RxWUJnYE4" ], "script": "base64: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aQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAD2N1cnJlbnRZZXNWb3RlcwkBAAAAF2dldEN1cnJlbnRZZXNWb3Rlc0ZvcklkAAAAAQUAAAAGdm90ZUlkBAAAAA92b3Rlc0Zyb21DYWxsZXIJAQAAABJnZXRWb3Rlc0Zyb21DYWxsZXIAAAABBQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAADGFscmVhZHlWb3RlZAkBAAAAD2dldEFscmVhZHlWb3RlZAAAAAIFAAAABnZvdGVJZAUAAAAPY2FsbGVyUHVibGljS2V5AwkAAAAAAAACBQAAAA9jdXJyZW50WWVzVm90ZXMA//////////8JAAACAAAAAQIAAAAPVm90ZSBub3QgZm91bmQhAwUAAAAMYWxyZWFkeVZvdGVkCQAAAgAAAAECAAAAFkFkZHJlc3MgYWxyZWFkeSB2b3RlZCEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAGdm90ZUlkAgAAAARfeWVzCQAAZAAAAAIFAAAAD2N1cnJlbnRZZXNWb3RlcwUAAAAPdm90ZXNGcm9tQ2FsbGVyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAZ2b3RlSWQCAAAAAV8FAAAAD2NhbGxlclB1YmxpY0tleQIAAAAEX3llcwUAAAAPdm90ZXNGcm9tQ2FsbGVyCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAZ2b3RlSWQCAAAAAV8FAAAAD2NhbGxlclB1YmxpY0tleQIAAAAGX3ZvdGVkBgUAAAADbmlsAAAAAWkBAAAAAm5vAAAAAQAAAAZ2b3RlSWQEAAAAD2NhbGxlclB1YmxpY0tleQkAAlgAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAADmN1cnJlbnROb1ZvdGVzCQEAAAAWZ2V0Q3VycmVudE5vVm90ZXNGb3JJZAAAAAEFAAAABnZvdGVJZAQAAAAPdm90ZXNGcm9tQ2FsbGVyCQEAAAASZ2V0Vm90ZXNGcm9tQ2FsbGVyAAAAAQUAAAAPY2FsbGVyUHVibGljS2V5BAAAAAxhbHJl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", "height": 2967105, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9WTWmrDj3xHekfa78f7sHmGLo7nPf5iyLiRKqVCabkvy Next: HgNctPLGZ5HWN36sGXcU1XAVqvrvHiUDjCYBosZ6zt6p Diff:
OldNewDifferences
4545 let votingPower = getVotesFromCaller(callerPublicKey)
4646 if ((voteInitiateThreshold > votingPower))
4747 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)]
48+ else [IntegerEntry((voteId + "_endHeight"), endBlock), StringEntry((voteId + "_title"), title), StringEntry((voteId + "_description"), desc), StringEntry((voteId + "_link"), link), StringEntry((voteId + "_initiator"), callerPublicKey), IntegerEntry((voteId + "_yes"), 0), IntegerEntry((voteId + "_no"), 0)]
4949 }
5050
5151
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let mainDAOContract = addressFromStringValue("3N9tKixzqTYWnEXQxrDQ5pBTGvQd6sFsvmV")
55
66 let voteInitiateThreshold = 100000000
77
88 func getVotesFromCaller (publicKey) = match getInteger(mainDAOContract, ("dao_user_" + publicKey)) {
99 case i: Int =>
1010 i
1111 case _ =>
1212 -1
1313 }
1414
1515
1616 func getAlreadyVoted (voteId,publicKey) = match getBoolean(this, (((voteId + "_") + publicKey) + "_voted")) {
1717 case b: Boolean =>
1818 b
1919 case _ =>
2020 false
2121 }
2222
2323
2424 func getCurrentYesVotesForId (voteId) = match getInteger(this, (voteId + "_yes")) {
2525 case i: Int =>
2626 i
2727 case _ =>
2828 -1
2929 }
3030
3131
3232 func getCurrentNoVotesForId (voteId) = match getInteger(this, (voteId + "_no")) {
3333 case i: Int =>
3434 i
3535 case _ =>
3636 -1
3737 }
3838
3939
4040 @Callable(i)
4141 func registerVote (title,desc,link) = {
4242 let callerPublicKey = toBase58String(i.callerPublicKey)
4343 let voteId = toBase58String(i.transactionId)
4444 let endBlock = (height + 7200)
4545 let votingPower = getVotesFromCaller(callerPublicKey)
4646 if ((voteInitiateThreshold > votingPower))
4747 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)]
48+ else [IntegerEntry((voteId + "_endHeight"), endBlock), StringEntry((voteId + "_title"), title), StringEntry((voteId + "_description"), desc), StringEntry((voteId + "_link"), link), StringEntry((voteId + "_initiator"), callerPublicKey), IntegerEntry((voteId + "_yes"), 0), IntegerEntry((voteId + "_no"), 0)]
4949 }
5050
5151
5252
5353 @Callable(i)
5454 func yes (voteId) = {
5555 let callerPublicKey = toBase58String(i.callerPublicKey)
5656 let currentYesVotes = getCurrentYesVotesForId(voteId)
5757 let votesFromCaller = getVotesFromCaller(callerPublicKey)
5858 let alreadyVoted = getAlreadyVoted(voteId, callerPublicKey)
5959 if ((currentYesVotes == -1))
6060 then throw("Vote not found!")
6161 else if (alreadyVoted)
6262 then throw("Address already voted!")
6363 else [IntegerEntry((voteId + "_yes"), (currentYesVotes + votesFromCaller)), IntegerEntry((((voteId + "_") + callerPublicKey) + "_yes"), votesFromCaller), BooleanEntry((((voteId + "_") + callerPublicKey) + "_voted"), true)]
6464 }
6565
6666
6767
6868 @Callable(i)
6969 func no (voteId) = {
7070 let callerPublicKey = toBase58String(i.callerPublicKey)
7171 let currentNoVotes = getCurrentNoVotesForId(voteId)
7272 let votesFromCaller = getVotesFromCaller(callerPublicKey)
7373 let alreadyVoted = getAlreadyVoted(voteId, callerPublicKey)
7474 if ((currentNoVotes == -1))
7575 then throw("Vote not found!")
7676 else if (alreadyVoted)
7777 then throw("Address already voted!")
7878 else [IntegerEntry((voteId + "_no"), (currentNoVotes + votesFromCaller)), IntegerEntry((((voteId + "_") + callerPublicKey) + "_no"), votesFromCaller), BooleanEntry((((voteId + "_") + callerPublicKey) + "_voted"), true)]
7979 }
8080
8181
8282
8383 @Callable(i)
8484 func retractVote (voteId) = {
8585 let callerPublicKey = toBase58String(i.callerPublicKey)
8686 let currentNoVotes = getCurrentNoVotesForId(voteId)
8787 let currentYesVotes = getCurrentYesVotesForId(voteId)
8888 let noVotesFromCaller = match getInteger(this, (((voteId + "_") + callerPublicKey) + "_no")) {
8989 case n: Int =>
9090 n
9191 case _ =>
9292 0
9393 }
9494 let yesVotesFromCaller = match getInteger(this, (((voteId + "_") + callerPublicKey) + "_yes")) {
9595 case n: Int =>
9696 n
9797 case _ =>
9898 0
9999 }
100100 if (if ((currentYesVotes == -1))
101101 then true
102102 else (currentNoVotes == -1))
103103 then throw("No active vote for this vote id!")
104104 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)]
105105 }
106106
107107
108108 @Verifier(tx)
109109 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
110110

github/deemru/w8io/6500d08 
61.26 ms