tx · ExKu3epok3HftYVTofmZcZtJEGa1yRXmaXouePmyiEmq

3N71MDc3kPD6cnbdWp6iEuDY8ghgZ9DiVan:  -0.10000000 Waves

2020.12.27 06:13 [1326554] smart account 3N71MDc3kPD6cnbdWp6iEuDY8ghgZ9DiVan > SELF 0.00000000 Waves

{ "type": 13, "id": "ExKu3epok3HftYVTofmZcZtJEGa1yRXmaXouePmyiEmq", "fee": 10000000, "feeAssetId": null, "timestamp": 1609038849759, "version": 2, "chainId": 84, "sender": "3N71MDc3kPD6cnbdWp6iEuDY8ghgZ9DiVan", "senderPublicKey": "5tBY17DiYVDP2QCBiAPKpjhmn1hCu1rS4XbwiY9zchFf", "proofs": [ "4r9rKCmsZJjoJcw5ptTQrqMS7tkzhowME6WCdLJERJ8xjM3wRjAd5S4UB23oYVUpRZnNePdKyxyXbabqQTwCtnkJ" ], "script": "base64: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AAd2b3RlS2V5BQAAAAx2b3RlVmFsdWVJbnQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAADnZvdGVzQW1vdW50S2V5BQAAABB2b3Rlc0Ftb3VudFN0YXRlBQAAAANuaWwJAAACAAAAAQIAAAAVY2hlY2tzIGFyZSBub3QgcGFzc2VkAAAAAWkBAAAAGGZpbmlzaFRhc2tQcm9wb3NhbFZvdGluZwAAAAEAAAAGdGFza0lkAwkBAAAAImZpbmlzaFRhc2tQcm9wb3NhbFZvdGluZ0NvbmRpdGlvbnMAAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABnRhc2tJZAQAAAAJdm90aW5nS2V5CQABLAAAAAIJAAEsAAAAAgIAAAAGdGFza3NfBQAAAAZ0YXNrSWQCAAAADV92b3Rpbmdfc3RhdGUJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAZ0YXNrc18FAAAABnRhc2tJZAIAAAAHX3N0YXR1cwMJAABmAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABBQAAAAl2b3RpbmdLZXkAAAAAAAAAAAACAAAADnJlYWR5X3RvX2FwcGx5AgAAAAhyZWplY3RlZAUAAAADbmlsCQAAAgAAAAECAAAAFWNoZWNrcyBhcmUgbm90IHBhc3NlZAAAAAFpAQAAAAxhcHBseUZvclRhc2sAAAADAAAABnRhc2tJZAAAAAh0ZWFtTmFtZQAAAARsaW5rBAAAAA50ZWFtSWRlbnRpZmllcgkAATAAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgAAAAAAAAAACgMJAQAAABZhcHBseUZvclRhc2tDb25kaXRpb25zAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAZ0YXNrSWQFAAAADnRlYW1JZGVudGlmaWVyBAAAAAdsaXN0S2V5CQABLAAAAAIJAAEsAAAAAgIAAAAGdGFza3NfBQAAAAZ0YXNrSWQCAAAAC19hcHBsaWNhbnRzBAAAABVjdXJyZW50QXBwbGljYW50c0xpc3QJAQAAAAx0cnlHZXRTdHJpbmcAAAABBQAAAAdsaXN0S2V5BAAAABFuZXdBcHBsaWNhbnRzTGlzdAkAASwA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dGFza0lkAgAAAAVfYXBwXwUAAAAPdGVhbTJJZGVudGlmaWVyAgAAAAZfdm90ZXMEAAAAEHRlYW0yVm90ZXNBbW91bnQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQUAAAATdGVhbTJWb3Rlc0Ftb3VudEtleQMJAABmAAAAAgUAAAAPdGVhbVZvdGVzQW1vdW50BQAAABB0ZWFtMlZvdGVzQW1vdW50BQAAAANhaWQFAAAABGFpZDIEAAAACGxpc3RLZXlzCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkAASwAAAACCQABLAAAAAICAAAABnRhc2tzXwUAAAAGdGFza0lkAgAAAAtfYXBwbGljYW50cwQAAAAOYXBwbGljYW50c0xpc3QJAAS1AAAAAgUAAAAIbGlzdEtleXMCAAAAATsDCQEAAAAgZmluaXNoQXBwbGljYW50c1ZvdGluZ0NvbmRpdGlvbnMAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAABnRhc2tJZAUAAAAOYXBwbGljYW50c0xpc3QEAAAADGNob3NlblRlYW1JZAQAAAAPJGxpc3QxMjQzNzEyNDY4CQAETAAAAAIAAAAAAAAAAAAJAARMAAAAAgAAAAAAAAAAAQUAAAADbmlsBAAAAA8kc2l6ZTEyNDM3MTI0NjgJAAGQAAAAAQUAAAAPJGxpc3QxMjQzNzEyNDY4BAAAAA8kYWNjMDEyNDM3MTI0NjgAAAAAAAAAAAADCQAAAAAAAAIFAAAADyRzaXplMTI0MzcxMjQ2OAAAAAAAAAAAAAUAAAAPJGFjYzAxMjQzNzEyNDY4BAAAAA8kYWNjMTEyNDM3MTI0NjgJAQAAAAxoYXNNb3JlVm90ZXMAAAACBQAAAA8kYWNjMDEyNDM3MTI0NjgJAAGRAAAAAgUAAAAPJGxpc3QxMjQzNzEyNDY4AAAAAAAAAAAAAwkAAAAAAAACBQAAAA8kc2l6ZTEyNDM3MTI0NjgAAAAAAAAAAAEFAAAADyRhY2MxMTI0MzcxMjQ2OAQAAAAPJGFjYzIxMjQzNzEyNDY4CQEAAAAMaGFzTW9yZVZvdGVzAAAAAgUAAAAPJGFjYzExMjQzNzEyNDY4CQABkQAAAAIFAAAADyRsaXN0MTI0MzcxMjQ2OAAAAAAAAAAAAQMJAAAAAAAAAgUAAAAPJHNpemUxMjQz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", "height": 1326554, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 78NbqZdbrxJJ3mEwD3VkjP2SdzaRFumByabG2VeKndFo Next: 9teDRiCPuSouZjmoh5jtoPM1D7jUshnzWVZ4ZgX5WHx2 Diff:
OldNewDifferences
9292 }
9393
9494
95-func p (q) = {
95+func p (j) = {
9696 let e = {
97- let f = getInteger(a, (("dao_member_" + toString(q.caller)) + "_weight"))
97+ let f = getInteger(a, (("dao_member_" + toString(j)) + "_weight"))
9898 if ($isInstanceOf(f, "Int"))
9999 then {
100100 let g = f
106106 }
107107
108108
109-func r (s) = if ((s == "like"))
109+func q (r) = if ((r == "like"))
110110 then 1
111- else if ((s == "dislike"))
111+ else if ((r == "dislike"))
112112 then -1
113113 else throw("you need to vote with 'like' or 'dislike' value")
114114
115115
116-@Callable(q)
117-func addTask (t,u) = if (!(n(q.caller)))
116+func s (j) = if (!(n(j)))
118117 then throw("grants working group access only")
119- else WriteSet([DataEntry((("tasks_" + toBase58String(q.transactionId)) + "_title"), t), DataEntry((("tasks_" + toBase58String(q.transactionId)) + "_link"), u)])
118+ else true
119+
120+
121+func t (j,u) = if (!(n(j)))
122+ then throw("grants working group access only")
123+ else if ((h((("tasks_" + u) + "_status")) != ""))
124+ then throw("grant isn`t new")
125+ else true
126+
127+
128+func v (j,u) = if (!(p(j)))
129+ then throw("you can't vote")
130+ else if ((h((("tasks_" + u) + "_status")) != "proposed"))
131+ then throw("voting is closed or not started")
132+ else if ((c(((("tasks_" + u) + "_voted_") + toString(j))) != 0))
133+ then throw("you have already voted")
134+ else true
135+
136+
137+func w (j,u) = if (!(n(j)))
138+ then throw("grants working group access only")
139+ else if ((h((("tasks_" + u) + "_status")) != "proposed"))
140+ then throw("voting is not active")
141+ else if ((b > ((c((("tasks_" + u) + "_voting_amount")) * 100) / m())))
142+ then throw((("more than " + toString(b)) + "% members have to vote before finishing the voting"))
143+ else true
144+
145+
146+func x (j,u,y) = if ((h((("tasks_" + u) + "_status")) != "ready_to_apply"))
147+ then throw("this grant has not yet been approved")
148+ else if ((h((((("tasks_" + u) + "_app_") + y) + "_leader")) == toString(j)))
149+ then throw("you are applied")
150+ else true
151+
152+
153+func z (j,u,y) = {
154+ let A = (drop(toString(j), 10) + drop(y, 10))
155+ if (!(p(j)))
156+ then throw("you can't vote")
157+ else if ((h((("tasks_" + u) + "_status")) != "ready_to_apply"))
158+ then throw("voting is not active")
159+ else if ((c(((("tasks_" + u) + "_vote_") + A)) != 0))
160+ then throw("you have already voted on this team")
161+ else true
162+ }
163+
164+
165+func B (j,u,C) = if (!(n(j)))
166+ then throw("grants working group access only")
167+ else if ((h((("tasks_" + u) + "_status")) != "ready_to_apply"))
168+ then throw("voting is not active")
169+ else if ((size(C) == 0))
170+ then throw("no one has yet responded to the grant")
171+ else true
172+
173+
174+func D (j,u,y) = if ((h((("tasks_" + u) + "_status")) != "team_chosen"))
175+ then throw("winner is not define")
176+ else if ((toString(j) != h((((("tasks_" + u) + "_app_") + y) + "_leader"))))
177+ then throw("team leader only")
178+ else true
179+
180+
181+func E (j,u) = if (!(n(j)))
182+ then throw("grants working group access only")
183+ else true
184+
185+
186+@Callable(F)
187+func addTask (G,H) = if (s(F.caller))
188+ then WriteSet([DataEntry((("tasks_" + toBase58String(F.transactionId)) + "_title"), G), DataEntry((("tasks_" + toBase58String(F.transactionId)) + "_link"), H)])
189+ else throw("checks are not passed")
120190
121191
122192
123-@Callable(q)
124-func addReward (v) = if (!(n(q.caller)))
125- then throw("grants working group access only")
126- else {
127- let w = extract(q.payment).amount
128- WriteSet([DataEntry((("tasks_" + v) + "_reward"), w), DataEntry((("tasks_" + v) + "_status"), "proposed")])
193+@Callable(F)
194+func addReward (u) = if (t(F.caller, u))
195+ then {
196+ let I = extract(F.payment).amount
197+ WriteSet([DataEntry((("tasks_" + u) + "_reward"), I), DataEntry((("tasks_" + u) + "_status"), "proposed")])
129198 }
199+ else throw("checks are not passed")
130200
131201
132202
133-@Callable(q)
134-func voteForTaskProposal (v,x) = if (!(p(q)))
135- then throw("you can't vote")
136- else if ((getStringValue(this, (("tasks_" + v) + "_status")) != "proposed"))
137- then throw("voting is closed or not started")
138- else if (if ((x != "like"))
139- then (x != "dislike")
140- else false)
141- then throw("you need to vote like or dislike")
142- else {
143- let y = r(x)
144- let z = ((("tasks_" + v) + "_voted_") + toString(q.caller))
145- let A = c(z)
146- if (!((A == 0)))
147- then throw("you have already voted")
148- else {
149- let B = (("tasks_" + v) + "_voting_state")
150- let C = c(B)
151- let D = (("tasks_" + v) + "_voting_amount")
152- let E = (c(B) + 1)
153- let F = (C + y)
154- ScriptResult(WriteSet([DataEntry(B, F), DataEntry(z, y), DataEntry(D, E)]), TransferSet([ScriptTransfer(q.caller, 500000, unit)]))
155- }
156- }
203+@Callable(F)
204+func voteForTaskProposal (u,J) = if (v(F.caller, u))
205+ then {
206+ let K = ((("tasks_" + u) + "_voted_") + toString(F.caller))
207+ let L = (("tasks_" + u) + "_voting_state")
208+ let M = c(L)
209+ let N = (("tasks_" + u) + "_voting_amount")
210+ let O = (c(L) + 1)
211+ let P = q(J)
212+ let Q = (M + P)
213+ WriteSet([DataEntry(L, Q), DataEntry(K, P), DataEntry(N, O)])
214+ }
215+ else throw("checks are not passed")
157216
158217
159218
160-@Callable(q)
161-func finishTaskProposalVoting (v) = if ((b > ((c((("tasks_" + v) + "_voting_amount")) * 100) / m())))
162- then throw((("more than " + toString(b)) + "% members have to vote before finishing the voting"))
163- else if (!(n(q.caller)))
164- then throw("grants working group access only")
165- else {
166- let B = (("tasks_" + v) + "_voting_state")
167- let C = c(B)
168- if ((C > 0))
169- then {
170- let G = "ready_to_apply"
171- WriteSet([DataEntry((("tasks_" + v) + "_status"), G)])
172- }
173- else {
174- let G = "rejected"
175- WriteSet([DataEntry((("tasks_" + v) + "_status"), G)])
176- }
177- }
219+@Callable(F)
220+func finishTaskProposalVoting (u) = if (w(F.caller, u))
221+ then {
222+ let L = (("tasks_" + u) + "_voting_state")
223+ WriteSet([DataEntry((("tasks_" + u) + "_status"), if ((c(L) > 0))
224+ then "ready_to_apply"
225+ else "rejected")])
226+ }
227+ else throw("checks are not passed")
178228
179229
180230
181-@Callable(q)
182-func applyForTask (v,H,u) = {
183- let I = h((("tasks_" + v) + "_status"))
184- if ((I != "ready_to_apply"))
185- then throw("This grant has not yet been approved")
186- else {
187- let J = (("tasks_" + v) + "_applicants")
188- let K = h(J)
189- let L = drop(toString(q.caller), 10)
190- let M = ((K + ";") + toString(q.caller))
191- WriteSet([DataEntry((((("tasks_" + v) + "_app_") + L) + "_name"), H), DataEntry((((("tasks_" + v) + "_app_") + L) + "_link"), u), DataEntry((((("tasks_" + v) + "_app_") + L) + "_leader"), toString(q.caller)), DataEntry((((("tasks_" + v) + "_app_") + L) + "_id"), L), DataEntry(J, M)])
231+@Callable(F)
232+func applyForTask (u,R,H) = {
233+ let y = drop(toString(F.caller), 10)
234+ if (x(F.caller, u, y))
235+ then {
236+ let S = (("tasks_" + u) + "_applicants")
237+ let T = h(S)
238+ let U = ((T + ";") + toString(F.caller))
239+ WriteSet([DataEntry((((("tasks_" + u) + "_app_") + y) + "_name"), R), DataEntry((((("tasks_" + u) + "_app_") + y) + "_link"), H), DataEntry((((("tasks_" + u) + "_app_") + y) + "_leader"), toString(F.caller)), DataEntry((((("tasks_" + u) + "_app_") + y) + "_id"), y), DataEntry(S, U)])
192240 }
241+ else throw("checks are not passed")
193242 }
194243
195244
196245
197-@Callable(q)
198-func voteForApplicant (v,N,x) = if (!(p(q)))
199- then throw("you can't vote")
200- else {
201- let O = (drop(toString(q.caller), 10) + drop(N, 10))
202- let z = ((("tasks_" + v) + "_vote_") + O)
203- let P = c(z)
204- if ((P != 0))
246+@Callable(F)
247+func voteForApplicant (u,y,J) = if (z(F.caller, u, y))
248+ then {
249+ let S = (((("tasks_" + u) + "_app_") + y) + "_voted")
250+ let U = ((h(S) + ";") + toString(F.caller))
251+ let A = (drop(toString(F.caller), 20) + y)
252+ let K = ((("tasks_" + u) + "_vh_") + A)
253+ if ((h(K) == toString(F.caller)))
205254 then throw("you have already voted on this team")
206255 else {
207- let y = r(x)
208- let Q = (((("tasks_" + v) + "_app_") + N) + "_votes")
209- let R = (((("tasks_" + v) + "_app_") + N) + "_score")
210- let S = (1 + c(Q))
211- let T = (y + c(R))
212- WriteSet([DataEntry(z, y), DataEntry(R, T)])
256+ let V = (((("tasks_" + u) + "_app_") + y) + "_votes")
257+ let W = (((("tasks_" + u) + "_app_") + y) + "_score")
258+ let X = (1 + c(V))
259+ let Y = (q(J) + c(W))
260+ WriteSet([DataEntry(S, U), DataEntry(K, toString(F.caller)), DataEntry(V, X), DataEntry(W, Y)])
213261 }
214262 }
263+ else throw("checks are not passed")
215264
216265
217266
218-@Callable(q)
219-func finishApplicantsVoting (v) = {
220- func U (V,W) = {
221- let J = (("tasks_" + v) + "_applicants")
222- let X = split(getStringValue(this, J), ";")
223- let N = X[V]
224- let Q = (((("tasks_" + v) + "_app_") + N) + "_votes")
225- let S = c(Q)
226- if ((S > 0))
227- then 1
228- else throw(("not enough votes to make decision on " + N))
267+@Callable(F)
268+func finishApplicantsVoting (u) = {
269+ func Z (aa,ab) = {
270+ let S = (("tasks_" + u) + "_applicants")
271+ let C = split(getStringValue(this, S), ";")
272+ let y = C[aa]
273+ let V = (((("tasks_" + u) + "_app_") + y) + "_votes")
274+ let X = c(V)
275+ let ac = C[ab]
276+ let ad = (((("tasks_" + u) + "_app_") + ac) + "_votes")
277+ let ae = c(ad)
278+ if ((X > ae))
279+ then aa
280+ else ab
229281 }
230282
231- func Y (V,W) = {
232- let J = (("tasks_" + v) + "_applicants")
233- let X = split(getStringValue(this, J), ";")
234- let N = X[V]
235- let Q = (((("tasks_" + v) + "_app_") + N) + "_votes")
236- let S = c(Q)
237- let Z = X[W]
238- let aa = (((("tasks_" + v) + "_app_") + Z) + "_votes")
239- let ab = c(aa)
240- if ((S > ab))
241- then V
242- else W
243- }
244-
245- if (!(n(q.caller)))
246- then throw("grants working group access only")
247- else {
248- let ac = h((("tasks_" + v) + "_applicants"))
249- let X = split(ac, ";")
250- if ((size(X) == 0))
251- then throw("No one has yet responded to the grant")
252- else {
253- let ad = {
254- let ae = [0, 1]
255- let af = size(ae)
256- let ag = 0
257- if ((af == 0))
258- then ag
283+ let af = h((("tasks_" + u) + "_applicants"))
284+ let C = split(af, ";")
285+ if (B(F.caller, u, C))
286+ then {
287+ let ag = {
288+ let ah = [0, 1]
289+ let ai = size(ah)
290+ let aj = 0
291+ if ((ai == 0))
292+ then aj
293+ else {
294+ let ak = Z(aj, ah[0])
295+ if ((ai == 1))
296+ then ak
259297 else {
260- let ah = Y(ag, ae[0])
261- if ((af == 1))
262- then ah
298+ let al = Z(ak, ah[1])
299+ if ((ai == 2))
300+ then al
263301 else {
264- let ai = Y(ah, ae[1])
265- if ((af == 2))
266- then ai
267- else {
268- let aj = Y(ai, ae[2])
269- throw("List size exceed 2")
270- }
302+ let am = Z(al, ah[2])
303+ throw("List size exceed 2")
271304 }
272305 }
273306 }
274- let N = X[ad]
275- WriteSet([DataEntry((("tasks_" + v) + "_status"), "team_chosen"), DataEntry((("tasks_" + v) + "_performer"), N), DataEntry((((("tasks_" + v) + "_app_") + N) + "_process"), "can_begin")])
276- }
307+ }
308+ let y = drop(C[ag], 10)
309+ WriteSet([DataEntry((("tasks_" + u) + "_status"), "team_chosen"), DataEntry((("tasks_" + u) + "_performer"), y), DataEntry((((("tasks_" + u) + "_app_") + y) + "_process"), "can_begin")])
277310 }
311+ else throw("checks are not passed")
278312 }
279313
280314
281315
282-@Callable(q)
283-func startWork (v) = {
284- let N = getStringValue(this, (("tasks_" + v) + "_performer"))
285- if ((toString(q.caller) != getStringValue(this, (((("tasks_" + v) + "_app_") + N) + "_leader"))))
286- then throw("team leader only")
287- else WriteSet([DataEntry((("tasks_" + v) + "_status"), "work_started"), DataEntry((((("tasks_" + v) + "_app_") + N) + "_process"), "work_started")])
316+@Callable(F)
317+func startWork (u) = {
318+ let y = h((("tasks_" + u) + "_performer"))
319+ if (D(F.caller, u, y))
320+ then WriteSet([DataEntry((("tasks_" + u) + "_status"), "work_started"), DataEntry((((("tasks_" + u) + "_app_") + y) + "_process"), "work_started")])
321+ else throw("checks are not passed")
288322 }
289323
290324
291325
292-@Callable(q)
293-func acceptWorkResult (v) = if (!(n(q.caller)))
294- then throw("grants working group access only")
295- else {
296- let ak = c((("tasks_" + v) + "_reward"))
297- let N = getStringValue(this, (("tasks_" + v) + "_performer"))
298- let al = getStringValue(this, (((("tasks_" + v) + "_app_") + N) + "_leader"))
299- ScriptResult(WriteSet([DataEntry((("tasks_" + v) + "_status"), "work_finished"), DataEntry((((("tasks_" + v) + "_app_") + N) + "_process"), "work_finished")]), TransferSet([ScriptTransfer(addressFromStringValue(al), ak, unit)]))
326+@Callable(F)
327+func acceptWorkResult (u,an) = if (E(F.caller, u))
328+ then {
329+ let ao = c((("tasks_" + u) + "_reward"))
330+ let y = h((("tasks_" + u) + "_performer"))
331+ let ap = h((((("tasks_" + u) + "_app_") + y) + "_leader"))
332+ ScriptResult(WriteSet([DataEntry((("tasks_" + u) + "_status"), "work_finished"), DataEntry((((("tasks_" + u) + "_app_") + y) + "_process"), "work_finished"), DataEntry((("tasks_" + u) + "_report"), an)]), TransferSet([ScriptTransfer(addressFromStringValue(ap), ao, unit)]))
300333 }
334+ else throw("checks are not passed")
335+
336+
337+
338+@Callable(F)
339+func rejectTask (u) = if (n(F.caller))
340+ then WriteSet([DataEntry((("tasks_" + u) + "_status"), "rejected")])
341+ else throw("grants working group access only")
301342
302343
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = addressFromStringValue("3MwRzi2BmqZZXWrCGCwcRQLsnic2Aod6zhS")
55
66 let b = 1
77
88 func c (d) = {
99 let e = {
1010 let f = getInteger(this, d)
1111 if ($isInstanceOf(f, "Int"))
1212 then {
1313 let g = f
1414 g
1515 }
1616 else 0
1717 }
1818 e
1919 }
2020
2121
2222 func h (d) = {
2323 let e = {
2424 let f = getString(this, d)
2525 if ($isInstanceOf(f, "String"))
2626 then {
2727 let g = f
2828 g
2929 }
3030 else ""
3131 }
3232 e
3333 }
3434
3535
3636 func i (j) = (j == this)
3737
3838
3939 func k () = {
4040 let e = {
4141 let f = getString(a, "working_group_members")
4242 if ($isInstanceOf(f, "String"))
4343 then {
4444 let g = f
4545 g
4646 }
4747 else ""
4848 }
4949 e
5050 }
5151
5252
5353 func l () = {
5454 let e = {
5555 let f = getString(a, "dao_members")
5656 if ($isInstanceOf(f, "String"))
5757 then {
5858 let g = f
5959 g
6060 }
6161 else ""
6262 }
6363 e
6464 }
6565
6666
6767 func m () = {
6868 let e = {
6969 let f = getInteger(a, "dao_size")
7070 if ($isInstanceOf(f, "Int"))
7171 then {
7272 let g = f
7373 g
7474 }
7575 else 0
7676 }
7777 e
7878 }
7979
8080
8181 func n (o) = {
8282 let e = {
8383 let f = getInteger(a, (("working_group_member_" + toString(o)) + "_weight"))
8484 if ($isInstanceOf(f, "Int"))
8585 then {
8686 let g = f
8787 g
8888 }
8989 else 0
9090 }
9191 (e > 0)
9292 }
9393
9494
95-func p (q) = {
95+func p (j) = {
9696 let e = {
97- let f = getInteger(a, (("dao_member_" + toString(q.caller)) + "_weight"))
97+ let f = getInteger(a, (("dao_member_" + toString(j)) + "_weight"))
9898 if ($isInstanceOf(f, "Int"))
9999 then {
100100 let g = f
101101 g
102102 }
103103 else 0
104104 }
105105 (e > 0)
106106 }
107107
108108
109-func r (s) = if ((s == "like"))
109+func q (r) = if ((r == "like"))
110110 then 1
111- else if ((s == "dislike"))
111+ else if ((r == "dislike"))
112112 then -1
113113 else throw("you need to vote with 'like' or 'dislike' value")
114114
115115
116-@Callable(q)
117-func addTask (t,u) = if (!(n(q.caller)))
116+func s (j) = if (!(n(j)))
118117 then throw("grants working group access only")
119- else WriteSet([DataEntry((("tasks_" + toBase58String(q.transactionId)) + "_title"), t), DataEntry((("tasks_" + toBase58String(q.transactionId)) + "_link"), u)])
118+ else true
119+
120+
121+func t (j,u) = if (!(n(j)))
122+ then throw("grants working group access only")
123+ else if ((h((("tasks_" + u) + "_status")) != ""))
124+ then throw("grant isn`t new")
125+ else true
126+
127+
128+func v (j,u) = if (!(p(j)))
129+ then throw("you can't vote")
130+ else if ((h((("tasks_" + u) + "_status")) != "proposed"))
131+ then throw("voting is closed or not started")
132+ else if ((c(((("tasks_" + u) + "_voted_") + toString(j))) != 0))
133+ then throw("you have already voted")
134+ else true
135+
136+
137+func w (j,u) = if (!(n(j)))
138+ then throw("grants working group access only")
139+ else if ((h((("tasks_" + u) + "_status")) != "proposed"))
140+ then throw("voting is not active")
141+ else if ((b > ((c((("tasks_" + u) + "_voting_amount")) * 100) / m())))
142+ then throw((("more than " + toString(b)) + "% members have to vote before finishing the voting"))
143+ else true
144+
145+
146+func x (j,u,y) = if ((h((("tasks_" + u) + "_status")) != "ready_to_apply"))
147+ then throw("this grant has not yet been approved")
148+ else if ((h((((("tasks_" + u) + "_app_") + y) + "_leader")) == toString(j)))
149+ then throw("you are applied")
150+ else true
151+
152+
153+func z (j,u,y) = {
154+ let A = (drop(toString(j), 10) + drop(y, 10))
155+ if (!(p(j)))
156+ then throw("you can't vote")
157+ else if ((h((("tasks_" + u) + "_status")) != "ready_to_apply"))
158+ then throw("voting is not active")
159+ else if ((c(((("tasks_" + u) + "_vote_") + A)) != 0))
160+ then throw("you have already voted on this team")
161+ else true
162+ }
163+
164+
165+func B (j,u,C) = if (!(n(j)))
166+ then throw("grants working group access only")
167+ else if ((h((("tasks_" + u) + "_status")) != "ready_to_apply"))
168+ then throw("voting is not active")
169+ else if ((size(C) == 0))
170+ then throw("no one has yet responded to the grant")
171+ else true
172+
173+
174+func D (j,u,y) = if ((h((("tasks_" + u) + "_status")) != "team_chosen"))
175+ then throw("winner is not define")
176+ else if ((toString(j) != h((((("tasks_" + u) + "_app_") + y) + "_leader"))))
177+ then throw("team leader only")
178+ else true
179+
180+
181+func E (j,u) = if (!(n(j)))
182+ then throw("grants working group access only")
183+ else true
184+
185+
186+@Callable(F)
187+func addTask (G,H) = if (s(F.caller))
188+ then WriteSet([DataEntry((("tasks_" + toBase58String(F.transactionId)) + "_title"), G), DataEntry((("tasks_" + toBase58String(F.transactionId)) + "_link"), H)])
189+ else throw("checks are not passed")
120190
121191
122192
123-@Callable(q)
124-func addReward (v) = if (!(n(q.caller)))
125- then throw("grants working group access only")
126- else {
127- let w = extract(q.payment).amount
128- WriteSet([DataEntry((("tasks_" + v) + "_reward"), w), DataEntry((("tasks_" + v) + "_status"), "proposed")])
193+@Callable(F)
194+func addReward (u) = if (t(F.caller, u))
195+ then {
196+ let I = extract(F.payment).amount
197+ WriteSet([DataEntry((("tasks_" + u) + "_reward"), I), DataEntry((("tasks_" + u) + "_status"), "proposed")])
129198 }
199+ else throw("checks are not passed")
130200
131201
132202
133-@Callable(q)
134-func voteForTaskProposal (v,x) = if (!(p(q)))
135- then throw("you can't vote")
136- else if ((getStringValue(this, (("tasks_" + v) + "_status")) != "proposed"))
137- then throw("voting is closed or not started")
138- else if (if ((x != "like"))
139- then (x != "dislike")
140- else false)
141- then throw("you need to vote like or dislike")
142- else {
143- let y = r(x)
144- let z = ((("tasks_" + v) + "_voted_") + toString(q.caller))
145- let A = c(z)
146- if (!((A == 0)))
147- then throw("you have already voted")
148- else {
149- let B = (("tasks_" + v) + "_voting_state")
150- let C = c(B)
151- let D = (("tasks_" + v) + "_voting_amount")
152- let E = (c(B) + 1)
153- let F = (C + y)
154- ScriptResult(WriteSet([DataEntry(B, F), DataEntry(z, y), DataEntry(D, E)]), TransferSet([ScriptTransfer(q.caller, 500000, unit)]))
155- }
156- }
203+@Callable(F)
204+func voteForTaskProposal (u,J) = if (v(F.caller, u))
205+ then {
206+ let K = ((("tasks_" + u) + "_voted_") + toString(F.caller))
207+ let L = (("tasks_" + u) + "_voting_state")
208+ let M = c(L)
209+ let N = (("tasks_" + u) + "_voting_amount")
210+ let O = (c(L) + 1)
211+ let P = q(J)
212+ let Q = (M + P)
213+ WriteSet([DataEntry(L, Q), DataEntry(K, P), DataEntry(N, O)])
214+ }
215+ else throw("checks are not passed")
157216
158217
159218
160-@Callable(q)
161-func finishTaskProposalVoting (v) = if ((b > ((c((("tasks_" + v) + "_voting_amount")) * 100) / m())))
162- then throw((("more than " + toString(b)) + "% members have to vote before finishing the voting"))
163- else if (!(n(q.caller)))
164- then throw("grants working group access only")
165- else {
166- let B = (("tasks_" + v) + "_voting_state")
167- let C = c(B)
168- if ((C > 0))
169- then {
170- let G = "ready_to_apply"
171- WriteSet([DataEntry((("tasks_" + v) + "_status"), G)])
172- }
173- else {
174- let G = "rejected"
175- WriteSet([DataEntry((("tasks_" + v) + "_status"), G)])
176- }
177- }
219+@Callable(F)
220+func finishTaskProposalVoting (u) = if (w(F.caller, u))
221+ then {
222+ let L = (("tasks_" + u) + "_voting_state")
223+ WriteSet([DataEntry((("tasks_" + u) + "_status"), if ((c(L) > 0))
224+ then "ready_to_apply"
225+ else "rejected")])
226+ }
227+ else throw("checks are not passed")
178228
179229
180230
181-@Callable(q)
182-func applyForTask (v,H,u) = {
183- let I = h((("tasks_" + v) + "_status"))
184- if ((I != "ready_to_apply"))
185- then throw("This grant has not yet been approved")
186- else {
187- let J = (("tasks_" + v) + "_applicants")
188- let K = h(J)
189- let L = drop(toString(q.caller), 10)
190- let M = ((K + ";") + toString(q.caller))
191- WriteSet([DataEntry((((("tasks_" + v) + "_app_") + L) + "_name"), H), DataEntry((((("tasks_" + v) + "_app_") + L) + "_link"), u), DataEntry((((("tasks_" + v) + "_app_") + L) + "_leader"), toString(q.caller)), DataEntry((((("tasks_" + v) + "_app_") + L) + "_id"), L), DataEntry(J, M)])
231+@Callable(F)
232+func applyForTask (u,R,H) = {
233+ let y = drop(toString(F.caller), 10)
234+ if (x(F.caller, u, y))
235+ then {
236+ let S = (("tasks_" + u) + "_applicants")
237+ let T = h(S)
238+ let U = ((T + ";") + toString(F.caller))
239+ WriteSet([DataEntry((((("tasks_" + u) + "_app_") + y) + "_name"), R), DataEntry((((("tasks_" + u) + "_app_") + y) + "_link"), H), DataEntry((((("tasks_" + u) + "_app_") + y) + "_leader"), toString(F.caller)), DataEntry((((("tasks_" + u) + "_app_") + y) + "_id"), y), DataEntry(S, U)])
192240 }
241+ else throw("checks are not passed")
193242 }
194243
195244
196245
197-@Callable(q)
198-func voteForApplicant (v,N,x) = if (!(p(q)))
199- then throw("you can't vote")
200- else {
201- let O = (drop(toString(q.caller), 10) + drop(N, 10))
202- let z = ((("tasks_" + v) + "_vote_") + O)
203- let P = c(z)
204- if ((P != 0))
246+@Callable(F)
247+func voteForApplicant (u,y,J) = if (z(F.caller, u, y))
248+ then {
249+ let S = (((("tasks_" + u) + "_app_") + y) + "_voted")
250+ let U = ((h(S) + ";") + toString(F.caller))
251+ let A = (drop(toString(F.caller), 20) + y)
252+ let K = ((("tasks_" + u) + "_vh_") + A)
253+ if ((h(K) == toString(F.caller)))
205254 then throw("you have already voted on this team")
206255 else {
207- let y = r(x)
208- let Q = (((("tasks_" + v) + "_app_") + N) + "_votes")
209- let R = (((("tasks_" + v) + "_app_") + N) + "_score")
210- let S = (1 + c(Q))
211- let T = (y + c(R))
212- WriteSet([DataEntry(z, y), DataEntry(R, T)])
256+ let V = (((("tasks_" + u) + "_app_") + y) + "_votes")
257+ let W = (((("tasks_" + u) + "_app_") + y) + "_score")
258+ let X = (1 + c(V))
259+ let Y = (q(J) + c(W))
260+ WriteSet([DataEntry(S, U), DataEntry(K, toString(F.caller)), DataEntry(V, X), DataEntry(W, Y)])
213261 }
214262 }
263+ else throw("checks are not passed")
215264
216265
217266
218-@Callable(q)
219-func finishApplicantsVoting (v) = {
220- func U (V,W) = {
221- let J = (("tasks_" + v) + "_applicants")
222- let X = split(getStringValue(this, J), ";")
223- let N = X[V]
224- let Q = (((("tasks_" + v) + "_app_") + N) + "_votes")
225- let S = c(Q)
226- if ((S > 0))
227- then 1
228- else throw(("not enough votes to make decision on " + N))
267+@Callable(F)
268+func finishApplicantsVoting (u) = {
269+ func Z (aa,ab) = {
270+ let S = (("tasks_" + u) + "_applicants")
271+ let C = split(getStringValue(this, S), ";")
272+ let y = C[aa]
273+ let V = (((("tasks_" + u) + "_app_") + y) + "_votes")
274+ let X = c(V)
275+ let ac = C[ab]
276+ let ad = (((("tasks_" + u) + "_app_") + ac) + "_votes")
277+ let ae = c(ad)
278+ if ((X > ae))
279+ then aa
280+ else ab
229281 }
230282
231- func Y (V,W) = {
232- let J = (("tasks_" + v) + "_applicants")
233- let X = split(getStringValue(this, J), ";")
234- let N = X[V]
235- let Q = (((("tasks_" + v) + "_app_") + N) + "_votes")
236- let S = c(Q)
237- let Z = X[W]
238- let aa = (((("tasks_" + v) + "_app_") + Z) + "_votes")
239- let ab = c(aa)
240- if ((S > ab))
241- then V
242- else W
243- }
244-
245- if (!(n(q.caller)))
246- then throw("grants working group access only")
247- else {
248- let ac = h((("tasks_" + v) + "_applicants"))
249- let X = split(ac, ";")
250- if ((size(X) == 0))
251- then throw("No one has yet responded to the grant")
252- else {
253- let ad = {
254- let ae = [0, 1]
255- let af = size(ae)
256- let ag = 0
257- if ((af == 0))
258- then ag
283+ let af = h((("tasks_" + u) + "_applicants"))
284+ let C = split(af, ";")
285+ if (B(F.caller, u, C))
286+ then {
287+ let ag = {
288+ let ah = [0, 1]
289+ let ai = size(ah)
290+ let aj = 0
291+ if ((ai == 0))
292+ then aj
293+ else {
294+ let ak = Z(aj, ah[0])
295+ if ((ai == 1))
296+ then ak
259297 else {
260- let ah = Y(ag, ae[0])
261- if ((af == 1))
262- then ah
298+ let al = Z(ak, ah[1])
299+ if ((ai == 2))
300+ then al
263301 else {
264- let ai = Y(ah, ae[1])
265- if ((af == 2))
266- then ai
267- else {
268- let aj = Y(ai, ae[2])
269- throw("List size exceed 2")
270- }
302+ let am = Z(al, ah[2])
303+ throw("List size exceed 2")
271304 }
272305 }
273306 }
274- let N = X[ad]
275- WriteSet([DataEntry((("tasks_" + v) + "_status"), "team_chosen"), DataEntry((("tasks_" + v) + "_performer"), N), DataEntry((((("tasks_" + v) + "_app_") + N) + "_process"), "can_begin")])
276- }
307+ }
308+ let y = drop(C[ag], 10)
309+ WriteSet([DataEntry((("tasks_" + u) + "_status"), "team_chosen"), DataEntry((("tasks_" + u) + "_performer"), y), DataEntry((((("tasks_" + u) + "_app_") + y) + "_process"), "can_begin")])
277310 }
311+ else throw("checks are not passed")
278312 }
279313
280314
281315
282-@Callable(q)
283-func startWork (v) = {
284- let N = getStringValue(this, (("tasks_" + v) + "_performer"))
285- if ((toString(q.caller) != getStringValue(this, (((("tasks_" + v) + "_app_") + N) + "_leader"))))
286- then throw("team leader only")
287- else WriteSet([DataEntry((("tasks_" + v) + "_status"), "work_started"), DataEntry((((("tasks_" + v) + "_app_") + N) + "_process"), "work_started")])
316+@Callable(F)
317+func startWork (u) = {
318+ let y = h((("tasks_" + u) + "_performer"))
319+ if (D(F.caller, u, y))
320+ then WriteSet([DataEntry((("tasks_" + u) + "_status"), "work_started"), DataEntry((((("tasks_" + u) + "_app_") + y) + "_process"), "work_started")])
321+ else throw("checks are not passed")
288322 }
289323
290324
291325
292-@Callable(q)
293-func acceptWorkResult (v) = if (!(n(q.caller)))
294- then throw("grants working group access only")
295- else {
296- let ak = c((("tasks_" + v) + "_reward"))
297- let N = getStringValue(this, (("tasks_" + v) + "_performer"))
298- let al = getStringValue(this, (((("tasks_" + v) + "_app_") + N) + "_leader"))
299- ScriptResult(WriteSet([DataEntry((("tasks_" + v) + "_status"), "work_finished"), DataEntry((((("tasks_" + v) + "_app_") + N) + "_process"), "work_finished")]), TransferSet([ScriptTransfer(addressFromStringValue(al), ak, unit)]))
326+@Callable(F)
327+func acceptWorkResult (u,an) = if (E(F.caller, u))
328+ then {
329+ let ao = c((("tasks_" + u) + "_reward"))
330+ let y = h((("tasks_" + u) + "_performer"))
331+ let ap = h((((("tasks_" + u) + "_app_") + y) + "_leader"))
332+ ScriptResult(WriteSet([DataEntry((("tasks_" + u) + "_status"), "work_finished"), DataEntry((((("tasks_" + u) + "_app_") + y) + "_process"), "work_finished"), DataEntry((("tasks_" + u) + "_report"), an)]), TransferSet([ScriptTransfer(addressFromStringValue(ap), ao, unit)]))
300333 }
334+ else throw("checks are not passed")
335+
336+
337+
338+@Callable(F)
339+func rejectTask (u) = if (n(F.caller))
340+ then WriteSet([DataEntry((("tasks_" + u) + "_status"), "rejected")])
341+ else throw("grants working group access only")
301342
302343

github/deemru/w8io/873ac7e 
53.81 ms