tx · FKRerSYGkCxxs6oCkQgynZRiFmmrB2cY3pZ5ZEeSmJwU

3Mxk4Jmjd8SdE2MojSXsUQ8LVYM8vRzmFSA:  -0.10000000 Waves

2020.12.21 13:56 [1318362] smart account 3Mxk4Jmjd8SdE2MojSXsUQ8LVYM8vRzmFSA > SELF 0.00000000 Waves

{ "type": 13, "id": "FKRerSYGkCxxs6oCkQgynZRiFmmrB2cY3pZ5ZEeSmJwU", "fee": 10000000, "feeAssetId": null, "timestamp": 1608548166901, "version": 2, "chainId": 84, "sender": "3Mxk4Jmjd8SdE2MojSXsUQ8LVYM8vRzmFSA", "senderPublicKey": "4xMxUnfdbHYsent96ThiYC63gXHiahi6bh3urdHHntHi", "proofs": [ "5ZgumpPCiFJQ8WJfxJZ5zsBKzHVsk3Y9egdQ5dTrWCgabQsJ8KowcnbaSzD3h9KyS3G4iQTuaPX3vSEU8ttB6qnB" ], "script": "base64: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AgAAAAtfYXBwbGljYW50cwQAAAAOYXBwbGljYW50c0xpc3QJAAS1AAAAAgkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwUAAAAHbGlzdEtleQIAAAABOwQAAAAOdGVhbUlkZW50aWZpZXIJAAGRAAAAAgUAAAAOYXBwbGljYW50c0xpc3QFAAAAA2FpZAQAAAASdGVhbVZvdGVzQW1vdW50S2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAABnRhc2tzXwUAAAAGdGFza0lkAgAAAAVfYXBwXwUAAAAOdGVhbUlkZW50aWZpZXICAAAABl92b3RlcwQAAAAPdGVhbVZvdGVzQW1vdW50CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEFAAAAEnRlYW1Wb3Rlc0Ftb3VudEtleQQAAAAPdGVhbTJJZGVudGlmaWVyCQABkQAAAAIFAAAADmFwcGxpY2FudHNMaXN0BQAAAARhaWQyBAAAABN0ZWFtMlZvdGVzQW1vdW50S2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAABnRhc2tzXwUAAAAGdGFza0lkAgAAAAVfYXBwXwUAAAAPdGVhbTJJZGVudGlmaWVyAgAAAAZfdm90ZXMEAAAAEHRlYW0yVm90ZXNBbW91bnQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQUAAAATdGVhbTJWb3Rlc0Ftb3VudEtleQMJAABmAAAAAgUAAAAPdGVhbVZvdGVzQW1vdW50BQAAABB0ZWFtMlZvdGVzQW1vdW50BQAAAANhaWQFAAAABGFpZDIDCQEAAAABIQAAAAEJAQAAAA1pc0dyb3VwTWVtYmVyAAAAAQgFAAAAAWkAAAAGY2FsbGVyCQAAAgAAAAECAAAAIGdyYW50cyB3b3JraW5nIGdyb3VwIGFjY2VzcyBvbmx5BAAAAAhsaXN0S2V5cwkBAAAADHRyeUdldFN0cmluZwAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAZ0YXNrc18FAAAABnRhc2tJZAIAAAALX2FwcGxpY2FudHMEAAAADmFwcGxpY2FudHNMaXN0CQAEtQAAAAIFAAAACGxpc3RLZXlzAgAAAAE7AwkAAAAAAAACCQABkAAAAAEFAAAADmFw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", "height": 1318362, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: U42QrQgm65tuUsg5LAxoHTEx8H5LyapdAZT8GJy8vZW Next: 2uKUfyoqkjweyUW34JYAvCCegMypX2bQAyvrLThbYgF3 Diff:
OldNewDifferences
3131 }
3232
3333
34-func h (i) = (i == this)
34+let h = addressFromStringValue("3NCsqf4pFGtECs3vM4j1nKqL6VA3HdiNGeZ")
35+
36+func i () = {
37+ let d = {
38+ let e = getString(h, "working_group_members")
39+ if ($isInstanceOf(e, "String"))
40+ then {
41+ let f = e
42+ f
43+ }
44+ else ""
45+ }
46+ d
47+ }
3548
3649
3750 func j () = {
3851 let d = {
39- let e = getString(this, "working_group_members")
52+ let e = getString(h, "dao_members")
4053 if ($isInstanceOf(e, "String"))
4154 then {
4255 let f = e
5063
5164 func k () = {
5265 let d = {
53- let e = getString(this, "dao_members")
54- if ($isInstanceOf(e, "String"))
66+ let e = getInteger(h, "dao_size")
67+ if ($isInstanceOf(e, "Int"))
5568 then {
5669 let f = e
5770 f
5871 }
59- else ""
72+ else 0
6073 }
6174 d
6275 }
6376
6477
65-func l (m) = (b((("working_group_member_" + toString(m)) + "_weight")) > 0)
78+func l (m) = {
79+ let d = {
80+ let e = getInteger(h, (("working_group_member_" + toString(m)) + "_weight"))
81+ if ($isInstanceOf(e, "Int"))
82+ then {
83+ let f = e
84+ f
85+ }
86+ else 0
87+ }
88+ (d > 0)
89+ }
6690
6791
68-func n (o) = (b((("dao_member_" + toString(o.caller)) + "_weight")) > 0)
92+func n (o) = {
93+ let d = {
94+ let e = getInteger(h, (("dao_member_" + toString(o.caller)) + "_weight"))
95+ if ($isInstanceOf(e, "Int"))
96+ then {
97+ let f = e
98+ f
99+ }
100+ else 0
101+ }
102+ (d > 0)
103+ }
69104
70105
71106 @Callable(o)
72-func addDAOMember (p) = if (!(h(o.caller)))
73- then throw("access only to the DAO owner")
74- else if ((b((("dao_member_" + p) + "_weight")) == 1))
75- then throw("This user already exists")
76- else {
77- let q = k()
78- let r = ((q + ";") + p)
79- let s = b("dao_size")
80- let t = (s + 1)
81- WriteSet([DataEntry("dao_members", r), DataEntry("dao_size", t), DataEntry((("dao_member_" + p) + "_weight"), 1)])
82- }
107+func addTask (p,q) = if (!(l(o.caller)))
108+ then throw("grants working group access only")
109+ else WriteSet([DataEntry((("tasks_" + toBase58String(o.transactionId)) + "_title"), p), DataEntry((("tasks_" + toBase58String(o.transactionId)) + "_link"), q)])
83110
84111
85112
86113 @Callable(o)
87-func addGroupMember (p) = if (!(h(o.caller)))
88- then throw("access only to the DAO owner")
89- else if ((b((("working_group_member_" + p) + "_weight")) == 1))
90- then throw("This user already exists")
91- else {
92- let q = j()
93- let r = ((q + ";") + p)
94- let s = b("working_group_size")
95- let t = (s + 1)
96- WriteSet([DataEntry("working_group_members", r), DataEntry("working_group_size", t), DataEntry((("working_group_member_" + p) + "_weight"), 1)])
97- }
98-
99-
100-
101-@Callable(o)
102-func addTask (u,v) = if (!(l(o.caller)))
103- then throw("grants working group access only")
104- else WriteSet([DataEntry((("tasks_" + toBase58String(o.transactionId)) + "_title"), u), DataEntry((("tasks_" + toBase58String(o.transactionId)) + "_link"), v)])
105-
106-
107-
108-@Callable(o)
109-func addReward (w) = if (!(l(o.caller)))
114+func addTaskDetails (r,s) = if (!(l(o.caller)))
110115 then throw("grants working group access only")
111116 else {
112- let x = extract(o.payment).amount
113- WriteSet([DataEntry((("tasks_" + w) + "_reward"), x), DataEntry((("tasks_" + w) + "_status"), "proposed")])
117+ let t = extract(o.payment).amount
118+ WriteSet([DataEntry((("tasks_" + r) + "_reward"), t), DataEntry((("tasks_" + r) + "_details"), s), DataEntry((("tasks_" + r) + "_status"), "proposed")])
114119 }
115120
116121
117122
118123 @Callable(o)
119-func voteForTaskProposal (w,y) = if (!(n(o)))
124+func voteForTaskProposal (r,u) = if (!(n(o)))
120125 then throw("you can't vote")
121- else if ((getStringValue(this, (("tasks_" + w) + "_status")) != "proposed"))
126+ else if ((getStringValue(this, (("tasks_" + r) + "_status")) != "proposed"))
122127 then throw("voting is closed or not started")
123- else if (if ((y != "like"))
124- then (y != "dislike")
128+ else if (if ((u != -1))
129+ then (u != 1)
125130 else false)
126- then throw("you need to vote like or dislike")
131+ then throw("you need to vote 1 or -1")
127132 else {
128- func z (A) = if ((A == "like"))
129- then 1
130- else -1
131-
132- let B = ((("tasks_" + w) + "_voted_") + toString(o.caller))
133- let C = b(B)
134- if (!((C == 0)))
133+ let v = ((("tasks_" + r) + "_voted_") + toString(o.caller))
134+ let w = b(v)
135+ if (!((w == 0)))
135136 then throw("you have already voted")
136137 else {
137- let D = (("tasks_" + w) + "_voting_state")
138- let E = b(D)
139- let F = (("tasks_" + w) + "_voting_amount")
140- let G = (b(D) + 1)
141- let H = (E + z(y))
142- ScriptResult(WriteSet([DataEntry(D, H), DataEntry(B, z(y)), DataEntry(F, G)]), TransferSet([ScriptTransfer(o.caller, 500000, unit)]))
138+ let x = (("tasks_" + r) + "_voting_state")
139+ let y = b(x)
140+ let z = (("tasks_" + r) + "_voting_amount")
141+ let A = (b(x) + 1)
142+ let B = (y + u)
143+ ScriptResult(WriteSet([DataEntry(x, B), DataEntry(v, u), DataEntry(z, A)]), TransferSet([ScriptTransfer(o.caller, 500000, unit)]))
143144 }
144145 }
145146
146147
147148
148149 @Callable(o)
149-func finishTaskProposalVoting (w) = if ((a > ((b((("tasks_" + w) + "_voting_amount")) * 100) / b("dao_size"))))
150+func finishTaskProposalVoting (r) = if ((a > ((b((("tasks_" + r) + "_voting_amount")) * 100) / k())))
150151 then throw((("more than " + toString(a)) + "% members have to vote before finishing the voting"))
151152 else if (!(l(o.caller)))
152153 then throw("grants working group access only")
153154 else {
154- let D = (("tasks_" + w) + "_voting_state")
155- let E = b(D)
156- if ((E > 0))
155+ let x = (("tasks_" + r) + "_voting_state")
156+ let y = b(x)
157+ if ((y > 0))
157158 then {
158- let I = "ready_to_apply"
159- WriteSet([DataEntry((("tasks_" + w) + "_status"), I)])
159+ let C = "ready_to_apply"
160+ WriteSet([DataEntry((("tasks_" + r) + "_status"), C)])
160161 }
161162 else {
162- let I = "rejected"
163- WriteSet([DataEntry((("tasks_" + w) + "_status"), I)])
163+ let C = "rejected"
164+ WriteSet([DataEntry((("tasks_" + r) + "_status"), C)])
164165 }
165166 }
166167
167168
168169
169170 @Callable(o)
170-func applyForTask (w,J,v) = {
171- let K = g((("tasks_" + w) + "_status"))
172- if ((K != "ready_to_apply"))
171+func applyForTask (r,D,q) = {
172+ let E = g((("tasks_" + r) + "_status"))
173+ if ((E != "ready_to_apply"))
173174 then throw("This grant has not yet been approved")
174175 else {
175- let L = drop(toString(o.caller), 20)
176- if ((g((((("tasks_" + w) + "_app_") + L) + "_name")) == J))
177- then throw("commnad with name is exist")
176+ let F = (("tasks_" + r) + "_applicants")
177+ let G = g(F)
178+ let H = drop(toString(o.caller), 10)
179+ let I = ((G + ";") + toString(o.caller))
180+ WriteSet([DataEntry((((("tasks_" + r) + "_app_") + H) + "_name"), D), DataEntry((((("tasks_" + r) + "_app_") + H) + "_link"), q), DataEntry((((("tasks_" + r) + "_app_") + H) + "_leader"), toString(o.caller)), DataEntry((((("tasks_" + r) + "_app_") + H) + "_id"), H), DataEntry(F, I)])
181+ }
182+ }
183+
184+
185+
186+@Callable(o)
187+func voteForApplicant (r,J,u) = if (!(n(o)))
188+ then throw("you can't vote")
189+ else {
190+ let K = (drop(toString(o.caller), 10) + drop(J, 10))
191+ let v = ((("tasks_" + r) + "_vote_") + K)
192+ let L = b(v)
193+ if ((L != 0))
194+ then throw("you have already voted on this team")
195+ else {
196+ let M = (((("tasks_" + r) + "_app_") + J) + "_votes")
197+ let N = (((("tasks_" + r) + "_app_") + J) + "_score")
198+ let O = (1 + b(M))
199+ let P = (u + b(N))
200+ WriteSet([DataEntry(v, u), DataEntry(N, P)])
201+ }
202+ }
203+
204+
205+
206+@Callable(o)
207+func finishApplicantsVoting (r) = {
208+ func Q (R,S) = {
209+ let F = (("tasks_" + r) + "_applicants")
210+ let T = split(getStringValue(this, F), ";")
211+ let J = T[R]
212+ let M = (((("tasks_" + r) + "_app_") + J) + "_votes")
213+ let O = b(M)
214+ if ((O > 0))
215+ then 1
216+ else throw(("not enough votes to make decision on " + J))
217+ }
218+
219+ func U (R,S) = {
220+ let F = (("tasks_" + r) + "_applicants")
221+ let T = split(getStringValue(this, F), ";")
222+ let J = T[R]
223+ let M = (((("tasks_" + r) + "_app_") + J) + "_votes")
224+ let O = b(M)
225+ let V = T[S]
226+ let W = (((("tasks_" + r) + "_app_") + V) + "_votes")
227+ let X = b(W)
228+ if ((O > X))
229+ then R
230+ else S
231+ }
232+
233+ if (!(l(o.caller)))
234+ then throw("grants working group access only")
235+ else {
236+ let Y = g((("tasks_" + r) + "_applicants"))
237+ let T = split(Y, ";")
238+ if ((size(T) == 0))
239+ then throw("No one has yet responded to the grant")
178240 else {
179- let M = (("tasks_" + w) + "_applicants")
180- let N = g(M)
181- let O = ((N + ";") + toString(o.caller))
182- WriteSet([DataEntry((((("tasks_" + w) + "_app_") + L) + "_name"), J), DataEntry((((("tasks_" + w) + "_app_") + L) + "_link"), v), DataEntry((((("tasks_" + w) + "_app_") + L) + "_leader"), toString(o.caller)), DataEntry((((("tasks_" + w) + "_app_") + L) + "_id"), L), DataEntry(M, O)])
241+ let Z = {
242+ let aa = [0, 1]
243+ let ab = size(aa)
244+ let ac = 0
245+ if ((ab == 0))
246+ then ac
247+ else {
248+ let ad = U(ac, aa[0])
249+ if ((ab == 1))
250+ then ad
251+ else {
252+ let ae = U(ad, aa[1])
253+ if ((ab == 2))
254+ then ae
255+ else {
256+ let af = U(ae, aa[2])
257+ throw("List size exceed 2")
258+ }
259+ }
260+ }
261+ }
262+ let J = T[Z]
263+ WriteSet([DataEntry((("tasks_" + r) + "_status"), "team_chosen"), DataEntry((("tasks_" + r) + "_performer"), J), DataEntry((((("tasks_" + r) + "_app_") + J) + "_process"), "can_begin")])
183264 }
184265 }
185266 }
187268
188269
189270 @Callable(o)
190-func voteForApplicant (w,P,y) = if (!(n(o)))
191- then throw("you can't vote")
192- else if ((g((("tasks_" + w) + "_status")) != "ready_to_apply"))
193- then throw("voting is closed or not started")
194- else if ((g((((("tasks_" + w) + "_app_") + P) + "_id")) != P))
195- then throw("team is not found use id team on application")
196- else if (if ((y != "like"))
197- then (y != "dislike")
198- else false)
199- then throw("you need to vote like or dislike")
200- else {
201- func z (A) = if ((A == "like"))
202- then 1
203- else -1
204-
205- let M = (((("tasks_" + w) + "_app_") + P) + "_voted")
206- let O = ((g(M) + ";") + toString(o.caller))
207- let Q = (drop(toString(o.caller), 20) + P)
208- let B = ((("tasks_" + w) + "_vh_") + Q)
209- if ((g(B) == toString(o.caller)))
210- then throw("you have already voted on this team")
211- else {
212- let R = (((("tasks_" + w) + "_app_") + P) + "_votes")
213- let S = (((("tasks_" + w) + "_app_") + P) + "_score")
214- let T = (1 + b(R))
215- let U = (z(y) + b(S))
216- WriteSet([DataEntry(M, O), DataEntry(B, toString(o.caller)), DataEntry(R, T), DataEntry(S, U)])
217- }
218- }
219-
220-
221-
222-@Callable(o)
223-func finishApplicantsVoting (w) = {
224- func V (W,X) = {
225- let M = (("tasks_" + w) + "_applicants")
226- let Y = split(getStringValue(this, M), ";")
227- let P = Y[W]
228- let R = (((("tasks_" + w) + "_app_") + P) + "_votes")
229- let T = b(R)
230- if ((T > 0))
231- then 1
232- else throw(("not enough votes to make decision on " + P))
233- }
234-
235- func Z (W,X) = {
236- let M = (("tasks_" + w) + "_applicants")
237- let Y = split(getStringValue(this, M), ";")
238- let P = Y[W]
239- let R = (((("tasks_" + w) + "_app_") + P) + "_votes")
240- let T = b(R)
241- let aa = Y[X]
242- let ab = (((("tasks_" + w) + "_app_") + aa) + "_votes")
243- let ac = b(ab)
244- if ((T > ac))
245- then W
246- else X
247- }
248-
249- if (!(l(o.caller)))
250- then throw("grants working group access only")
251- else {
252- let ad = g((("tasks_" + w) + "_applicants"))
253- let Y = split(ad, ";")
254- if ((size(Y) == 0))
255- then throw("No one has yet responded to the grant")
256- else {
257- let ae = {
258- let af = [0, 1]
259- let ag = size(af)
260- let ah = 0
261- if ((ag == 0))
262- then ah
263- else {
264- let ai = Z(ah, af[0])
265- if ((ag == 1))
266- then ai
267- else {
268- let aj = Z(ai, af[1])
269- if ((ag == 2))
270- then aj
271- else {
272- let ak = Z(aj, af[2])
273- throw("List size exceed 2")
274- }
275- }
276- }
277- }
278- let P = drop(Y[ae], 20)
279- WriteSet([DataEntry((("tasks_" + w) + "_status"), "team_chosen"), DataEntry((("tasks_" + w) + "_performer"), P), DataEntry((((("tasks_" + w) + "_app_") + P) + "_process"), "can_begin")])
280- }
281- }
271+func startWork (r) = {
272+ let J = getStringValue(this, (("tasks_" + r) + "_performer"))
273+ if ((toString(o.caller) != getStringValue(this, (((("tasks_" + r) + "_app_") + J) + "_leader"))))
274+ then throw("team leader only")
275+ else WriteSet([DataEntry((("tasks_" + r) + "_status"), "work_started"), DataEntry((((("tasks_" + r) + "_app_") + J) + "_process"), "work_started")])
282276 }
283277
284278
285279
286280 @Callable(o)
287-func startWork (w) = {
288- let P = g((("tasks_" + w) + "_performer"))
289- if ((g((("tasks_" + w) + "_status")) != "team_chosen"))
290- then throw("team is not choosen")
291- else if ((toString(o.caller) != g((((("tasks_" + w) + "_app_") + P) + "_leader"))))
292- then throw("team leader only")
293- else WriteSet([DataEntry((("tasks_" + w) + "_status"), "work_started"), DataEntry((((("tasks_" + w) + "_app_") + P) + "_process"), "work_started")])
294- }
281+func rejectTask (r) = if (!(l(o.caller)))
282+ then throw("grants working group access only")
283+ else {
284+ let J = getStringValue(this, (("tasks_" + r) + "_performer"))
285+ WriteSet([DataEntry((("tasks_" + r) + "_status"), "rejected"), DataEntry((((("tasks_" + r) + "_app_") + J) + "_process"), "rejected")])
286+ }
295287
296288
297289
298290 @Callable(o)
299-func rejectTask (w) = if (!(l(o.caller)))
300- then throw("grants working group access only")
301- else WriteSet([DataEntry((("tasks_" + w) + "_status"), "rejected")])
302-
303-
304-
305-@Callable(o)
306-func acceptWorkResult (w,al) = if (!(l(o.caller)))
291+func acceptWorkResult (r,ag) = if (!(l(o.caller)))
307292 then throw("grants working group access only")
308293 else {
309- let am = b((("tasks_" + w) + "_reward"))
310- let P = getStringValue(this, (("tasks_" + w) + "_performer"))
311- let an = getStringValue(this, (((("tasks_" + w) + "_app_") + P) + "_leader"))
312- ScriptResult(WriteSet([DataEntry((("tasks_" + w) + "_status"), "work_finished"), DataEntry((((("tasks_" + w) + "_app_") + P) + "_process"), "work_finished"), DataEntry((((("tasks_" + w) + "_app_") + P) + "_report"), al)]), TransferSet([ScriptTransfer(addressFromStringValue(an), am, unit)]))
294+ let ah = b((("tasks_" + r) + "_reward"))
295+ let J = getStringValue(this, (("tasks_" + r) + "_performer"))
296+ let ai = getStringValue(this, (((("tasks_" + r) + "_app_") + J) + "_leader"))
297+ ScriptResult(WriteSet([DataEntry((("tasks_" + r) + "_status"), "work_finished"), DataEntry((((("tasks_" + r) + "_app_") + J) + "_process"), "work_finished"), DataEntry((((("tasks_" + r) + "_app_") + J) + "_report"), ag)]), TransferSet([ScriptTransfer(addressFromStringValue(ai), ah, unit)]))
313298 }
314299
315300
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 1
55
66 func b (c) = {
77 let d = {
88 let e = getInteger(this, c)
99 if ($isInstanceOf(e, "Int"))
1010 then {
1111 let f = e
1212 f
1313 }
1414 else 0
1515 }
1616 d
1717 }
1818
1919
2020 func g (c) = {
2121 let d = {
2222 let e = getString(this, c)
2323 if ($isInstanceOf(e, "String"))
2424 then {
2525 let f = e
2626 f
2727 }
2828 else ""
2929 }
3030 d
3131 }
3232
3333
34-func h (i) = (i == this)
34+let h = addressFromStringValue("3NCsqf4pFGtECs3vM4j1nKqL6VA3HdiNGeZ")
35+
36+func i () = {
37+ let d = {
38+ let e = getString(h, "working_group_members")
39+ if ($isInstanceOf(e, "String"))
40+ then {
41+ let f = e
42+ f
43+ }
44+ else ""
45+ }
46+ d
47+ }
3548
3649
3750 func j () = {
3851 let d = {
39- let e = getString(this, "working_group_members")
52+ let e = getString(h, "dao_members")
4053 if ($isInstanceOf(e, "String"))
4154 then {
4255 let f = e
4356 f
4457 }
4558 else ""
4659 }
4760 d
4861 }
4962
5063
5164 func k () = {
5265 let d = {
53- let e = getString(this, "dao_members")
54- if ($isInstanceOf(e, "String"))
66+ let e = getInteger(h, "dao_size")
67+ if ($isInstanceOf(e, "Int"))
5568 then {
5669 let f = e
5770 f
5871 }
59- else ""
72+ else 0
6073 }
6174 d
6275 }
6376
6477
65-func l (m) = (b((("working_group_member_" + toString(m)) + "_weight")) > 0)
78+func l (m) = {
79+ let d = {
80+ let e = getInteger(h, (("working_group_member_" + toString(m)) + "_weight"))
81+ if ($isInstanceOf(e, "Int"))
82+ then {
83+ let f = e
84+ f
85+ }
86+ else 0
87+ }
88+ (d > 0)
89+ }
6690
6791
68-func n (o) = (b((("dao_member_" + toString(o.caller)) + "_weight")) > 0)
92+func n (o) = {
93+ let d = {
94+ let e = getInteger(h, (("dao_member_" + toString(o.caller)) + "_weight"))
95+ if ($isInstanceOf(e, "Int"))
96+ then {
97+ let f = e
98+ f
99+ }
100+ else 0
101+ }
102+ (d > 0)
103+ }
69104
70105
71106 @Callable(o)
72-func addDAOMember (p) = if (!(h(o.caller)))
73- then throw("access only to the DAO owner")
74- else if ((b((("dao_member_" + p) + "_weight")) == 1))
75- then throw("This user already exists")
76- else {
77- let q = k()
78- let r = ((q + ";") + p)
79- let s = b("dao_size")
80- let t = (s + 1)
81- WriteSet([DataEntry("dao_members", r), DataEntry("dao_size", t), DataEntry((("dao_member_" + p) + "_weight"), 1)])
82- }
107+func addTask (p,q) = if (!(l(o.caller)))
108+ then throw("grants working group access only")
109+ else WriteSet([DataEntry((("tasks_" + toBase58String(o.transactionId)) + "_title"), p), DataEntry((("tasks_" + toBase58String(o.transactionId)) + "_link"), q)])
83110
84111
85112
86113 @Callable(o)
87-func addGroupMember (p) = if (!(h(o.caller)))
88- then throw("access only to the DAO owner")
89- else if ((b((("working_group_member_" + p) + "_weight")) == 1))
90- then throw("This user already exists")
91- else {
92- let q = j()
93- let r = ((q + ";") + p)
94- let s = b("working_group_size")
95- let t = (s + 1)
96- WriteSet([DataEntry("working_group_members", r), DataEntry("working_group_size", t), DataEntry((("working_group_member_" + p) + "_weight"), 1)])
97- }
98-
99-
100-
101-@Callable(o)
102-func addTask (u,v) = if (!(l(o.caller)))
103- then throw("grants working group access only")
104- else WriteSet([DataEntry((("tasks_" + toBase58String(o.transactionId)) + "_title"), u), DataEntry((("tasks_" + toBase58String(o.transactionId)) + "_link"), v)])
105-
106-
107-
108-@Callable(o)
109-func addReward (w) = if (!(l(o.caller)))
114+func addTaskDetails (r,s) = if (!(l(o.caller)))
110115 then throw("grants working group access only")
111116 else {
112- let x = extract(o.payment).amount
113- WriteSet([DataEntry((("tasks_" + w) + "_reward"), x), DataEntry((("tasks_" + w) + "_status"), "proposed")])
117+ let t = extract(o.payment).amount
118+ WriteSet([DataEntry((("tasks_" + r) + "_reward"), t), DataEntry((("tasks_" + r) + "_details"), s), DataEntry((("tasks_" + r) + "_status"), "proposed")])
114119 }
115120
116121
117122
118123 @Callable(o)
119-func voteForTaskProposal (w,y) = if (!(n(o)))
124+func voteForTaskProposal (r,u) = if (!(n(o)))
120125 then throw("you can't vote")
121- else if ((getStringValue(this, (("tasks_" + w) + "_status")) != "proposed"))
126+ else if ((getStringValue(this, (("tasks_" + r) + "_status")) != "proposed"))
122127 then throw("voting is closed or not started")
123- else if (if ((y != "like"))
124- then (y != "dislike")
128+ else if (if ((u != -1))
129+ then (u != 1)
125130 else false)
126- then throw("you need to vote like or dislike")
131+ then throw("you need to vote 1 or -1")
127132 else {
128- func z (A) = if ((A == "like"))
129- then 1
130- else -1
131-
132- let B = ((("tasks_" + w) + "_voted_") + toString(o.caller))
133- let C = b(B)
134- if (!((C == 0)))
133+ let v = ((("tasks_" + r) + "_voted_") + toString(o.caller))
134+ let w = b(v)
135+ if (!((w == 0)))
135136 then throw("you have already voted")
136137 else {
137- let D = (("tasks_" + w) + "_voting_state")
138- let E = b(D)
139- let F = (("tasks_" + w) + "_voting_amount")
140- let G = (b(D) + 1)
141- let H = (E + z(y))
142- ScriptResult(WriteSet([DataEntry(D, H), DataEntry(B, z(y)), DataEntry(F, G)]), TransferSet([ScriptTransfer(o.caller, 500000, unit)]))
138+ let x = (("tasks_" + r) + "_voting_state")
139+ let y = b(x)
140+ let z = (("tasks_" + r) + "_voting_amount")
141+ let A = (b(x) + 1)
142+ let B = (y + u)
143+ ScriptResult(WriteSet([DataEntry(x, B), DataEntry(v, u), DataEntry(z, A)]), TransferSet([ScriptTransfer(o.caller, 500000, unit)]))
143144 }
144145 }
145146
146147
147148
148149 @Callable(o)
149-func finishTaskProposalVoting (w) = if ((a > ((b((("tasks_" + w) + "_voting_amount")) * 100) / b("dao_size"))))
150+func finishTaskProposalVoting (r) = if ((a > ((b((("tasks_" + r) + "_voting_amount")) * 100) / k())))
150151 then throw((("more than " + toString(a)) + "% members have to vote before finishing the voting"))
151152 else if (!(l(o.caller)))
152153 then throw("grants working group access only")
153154 else {
154- let D = (("tasks_" + w) + "_voting_state")
155- let E = b(D)
156- if ((E > 0))
155+ let x = (("tasks_" + r) + "_voting_state")
156+ let y = b(x)
157+ if ((y > 0))
157158 then {
158- let I = "ready_to_apply"
159- WriteSet([DataEntry((("tasks_" + w) + "_status"), I)])
159+ let C = "ready_to_apply"
160+ WriteSet([DataEntry((("tasks_" + r) + "_status"), C)])
160161 }
161162 else {
162- let I = "rejected"
163- WriteSet([DataEntry((("tasks_" + w) + "_status"), I)])
163+ let C = "rejected"
164+ WriteSet([DataEntry((("tasks_" + r) + "_status"), C)])
164165 }
165166 }
166167
167168
168169
169170 @Callable(o)
170-func applyForTask (w,J,v) = {
171- let K = g((("tasks_" + w) + "_status"))
172- if ((K != "ready_to_apply"))
171+func applyForTask (r,D,q) = {
172+ let E = g((("tasks_" + r) + "_status"))
173+ if ((E != "ready_to_apply"))
173174 then throw("This grant has not yet been approved")
174175 else {
175- let L = drop(toString(o.caller), 20)
176- if ((g((((("tasks_" + w) + "_app_") + L) + "_name")) == J))
177- then throw("commnad with name is exist")
176+ let F = (("tasks_" + r) + "_applicants")
177+ let G = g(F)
178+ let H = drop(toString(o.caller), 10)
179+ let I = ((G + ";") + toString(o.caller))
180+ WriteSet([DataEntry((((("tasks_" + r) + "_app_") + H) + "_name"), D), DataEntry((((("tasks_" + r) + "_app_") + H) + "_link"), q), DataEntry((((("tasks_" + r) + "_app_") + H) + "_leader"), toString(o.caller)), DataEntry((((("tasks_" + r) + "_app_") + H) + "_id"), H), DataEntry(F, I)])
181+ }
182+ }
183+
184+
185+
186+@Callable(o)
187+func voteForApplicant (r,J,u) = if (!(n(o)))
188+ then throw("you can't vote")
189+ else {
190+ let K = (drop(toString(o.caller), 10) + drop(J, 10))
191+ let v = ((("tasks_" + r) + "_vote_") + K)
192+ let L = b(v)
193+ if ((L != 0))
194+ then throw("you have already voted on this team")
195+ else {
196+ let M = (((("tasks_" + r) + "_app_") + J) + "_votes")
197+ let N = (((("tasks_" + r) + "_app_") + J) + "_score")
198+ let O = (1 + b(M))
199+ let P = (u + b(N))
200+ WriteSet([DataEntry(v, u), DataEntry(N, P)])
201+ }
202+ }
203+
204+
205+
206+@Callable(o)
207+func finishApplicantsVoting (r) = {
208+ func Q (R,S) = {
209+ let F = (("tasks_" + r) + "_applicants")
210+ let T = split(getStringValue(this, F), ";")
211+ let J = T[R]
212+ let M = (((("tasks_" + r) + "_app_") + J) + "_votes")
213+ let O = b(M)
214+ if ((O > 0))
215+ then 1
216+ else throw(("not enough votes to make decision on " + J))
217+ }
218+
219+ func U (R,S) = {
220+ let F = (("tasks_" + r) + "_applicants")
221+ let T = split(getStringValue(this, F), ";")
222+ let J = T[R]
223+ let M = (((("tasks_" + r) + "_app_") + J) + "_votes")
224+ let O = b(M)
225+ let V = T[S]
226+ let W = (((("tasks_" + r) + "_app_") + V) + "_votes")
227+ let X = b(W)
228+ if ((O > X))
229+ then R
230+ else S
231+ }
232+
233+ if (!(l(o.caller)))
234+ then throw("grants working group access only")
235+ else {
236+ let Y = g((("tasks_" + r) + "_applicants"))
237+ let T = split(Y, ";")
238+ if ((size(T) == 0))
239+ then throw("No one has yet responded to the grant")
178240 else {
179- let M = (("tasks_" + w) + "_applicants")
180- let N = g(M)
181- let O = ((N + ";") + toString(o.caller))
182- WriteSet([DataEntry((((("tasks_" + w) + "_app_") + L) + "_name"), J), DataEntry((((("tasks_" + w) + "_app_") + L) + "_link"), v), DataEntry((((("tasks_" + w) + "_app_") + L) + "_leader"), toString(o.caller)), DataEntry((((("tasks_" + w) + "_app_") + L) + "_id"), L), DataEntry(M, O)])
241+ let Z = {
242+ let aa = [0, 1]
243+ let ab = size(aa)
244+ let ac = 0
245+ if ((ab == 0))
246+ then ac
247+ else {
248+ let ad = U(ac, aa[0])
249+ if ((ab == 1))
250+ then ad
251+ else {
252+ let ae = U(ad, aa[1])
253+ if ((ab == 2))
254+ then ae
255+ else {
256+ let af = U(ae, aa[2])
257+ throw("List size exceed 2")
258+ }
259+ }
260+ }
261+ }
262+ let J = T[Z]
263+ WriteSet([DataEntry((("tasks_" + r) + "_status"), "team_chosen"), DataEntry((("tasks_" + r) + "_performer"), J), DataEntry((((("tasks_" + r) + "_app_") + J) + "_process"), "can_begin")])
183264 }
184265 }
185266 }
186267
187268
188269
189270 @Callable(o)
190-func voteForApplicant (w,P,y) = if (!(n(o)))
191- then throw("you can't vote")
192- else if ((g((("tasks_" + w) + "_status")) != "ready_to_apply"))
193- then throw("voting is closed or not started")
194- else if ((g((((("tasks_" + w) + "_app_") + P) + "_id")) != P))
195- then throw("team is not found use id team on application")
196- else if (if ((y != "like"))
197- then (y != "dislike")
198- else false)
199- then throw("you need to vote like or dislike")
200- else {
201- func z (A) = if ((A == "like"))
202- then 1
203- else -1
204-
205- let M = (((("tasks_" + w) + "_app_") + P) + "_voted")
206- let O = ((g(M) + ";") + toString(o.caller))
207- let Q = (drop(toString(o.caller), 20) + P)
208- let B = ((("tasks_" + w) + "_vh_") + Q)
209- if ((g(B) == toString(o.caller)))
210- then throw("you have already voted on this team")
211- else {
212- let R = (((("tasks_" + w) + "_app_") + P) + "_votes")
213- let S = (((("tasks_" + w) + "_app_") + P) + "_score")
214- let T = (1 + b(R))
215- let U = (z(y) + b(S))
216- WriteSet([DataEntry(M, O), DataEntry(B, toString(o.caller)), DataEntry(R, T), DataEntry(S, U)])
217- }
218- }
219-
220-
221-
222-@Callable(o)
223-func finishApplicantsVoting (w) = {
224- func V (W,X) = {
225- let M = (("tasks_" + w) + "_applicants")
226- let Y = split(getStringValue(this, M), ";")
227- let P = Y[W]
228- let R = (((("tasks_" + w) + "_app_") + P) + "_votes")
229- let T = b(R)
230- if ((T > 0))
231- then 1
232- else throw(("not enough votes to make decision on " + P))
233- }
234-
235- func Z (W,X) = {
236- let M = (("tasks_" + w) + "_applicants")
237- let Y = split(getStringValue(this, M), ";")
238- let P = Y[W]
239- let R = (((("tasks_" + w) + "_app_") + P) + "_votes")
240- let T = b(R)
241- let aa = Y[X]
242- let ab = (((("tasks_" + w) + "_app_") + aa) + "_votes")
243- let ac = b(ab)
244- if ((T > ac))
245- then W
246- else X
247- }
248-
249- if (!(l(o.caller)))
250- then throw("grants working group access only")
251- else {
252- let ad = g((("tasks_" + w) + "_applicants"))
253- let Y = split(ad, ";")
254- if ((size(Y) == 0))
255- then throw("No one has yet responded to the grant")
256- else {
257- let ae = {
258- let af = [0, 1]
259- let ag = size(af)
260- let ah = 0
261- if ((ag == 0))
262- then ah
263- else {
264- let ai = Z(ah, af[0])
265- if ((ag == 1))
266- then ai
267- else {
268- let aj = Z(ai, af[1])
269- if ((ag == 2))
270- then aj
271- else {
272- let ak = Z(aj, af[2])
273- throw("List size exceed 2")
274- }
275- }
276- }
277- }
278- let P = drop(Y[ae], 20)
279- WriteSet([DataEntry((("tasks_" + w) + "_status"), "team_chosen"), DataEntry((("tasks_" + w) + "_performer"), P), DataEntry((((("tasks_" + w) + "_app_") + P) + "_process"), "can_begin")])
280- }
281- }
271+func startWork (r) = {
272+ let J = getStringValue(this, (("tasks_" + r) + "_performer"))
273+ if ((toString(o.caller) != getStringValue(this, (((("tasks_" + r) + "_app_") + J) + "_leader"))))
274+ then throw("team leader only")
275+ else WriteSet([DataEntry((("tasks_" + r) + "_status"), "work_started"), DataEntry((((("tasks_" + r) + "_app_") + J) + "_process"), "work_started")])
282276 }
283277
284278
285279
286280 @Callable(o)
287-func startWork (w) = {
288- let P = g((("tasks_" + w) + "_performer"))
289- if ((g((("tasks_" + w) + "_status")) != "team_chosen"))
290- then throw("team is not choosen")
291- else if ((toString(o.caller) != g((((("tasks_" + w) + "_app_") + P) + "_leader"))))
292- then throw("team leader only")
293- else WriteSet([DataEntry((("tasks_" + w) + "_status"), "work_started"), DataEntry((((("tasks_" + w) + "_app_") + P) + "_process"), "work_started")])
294- }
281+func rejectTask (r) = if (!(l(o.caller)))
282+ then throw("grants working group access only")
283+ else {
284+ let J = getStringValue(this, (("tasks_" + r) + "_performer"))
285+ WriteSet([DataEntry((("tasks_" + r) + "_status"), "rejected"), DataEntry((((("tasks_" + r) + "_app_") + J) + "_process"), "rejected")])
286+ }
295287
296288
297289
298290 @Callable(o)
299-func rejectTask (w) = if (!(l(o.caller)))
300- then throw("grants working group access only")
301- else WriteSet([DataEntry((("tasks_" + w) + "_status"), "rejected")])
302-
303-
304-
305-@Callable(o)
306-func acceptWorkResult (w,al) = if (!(l(o.caller)))
291+func acceptWorkResult (r,ag) = if (!(l(o.caller)))
307292 then throw("grants working group access only")
308293 else {
309- let am = b((("tasks_" + w) + "_reward"))
310- let P = getStringValue(this, (("tasks_" + w) + "_performer"))
311- let an = getStringValue(this, (((("tasks_" + w) + "_app_") + P) + "_leader"))
312- ScriptResult(WriteSet([DataEntry((("tasks_" + w) + "_status"), "work_finished"), DataEntry((((("tasks_" + w) + "_app_") + P) + "_process"), "work_finished"), DataEntry((((("tasks_" + w) + "_app_") + P) + "_report"), al)]), TransferSet([ScriptTransfer(addressFromStringValue(an), am, unit)]))
294+ let ah = b((("tasks_" + r) + "_reward"))
295+ let J = getStringValue(this, (("tasks_" + r) + "_performer"))
296+ let ai = getStringValue(this, (((("tasks_" + r) + "_app_") + J) + "_leader"))
297+ ScriptResult(WriteSet([DataEntry((("tasks_" + r) + "_status"), "work_finished"), DataEntry((((("tasks_" + r) + "_app_") + J) + "_process"), "work_finished"), DataEntry((((("tasks_" + r) + "_app_") + J) + "_report"), ag)]), TransferSet([ScriptTransfer(addressFromStringValue(ai), ah, unit)]))
313298 }
314299
315300

github/deemru/w8io/873ac7e 
57.92 ms