tx · 3Z7waZhQH36wo9FvZwnsg2hsfxhBDwKo8tDGPBcLzmkU 3PQ5smtcz4F9F3rhbj3PX6GBgM4YtPkeHCg: -0.01600000 Waves 2022.09.16 15:57 [3297185] smart account 3PQ5smtcz4F9F3rhbj3PX6GBgM4YtPkeHCg > SELF 0.00000000 Waves
{ "type": 13, "id": "3Z7waZhQH36wo9FvZwnsg2hsfxhBDwKo8tDGPBcLzmkU", "fee": 1600000, "feeAssetId": null, "timestamp": 1663333096221, "version": 2, "chainId": 87, "sender": "3PQ5smtcz4F9F3rhbj3PX6GBgM4YtPkeHCg", "senderPublicKey": "FR8teTy3vHXM8K3qgseLD8fgBc5Rw5ge9NBZQFYYUJYL", "proofs": [ "3uRBnt8mEZht5vYy8KSwV7vB4t1Hc1uhFHHAsg8DprMAdjGuY8G835EGZPgCNgEYWg3Dtwhycy4PXmuP7FTvQ7sn" ], "script": "base64:AAIFAAAAAAAAABIIAhIOCgwIAQEICAgICAEIAQgAAAAiAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIAAAAHYWRkcmVzcwAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWECAAAAAAEAAAAMdHJ5R2V0U3RyaW5nAAAAAQAAAANrZXkJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIFAAAABHRoaXMFAAAAA2tleQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAAAx0cnlHZXRTdHJpbmcAAAABAgAAABRzdGF0aWNfb3JhY2xlQWRkcmVzcwEAAAASZ2V0Q2ZNYXN0ZXJBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABZzdGF0aWNfY2ZNYXN0ZXJBZGRyZXNzAQAAABBnZXRCYWNrZW5kUHViS2V5AAAAAAkAAlkAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAAUc3RhdGljX2JhY2tlbmRQdWJLZXkAAAAAD2tUb3RhbExpcXVpZGl0eQIAAAAPdG90YWxfbGlxdWlkaXR5AAAAAAxrSW5pdGlhbGl6ZWQCAAAAC0lOSVRJQUxJWkVEAAAAABNrTGlxdWlkaXR5VGhyZXNob2xkAgAAABNMSVFVSURJVFlfVEhSRVNIT0xEAAAAABFrVG90YWxTaGFyZVRva2VucwIAAAASdG90YWxfc2hhcmVfdG9rZW5zAAAAAA1rU2hhcmVBc3NldElkAgAAAA5TSEFSRV9BU1NFVF9JRAAAAAAOa0luY3ViYXRvckRhcHACAAAADklOQ1VCQVRPUl9EQVBQAAAAAAxrQnJlZWRlckRhcHACAAAADEJSRUVERVJfREFQUAAAAAAMa0Zhcm1pbmdEYXBwAgAAAAxGQVJNSU5HX0RBUFAAAAAAEGtNYXJrZXRQ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", "height": 3297185, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EBHYGU2nsF4KtDqGz2ffnYu6v5FB3DK8eaRUhpXqrAKt Next: HFGjJpWMUPQQjhv8RhTfZNWQH71ZaeHELoT3Mfc7wqAK Diff:
Old | New | Differences | |
---|---|---|---|
189 | 189 | ||
190 | 190 | ||
191 | 191 | func ai (aj,ak,al,ab,X,am,an,ao) = { | |
192 | - | let ap = makeString([X, ak, aj, al, toString(ab), toString(am)], ";") | |
193 | - | let aq = 3600000 | |
194 | - | if (!(sigVerify_8Kb(toBytes(ap), fromBase58String(an), i()))) | |
195 | - | then throw(((("MCACS: Invalid proof from backend key" + toBase58String(i())) + " ") + ap)) | |
192 | + | let ap = contains(al, "ART") | |
193 | + | let aq = if (ap) | |
194 | + | then makeString([al, toString(ab), toString(am)], ";") | |
195 | + | else makeString([X, ak, aj, al, toString(ab), toString(am)], ";") | |
196 | + | let ar = 3600000 | |
197 | + | if (!(sigVerify_8Kb(toBytes(aq), fromBase58String(an), i()))) | |
198 | + | then throw(((("MCACS: Invalid proof from backend key" + toBase58String(i())) + " ") + aq)) | |
196 | 199 | else { | |
197 | - | let | |
198 | - | if (( | |
200 | + | let as = lastBlock.timestamp | |
201 | + | if ((as > (am + ar))) | |
199 | 202 | then throw("MCACS: Outdated signature!") | |
200 | 203 | else { | |
201 | - | let as = R(fromBase58String(ao)) | |
202 | - | let at = (as - parseIntValue(split(X, ".")[0])) | |
203 | - | if (if ((-5 > at)) | |
204 | - | then true | |
205 | - | else (at > 5)) | |
206 | - | then throw(((((("MCACS: It seems not the correct price info was passed! " + toString(as)) + " ") + X) + " ") + toString(at))) | |
204 | + | let at = R(fromBase58String(ao)) | |
205 | + | if (ap) | |
206 | + | then { | |
207 | + | let au = (at - parseIntValue(split(X, ".")[0])) | |
208 | + | if (if ((-5 > au)) | |
209 | + | then true | |
210 | + | else (au > 5)) | |
211 | + | then throw(((((("MCACS: It seems not the correct price info was passed! " + toString(at)) + " ") + X) + " ") + toString(au))) | |
212 | + | else ab | |
213 | + | } | |
207 | 214 | else ab | |
208 | 215 | } | |
209 | 216 | } | |
210 | 217 | } | |
211 | 218 | ||
212 | 219 | ||
213 | - | @Callable( | |
214 | - | func callMarketplaceProxy ( | |
215 | - | let | |
216 | - | if ((B(h(), ("farm_" + toString( | |
220 | + | @Callable(av) | |
221 | + | func callMarketplaceProxy (aw,ax,ay,az,aA,aj,ak,al,ab,X,am,an) = { | |
222 | + | let aB = addressFromStringValue(D()) | |
223 | + | if ((B(h(), ("farm_" + toString(av.caller))) != true)) | |
217 | 224 | then throw("_301=") | |
218 | - | else if (( | |
225 | + | else if ((aw == "initAuction")) | |
219 | 226 | then { | |
220 | - | let aB = value(au.payments[0]) | |
221 | - | let aC = ai(aj, ak, al, ab, X, am, an, toBase58String(value(aB.assetId))) | |
222 | - | let aD = fraction(aC, 15, 100) | |
223 | - | let aE = aw | |
227 | + | let aC = value(av.payments[0]) | |
228 | + | let aD = ai(aj, ak, al, ab, X, am, an, toBase58String(value(aC.assetId))) | |
229 | + | let aE = fraction(aD, 15, 100) | |
224 | 230 | let aF = ax | |
225 | - | if (if (((aC - aD) > aE)) | |
231 | + | let aG = ay | |
232 | + | if (if (((aD - aE) > aF)) | |
226 | 233 | then true | |
227 | - | else ( | |
228 | - | then throw(((((("Price is too low, avg price: " + toString( | |
229 | - | else if ((value( | |
234 | + | else (aF > aG)) | |
235 | + | then throw(((((("Price is too low, avg price: " + toString(aD)) + ", min. price: ") + toString((aD - aE))) + ", your bid: ") + toString(aF))) | |
236 | + | else if ((value(aC.amount) != 1)) | |
230 | 237 | then throw("_103") | |
231 | 238 | else { | |
232 | - | let | |
233 | - | if (( | |
234 | - | then [StringEntry(("tx_" + toBase58String( | |
239 | + | let aH = invoke(aB, "initAuction", [aF, aG, az, aA], [AttachedPayment(value(aC.assetId), 1)]) | |
240 | + | if ((aH == aH)) | |
241 | + | then [StringEntry(("tx_" + toBase58String(av.transactionId)), toBase58String(value(aC.assetId)))] | |
235 | 242 | else throw("Strict value is not equal to itself.") | |
236 | 243 | } | |
237 | 244 | } | |
238 | - | else if (( | |
245 | + | else if ((aw == "placeBid")) | |
239 | 246 | then { | |
240 | - | let ae = | |
241 | - | let | |
242 | - | let | |
243 | - | let | |
244 | - | let | |
245 | - | if (( | |
246 | - | then throw(((((("Price is too high, avg price: " + toString( | |
247 | - | else if ((size( | |
247 | + | let ae = az | |
248 | + | let aI = ad(ae) | |
249 | + | let aJ = value(value(av.payments[0]).amount) | |
250 | + | let aD = ai(aj, ak, al, ab, X, am, an, aI) | |
251 | + | let aE = fraction(aD, 15, 100) | |
252 | + | if ((aJ > (aD + aE))) | |
253 | + | then throw(((((("Price is too high, avg price: " + toString(aD)) + ", max. price: ") + toString((aD + aE))) + ", your bid: ") + toString(aJ))) | |
254 | + | else if ((size(av.payments) != 1)) | |
248 | 255 | then throw("_103") | |
249 | 256 | else { | |
250 | - | let | |
251 | - | if (( | |
252 | - | then [StringEntry(("tx_" + toBase58String( | |
257 | + | let aK = invoke(aB, "placeBid", [ae], [AttachedPayment(unit, aJ)]) | |
258 | + | if ((aK == aK)) | |
259 | + | then [StringEntry(("tx_" + toBase58String(av.transactionId)), ae)] | |
253 | 260 | else throw("Strict value is not equal to itself.") | |
254 | 261 | } | |
255 | 262 | } | |
256 | - | else if (( | |
263 | + | else if ((aw == "acceptBid")) | |
257 | 264 | then { | |
258 | - | let ae = | |
259 | - | let ah = | |
260 | - | let | |
261 | - | let | |
262 | - | let | |
263 | - | let | |
264 | - | if ((( | |
265 | - | then throw(((((("Price is too low, avg price: " + toString( | |
265 | + | let ae = az | |
266 | + | let ah = aA | |
267 | + | let aI = ad(ae) | |
268 | + | let aJ = ag(ae, ah) | |
269 | + | let aD = ai(aj, ak, al, ab, X, am, an, aI) | |
270 | + | let aE = fraction(aD, 15, 100) | |
271 | + | if (((aD - aE) > aJ)) | |
272 | + | then throw(((((("Price is too low, avg price: " + toString(aD)) + ", min. price: ") + toString((aD - aE))) + ", your bid: ") + toString(aJ))) | |
266 | 273 | else { | |
267 | - | let | |
268 | - | if (( | |
269 | - | then [StringEntry(("tx_" + toBase58String( | |
274 | + | let aL = invoke(aB, "acceptBid", [ae, ah], nil) | |
275 | + | if ((aL == aL)) | |
276 | + | then [StringEntry(("tx_" + toBase58String(av.transactionId)), ae)] | |
270 | 277 | else throw("Strict value is not equal to itself.") | |
271 | 278 | } | |
272 | 279 | } | |
273 | - | else if (( | |
280 | + | else if ((aw == "instantBuy")) | |
274 | 281 | then { | |
275 | - | let ae = | |
276 | - | let | |
277 | - | let | |
278 | - | let | |
279 | - | let | |
280 | - | if (( | |
281 | - | then throw(((((("Price is too high, avg price: " + toString( | |
282 | - | else if ((size( | |
282 | + | let ae = az | |
283 | + | let aI = ad(ae) | |
284 | + | let aJ = value(value(av.payments[0]).amount) | |
285 | + | let aD = ai(aj, ak, al, ab, X, am, an, aI) | |
286 | + | let aE = fraction(aD, 15, 100) | |
287 | + | if ((aJ > (aD + aE))) | |
288 | + | then throw(((((("Price is too high, avg price: " + toString(aD)) + ", max. price: ") + toString((aD + aE))) + ", your bid: ") + toString(aJ))) | |
289 | + | else if ((size(av.payments) != 1)) | |
283 | 290 | then throw("_103") | |
284 | - | else if ((value( | |
291 | + | else if ((value(av.payments[0]).assetId != unit)) | |
285 | 292 | then throw("_104") | |
286 | 293 | else { | |
287 | - | let | |
288 | - | if (( | |
289 | - | then [StringEntry(("tx_" + toBase58String( | |
294 | + | let aM = invoke(aB, "instantBuy", [ae], [AttachedPayment(unit, aJ)]) | |
295 | + | if ((aM == aM)) | |
296 | + | then [StringEntry(("tx_" + toBase58String(av.transactionId)), ae)] | |
290 | 297 | else throw("Strict value is not equal to itself.") | |
291 | 298 | } | |
292 | 299 | } | |
293 | - | else if (( | |
300 | + | else if ((aw == "cancelBid")) | |
294 | 301 | then { | |
295 | - | let ae = | |
296 | - | let ah = | |
297 | - | let | |
298 | - | if (( | |
299 | - | then [StringEntry(("tx_" + toBase58String( | |
302 | + | let ae = az | |
303 | + | let ah = aA | |
304 | + | let aL = invoke(aB, "cancelBid", [ae, ah], nil) | |
305 | + | if ((aL == aL)) | |
306 | + | then [StringEntry(("tx_" + toBase58String(av.transactionId)), ae)] | |
300 | 307 | else throw("Strict value is not equal to itself.") | |
301 | 308 | } | |
302 | - | else if (( | |
309 | + | else if ((aw == "cancelAuction")) | |
303 | 310 | then { | |
304 | - | let ae = | |
305 | - | let | |
306 | - | if (( | |
307 | - | then [StringEntry(("tx_" + toBase58String( | |
311 | + | let ae = az | |
312 | + | let aL = invoke(aB, "cancelAuction", [ae], nil) | |
313 | + | if ((aL == aL)) | |
314 | + | then [StringEntry(("tx_" + toBase58String(av.transactionId)), ae)] | |
308 | 315 | else throw("Strict value is not equal to itself.") | |
309 | 316 | } | |
310 | 317 | else throw("_13") |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | func a (b,c) = { | |
5 | 5 | let d = getString(b, c) | |
6 | 6 | if ($isInstanceOf(d, "String")) | |
7 | 7 | then { | |
8 | 8 | let e = d | |
9 | 9 | e | |
10 | 10 | } | |
11 | 11 | else "" | |
12 | 12 | } | |
13 | 13 | ||
14 | 14 | ||
15 | 15 | func f (c) = a(this, c) | |
16 | 16 | ||
17 | 17 | ||
18 | 18 | func g () = Address(fromBase58String(f("static_oracleAddress"))) | |
19 | 19 | ||
20 | 20 | ||
21 | 21 | func h () = Address(fromBase58String(a(g(), "static_cfMasterAddress"))) | |
22 | 22 | ||
23 | 23 | ||
24 | 24 | func i () = fromBase58String(getStringValue(g(), "static_backendPubKey")) | |
25 | 25 | ||
26 | 26 | ||
27 | 27 | let j = "total_liquidity" | |
28 | 28 | ||
29 | 29 | let k = "INITIALIZED" | |
30 | 30 | ||
31 | 31 | let l = "LIQUIDITY_THRESHOLD" | |
32 | 32 | ||
33 | 33 | let m = "total_share_tokens" | |
34 | 34 | ||
35 | 35 | let n = "SHARE_ASSET_ID" | |
36 | 36 | ||
37 | 37 | let o = "INCUBATOR_DAPP" | |
38 | 38 | ||
39 | 39 | let p = "BREEDER_DAPP" | |
40 | 40 | ||
41 | 41 | let q = "FARMING_DAPP" | |
42 | 42 | ||
43 | 43 | let r = "MARKETPLACE_PROXY_DAPP" | |
44 | 44 | ||
45 | 45 | let s = "AUCTION_DAPP" | |
46 | 46 | ||
47 | 47 | let t = "LOCKED" | |
48 | 48 | ||
49 | 49 | let u = "total_farming_reward" | |
50 | 50 | ||
51 | 51 | let v = "ceo_collected_fee" | |
52 | 52 | ||
53 | 53 | let w = "ceo_fee_overall" | |
54 | 54 | ||
55 | 55 | let x = "to_distribute" | |
56 | 56 | ||
57 | 57 | func y (c) = { | |
58 | 58 | let d = getInteger(this, c) | |
59 | 59 | if ($isInstanceOf(d, "Int")) | |
60 | 60 | then { | |
61 | 61 | let z = d | |
62 | 62 | z | |
63 | 63 | } | |
64 | 64 | else 0 | |
65 | 65 | } | |
66 | 66 | ||
67 | 67 | ||
68 | 68 | func A (c) = { | |
69 | 69 | let d = getBoolean(this, c) | |
70 | 70 | if ($isInstanceOf(d, "Boolean")) | |
71 | 71 | then { | |
72 | 72 | let z = d | |
73 | 73 | z | |
74 | 74 | } | |
75 | 75 | else unit | |
76 | 76 | } | |
77 | 77 | ||
78 | 78 | ||
79 | 79 | func B (e,c) = { | |
80 | 80 | let d = getBoolean(e, c) | |
81 | 81 | if ($isInstanceOf(d, "Boolean")) | |
82 | 82 | then { | |
83 | 83 | let z = d | |
84 | 84 | z | |
85 | 85 | } | |
86 | 86 | else unit | |
87 | 87 | } | |
88 | 88 | ||
89 | 89 | ||
90 | 90 | func C (b,c) = { | |
91 | 91 | let d = getInteger(b, c) | |
92 | 92 | if ($isInstanceOf(d, "Int")) | |
93 | 93 | then { | |
94 | 94 | let z = d | |
95 | 95 | z | |
96 | 96 | } | |
97 | 97 | else 0 | |
98 | 98 | } | |
99 | 99 | ||
100 | 100 | ||
101 | 101 | func D () = a(h(), s) | |
102 | 102 | ||
103 | 103 | ||
104 | 104 | func E (F) = if (contains(F, "0")) | |
105 | 105 | then "" | |
106 | 106 | else F | |
107 | 107 | ||
108 | 108 | ||
109 | 109 | func G (H) = { | |
110 | 110 | let I = a(h(), o) | |
111 | 111 | let J = a(h(), p) | |
112 | 112 | if ((H == "G")) | |
113 | 113 | then fromBase58String(I) | |
114 | 114 | else fromBase58String(J) | |
115 | 115 | } | |
116 | 116 | ||
117 | 117 | ||
118 | 118 | func K (L,H) = { | |
119 | 119 | let M = getIntegerValue(Address(G(H)), (("stats_" + L) + "_quantity")) | |
120 | 120 | let N = pow((10000 / M), 4, 5, 1, 2, FLOOR) | |
121 | 121 | if ((N > 0)) | |
122 | 122 | then N | |
123 | 123 | else 2 | |
124 | 124 | } | |
125 | 125 | ||
126 | 126 | ||
127 | 127 | func O (P) = { | |
128 | 128 | let d = P | |
129 | 129 | if ($isInstanceOf(d, "String")) | |
130 | 130 | then { | |
131 | 131 | let Q = d | |
132 | 132 | Q | |
133 | 133 | } | |
134 | 134 | else throw("wrong type, expected: String") | |
135 | 135 | } | |
136 | 136 | ||
137 | 137 | ||
138 | 138 | func R (S) = { | |
139 | 139 | let J = fromBase58String(a(h(), p)) | |
140 | 140 | let I = fromBase58String(a(h(), o)) | |
141 | 141 | if (if ((value(assetInfo(S)).issuer == Address(J))) | |
142 | 142 | then true | |
143 | 143 | else (value(assetInfo(S)).issuer == Address(I))) | |
144 | 144 | then { | |
145 | 145 | let T = value(assetInfo(S)).name | |
146 | 146 | let H = take(takeRight(T, 2), 1) | |
147 | 147 | let U = O(invoke(Address(J), "getGenFromName", [T], nil)) | |
148 | 148 | if ((U == U)) | |
149 | 149 | then K(U, H) | |
150 | 150 | else throw("Strict value is not equal to itself.") | |
151 | 151 | } | |
152 | 152 | else throw("_20") | |
153 | 153 | } | |
154 | 154 | ||
155 | 155 | ||
156 | 156 | func V (W) = { | |
157 | 157 | let X = R(W) | |
158 | 158 | let J = addressFromStringValue(a(h(), p)) | |
159 | 159 | let Y = C(J, (("asset_" + toBase58String(W)) + "_children")) | |
160 | 160 | let Z = if ((Y > 0)) | |
161 | 161 | then "0" | |
162 | 162 | else "1" | |
163 | 163 | let aa = getInteger(h(), ((("r-" + toString(X)) + "-b-") + Z)) | |
164 | 164 | let d = aa | |
165 | 165 | if ($isInstanceOf(d, "Int")) | |
166 | 166 | then { | |
167 | 167 | let ab = d | |
168 | 168 | let ac = if ((Y > 0)) | |
169 | 169 | then (200000000 * X) | |
170 | 170 | else 18000000000 | |
171 | 171 | if ((ac > ab)) | |
172 | 172 | then ac | |
173 | 173 | else ab | |
174 | 174 | } | |
175 | 175 | else throw((((("There is no price for such duck: " + "r-") + toString(X)) + "-b-") + Z)) | |
176 | 176 | } | |
177 | 177 | ||
178 | 178 | ||
179 | 179 | func ad (ae) = { | |
180 | 180 | let af = D() | |
181 | 181 | a(addressFromStringValue(af), (("auction_" + ae) + "_assetId")) | |
182 | 182 | } | |
183 | 183 | ||
184 | 184 | ||
185 | 185 | func ag (ae,ah) = { | |
186 | 186 | let af = D() | |
187 | 187 | C(addressFromStringValue(af), (((("auction_" + ae) + "_bid_") + ah) + "_amount")) | |
188 | 188 | } | |
189 | 189 | ||
190 | 190 | ||
191 | 191 | func ai (aj,ak,al,ab,X,am,an,ao) = { | |
192 | - | let ap = makeString([X, ak, aj, al, toString(ab), toString(am)], ";") | |
193 | - | let aq = 3600000 | |
194 | - | if (!(sigVerify_8Kb(toBytes(ap), fromBase58String(an), i()))) | |
195 | - | then throw(((("MCACS: Invalid proof from backend key" + toBase58String(i())) + " ") + ap)) | |
192 | + | let ap = contains(al, "ART") | |
193 | + | let aq = if (ap) | |
194 | + | then makeString([al, toString(ab), toString(am)], ";") | |
195 | + | else makeString([X, ak, aj, al, toString(ab), toString(am)], ";") | |
196 | + | let ar = 3600000 | |
197 | + | if (!(sigVerify_8Kb(toBytes(aq), fromBase58String(an), i()))) | |
198 | + | then throw(((("MCACS: Invalid proof from backend key" + toBase58String(i())) + " ") + aq)) | |
196 | 199 | else { | |
197 | - | let | |
198 | - | if (( | |
200 | + | let as = lastBlock.timestamp | |
201 | + | if ((as > (am + ar))) | |
199 | 202 | then throw("MCACS: Outdated signature!") | |
200 | 203 | else { | |
201 | - | let as = R(fromBase58String(ao)) | |
202 | - | let at = (as - parseIntValue(split(X, ".")[0])) | |
203 | - | if (if ((-5 > at)) | |
204 | - | then true | |
205 | - | else (at > 5)) | |
206 | - | then throw(((((("MCACS: It seems not the correct price info was passed! " + toString(as)) + " ") + X) + " ") + toString(at))) | |
204 | + | let at = R(fromBase58String(ao)) | |
205 | + | if (ap) | |
206 | + | then { | |
207 | + | let au = (at - parseIntValue(split(X, ".")[0])) | |
208 | + | if (if ((-5 > au)) | |
209 | + | then true | |
210 | + | else (au > 5)) | |
211 | + | then throw(((((("MCACS: It seems not the correct price info was passed! " + toString(at)) + " ") + X) + " ") + toString(au))) | |
212 | + | else ab | |
213 | + | } | |
207 | 214 | else ab | |
208 | 215 | } | |
209 | 216 | } | |
210 | 217 | } | |
211 | 218 | ||
212 | 219 | ||
213 | - | @Callable( | |
214 | - | func callMarketplaceProxy ( | |
215 | - | let | |
216 | - | if ((B(h(), ("farm_" + toString( | |
220 | + | @Callable(av) | |
221 | + | func callMarketplaceProxy (aw,ax,ay,az,aA,aj,ak,al,ab,X,am,an) = { | |
222 | + | let aB = addressFromStringValue(D()) | |
223 | + | if ((B(h(), ("farm_" + toString(av.caller))) != true)) | |
217 | 224 | then throw("_301=") | |
218 | - | else if (( | |
225 | + | else if ((aw == "initAuction")) | |
219 | 226 | then { | |
220 | - | let aB = value(au.payments[0]) | |
221 | - | let aC = ai(aj, ak, al, ab, X, am, an, toBase58String(value(aB.assetId))) | |
222 | - | let aD = fraction(aC, 15, 100) | |
223 | - | let aE = aw | |
227 | + | let aC = value(av.payments[0]) | |
228 | + | let aD = ai(aj, ak, al, ab, X, am, an, toBase58String(value(aC.assetId))) | |
229 | + | let aE = fraction(aD, 15, 100) | |
224 | 230 | let aF = ax | |
225 | - | if (if (((aC - aD) > aE)) | |
231 | + | let aG = ay | |
232 | + | if (if (((aD - aE) > aF)) | |
226 | 233 | then true | |
227 | - | else ( | |
228 | - | then throw(((((("Price is too low, avg price: " + toString( | |
229 | - | else if ((value( | |
234 | + | else (aF > aG)) | |
235 | + | then throw(((((("Price is too low, avg price: " + toString(aD)) + ", min. price: ") + toString((aD - aE))) + ", your bid: ") + toString(aF))) | |
236 | + | else if ((value(aC.amount) != 1)) | |
230 | 237 | then throw("_103") | |
231 | 238 | else { | |
232 | - | let | |
233 | - | if (( | |
234 | - | then [StringEntry(("tx_" + toBase58String( | |
239 | + | let aH = invoke(aB, "initAuction", [aF, aG, az, aA], [AttachedPayment(value(aC.assetId), 1)]) | |
240 | + | if ((aH == aH)) | |
241 | + | then [StringEntry(("tx_" + toBase58String(av.transactionId)), toBase58String(value(aC.assetId)))] | |
235 | 242 | else throw("Strict value is not equal to itself.") | |
236 | 243 | } | |
237 | 244 | } | |
238 | - | else if (( | |
245 | + | else if ((aw == "placeBid")) | |
239 | 246 | then { | |
240 | - | let ae = | |
241 | - | let | |
242 | - | let | |
243 | - | let | |
244 | - | let | |
245 | - | if (( | |
246 | - | then throw(((((("Price is too high, avg price: " + toString( | |
247 | - | else if ((size( | |
247 | + | let ae = az | |
248 | + | let aI = ad(ae) | |
249 | + | let aJ = value(value(av.payments[0]).amount) | |
250 | + | let aD = ai(aj, ak, al, ab, X, am, an, aI) | |
251 | + | let aE = fraction(aD, 15, 100) | |
252 | + | if ((aJ > (aD + aE))) | |
253 | + | then throw(((((("Price is too high, avg price: " + toString(aD)) + ", max. price: ") + toString((aD + aE))) + ", your bid: ") + toString(aJ))) | |
254 | + | else if ((size(av.payments) != 1)) | |
248 | 255 | then throw("_103") | |
249 | 256 | else { | |
250 | - | let | |
251 | - | if (( | |
252 | - | then [StringEntry(("tx_" + toBase58String( | |
257 | + | let aK = invoke(aB, "placeBid", [ae], [AttachedPayment(unit, aJ)]) | |
258 | + | if ((aK == aK)) | |
259 | + | then [StringEntry(("tx_" + toBase58String(av.transactionId)), ae)] | |
253 | 260 | else throw("Strict value is not equal to itself.") | |
254 | 261 | } | |
255 | 262 | } | |
256 | - | else if (( | |
263 | + | else if ((aw == "acceptBid")) | |
257 | 264 | then { | |
258 | - | let ae = | |
259 | - | let ah = | |
260 | - | let | |
261 | - | let | |
262 | - | let | |
263 | - | let | |
264 | - | if ((( | |
265 | - | then throw(((((("Price is too low, avg price: " + toString( | |
265 | + | let ae = az | |
266 | + | let ah = aA | |
267 | + | let aI = ad(ae) | |
268 | + | let aJ = ag(ae, ah) | |
269 | + | let aD = ai(aj, ak, al, ab, X, am, an, aI) | |
270 | + | let aE = fraction(aD, 15, 100) | |
271 | + | if (((aD - aE) > aJ)) | |
272 | + | then throw(((((("Price is too low, avg price: " + toString(aD)) + ", min. price: ") + toString((aD - aE))) + ", your bid: ") + toString(aJ))) | |
266 | 273 | else { | |
267 | - | let | |
268 | - | if (( | |
269 | - | then [StringEntry(("tx_" + toBase58String( | |
274 | + | let aL = invoke(aB, "acceptBid", [ae, ah], nil) | |
275 | + | if ((aL == aL)) | |
276 | + | then [StringEntry(("tx_" + toBase58String(av.transactionId)), ae)] | |
270 | 277 | else throw("Strict value is not equal to itself.") | |
271 | 278 | } | |
272 | 279 | } | |
273 | - | else if (( | |
280 | + | else if ((aw == "instantBuy")) | |
274 | 281 | then { | |
275 | - | let ae = | |
276 | - | let | |
277 | - | let | |
278 | - | let | |
279 | - | let | |
280 | - | if (( | |
281 | - | then throw(((((("Price is too high, avg price: " + toString( | |
282 | - | else if ((size( | |
282 | + | let ae = az | |
283 | + | let aI = ad(ae) | |
284 | + | let aJ = value(value(av.payments[0]).amount) | |
285 | + | let aD = ai(aj, ak, al, ab, X, am, an, aI) | |
286 | + | let aE = fraction(aD, 15, 100) | |
287 | + | if ((aJ > (aD + aE))) | |
288 | + | then throw(((((("Price is too high, avg price: " + toString(aD)) + ", max. price: ") + toString((aD + aE))) + ", your bid: ") + toString(aJ))) | |
289 | + | else if ((size(av.payments) != 1)) | |
283 | 290 | then throw("_103") | |
284 | - | else if ((value( | |
291 | + | else if ((value(av.payments[0]).assetId != unit)) | |
285 | 292 | then throw("_104") | |
286 | 293 | else { | |
287 | - | let | |
288 | - | if (( | |
289 | - | then [StringEntry(("tx_" + toBase58String( | |
294 | + | let aM = invoke(aB, "instantBuy", [ae], [AttachedPayment(unit, aJ)]) | |
295 | + | if ((aM == aM)) | |
296 | + | then [StringEntry(("tx_" + toBase58String(av.transactionId)), ae)] | |
290 | 297 | else throw("Strict value is not equal to itself.") | |
291 | 298 | } | |
292 | 299 | } | |
293 | - | else if (( | |
300 | + | else if ((aw == "cancelBid")) | |
294 | 301 | then { | |
295 | - | let ae = | |
296 | - | let ah = | |
297 | - | let | |
298 | - | if (( | |
299 | - | then [StringEntry(("tx_" + toBase58String( | |
302 | + | let ae = az | |
303 | + | let ah = aA | |
304 | + | let aL = invoke(aB, "cancelBid", [ae, ah], nil) | |
305 | + | if ((aL == aL)) | |
306 | + | then [StringEntry(("tx_" + toBase58String(av.transactionId)), ae)] | |
300 | 307 | else throw("Strict value is not equal to itself.") | |
301 | 308 | } | |
302 | - | else if (( | |
309 | + | else if ((aw == "cancelAuction")) | |
303 | 310 | then { | |
304 | - | let ae = | |
305 | - | let | |
306 | - | if (( | |
307 | - | then [StringEntry(("tx_" + toBase58String( | |
311 | + | let ae = az | |
312 | + | let aL = invoke(aB, "cancelAuction", [ae], nil) | |
313 | + | if ((aL == aL)) | |
314 | + | then [StringEntry(("tx_" + toBase58String(av.transactionId)), ae)] | |
308 | 315 | else throw("Strict value is not equal to itself.") | |
309 | 316 | } | |
310 | 317 | else throw("_13") | |
311 | 318 | } | |
312 | 319 | ||
313 | 320 |
github/deemru/w8io/3ef1775 103.20 ms ◑![]()