tx · BN844neNvaD2xMTH2b19vRXvTX4cxQrMqLeV3kETxEAC

3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph:  -0.01400000 Waves

2021.11.08 18:59 [1782247] smart account 3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph > SELF 0.00000000 Waves

{ "type": 13, "id": "BN844neNvaD2xMTH2b19vRXvTX4cxQrMqLeV3kETxEAC", "fee": 1400000, "feeAssetId": null, "timestamp": 1636387285018, "version": 2, "chainId": 84, "sender": "3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph", "senderPublicKey": "G7cNXePvAHUHmZfXa1eHnvFeH6DuykPC5wm9v9djTKgD", "proofs": [ "5BTrLJL9L3ksehaRqEtqojW9JpBPA8wZCSaQDcjF5UuSMvZv4HKB6eqfphw2Crjij1pzqcZZiF9v6K7qMZKeWERe" ], "script": "base64:AAIFAAAAAAAAACEIAhIAEgYKBBgYGBESBgoECAgBARIAEgMKAQgSBAoCCAEAAAAGAAAAAApkZXBvc2l0RmVlAAAAAAAAAAPoAAAAAA1jb250cm9sbGVyRmVlAAAAAAAAACcQAAAAAAtwbGF0Zm9ybUZlZQAAAAAAAAAnEAAAAAAMYWRtaW5QdWJLZXkxAQAAACDgkMh3M2mpU305XK7y5b9J+9C9m7ycRhB7Y2h8D+QzGgAAAAAMYWRtaW5QdWJLZXkyAQAAACDgkMh3M2mpU305XK7y5b9J+9C9m7ycRhB7Y2h8D+QzGgAAAAAMYWRtaW5QdWJLZXkzAQAAACDgkMh3M2mpU305XK7y5b9J+9C9m7ycRhB7Y2h8D+QzGgAAAAYAAAACYTgBAAAABGluaXQAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAADEzUFBIN3g3aXFvYlc1eml5aVJDaWMxOXJRcUtyNm5QWWFLMV9hc3NldF9iYWxhbmNlAAAAAAAAbdStBQAAAANuaWwAAAABaQEAAAAIYWRkUG9vbHMAAAAEAAAABXBvb2xzAAAAD2xpcXVpZGl0eVRva2VucwAAAA1zZXJ2aWNlVG9rZW5zAAAAFmxpcXVpZGl0eVRva2VuRGVjaW1hbHMDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkKAQAAABBnZW5lcmF0ZVBvb2xLZXlzAAAAAgAAAAthY2N1bXVsYXRlZAAAAARwb29sCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wCAAAADl9hc3NldF9iYWxhbmNlAAAAAAAAAAAABQAAAAthY2N1bXVsYXRlZAoBAAAAHmdlbmVyYXRlUG9vbExpcXVpZGl0eVRva2VuS2V5cwAAAAIAAAALYWNjdW11bGF0ZWQAAAAEcG9vbAQAAAAJcG9vbEluZGV4CQEAAAAFdmFsdWUAAAABCQAETwAAAAIFAAAABXBvb2xzBQAAAARwb29sBAAAAA5saXF1aWRpdHlUb2tlbgkAAZEAAAACBQAAAA9saXF1aWRpdHlUb2tlbnMFAAAACXBvb2xJbmRleAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAEF9saXF1aWRpdHlfdG9rZW4FAAAADmxpcXVpZGl0eVRva2VuBQAAAAthY2N1bXVsYXRlZAoBAAAAHGdlbmVyYXRlUG9vbFNlcnZpY2VUb2tlbktleXMAAAACAAAAC2FjY3VtdWxhdGVkAAAABHBvb2wEAAAACXBvb2xJbmRleAkBAAAABXZhbHVlAAAAAQkABE8AAAACBQAAAAVwb29scwUAAAAEcG9vbAQAAAAObGlxdWlkaXR5VG9rZW4JAAGRAAAAAgUAAAANc2VydmljZVRva2VucwUAAAAJcG9vbEluZGV4CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAAOX3NlcnZpY2VfdG9rZW4FAAAADmxpcXVpZGl0eVRva2VuBQAAAAthY2N1bXVsYXRlZAoBAAAAJWdlbmVyYXRlUG9vbExpcXVpZGl0eVRva2VuRGVjaW1hbEtleXMAAAACAAAAC2FjY3VtdWxhdGVkAAAABHBvb2wEAAAACXBvb2xJbmRleAkBAAAABXZhbHVlAAAAAQkABE8AAAACBQAAAAVwb29scwUAAAAEcG9vbAQAAAAObGlxdWlkaXR5VG9rZW4JAAGRAAAAAgUAAAAWbGlxdWlkaXR5VG9rZW5EZWNpbWFscwUAAAAJcG9vbEluZGV4CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wCAAAADl9zZXJ2aWNlX3Rva2VuBQAAAA5saXF1aWRpdHlUb2tlbgUAAAALYWNjdW11bGF0ZWQKAQAAABZnZW5lcmF0ZVBvb2xBY3RpdmVLZXlzAAAAAgAAAAthY2N1bXVsYXRlZAAAAARwb29sCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAB19hY3RpdmUGBQAAAAthY2N1bXVsYXRlZAQAAAAPcG9vbEJhbGFuY2VLZXlzCgAAAAACJGwFAAAABXBvb2xz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AQUAAAAVbGlxdWlkdXR5QXNzZXRBZGRyZXNzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAVBc3NldAQAAAAFYXNzZXQFAAAAByRtYXRjaDAIBQAAAAVhc3NldAAAAAhkZWNpbWFscwkAAAIAAAABAgAAABBDYW4ndCBmaW5kIGFzc2V0AwkBAAAAAiE9AAAAAgUAAAAVbGlxdWlkdXR5QXNzZXRBZGRyZXNzBQAAAA1hc3NldElkU3RyaW5nCQAAAgAAAAECAAAAL1lvdSBhdHRhY2hlZCB3cm9uZyBsaXF1aWRpdHkgdG9rZW4gZnJvbSBTd29wLmZpBAAAAApwb29sQW1vdW50CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzBQAAAA1wb29sQW1vdW50S2V5BAAAAAp1c2VyQW1vdW50BAAAAAckbWF0Y2gwCQAEHwAAAAEFAAAAEXVzZXJQb29sQW1vdW50S2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAA2ludAUAAAAHJG1hdGNoMAUAAAADaW50BAAAAAdub3RoaW5nBQAAAAckbWF0Y2gwAAAAAAAAAAAABAAAAA1uZXdQb29sQW1vdW50CQAAZAAAAAIFAAAACnBvb2xBbW91bnQFAAAABmFtb3VudAQAAAAUdXNlckFtb3VudFdpdGhvdXRGZWUJAABlAAAAAgkAAGUAAAACBQAAAAZhbW91bnQJAQAAAAhmcmFjdGlvbgAAAAQFAAAABmFtb3VudAAAAAAAAAAAAQUAAAAKZGVwb3NpdEZlZQUAAAAGSEFMRlVQCQEAAAAIZnJhY3Rpb24AAAAEBQAAAAZhbW91bnQAAAAAAAAAAAEFAAAADWNvbnRyb2xsZXJGZWUFAAAABkhBTEZVUAQAAAARbmV3VXNlclBvb2xBbW91bnQJAABkAAAAAgUAAAAKdXNlckFtb3VudAUAAAAUdXNlckFtb3VudFdpdGhvdXRGZWUJAARMAAAAAgkBAAAAB1JlaXNzdWUAAAADCQACWQAAAAEFAAAAEGRBcHBBc3NldEFkZHJlc3MFAAAAFHVzZXJBbW91bnRXaXRob3V0RmVlBgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIF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MAkAA+wAAAABCQACWQAAAAEFAAAAFWxpcXVpZHV0eUFzc2V0QWRkcmVzcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAFQXNzZXQEAAAABWFzc2V0BQAAAAckbWF0Y2gwCAUAAAAFYXNzZXQAAAAIZGVjaW1hbHMJAAACAAAAAQIAAAAQQ2FuJ3QgZmluZCBhc3NldAQAAAAPdXNlckVhcm5lZFRvdGFsCQAAZAAAAAIFAAAACnVzZXJFYXJuZWQFAAAAEHVzZXJFYXJuZWRCZWZvcmUEAAAAEGFtb3VudFdpdGhvdXRGZWUJAABlAAAAAgkAAGUAAAACBQAAAAZhbW91bnQJAQAAAAhmcmFjdGlvbgAAAAQFAAAABmFtb3VudAAAAAAAAAAAAQUAAAALcGxhdGZvcm1GZWUFAAAABkhBTEZVUAkBAAAACGZyYWN0aW9uAAAABAUAAAAGYW1vdW50AAAAAAAAAAABBQAAAA1jb250cm9sbGVyRmVlBQAAAAZIQUxGVVAEAAAADW5ld1Bvb2xBbW91bnQJAABlAAAAAgUAAAAKcG9vbEFtb3VudAUAAAAQYW1vdW50V2l0aG91dEZlZQMJAABnAAAAAgUAAAAKdXNlckFtb3VudAUAAAAGYW1vdW50BAAAABFuZXdVc2VyUG9vbEFtb3VudAkAAGUAAAACBQAAAAp1c2VyQW1vdW50BQAAABBhbW91bnRXaXRob3V0RmVlCQAETAAAAAIJAQAAAARCdXJuAAAAAgkAAlkAAAABBQAAABBkQXBwQXNzZXRBZGRyZXNzBQAAABBhbW91bnRXaXRob3V0RmVlCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAQYW1vdW50V2l0aG91dEZlZQkAAlkAAAABBQAAABVsaXF1aWR1dHlBc3NldEFkZHJlc3MJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADXBvb2xBbW91bnRLZXkFAAAADW5ld1Bvb2xBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEXVzZXJQb29sQW1vdW50S2V5BQAAABFuZXdVc2VyUG9vbEFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAARdXNlclBvb2xFYXJuZWRLZXkFAAAAD3VzZXJFYXJuZWRUb3RhbAUAAAADbmlsCQAAAgAAAAECAAAAJllvdSBoYXZlIG5vdCBzdWNoIGJhbGFuY2UgZm9yIHdpdGhkcmF3AAAAAQAAAAJiNgEAAAACYjcAAAAACQAB9AAAAAMIBQAAAAJiNgAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAmI2AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAmI2AAAAD3NlbmRlclB1YmxpY0tleS3FC4Q=", "height": 1782247, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3e9t4msHvrXRpz7AuNWH3RhouAMEKHZw6Q6fw2sr2t9h Next: BReKKxAw7ZFM7mK6Bo5EWhf6xiTMxXvtBjvvYznWyxwt Diff:
OldNewDifferences
139139 func deposit (o) = {
140140 let N = h.payments[0].amount
141141 let O = h.payments[0].assetId
142- let P = (o + "_asset_balance")
143- let Q = toString(h.caller)
144- let R = (((o + "_") + Q) + "_asset_balance")
145- let S = {
146- let T = getString((o + "_service_token"))
147- if ($isInstanceOf(T, "String"))
142+ let P = {
143+ let Q = O
144+ if ($isInstanceOf(Q, "ByteVector"))
148145 then {
149- let U = T
150- U
146+ let R = Q
147+ toBase58String(R)
151148 }
149+ else throw("Match error")
150+ }
151+ if ((size(h.payments) != 1))
152+ then throw("One attached payment expected")
153+ else if ((0 >= N))
154+ then throw(("Deposit amount must be positive. Actual: " + toString(N)))
152155 else {
153- let V = T
154- throw("You try to exchange on unsupported pool")
156+ let S = (o + "_asset_balance")
157+ let T = toString(h.caller)
158+ let U = (((o + "_") + T) + "_asset_balance")
159+ let V = {
160+ let Q = getString((o + "_service_token"))
161+ if ($isInstanceOf(Q, "String"))
162+ then {
163+ let W = Q
164+ W
165+ }
166+ else {
167+ let X = Q
168+ throw("You try to deposit on unsupported pool")
169+ }
170+ }
171+ let Y = getStringValue(this, (o + "_liquidity_token"))
172+ let Z = {
173+ let Q = assetInfo(fromBase58String(Y))
174+ if ($isInstanceOf(Q, "Asset"))
175+ then {
176+ let aa = Q
177+ aa.decimals
178+ }
179+ else throw("Can't find asset")
180+ }
181+ if ((Y != P))
182+ then throw("You attached wrong liquidity token from Swop.fi")
183+ else {
184+ let ab = getIntegerValue(this, S)
185+ let ac = {
186+ let Q = getInteger(U)
187+ if ($isInstanceOf(Q, "Int"))
188+ then {
189+ let ad = Q
190+ ad
191+ }
192+ else {
193+ let X = Q
194+ 0
195+ }
196+ }
197+ let ae = (ab + N)
198+ let af = ((N - fraction(N, 1, a, HALFUP)) - fraction(N, 1, b, HALFUP))
199+ let ag = (ac + af)
200+[Reissue(fromBase58String(V), af, true), ScriptTransfer(h.caller, af, fromBase58String(V)), IntegerEntry(S, ae), IntegerEntry(U, ag)]
201+ }
155202 }
156- }
157- let W = getIntegerValue(this, P)
158- let X = {
159- let T = getInteger(R)
160- if ($isInstanceOf(T, "Int"))
161- then {
162- let Y = T
163- Y
164- }
165- else {
166- let V = T
167- 0
168- }
169- }
170- let Z = (W + N)
171- let aa = ((N - fraction(N, 1, a, HALFUP)) - fraction(N, 1, b, HALFUP))
172- let ab = (X + aa)
173-[Reissue(fromBase58String(S), aa, true), ScriptTransfer(h.caller, aa, fromBase58String(S)), IntegerEntry(P, Z), IntegerEntry(R, ab)]
174203 }
175204
176205
177206
178207 @Callable(h)
179-func withdraw (o,ac) = {
208+func withdraw (o,ah) = {
180209 let N = h.payments[0].amount
181210 let O = h.payments[0].assetId
182- let P = (o + "_asset_balance")
183- let Q = toString(h.caller)
184- let R = (((o + "_") + Q) + "_asset_balance")
185- let ad = (((o + "_") + Q) + "_earned")
186- let S = {
187- let T = getString((o + "_service_token"))
188- if ($isInstanceOf(T, "String"))
211+ let P = {
212+ let Q = O
213+ if ($isInstanceOf(Q, "ByteVector"))
189214 then {
190- let U = T
191- U
215+ let R = Q
216+ toBase58String(R)
192217 }
218+ else throw("Match error")
219+ }
220+ if ((size(h.payments) != 1))
221+ then throw("One attached payment expected")
222+ else if ((0 >= N))
223+ then throw(("Withdraw amount must be positive. Actual: " + toString(N)))
193224 else {
194- let V = T
195- throw("You try to exchange on unsupported pool")
225+ let S = (o + "_asset_balance")
226+ let T = toString(h.caller)
227+ let U = (((o + "_") + T) + "_asset_balance")
228+ let ai = (((o + "_") + T) + "_earned")
229+ let V = {
230+ let Q = getString((o + "_service_token"))
231+ if ($isInstanceOf(Q, "String"))
232+ then {
233+ let W = Q
234+ W
235+ }
236+ else {
237+ let X = Q
238+ throw("You try to withdraw from unsupported pool")
239+ }
240+ }
241+ if ((V != P))
242+ then throw("You attached an wrong token")
243+ else {
244+ let ab = getIntegerValue(this, S)
245+ let ac = {
246+ let Q = getInteger(U)
247+ if ($isInstanceOf(Q, "Int"))
248+ then {
249+ let ad = Q
250+ ad
251+ }
252+ else {
253+ let X = Q
254+ 0
255+ }
256+ }
257+ let aj = {
258+ let Q = getInteger(ai)
259+ if ($isInstanceOf(Q, "Int"))
260+ then {
261+ let ad = Q
262+ ad
263+ }
264+ else {
265+ let X = Q
266+ 0
267+ }
268+ }
269+ let Y = getStringValue(this, (o + "_liquidity_token"))
270+ let Z = {
271+ let Q = assetInfo(fromBase58String(Y))
272+ if ($isInstanceOf(Q, "Asset"))
273+ then {
274+ let aa = Q
275+ aa.decimals
276+ }
277+ else throw("Can't find asset")
278+ }
279+ let ak = (ah + aj)
280+ let al = ((N - fraction(N, 1, c, HALFUP)) - fraction(N, 1, b, HALFUP))
281+ let ae = (ab - al)
282+ if ((ac >= N))
283+ then {
284+ let ag = (ac - al)
285+[Burn(fromBase58String(V), al), ScriptTransfer(h.caller, al, fromBase58String(Y)), IntegerEntry(S, ae), IntegerEntry(U, ag), IntegerEntry(ai, ak)]
286+ }
287+ else throw("You have not such balance for withdraw")
288+ }
196289 }
197- }
198- let W = getIntegerValue(this, P)
199- let X = {
200- let T = getInteger(R)
201- if ($isInstanceOf(T, "Int"))
202- then {
203- let Y = T
204- Y
205- }
206- else {
207- let V = T
208- 0
209- }
210- }
211- let ae = {
212- let T = getInteger(ad)
213- if ($isInstanceOf(T, "Int"))
214- then {
215- let Y = T
216- Y
217- }
218- else {
219- let V = T
220- 0
221- }
222- }
223- let af = getStringValue(this, (o + "_liquidity_token"))
224- let ag = {
225- let T = assetInfo(fromBase58String(af))
226- if ($isInstanceOf(T, "Asset"))
227- then {
228- let ah = T
229- ah.decimals
230- }
231- else throw("Can't find asset")
232- }
233- let ai = (ac + ae)
234- let aj = ((N - fraction(N, 1, c, HALFUP)) - fraction(N, 1, b, HALFUP))
235- let Z = (W - aj)
236- if ((X >= N))
237- then {
238- let ab = (X - aj)
239-[Burn(fromBase58String(S), aj), ScriptTransfer(h.caller, aj, fromBase58String(af)), IntegerEntry(P, Z), IntegerEntry(R, ab), IntegerEntry(ad, ai)]
240- }
241- else throw("You have not such balance for withdraw")
242290 }
243291
244292
245-@Verifier(ak)
246-func al () = sigVerify(ak.bodyBytes, ak.proofs[0], ak.senderPublicKey)
293+@Verifier(am)
294+func an () = sigVerify(am.bodyBytes, am.proofs[0], am.senderPublicKey)
247295
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 1000
55
66 let b = 10000
77
88 let c = 10000
99
1010 let d = base58'G7cNXePvAHUHmZfXa1eHnvFeH6DuykPC5wm9v9djTKgD'
1111
1212 let e = base58'G7cNXePvAHUHmZfXa1eHnvFeH6DuykPC5wm9v9djTKgD'
1313
1414 let f = base58'G7cNXePvAHUHmZfXa1eHnvFeH6DuykPC5wm9v9djTKgD'
1515
1616 @Callable(g)
1717 func init () = [IntegerEntry("3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1_asset_balance", 7197869)]
1818
1919
2020
2121 @Callable(h)
2222 func addPools (i,j,k,l) = if (containsElement([d, e, f], h.callerPublicKey))
2323 then {
2424 func m (n,o) = IntegerEntry((o + "_asset_balance"), 0) :: n
2525
2626 func p (n,o) = {
2727 let q = value(indexOf(i, o))
2828 let r = j[q]
2929 StringEntry((o + "_liquidity_token"), r) :: n
3030 }
3131
3232 func s (n,o) = {
3333 let q = value(indexOf(i, o))
3434 let r = k[q]
3535 StringEntry((o + "_service_token"), r) :: n
3636 }
3737
3838 func t (n,o) = {
3939 let q = value(indexOf(i, o))
4040 let r = l[q]
4141 IntegerEntry((o + "_service_token"), r) :: n
4242 }
4343
4444 func u (n,o) = BooleanEntry((o + "_active"), true) :: n
4545
4646 let v = {
4747 let w = i
4848 let x = size(w)
4949 let y = nil
5050 func z (A,B) = if ((B >= x))
5151 then A
5252 else m(A, w[B])
5353
5454 func C (A,B) = if ((B >= x))
5555 then A
5656 else throw("List size exceeds 20")
5757
5858 C(z(z(z(z(z(z(z(z(z(z(z(z(z(z(z(z(z(z(z(z(y, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
5959 }
6060 let D = {
6161 let w = i
6262 let x = size(w)
6363 let y = nil
6464 func z (A,B) = if ((B >= x))
6565 then A
6666 else p(A, w[B])
6767
6868 func C (A,B) = if ((B >= x))
6969 then A
7070 else throw("List size exceeds 20")
7171
7272 C(z(z(z(z(z(z(z(z(z(z(z(z(z(z(z(z(z(z(z(z(y, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
7373 }
7474 let E = {
7575 let w = i
7676 let x = size(w)
7777 let y = nil
7878 func z (A,B) = if ((B >= x))
7979 then A
8080 else s(A, w[B])
8181
8282 func C (A,B) = if ((B >= x))
8383 then A
8484 else throw("List size exceeds 20")
8585
8686 C(z(z(z(z(z(z(z(z(z(z(z(z(z(z(z(z(z(z(z(z(y, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
8787 }
8888 let F = {
8989 let w = i
9090 let x = size(w)
9191 let y = nil
9292 func z (A,B) = if ((B >= x))
9393 then A
9494 else t(A, w[B])
9595
9696 func C (A,B) = if ((B >= x))
9797 then A
9898 else throw("List size exceeds 20")
9999
100100 C(z(z(z(z(z(z(z(z(z(z(z(z(z(z(z(z(z(z(z(z(y, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
101101 }
102102 let G = {
103103 let w = i
104104 let x = size(w)
105105 let y = nil
106106 func z (A,B) = if ((B >= x))
107107 then A
108108 else u(A, w[B])
109109
110110 func C (A,B) = if ((B >= x))
111111 then A
112112 else throw("List size exceeds 20")
113113
114114 C(z(z(z(z(z(z(z(z(z(z(z(z(z(z(z(z(z(z(z(z(y, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
115115 }
116116 ((((v ++ D) ++ E) ++ F) ++ G)
117117 }
118118 else throw("Only admin can call this function")
119119
120120
121121
122122 @Callable(h)
123123 func issueToken (H,I,J,K) = if (containsElement([d, e, f], h.callerPublicKey))
124124 then [Issue(H, I, J, K, true, unit, 0)]
125125 else throw("Only admin can call this function")
126126
127127
128128
129129 @Callable(g)
130130 func call () = {
131131 let L = Issue("Asset107112021", "Asset from dApp 1", 100000, 2, true, unit, 0)
132132 let M = Issue("Asset207112021", "Asset from dApp 2", 100000, 2, true, unit, 0)
133133 [M, L]
134134 }
135135
136136
137137
138138 @Callable(h)
139139 func deposit (o) = {
140140 let N = h.payments[0].amount
141141 let O = h.payments[0].assetId
142- let P = (o + "_asset_balance")
143- let Q = toString(h.caller)
144- let R = (((o + "_") + Q) + "_asset_balance")
145- let S = {
146- let T = getString((o + "_service_token"))
147- if ($isInstanceOf(T, "String"))
142+ let P = {
143+ let Q = O
144+ if ($isInstanceOf(Q, "ByteVector"))
148145 then {
149- let U = T
150- U
146+ let R = Q
147+ toBase58String(R)
151148 }
149+ else throw("Match error")
150+ }
151+ if ((size(h.payments) != 1))
152+ then throw("One attached payment expected")
153+ else if ((0 >= N))
154+ then throw(("Deposit amount must be positive. Actual: " + toString(N)))
152155 else {
153- let V = T
154- throw("You try to exchange on unsupported pool")
156+ let S = (o + "_asset_balance")
157+ let T = toString(h.caller)
158+ let U = (((o + "_") + T) + "_asset_balance")
159+ let V = {
160+ let Q = getString((o + "_service_token"))
161+ if ($isInstanceOf(Q, "String"))
162+ then {
163+ let W = Q
164+ W
165+ }
166+ else {
167+ let X = Q
168+ throw("You try to deposit on unsupported pool")
169+ }
170+ }
171+ let Y = getStringValue(this, (o + "_liquidity_token"))
172+ let Z = {
173+ let Q = assetInfo(fromBase58String(Y))
174+ if ($isInstanceOf(Q, "Asset"))
175+ then {
176+ let aa = Q
177+ aa.decimals
178+ }
179+ else throw("Can't find asset")
180+ }
181+ if ((Y != P))
182+ then throw("You attached wrong liquidity token from Swop.fi")
183+ else {
184+ let ab = getIntegerValue(this, S)
185+ let ac = {
186+ let Q = getInteger(U)
187+ if ($isInstanceOf(Q, "Int"))
188+ then {
189+ let ad = Q
190+ ad
191+ }
192+ else {
193+ let X = Q
194+ 0
195+ }
196+ }
197+ let ae = (ab + N)
198+ let af = ((N - fraction(N, 1, a, HALFUP)) - fraction(N, 1, b, HALFUP))
199+ let ag = (ac + af)
200+[Reissue(fromBase58String(V), af, true), ScriptTransfer(h.caller, af, fromBase58String(V)), IntegerEntry(S, ae), IntegerEntry(U, ag)]
201+ }
155202 }
156- }
157- let W = getIntegerValue(this, P)
158- let X = {
159- let T = getInteger(R)
160- if ($isInstanceOf(T, "Int"))
161- then {
162- let Y = T
163- Y
164- }
165- else {
166- let V = T
167- 0
168- }
169- }
170- let Z = (W + N)
171- let aa = ((N - fraction(N, 1, a, HALFUP)) - fraction(N, 1, b, HALFUP))
172- let ab = (X + aa)
173-[Reissue(fromBase58String(S), aa, true), ScriptTransfer(h.caller, aa, fromBase58String(S)), IntegerEntry(P, Z), IntegerEntry(R, ab)]
174203 }
175204
176205
177206
178207 @Callable(h)
179-func withdraw (o,ac) = {
208+func withdraw (o,ah) = {
180209 let N = h.payments[0].amount
181210 let O = h.payments[0].assetId
182- let P = (o + "_asset_balance")
183- let Q = toString(h.caller)
184- let R = (((o + "_") + Q) + "_asset_balance")
185- let ad = (((o + "_") + Q) + "_earned")
186- let S = {
187- let T = getString((o + "_service_token"))
188- if ($isInstanceOf(T, "String"))
211+ let P = {
212+ let Q = O
213+ if ($isInstanceOf(Q, "ByteVector"))
189214 then {
190- let U = T
191- U
215+ let R = Q
216+ toBase58String(R)
192217 }
218+ else throw("Match error")
219+ }
220+ if ((size(h.payments) != 1))
221+ then throw("One attached payment expected")
222+ else if ((0 >= N))
223+ then throw(("Withdraw amount must be positive. Actual: " + toString(N)))
193224 else {
194- let V = T
195- throw("You try to exchange on unsupported pool")
225+ let S = (o + "_asset_balance")
226+ let T = toString(h.caller)
227+ let U = (((o + "_") + T) + "_asset_balance")
228+ let ai = (((o + "_") + T) + "_earned")
229+ let V = {
230+ let Q = getString((o + "_service_token"))
231+ if ($isInstanceOf(Q, "String"))
232+ then {
233+ let W = Q
234+ W
235+ }
236+ else {
237+ let X = Q
238+ throw("You try to withdraw from unsupported pool")
239+ }
240+ }
241+ if ((V != P))
242+ then throw("You attached an wrong token")
243+ else {
244+ let ab = getIntegerValue(this, S)
245+ let ac = {
246+ let Q = getInteger(U)
247+ if ($isInstanceOf(Q, "Int"))
248+ then {
249+ let ad = Q
250+ ad
251+ }
252+ else {
253+ let X = Q
254+ 0
255+ }
256+ }
257+ let aj = {
258+ let Q = getInteger(ai)
259+ if ($isInstanceOf(Q, "Int"))
260+ then {
261+ let ad = Q
262+ ad
263+ }
264+ else {
265+ let X = Q
266+ 0
267+ }
268+ }
269+ let Y = getStringValue(this, (o + "_liquidity_token"))
270+ let Z = {
271+ let Q = assetInfo(fromBase58String(Y))
272+ if ($isInstanceOf(Q, "Asset"))
273+ then {
274+ let aa = Q
275+ aa.decimals
276+ }
277+ else throw("Can't find asset")
278+ }
279+ let ak = (ah + aj)
280+ let al = ((N - fraction(N, 1, c, HALFUP)) - fraction(N, 1, b, HALFUP))
281+ let ae = (ab - al)
282+ if ((ac >= N))
283+ then {
284+ let ag = (ac - al)
285+[Burn(fromBase58String(V), al), ScriptTransfer(h.caller, al, fromBase58String(Y)), IntegerEntry(S, ae), IntegerEntry(U, ag), IntegerEntry(ai, ak)]
286+ }
287+ else throw("You have not such balance for withdraw")
288+ }
196289 }
197- }
198- let W = getIntegerValue(this, P)
199- let X = {
200- let T = getInteger(R)
201- if ($isInstanceOf(T, "Int"))
202- then {
203- let Y = T
204- Y
205- }
206- else {
207- let V = T
208- 0
209- }
210- }
211- let ae = {
212- let T = getInteger(ad)
213- if ($isInstanceOf(T, "Int"))
214- then {
215- let Y = T
216- Y
217- }
218- else {
219- let V = T
220- 0
221- }
222- }
223- let af = getStringValue(this, (o + "_liquidity_token"))
224- let ag = {
225- let T = assetInfo(fromBase58String(af))
226- if ($isInstanceOf(T, "Asset"))
227- then {
228- let ah = T
229- ah.decimals
230- }
231- else throw("Can't find asset")
232- }
233- let ai = (ac + ae)
234- let aj = ((N - fraction(N, 1, c, HALFUP)) - fraction(N, 1, b, HALFUP))
235- let Z = (W - aj)
236- if ((X >= N))
237- then {
238- let ab = (X - aj)
239-[Burn(fromBase58String(S), aj), ScriptTransfer(h.caller, aj, fromBase58String(af)), IntegerEntry(P, Z), IntegerEntry(R, ab), IntegerEntry(ad, ai)]
240- }
241- else throw("You have not such balance for withdraw")
242290 }
243291
244292
245-@Verifier(ak)
246-func al () = sigVerify(ak.bodyBytes, ak.proofs[0], ak.senderPublicKey)
293+@Verifier(am)
294+func an () = sigVerify(am.bodyBytes, am.proofs[0], am.senderPublicKey)
247295

github/deemru/w8io/169f3d6 
42.99 ms