tx · BzLDAiFw74yJHL88bsWeVxL3LNFiL3j3PUXYeYkDUZNV 3N3PDiDHb1AJU8tTXJLcvoDNP29fdGNNWqs: -0.05000000 Waves 2019.12.25 11:04 [824264] smart account 3N3PDiDHb1AJU8tTXJLcvoDNP29fdGNNWqs > SELF 0.00000000 Waves
{ "type": 13, "id": "BzLDAiFw74yJHL88bsWeVxL3LNFiL3j3PUXYeYkDUZNV", "fee": 5000000, "feeAssetId": null, "timestamp": 1577257457538, "version": 1, "sender": "3N3PDiDHb1AJU8tTXJLcvoDNP29fdGNNWqs", "senderPublicKey": "5uHVezdnBEVjiWnLWW7VW2bPp8P5h6zdbha2dfHgHytt", "proofs": [ "eB6ktzZ5hdptXLgyXQnSmFL9titZDqX4Mx1aKqjoQxZuWe5iia2SaH9KmJepFZchwdy1W5rMxF8xZoJ1bmHFqci" ], "script": "base64:AAIDAAAAAAAAADQIARIFCgMIAQgSAwoBCBIFCgMICAgSBQoDCAgIEgUKAwgICBIECgIICBIDCgEIEgQKAggEAAAAKQAAAAAETk9ORQIAAAAEbm9uZQAAAAAIRkVBVFVSRUQCAAAACGZlYXR1cmVkAAAAAAREQVBQAgAAAAAAAAAAA01PRAIAAAADbW9kAAAAAApSRUdJU1RFUkVEAgAAAApyZWdpc3RlcmVkAAAAAAVBRE1JTgIAAAAFYWRtaW4AAAAACklOUFJPR1JFU1MCAAAAC2luIHByb2dyZXNzAAAAAAlDT01QTEVURUQCAAAACWNvbXBsZXRlZAAAAAAHUEVORElORwIAAAAHcGVuZGluZwAAAAAJSU5ESVNQVVRFAgAAAAppbiBkaXNwdXRlAAAAAAhSRVZJU0lPTgIAAAAIcmV2aXNpb24AAAAACkRFQ1JZQkVGRUUAAAAAAAAAAAUBAAAAC2dldFN0ckJ5S2V5AAAAAQAAAANrZXkEAAAAA3N0cgQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQUAAAAETk9ORQUAAAADc3RyAQAAAA5nZXROdW1iZXJCeUtleQAAAAEAAAADa2V5BAAAAANudW0EAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAFAAAAA251bQEAAAAVZ2V0S2V5VXNlck1lc3NhZ2VzQ250AAAAAgAAAARmcm9tAAAAAnRvCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhtc2dfY250XwUAAAAEZnJvbQIAAAABXwUAAAACdG8BAAAAF2dldFZhbHVlVXNlck1lc3NhZ2VzQ250AAAAAgAAAARmcm9tAAAAAnRvCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAVZ2V0S2V5VXNlck1lc3NhZ2VzQ250AAAAAgUAAAAEZnJvbQUAAAACdG8BAAAAEWdldEtleVVzZXJNZXNzYWdlAAAAAwAAAARmcm9tAAAAAnRvAAAAAmlkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAEbXNnXwUAAAAEZnJvbQIAAAABXwUAAAACdG8CAAAABF9pZDoFAAAAAmlkAQAAABNnZXRWYWx1ZVVzZXJNZXNzYWdlAAAAAwAAAARmcm9tAAAAAnRvAAAAA2NudAkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAEWdldEtleVVzZXJNZXNzYWdlAAAAAwUAAAAEZnJvbQUAAAACdG8FAAAAA2NudAEAAAAWZ2V0S2V5VXNlck1lc3NhZ2VCbG9jawAAAAMAAAAEZnJvbQAAAAJ0bwAAAANjbnQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAApibG9ja19tc2dfBQAAAARmcm9tAgAAAAFfBQAAAAJ0bwIAAAAEX2lkOgUAAAADY250AQAAABhnZXRWYWx1ZVVzZXJNZXNzYWdlQmxvY2sAAAADAAAABGZyb20AAAACdG8AAAADY250CQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAWZ2V0S2V5VXNlck1lc3NhZ2VCbG9jawAAAAMFAAAABGZyb20FAAAAAnRvBQAAAANjbnQBAAAADmdldEtleVRhc2tEYXRhAAAAAQAAAAR0YXNrCQABLAAAAAICAAAACWRhdGFqc29uXwUAAAAEdGFzawEAAAAQZ2V0VmFsdWVUYXNrRGF0YQAAAAEAAAAEdGFzawkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAADmdldEtleVRhc2tEYXRhAAAAAQUAAAAEdGFzawEAAAAQZ2V0S2V5VGFza0F1dGhvcgAAAAEAAAAEdGFzawkAASwAAAACAgAAAAdhdXRob3JfBQAAAAR0YXNrAQAAABJnZXRWYWx1ZVRhc2tBdXRob3IAAAABAAAABHRhc2sJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABBnZXRLZXlUYXNrQXV0aG9yAAAAAQUAAAAEdGFzawEAAAAPZ2V0S2V5VGFza0Jsb2NrAAAAAQAAAAR0YXNrCQABLAAAAAICAAAABmJsb2NrXwUAAAAEdGFzawEAAAAOZ2V0S2V5VGFza0JhbmsAAAABAAAABHRhc2sJAAEsAAAAAgIAAAAFYmFua18FAAAABHRhc2sBAAAAEGdldFZhbHVlVGFza0JhbmsAAAABAAAABHRhc2sJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAAA5nZXRLZXlUYXNrQmFuawAAAAEFAAAABHRhc2sBAAAAFGdldEtleVRhc2tGcmVlbGFuY2VyAAAAAQAAAAR0YXNrCQABLAAAAAICAAAAC2ZyZWVsYW5jZXJfBQAAAAR0YXNrAQAAABZnZXRWYWx1ZVRhc2tGcmVlbGFuY2VyAAAAAQAAAAR0YXNrCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAUZ2V0S2V5VGFza0ZyZWVsYW5jZXIAAAABBQAAAAR0YXNrAQAAABBnZXRLZXlUYXNrU3RhdHVzAAAAAQAAAAR0YXNrCQABLAAAAAICAAAAB3N0YXR1c18FAAAABHRhc2sBAAAAEmdldFZhbHVlVGFza1N0YXR1cwAAAAEAAAAEdGFzawkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAEGdldEtleVRhc2tTdGF0dXMAAAABBQAAAAR0YXNrAQAAABRnZXRLZXlUYXNrRXhwaXJhdGlvbgAAAAEAAAAEdGFzawkAASwAAAACAgAAABFleHBpcmF0aW9uX2Jsb2NrXwUAAAAEdGFzawEAAAANZ2V0S2V5VXNlckJpbwAAAAEAAAAHYWNjb3VudAkAASwAAAACAgAAAAl1c2VyX2Jpb18FAAAAB2FjY291bnQBAAAAD2dldFZhbHVlVXNlckJpbwAAAAEAAAAHYWNjb3VudAkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAADWdldEtleVVzZXJCaW8AAAABBQAAAAdhY2NvdW50AQAAABBnZXRLZXlVc2VyU3RhdHVzAAAAAQAAAAdhY2NvdW50CQABLAAAAAICAAAACXVzZXJfc3RzXwUAAAAHYWNjb3VudAEAAAASZ2V0VmFsdWVVc2VyU3RhdHVzAAAAAQAAAAdhY2NvdW50CQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAQZ2V0S2V5VXNlclN0YXR1cwAAAAEFAAAAB2FjY291bnQBAAAAD2dldEtleVVzZXJCbG9jawAAAAEAAAAHYWNjb3VudAkAASwAAAACAgAAAAl1c2VyX2Jsa18FAAAAB2FjY291bnQBAAAA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dW50BQAAAAROT05FCQAAAgAAAAECAAAAD1VzZXIgbm90IHNpZ251cAMJAQAAAAIhPQAAAAIFAAAAB2FkZHJlc3MFAAAAB2FjY291bnQJAAACAAAAAQIAAAAcWW91J3JlIG5vdCB0aGUgYWNjb3VudCBvd25lcgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAADWdldEtleVVzZXJCaW8AAAABBQAAAAdhY2NvdW50BQAAAARkYXRhBQAAAANuaWwAAAABaQEAAAAScmVwb3J0Q29tcGxldGVUYXNrAAAAAQAAAAR0YXNrBAAAAAdhY2NvdW50CQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAABXN0YWdlCQAAZAAAAAIJAQAAAB1nZXRWYWx1ZVRhc2tSZXBvcnRDb21wbGV0ZUNudAAAAAIFAAAABHRhc2sFAAAAB2FjY291bnQAAAAAAAAAAAEEAAAAC3Rhc2tDcmVhdG9yCQEAAAASZ2V0VmFsdWVUYXNrQXV0aG9yAAAAAQUAAAAEdGFzawQAAAAVZnJlZWxhbmNlck1lc3NhZ2VzQ250CQEAAAAXZ2V0VmFsdWVVc2VyTWVzc2FnZXNDbnQAAAACBQAAAAdhY2NvdW50BQAAAAt0YXNrQ3JlYXRvcgQAAAAVbGFzdEZyZWVsYW5jZXJNZXNzYWdlCQEAAAATZ2V0VmFsdWVVc2VyTWVzc2FnZQAAAAMFAAAAB2FjY291bnQFAAAAC3Rhc2tDcmVhdG9yCQABpAAAAAEFAAAAFWZyZWVsYW5jZXJNZXNzYWdlc0NudAMJAAAAAAAAAgkBAAAAFmdldFZhbHVlVGFza0ZyZWVsYW5jZXIAAAABBQAAAAR0YXNrBQAAAAdhY2NvdW50CQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAYZ2V0S2V5VGFza1JlcG9ydENvbXBsZXRlAAAAAwUAAAAHYWNjb3VudAUAAAAEdGFzawkAAaQAAAABBQAAAAVzdGFnZQUAAAAVZnJlZWxhbmNlck1lc3NhZ2VzQ250CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAQZ2V0S2V5VGFza1N0YXR1cwAAAAEFAAAABHRhc2sFAAAAB1BFTkRJTkcFAAAAA25pbAMJAAAAAAAAAgkBAAAAFmdldFZhbHVlVGFza0ZyZWVsYW5jZXIAAAABBQAAAAR0YXNrBQAAAAROT05FCQAAAgAAAAECAAAAHFRhc2sgZnJlZWxhbmNlciBkb2VzbnQgZXhpc3QDCQAAAAAAAAIJAQAAABJnZXRWYWx1ZVRhc2tBdXRob3IAAAABBQAAAAR0YXNrBQAAAAdhY2NvdW50CQAAAgAAAAECAAAADllvdSBhcmUgYXV0aG9yCQAAAgAAAAECAAAACEVycm9yICMxAAAAAWkBAAAACmFjY2VwdFdvcmsAAAACAAAABHRhc2sAAAAIY29tcGxldGUEAAAAB2FjY291bnQJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAHY3JlYXRvcgkBAAAAEmdldFZhbHVlVGFza0F1dGhvcgAAAAEFAAAABHRhc2sEAAAACmZyZWVsYW5jZXIJAQAAABZnZXRWYWx1ZVRhc2tGcmVlbGFuY2VyAAAAAQUAAAAEdGFzawQAAAAFc3RhZ2UJAQAAAB1nZXRWYWx1ZVRhc2tSZXBvcnRDb21wbGV0ZUNudAAAAAIFAAAABHRhc2sFAAAACmZyZWVsYW5jZXIEAAAABGJhbmsJAQAAABBnZXRWYWx1ZVRhc2tCYW5rAAAAAQUAAAAEdGFzawQAAAAHcGF5bWVudAkAAGUAAAACBQAAAARiYW5rCQAAaQAAAAIJAABoAAAAAgUAAAAEYmFuawUAAAAKREVDUllCRUZFRQAAAAAAAAAAZAQAAAADcG10CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAFpAAAAB3BheW1lbnQEAAAACXBtdEFtb3VudAgFAAAAA3BtdAAAAAZhbW91bnQDCQAAAAAAAAIFAAAAB2FjY291bnQFAAAAB2NyZWF0b3IDCQEAAAACIT0AAAACBQAAAAVzdGFnZQAAAAAAAAAAAAMFAAAACGNvbXBsZXRlCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEGdldEtleVRhc2tTdGF0dXMAAAABBQAAAAR0YXNrBQAAAAlDT01QTEVURUQFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEFAAAACmZyZWVsYW5jZXIFAAAAB3BheW1lbnQFAAAABHVuaXQFAAAAA25pbAkAAAIAAAABAgAAAAZDYW5jZWwJAAACAAAAAQIAAAAjRnJlZWxhbmNlciBkb2VzbnQgY29tcGxldGUgdGhlIHRhc2sDCQAAAAAAAAIJAQAAABBnZXRWYWx1ZVRhc2tEYXRhAAAAAQUAAAAEdGFzawUAAAAETk9ORQkAAAIAAAABAgAAABFUYXNrIGRvZXNudCBleGlzdAMJAAAAAAAAAgkBAAAAD2dldFZhbHVlVXNlckJpbwAAAAEFAAAAB2FjY291bnQFAAAABE5PTkUJAAACAAAAAQIAAAARU2VuZGVyIG5vdCBzaWdudXAJAAACAAAAAQIAAAASWW91IGFyZSBub3QgYXV0aG9yAAAAAO4clCk=", "chainId": 84, "height": 824264, "spentComplexity": 0 } View: original | compacted Prev: Bey7758WbWZFaU2aLj1ZA8rSVrR6gt9XN6rRcXMdjKVW Next: 8MyAch9Zhr2BkZewoYvZNLhAR4WZFyBpJmRriY9v19y9 Diff:
Old | New | Differences | |
---|---|---|---|
7 | 7 | ||
8 | 8 | let c = "" | |
9 | 9 | ||
10 | - | let d = | |
10 | + | let d = "mod" | |
11 | 11 | ||
12 | - | let e = " | |
12 | + | let e = "registered" | |
13 | 13 | ||
14 | - | let f = " | |
14 | + | let f = "admin" | |
15 | 15 | ||
16 | - | let g = " | |
16 | + | let g = "in progress" | |
17 | 17 | ||
18 | - | let h = " | |
18 | + | let h = "completed" | |
19 | 19 | ||
20 | - | func i (j) = { | |
21 | - | let k = { | |
22 | - | let l = getString(this, j) | |
23 | - | if ($isInstanceOf(l, "String")) | |
20 | + | let i = "pending" | |
21 | + | ||
22 | + | let j = "in dispute" | |
23 | + | ||
24 | + | let k = "revision" | |
25 | + | ||
26 | + | let l = 5 | |
27 | + | ||
28 | + | func m (n) = { | |
29 | + | let o = { | |
30 | + | let p = getString(this, n) | |
31 | + | if ($isInstanceOf(p, "String")) | |
24 | 32 | then { | |
25 | - | let | |
26 | - | | |
33 | + | let q = p | |
34 | + | q | |
27 | 35 | } | |
28 | 36 | else a | |
29 | - | } | |
30 | - | k | |
31 | - | } | |
32 | - | ||
33 | - | ||
34 | - | func n (j) = { | |
35 | - | let o = { | |
36 | - | let l = getInteger(this, j) | |
37 | - | if ($isInstanceOf(l, "Int")) | |
38 | - | then { | |
39 | - | let m = l | |
40 | - | m | |
41 | - | } | |
42 | - | else 0 | |
43 | 37 | } | |
44 | 38 | o | |
45 | 39 | } | |
46 | 40 | ||
47 | 41 | ||
48 | - | func p (q,r) = ((("msg_cnt_" + q) + "_") + r) | |
42 | + | func r (n) = { | |
43 | + | let s = { | |
44 | + | let p = getInteger(this, n) | |
45 | + | if ($isInstanceOf(p, "Int")) | |
46 | + | then { | |
47 | + | let q = p | |
48 | + | q | |
49 | + | } | |
50 | + | else 0 | |
51 | + | } | |
52 | + | s | |
53 | + | } | |
49 | 54 | ||
50 | 55 | ||
51 | - | func | |
56 | + | func t (u,v) = ((("msg_cnt_" + u) + "_") + v) | |
52 | 57 | ||
53 | 58 | ||
54 | - | func | |
59 | + | func w (u,v) = r(t(u, v)) | |
55 | 60 | ||
56 | 61 | ||
57 | - | func | |
62 | + | func x (u,v,y) = ((((("msg_" + u) + "_") + v) + "_id:") + y) | |
58 | 63 | ||
59 | 64 | ||
60 | - | func | |
65 | + | func z (u,v,A) = m(x(u, v, A)) | |
61 | 66 | ||
62 | 67 | ||
63 | - | func | |
68 | + | func B (u,v,A) = ((((("block_msg_" + u) + "_") + v) + "_id:") + A) | |
64 | 69 | ||
65 | 70 | ||
66 | - | func | |
71 | + | func C (u,v,A) = m(B(u, v, A)) | |
67 | 72 | ||
68 | 73 | ||
69 | - | func | |
74 | + | func D (E) = ("datajson_" + E) | |
70 | 75 | ||
71 | 76 | ||
72 | - | func | |
77 | + | func F (E) = m(D(E)) | |
73 | 78 | ||
74 | 79 | ||
75 | - | func | |
80 | + | func G (E) = ("author_" + E) | |
76 | 81 | ||
77 | 82 | ||
78 | - | func | |
83 | + | func H (E) = m(G(E)) | |
79 | 84 | ||
80 | 85 | ||
81 | - | func | |
86 | + | func I (E) = ("block_" + E) | |
82 | 87 | ||
83 | 88 | ||
84 | - | func | |
89 | + | func J (E) = ("bank_" + E) | |
85 | 90 | ||
86 | 91 | ||
87 | - | func | |
92 | + | func K (E) = r(J(E)) | |
88 | 93 | ||
89 | 94 | ||
90 | - | func | |
95 | + | func L (E) = ("freelancer_" + E) | |
91 | 96 | ||
92 | 97 | ||
93 | - | func | |
98 | + | func M (E) = m(L(E)) | |
94 | 99 | ||
95 | 100 | ||
96 | - | func | |
101 | + | func N (E) = ("status_" + E) | |
97 | 102 | ||
98 | 103 | ||
99 | - | func | |
104 | + | func O (E) = m(N(E)) | |
100 | 105 | ||
101 | 106 | ||
102 | - | func | |
107 | + | func P (E) = ("expiration_block_" + E) | |
103 | 108 | ||
104 | 109 | ||
105 | - | func | |
110 | + | func Q (R) = ("user_bio_" + R) | |
106 | 111 | ||
107 | 112 | ||
108 | - | func | |
113 | + | func S (R) = m(Q(R)) | |
109 | 114 | ||
110 | 115 | ||
111 | - | @Callable(Q) | |
112 | - | func createTask (z,R,S) = { | |
113 | - | let L = toBase58String(Q.caller.bytes) | |
114 | - | let T = extract(Q.payment) | |
115 | - | if (isDefined(T.assetId)) | |
116 | + | func T (R) = ("user_sts_" + R) | |
117 | + | ||
118 | + | ||
119 | + | func U (R) = m(T(R)) | |
120 | + | ||
121 | + | ||
122 | + | func V (R) = ("user_blk_" + R) | |
123 | + | ||
124 | + | ||
125 | + | func W (X,E,Y) = ((((("rc_" + E) + "_") + X) + "_stage:") + Y) | |
126 | + | ||
127 | + | ||
128 | + | func Z (X,E,Y) = m(W(X, E, Y)) | |
129 | + | ||
130 | + | ||
131 | + | func aa (E,X) = ((("rc_cnt_" + E) + "_") + X) | |
132 | + | ||
133 | + | ||
134 | + | func ab (E,X) = r(aa(E, X)) | |
135 | + | ||
136 | + | ||
137 | + | @Callable(ac) | |
138 | + | func createTask (E,ad,ae) = { | |
139 | + | let R = toBase58String(ac.caller.bytes) | |
140 | + | let af = extract(ac.payment) | |
141 | + | let ag = af.amount | |
142 | + | if (isDefined(af.assetId)) | |
116 | 143 | then throw("Can use waves only at the moment") | |
117 | - | else if (( | |
118 | - | then throw( | |
119 | - | else if (( | |
144 | + | else if ((ag == 0)) | |
145 | + | then throw("Amount must be higher then 0") | |
146 | + | else if ((H(E) != a)) | |
120 | 147 | then throw("Task already exist") | |
121 | - | else if (( | |
148 | + | else if ((S(R) == a)) | |
122 | 149 | then throw("User not signup") | |
123 | - | else WriteSet([DataEntry( | |
150 | + | else WriteSet([DataEntry(G(E), R), DataEntry(I(E), height), DataEntry(P(E), (height + ad)), DataEntry(J(E), af.amount), DataEntry(N(E), b), DataEntry(D(E), ae)]) | |
124 | 151 | } | |
125 | 152 | ||
126 | 153 | ||
127 | 154 | ||
128 | - | @Callable( | |
129 | - | func signUp ( | |
130 | - | let | |
131 | - | if (( | |
155 | + | @Callable(ac) | |
156 | + | func signUp (ae) = { | |
157 | + | let R = toBase58String(ac.caller.bytes) | |
158 | + | if ((S(R) != a)) | |
132 | 159 | then throw("User already exist") | |
133 | - | else WriteSet([DataEntry( | |
160 | + | else WriteSet([DataEntry(Q(R), ae), DataEntry(V(R), height), DataEntry(T(R), e)]) | |
134 | 161 | } | |
135 | 162 | ||
136 | 163 | ||
137 | 164 | ||
138 | - | @Callable( | |
139 | - | func hireFreelancer ( | |
140 | - | let | |
141 | - | if (( | |
165 | + | @Callable(ac) | |
166 | + | func hireFreelancer (E,X,ae) = { | |
167 | + | let R = toBase58String(ac.caller.bytes) | |
168 | + | if ((F(E) == a)) | |
142 | 169 | then throw("Task doesnt exist") | |
143 | - | else if (( | |
170 | + | else if ((S(R) == a)) | |
144 | 171 | then throw("Customer not signup") | |
145 | - | else if (( | |
172 | + | else if ((S(X) == a)) | |
146 | 173 | then throw("Freelancer not signup") | |
147 | - | else if (( | |
174 | + | else if ((H(E) != R)) | |
148 | 175 | then throw("You're not author") | |
149 | - | else if (( | |
176 | + | else if ((O(E) == g)) | |
150 | 177 | then throw("Freelancer is no longer required (the task is already in progress)") | |
151 | - | else if (( | |
178 | + | else if ((X == R)) | |
152 | 179 | then throw("You can't hire yourself") | |
153 | - | else WriteSet([DataEntry( | |
180 | + | else WriteSet([DataEntry(L(E), X), DataEntry(D(E), ae), DataEntry(N(E), g)]) | |
154 | 181 | } | |
155 | 182 | ||
156 | 183 | ||
157 | 184 | ||
158 | - | @Callable( | |
159 | - | func sendMessage ( | |
160 | - | let | |
161 | - | let | |
162 | - | if (( | |
185 | + | @Callable(ac) | |
186 | + | func sendMessage (E,v,ah) = { | |
187 | + | let R = toBase58String(ac.caller.bytes) | |
188 | + | let A = (w(R, v) + 1) | |
189 | + | if ((F(E) == a)) | |
163 | 190 | then throw("Task doesnt exist") | |
164 | - | else if (( | |
191 | + | else if ((R == v)) | |
165 | 192 | then throw("You can't hire yourself") | |
166 | - | else if (( | |
193 | + | else if ((S(R) == a)) | |
167 | 194 | then throw("Sender not signup") | |
168 | - | else if (( | |
195 | + | else if ((S(v) == a)) | |
169 | 196 | then throw("Recipient not singup") | |
170 | - | else if (( | |
171 | - | then throw(" | |
172 | - | else WriteSet([DataEntry( | |
197 | + | else if ((O(E) == g)) | |
198 | + | then throw("The task is already in progress/pending/completed/in dispute") | |
199 | + | else WriteSet([DataEntry(t(R, v), A), DataEntry(x(R, v, toString(A)), ah), DataEntry(B(R, v, toString(A)), height)]) | |
173 | 200 | } | |
174 | 201 | ||
175 | 202 | ||
176 | 203 | ||
177 | - | @Callable( | |
178 | - | func taskUpdate ( | |
179 | - | let | |
180 | - | if (( | |
204 | + | @Callable(ac) | |
205 | + | func taskUpdate (E,ae,ai) = { | |
206 | + | let R = toBase58String(ac.caller.bytes) | |
207 | + | if ((F(E) == a)) | |
181 | 208 | then throw("Task doesnt exist") | |
182 | - | else if (( | |
209 | + | else if ((H(E) != R)) | |
183 | 210 | then throw("You're not author") | |
184 | - | else if (( | |
211 | + | else if ((O(E) == g)) | |
185 | 212 | then throw("Editing tasks is not available after hiring a freelancer") | |
186 | - | else WriteSet([DataEntry( | |
213 | + | else WriteSet([DataEntry(D(E), ae)]) | |
187 | 214 | } | |
188 | 215 | ||
189 | 216 | ||
190 | 217 | ||
191 | - | @Callable( | |
192 | - | func userUpdate ( | |
193 | - | let | |
194 | - | if (( | |
218 | + | @Callable(ac) | |
219 | + | func userUpdate (aj,ae) = { | |
220 | + | let R = toBase58String(ac.caller.bytes) | |
221 | + | if ((S(R) == a)) | |
195 | 222 | then throw("User not signup") | |
196 | - | else if (( | |
223 | + | else if ((aj != R)) | |
197 | 224 | then throw("You're not the account owner") | |
198 | - | else WriteSet([DataEntry(K(L), S)]) | |
225 | + | else WriteSet([DataEntry(Q(R), ae)]) | |
226 | + | } | |
227 | + | ||
228 | + | ||
229 | + | ||
230 | + | @Callable(ac) | |
231 | + | func reportCompleteTask (E) = { | |
232 | + | let R = toBase58String(ac.caller.bytes) | |
233 | + | let Y = (ab(E, R) + 1) | |
234 | + | let ak = H(E) | |
235 | + | let al = w(R, ak) | |
236 | + | let am = z(R, ak, toString(al)) | |
237 | + | if ((M(E) == R)) | |
238 | + | then WriteSet([DataEntry(W(R, E, toString(Y)), al), DataEntry(N(E), i)]) | |
239 | + | else if ((M(E) == a)) | |
240 | + | then throw("Task freelancer doesnt exist") | |
241 | + | else if ((H(E) == R)) | |
242 | + | then throw("You are author") | |
243 | + | else throw("Error #1") | |
244 | + | } | |
245 | + | ||
246 | + | ||
247 | + | ||
248 | + | @Callable(ac) | |
249 | + | func acceptWork (E,an) = { | |
250 | + | let R = toBase58String(ac.caller.bytes) | |
251 | + | let ao = H(E) | |
252 | + | let X = M(E) | |
253 | + | let Y = ab(E, X) | |
254 | + | let ap = K(E) | |
255 | + | let aq = (ap - ((ap * l) / 100)) | |
256 | + | let af = extract(ac.payment) | |
257 | + | let ag = af.amount | |
258 | + | if ((R == ao)) | |
259 | + | then if ((Y != 0)) | |
260 | + | then if (an) | |
261 | + | then ScriptResult(WriteSet([DataEntry(N(E), h)]), TransferSet([ScriptTransfer(addressFromStringValue(X), aq, unit)])) | |
262 | + | else throw("Cancel") | |
263 | + | else throw("Freelancer doesnt complete the task") | |
264 | + | else if ((F(E) == a)) | |
265 | + | then throw("Task doesnt exist") | |
266 | + | else if ((S(R) == a)) | |
267 | + | then throw("Sender not signup") | |
268 | + | else throw("You are not author") | |
199 | 269 | } | |
200 | 270 | ||
201 | 271 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 3 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "none" | |
5 | 5 | ||
6 | 6 | let b = "featured" | |
7 | 7 | ||
8 | 8 | let c = "" | |
9 | 9 | ||
10 | - | let d = | |
10 | + | let d = "mod" | |
11 | 11 | ||
12 | - | let e = " | |
12 | + | let e = "registered" | |
13 | 13 | ||
14 | - | let f = " | |
14 | + | let f = "admin" | |
15 | 15 | ||
16 | - | let g = " | |
16 | + | let g = "in progress" | |
17 | 17 | ||
18 | - | let h = " | |
18 | + | let h = "completed" | |
19 | 19 | ||
20 | - | func i (j) = { | |
21 | - | let k = { | |
22 | - | let l = getString(this, j) | |
23 | - | if ($isInstanceOf(l, "String")) | |
20 | + | let i = "pending" | |
21 | + | ||
22 | + | let j = "in dispute" | |
23 | + | ||
24 | + | let k = "revision" | |
25 | + | ||
26 | + | let l = 5 | |
27 | + | ||
28 | + | func m (n) = { | |
29 | + | let o = { | |
30 | + | let p = getString(this, n) | |
31 | + | if ($isInstanceOf(p, "String")) | |
24 | 32 | then { | |
25 | - | let | |
26 | - | | |
33 | + | let q = p | |
34 | + | q | |
27 | 35 | } | |
28 | 36 | else a | |
29 | - | } | |
30 | - | k | |
31 | - | } | |
32 | - | ||
33 | - | ||
34 | - | func n (j) = { | |
35 | - | let o = { | |
36 | - | let l = getInteger(this, j) | |
37 | - | if ($isInstanceOf(l, "Int")) | |
38 | - | then { | |
39 | - | let m = l | |
40 | - | m | |
41 | - | } | |
42 | - | else 0 | |
43 | 37 | } | |
44 | 38 | o | |
45 | 39 | } | |
46 | 40 | ||
47 | 41 | ||
48 | - | func p (q,r) = ((("msg_cnt_" + q) + "_") + r) | |
42 | + | func r (n) = { | |
43 | + | let s = { | |
44 | + | let p = getInteger(this, n) | |
45 | + | if ($isInstanceOf(p, "Int")) | |
46 | + | then { | |
47 | + | let q = p | |
48 | + | q | |
49 | + | } | |
50 | + | else 0 | |
51 | + | } | |
52 | + | s | |
53 | + | } | |
49 | 54 | ||
50 | 55 | ||
51 | - | func | |
56 | + | func t (u,v) = ((("msg_cnt_" + u) + "_") + v) | |
52 | 57 | ||
53 | 58 | ||
54 | - | func | |
59 | + | func w (u,v) = r(t(u, v)) | |
55 | 60 | ||
56 | 61 | ||
57 | - | func | |
62 | + | func x (u,v,y) = ((((("msg_" + u) + "_") + v) + "_id:") + y) | |
58 | 63 | ||
59 | 64 | ||
60 | - | func | |
65 | + | func z (u,v,A) = m(x(u, v, A)) | |
61 | 66 | ||
62 | 67 | ||
63 | - | func | |
68 | + | func B (u,v,A) = ((((("block_msg_" + u) + "_") + v) + "_id:") + A) | |
64 | 69 | ||
65 | 70 | ||
66 | - | func | |
71 | + | func C (u,v,A) = m(B(u, v, A)) | |
67 | 72 | ||
68 | 73 | ||
69 | - | func | |
74 | + | func D (E) = ("datajson_" + E) | |
70 | 75 | ||
71 | 76 | ||
72 | - | func | |
77 | + | func F (E) = m(D(E)) | |
73 | 78 | ||
74 | 79 | ||
75 | - | func | |
80 | + | func G (E) = ("author_" + E) | |
76 | 81 | ||
77 | 82 | ||
78 | - | func | |
83 | + | func H (E) = m(G(E)) | |
79 | 84 | ||
80 | 85 | ||
81 | - | func | |
86 | + | func I (E) = ("block_" + E) | |
82 | 87 | ||
83 | 88 | ||
84 | - | func | |
89 | + | func J (E) = ("bank_" + E) | |
85 | 90 | ||
86 | 91 | ||
87 | - | func | |
92 | + | func K (E) = r(J(E)) | |
88 | 93 | ||
89 | 94 | ||
90 | - | func | |
95 | + | func L (E) = ("freelancer_" + E) | |
91 | 96 | ||
92 | 97 | ||
93 | - | func | |
98 | + | func M (E) = m(L(E)) | |
94 | 99 | ||
95 | 100 | ||
96 | - | func | |
101 | + | func N (E) = ("status_" + E) | |
97 | 102 | ||
98 | 103 | ||
99 | - | func | |
104 | + | func O (E) = m(N(E)) | |
100 | 105 | ||
101 | 106 | ||
102 | - | func | |
107 | + | func P (E) = ("expiration_block_" + E) | |
103 | 108 | ||
104 | 109 | ||
105 | - | func | |
110 | + | func Q (R) = ("user_bio_" + R) | |
106 | 111 | ||
107 | 112 | ||
108 | - | func | |
113 | + | func S (R) = m(Q(R)) | |
109 | 114 | ||
110 | 115 | ||
111 | - | @Callable(Q) | |
112 | - | func createTask (z,R,S) = { | |
113 | - | let L = toBase58String(Q.caller.bytes) | |
114 | - | let T = extract(Q.payment) | |
115 | - | if (isDefined(T.assetId)) | |
116 | + | func T (R) = ("user_sts_" + R) | |
117 | + | ||
118 | + | ||
119 | + | func U (R) = m(T(R)) | |
120 | + | ||
121 | + | ||
122 | + | func V (R) = ("user_blk_" + R) | |
123 | + | ||
124 | + | ||
125 | + | func W (X,E,Y) = ((((("rc_" + E) + "_") + X) + "_stage:") + Y) | |
126 | + | ||
127 | + | ||
128 | + | func Z (X,E,Y) = m(W(X, E, Y)) | |
129 | + | ||
130 | + | ||
131 | + | func aa (E,X) = ((("rc_cnt_" + E) + "_") + X) | |
132 | + | ||
133 | + | ||
134 | + | func ab (E,X) = r(aa(E, X)) | |
135 | + | ||
136 | + | ||
137 | + | @Callable(ac) | |
138 | + | func createTask (E,ad,ae) = { | |
139 | + | let R = toBase58String(ac.caller.bytes) | |
140 | + | let af = extract(ac.payment) | |
141 | + | let ag = af.amount | |
142 | + | if (isDefined(af.assetId)) | |
116 | 143 | then throw("Can use waves only at the moment") | |
117 | - | else if (( | |
118 | - | then throw( | |
119 | - | else if (( | |
144 | + | else if ((ag == 0)) | |
145 | + | then throw("Amount must be higher then 0") | |
146 | + | else if ((H(E) != a)) | |
120 | 147 | then throw("Task already exist") | |
121 | - | else if (( | |
148 | + | else if ((S(R) == a)) | |
122 | 149 | then throw("User not signup") | |
123 | - | else WriteSet([DataEntry( | |
150 | + | else WriteSet([DataEntry(G(E), R), DataEntry(I(E), height), DataEntry(P(E), (height + ad)), DataEntry(J(E), af.amount), DataEntry(N(E), b), DataEntry(D(E), ae)]) | |
124 | 151 | } | |
125 | 152 | ||
126 | 153 | ||
127 | 154 | ||
128 | - | @Callable( | |
129 | - | func signUp ( | |
130 | - | let | |
131 | - | if (( | |
155 | + | @Callable(ac) | |
156 | + | func signUp (ae) = { | |
157 | + | let R = toBase58String(ac.caller.bytes) | |
158 | + | if ((S(R) != a)) | |
132 | 159 | then throw("User already exist") | |
133 | - | else WriteSet([DataEntry( | |
160 | + | else WriteSet([DataEntry(Q(R), ae), DataEntry(V(R), height), DataEntry(T(R), e)]) | |
134 | 161 | } | |
135 | 162 | ||
136 | 163 | ||
137 | 164 | ||
138 | - | @Callable( | |
139 | - | func hireFreelancer ( | |
140 | - | let | |
141 | - | if (( | |
165 | + | @Callable(ac) | |
166 | + | func hireFreelancer (E,X,ae) = { | |
167 | + | let R = toBase58String(ac.caller.bytes) | |
168 | + | if ((F(E) == a)) | |
142 | 169 | then throw("Task doesnt exist") | |
143 | - | else if (( | |
170 | + | else if ((S(R) == a)) | |
144 | 171 | then throw("Customer not signup") | |
145 | - | else if (( | |
172 | + | else if ((S(X) == a)) | |
146 | 173 | then throw("Freelancer not signup") | |
147 | - | else if (( | |
174 | + | else if ((H(E) != R)) | |
148 | 175 | then throw("You're not author") | |
149 | - | else if (( | |
176 | + | else if ((O(E) == g)) | |
150 | 177 | then throw("Freelancer is no longer required (the task is already in progress)") | |
151 | - | else if (( | |
178 | + | else if ((X == R)) | |
152 | 179 | then throw("You can't hire yourself") | |
153 | - | else WriteSet([DataEntry( | |
180 | + | else WriteSet([DataEntry(L(E), X), DataEntry(D(E), ae), DataEntry(N(E), g)]) | |
154 | 181 | } | |
155 | 182 | ||
156 | 183 | ||
157 | 184 | ||
158 | - | @Callable( | |
159 | - | func sendMessage ( | |
160 | - | let | |
161 | - | let | |
162 | - | if (( | |
185 | + | @Callable(ac) | |
186 | + | func sendMessage (E,v,ah) = { | |
187 | + | let R = toBase58String(ac.caller.bytes) | |
188 | + | let A = (w(R, v) + 1) | |
189 | + | if ((F(E) == a)) | |
163 | 190 | then throw("Task doesnt exist") | |
164 | - | else if (( | |
191 | + | else if ((R == v)) | |
165 | 192 | then throw("You can't hire yourself") | |
166 | - | else if (( | |
193 | + | else if ((S(R) == a)) | |
167 | 194 | then throw("Sender not signup") | |
168 | - | else if (( | |
195 | + | else if ((S(v) == a)) | |
169 | 196 | then throw("Recipient not singup") | |
170 | - | else if (( | |
171 | - | then throw(" | |
172 | - | else WriteSet([DataEntry( | |
197 | + | else if ((O(E) == g)) | |
198 | + | then throw("The task is already in progress/pending/completed/in dispute") | |
199 | + | else WriteSet([DataEntry(t(R, v), A), DataEntry(x(R, v, toString(A)), ah), DataEntry(B(R, v, toString(A)), height)]) | |
173 | 200 | } | |
174 | 201 | ||
175 | 202 | ||
176 | 203 | ||
177 | - | @Callable( | |
178 | - | func taskUpdate ( | |
179 | - | let | |
180 | - | if (( | |
204 | + | @Callable(ac) | |
205 | + | func taskUpdate (E,ae,ai) = { | |
206 | + | let R = toBase58String(ac.caller.bytes) | |
207 | + | if ((F(E) == a)) | |
181 | 208 | then throw("Task doesnt exist") | |
182 | - | else if (( | |
209 | + | else if ((H(E) != R)) | |
183 | 210 | then throw("You're not author") | |
184 | - | else if (( | |
211 | + | else if ((O(E) == g)) | |
185 | 212 | then throw("Editing tasks is not available after hiring a freelancer") | |
186 | - | else WriteSet([DataEntry( | |
213 | + | else WriteSet([DataEntry(D(E), ae)]) | |
187 | 214 | } | |
188 | 215 | ||
189 | 216 | ||
190 | 217 | ||
191 | - | @Callable( | |
192 | - | func userUpdate ( | |
193 | - | let | |
194 | - | if (( | |
218 | + | @Callable(ac) | |
219 | + | func userUpdate (aj,ae) = { | |
220 | + | let R = toBase58String(ac.caller.bytes) | |
221 | + | if ((S(R) == a)) | |
195 | 222 | then throw("User not signup") | |
196 | - | else if (( | |
223 | + | else if ((aj != R)) | |
197 | 224 | then throw("You're not the account owner") | |
198 | - | else WriteSet([DataEntry(K(L), S)]) | |
225 | + | else WriteSet([DataEntry(Q(R), ae)]) | |
226 | + | } | |
227 | + | ||
228 | + | ||
229 | + | ||
230 | + | @Callable(ac) | |
231 | + | func reportCompleteTask (E) = { | |
232 | + | let R = toBase58String(ac.caller.bytes) | |
233 | + | let Y = (ab(E, R) + 1) | |
234 | + | let ak = H(E) | |
235 | + | let al = w(R, ak) | |
236 | + | let am = z(R, ak, toString(al)) | |
237 | + | if ((M(E) == R)) | |
238 | + | then WriteSet([DataEntry(W(R, E, toString(Y)), al), DataEntry(N(E), i)]) | |
239 | + | else if ((M(E) == a)) | |
240 | + | then throw("Task freelancer doesnt exist") | |
241 | + | else if ((H(E) == R)) | |
242 | + | then throw("You are author") | |
243 | + | else throw("Error #1") | |
244 | + | } | |
245 | + | ||
246 | + | ||
247 | + | ||
248 | + | @Callable(ac) | |
249 | + | func acceptWork (E,an) = { | |
250 | + | let R = toBase58String(ac.caller.bytes) | |
251 | + | let ao = H(E) | |
252 | + | let X = M(E) | |
253 | + | let Y = ab(E, X) | |
254 | + | let ap = K(E) | |
255 | + | let aq = (ap - ((ap * l) / 100)) | |
256 | + | let af = extract(ac.payment) | |
257 | + | let ag = af.amount | |
258 | + | if ((R == ao)) | |
259 | + | then if ((Y != 0)) | |
260 | + | then if (an) | |
261 | + | then ScriptResult(WriteSet([DataEntry(N(E), h)]), TransferSet([ScriptTransfer(addressFromStringValue(X), aq, unit)])) | |
262 | + | else throw("Cancel") | |
263 | + | else throw("Freelancer doesnt complete the task") | |
264 | + | else if ((F(E) == a)) | |
265 | + | then throw("Task doesnt exist") | |
266 | + | else if ((S(R) == a)) | |
267 | + | then throw("Sender not signup") | |
268 | + | else throw("You are not author") | |
199 | 269 | } | |
200 | 270 | ||
201 | 271 |
github/deemru/w8io/873ac7e 75.07 ms ◑![]()