tx · GTvpCVVqGxACbmkFW9snjpGAW7VWEbRxEQmMQKVcVdof

3MvhfP9R4LcFNwsGfi2tHvUmyLYMUEPZa7g:  -0.01000000 Waves

2020.10.24 00:21 [1233768] smart account 3MvhfP9R4LcFNwsGfi2tHvUmyLYMUEPZa7g > SELF 0.00000000 Waves

{ "type": 13, "id": "GTvpCVVqGxACbmkFW9snjpGAW7VWEbRxEQmMQKVcVdof", "fee": 1000000, "feeAssetId": null, "timestamp": 1603488090858, "version": 2, "chainId": 84, "sender": "3MvhfP9R4LcFNwsGfi2tHvUmyLYMUEPZa7g", "senderPublicKey": "GLHHDnqheCdvSBCJQ7r51syKHzd3zB2MCnfjcBAFsgwt", "proofs": [ "2FSQR5Ae92NhuETrnnVYLKfabsxjFti3H43cHgTXunNUxRttwq4xVjBuYWYpEdbAR4sFXwTWRLuXSgVyEVt5f3b1" ], "script": "base64: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", "height": 1233768, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 3 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let QUORUM = 50
5+
6+let WCTid = base58'4zfrrwDVjbGFM8wxbZGriVLY4XJsVD4oNMp21FnDnMAa'
7+
8+func tryGetInteger (key) = {
9+ let val = match getInteger(this, key) {
10+ case b: Int =>
11+ b
12+ case _ =>
13+ 0
14+ }
15+ val
16+ }
17+
18+
19+func isOwner (address) = (address == this)
20+
21+
22+func getGroup () = {
23+ let val = match getString(this, "working_group") {
24+ case b: String =>
25+ b
26+ case _ =>
27+ ""
28+ }
29+ val
30+ }
31+
32+
33+func getMembers () = {
34+ let val = match getString(this, "dao_members") {
35+ case b: String =>
36+ b
37+ case _ =>
38+ ""
39+ }
40+ val
41+ }
42+
43+
44+func isGroupMember (a) = (tryGetInteger(("group_member_weight_" + toString(a))) > 0)
45+
46+
47+func canMemberVote (i) = (tryGetInteger(("dao_member_weight_" + toString(i.caller))) > 0)
48+
49+
50+@Callable(i)
51+func addDAOMember (memberAddress) = if (!(isOwner(i.caller)))
52+ then throw("access only to the DAO owner")
53+ else {
54+ let group = getMembers()
55+ let newGroup = ((group + ";") + memberAddress)
56+ let groupSize = tryGetInteger("dao_size")
57+ let newGroupSize = (groupSize + 1)
58+ WriteSet([DataEntry("dao_members", newGroup), DataEntry("dao_size", newGroupSize), DataEntry(("dao_member_weight_" + memberAddress), 1)])
59+ }
60+
61+
62+
63+@Callable(i)
64+func addGroupMember (memberAddress) = if (!(isOwner(i.caller)))
65+ then throw("access only to the DAO owner")
66+ else {
67+ let group = getGroup()
68+ let newGroup = ((group + ";") + memberAddress)
69+ let groupSize = tryGetInteger("working_group_size")
70+ let newGroupSize = (groupSize + 1)
71+ WriteSet([DataEntry("working_group_name", newGroup), DataEntry("working_group_size", newGroupSize), DataEntry(("group_member_weight_" + memberAddress), 1)])
72+ }
73+
74+
75+
76+@Callable(i)
77+func addTask (title) = if (!(isGroupMember(i.caller)))
78+ then throw("grants working group access only")
79+ else WriteSet([DataEntry((("tasks_" + toBase58String(i.transactionId)) + "_task"), title)])
80+
81+
82+
83+@Callable(i)
84+func rateTask (taskId,rate) = if (!(if ((rate == 1))
85+ then true
86+ else (rate == -1)))
87+ then throw("your rate needs to be +1 or -1")
88+ else {
89+ let pmt = extract(i.payment)
90+ if ((pmt.assetId != WCTid))
91+ then throw("you need to vote using WCT")
92+ else {
93+ let weight = pmt.amount
94+ let vote = (rate * weight)
95+ let previousRate = tryGetInteger((("tasks_" + taskId) + "_community_rate"))
96+ ScriptResult(WriteSet([DataEntry((("tasks_" + taskId) + "_community_rate"), (previousRate + vote))]), TransferSet([ScriptTransfer(i.caller, pmt.amount, pmt.assetId)]))
97+ }
98+ }
99+
100+
101+
102+@Callable(i)
103+func addTaskDetails (taskId) = if (!(isGroupMember(i.caller)))
104+ then throw("grants working group access only")
105+ else {
106+ let reward = extract(i.payment).amount
107+ WriteSet([DataEntry((("tasks_" + taskId) + "_reward"), reward), DataEntry((("tasks_" + taskId) + "_status"), "proposed")])
108+ }
109+
110+
111+
112+@Callable(i)
113+func voteForTaskProposal (taskId,voteValue) = if (!(canMemberVote(i)))
114+ then throw("you can't vote")
115+ else if ((getStringValue(this, (("tasks_" + taskId) + "_status")) != "proposed"))
116+ then throw("voting is closed or not started")
117+ else if (if ((voteValue != -1))
118+ then (voteValue != 1)
119+ else false)
120+ then throw("you need to vote 1 or -1")
121+ else {
122+ let voteKey = (((("tasks_" + taskId) + "_") + toString(i.caller)) + "_vote1")
123+ let previousVote = tryGetInteger(voteKey)
124+ if (!((previousVote == 0)))
125+ then throw("you have already voted")
126+ else {
127+ let votingKey = (("tasks_" + taskId) + "_voting1")
128+ let votingState = tryGetInteger(votingKey)
129+ let votesAmountKey = (("tasks_" + taskId) + "_voting1_amount")
130+ let votesAmountState = (tryGetInteger(votingKey) + 1)
131+ let newVotingState = (votingState + voteValue)
132+ ScriptResult(WriteSet([DataEntry(votingKey, newVotingState), DataEntry(voteKey, voteValue), DataEntry(votesAmountKey, votesAmountState)]), TransferSet([ScriptTransfer(i.caller, 500000, unit)]))
133+ }
134+ }
135+
136+
137+
138+@Callable(i)
139+func finishTaskProposalVoting (taskId) = if ((QUORUM > ((tryGetInteger((("tasks_" + taskId) + "_voting1_amount")) * 100) / tryGetInteger("dao_size"))))
140+ then throw((("more than " + toString(QUORUM)) + "% members have to vote before finishing the voting"))
141+ else if (!(isGroupMember(i.caller)))
142+ then throw("grants working group access only")
143+ else {
144+ let votingKey = (("tasks_" + taskId) + "_voting1")
145+ let votingState = tryGetInteger(votingKey)
146+ if ((votingState > 0))
147+ then {
148+ let votingResult = "ready_to_apply"
149+ WriteSet([DataEntry((("tasks_" + taskId) + "_status"), votingResult)])
150+ }
151+ else {
152+ let votingResult = "rejected"
153+ WriteSet([DataEntry((("tasks_" + taskId) + "_status"), votingResult)])
154+ }
155+ }
156+
157+
158+
159+@Callable(i)
160+func applyForTask (taskId,teamName) = {
161+ let listKey = (("tasks_" + taskId) + "_applicants")
162+ let currentApplicantsList = match getString(this, listKey) {
163+ case b: String =>
164+ b
165+ case _ =>
166+ ""
167+ }
168+ let newApplicantsList = ((currentApplicantsList + ";") + teamName)
169+ WriteSet([DataEntry((((("tasks_" + taskId) + "_applicant_") + teamName) + "_leader"), toString(i.caller)), DataEntry(listKey, newApplicantsList)])
170+ }
171+
172+
173+
174+@Callable(i)
175+func voteForApplicant (taskId,teamName,voteValue) = if (!(canMemberVote(i)))
176+ then throw("you can't vote")
177+ else {
178+ let voteKey = ((((("tasks_" + taskId) + "_") + toString(i.caller)) + "_vote_") + teamName)
179+ let vote = tryGetInteger(voteKey)
180+ if ((vote != 0))
181+ then throw("you have already voted on this team")
182+ else {
183+ let teamVotesAmountKey = (((("tasks_" + taskId) + "_applicant_") + teamName) + "_votes")
184+ let teamScoreKey = (((("tasks_" + taskId) + "_applicant_") + teamName) + "_score")
185+ let teamVotesAmount = (1 + tryGetInteger(teamVotesAmountKey))
186+ let newTeamScore = (voteValue + tryGetInteger(teamScoreKey))
187+ WriteSet([DataEntry(voteKey, voteValue), DataEntry(teamScoreKey, newTeamScore)])
188+ }
189+ }
190+
191+
192+
193+@Callable(i)
194+func finishApplicantsVoting (taskId) = {
195+ func isApplicantVotedEnough (aid,aid2) = {
196+ let listKey = (("tasks_" + taskId) + "_applicants")
197+ let applicantsList = split(getStringValue(this, listKey), ";")
198+ let teamName = applicantsList[aid]
199+ let teamVotesAmountKey = (((("tasks_" + taskId) + "_applicant_") + teamName) + "_votes")
200+ let teamVotesAmount = tryGetInteger(teamVotesAmountKey)
201+ if ((teamVotesAmount > 0))
202+ then 1
203+ else throw(("not enough votes to make decision on " + teamName))
204+ }
205+
206+ func hasMoreVotes (aid,aid2) = {
207+ let listKey = (("tasks_" + taskId) + "_applicants")
208+ let applicantsList = split(getStringValue(this, listKey), ";")
209+ let teamName = applicantsList[aid]
210+ let teamVotesAmountKey = (((("tasks_" + taskId) + "_applicant_") + teamName) + "_votes")
211+ let teamVotesAmount = tryGetInteger(teamVotesAmountKey)
212+ let team2Name = applicantsList[aid2]
213+ let team2VotesAmountKey = (((("tasks_" + taskId) + "_applicant_") + team2Name) + "_votes")
214+ let team2VotesAmount = tryGetInteger(team2VotesAmountKey)
215+ if ((teamVotesAmount > team2VotesAmount))
216+ then aid
217+ else aid2
218+ }
219+
220+ if (!(isGroupMember(i.caller)))
221+ then throw("grants working group access only")
222+ else {
223+ let chosenTeamId = {
224+ let $list87708801 = [0, 1]
225+ let $size87708801 = size($list87708801)
226+ let $acc087708801 = 0
227+ if (($size87708801 == 0))
228+ then $acc087708801
229+ else {
230+ let $acc187708801 = hasMoreVotes($acc087708801, $list87708801[0])
231+ if (($size87708801 == 1))
232+ then $acc187708801
233+ else {
234+ let $acc287708801 = hasMoreVotes($acc187708801, $list87708801[1])
235+ if (($size87708801 == 2))
236+ then $acc287708801
237+ else {
238+ let $acc387708801 = hasMoreVotes($acc287708801, $list87708801[2])
239+ throw("List size exceed 2")
240+ }
241+ }
242+ }
243+ }
244+ let listKey = (("tasks_" + taskId) + "_applicants")
245+ let applicantsList = split(getStringValue(this, listKey), ";")
246+ let teamName = applicantsList[chosenTeamId]
247+ WriteSet([DataEntry((("tasks_" + taskId) + "_status"), "team_chosen"), DataEntry((("tasks_" + taskId) + "_performer"), teamName), DataEntry((((("tasks_" + taskId) + "_applicant_") + teamName) + "_work_process"), "can_begin")])
248+ }
249+ }
250+
251+
252+
253+@Callable(i)
254+func startWork (taskId) = {
255+ let teamName = getStringValue(this, (("tasks_" + taskId) + "_performer"))
256+ if ((toString(i.caller) != getStringValue(this, (((("tasks_" + taskId) + "_applicant_") + teamName) + "_leader"))))
257+ then throw("team leader only")
258+ else WriteSet([DataEntry((("tasks_" + taskId) + "_status"), "work_started"), DataEntry((((("tasks_" + taskId) + "_applicant_") + teamName) + "_work_process"), "work_started")])
259+ }
260+
261+
262+
263+@Callable(i)
264+func acceptWorkResult (taskId) = if (!(isGroupMember(i.caller)))
265+ then throw("grants working group access only")
266+ else {
267+ let rewardAmount = tryGetInteger((("tasks_" + taskId) + "_reward"))
268+ let teamName = getStringValue(this, (("tasks_" + taskId) + "_performer"))
269+ let teamAddress = getStringValue(this, (((("tasks_" + taskId) + "_applicant_") + teamName) + "_leader"))
270+ ScriptResult(WriteSet([DataEntry((("tasks_" + taskId) + "_status"), "work_finished"), DataEntry((((("tasks_" + taskId) + "_applicant_") + teamName) + "_work_process"), "work_finished")]), TransferSet([ScriptTransfer(addressFromStringValue(teamAddress), rewardAmount, unit)]))
271+ }
272+
273+

github/deemru/w8io/169f3d6 
25.01 ms