tx · 3hJVF59StJtCd9aic3tCjVnnwwSTMy2pBaRwGWHyqdHd

3MxbH1RatGwgQmBLu6eynV4MNn7A8efTcbq:  -0.01000000 Waves

2020.10.25 00:47 [1235231] smart account 3MxbH1RatGwgQmBLu6eynV4MNn7A8efTcbq > SELF 0.00000000 Waves

{ "type": 13, "id": "3hJVF59StJtCd9aic3tCjVnnwwSTMy2pBaRwGWHyqdHd", "fee": 1000000, "feeAssetId": null, "timestamp": 1603576037356, "version": 2, "chainId": 84, "sender": "3MxbH1RatGwgQmBLu6eynV4MNn7A8efTcbq", "senderPublicKey": "BpsJFZunZbptGnhNwb8oGhmZ7pQffpooiEXFgGUu5QJg", "proofs": [ "56qPyDyjDvi2tVbaCUznw3QUAt9G2Ukh5pBgPQB73UUhoyxTicfqj2LnFRAFZUHutZviEEtRYqk3GUp8fRsGFmLe" ], "script": "base64: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CQABLAAAAAIJAAEsAAAAAgIAAAAGdGFza3NfBQAAAAZ0YXNrSWQCAAAABV9hcHBfBQAAAA50ZWFtSWRlbnRpZmllcgIAAAAGX3ZvdGVzBAAAAA90ZWFtVm90ZXNBbW91bnQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQUAAAASdGVhbVZvdGVzQW1vdW50S2V5BAAAAA90ZWFtMklkZW50aWZpZXIJAAGRAAAAAgUAAAAOYXBwbGljYW50c0xpc3QFAAAABGFpZDIEAAAAE3RlYW0yVm90ZXNBbW91bnRLZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAGdGFza3NfBQAAAAZ0YXNrSWQCAAAABV9hcHBfBQAAAA90ZWFtMklkZW50aWZpZXICAAAABl92b3RlcwQAAAAQdGVhbTJWb3Rlc0Ftb3VudAkBAAAADXRyeUdldEludGVnZXIAAAABBQAAABN0ZWFtMlZvdGVzQW1vdW50S2V5AwkAAGYAAAACBQAAAA90ZWFtVm90ZXNBbW91bnQFAAAAEHRlYW0yVm90ZXNBbW91bnQFAAAAA2FpZAUAAAAEYWlkMgMJAQAAAAEhAAAAAQkBAAAADWlzR3JvdXBNZW1iZXIAAAABCAUAAAABaQAAAAZjYWxsZXIJAAACAAAAAQIAAAAgZ3JhbnRzIHdvcmtpbmcgZ3JvdXAgYWNjZXNzIG9ubHkEAAAADGNob3NlblRlYW1JZAQAAAAPJGxpc3QxMDMyMjEwMzUzCQAETAAAAAIAAAAAAAAAAAAJAARMAAAAAgAAAAAAAAAAAQUAAAADbmlsBAAAAA8kc2l6ZTEwMzIyMTAzNTMJAAGQAAAAAQUAAAAPJGxpc3QxMDMyMjEwMzUzBAAAAA8kYWNjMDEwMzIyMTAzNTMAAAAAAAAAAAADCQAAAAAAAAIFAAAADyRzaXplMTAzMjIxMDM1MwAAAAAAAAAAAAUAAAAPJGFjYzAxMDMyMjEwMzUzBAAAAA8kYWNjMTEwMzIyMTAzNTMJAQAAAAxoYXNNb3JlVm90ZXMAAAACBQAAAA8kYWNjMDEwMzIyMTAzNTMJAAGRAAAAAgUAAAAPJGxpc3QxMDMyMjEwMzUzAAAAAAAAAAAAAwkAAAAAAAACBQAAAA8kc2l6ZTEwMzIyMTAzNTMAAAAAAAAA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", "height": 1235231, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 3 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let QUORUM = 50
5+
6+let WCTid = base58'4zfrrwDVjbGFM8wxbZGriVLY4XJsVD4oNMp21FnDnMAa'
7+
8+func tryGetInteger (key) = {
9+ let val = match getInteger(this, key) {
10+ case b: Int =>
11+ b
12+ case _ =>
13+ 0
14+ }
15+ val
16+ }
17+
18+
19+func isOwner (address) = (address == this)
20+
21+
22+func getGroup () = {
23+ let val = match getString(this, "working_group") {
24+ case b: String =>
25+ b
26+ case _ =>
27+ ""
28+ }
29+ val
30+ }
31+
32+
33+func getMembers () = {
34+ let val = match getString(this, "dao_members") {
35+ case b: String =>
36+ b
37+ case _ =>
38+ ""
39+ }
40+ val
41+ }
42+
43+
44+func isGroupMember (a) = (tryGetInteger((("working_group_member_" + toString(a)) + "_weight")) > 0)
45+
46+
47+func canMemberVote (i) = (tryGetInteger((("dao_member_" + toString(i.caller)) + "_weight")) > 0)
48+
49+
50+@Callable(i)
51+func addDAOMember (memberAddress) = if (!(isOwner(i.caller)))
52+ then throw("access only to the DAO owner")
53+ else {
54+ let group = getMembers()
55+ let newGroup = ((group + ";") + memberAddress)
56+ let groupSize = tryGetInteger("dao_size")
57+ let newGroupSize = (groupSize + 1)
58+ WriteSet([DataEntry("dao_members", newGroup), DataEntry("dao_size", newGroupSize), DataEntry((("dao_member_" + memberAddress) + "_weight"), 1)])
59+ }
60+
61+
62+
63+@Callable(i)
64+func addGroupMember (memberAddress) = if (!(isOwner(i.caller)))
65+ then throw("access only to the DAO owner")
66+ else {
67+ let group = getGroup()
68+ let newGroup = ((group + ";") + memberAddress)
69+ let groupSize = tryGetInteger("working_group_size")
70+ let newGroupSize = (groupSize + 1)
71+ WriteSet([DataEntry("working_group_name", newGroup), DataEntry("working_group_size", newGroupSize), DataEntry((("working_group_member_" + memberAddress) + "_weight"), 1)])
72+ }
73+
74+
75+
76+@Callable(i)
77+func addTask (title) = if (!(isGroupMember(i.caller)))
78+ then throw("grants working group access only")
79+ else WriteSet([DataEntry((("tasks_" + toBase58String(i.transactionId)) + "_title"), title)])
80+
81+
82+
83+@Callable(i)
84+func rateTask (taskId,rate) = if (!(if ((rate == 1))
85+ then true
86+ else (rate == -1)))
87+ then throw("your rate needs to be +1 or -1")
88+ else {
89+ let pmt = extract(i.payment)
90+ if ((pmt.assetId != WCTid))
91+ then throw("you need to vote using WCT")
92+ else {
93+ let weight = pmt.amount
94+ let vote = (rate * weight)
95+ let previousRate = tryGetInteger((("tasks_" + taskId) + "_community_rate"))
96+ ScriptResult(WriteSet([DataEntry((("tasks_" + taskId) + "_community_rate"), (previousRate + vote))]), TransferSet([ScriptTransfer(i.caller, pmt.amount, pmt.assetId)]))
97+ }
98+ }
99+
100+
101+
102+@Callable(i)
103+func addTaskDetails (taskId) = if (!(isGroupMember(i.caller)))
104+ then throw("grants working group access only")
105+ else {
106+ let reward = extract(i.payment).amount
107+ WriteSet([DataEntry((("tasks_" + taskId) + "_reward"), reward), DataEntry((("tasks_" + taskId) + "_status"), "proposed")])
108+ }
109+
110+
111+
112+@Callable(i)
113+func voteForTaskProposal (taskId,voteValue) = if (!(canMemberVote(i)))
114+ then throw("you can't vote")
115+ else if ((getStringValue(this, (("tasks_" + taskId) + "_status")) != "proposed"))
116+ then throw("voting is closed or not started")
117+ else if (if ((voteValue != -1))
118+ then (voteValue != 1)
119+ else false)
120+ then throw("you need to vote 1 or -1")
121+ else {
122+ let voteKey = ((("tasks_" + taskId) + "_voted_") + toString(i.caller))
123+ let previousVote = tryGetInteger(voteKey)
124+ if (!((previousVote == 0)))
125+ then throw("you have already voted")
126+ else {
127+ let votingKey = (("tasks_" + taskId) + "_voting_state")
128+ let votingState = tryGetInteger(votingKey)
129+ let votesAmountKey = (("tasks_" + taskId) + "_voting_amount")
130+ let votesAmountState = (tryGetInteger(votingKey) + 1)
131+ let newVotingState = (votingState + voteValue)
132+ ScriptResult(WriteSet([DataEntry(votingKey, newVotingState), DataEntry(voteKey, voteValue), DataEntry(votesAmountKey, votesAmountState)]), TransferSet([ScriptTransfer(i.caller, 500000, unit)]))
133+ }
134+ }
135+
136+
137+
138+@Callable(i)
139+func finishTaskProposalVoting (taskId) = if ((QUORUM > ((tryGetInteger((("tasks_" + taskId) + "_voting_amount")) * 100) / tryGetInteger("dao_size"))))
140+ then throw((("more than " + toString(QUORUM)) + "% members have to vote before finishing the voting"))
141+ else if (!(isGroupMember(i.caller)))
142+ then throw("grants working group access only")
143+ else {
144+ let votingKey = (("tasks_" + taskId) + "_voting_state")
145+ let votingState = tryGetInteger(votingKey)
146+ if ((votingState > 0))
147+ then {
148+ let votingResult = "ready_to_apply"
149+ WriteSet([DataEntry((("tasks_" + taskId) + "_status"), votingResult)])
150+ }
151+ else {
152+ let votingResult = "rejected"
153+ WriteSet([DataEntry((("tasks_" + taskId) + "_status"), votingResult)])
154+ }
155+ }
156+
157+
158+
159+@Callable(i)
160+func applyForTask (taskId,teamName) = {
161+ let listKey = (("tasks_" + taskId) + "_applicants")
162+ let currentApplicantsList = match getString(this, listKey) {
163+ case b: String =>
164+ b
165+ case _ =>
166+ ""
167+ }
168+ let newApplicantsList = ((currentApplicantsList + ";") + toString(i.caller))
169+ WriteSet([DataEntry((((("tasks_" + taskId) + "_app_") + toString(i.caller)) + "_name"), teamName), DataEntry((((("tasks_" + taskId) + "_app_") + toString(i.caller)) + "_leader"), toString(i.caller)), DataEntry(listKey, newApplicantsList)])
170+ }
171+
172+
173+
174+@Callable(i)
175+func voteForApplicant (taskId,teamIdentifier,voteValue) = if (!(canMemberVote(i)))
176+ then throw("you can't vote")
177+ else {
178+ let voteKey = (((("tasks_" + taskId) + "_vote_") + toString(i.caller)) + teamIdentifier)
179+ let vote = tryGetInteger(voteKey)
180+ if ((vote != 0))
181+ then throw("you have already voted on this team")
182+ else {
183+ let teamVotesAmountKey = (((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_votes")
184+ let teamScoreKey = (((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_score")
185+ let teamVotesAmount = (1 + tryGetInteger(teamVotesAmountKey))
186+ let newTeamScore = (voteValue + tryGetInteger(teamScoreKey))
187+ WriteSet([DataEntry(voteKey, voteValue), DataEntry(teamScoreKey, newTeamScore)])
188+ }
189+ }
190+
191+
192+
193+@Callable(i)
194+func finishApplicantsVoting (taskId) = {
195+ func isApplicantVotedEnough (aid,aid2) = {
196+ let listKey = (("tasks_" + taskId) + "_applicants")
197+ let applicantsList = split(getStringValue(this, listKey), ";")
198+ let teamIdentifier = applicantsList[aid]
199+ let teamVotesAmountKey = (((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_votes")
200+ let teamVotesAmount = tryGetInteger(teamVotesAmountKey)
201+ if ((teamVotesAmount > 0))
202+ then 1
203+ else throw(("not enough votes to make decision on " + teamIdentifier))
204+ }
205+
206+ func hasMoreVotes (aid,aid2) = {
207+ let listKey = (("tasks_" + taskId) + "_applicants")
208+ let applicantsList = split(getStringValue(this, listKey), ";")
209+ let teamIdentifier = applicantsList[aid]
210+ let teamVotesAmountKey = (((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_votes")
211+ let teamVotesAmount = tryGetInteger(teamVotesAmountKey)
212+ let team2Identifier = applicantsList[aid2]
213+ let team2VotesAmountKey = (((("tasks_" + taskId) + "_app_") + team2Identifier) + "_votes")
214+ let team2VotesAmount = tryGetInteger(team2VotesAmountKey)
215+ if ((teamVotesAmount > team2VotesAmount))
216+ then aid
217+ else aid2
218+ }
219+
220+ if (!(isGroupMember(i.caller)))
221+ then throw("grants working group access only")
222+ else {
223+ let chosenTeamId = {
224+ let $list1032210353 = [0, 1]
225+ let $size1032210353 = size($list1032210353)
226+ let $acc01032210353 = 0
227+ if (($size1032210353 == 0))
228+ then $acc01032210353
229+ else {
230+ let $acc11032210353 = hasMoreVotes($acc01032210353, $list1032210353[0])
231+ if (($size1032210353 == 1))
232+ then $acc11032210353
233+ else {
234+ let $acc21032210353 = hasMoreVotes($acc11032210353, $list1032210353[1])
235+ if (($size1032210353 == 2))
236+ then $acc21032210353
237+ else {
238+ let $acc31032210353 = hasMoreVotes($acc21032210353, $list1032210353[2])
239+ throw("List size exceed 2")
240+ }
241+ }
242+ }
243+ }
244+ let listKey = (("tasks_" + taskId) + "_applicants")
245+ let applicantsList = split(getStringValue(this, listKey), ";")
246+ let teamIdentifier = applicantsList[chosenTeamId]
247+ WriteSet([DataEntry((("tasks_" + taskId) + "_status"), "team_chosen"), DataEntry((("tasks_" + taskId) + "_performer"), teamIdentifier), DataEntry((((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_process"), "can_begin")])
248+ }
249+ }
250+
251+
252+
253+@Callable(i)
254+func startWork (taskId) = {
255+ let teamIdentifier = getStringValue(this, (("tasks_" + taskId) + "_performer"))
256+ if ((toString(i.caller) != getStringValue(this, (((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_leader"))))
257+ then throw("team leader only")
258+ else WriteSet([DataEntry((("tasks_" + taskId) + "_status"), "work_started"), DataEntry((((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_process"), "work_started")])
259+ }
260+
261+
262+
263+@Callable(i)
264+func acceptWorkResult (taskId) = if (!(isGroupMember(i.caller)))
265+ then throw("grants working group access only")
266+ else {
267+ let rewardAmount = tryGetInteger((("tasks_" + taskId) + "_reward"))
268+ let teamIdentifier = getStringValue(this, (("tasks_" + taskId) + "_performer"))
269+ let teamAddress = getStringValue(this, (((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_leader"))
270+ ScriptResult(WriteSet([DataEntry((("tasks_" + taskId) + "_status"), "work_finished"), DataEntry((((("tasks_" + taskId) + "_app_") + teamIdentifier) + "_process"), "work_finished")]), TransferSet([ScriptTransfer(addressFromStringValue(teamAddress), rewardAmount, unit)]))
271+ }
272+
273+

github/deemru/w8io/169f3d6 
25.75 ms