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
3131 }
3232
3333
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- }
34+func h (i) = (i == this)
4835
4936
5037 func j () = {
5138 let d = {
52- let e = getString(h, "dao_members")
39+ let e = getString(this, "working_group")
5340 if ($isInstanceOf(e, "String"))
5441 then {
5542 let f = e
6350
6451 func k () = {
6552 let d = {
66- let e = getInteger(h, "dao_size")
67- if ($isInstanceOf(e, "Int"))
53+ let e = getString(this, "dao_members")
54+ if ($isInstanceOf(e, "String"))
6855 then {
6956 let f = e
7057 f
7158 }
72- else 0
59+ else ""
7360 }
7461 d
7562 }
7663
7764
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- }
65+func l (m) = (b((("working_group_member_" + toString(m)) + "_weight")) > 0)
9066
9167
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- }
68+func n (o) = (b((("dao_member_" + toString(o.caller)) + "_weight")) > 0)
10469
10570
10671 @Callable(o)
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)])
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+ }
11083
11184
11285
11386 @Callable(o)
114-func addTaskDetails (r,s) = if (!(l(o.caller)))
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_name", 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 addTaskDetails (w) = if (!(l(o.caller)))
115110 then throw("grants working group access only")
116111 else {
117- let t = extract(o.payment).amount
118- WriteSet([DataEntry((("tasks_" + r) + "_reward"), t), DataEntry((("tasks_" + r) + "_details"), s), DataEntry((("tasks_" + r) + "_status"), "proposed")])
112+ let x = extract(o.payment).amount
113+ WriteSet([DataEntry((("tasks_" + w) + "_reward"), x), DataEntry((("tasks_" + w) + "_status"), "proposed")])
119114 }
120115
121116
122117
123118 @Callable(o)
124-func voteForTaskProposal (r,u) = if (!(n(o)))
119+func voteForTaskProposal (w,y) = if (!(n(o)))
125120 then throw("you can't vote")
126- else if ((getStringValue(this, (("tasks_" + r) + "_status")) != "proposed"))
121+ else if ((getStringValue(this, (("tasks_" + w) + "_status")) != "proposed"))
127122 then throw("voting is closed or not started")
128- else if (if ((u != -1))
129- then (u != 1)
123+ else if (if ((y != -1))
124+ then (y != 1)
130125 else false)
131126 then throw("you need to vote 1 or -1")
132127 else {
133- let v = ((("tasks_" + r) + "_voted_") + toString(o.caller))
134- let w = b(v)
135- if (!((w == 0)))
128+ let z = ((("tasks_" + w) + "_voted_") + toString(o.caller))
129+ let A = b(z)
130+ if (!((A == 0)))
136131 then throw("you have already voted")
137132 else {
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)]))
133+ let B = (("tasks_" + w) + "_voting_state")
134+ let C = b(B)
135+ let D = (("tasks_" + w) + "_voting_amount")
136+ let E = (b(B) + 1)
137+ let F = (C + y)
138+ ScriptResult(WriteSet([DataEntry(B, F), DataEntry(z, y), DataEntry(D, E)]), TransferSet([ScriptTransfer(o.caller, 500000, unit)]))
144139 }
145140 }
146141
147142
148143
149144 @Callable(o)
150-func finishTaskProposalVoting (r) = if ((a > ((b((("tasks_" + r) + "_voting_amount")) * 100) / k())))
145+func finishTaskProposalVoting (w) = if ((a > ((b((("tasks_" + w) + "_voting_amount")) * 100) / b("dao_size"))))
151146 then throw((("more than " + toString(a)) + "% members have to vote before finishing the voting"))
152147 else if (!(l(o.caller)))
153148 then throw("grants working group access only")
154149 else {
155- let x = (("tasks_" + r) + "_voting_state")
156- let y = b(x)
157- if ((y > 0))
150+ let B = (("tasks_" + w) + "_voting_state")
151+ let C = b(B)
152+ if ((C > 0))
158153 then {
159- let C = "ready_to_apply"
160- WriteSet([DataEntry((("tasks_" + r) + "_status"), C)])
154+ let G = "ready_to_apply"
155+ WriteSet([DataEntry((("tasks_" + w) + "_status"), G)])
161156 }
162157 else {
163- let C = "rejected"
164- WriteSet([DataEntry((("tasks_" + r) + "_status"), C)])
158+ let G = "rejected"
159+ WriteSet([DataEntry((("tasks_" + w) + "_status"), G)])
165160 }
166161 }
167162
168163
169164
170165 @Callable(o)
171-func applyForTask (r,D,q) = {
172- let E = g((("tasks_" + r) + "_status"))
173- if ((E != "ready_to_apply"))
166+func applyForTask (w,H,v) = {
167+ let I = g((("tasks_" + w) + "_status"))
168+ if ((I != "ready_to_apply"))
174169 then throw("This grant has not yet been approved")
175170 else {
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)])
171+ let J = (("tasks_" + w) + "_applicants")
172+ let K = g(J)
173+ let L = drop(toString(o.caller), 10)
174+ let M = ((K + ";") + toString(o.caller))
175+ WriteSet([DataEntry((((("tasks_" + w) + "_app_") + L) + "_name"), H), DataEntry((((("tasks_" + w) + "_app_") + L) + "_link"), v), DataEntry((((("tasks_" + w) + "_app_") + L) + "_leader"), toString(o.caller)), DataEntry((((("tasks_" + w) + "_app_") + L) + "_id"), L), DataEntry(J, M)])
181176 }
182177 }
183178
184179
185180
186181 @Callable(o)
187-func voteForApplicant (r,J,u) = if (!(n(o)))
182+func voteForApplicant (w,N,y) = if (!(n(o)))
188183 then throw("you can't vote")
189184 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))
185+ let O = (drop(toString(o.caller), 10) + drop(N, 10))
186+ let z = ((("tasks_" + w) + "_vote_") + O)
187+ let P = b(z)
188+ if ((P != 0))
194189 then throw("you have already voted on this team")
195190 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)])
191+ let Q = (((("tasks_" + w) + "_app_") + N) + "_votes")
192+ let R = (((("tasks_" + w) + "_app_") + N) + "_score")
193+ let S = (1 + b(Q))
194+ let T = (y + b(R))
195+ WriteSet([DataEntry(z, y), DataEntry(R, T)])
201196 }
202197 }
203198
204199
205200
206201 @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))
202+func finishApplicantsVoting (w) = {
203+ func U (V,W) = {
204+ let J = (("tasks_" + w) + "_applicants")
205+ let X = split(getStringValue(this, J), ";")
206+ let N = X[V]
207+ let Q = (((("tasks_" + w) + "_app_") + N) + "_votes")
208+ let S = b(Q)
209+ if ((S > 0))
215210 then 1
216- else throw(("not enough votes to make decision on " + J))
211+ else throw(("not enough votes to make decision on " + N))
217212 }
218213
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
214+ func Y (V,W) = {
215+ let J = (("tasks_" + w) + "_applicants")
216+ let X = split(getStringValue(this, J), ";")
217+ let N = X[V]
218+ let Q = (((("tasks_" + w) + "_app_") + N) + "_votes")
219+ let S = b(Q)
220+ let Z = X[W]
221+ let aa = (((("tasks_" + w) + "_app_") + Z) + "_votes")
222+ let ab = b(aa)
223+ if ((S > ab))
224+ then V
225+ else W
231226 }
232227
233228 if (!(l(o.caller)))
234229 then throw("grants working group access only")
235230 else {
236- let Y = g((("tasks_" + r) + "_applicants"))
237- let T = split(Y, ";")
238- if ((size(T) == 0))
231+ let ac = g((("tasks_" + w) + "_applicants"))
232+ let X = split(ac, ";")
233+ if ((size(X) == 0))
239234 then throw("No one has yet responded to the grant")
240235 else {
241- let Z = {
242- let aa = [0, 1]
243- let ab = size(aa)
244- let ac = 0
245- if ((ab == 0))
246- then ac
236+ let ad = {
237+ let ae = [0, 1]
238+ let af = size(ae)
239+ let ag = 0
240+ if ((af == 0))
241+ then ag
247242 else {
248- let ad = U(ac, aa[0])
249- if ((ab == 1))
250- then ad
243+ let ah = Y(ag, ae[0])
244+ if ((af == 1))
245+ then ah
251246 else {
252- let ae = U(ad, aa[1])
253- if ((ab == 2))
254- then ae
247+ let ai = Y(ah, ae[1])
248+ if ((af == 2))
249+ then ai
255250 else {
256- let af = U(ae, aa[2])
251+ let aj = Y(ai, ae[2])
257252 throw("List size exceed 2")
258253 }
259254 }
260255 }
261256 }
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")])
257+ let N = X[ad]
258+ WriteSet([DataEntry((("tasks_" + w) + "_status"), "team_chosen"), DataEntry((("tasks_" + w) + "_performer"), N), DataEntry((((("tasks_" + w) + "_app_") + N) + "_process"), "can_begin")])
264259 }
265260 }
266261 }
268263
269264
270265 @Callable(o)
271-func startWork (r) = {
272- let J = getStringValue(this, (("tasks_" + r) + "_performer"))
273- if ((toString(o.caller) != getStringValue(this, (((("tasks_" + r) + "_app_") + J) + "_leader"))))
266+func startWork (w) = {
267+ let N = getStringValue(this, (("tasks_" + w) + "_performer"))
268+ if ((toString(o.caller) != getStringValue(this, (((("tasks_" + w) + "_app_") + N) + "_leader"))))
274269 then throw("team leader only")
275- else WriteSet([DataEntry((("tasks_" + r) + "_status"), "work_started"), DataEntry((((("tasks_" + r) + "_app_") + J) + "_process"), "work_started")])
270+ else WriteSet([DataEntry((("tasks_" + w) + "_status"), "work_started"), DataEntry((((("tasks_" + w) + "_app_") + N) + "_process"), "work_started")])
276271 }
277272
278273
279274
280275 @Callable(o)
281-func rejectTask (r) = if (!(l(o.caller)))
276+func acceptWorkResult (w) = if (!(l(o.caller)))
282277 then throw("grants working group access only")
283278 else {
284- let J = getStringValue(this, (("tasks_" + r) + "_performer"))
285- WriteSet([DataEntry((("tasks_" + r) + "_status"), "rejected"), DataEntry((((("tasks_" + r) + "_app_") + J) + "_process"), "rejected")])
286- }
287-
288-
289-
290-@Callable(o)
291-func acceptWorkResult (r,ag) = if (!(l(o.caller)))
292- then throw("grants working group access only")
293- else {
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)]))
279+ let ak = b((("tasks_" + w) + "_reward"))
280+ let N = getStringValue(this, (("tasks_" + w) + "_performer"))
281+ let al = getStringValue(this, (((("tasks_" + w) + "_app_") + N) + "_leader"))
282+ ScriptResult(WriteSet([DataEntry((("tasks_" + w) + "_status"), "work_finished"), DataEntry((((("tasks_" + w) + "_app_") + N) + "_process"), "work_finished")]), TransferSet([ScriptTransfer(addressFromStringValue(al), ak, unit)]))
298283 }
299284
300285
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-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- }
34+func h (i) = (i == this)
4835
4936
5037 func j () = {
5138 let d = {
52- let e = getString(h, "dao_members")
39+ let e = getString(this, "working_group")
5340 if ($isInstanceOf(e, "String"))
5441 then {
5542 let f = e
5643 f
5744 }
5845 else ""
5946 }
6047 d
6148 }
6249
6350
6451 func k () = {
6552 let d = {
66- let e = getInteger(h, "dao_size")
67- if ($isInstanceOf(e, "Int"))
53+ let e = getString(this, "dao_members")
54+ if ($isInstanceOf(e, "String"))
6855 then {
6956 let f = e
7057 f
7158 }
72- else 0
59+ else ""
7360 }
7461 d
7562 }
7663
7764
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- }
65+func l (m) = (b((("working_group_member_" + toString(m)) + "_weight")) > 0)
9066
9167
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- }
68+func n (o) = (b((("dao_member_" + toString(o.caller)) + "_weight")) > 0)
10469
10570
10671 @Callable(o)
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)])
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+ }
11083
11184
11285
11386 @Callable(o)
114-func addTaskDetails (r,s) = if (!(l(o.caller)))
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_name", 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 addTaskDetails (w) = if (!(l(o.caller)))
115110 then throw("grants working group access only")
116111 else {
117- let t = extract(o.payment).amount
118- WriteSet([DataEntry((("tasks_" + r) + "_reward"), t), DataEntry((("tasks_" + r) + "_details"), s), DataEntry((("tasks_" + r) + "_status"), "proposed")])
112+ let x = extract(o.payment).amount
113+ WriteSet([DataEntry((("tasks_" + w) + "_reward"), x), DataEntry((("tasks_" + w) + "_status"), "proposed")])
119114 }
120115
121116
122117
123118 @Callable(o)
124-func voteForTaskProposal (r,u) = if (!(n(o)))
119+func voteForTaskProposal (w,y) = if (!(n(o)))
125120 then throw("you can't vote")
126- else if ((getStringValue(this, (("tasks_" + r) + "_status")) != "proposed"))
121+ else if ((getStringValue(this, (("tasks_" + w) + "_status")) != "proposed"))
127122 then throw("voting is closed or not started")
128- else if (if ((u != -1))
129- then (u != 1)
123+ else if (if ((y != -1))
124+ then (y != 1)
130125 else false)
131126 then throw("you need to vote 1 or -1")
132127 else {
133- let v = ((("tasks_" + r) + "_voted_") + toString(o.caller))
134- let w = b(v)
135- if (!((w == 0)))
128+ let z = ((("tasks_" + w) + "_voted_") + toString(o.caller))
129+ let A = b(z)
130+ if (!((A == 0)))
136131 then throw("you have already voted")
137132 else {
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)]))
133+ let B = (("tasks_" + w) + "_voting_state")
134+ let C = b(B)
135+ let D = (("tasks_" + w) + "_voting_amount")
136+ let E = (b(B) + 1)
137+ let F = (C + y)
138+ ScriptResult(WriteSet([DataEntry(B, F), DataEntry(z, y), DataEntry(D, E)]), TransferSet([ScriptTransfer(o.caller, 500000, unit)]))
144139 }
145140 }
146141
147142
148143
149144 @Callable(o)
150-func finishTaskProposalVoting (r) = if ((a > ((b((("tasks_" + r) + "_voting_amount")) * 100) / k())))
145+func finishTaskProposalVoting (w) = if ((a > ((b((("tasks_" + w) + "_voting_amount")) * 100) / b("dao_size"))))
151146 then throw((("more than " + toString(a)) + "% members have to vote before finishing the voting"))
152147 else if (!(l(o.caller)))
153148 then throw("grants working group access only")
154149 else {
155- let x = (("tasks_" + r) + "_voting_state")
156- let y = b(x)
157- if ((y > 0))
150+ let B = (("tasks_" + w) + "_voting_state")
151+ let C = b(B)
152+ if ((C > 0))
158153 then {
159- let C = "ready_to_apply"
160- WriteSet([DataEntry((("tasks_" + r) + "_status"), C)])
154+ let G = "ready_to_apply"
155+ WriteSet([DataEntry((("tasks_" + w) + "_status"), G)])
161156 }
162157 else {
163- let C = "rejected"
164- WriteSet([DataEntry((("tasks_" + r) + "_status"), C)])
158+ let G = "rejected"
159+ WriteSet([DataEntry((("tasks_" + w) + "_status"), G)])
165160 }
166161 }
167162
168163
169164
170165 @Callable(o)
171-func applyForTask (r,D,q) = {
172- let E = g((("tasks_" + r) + "_status"))
173- if ((E != "ready_to_apply"))
166+func applyForTask (w,H,v) = {
167+ let I = g((("tasks_" + w) + "_status"))
168+ if ((I != "ready_to_apply"))
174169 then throw("This grant has not yet been approved")
175170 else {
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)])
171+ let J = (("tasks_" + w) + "_applicants")
172+ let K = g(J)
173+ let L = drop(toString(o.caller), 10)
174+ let M = ((K + ";") + toString(o.caller))
175+ WriteSet([DataEntry((((("tasks_" + w) + "_app_") + L) + "_name"), H), DataEntry((((("tasks_" + w) + "_app_") + L) + "_link"), v), DataEntry((((("tasks_" + w) + "_app_") + L) + "_leader"), toString(o.caller)), DataEntry((((("tasks_" + w) + "_app_") + L) + "_id"), L), DataEntry(J, M)])
181176 }
182177 }
183178
184179
185180
186181 @Callable(o)
187-func voteForApplicant (r,J,u) = if (!(n(o)))
182+func voteForApplicant (w,N,y) = if (!(n(o)))
188183 then throw("you can't vote")
189184 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))
185+ let O = (drop(toString(o.caller), 10) + drop(N, 10))
186+ let z = ((("tasks_" + w) + "_vote_") + O)
187+ let P = b(z)
188+ if ((P != 0))
194189 then throw("you have already voted on this team")
195190 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)])
191+ let Q = (((("tasks_" + w) + "_app_") + N) + "_votes")
192+ let R = (((("tasks_" + w) + "_app_") + N) + "_score")
193+ let S = (1 + b(Q))
194+ let T = (y + b(R))
195+ WriteSet([DataEntry(z, y), DataEntry(R, T)])
201196 }
202197 }
203198
204199
205200
206201 @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))
202+func finishApplicantsVoting (w) = {
203+ func U (V,W) = {
204+ let J = (("tasks_" + w) + "_applicants")
205+ let X = split(getStringValue(this, J), ";")
206+ let N = X[V]
207+ let Q = (((("tasks_" + w) + "_app_") + N) + "_votes")
208+ let S = b(Q)
209+ if ((S > 0))
215210 then 1
216- else throw(("not enough votes to make decision on " + J))
211+ else throw(("not enough votes to make decision on " + N))
217212 }
218213
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
214+ func Y (V,W) = {
215+ let J = (("tasks_" + w) + "_applicants")
216+ let X = split(getStringValue(this, J), ";")
217+ let N = X[V]
218+ let Q = (((("tasks_" + w) + "_app_") + N) + "_votes")
219+ let S = b(Q)
220+ let Z = X[W]
221+ let aa = (((("tasks_" + w) + "_app_") + Z) + "_votes")
222+ let ab = b(aa)
223+ if ((S > ab))
224+ then V
225+ else W
231226 }
232227
233228 if (!(l(o.caller)))
234229 then throw("grants working group access only")
235230 else {
236- let Y = g((("tasks_" + r) + "_applicants"))
237- let T = split(Y, ";")
238- if ((size(T) == 0))
231+ let ac = g((("tasks_" + w) + "_applicants"))
232+ let X = split(ac, ";")
233+ if ((size(X) == 0))
239234 then throw("No one has yet responded to the grant")
240235 else {
241- let Z = {
242- let aa = [0, 1]
243- let ab = size(aa)
244- let ac = 0
245- if ((ab == 0))
246- then ac
236+ let ad = {
237+ let ae = [0, 1]
238+ let af = size(ae)
239+ let ag = 0
240+ if ((af == 0))
241+ then ag
247242 else {
248- let ad = U(ac, aa[0])
249- if ((ab == 1))
250- then ad
243+ let ah = Y(ag, ae[0])
244+ if ((af == 1))
245+ then ah
251246 else {
252- let ae = U(ad, aa[1])
253- if ((ab == 2))
254- then ae
247+ let ai = Y(ah, ae[1])
248+ if ((af == 2))
249+ then ai
255250 else {
256- let af = U(ae, aa[2])
251+ let aj = Y(ai, ae[2])
257252 throw("List size exceed 2")
258253 }
259254 }
260255 }
261256 }
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")])
257+ let N = X[ad]
258+ WriteSet([DataEntry((("tasks_" + w) + "_status"), "team_chosen"), DataEntry((("tasks_" + w) + "_performer"), N), DataEntry((((("tasks_" + w) + "_app_") + N) + "_process"), "can_begin")])
264259 }
265260 }
266261 }
267262
268263
269264
270265 @Callable(o)
271-func startWork (r) = {
272- let J = getStringValue(this, (("tasks_" + r) + "_performer"))
273- if ((toString(o.caller) != getStringValue(this, (((("tasks_" + r) + "_app_") + J) + "_leader"))))
266+func startWork (w) = {
267+ let N = getStringValue(this, (("tasks_" + w) + "_performer"))
268+ if ((toString(o.caller) != getStringValue(this, (((("tasks_" + w) + "_app_") + N) + "_leader"))))
274269 then throw("team leader only")
275- else WriteSet([DataEntry((("tasks_" + r) + "_status"), "work_started"), DataEntry((((("tasks_" + r) + "_app_") + J) + "_process"), "work_started")])
270+ else WriteSet([DataEntry((("tasks_" + w) + "_status"), "work_started"), DataEntry((((("tasks_" + w) + "_app_") + N) + "_process"), "work_started")])
276271 }
277272
278273
279274
280275 @Callable(o)
281-func rejectTask (r) = if (!(l(o.caller)))
276+func acceptWorkResult (w) = if (!(l(o.caller)))
282277 then throw("grants working group access only")
283278 else {
284- let J = getStringValue(this, (("tasks_" + r) + "_performer"))
285- WriteSet([DataEntry((("tasks_" + r) + "_status"), "rejected"), DataEntry((((("tasks_" + r) + "_app_") + J) + "_process"), "rejected")])
286- }
287-
288-
289-
290-@Callable(o)
291-func acceptWorkResult (r,ag) = if (!(l(o.caller)))
292- then throw("grants working group access only")
293- else {
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)]))
279+ let ak = b((("tasks_" + w) + "_reward"))
280+ let N = getStringValue(this, (("tasks_" + w) + "_performer"))
281+ let al = getStringValue(this, (((("tasks_" + w) + "_app_") + N) + "_leader"))
282+ ScriptResult(WriteSet([DataEntry((("tasks_" + w) + "_status"), "work_finished"), DataEntry((((("tasks_" + w) + "_app_") + N) + "_process"), "work_finished")]), TransferSet([ScriptTransfer(addressFromStringValue(al), ak, unit)]))
298283 }
299284
300285

github/deemru/w8io/873ac7e 
97.08 ms