tx · 8ynjQRFoVBWP1BLnwmJc6cXQuLz59TzgZDHGW6ApdXMA

3N71MDc3kPD6cnbdWp6iEuDY8ghgZ9DiVan:  -0.10000000 Waves

2020.12.21 18:48 [1318652] smart account 3N71MDc3kPD6cnbdWp6iEuDY8ghgZ9DiVan > SELF 0.00000000 Waves

{ "type": 13, "id": "8ynjQRFoVBWP1BLnwmJc6cXQuLz59TzgZDHGW6ApdXMA", "fee": 10000000, "feeAssetId": null, "timestamp": 1608565697756, "version": 2, "chainId": 84, "sender": "3N71MDc3kPD6cnbdWp6iEuDY8ghgZ9DiVan", "senderPublicKey": "5tBY17DiYVDP2QCBiAPKpjhmn1hCu1rS4XbwiY9zchFf", "proofs": [ "35vAZ7HESpqkJcVRRDDrFcfDqC2haDUQHMQU6ME9bR5EEGM8mk2SmRE1jPJ2B8LumqUdSC8UDSZPwVnCejq7P69y" ], "script": "base64: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AAAAAAABCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEFAAAAEnRlYW1Wb3Rlc0Ftb3VudEtleQQAAAAMbmV3VGVhbVNjb3JlCQAAZAAAAAIFAAAACXZvdGVWYWx1ZQkBAAAADXRyeUdldEludGVnZXIAAAABBQAAAAx0ZWFtU2NvcmVLZXkJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAB3ZvdGVLZXkFAAAACXZvdGVWYWx1ZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAMdGVhbVNjb3JlS2V5BQAAAAxuZXdUZWFtU2NvcmUFAAAAA25pbAAAAAFpAQAAABZmaW5pc2hBcHBsaWNhbnRzVm90aW5nAAAAAQAAAAZ0YXNrSWQKAQAAABZpc0FwcGxpY2FudFZvdGVkRW5vdWdoAAAAAgAAAANhaWQAAAAEYWlkMgQAAAAHbGlzdEtleQkAASwAAAACCQABLAAAAAICAAAABnRhc2tzXwUAAAAGdGFza0lkAgAAAAtfYXBwbGljYW50cwQAAAAOYXBwbGljYW50c0xpc3QJAAS1AAAAAgkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwUAAAAHbGlzdEtleQIAAAABOwQAAAAOdGVhbUlkZW50aWZpZXIJAAGRAAAAAgUAAAAOYXBwbGljYW50c0xpc3QFAAAAA2FpZAQAAAASdGVhbVZvdGVzQW1vdW50S2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAABnRhc2tzXwUAAAAGdGFza0lkAgAAAAVfYXBwXwUAAAAOdGVhbUlkZW50aWZpZXICAAAABl92b3RlcwQAAAAPdGVhbVZvdGVzQW1vdW50CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEFAAAAEnRlYW1Wb3Rlc0Ftb3VudEtleQMJAABmAAAAAgUAAAAPdGVhbVZvdGVzQW1vdW50AAAAAAAAAAAAAAAAAAAAAAABCQAAAgAAAAEJAAEsAAAAAgIAAAAlbm90IGVub3VnaCB2b3RlcyB0byBtYWtlIGRlY2lzaW9uIG9uIAUAAAAOdGVhbUlkZW50aWZpZXIKAQAAAAxoYXNNb3JlVm90ZXMAAAACAAAAA2FpZAAAAARhaWQyBAAAAAdsaXN0S2V5CQABLAAAAAIJAAEsAAAAAgIAAAAGdGFza3NfBQAAAAZ0YXNrSWQCAAAAC19hcHBsaWNhbnRzBAAAAA5hcHBsaWNhbnRzTGlzdAkABLUAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzBQAAAAdsaXN0S2V5AgAAAAE7BAAAAA50ZWFtSWRlbnRpZmllcgkAAZEAAAACBQAAAA5hcHBsaWNhbnRzTGlzdAUAAAADYWlkBAAAABJ0ZWFtVm90ZXNBbW91bnRLZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAGdGFza3NfBQAAAAZ0YXNrSWQCAAAABV9hcHBfBQAAAA50ZWFtSWRlbnRpZmllcgIAAAAGX3ZvdGVzBAAAAA90ZWFtVm90ZXNBbW91bnQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQUAAAASdGVhbVZvdGVzQW1vdW50S2V5BAAAAA90ZWFtMklkZW50aWZpZXIJAAGRAAAAAgUAAAAOYXBwbGljYW50c0xpc3QFAAAABGFpZDIEAAAAE3RlYW0yVm90ZXNBbW91bnRLZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAGdGFza3NfBQAAAAZ0YXNrSWQCAAAABV9hcHBfBQAAAA90ZWFtMklkZW50aWZpZXICAAAABl92b3RlcwQAAAAQdGVhbTJWb3Rlc0Ftb3VudAkBAAAADXRyeUdldEludGVnZXIAAAABBQAAABN0ZWFtMlZvdGVzQW1vdW50S2V5AwkAAGYAAAACBQAAAA90ZWFtVm90ZXNBbW91bnQFAAAAEHRlYW0yVm90ZXNBbW91bnQFAAAAA2FpZAUAAAAEYWlkMgMJAQAAAAEhAAAAAQkBAAAADWlzR3JvdXBNZW1iZXIAAAABCAUAAAABaQAAAAZjYWxsZXIJAAACAAAAAQIAAAAgZ3JhbnRzIHdvcmtpbmcgZ3JvdXAgYWNjZXNzIG9ubHkEAAAACGxpc3RLZXlzCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkAASwAAAACCQABLAAAAAICAAAABnRhc2tzXwUAAAAGdGFza0lkAgAAAAtfYXBwbGljYW50cwQAAAAOYXBwbGlj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", "height": 1318652, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DSY6u9fzYhsW7pugaff1B2U9wmu3u84YHd8FMcdaonUf Next: 78NbqZdbrxJJ3mEwD3VkjP2SdzaRFumByabG2VeKndFo Diff:
OldNewDifferences
2525 }
2626
2727
28-let mainContract = addressFromStringValue("3NCsqf4pFGtECs3vM4j1nKqL6VA3HdiNGeZ")
28+func isOwner (address) = (address == this)
29+
2930
3031 func getGroup () = {
31- let val = match getString(mainContract, "working_group_members") {
32+ let val = match getString(this, "working_group") {
3233 case b: String =>
3334 b
3435 case _ =>
3940
4041
4142 func getMembers () = {
42- let val = match getString(mainContract, "dao_members") {
43+ let val = match getString(this, "dao_members") {
4344 case b: String =>
4445 b
4546 case _ =>
4950 }
5051
5152
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- }
53+func isGroupMember (a) = (tryGetInteger((("working_group_member_" + toString(a)) + "_weight")) > 0)
6154
6255
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- }
56+func canMemberVote (i) = (tryGetInteger((("dao_member_" + toString(i.caller)) + "_weight")) > 0)
7257
7358
74-func canMemberVote (i) = {
75- let val = match getInteger(mainContract, (("dao_member_" + toString(i.caller)) + "_weight")) {
76- case b: Int =>
77- b
78- case _ =>
79- 0
80- }
81- (val > 0)
82- }
59+@Callable(i)
60+func addDAOMember (memberAddress) = if (!(isOwner(i.caller)))
61+ then throw("access only to the DAO owner")
62+ else if ((tryGetInteger((("dao_member_" + memberAddress) + "_weight")) == 1))
63+ then throw("This user already exists")
64+ else {
65+ let group = getMembers()
66+ let newGroup = ((group + ";") + memberAddress)
67+ let groupSize = tryGetInteger("dao_size")
68+ let newGroupSize = (groupSize + 1)
69+ WriteSet([DataEntry("dao_members", newGroup), DataEntry("dao_size", newGroupSize), DataEntry((("dao_member_" + memberAddress) + "_weight"), 1)])
70+ }
71+
72+
73+
74+@Callable(i)
75+func addGroupMember (memberAddress) = if (!(isOwner(i.caller)))
76+ then throw("access only to the DAO owner")
77+ else if ((tryGetInteger((("working_group_member_" + memberAddress) + "_weight")) == 1))
78+ then throw("This user already exists")
79+ else {
80+ let group = getGroup()
81+ let newGroup = ((group + ";") + memberAddress)
82+ let groupSize = tryGetInteger("working_group_size")
83+ let newGroupSize = (groupSize + 1)
84+ WriteSet([DataEntry("working_group_name", newGroup), DataEntry("working_group_size", newGroupSize), DataEntry((("working_group_member_" + memberAddress) + "_weight"), 1)])
85+ }
86+
8387
8488
8589 @Callable(i)
9094
9195
9296 @Callable(i)
93-func addTaskDetails (taskId,detailsLink) = if (!(isGroupMember(i.caller)))
97+func addTaskDetails (taskId) = if (!(isGroupMember(i.caller)))
9498 then throw("grants working group access only")
9599 else {
96100 let reward = extract(i.payment).amount
97- WriteSet([DataEntry((("tasks_" + taskId) + "_reward"), reward), DataEntry((("tasks_" + taskId) + "_details"), detailsLink), DataEntry((("tasks_" + taskId) + "_status"), "proposed")])
101+ WriteSet([DataEntry((("tasks_" + taskId) + "_reward"), reward), DataEntry((("tasks_" + taskId) + "_status"), "proposed")])
98102 }
99103
100104
126130
127131
128132 @Callable(i)
129-func finishTaskProposalVoting (taskId) = if ((QUORUM > ((tryGetInteger((("tasks_" + taskId) + "_voting_amount")) * 100) / getDAOSize())))
133+func finishTaskProposalVoting (taskId) = if ((QUORUM > ((tryGetInteger((("tasks_" + taskId) + "_voting_amount")) * 100) / tryGetInteger("dao_size"))))
130134 then throw((("more than " + toString(QUORUM)) + "% members have to vote before finishing the voting"))
131135 else if (!(isGroupMember(i.caller)))
132136 then throw("grants working group access only")
218222 then throw("No one has yet responded to the grant")
219223 else {
220224 let chosenTeamId = {
221- let $list96709701 = [0, 1]
222- let $size96709701 = size($list96709701)
223- let $acc096709701 = 0
224- if (($size96709701 == 0))
225- then $acc096709701
225+ let $list1093010961 = [0, 1]
226+ let $size1093010961 = size($list1093010961)
227+ let $acc01093010961 = 0
228+ if (($size1093010961 == 0))
229+ then $acc01093010961
226230 else {
227- let $acc196709701 = hasMoreVotes($acc096709701, $list96709701[0])
228- if (($size96709701 == 1))
229- then $acc196709701
231+ let $acc11093010961 = hasMoreVotes($acc01093010961, $list1093010961[0])
232+ if (($size1093010961 == 1))
233+ then $acc11093010961
230234 else {
231- let $acc296709701 = hasMoreVotes($acc196709701, $list96709701[1])
232- if (($size96709701 == 2))
233- then $acc296709701
235+ let $acc21093010961 = hasMoreVotes($acc11093010961, $list1093010961[1])
236+ if (($size1093010961 == 2))
237+ then $acc21093010961
234238 else {
235- let $acc396709701 = hasMoreVotes($acc296709701, $list96709701[2])
239+ let $acc31093010961 = hasMoreVotes($acc21093010961, $list1093010961[2])
236240 throw("List size exceed 2")
237241 }
238242 }
257261
258262
259263 @Callable(i)
260-func rejectTask (taskId) = if (!(isGroupMember(i.caller)))
261- then throw("grants working group access only")
262- else {
263- let teamIdentifier = getStringValue(this, (("tasks_" + taskId) + "_performer"))
264- WriteSet([DataEntry((("tasks_" + taskId) + "_status"), "rejected"), DataEntry((((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_process"), "rejected")])
265- }
266-
267-
268-
269-@Callable(i)
270-func acceptWorkResult (taskId,reportLink) = if (!(isGroupMember(i.caller)))
264+func acceptWorkResult (taskId) = if (!(isGroupMember(i.caller)))
271265 then throw("grants working group access only")
272266 else {
273267 let rewardAmount = tryGetInteger((("tasks_" + taskId) + "_reward"))
274268 let teamIdentifier = getStringValue(this, (("tasks_" + taskId) + "_performer"))
275269 let teamAddress = getStringValue(this, (((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_leader"))
276- ScriptResult(WriteSet([DataEntry((("tasks_" + taskId) + "_status"), "work_finished"), DataEntry((((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_process"), "work_finished"), DataEntry((((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_report"), reportLink)]), TransferSet([ScriptTransfer(addressFromStringValue(teamAddress), rewardAmount, unit)]))
270+ ScriptResult(WriteSet([DataEntry((("tasks_" + taskId) + "_status"), "work_finished"), DataEntry((((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_process"), "work_finished")]), TransferSet([ScriptTransfer(addressFromStringValue(teamAddress), rewardAmount, unit)]))
277271 }
278272
279273
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
28-let mainContract = addressFromStringValue("3NCsqf4pFGtECs3vM4j1nKqL6VA3HdiNGeZ")
28+func isOwner (address) = (address == this)
29+
2930
3031 func getGroup () = {
31- let val = match getString(mainContract, "working_group_members") {
32+ let val = match getString(this, "working_group") {
3233 case b: String =>
3334 b
3435 case _ =>
3536 ""
3637 }
3738 val
3839 }
3940
4041
4142 func getMembers () = {
42- let val = match getString(mainContract, "dao_members") {
43+ let val = match getString(this, "dao_members") {
4344 case b: String =>
4445 b
4546 case _ =>
4647 ""
4748 }
4849 val
4950 }
5051
5152
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- }
53+func isGroupMember (a) = (tryGetInteger((("working_group_member_" + toString(a)) + "_weight")) > 0)
6154
6255
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- }
56+func canMemberVote (i) = (tryGetInteger((("dao_member_" + toString(i.caller)) + "_weight")) > 0)
7257
7358
74-func canMemberVote (i) = {
75- let val = match getInteger(mainContract, (("dao_member_" + toString(i.caller)) + "_weight")) {
76- case b: Int =>
77- b
78- case _ =>
79- 0
80- }
81- (val > 0)
82- }
59+@Callable(i)
60+func addDAOMember (memberAddress) = if (!(isOwner(i.caller)))
61+ then throw("access only to the DAO owner")
62+ else if ((tryGetInteger((("dao_member_" + memberAddress) + "_weight")) == 1))
63+ then throw("This user already exists")
64+ else {
65+ let group = getMembers()
66+ let newGroup = ((group + ";") + memberAddress)
67+ let groupSize = tryGetInteger("dao_size")
68+ let newGroupSize = (groupSize + 1)
69+ WriteSet([DataEntry("dao_members", newGroup), DataEntry("dao_size", newGroupSize), DataEntry((("dao_member_" + memberAddress) + "_weight"), 1)])
70+ }
71+
72+
73+
74+@Callable(i)
75+func addGroupMember (memberAddress) = if (!(isOwner(i.caller)))
76+ then throw("access only to the DAO owner")
77+ else if ((tryGetInteger((("working_group_member_" + memberAddress) + "_weight")) == 1))
78+ then throw("This user already exists")
79+ else {
80+ let group = getGroup()
81+ let newGroup = ((group + ";") + memberAddress)
82+ let groupSize = tryGetInteger("working_group_size")
83+ let newGroupSize = (groupSize + 1)
84+ WriteSet([DataEntry("working_group_name", newGroup), DataEntry("working_group_size", newGroupSize), DataEntry((("working_group_member_" + memberAddress) + "_weight"), 1)])
85+ }
86+
8387
8488
8589 @Callable(i)
8690 func addTask (title,link) = if (!(isGroupMember(i.caller)))
8791 then throw("grants working group access only")
8892 else WriteSet([DataEntry((("tasks_" + toBase58String(i.transactionId)) + "_title"), title), DataEntry((("tasks_" + toBase58String(i.transactionId)) + "_link"), link)])
8993
9094
9195
9296 @Callable(i)
93-func addTaskDetails (taskId,detailsLink) = if (!(isGroupMember(i.caller)))
97+func addTaskDetails (taskId) = if (!(isGroupMember(i.caller)))
9498 then throw("grants working group access only")
9599 else {
96100 let reward = extract(i.payment).amount
97- WriteSet([DataEntry((("tasks_" + taskId) + "_reward"), reward), DataEntry((("tasks_" + taskId) + "_details"), detailsLink), DataEntry((("tasks_" + taskId) + "_status"), "proposed")])
101+ WriteSet([DataEntry((("tasks_" + taskId) + "_reward"), reward), DataEntry((("tasks_" + taskId) + "_status"), "proposed")])
98102 }
99103
100104
101105
102106 @Callable(i)
103107 func voteForTaskProposal (taskId,voteValue) = if (!(canMemberVote(i)))
104108 then throw("you can't vote")
105109 else if ((getStringValue(this, (("tasks_" + taskId) + "_status")) != "proposed"))
106110 then throw("voting is closed or not started")
107111 else if (if ((voteValue != -1))
108112 then (voteValue != 1)
109113 else false)
110114 then throw("you need to vote 1 or -1")
111115 else {
112116 let voteKey = ((("tasks_" + taskId) + "_voted_") + toString(i.caller))
113117 let previousVote = tryGetInteger(voteKey)
114118 if (!((previousVote == 0)))
115119 then throw("you have already voted")
116120 else {
117121 let votingKey = (("tasks_" + taskId) + "_voting_state")
118122 let votingState = tryGetInteger(votingKey)
119123 let votesAmountKey = (("tasks_" + taskId) + "_voting_amount")
120124 let votesAmountState = (tryGetInteger(votingKey) + 1)
121125 let newVotingState = (votingState + voteValue)
122126 ScriptResult(WriteSet([DataEntry(votingKey, newVotingState), DataEntry(voteKey, voteValue), DataEntry(votesAmountKey, votesAmountState)]), TransferSet([ScriptTransfer(i.caller, 500000, unit)]))
123127 }
124128 }
125129
126130
127131
128132 @Callable(i)
129-func finishTaskProposalVoting (taskId) = if ((QUORUM > ((tryGetInteger((("tasks_" + taskId) + "_voting_amount")) * 100) / getDAOSize())))
133+func finishTaskProposalVoting (taskId) = if ((QUORUM > ((tryGetInteger((("tasks_" + taskId) + "_voting_amount")) * 100) / tryGetInteger("dao_size"))))
130134 then throw((("more than " + toString(QUORUM)) + "% members have to vote before finishing the voting"))
131135 else if (!(isGroupMember(i.caller)))
132136 then throw("grants working group access only")
133137 else {
134138 let votingKey = (("tasks_" + taskId) + "_voting_state")
135139 let votingState = tryGetInteger(votingKey)
136140 if ((votingState > 0))
137141 then {
138142 let votingResult = "ready_to_apply"
139143 WriteSet([DataEntry((("tasks_" + taskId) + "_status"), votingResult)])
140144 }
141145 else {
142146 let votingResult = "rejected"
143147 WriteSet([DataEntry((("tasks_" + taskId) + "_status"), votingResult)])
144148 }
145149 }
146150
147151
148152
149153 @Callable(i)
150154 func applyForTask (taskId,teamName,link) = {
151155 let status = tryGetString((("tasks_" + taskId) + "_status"))
152156 if ((status != "ready_to_apply"))
153157 then throw("This grant has not yet been approved")
154158 else {
155159 let listKey = (("tasks_" + taskId) + "_applicants")
156160 let currentApplicantsList = tryGetString(listKey)
157161 let applicantKey = drop(toString(i.caller), 10)
158162 let newApplicantsList = ((currentApplicantsList + ";") + toString(i.caller))
159163 WriteSet([DataEntry((((("tasks_" + taskId) + "_app_") + applicantKey) + "_name"), teamName), DataEntry((((("tasks_" + taskId) + "_app_") + applicantKey) + "_link"), link), DataEntry((((("tasks_" + taskId) + "_app_") + applicantKey) + "_leader"), toString(i.caller)), DataEntry((((("tasks_" + taskId) + "_app_") + applicantKey) + "_id"), applicantKey), DataEntry(listKey, newApplicantsList)])
160164 }
161165 }
162166
163167
164168
165169 @Callable(i)
166170 func voteForApplicant (taskId,teamIdentifier,voteValue) = if (!(canMemberVote(i)))
167171 then throw("you can't vote")
168172 else {
169173 let voteHash = (drop(toString(i.caller), 10) + drop(teamIdentifier, 10))
170174 let voteKey = ((("tasks_" + taskId) + "_vote_") + voteHash)
171175 let vote = tryGetInteger(voteKey)
172176 if ((vote != 0))
173177 then throw("you have already voted on this team")
174178 else {
175179 let teamVotesAmountKey = (((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_votes")
176180 let teamScoreKey = (((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_score")
177181 let teamVotesAmount = (1 + tryGetInteger(teamVotesAmountKey))
178182 let newTeamScore = (voteValue + tryGetInteger(teamScoreKey))
179183 WriteSet([DataEntry(voteKey, voteValue), DataEntry(teamScoreKey, newTeamScore)])
180184 }
181185 }
182186
183187
184188
185189 @Callable(i)
186190 func finishApplicantsVoting (taskId) = {
187191 func isApplicantVotedEnough (aid,aid2) = {
188192 let listKey = (("tasks_" + taskId) + "_applicants")
189193 let applicantsList = split(getStringValue(this, listKey), ";")
190194 let teamIdentifier = applicantsList[aid]
191195 let teamVotesAmountKey = (((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_votes")
192196 let teamVotesAmount = tryGetInteger(teamVotesAmountKey)
193197 if ((teamVotesAmount > 0))
194198 then 1
195199 else throw(("not enough votes to make decision on " + teamIdentifier))
196200 }
197201
198202 func hasMoreVotes (aid,aid2) = {
199203 let listKey = (("tasks_" + taskId) + "_applicants")
200204 let applicantsList = split(getStringValue(this, listKey), ";")
201205 let teamIdentifier = applicantsList[aid]
202206 let teamVotesAmountKey = (((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_votes")
203207 let teamVotesAmount = tryGetInteger(teamVotesAmountKey)
204208 let team2Identifier = applicantsList[aid2]
205209 let team2VotesAmountKey = (((("tasks_" + taskId) + "_app_") + team2Identifier) + "_votes")
206210 let team2VotesAmount = tryGetInteger(team2VotesAmountKey)
207211 if ((teamVotesAmount > team2VotesAmount))
208212 then aid
209213 else aid2
210214 }
211215
212216 if (!(isGroupMember(i.caller)))
213217 then throw("grants working group access only")
214218 else {
215219 let listKeys = tryGetString((("tasks_" + taskId) + "_applicants"))
216220 let applicantsList = split(listKeys, ";")
217221 if ((size(applicantsList) == 0))
218222 then throw("No one has yet responded to the grant")
219223 else {
220224 let chosenTeamId = {
221- let $list96709701 = [0, 1]
222- let $size96709701 = size($list96709701)
223- let $acc096709701 = 0
224- if (($size96709701 == 0))
225- then $acc096709701
225+ let $list1093010961 = [0, 1]
226+ let $size1093010961 = size($list1093010961)
227+ let $acc01093010961 = 0
228+ if (($size1093010961 == 0))
229+ then $acc01093010961
226230 else {
227- let $acc196709701 = hasMoreVotes($acc096709701, $list96709701[0])
228- if (($size96709701 == 1))
229- then $acc196709701
231+ let $acc11093010961 = hasMoreVotes($acc01093010961, $list1093010961[0])
232+ if (($size1093010961 == 1))
233+ then $acc11093010961
230234 else {
231- let $acc296709701 = hasMoreVotes($acc196709701, $list96709701[1])
232- if (($size96709701 == 2))
233- then $acc296709701
235+ let $acc21093010961 = hasMoreVotes($acc11093010961, $list1093010961[1])
236+ if (($size1093010961 == 2))
237+ then $acc21093010961
234238 else {
235- let $acc396709701 = hasMoreVotes($acc296709701, $list96709701[2])
239+ let $acc31093010961 = hasMoreVotes($acc21093010961, $list1093010961[2])
236240 throw("List size exceed 2")
237241 }
238242 }
239243 }
240244 }
241245 let teamIdentifier = applicantsList[chosenTeamId]
242246 WriteSet([DataEntry((("tasks_" + taskId) + "_status"), "team_chosen"), DataEntry((("tasks_" + taskId) + "_performer"), teamIdentifier), DataEntry((((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_process"), "can_begin")])
243247 }
244248 }
245249 }
246250
247251
248252
249253 @Callable(i)
250254 func startWork (taskId) = {
251255 let teamIdentifier = getStringValue(this, (("tasks_" + taskId) + "_performer"))
252256 if ((toString(i.caller) != getStringValue(this, (((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_leader"))))
253257 then throw("team leader only")
254258 else WriteSet([DataEntry((("tasks_" + taskId) + "_status"), "work_started"), DataEntry((((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_process"), "work_started")])
255259 }
256260
257261
258262
259263 @Callable(i)
260-func rejectTask (taskId) = if (!(isGroupMember(i.caller)))
261- then throw("grants working group access only")
262- else {
263- let teamIdentifier = getStringValue(this, (("tasks_" + taskId) + "_performer"))
264- WriteSet([DataEntry((("tasks_" + taskId) + "_status"), "rejected"), DataEntry((((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_process"), "rejected")])
265- }
266-
267-
268-
269-@Callable(i)
270-func acceptWorkResult (taskId,reportLink) = if (!(isGroupMember(i.caller)))
264+func acceptWorkResult (taskId) = if (!(isGroupMember(i.caller)))
271265 then throw("grants working group access only")
272266 else {
273267 let rewardAmount = tryGetInteger((("tasks_" + taskId) + "_reward"))
274268 let teamIdentifier = getStringValue(this, (("tasks_" + taskId) + "_performer"))
275269 let teamAddress = getStringValue(this, (((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_leader"))
276- ScriptResult(WriteSet([DataEntry((("tasks_" + taskId) + "_status"), "work_finished"), DataEntry((((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_process"), "work_finished"), DataEntry((((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_report"), reportLink)]), TransferSet([ScriptTransfer(addressFromStringValue(teamAddress), rewardAmount, unit)]))
270+ ScriptResult(WriteSet([DataEntry((("tasks_" + taskId) + "_status"), "work_finished"), DataEntry((((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_process"), "work_finished")]), TransferSet([ScriptTransfer(addressFromStringValue(teamAddress), rewardAmount, unit)]))
277271 }
278272
279273

github/deemru/w8io/169f3d6 
52.00 ms