tx · CwSf7DCF1EQwasytWJas4K2ZHsosaqdCpqhsLo5GXVm3

3MzSNsJLeYj6Eh6u2QzJrbByPCySgFoCbWC:  -0.01000000 Waves

2019.12.30 17:17 [831928] smart account 3MzSNsJLeYj6Eh6u2QzJrbByPCySgFoCbWC > SELF 0.00000000 Waves

{ "type": 13, "id": "CwSf7DCF1EQwasytWJas4K2ZHsosaqdCpqhsLo5GXVm3", "fee": 1000000, "feeAssetId": null, "timestamp": 1577708396218, "version": 1, "sender": "3MzSNsJLeYj6Eh6u2QzJrbByPCySgFoCbWC", "senderPublicKey": "99sSPZk2SumsopYRh2PAvWL8BHjDhYsY5NspsFGXLnAm", "proofs": [ "3dgQjoyGt54Rt99AV9q56p8wkpo2YFvFTrD5nDgUTxSadEu7TKeE6rdvHEj3TL6xrLbtTMM7mxgkecT3fUJCHmdc" ], "script": "base64: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AAAEdGFzawkAASwAAAACAgAAAAZibG9ja18FAAAABHRhc2sBAAAAEWdldFZhbHVlVGFza0Jsb2NrAAAAAQAAAAR0YXNrCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAPZ2V0S2V5VGFza0Jsb2NrAAAAAQUAAAAEdGFzawEAAAAOZ2V0S2V5VGFza0JhbmsAAAABAAAABHRhc2sJAAEsAAAAAgIAAAAFYmFua18FAAAABHRhc2sBAAAAEGdldFZhbHVlVGFza0JhbmsAAAABAAAABHRhc2sJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAAA5nZXRLZXlUYXNrQmFuawAAAAEFAAAABHRhc2sBAAAAFGdldEtleVRhc2tGcmVlbGFuY2VyAAAAAQAAAAR0YXNrCQABLAAAAAICAAAAC2ZyZWVsYW5jZXJfBQAAAAR0YXNrAQAAABZnZXRWYWx1ZVRhc2tGcmVlbGFuY2VyAAAAAQAAAAR0YXNrCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAUZ2V0S2V5VGFza0ZyZWVsYW5jZXIAAAABBQAAAAR0YXNrAQAAABBnZXRLZXlUYXNrU3RhdHVzAAAAAQAAAAR0YXNrCQABLAAAAAICAAAAB3N0YXR1c18FAAAABHRhc2sBAAAAEmdldFZhbHVlVGFza1N0YXR1cwAAAAEAAAAEdGFzawkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAEGdldEtleVRhc2tTdGF0dXMAAAABBQAAAAR0YXNrAQAAABRnZXRLZXlUYXNrRXhwaXJhdGlvbgAAAAEAAAAEdGFzawkAASwAAAACAgAAABFleHBpcmF0aW9uX2Jsb2NrXwUAAAAEdGFzawEAAAAWZ2V0VmFsdWVUYXNrRXhwaXJhdGlvbgAAAAEAAAAEdGFzawkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFGdldEtleVRhc2tFeHBpcmF0aW9uAAAAAQUAAAAEdGFzawEAAAANZ2V0S2V5VXNlckJpbwAAAAEAAAAHYWNjb3VudAkAASwAAAACAgAAAAl1c2VyX2Jpb18FAAAAB2FjY291bnQBAAAAD2dldFZhbHVlVXNlckJpbwAAAAEAAAAHYWNjb3VudAkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAADWdldEtleVVzZXJCaW8AAAABBQAAAAdhY2NvdW50AQAAABBnZXRLZXlVc2VyU3RhdHVzAAAAAQAAAAdhY2NvdW50CQABLAAAAAICAAAACXVzZXJfc3RzXwUAAAAHYWNjb3VudAEAAAASZ2V0VmFsdWVVc2VyU3RhdHVzAAAAAQAAAAdhY2NvdW50CQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAQZ2V0S2V5VXNlclN0YXR1cwAAAAEFAAAAB2FjY291bnQBAAAAD2dldEtleVVzZXJCbG9jawAAAAEAAAAHYWNjb3VudAkAASwAAAACAgAAAAl1c2VyX2Jsa18FAAAAB2FjY291bnQBAAAAGGdldEtleVRhc2tSZXBvcnRDb21wbGV0ZQAAAAMAAAAKZnJlZWxhbmNlcgAAAAR0YXNrAAAABXN0YWdlCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAADcmNfBQAAAAR0YXNrAgAAAAFfBQAAAApmcmVlbGFuY2VyAgAAAAdfc3RhZ2U6BQAAAAVzdGFnZQEAAAAaZ2V0VmFsdWVUYXNrUmVwb3J0Q29tcGxldGUAAAADAAAACmZyZWVsYW5jZXIAAAAEdGFzawAAAAVzdGFnZQkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAGGdldEtleVRhc2tSZXBvcnRDb21wbGV0ZQAAAAMFAAAACmZyZWVsYW5jZXIFAAAABHRhc2sFAAAABXN0YWdlAQAAABtnZXRLZXlUYXNrUmVwb3J0Q29tcGxldGVDbnQAAAACAAAABHRhc2sAAAAKZnJlZWxhbmNlcgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAHcmNfY250XwUAAAAEdGFzawIAAAABXwUAAAAKZnJlZWxhbmNlcgEAAAAdZ2V0VmFsdWVUYXNrUmVwb3J0Q29tcGxldGVDbnQAAAACAAAABHRhc2sAAAAKZnJlZWxhbmNlcgkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAG2dldEtleVRhc2tSZXBvcnRDb21wbGV0ZUNudAAAAAIFAAAABHRhc2sFAAAACmZyZWVsYW5jZXIBAAAAFGdldEtleURlY3J5YmVCYWxhbmNlAAAAAAIAAAAPZGVjcnliZV9i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dAUAAAAETk9ORQkAAAIAAAABAgAAAA9Vc2VyIG5vdCBzaWdudXAJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAAA1nZXRLZXlVc2VyQmlvAAAAAQUAAAAHYWNjb3VudAUAAAAEZGF0YQUAAAADbmlsAAAAAWkBAAAAEnJlcG9ydENvbXBsZXRlVGFzawAAAAEAAAAEdGFzawQAAAAHYWNjb3VudAkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAVzdGFnZQkAAGQAAAACCQEAAAAdZ2V0VmFsdWVUYXNrUmVwb3J0Q29tcGxldGVDbnQAAAACBQAAAAR0YXNrBQAAAAdhY2NvdW50AAAAAAAAAAABBAAAAAt0YXNrQ3JlYXRvcgkBAAAAEmdldFZhbHVlVGFza0F1dGhvcgAAAAEFAAAABHRhc2sEAAAABnN0YXR1cwkBAAAAEmdldFZhbHVlVGFza1N0YXR1cwAAAAEFAAAABHRhc2sEAAAAFWZyZWVsYW5jZXJNZXNzYWdlc0NudAkBAAAAF2dldFZhbHVlVXNlck1lc3NhZ2VzQ250AAAAAgUAAAAHYWNjb3VudAUAAAALdGFza0NyZWF0b3IEAAAAFWxhc3RGcmVlbGFuY2VyTWVzc2FnZQkBAAAAE2dldFZhbHVlVXNlck1lc3NhZ2UAAAADBQAAAAdhY2NvdW50BQAAAAt0YXNrQ3JlYXRvcgkAAaQAAAABBQAAABVmcmVlbGFuY2VyTWVzc2FnZXNDbnQDCQAAAAAAAAIJAQAAABZnZXRWYWx1ZVRhc2tGcmVlbGFuY2VyAAAAAQUAAAAEdGFzawUAAAAHYWNjb3VudAMJAAAAAAAAAgUAAAAGc3RhdHVzBQAAAApJTlBST0dSRVNTCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAYZ2V0S2V5VGFza1JlcG9ydENvbXBsZXRlAAAAAwUAAAAHYWNjb3VudAUAAAAEdGFzawkAAaQAAAABBQAAAAVzdGFnZQUAAAAVZnJlZWxhbmNlck1lc3NhZ2VzQ250CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAQZ2V0S2V5VGFza1N0YXR1cwAAAAEFAAAABHRhc2sFAAAAB1BFTkRJTkcFAAAAA25pbAMJAAAAAAAAAgUAAAAGc3RhdHVzBQAAAAlDT01QTEVURUQJAAACAAAAAQIAAAAmWW91J3ZlIGFscmVhZHkgYmVlbiBwYWlkIGZvciB5b3VyIHdvcmsJAAACAAAAAQIAAAAdVGhlIHdvcmsgaXMgYXdhaXRpbmcgYXBwcm92YWwDCQAAAAAAAAIJAQAAABZnZXRWYWx1ZVRhc2tGcmVlbGFuY2VyAAAAAQUAAAAEdGFzawUAAAAETk9ORQkAAAIAAAABAgAAABxUYXNrIGZyZWVsYW5jZXIgZG9lc250IGV4aXN0AwkAAAAAAAACCQEAAAASZ2V0VmFsdWVUYXNrQXV0aG9yAAAAAQUAAAAEdGFzawUAAAAHYWNjb3VudAkAAAIAAAABAgAAAA5Zb3UgYXJlIGF1dGhvcgkAAAIAAAABAgAAAAhFcnJvciAjMQAAAAFpAQAAAAphY2NlcHRXb3JrAAAAAgAAAAR0YXNrAAAACGNvbXBsZXRlBAAAAAdhY2NvdW50CQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAB2NyZWF0b3IJAQAAABJnZXRWYWx1ZVRhc2tBdXRob3IAAAABBQAAAAR0YXNrBAAAAApmcmVlbGFuY2VyCQEAAAAWZ2V0VmFsdWVUYXNrRnJlZWxhbmNlcgAAAAEFAAAABHRhc2sEAAAABXN0YWdlCQEAAAAdZ2V0VmFsdWVUYXNrUmVwb3J0Q29tcGxldGVDbnQAAAACBQAAAAR0YXNrBQAAAApmcmVlbGFuY2VyBAAAAAZzdGF0dXMJAQAAABJnZXRWYWx1ZVRhc2tTdGF0dXMAAAABBQAAAAR0YXNrBAAAAARiYW5rCQEAAAAQZ2V0VmFsdWVUYXNrQmFuawAAAAEFAAAABHRhc2sDCQAAAAAAAAIFAAAAB2FjY291bnQFAAAAB2NyZWF0b3IDCQAAAAAAAAIFAAAABnN0YXR1cwUAAAAHUEVORElORwMFAAAACGNvbXBsZXRlCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEGdldEtleVRhc2tTdGF0dXMAAAABBQAAAAR0YXNrBQAAAAlDT01QTEVURUQFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEFAAAACmZyZWVsYW5jZXIFAAAABGJhbmsFAAAABHVuaXQFAAAAA25pbAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEGdldEtleVRhc2tTdGF0dXMAAAABBQAAAAR0YXNrBQAAAApJTlBST0dSRVNTBQAAAANuaWwJAAACAAAAAQIAAAAjRnJlZWxhbmNlciBkb2VzbnQgY29tcGxldGUgdGhlIHRhc2sDCQAAAAAAAAIJAQAAABBnZXRWYWx1ZVRhc2tEYXRhAAAAAQUAAAAEdGFzawUAAAAETk9ORQkAAAIAAAABAgAAABFUYXNrIGRvZXNudCBleGlzdAMJAAAAAAAAAgkBAAAAD2dldFZhbHVlVXNlckJpbwAAAAEFAAAAB2FjY291bnQFAAAABE5PTkUJAAACAAAAAQIAAAARU2VuZGVyIG5vdCBzaWdudXAJAAACAAAAAQIAAAASWW91IGFyZSBub3QgYXV0aG9yAAAAAWkBAAAADG1vdmVEZWFkbGluZQAAAAIAAAAEdGFzawAAAAhkZWFkbGluZQQAAAAHYWNjb3VudAkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAdjcmVhdG9yCQEAAAASZ2V0VmFsdWVUYXNrQXV0aG9yAAAAAQUAAAAEdGFzawQAAAAKZXhwaXJhdGlvbgkBAAAAFmdldFZhbHVlVGFza0V4cGlyYXRpb24AAAABBQAAAAR0YXNrBAAAAAZzdGF0dXMJAQAAABJnZXRWYWx1ZVRhc2tTdGF0dXMAAAABBQAAAAR0YXNrAwkBAAAAAiE9AAAAAgUAAAAGc3RhdHVzBQAAAAlDT01QTEVURUQJAAACAAAAAQIAAAAVVGhlIHRhc2sgaXMgY29tcGxldGVkAwkAAAAAAAACBQAAAAZzdGF0dXMFAAAACUlORElTUFVURQkAAAIAAAABAgAAACpZb3UgY2FuJ3QgY2hhbmdlIHRoZSBkZWFkbGluZSBhdCB0aGlzIHRpbWUDCQEAAAACIT0AAAACBQAAAAdhY2NvdW50BQAAAAdjcmVhdG9yCQAAAgAAAAECAAAAHllvdSBhcmUgbm90IGF1dGhvciBvZiB0aGUgdGFzawMJAABmAAAAAgUAAAAGaGVpZ2h0BQAAAAhkZWFkbGluZQkAAAIAAAABAgAAAChUaGUgZGVhZGxpbmUgbXVzdCBiZSA+IHRoZSBjdXJyZW50IGJsb2NrAwkAAGYAAAACBQAAAApleHBpcmF0aW9uBQAAAAhkZWFkbGluZQkAAAIAAAABAgAAACZUaGUgZGVhZGxpbmUgY2FuIG9ubHkgYmUgbW92ZWQgZm9yd2FyZAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFGdldEtleVRhc2tFeHBpcmF0aW9uAAAAAQUAAAAEdGFzawUAAAAIZGVhZGxpbmUFAAAAA25pbAAAAABljIaS", "chainId": 84, "height": 831928, "spentComplexity": 0 } View: original | compacted Prev: none Next: GKTCPDLEkzRwwP9yaFfsYtUQtnFzqMseywjNoBpjRBj5 Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 3 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let NONE = "none"
5+
6+let FEATURED = "featured"
7+
8+let DAPP = ""
9+
10+let MOD = "mod"
11+
12+let REGISTERED = "registered"
13+
14+let CREATOR = "3MsTLizEg4vqNgD7ZVjhkPaZgsrN11JqzLJ"
15+
16+let INPROGRESS = "in progress"
17+
18+let COMPLETED = "completed"
19+
20+let PENDING = "pending"
21+
22+let INDISPUTE = "in dispute"
23+
24+let REVISION = "revision"
25+
26+let DECRYBEFEE = (2 / 100)
27+
28+let WAVESLET = 100000000
29+
30+func getStrByKey (key) = {
31+ let str = match getString(this, key) {
32+ case a: String =>
33+ a
34+ case _ =>
35+ NONE
36+ }
37+ str
38+ }
39+
40+
41+func getNumberByKey (key) = {
42+ let num = match getInteger(this, key) {
43+ case a: Int =>
44+ a
45+ case _ =>
46+ 0
47+ }
48+ num
49+ }
50+
51+
52+func getKeyUserMessagesCnt (from,to) = ((("msg_cnt_" + from) + "_") + to)
53+
54+
55+func getValueUserMessagesCnt (from,to) = getNumberByKey(getKeyUserMessagesCnt(from, to))
56+
57+
58+func getKeyUserMessage (from,to,id) = ((((("msg_" + from) + "_") + to) + "_id:") + id)
59+
60+
61+func getValueUserMessage (from,to,cnt) = getStrByKey(getKeyUserMessage(from, to, cnt))
62+
63+
64+func getKeyUserMessageBlock (from,to,cnt) = ((((("block_msg_" + from) + "_") + to) + "_id:") + cnt)
65+
66+
67+func getValueUserMessageBlock (from,to,cnt) = getStrByKey(getKeyUserMessageBlock(from, to, cnt))
68+
69+
70+func getKeyTaskData (task) = ("datajson_" + task)
71+
72+
73+func getValueTaskData (task) = getStrByKey(getKeyTaskData(task))
74+
75+
76+func getKeyTaskAuthor (task) = ("author_" + task)
77+
78+
79+func getValueTaskAuthor (task) = getStrByKey(getKeyTaskAuthor(task))
80+
81+
82+func getKeyTaskBlock (task) = ("block_" + task)
83+
84+
85+func getValueTaskBlock (task) = getNumberByKey(getKeyTaskBlock(task))
86+
87+
88+func getKeyTaskBank (task) = ("bank_" + task)
89+
90+
91+func getValueTaskBank (task) = getNumberByKey(getKeyTaskBank(task))
92+
93+
94+func getKeyTaskFreelancer (task) = ("freelancer_" + task)
95+
96+
97+func getValueTaskFreelancer (task) = getStrByKey(getKeyTaskFreelancer(task))
98+
99+
100+func getKeyTaskStatus (task) = ("status_" + task)
101+
102+
103+func getValueTaskStatus (task) = getStrByKey(getKeyTaskStatus(task))
104+
105+
106+func getKeyTaskExpiration (task) = ("expiration_block_" + task)
107+
108+
109+func getValueTaskExpiration (task) = getNumberByKey(getKeyTaskExpiration(task))
110+
111+
112+func getKeyUserBio (account) = ("user_bio_" + account)
113+
114+
115+func getValueUserBio (account) = getStrByKey(getKeyUserBio(account))
116+
117+
118+func getKeyUserStatus (account) = ("user_sts_" + account)
119+
120+
121+func getValueUserStatus (account) = getStrByKey(getKeyUserStatus(account))
122+
123+
124+func getKeyUserBlock (account) = ("user_blk_" + account)
125+
126+
127+func getKeyTaskReportComplete (freelancer,task,stage) = ((((("rc_" + task) + "_") + freelancer) + "_stage:") + stage)
128+
129+
130+func getValueTaskReportComplete (freelancer,task,stage) = getStrByKey(getKeyTaskReportComplete(freelancer, task, stage))
131+
132+
133+func getKeyTaskReportCompleteCnt (task,freelancer) = ((("rc_cnt_" + task) + "_") + freelancer)
134+
135+
136+func getValueTaskReportCompleteCnt (task,freelancer) = getNumberByKey(getKeyTaskReportCompleteCnt(task, freelancer))
137+
138+
139+func getKeyDecrybeBalance () = "decrybe_balance"
140+
141+
142+func getValueDecrybeBalance () = getNumberByKey(getKeyDecrybeBalance())
143+
144+
145+@Callable(i)
146+func withdrawDecrybeBalance (amount) = {
147+ let account = toBase58String(i.caller.bytes)
148+ let balance = getValueDecrybeBalance()
149+ if ((account == CREATOR))
150+ then if ((balance >= amount))
151+ then TransferSet([ScriptTransfer(addressFromStringValue(account), amount, unit)])
152+ else throw(("You cannot withdraw an amount greater than " + toString(balance)))
153+ else throw("You can't do that")
154+ }
155+
156+
157+
158+@Callable(i)
159+func createTask (task,expiration,data) = {
160+ let account = toBase58String(i.caller.bytes)
161+ let pmt = extract(i.payment)
162+ let pmtAmount = pmt.amount
163+ let payment = ((pmtAmount / ((1 * WAVESLET) + DECRYBEFEE)) * WAVESLET)
164+ let commission = (pmtAmount - payment)
165+ if (isDefined(pmt.assetId))
166+ then throw("Can use waves only at the moment")
167+ else if ((pmtAmount == 0))
168+ then throw("Amount must be higher then 0")
169+ else if ((getValueTaskAuthor(task) != NONE))
170+ then throw("Task already exist")
171+ else if ((getValueUserBio(account) == NONE))
172+ then throw("User not signup")
173+ else WriteSet([DataEntry(getKeyTaskAuthor(task), account), DataEntry(getKeyTaskBlock(task), height), DataEntry(getKeyTaskExpiration(task), (height + expiration)), DataEntry(getKeyTaskBank(task), payment), DataEntry(getKeyTaskStatus(task), FEATURED), DataEntry(getKeyTaskData(task), data), DataEntry(getKeyDecrybeBalance(), (getValueDecrybeBalance() + commission))])
174+ }
175+
176+
177+
178+@Callable(i)
179+func signUp (data) = {
180+ let account = toBase58String(i.caller.bytes)
181+ if ((getValueUserBio(account) != NONE))
182+ then throw("User already exist")
183+ else WriteSet([DataEntry(getKeyUserBio(account), data), DataEntry(getKeyUserBlock(account), height), DataEntry(getKeyUserStatus(account), REGISTERED)])
184+ }
185+
186+
187+
188+@Callable(i)
189+func hireFreelancer (task,freelancer) = {
190+ let account = toBase58String(i.caller.bytes)
191+ if ((getValueTaskData(task) == NONE))
192+ then throw("Task doesnt exist")
193+ else if ((getValueUserBio(account) == NONE))
194+ then throw("Customer not signup")
195+ else if ((getValueUserBio(freelancer) == NONE))
196+ then throw("Freelancer not signup")
197+ else if ((getValueTaskAuthor(task) != account))
198+ then throw("You're not author")
199+ else if ((getValueTaskStatus(task) == INPROGRESS))
200+ then throw("Freelancer is no longer required (the task is already in progress)")
201+ else if ((freelancer == account))
202+ then throw("You can't hire yourself")
203+ else WriteSet([DataEntry(getKeyTaskFreelancer(task), freelancer), DataEntry(getKeyTaskStatus(task), INPROGRESS)])
204+ }
205+
206+
207+
208+@Callable(i)
209+func sendMessage (task,to,message) = {
210+ let account = toBase58String(i.caller.bytes)
211+ let cnt = (getValueUserMessagesCnt(account, to) + 1)
212+ if ((getValueTaskData(task) == NONE))
213+ then throw("Task doesnt exist")
214+ else if ((account == to))
215+ then throw("You can't send messages to yourself")
216+ else if ((getValueUserBio(account) == NONE))
217+ then throw("Sender not signup")
218+ else if ((getValueUserBio(to) == NONE))
219+ then throw("Recipient not singup")
220+ else WriteSet([DataEntry(getKeyUserMessagesCnt(account, to), cnt), DataEntry(getKeyUserMessage(account, to, toString(cnt)), message), DataEntry(getKeyUserMessageBlock(account, to, toString(cnt)), height)])
221+ }
222+
223+
224+
225+@Callable(i)
226+func taskUpdate (task,data) = {
227+ let account = toBase58String(i.caller.bytes)
228+ if ((getValueTaskData(task) == NONE))
229+ then throw("Task doesnt exist")
230+ else if ((getValueTaskAuthor(task) != account))
231+ then throw("You're not author")
232+ else if ((getValueTaskStatus(task) == INPROGRESS))
233+ then throw("Editing tasks is not available after hiring a freelancer")
234+ else WriteSet([DataEntry(getKeyTaskData(task), data)])
235+ }
236+
237+
238+
239+@Callable(i)
240+func userUpdate (data) = {
241+ let account = toBase58String(i.caller.bytes)
242+ if ((getValueUserBio(account) == NONE))
243+ then throw("User not signup")
244+ else WriteSet([DataEntry(getKeyUserBio(account), data)])
245+ }
246+
247+
248+
249+@Callable(i)
250+func reportCompleteTask (task) = {
251+ let account = toBase58String(i.caller.bytes)
252+ let stage = (getValueTaskReportCompleteCnt(task, account) + 1)
253+ let taskCreator = getValueTaskAuthor(task)
254+ let status = getValueTaskStatus(task)
255+ let freelancerMessagesCnt = getValueUserMessagesCnt(account, taskCreator)
256+ let lastFreelancerMessage = getValueUserMessage(account, taskCreator, toString(freelancerMessagesCnt))
257+ if ((getValueTaskFreelancer(task) == account))
258+ then if ((status == INPROGRESS))
259+ then WriteSet([DataEntry(getKeyTaskReportComplete(account, task, toString(stage)), freelancerMessagesCnt), DataEntry(getKeyTaskStatus(task), PENDING)])
260+ else if ((status == COMPLETED))
261+ then throw("You've already been paid for your work")
262+ else throw("The work is awaiting approval")
263+ else if ((getValueTaskFreelancer(task) == NONE))
264+ then throw("Task freelancer doesnt exist")
265+ else if ((getValueTaskAuthor(task) == account))
266+ then throw("You are author")
267+ else throw("Error #1")
268+ }
269+
270+
271+
272+@Callable(i)
273+func acceptWork (task,complete) = {
274+ let account = toBase58String(i.caller.bytes)
275+ let creator = getValueTaskAuthor(task)
276+ let freelancer = getValueTaskFreelancer(task)
277+ let stage = getValueTaskReportCompleteCnt(task, freelancer)
278+ let status = getValueTaskStatus(task)
279+ let bank = getValueTaskBank(task)
280+ if ((account == creator))
281+ then if ((status == PENDING))
282+ then if (complete)
283+ then ScriptResult(WriteSet([DataEntry(getKeyTaskStatus(task), COMPLETED)]), TransferSet([ScriptTransfer(addressFromStringValue(freelancer), bank, unit)]))
284+ else WriteSet([DataEntry(getKeyTaskStatus(task), INPROGRESS)])
285+ else throw("Freelancer doesnt complete the task")
286+ else if ((getValueTaskData(task) == NONE))
287+ then throw("Task doesnt exist")
288+ else if ((getValueUserBio(account) == NONE))
289+ then throw("Sender not signup")
290+ else throw("You are not author")
291+ }
292+
293+
294+
295+@Callable(i)
296+func moveDeadline (task,deadline) = {
297+ let account = toBase58String(i.caller.bytes)
298+ let creator = getValueTaskAuthor(task)
299+ let expiration = getValueTaskExpiration(task)
300+ let status = getValueTaskStatus(task)
301+ if ((status != COMPLETED))
302+ then throw("The task is completed")
303+ else if ((status == INDISPUTE))
304+ then throw("You can't change the deadline at this time")
305+ else if ((account != creator))
306+ then throw("You are not author of the task")
307+ else if ((height > deadline))
308+ then throw("The deadline must be > the current block")
309+ else if ((expiration > deadline))
310+ then throw("The deadline can only be moved forward")
311+ else WriteSet([DataEntry(getKeyTaskExpiration(task), deadline)])
312+ }
313+
314+

github/deemru/w8io/3ef1775 
37.70 ms