tx · 45MjSk6BmzbAVHrtiBFgnNm6zdWgjjrJQ1SnMf5CWJG2

3MyJW8QqCAnqD55yTEYcXMECBe2aMyG3ore:  -0.01000000 Waves

2021.03.22 18:49 [1449153] smart account 3MyJW8QqCAnqD55yTEYcXMECBe2aMyG3ore > SELF 0.00000000 Waves

{ "type": 13, "id": "45MjSk6BmzbAVHrtiBFgnNm6zdWgjjrJQ1SnMf5CWJG2", "fee": 1000000, "feeAssetId": null, "timestamp": 1616428166009, "version": 1, "sender": "3MyJW8QqCAnqD55yTEYcXMECBe2aMyG3ore", "senderPublicKey": "HdNG2DBKMbY9WeQcsxnUyRf9RZBi4aak9bcmRLaavonE", "proofs": [ "3i2PNRhF5Mofjis4MKu11S57yQo5eACXVyMZwd96kfGohoGkCUdJQnbXcgCWMsQQWjRg93pWkHNapsLBQARi7yV9" ], "script": "base64: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dGUJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQUAAAAJdm90aW5nS2V5BAAAAA52b3Rlc0Ftb3VudEtleQkAASwAAAACCQABLAAAAAICAAAABnRhc2tzXwUAAAAGdGFza0lkAgAAAA5fdm90aW5nX2Ftb3VudAQAAAAQdm90ZXNBbW91bnRTdGF0ZQkAAGQAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEFAAAACXZvdGluZ0tleQAAAAAAAAAAAQQAAAAMdm90ZVZhbHVlSW50CQEAAAAMZ2V0Vm90ZVZhbHVlAAAAAQUAAAAJdm90ZVZhbHVlBAAAAA5uZXdWb3RpbmdTdGF0ZQkAAGQAAAACBQAAAAt2b3RpbmdTdGF0ZQUAAAAMdm90ZVZhbHVlSW50CQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAAl2b3RpbmdLZXkFAAAADm5ld1ZvdGluZ1N0YXRlCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAAd2b3RlS2V5BQAAAAx2b3RlVmFsdWVJbnQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAADnZvdGVzQW1vdW50S2V5BQAAABB2b3Rlc0Ftb3VudFN0YXRlBQAAAANuaWwJAAACAAAAAQIAAAAVY2hlY2tzIGFyZSBub3QgcGFzc2VkAAAAAWkBAAAAGGZpbmlzaFRhc2tQcm9wb3NhbFZvdGluZwAAAAEAAAAGdGFza0lkAwkBAAAAImZpbmlzaFRhc2tQcm9wb3NhbFZvdGluZ0NvbmRpdGlvbnMAAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABnRhc2tJZAQAAAAJdm90aW5nS2V5CQABLAAAAAIJAAEsAAAAAgIAAAAGdGFza3NfBQAAAAZ0YXNrSWQCAAAADV92b3Rpbmdfc3RhdGUJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAZ0YXNrc18FAAAABnRhc2tJZAIAAAAHX3N0YXR1cwMJAABmAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABBQAAAAl2b3RpbmdLZXkAAAAAAAAAAAACAAAADnJlYWR5X3Rv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", "chainId": 84, "height": 1449153, "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 = 1
5+
6+let mainContract = addressFromStringValue("3N9ZckEaLQrq6ScFK42e5tF7Vso3tRvAVBP")
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 tryGetString (key) = {
20+ let val = match getString(this, key) {
21+ case b: String =>
22+ b
23+ case _ =>
24+ ""
25+ }
26+ val
27+ }
28+
29+
30+func getGroup () = {
31+ let val = match getString(mainContract, "working_group_members") {
32+ case b: String =>
33+ b
34+ case _ =>
35+ ""
36+ }
37+ val
38+ }
39+
40+
41+func getMembers () = {
42+ let val = match getString(mainContract, "dao_members") {
43+ case b: String =>
44+ b
45+ case _ =>
46+ ""
47+ }
48+ val
49+ }
50+
51+
52+func getDAOSize () = {
53+ let val = match getInteger(mainContract, "dao_size") {
54+ case b: Int =>
55+ b
56+ case _ =>
57+ 0
58+ }
59+ val
60+ }
61+
62+
63+func isGroupMember (a) = {
64+ let val = match getInteger(mainContract, (("working_group_member_" + toString(a)) + "_weight")) {
65+ case b: Int =>
66+ b
67+ case _ =>
68+ 0
69+ }
70+ (val > 0)
71+ }
72+
73+
74+func canMemberVote (address) = {
75+ let val = match getInteger(mainContract, (("dao_member_" + toString(address)) + "_weight")) {
76+ case b: Int =>
77+ b
78+ case _ =>
79+ 0
80+ }
81+ (val > 0)
82+ }
83+
84+
85+func isJuryMember (address,taskId) = canMemberVote(address)
86+
87+
88+func getVoteValue (s) = if ((s == "like"))
89+ then 1
90+ else if ((s == "dislike"))
91+ then -1
92+ else throw("you need to vote with 'like' or 'dislike' value")
93+
94+
95+func addTaskConditions (address) = if (!(isGroupMember(address)))
96+ then throw("grants working group access only")
97+ else true
98+
99+
100+func addRewardConditions (address,taskId) = if (!(isGroupMember(address)))
101+ then throw("grants working group access only")
102+ else if ((tryGetString((("tasks_" + taskId) + "_status")) != ""))
103+ then throw("grant isn`t new")
104+ else true
105+
106+
107+func voteForTaskProposalConditions (address,taskId) = if (!(canMemberVote(address)))
108+ then throw("you can't vote")
109+ else if ((tryGetString((("tasks_" + taskId) + "_status")) != "proposed"))
110+ then throw("voting is closed or not started")
111+ else if ((tryGetInteger(((("tasks_" + taskId) + "_voted_") + toString(address))) != 0))
112+ then throw("you have already voted")
113+ else true
114+
115+
116+func finishTaskProposalVotingConditions (address,taskId) = if (!(isGroupMember(address)))
117+ then throw("grants working group access only")
118+ else if ((tryGetString((("tasks_" + taskId) + "_status")) != "proposed"))
119+ then throw("voting is not active")
120+ else if ((QUORUM > ((tryGetInteger((("tasks_" + taskId) + "_voting_amount")) * 100) / getDAOSize())))
121+ then throw((("more than " + toString(QUORUM)) + "% members have to vote before finishing the voting"))
122+ else true
123+
124+
125+func applyForTaskConditions (address,taskId,teamIdentifier) = if ((tryGetString((("tasks_" + taskId) + "_status")) != "ready_to_apply"))
126+ then throw("this grant has not yet been approved")
127+ else if ((tryGetString((((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_leader")) == toString(address)))
128+ then throw("you are applied")
129+ else true
130+
131+
132+func voteForApplicantConditions (address,taskId,teamIdentifier) = {
133+ let voteHash = (drop(toString(address), 10) + drop(teamIdentifier, 10))
134+ if (!(canMemberVote(address)))
135+ then throw("you can't vote")
136+ else if ((tryGetString((("tasks_" + taskId) + "_status")) != "ready_to_apply"))
137+ then throw("voting is not active")
138+ else if ((tryGetInteger(((("tasks_" + taskId) + "_vote_") + voteHash)) != 0))
139+ then throw("you have already voted on this team")
140+ else true
141+ }
142+
143+
144+func finishApplicantsVotingConditions (address,taskId,applicantsList) = if (!(isGroupMember(address)))
145+ then throw("grants working group access only")
146+ else if ((tryGetString((("tasks_" + taskId) + "_status")) != "ready_to_apply"))
147+ then throw("voting is not active")
148+ else if ((size(applicantsList) == 0))
149+ then throw("no one has yet responded to the grant")
150+ else true
151+
152+
153+func startWorkConditions (address,taskId,teamIdentifier) = if ((tryGetString((("tasks_" + taskId) + "_status")) != "team_chosen"))
154+ then throw("winner is not define")
155+ else if ((toString(address) != tryGetString((((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_leader"))))
156+ then throw("team leader only")
157+ else true
158+
159+
160+func acceptWorkResultConditions (address,taskId,winnerIdentifier) = if (!(isGroupMember(address)))
161+ then throw("grants working group access only")
162+ else if ((tryGetString((("tasks_" + taskId) + "_status")) != "work_finished"))
163+ then throw("work is not finished")
164+ else if ((1 > tryGetInteger((((("tasks_" + taskId) + "_app_") + winnerIdentifier) + "_score_solution"))))
165+ then throw("negative assessment")
166+ else true
167+
168+
169+func enableSubmissionsConditions (address,taskId) = if (!(isGroupMember(address)))
170+ then throw("grants working group access only")
171+ else true
172+
173+
174+func submitSolutionConditions (address,taskId,teamIdentifier) = if ((tryGetString((("tasks_" + taskId) + "_status")) != "work_started"))
175+ then throw("work is not started")
176+ else if ((toString(address) != tryGetString((((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_leader"))))
177+ then throw("team leader only")
178+ else if ((1 > tryGetInteger((((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_score_applicant"))))
179+ then throw("your team is not approved")
180+ else if ((tryGetString((((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_process")) == "work_submitted"))
181+ then throw("you have already presented the solution")
182+ else true
183+
184+
185+func stopSubmissionsConditions (address,taskId) = if (!(isGroupMember(address)))
186+ then throw("grants working group access only")
187+ else if ((tryGetString((("tasks_" + taskId) + "_status")) != "work_started"))
188+ then throw("work is not started")
189+ else true
190+
191+
192+func voteForSolutionConditions (address,taskId) = if (!(isJuryMember(address, taskId)))
193+ then throw("you can't vote")
194+ else if ((tryGetString((("tasks_" + taskId) + "_status")) != "work_finished"))
195+ then throw("work is not started")
196+ else true
197+
198+
199+@Callable(i)
200+func addTask (title,link,hash) = if (addTaskConditions(i.caller))
201+ then WriteSet([DataEntry((("tasks_" + toBase58String(i.transactionId)) + "_title"), title), DataEntry((("tasks_" + toBase58String(i.transactionId)) + "_link"), link), DataEntry((("tasks_" + toBase58String(i.transactionId)) + "_hash"), hash)])
202+ else throw("checks are not passed")
203+
204+
205+
206+@Callable(i)
207+func resetHash (hash) = if (addTaskConditions(i.caller))
208+ then WriteSet([DataEntry((("tasks_" + toBase58String(i.transactionId)) + "_hash"), hash)])
209+ else throw("checks are not passed")
210+
211+
212+
213+@Callable(i)
214+func addReward (taskId) = if (addRewardConditions(i.caller, taskId))
215+ then {
216+ let reward = extract(i.payment).amount
217+ WriteSet([DataEntry((("tasks_" + taskId) + "_reward"), reward), DataEntry((("tasks_" + taskId) + "_status"), "proposed")])
218+ }
219+ else throw("checks are not passed")
220+
221+
222+
223+@Callable(i)
224+func voteForTaskProposal (taskId,voteValue) = if (voteForTaskProposalConditions(i.caller, taskId))
225+ then {
226+ let voteKey = ((("tasks_" + taskId) + "_voted_") + toString(i.caller))
227+ let votingKey = (("tasks_" + taskId) + "_voting_state")
228+ let votingState = tryGetInteger(votingKey)
229+ let votesAmountKey = (("tasks_" + taskId) + "_voting_amount")
230+ let votesAmountState = (tryGetInteger(votingKey) + 1)
231+ let voteValueInt = getVoteValue(voteValue)
232+ let newVotingState = (votingState + voteValueInt)
233+ WriteSet([DataEntry(votingKey, newVotingState), DataEntry(voteKey, voteValueInt), DataEntry(votesAmountKey, votesAmountState)])
234+ }
235+ else throw("checks are not passed")
236+
237+
238+
239+@Callable(i)
240+func finishTaskProposalVoting (taskId) = if (finishTaskProposalVotingConditions(i.caller, taskId))
241+ then {
242+ let votingKey = (("tasks_" + taskId) + "_voting_state")
243+ WriteSet([DataEntry((("tasks_" + taskId) + "_status"), if ((tryGetInteger(votingKey) > 0))
244+ then "ready_to_apply"
245+ else "rejected")])
246+ }
247+ else throw("checks are not passed")
248+
249+
250+
251+@Callable(i)
252+func applyForTask (taskId,teamName,link,hash) = {
253+ let teamIdentifier = drop(toString(i.caller), 10)
254+ if (applyForTaskConditions(i.caller, taskId, teamIdentifier))
255+ then {
256+ let listKey = (("tasks_" + taskId) + "_applicants")
257+ let currentApplicantsList = tryGetString(listKey)
258+ let newApplicantsList = ((currentApplicantsList + ";") + toString(i.caller))
259+ WriteSet([DataEntry((((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_name"), teamName), DataEntry((((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_link"), link), DataEntry((((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_hash"), hash), DataEntry((((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_leader"), toString(i.caller)), DataEntry((((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_id"), teamIdentifier), DataEntry(listKey, newApplicantsList)])
260+ }
261+ else throw("checks are not passed")
262+ }
263+
264+
265+
266+@Callable(i)
267+func voteForApplicant (taskId,teamIdentifier,voteValue) = if (voteForApplicantConditions(i.caller, taskId, teamIdentifier))
268+ then {
269+ let listKey = (((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_voted_applicant")
270+ let newApplicantsList = ((tryGetString(listKey) + ";") + toString(i.caller))
271+ let voteHash = (drop(toString(i.caller), 20) + teamIdentifier)
272+ let voteKey = ((("tasks_" + taskId) + "_vh_") + voteHash)
273+ if ((tryGetString(voteKey) == toString(i.caller)))
274+ then throw("you have already voted on this team")
275+ else {
276+ let teamVotesAmountKey = (((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_votes_applicant")
277+ let teamScoreKey = (((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_score_applicant")
278+ let teamVotesAmount = (1 + tryGetInteger(teamVotesAmountKey))
279+ let newTeamScore = (getVoteValue(voteValue) + tryGetInteger(teamScoreKey))
280+ WriteSet([DataEntry(listKey, newApplicantsList), DataEntry(voteKey, toString(i.caller)), DataEntry(teamVotesAmountKey, teamVotesAmount), DataEntry(teamScoreKey, newTeamScore)])
281+ }
282+ }
283+ else throw("checks are not passed")
284+
285+
286+
287+@Callable(i)
288+func finishApplicantsVoting (taskId) = {
289+ let listKeys = tryGetString((("tasks_" + taskId) + "_applicants"))
290+ let applicantsList = split(listKeys, ";")
291+ if (finishApplicantsVotingConditions(i.caller, taskId, applicantsList))
292+ then WriteSet([DataEntry((("tasks_" + taskId) + "_status"), "ready_to_submit")])
293+ else throw("checks are not passed")
294+ }
295+
296+
297+
298+@Callable(i)
299+func enableSubmissions (taskId,juryList) = if (enableSubmissionsConditions(i.caller, taskId))
300+ then WriteSet([DataEntry((("tasks_" + taskId) + "_status"), "work_started"), DataEntry((("tasks_" + taskId) + "_jury"), juryList)])
301+ else throw("checks are not passed")
302+
303+
304+
305+@Callable(i)
306+func submitSolution (taskId,solutionLink,hash) = {
307+ let teamIdentifier = drop(toString(i.caller), 10)
308+ if (submitSolutionConditions(i.caller, taskId, teamIdentifier))
309+ then WriteSet([DataEntry((((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_process"), "work_submitted"), DataEntry((((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_solution"), solutionLink), DataEntry((((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_solution_hash"), hash)])
310+ else throw("checks are not passed")
311+ }
312+
313+
314+
315+@Callable(i)
316+func stopSubmissions (taskId) = if (stopSubmissionsConditions(i.caller, taskId))
317+ then WriteSet([DataEntry((("tasks_" + taskId) + "_status"), "work_finished")])
318+ else throw("checks are not passed")
319+
320+
321+
322+@Callable(i)
323+func voteForSolution (taskId,teamIdentifier,voteValue) = if (voteForSolutionConditions(i.caller, taskId))
324+ then {
325+ let listKey = (((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_voted_solution")
326+ let newVotedList = ((tryGetString(listKey) + ";") + toString(i.caller))
327+ let voteHash = (drop(toString(i.caller), 20) + teamIdentifier)
328+ let voteKey = ((("tasks_" + taskId) + "_vs_") + voteHash)
329+ if ((tryGetString(voteKey) == toString(i.caller)))
330+ then throw("you have already voted on this team")
331+ else {
332+ let teamVotesAmountKey = (((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_votes_solution")
333+ let teamScoreKey = (((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_score_solution")
334+ let teamVotesAmount = (1 + tryGetInteger(teamVotesAmountKey))
335+ let newTeamScore = (getVoteValue(voteValue) + tryGetInteger(teamScoreKey))
336+ WriteSet([DataEntry(listKey, newVotedList), DataEntry(voteKey, toString(i.caller)), DataEntry(teamVotesAmountKey, teamVotesAmount), DataEntry(teamScoreKey, newTeamScore)])
337+ }
338+ }
339+ else throw("checks are not passed")
340+
341+
342+
343+@Callable(i)
344+func acceptWorkResult (taskId,winnerIdentifier,reportLink) = if (acceptWorkResultConditions(i.caller, taskId, winnerIdentifier))
345+ then {
346+ let rewardAmount = tryGetInteger((("tasks_" + taskId) + "_reward"))
347+ let teamAddress = getStringValue(this, (((("tasks_" + taskId) + "_app_") + winnerIdentifier) + "_leader"))
348+ ScriptResult(WriteSet([DataEntry((("tasks_" + taskId) + "_status"), "solution_chosen"), DataEntry((((("tasks_" + taskId) + "_app_") + winnerIdentifier) + "_process"), "winner"), DataEntry((("tasks_" + taskId) + "_report"), reportLink)]), TransferSet([ScriptTransfer(addressFromStringValue(teamAddress), rewardAmount, unit)]))
349+ }
350+ else throw("checks are not passed")
351+
352+
353+
354+@Callable(i)
355+func rejectTask (taskId) = if (!(isGroupMember(i.caller)))
356+ then throw("grants working group access only")
357+ else WriteSet([DataEntry((("tasks_" + taskId) + "_status"), "rejected")])
358+
359+

github/deemru/w8io/026f985 
44.00 ms