tx · EimoFtcNNyPzTdYy5SuXEASYAii5yUfiSuDZLcgxtv2s

3MtV1AQ8fEPk76tjKgvrufuMe5aA3q4TviQ:  -0.10000000 Waves

2020.12.23 02:37 [1320571] smart account 3MtV1AQ8fEPk76tjKgvrufuMe5aA3q4TviQ > SELF 0.00000000 Waves

{ "type": 13, "id": "EimoFtcNNyPzTdYy5SuXEASYAii5yUfiSuDZLcgxtv2s", "fee": 10000000, "feeAssetId": null, "timestamp": 1608680192721, "version": 2, "chainId": 84, "sender": "3MtV1AQ8fEPk76tjKgvrufuMe5aA3q4TviQ", "senderPublicKey": "3Fjao2FW1JXSPd5EkP7C3uerW18HYacYsaMYALFMGA6N", "proofs": [ "3vuS8mz5xg36yvouEx7Ud5cwLWTTKycJ7JoVesEhksfWbVtFTyjhgHdQRaa4qJBe4GfaTdvmcRcfAYErZTsmLjRz" ], "script": "base64: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", "height": 1320571, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DFjsWBWc2vuQUfQTm6KMTWyXWJMTrvRhTFG6YVw3bg2P Next: 5JMLbzcqnmmtqBK9veP9MAzYsqu4JGRgA74djsD9ZNQ7 Diff:
OldNewDifferences
8282 }
8383
8484
85+func isVotingDisable (taskId) = (getStringValue(this, (("tasks_" + taskId) + "_status")) != "voting_started")
86+
87+
88+func isQuorumAchieved (taskId) = (QUORUM > ((tryGetInteger((("tasks_" + taskId) + "_voting_amount")) * 100) / getDAOSize()))
89+
90+
8591 func getVoteValue (s) = if ((s == "like"))
8692 then 1
8793 else if ((s == "dislike"))
8894 then -1
8995 else throw("you need to vote with 'like' or 'dislike' value")
90-
91-
92-func isVotingDisable (taskId) = (getStringValue(this, (("tasks_" + taskId) + "_status")) != "voting_started")
93-
94-
95-func isQuorumAchieved (taskId) = (QUORUM > ((tryGetInteger((("tasks_" + taskId) + "_voting_amount")) * 100) / getDAOSize()))
9696
9797
9898 func startWorkConditions (taskId,address) = if ((getStringValue(this, (("tasks_" + taskId) + "_status")) != "approved"))
102102 else true
103103
104104
105+func addRewardConditions (taskId,reward,address) = if ((tryGetString((("tasks_" + taskId) + "_status")) != ""))
106+ then throw("voting was already started, so the reward amount cannot be changed")
107+ else if ((toString(address) != getStringValue(this, (("tasks_" + taskId) + "_leader"))))
108+ then throw("team leader only")
109+ else true
110+
111+
112+func voteForTaskProposalConditions (taskId,i) = if (!(canMemberVote(i)))
113+ then throw("you can't vote")
114+ else if (isVotingDisable(taskId))
115+ then throw("voting is closed or not started")
116+ else if (!((tryGetInteger(((("tasks_" + taskId) + "_voted_") + toString(i.caller))) == 0)))
117+ then throw("you have already voted")
118+ else true
119+
120+
105121 @Callable(i)
106122 func addTask (title,link) = WriteSet([DataEntry((("tasks_" + toBase58String(i.transactionId)) + "_title"), title), DataEntry((("tasks_" + toBase58String(i.transactionId)) + "_link"), link), DataEntry((("tasks_" + toBase58String(i.transactionId)) + "_leader"), toString(i.caller))])
107123
108124
109125
110126 @Callable(i)
111-func addReward (taskId,reward) = if ((tryGetString((("tasks_" + taskId) + "_status")) != ""))
112- then throw("voting was already started, so the reward amount cannot be changed")
113- else if ((toString(i.caller) != tryGetString((("tasks_" + taskId) + "_leader"))))
114- then throw("team leader only")
115- else WriteSet([DataEntry((("tasks_" + taskId) + "_reward"), reward)])
127+func addReward (taskId,reward) = if (addRewardConditions(taskId, reward, i.caller))
128+ then WriteSet([DataEntry((("tasks_" + taskId) + "_reward"), reward)])
129+ else throw("сhecking progress is not passed")
116130
117131
118132
124138
125139
126140 @Callable(i)
127-func voteForTaskProposal (taskId,voteValueString) = if (!(canMemberVote(i)))
128- then throw("you can't vote")
129- else if (isVotingDisable(taskId))
130- then throw("voting is closed or not started")
131- else {
132- let voteValue = getVoteValue(voteValueString)
133- let voteKey = ((("tasks_" + taskId) + "_voted_") + toString(i.caller))
134- let previousVote = tryGetInteger(voteKey)
135- if (!((previousVote == 0)))
136- then throw("you have already voted")
137- else {
138- let votingKey = (("tasks_" + taskId) + "_voting_state")
139- let votingState = tryGetInteger(votingKey)
140- let votesAmountKey = (("tasks_" + taskId) + "_voting_amount")
141- let votesAmountState = (tryGetInteger(votingKey) + 1)
142- let newVotingState = (votingState + voteValue)
143- WriteSet([DataEntry(votingKey, newVotingState), DataEntry(voteKey, voteValue), DataEntry(votesAmountKey, votesAmountState)])
144- }
145- }
141+func voteForTaskProposal (taskId,voteValueString) = if (voteForTaskProposalConditions(taskId, i))
142+ then {
143+ let voteKey = ((("tasks_" + taskId) + "_voted_") + toString(i.caller))
144+ let votingKey = (("tasks_" + taskId) + "_voting_state")
145+ let votesAmountKey = (("tasks_" + taskId) + "_voting_amount")
146+ let voteValue = getVoteValue(voteValueString)
147+ let votingState = tryGetInteger(votingKey)
148+ let votesAmountState = (tryGetInteger(votesAmountKey) + 1)
149+ WriteSet([DataEntry(votingKey, (votingState + voteValue)), DataEntry(voteKey, voteValue), DataEntry(votesAmountKey, votesAmountState)])
150+ }
151+ else throw("сhecking progress is not passed")
146152
147153
148154
168174
169175
170176 @Callable(i)
171-func startWork (taskId) = {
172- let tests = startWorkConditions(taskId, i.caller)
173- if (startWorkConditions(taskId, i.caller))
174- then WriteSet([DataEntry((("tasks_" + taskId) + "_status"), "work_started"), DataEntry((("tasks_" + taskId) + "_tests"), tests)])
175- else throw("сhecking progress is not passed")
176- }
177+func startWork (taskId) = if (startWorkConditions(taskId, i.caller))
178+ then WriteSet([DataEntry((("tasks_" + taskId) + "_status"), "work_started")])
179+ else throw("сhecking progress is not passed")
177180
178181
179182
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let QUORUM = 1
55
66 func tryGetInteger (key) = {
77 let val = match getInteger(this, key) {
88 case b: Int =>
99 b
1010 case _ =>
1111 0
1212 }
1313 val
1414 }
1515
1616
1717 func tryGetString (key) = {
1818 let val = match getString(this, key) {
1919 case b: String =>
2020 b
2121 case _ =>
2222 ""
2323 }
2424 val
2525 }
2626
2727
2828 let mainContract = addressFromStringValue("3MwRzi2BmqZZXWrCGCwcRQLsnic2Aod6zhS")
2929
3030 func getGroup () = {
3131 let val = match getString(mainContract, "working_group_members") {
3232 case b: String =>
3333 b
3434 case _ =>
3535 ""
3636 }
3737 val
3838 }
3939
4040
4141 func getMembers () = {
4242 let val = match getString(mainContract, "dao_members") {
4343 case b: String =>
4444 b
4545 case _ =>
4646 ""
4747 }
4848 val
4949 }
5050
5151
5252 func getDAOSize () = {
5353 let val = match getInteger(mainContract, "dao_size") {
5454 case b: Int =>
5555 b
5656 case _ =>
5757 0
5858 }
5959 val
6060 }
6161
6262
6363 func isGroupMember (a) = {
6464 let val = match getInteger(mainContract, (("working_group_member_" + toString(a)) + "_weight")) {
6565 case b: Int =>
6666 b
6767 case _ =>
6868 0
6969 }
7070 (val > 0)
7171 }
7272
7373
7474 func canMemberVote (i) = {
7575 let val = match getInteger(mainContract, (("dao_member_" + toString(i.caller)) + "_weight")) {
7676 case b: Int =>
7777 b
7878 case _ =>
7979 0
8080 }
8181 (val > 0)
8282 }
8383
8484
85+func isVotingDisable (taskId) = (getStringValue(this, (("tasks_" + taskId) + "_status")) != "voting_started")
86+
87+
88+func isQuorumAchieved (taskId) = (QUORUM > ((tryGetInteger((("tasks_" + taskId) + "_voting_amount")) * 100) / getDAOSize()))
89+
90+
8591 func getVoteValue (s) = if ((s == "like"))
8692 then 1
8793 else if ((s == "dislike"))
8894 then -1
8995 else throw("you need to vote with 'like' or 'dislike' value")
90-
91-
92-func isVotingDisable (taskId) = (getStringValue(this, (("tasks_" + taskId) + "_status")) != "voting_started")
93-
94-
95-func isQuorumAchieved (taskId) = (QUORUM > ((tryGetInteger((("tasks_" + taskId) + "_voting_amount")) * 100) / getDAOSize()))
9696
9797
9898 func startWorkConditions (taskId,address) = if ((getStringValue(this, (("tasks_" + taskId) + "_status")) != "approved"))
9999 then throw("the task is not approved")
100100 else if ((toString(address) != getStringValue(this, (("tasks_" + taskId) + "_leader"))))
101101 then throw("team leader only")
102102 else true
103103
104104
105+func addRewardConditions (taskId,reward,address) = if ((tryGetString((("tasks_" + taskId) + "_status")) != ""))
106+ then throw("voting was already started, so the reward amount cannot be changed")
107+ else if ((toString(address) != getStringValue(this, (("tasks_" + taskId) + "_leader"))))
108+ then throw("team leader only")
109+ else true
110+
111+
112+func voteForTaskProposalConditions (taskId,i) = if (!(canMemberVote(i)))
113+ then throw("you can't vote")
114+ else if (isVotingDisable(taskId))
115+ then throw("voting is closed or not started")
116+ else if (!((tryGetInteger(((("tasks_" + taskId) + "_voted_") + toString(i.caller))) == 0)))
117+ then throw("you have already voted")
118+ else true
119+
120+
105121 @Callable(i)
106122 func addTask (title,link) = WriteSet([DataEntry((("tasks_" + toBase58String(i.transactionId)) + "_title"), title), DataEntry((("tasks_" + toBase58String(i.transactionId)) + "_link"), link), DataEntry((("tasks_" + toBase58String(i.transactionId)) + "_leader"), toString(i.caller))])
107123
108124
109125
110126 @Callable(i)
111-func addReward (taskId,reward) = if ((tryGetString((("tasks_" + taskId) + "_status")) != ""))
112- then throw("voting was already started, so the reward amount cannot be changed")
113- else if ((toString(i.caller) != tryGetString((("tasks_" + taskId) + "_leader"))))
114- then throw("team leader only")
115- else WriteSet([DataEntry((("tasks_" + taskId) + "_reward"), reward)])
127+func addReward (taskId,reward) = if (addRewardConditions(taskId, reward, i.caller))
128+ then WriteSet([DataEntry((("tasks_" + taskId) + "_reward"), reward)])
129+ else throw("сhecking progress is not passed")
116130
117131
118132
119133 @Callable(i)
120134 func initTaskVoting (taskId) = if (!(isGroupMember(i.caller)))
121135 then throw("grants working group access only")
122136 else WriteSet([DataEntry((("tasks_" + taskId) + "_status"), "voting_started")])
123137
124138
125139
126140 @Callable(i)
127-func voteForTaskProposal (taskId,voteValueString) = if (!(canMemberVote(i)))
128- then throw("you can't vote")
129- else if (isVotingDisable(taskId))
130- then throw("voting is closed or not started")
131- else {
132- let voteValue = getVoteValue(voteValueString)
133- let voteKey = ((("tasks_" + taskId) + "_voted_") + toString(i.caller))
134- let previousVote = tryGetInteger(voteKey)
135- if (!((previousVote == 0)))
136- then throw("you have already voted")
137- else {
138- let votingKey = (("tasks_" + taskId) + "_voting_state")
139- let votingState = tryGetInteger(votingKey)
140- let votesAmountKey = (("tasks_" + taskId) + "_voting_amount")
141- let votesAmountState = (tryGetInteger(votingKey) + 1)
142- let newVotingState = (votingState + voteValue)
143- WriteSet([DataEntry(votingKey, newVotingState), DataEntry(voteKey, voteValue), DataEntry(votesAmountKey, votesAmountState)])
144- }
145- }
141+func voteForTaskProposal (taskId,voteValueString) = if (voteForTaskProposalConditions(taskId, i))
142+ then {
143+ let voteKey = ((("tasks_" + taskId) + "_voted_") + toString(i.caller))
144+ let votingKey = (("tasks_" + taskId) + "_voting_state")
145+ let votesAmountKey = (("tasks_" + taskId) + "_voting_amount")
146+ let voteValue = getVoteValue(voteValueString)
147+ let votingState = tryGetInteger(votingKey)
148+ let votesAmountState = (tryGetInteger(votesAmountKey) + 1)
149+ WriteSet([DataEntry(votingKey, (votingState + voteValue)), DataEntry(voteKey, voteValue), DataEntry(votesAmountKey, votesAmountState)])
150+ }
151+ else throw("сhecking progress is not passed")
146152
147153
148154
149155 @Callable(i)
150156 func finishTaskProposalVoting (taskId) = if (isQuorumAchieved(taskId))
151157 then throw((("more than " + toString(QUORUM)) + "% members have to vote before finishing the voting"))
152158 else if (!(isGroupMember(i.caller)))
153159 then throw("grants working group access only")
154160 else {
155161 let votingKey = (("tasks_" + taskId) + "_voting_state")
156162 let votingState = tryGetInteger(votingKey)
157163 if ((votingState > 0))
158164 then {
159165 let votingResult = "approved"
160166 WriteSet([DataEntry((("tasks_" + taskId) + "_status"), votingResult)])
161167 }
162168 else {
163169 let votingResult = "rejected"
164170 WriteSet([DataEntry((("tasks_" + taskId) + "_status"), votingResult)])
165171 }
166172 }
167173
168174
169175
170176 @Callable(i)
171-func startWork (taskId) = {
172- let tests = startWorkConditions(taskId, i.caller)
173- if (startWorkConditions(taskId, i.caller))
174- then WriteSet([DataEntry((("tasks_" + taskId) + "_status"), "work_started"), DataEntry((("tasks_" + taskId) + "_tests"), tests)])
175- else throw("сhecking progress is not passed")
176- }
177+func startWork (taskId) = if (startWorkConditions(taskId, i.caller))
178+ then WriteSet([DataEntry((("tasks_" + taskId) + "_status"), "work_started")])
179+ else throw("сhecking progress is not passed")
177180
178181
179182
180183 @Callable(i)
181184 func rejectTask (taskId) = if (!(isGroupMember(i.caller)))
182185 then throw("grants working group access only")
183186 else WriteSet([DataEntry((("tasks_" + taskId) + "_status"), "rejected")])
184187
185188
186189
187190 @Callable(i)
188191 func acceptWorkResult (taskId,reportLink) = if (!(isGroupMember(i.caller)))
189192 then throw("grants working group access only")
190193 else {
191194 let rewardAmount = tryGetInteger((("tasks_" + taskId) + "_reward"))
192195 let teamAddress = getStringValue(this, (("tasks_" + taskId) + "_leader"))
193196 ScriptResult(WriteSet([DataEntry((("tasks_" + taskId) + "_status"), "work_finished"), DataEntry((("tasks_" + taskId) + "_report"), reportLink)]), TransferSet([ScriptTransfer(addressFromStringValue(teamAddress), rewardAmount, unit)]))
194197 }
195198
196199

github/deemru/w8io/3ef1775 
341.35 ms