tx · Hy2zJCpy6RqADL9gn7t7LqWRJk1QnTjTsq33EGJ9autR

3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph:  -0.01400000 Waves

2021.12.05 12:54 [1820813] smart account 3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph > SELF 0.00000000 Waves

{ "type": 13, "id": "Hy2zJCpy6RqADL9gn7t7LqWRJk1QnTjTsq33EGJ9autR", "fee": 1400000, "feeAssetId": null, "timestamp": 1638698090554, "version": 2, "chainId": 84, "sender": "3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph", "senderPublicKey": "G7cNXePvAHUHmZfXa1eHnvFeH6DuykPC5wm9v9djTKgD", "proofs": [ "2n8c34MfHeTG2UjNeVRL2PrXsufZGMfiDhKCNEK2FKBNJDeFi2dA2MwtwZdqzmRwMZHqrjZu5QsNQCvNJmSYPsm7" ], "script": "base64:AAIFAAAAAAAAACwIAhIGCgQYGBgREgMKARgSBgoECAEYERIGCgQICAEBEgASAwoBCBIECgIIAQAAAAcAAAAACmRlcG9zaXRGZWUAAAAAAAAAA+gAAAAADWNvbnRyb2xsZXJGZWUAAAAAAAAAJxAAAAAAC3BsYXRmb3JtRmVlAAAAAAAAACcQAAAAAAxhZG1pblB1YktleTEBAAAAIEwvRdV86hRhnS7nBV5a0WPGXpXnXQT7cggRVXwSOVB4AAAAAAxhZG1pblB1YktleTIBAAAAIEwvRdV86hRhnS7nBV5a0WPGXpXnXQT7cggRVXwSOVB4AAAAAAxhZG1pblB1YktleTMBAAAAIIrQtPkwSxrxVLV2azl3dj8A0awIYxMwmN3U5WpkpB8pAQAAABNnZXREQXBwQXNzZXRBZGRyZXNzAAAAAQAAAARwb29sBAAAAAckbWF0Y2gwCQAEIgAAAAEJAAEsAAAAAgUAAAAEcG9vbAIAAAAOX3NlcnZpY2VfdG9rZW4DCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAAGc3RyaW5nBQAAAAckbWF0Y2gwBQAAAAZzdHJpbmcEAAAAB25vdGhpbmcFAAAAByRtYXRjaDAJAAACAAAAAQIAAAAmWW91IHRyeSB0byBkZXBvc2l0IG9uIHVuc3VwcG9ydGVkIHBvb2wAAAAHAAAAAWkBAAAACGFkZFBvb2xzAAAABAAAAAVwb29scwAAAA9saXF1aWRpdHlUb2tlbnMAAAANc2VydmljZVRva2VucwAAABZsaXF1aWRpdHlUb2tlbkRlY2ltYWxzAwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkxCQAETAAAAAIFAAAADGFkbWluUHViS2V5MgkABEwAAAACBQAAAAxhZG1pblB1YktleTMFAAAAA25pbAgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5CgEAAAAQZ2VuZXJhdGVQb29sS2V5cwAAAAIAAAALYWNjdW11bGF0ZWQAAAAEcG9vbAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAARwb29sAgAAAA5fYXNzZXRfYmFsYW5jZQAAAAAAAAAAAAUAAAALYWNjdW11bGF0ZWQKAQAAAB5nZW5lcmF0ZVBvb2xMaXF1aWRpdHlUb2tlbktleXMAAAACAAAAC2FjY3VtdWxhdGVkAAAABHBvb2wEAAAACXBvb2xJbmRleAkBAAAABXZhbHVlAAAAAQkABE8AAAACBQAAAAVwb29scwUAAAAEcG9vbAQAAAAObGlxdWlkaXR5VG9rZW4JAAGRAAAAAgUAAAAPbGlxdWlkaXR5VG9rZW5zBQAAAAlwb29sSW5kZXgJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACBQAAAARwb29sAgAAABBfbGlxdWlkaXR5X3Rva2VuBQAAAA5saXF1aWRpdHlUb2tlbgUAAAALYWNjdW11bGF0ZWQKAQAAABxnZW5lcmF0ZVBvb2xTZXJ2aWNlVG9rZW5LZXlzAAAAAgAAAAthY2N1bXVsYXRlZAAAAARwb29sBAAAAAlwb29sSW5kZXgJAQAAAAV2YWx1ZQAAAAEJAARPAAAAAgUAAAAFcG9vbHMFAAAABHBvb2wEAAAADmxpcXVpZGl0eVRva2VuCQABkQAAAAIFAAAADXNlcnZpY2VUb2tlbnMFAAAACXBvb2xJbmRleAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wCAAAADl9zZXJ2aWNlX3Rva2VuBQAAAA5saXF1aWRpdHlUb2tlbgUAAAALYWNjdW11bGF0ZWQKAQAAACVnZW5lcmF0ZVBvb2xMaXF1aWRpdHlUb2tlbkRlY2ltYWxLZXlzAAAAAgAAAAthY2N1bXVsYXRlZAAAAARwb29sBAAAAAlwb29sSW5kZXgJAQAAAAV2YWx1ZQAAAAEJAARPAAAAAgUAAAAFcG9vbHMFAAAABHBvb2wEAAAADmxpcXVpZGl0eVRva2VuCQABkQAAAAIFAAAAFmxpcXVpZGl0eVRva2VuRGVjaW1hbHMFAAAACXBvb2xJbmRleAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAARwb29sAgAAABZfc2VydmljZV90b2tlbl9kZWNpbWFsBQAAAA5saXF1aWRpdHlUb2tlbgUAAAALYWNjdW11bGF0ZWQKAQAAABZnZW5lcmF0ZVBvb2xBY3RpdmVLZXlzAAAAAgAAAAth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AAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJ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AAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgUAAAAFJGFjYzAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAIAAAAAAAAAAAMAAAAAAAAAAAQAAAAAAAAAAAUAAAAAAAAAAAYAAAAAAAAAAAcAAAAAAAAAAAgAAAAAAAAAAAkAAAAAAAAAAAoAAAAAAAAAAAsAAAAAAAAAAAwAAAAAAAAAAA0AAAAAAAAAAA4AAAAAAAAAAA8AAAAAAAAAABAAAAAAAAAAABEAAAAAAAAAABIAAAAAAAAAABMAAAAAAAAAABQAAAAAAAAAABUAAAAAAAAAABYAAAAAAAAAABcAAAAAAAAAABgAAAAAAAAAABkAAAAAAAAAABoAAAAAAAAAABsAAAAAAAAAABwAAAAAAAAAAB0AAAAAAAAAAB4AAAAA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bWF0Y2gwAgAAAAZTdHJpbmcEAAAABnN0cmluZwUAAAAHJG1hdGNoMAUAAAAGc3RyaW5nBAAAAAdub3RoaW5nBQAAAAckbWF0Y2gwCQAAAgAAAAECAAAAJllvdSB0cnkgdG8gZGVwb3NpdCBvbiB1bnN1cHBvcnRlZCBwb29sBAAAABVsaXF1aWRpdHlUb2tlbkRlY2ltYWwEAAAAByRtYXRjaDAJAAPsAAAAAQkAAlkAAAABBQAAABVsaXF1aWR1dHlBc3NldEFkZHJlc3MDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABUFzc2V0BAAAAAVhc3NldAUAAAAHJG1hdGNoMAgFAAAABWFzc2V0AAAACGRlY2ltYWxzCQAAAgAAAAECAAAAEENhbid0IGZpbmQgYXNzZXQDCQEAAAACIT0AAAACBQAAABVsaXF1aWR1dHlBc3NldEFkZHJlc3MFAAAADWFzc2V0SWRTdHJpbmcJAAACAAAAAQIAAAAvWW91IGF0dGFjaGVkIHdyb25nIGxpcXVpZGl0eSB0b2tlbiBmcm9tIFN3b3AuZmkEAAAACnBvb2xBbW91bnQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMFAAAADXBvb2xBbW91bnRLZXkEAAAACnVzZXJBbW91bnQEAAAAByRtYXRjaDAJAAQfAAAAAQUAAAARdXNlclBvb2xBbW91bnRLZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAADaW50BQAAAAckbWF0Y2gwBQAAAANpbnQEAAAAB25vdGhpbmcFAAAAByRtYXRjaDAAAAAAAAAAAAAEAAAADW5ld1Bvb2xBbW91bnQJAABkAAAAAgUAAAAKcG9vbEFtb3VudAUAAAAGYW1vdW50BAAAABR1c2VyQW1vdW50V2l0aG91dEZlZQkAAGUAAAACCQAAZQAAAAIFAAAABmFtb3VudAkBAAAACGZyYWN0aW9uAAAABAUAAAAGYW1vdW50AAAAAAAAAAABBQAAAApkZXBvc2l0RmVlBQAAAAZIQUxGVVAJAQAAAAhmcmFjdGlvbgAAAAQFAAAABmFtb3VudAAAAAAAAAAAAQUAAAANY29udHJvbGxlckZlZQUAAAAGSEFMRlVQBAAAABFuZXdVc2VyUG9vbEFtb3VudAkAAGQAAAACBQAAAAp1c2VyQW1vdW50BQAAABR1c2VyQW1vdW50V2l0aG91dEZlZQQAAAANbG9ja1Rva2Vuc0tleQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8FAAAAC3VzZXJBZGRyZXNzAgAAAAFfCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQCAAAAB19sb2NrZWQJAARMAAAAAgkBAAAAB1JlaXNzdWUAAAADCQACWQAAAAEFAAAAEGRBcHBBc3NldEFkZHJlc3MFAAAAFHVzZXJBbW91bnRXaXRob3V0RmVlBgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAFHVzZXJBbW91bnRXaXRob3V0RmVlCQACWQAAAAEFAAAAEGRBcHBBc3NldEFkZHJlc3MJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADWxvY2tUb2tlbnNLZXkFAAAAFHVzZXJBbW91bnRXaXRob3V0RmVlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA1wb29sQW1vdW50S2V5BQAAAA1uZXdQb29sQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABF1c2VyUG9vbEFtb3VudEtleQUAAAARbmV3VXNlclBvb2xBbW91bnQFAAAAA25pbAAAAAFpAQAAAAh3aXRoZHJhdwAAAAIAAAAEcG9vbAAAAAZhbW91bnQDCQAAZwAAAAIAAAAAAAAAAAAFAAAABmFtb3VudAkAAAIAAAABCQABLAAAAAICAAAAKURlcG9zaXQgYW1vdW50IG11c3QgYmUgcG9zaXRpdmUuIEFjdHVhbDogCQABpAAAAAEFAAAABmFtb3VudAQAAAANcG9vbEFtb3VudEtleQkAASwAAAACBQAAAARwb29sAgAAAA5fYXNzZXRfYmFsYW5jZQQAAAALdXNlckFkZHJlc3MJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAABF1c2VyUG9vbEFtb3VudEtleQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAABXwUAAAALdXNlckFkZHJlc3MCAAAADl9hc3NldF9iYWxhbmNlBAAAABBkQXBwQXNzZXRBZGRyZXNzCQEAAAATZ2V0REFwcEFzc2V0QWRkcmVzcwAAAAEFAAAABHBvb2wEAAAAFWxpcXVpZHV0eUFzc2V0QWRkcmVzcwQAAAAHJG1hdGNoMAkABCIAAAABCQABLAAAAAIFAAAABHBvb2wCAAAAEF9saXF1aWRpdHlfdG9rZW4DCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAAGc3RyaW5nBQAAAAckbWF0Y2gwBQAAAAZzdHJpbmcEAAAAB25vdGhpbmcFAAAAByRtYXRjaDAJAAACAAAAAQIAAAApWW91IHRyeSB0byB3aXRoZHJhdyBmcm9tIHVuc3VwcG9ydGVkIHBvb2wEAAAACnBvb2xBbW91bnQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMFAAAADXBvb2xBbW91bnRLZXkEAAAACnVzZXJBbW91bnQEAAAAByRtYXRjaDAJAAQfAAAAAQUAAAARdXNlclBvb2xBbW91bnRLZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAADaW50BQAAAAckbWF0Y2gwBQAAAANpbnQEAAAAB25vdGhpbmcFAAAAByRtYXRjaDAAAAAAAAAAAAAEAAAAEGFtb3VudFdpdGhvdXRGZWUJAABlAAAAAgkAAGUAAAACBQAAAAZhbW91bnQJAQAAAAhmcmFjdGlvbgAAAAQFAAAABmFtb3VudAAAAAAAAAAAAQUAAAALcGxhdGZvcm1GZWUFAAAABkhBTEZVUAkBAAAACGZyYWN0aW9uAAAABAUAAAAGYW1vdW50AAAAAAAAAAABBQAAAA1jb250cm9sbGVyRmVlBQAAAAZIQUxGVVAEAAAADW5ld1Bvb2xBbW91bnQJAABlAAAAAgUAAAAKcG9vbEFtb3VudAUAAAAQYW1vdW50V2l0aG91dEZlZQMJAABnAAAAAgUAAAAKdXNlckFtb3VudAUAAAAGYW1vdW50BAAAABFuZXdVc2VyUG9vbEFtb3VudAkAAGUAAAACBQAAAAp1c2VyQW1vdW50BQAAAAZhbW91bnQJAARMAAAAAgkBAAAABEJ1cm4AAAACCQACWQAAAAEFAAAAEGRBcHBBc3NldEFkZHJlc3MFAAAAEGFtb3VudFdpdGhvdXRGZWUJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAABBhbW91bnRXaXRob3V0RmVlCQACWQAAAAEFAAAAFWxpcXVpZHV0eUFzc2V0QWRkcmVzcwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAANcG9vbEFtb3VudEtleQUAAAANbmV3UG9vbEFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAARdXNlclBvb2xBbW91bnRLZXkFAAAAEW5ld1VzZXJQb29sQW1vdW50BQAAAANuaWwJAAACAAAAAQIAAAAmWW91IGhhdmUgbm90IHN1Y2ggYmFsYW5jZSBmb3Igd2l0aGRyYXcAAAABAAAAAmI2AQAAAAJiNwAAAAAJAAH0AAAAAwgFAAAAAmI2AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACYjYAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACYjYAAAAPc2VuZGVyUHVibGljS2V5mY1Jqw==", "height": 1820813, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4W6Mkjva2fyVAHxKe1jGYCPf7DuzzGjNEaSAPJTCsTAV Next: DuxeQoTkRmR24L6YJKFTs81JAudWG97TPbccwJK4S5U9 Diff:
OldNewDifferences
1313
1414 let f = base58'ALsqwPqiUP3bVbM7grozc1Y5oHVBAGKqACRJ5J8RXceC'
1515
16-@Callable(g)
17-func addPools (h,i,j,k) = if (containsElement([d, e, f], g.callerPublicKey))
16+func g (h) = {
17+ let i = getString((h + "_service_token"))
18+ if ($isInstanceOf(i, "String"))
19+ then {
20+ let j = i
21+ j
22+ }
23+ else {
24+ let k = i
25+ throw("You try to deposit on unsupported pool")
26+ }
27+ }
28+
29+
30+@Callable(l)
31+func addPools (m,n,o,p) = if (containsElement([d, e, f], l.callerPublicKey))
1832 then {
19- func l (m,n) = IntegerEntry((n + "_asset_balance"), 0) :: m
33+ func q (r,h) = IntegerEntry((h + "_asset_balance"), 0) :: r
2034
21- func o (m,n) = {
22- let p = value(indexOf(h, n))
23- let q = i[p]
24-StringEntry((n + "_liquidity_token"), q) :: m
35+ func s (r,h) = {
36+ let t = value(indexOf(m, h))
37+ let u = n[t]
38+StringEntry((h + "_liquidity_token"), u) :: r
2539 }
2640
27- func r (m,n) = {
28- let p = value(indexOf(h, n))
29- let q = j[p]
30-StringEntry((n + "_service_token"), q) :: m
41+ func v (r,h) = {
42+ let t = value(indexOf(m, h))
43+ let u = o[t]
44+StringEntry((h + "_service_token"), u) :: r
3145 }
3246
33- func s (m,n) = {
34- let p = value(indexOf(h, n))
35- let q = k[p]
36-IntegerEntry((n + "_service_token"), q) :: m
47+ func w (r,h) = {
48+ let t = value(indexOf(m, h))
49+ let u = p[t]
50+IntegerEntry((h + "_service_token_decimal"), u) :: r
3751 }
3852
39- func t (m,n) = BooleanEntry((n + "_active"), true) :: m
53+ func x (r,h) = BooleanEntry((h + "_active"), true) :: r
4054
41- let u = {
42- let v = h
43- let w = size(v)
44- let x = nil
45- func y (z,A) = if ((A >= w))
46- then z
47- else l(z, v[A])
55+ let y = {
56+ let z = m
57+ let A = size(z)
58+ let B = nil
59+ func C (D,E) = if ((E >= A))
60+ then D
61+ else q(D, z[E])
4862
49- func B (z,A) = if ((A >= w))
50- then z
63+ func F (D,E) = if ((E >= A))
64+ then D
5165 else throw("List size exceeds 20")
5266
53- B(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(x, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
67+ F(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(B, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
5468 }
55- let C = {
56- let v = h
57- let w = size(v)
58- let x = nil
59- func y (z,A) = if ((A >= w))
60- then z
61- else o(z, v[A])
69+ let G = {
70+ let z = m
71+ let A = size(z)
72+ let B = nil
73+ func C (D,E) = if ((E >= A))
74+ then D
75+ else s(D, z[E])
6276
63- func B (z,A) = if ((A >= w))
64- then z
77+ func F (D,E) = if ((E >= A))
78+ then D
6579 else throw("List size exceeds 20")
6680
67- B(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(x, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
81+ F(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(B, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
6882 }
69- let D = {
70- let v = h
71- let w = size(v)
72- let x = nil
73- func y (z,A) = if ((A >= w))
74- then z
75- else r(z, v[A])
83+ let H = {
84+ let z = m
85+ let A = size(z)
86+ let B = nil
87+ func C (D,E) = if ((E >= A))
88+ then D
89+ else v(D, z[E])
7690
77- func B (z,A) = if ((A >= w))
78- then z
91+ func F (D,E) = if ((E >= A))
92+ then D
7993 else throw("List size exceeds 20")
8094
81- B(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(x, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
95+ F(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(B, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
8296 }
83- let E = {
84- let v = h
85- let w = size(v)
86- let x = nil
87- func y (z,A) = if ((A >= w))
88- then z
89- else s(z, v[A])
97+ let I = {
98+ let z = m
99+ let A = size(z)
100+ let B = nil
101+ func C (D,E) = if ((E >= A))
102+ then D
103+ else w(D, z[E])
90104
91- func B (z,A) = if ((A >= w))
92- then z
105+ func F (D,E) = if ((E >= A))
106+ then D
93107 else throw("List size exceeds 20")
94108
95- B(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(x, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
109+ F(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(B, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
96110 }
97- let F = {
98- let v = h
99- let w = size(v)
100- let x = nil
101- func y (z,A) = if ((A >= w))
102- then z
103- else t(z, v[A])
111+ let J = {
112+ let z = m
113+ let A = size(z)
114+ let B = nil
115+ func C (D,E) = if ((E >= A))
116+ then D
117+ else x(D, z[E])
104118
105- func B (z,A) = if ((A >= w))
106- then z
119+ func F (D,E) = if ((E >= A))
120+ then D
107121 else throw("List size exceeds 20")
108122
109- B(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(x, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
123+ F(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(B, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
110124 }
111- ((((u ++ C) ++ D) ++ E) ++ F)
125+ ((((y ++ G) ++ H) ++ I) ++ J)
112126 }
113127 else throw("Only admin can call this function")
114128
115129
116130
117-@Callable(g)
118-func deleteDepositLockRecords (G) = if (containsElement([d, e, f], g.callerPublicKey))
131+@Callable(l)
132+func deleteDepositLockRecords (K) = if (containsElement([d, e, f], l.callerPublicKey))
119133 then {
120- func H (m,I) = DeleteEntry((I + "_locked")) :: m
134+ func L (r,M) = DeleteEntry((M + "_locked")) :: r
121135
122- let J = {
123- let v = G
124- let w = size(v)
125- let x = nil
126- func y (z,A) = if ((A >= w))
127- then z
128- else H(z, v[A])
136+ let N = {
137+ let z = K
138+ let A = size(z)
139+ let B = nil
140+ func C (D,E) = if ((E >= A))
141+ then D
142+ else L(D, z[E])
129143
130- func B (z,A) = if ((A >= w))
131- then z
144+ func F (D,E) = if ((E >= A))
145+ then D
132146 else throw("List size exceeds 100")
133147
134- B(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(x, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
148+ F(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(B, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
135149 }
136- J
150+ N
137151 }
138152 else throw("Only admin can call this function")
139153
140154
141155
142-@Callable(g)
143-func issueToken (K,L,M,N) = if (containsElement([d, e, f], g.callerPublicKey))
144- then [Issue(K, L, M, N, true, unit, 0)]
156+@Callable(l)
157+func distributionReward (h,O,P,Q) = if (containsElement([d, e, f], l.callerPublicKey))
158+ then {
159+ func R (r,S) = {
160+ let T = value(indexOf(P, S))
161+ let U = Q[T]
162+ let V = (((h + "_") + S) + "_current_reward")
163+ let W = {
164+ let i = getInteger(V)
165+ if ($isInstanceOf(i, "Int"))
166+ then {
167+ let X = i
168+ X
169+ }
170+ else {
171+ let k = i
172+ 0
173+ }
174+ }
175+ let Y = (W + U)
176+IntegerEntry(V, 0) :: r
177+ }
178+
179+ let Z = {
180+ let z = P
181+ let A = size(z)
182+ let B = nil
183+ func C (D,E) = if ((E >= A))
184+ then D
185+ else R(D, z[E])
186+
187+ func F (D,E) = if ((E >= A))
188+ then D
189+ else throw("List size exceeds 100")
190+
191+ F(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(B, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
192+ }
193+ let aa = g(h)
194+Reissue(fromBase58String(aa), O, true) :: Z
195+ }
145196 else throw("Only admin can call this function")
146197
147198
148199
149-@Callable(O)
200+@Callable(l)
201+func issueToken (ab,ac,ad,ae) = if (containsElement([d, e, f], l.callerPublicKey))
202+ then [Issue(ab, ac, ad, ae, true, unit, 0)]
203+ else throw("Only admin can call this function")
204+
205+
206+
207+@Callable(af)
150208 func call () = {
151- let P = 10
152- let Q = 1
153- let R = 8
154- let S = 6
155- let T = ((R + S) / 2)
156- let U = pow(P, R, 5, 1, R, DOWN)
157- let V = pow(Q, S, 5, 1, S, DOWN)
158- let W = pow(10, 0, T, 0, 0, DOWN)
159- let X = fraction(U, V, W)
160-[IntegerEntry("fisrt", U), IntegerEntry("second", V), IntegerEntry("third", W), IntegerEntry("fouth", X)]
209+ let ag = 10
210+ let ah = 1
211+ let ai = 8
212+ let aj = 6
213+ let ak = ((ai + aj) / 2)
214+ let al = pow(ag, ai, 5, 1, ai, DOWN)
215+ let am = pow(ah, aj, 5, 1, aj, DOWN)
216+ let an = pow(10, 0, ak, 0, 0, DOWN)
217+ let ao = fraction(al, am, an)
218+[IntegerEntry("fisrt", al), IntegerEntry("second", am), IntegerEntry("third", an), IntegerEntry("fouth", ao)]
161219 }
162220
163221
164222
165-@Callable(g)
166-func deposit (n) = if ((size(g.payments) != 1))
223+@Callable(l)
224+func deposit (h) = if ((size(l.payments) != 1))
167225 then throw("One attached payment expected")
168226 else {
169- let Y = g.payments[0].amount
170- let Z = g.payments[0].assetId
171- let aa = {
172- let ab = Z
173- if ($isInstanceOf(ab, "ByteVector"))
227+ let ap = l.payments[0].amount
228+ let aq = l.payments[0].assetId
229+ let ar = {
230+ let i = aq
231+ if ($isInstanceOf(i, "ByteVector"))
174232 then {
175- let ac = ab
176- toBase58String(ac)
233+ let as = i
234+ toBase58String(as)
177235 }
178236 else throw("Match error")
179237 }
180- if ((0 >= Y))
181- then throw(("Deposit amount must be positive. Actual: " + toString(Y)))
238+ if ((0 >= ap))
239+ then throw(("Deposit amount must be positive. Actual: " + toString(ap)))
182240 else {
183- let ad = (n + "_asset_balance")
184- let ae = toString(g.caller)
185- let af = (((n + "_") + ae) + "_asset_balance")
186- let ag = {
187- let ab = getString((n + "_service_token"))
188- if ($isInstanceOf(ab, "String"))
241+ let at = (h + "_asset_balance")
242+ let au = toString(l.caller)
243+ let av = (((h + "_") + au) + "_asset_balance")
244+ let aa = g(h)
245+ let aw = {
246+ let i = getString((h + "_liquidity_token"))
247+ if ($isInstanceOf(i, "String"))
189248 then {
190- let ah = ab
191- ah
249+ let j = i
250+ j
192251 }
193252 else {
194- let ai = ab
253+ let k = i
195254 throw("You try to deposit on unsupported pool")
196255 }
197256 }
198- let aj = {
199- let ab = getString((n + "_liquidity_token"))
200- if ($isInstanceOf(ab, "String"))
257+ let ax = {
258+ let i = assetInfo(fromBase58String(aw))
259+ if ($isInstanceOf(i, "Asset"))
201260 then {
202- let ah = ab
203- ah
204- }
205- else {
206- let ai = ab
207- throw("You try to deposit on unsupported pool")
208- }
209- }
210- let ak = {
211- let ab = assetInfo(fromBase58String(aj))
212- if ($isInstanceOf(ab, "Asset"))
213- then {
214- let al = ab
215- al.decimals
261+ let ay = i
262+ ay.decimals
216263 }
217264 else throw("Can't find asset")
218265 }
219- if ((aj != aa))
266+ if ((aw != ar))
220267 then throw("You attached wrong liquidity token from Swop.fi")
221268 else {
222- let am = getIntegerValue(this, ad)
223- let an = {
224- let ab = getInteger(af)
225- if ($isInstanceOf(ab, "Int"))
269+ let az = getIntegerValue(this, at)
270+ let aA = {
271+ let i = getInteger(av)
272+ if ($isInstanceOf(i, "Int"))
226273 then {
227- let ao = ab
228- ao
274+ let X = i
275+ X
229276 }
230277 else {
231- let ai = ab
278+ let k = i
232279 0
233280 }
234281 }
235- let ap = (am + Y)
236- let aq = ((Y - fraction(Y, 1, a, HALFUP)) - fraction(Y, 1, b, HALFUP))
237- let ar = (an + aq)
238- let as = (((((n + "_") + ae) + "_") + toBase58String(g.transactionId)) + "_locked")
239-[Reissue(fromBase58String(ag), aq, true), ScriptTransfer(g.caller, aq, fromBase58String(ag)), IntegerEntry(as, aq), IntegerEntry(ad, ap), IntegerEntry(af, ar)]
282+ let aB = (az + ap)
283+ let aC = ((ap - fraction(ap, 1, a, HALFUP)) - fraction(ap, 1, b, HALFUP))
284+ let aD = (aA + aC)
285+ let aE = (((((h + "_") + au) + "_") + toBase58String(l.transactionId)) + "_locked")
286+[Reissue(fromBase58String(aa), aC, true), ScriptTransfer(l.caller, aC, fromBase58String(aa)), IntegerEntry(aE, aC), IntegerEntry(at, aB), IntegerEntry(av, aD)]
240287 }
241288 }
242289 }
243290
244291
245292
246-@Callable(g)
247-func withdraw (n,Y) = if ((0 >= Y))
248- then throw(("Deposit amount must be positive. Actual: " + toString(Y)))
293+@Callable(l)
294+func withdraw (h,ap) = if ((0 >= ap))
295+ then throw(("Deposit amount must be positive. Actual: " + toString(ap)))
249296 else {
250- let ad = (n + "_asset_balance")
251- let ae = toString(g.caller)
252- let af = (((n + "_") + ae) + "_asset_balance")
253- let ag = {
254- let ab = getString((n + "_service_token"))
255- if ($isInstanceOf(ab, "String"))
297+ let at = (h + "_asset_balance")
298+ let au = toString(l.caller)
299+ let av = (((h + "_") + au) + "_asset_balance")
300+ let aa = g(h)
301+ let aw = {
302+ let i = getString((h + "_liquidity_token"))
303+ if ($isInstanceOf(i, "String"))
256304 then {
257- let ah = ab
258- ah
305+ let j = i
306+ j
259307 }
260308 else {
261- let ai = ab
309+ let k = i
262310 throw("You try to withdraw from unsupported pool")
263311 }
264312 }
265- let aj = {
266- let ab = getString((n + "_liquidity_token"))
267- if ($isInstanceOf(ab, "String"))
313+ let az = getIntegerValue(this, at)
314+ let aA = {
315+ let i = getInteger(av)
316+ if ($isInstanceOf(i, "Int"))
268317 then {
269- let ah = ab
270- ah
318+ let X = i
319+ X
271320 }
272321 else {
273- let ai = ab
274- throw("You try to withdraw from unsupported pool")
275- }
276- }
277- let am = getIntegerValue(this, ad)
278- let an = {
279- let ab = getInteger(af)
280- if ($isInstanceOf(ab, "Int"))
281- then {
282- let ao = ab
283- ao
284- }
285- else {
286- let ai = ab
322+ let k = i
287323 0
288324 }
289325 }
290- let at = ((Y - fraction(Y, 1, c, HALFUP)) - fraction(Y, 1, b, HALFUP))
291- let ap = (am - at)
292- if ((an >= Y))
326+ let aF = ((ap - fraction(ap, 1, c, HALFUP)) - fraction(ap, 1, b, HALFUP))
327+ let aB = (az - aF)
328+ if ((aA >= ap))
293329 then {
294- let ar = (an - Y)
295-[Burn(fromBase58String(ag), at), ScriptTransfer(g.caller, at, fromBase58String(aj)), IntegerEntry(ad, ap), IntegerEntry(af, ar)]
330+ let aD = (aA - ap)
331+[Burn(fromBase58String(aa), aF), ScriptTransfer(l.caller, aF, fromBase58String(aw)), IntegerEntry(at, aB), IntegerEntry(av, aD)]
296332 }
297333 else throw("You have not such balance for withdraw")
298334 }
299335
300336
301-@Verifier(au)
302-func av () = sigVerify(au.bodyBytes, au.proofs[0], au.senderPublicKey)
337+@Verifier(aG)
338+func aH () = sigVerify(aG.bodyBytes, aG.proofs[0], aG.senderPublicKey)
303339
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'68Po1k24uP6goKr7RDmXPg4QkMiKuyTMEirao14rif8s'
1111
1212 let e = base58'68Po1k24uP6goKr7RDmXPg4QkMiKuyTMEirao14rif8s'
1313
1414 let f = base58'ALsqwPqiUP3bVbM7grozc1Y5oHVBAGKqACRJ5J8RXceC'
1515
16-@Callable(g)
17-func addPools (h,i,j,k) = if (containsElement([d, e, f], g.callerPublicKey))
16+func g (h) = {
17+ let i = getString((h + "_service_token"))
18+ if ($isInstanceOf(i, "String"))
19+ then {
20+ let j = i
21+ j
22+ }
23+ else {
24+ let k = i
25+ throw("You try to deposit on unsupported pool")
26+ }
27+ }
28+
29+
30+@Callable(l)
31+func addPools (m,n,o,p) = if (containsElement([d, e, f], l.callerPublicKey))
1832 then {
19- func l (m,n) = IntegerEntry((n + "_asset_balance"), 0) :: m
33+ func q (r,h) = IntegerEntry((h + "_asset_balance"), 0) :: r
2034
21- func o (m,n) = {
22- let p = value(indexOf(h, n))
23- let q = i[p]
24-StringEntry((n + "_liquidity_token"), q) :: m
35+ func s (r,h) = {
36+ let t = value(indexOf(m, h))
37+ let u = n[t]
38+StringEntry((h + "_liquidity_token"), u) :: r
2539 }
2640
27- func r (m,n) = {
28- let p = value(indexOf(h, n))
29- let q = j[p]
30-StringEntry((n + "_service_token"), q) :: m
41+ func v (r,h) = {
42+ let t = value(indexOf(m, h))
43+ let u = o[t]
44+StringEntry((h + "_service_token"), u) :: r
3145 }
3246
33- func s (m,n) = {
34- let p = value(indexOf(h, n))
35- let q = k[p]
36-IntegerEntry((n + "_service_token"), q) :: m
47+ func w (r,h) = {
48+ let t = value(indexOf(m, h))
49+ let u = p[t]
50+IntegerEntry((h + "_service_token_decimal"), u) :: r
3751 }
3852
39- func t (m,n) = BooleanEntry((n + "_active"), true) :: m
53+ func x (r,h) = BooleanEntry((h + "_active"), true) :: r
4054
41- let u = {
42- let v = h
43- let w = size(v)
44- let x = nil
45- func y (z,A) = if ((A >= w))
46- then z
47- else l(z, v[A])
55+ let y = {
56+ let z = m
57+ let A = size(z)
58+ let B = nil
59+ func C (D,E) = if ((E >= A))
60+ then D
61+ else q(D, z[E])
4862
49- func B (z,A) = if ((A >= w))
50- then z
63+ func F (D,E) = if ((E >= A))
64+ then D
5165 else throw("List size exceeds 20")
5266
53- B(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(x, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
67+ F(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(B, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
5468 }
55- let C = {
56- let v = h
57- let w = size(v)
58- let x = nil
59- func y (z,A) = if ((A >= w))
60- then z
61- else o(z, v[A])
69+ let G = {
70+ let z = m
71+ let A = size(z)
72+ let B = nil
73+ func C (D,E) = if ((E >= A))
74+ then D
75+ else s(D, z[E])
6276
63- func B (z,A) = if ((A >= w))
64- then z
77+ func F (D,E) = if ((E >= A))
78+ then D
6579 else throw("List size exceeds 20")
6680
67- B(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(x, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
81+ F(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(B, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
6882 }
69- let D = {
70- let v = h
71- let w = size(v)
72- let x = nil
73- func y (z,A) = if ((A >= w))
74- then z
75- else r(z, v[A])
83+ let H = {
84+ let z = m
85+ let A = size(z)
86+ let B = nil
87+ func C (D,E) = if ((E >= A))
88+ then D
89+ else v(D, z[E])
7690
77- func B (z,A) = if ((A >= w))
78- then z
91+ func F (D,E) = if ((E >= A))
92+ then D
7993 else throw("List size exceeds 20")
8094
81- B(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(x, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
95+ F(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(B, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
8296 }
83- let E = {
84- let v = h
85- let w = size(v)
86- let x = nil
87- func y (z,A) = if ((A >= w))
88- then z
89- else s(z, v[A])
97+ let I = {
98+ let z = m
99+ let A = size(z)
100+ let B = nil
101+ func C (D,E) = if ((E >= A))
102+ then D
103+ else w(D, z[E])
90104
91- func B (z,A) = if ((A >= w))
92- then z
105+ func F (D,E) = if ((E >= A))
106+ then D
93107 else throw("List size exceeds 20")
94108
95- B(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(x, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
109+ F(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(B, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
96110 }
97- let F = {
98- let v = h
99- let w = size(v)
100- let x = nil
101- func y (z,A) = if ((A >= w))
102- then z
103- else t(z, v[A])
111+ let J = {
112+ let z = m
113+ let A = size(z)
114+ let B = nil
115+ func C (D,E) = if ((E >= A))
116+ then D
117+ else x(D, z[E])
104118
105- func B (z,A) = if ((A >= w))
106- then z
119+ func F (D,E) = if ((E >= A))
120+ then D
107121 else throw("List size exceeds 20")
108122
109- B(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(x, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
123+ F(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(B, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
110124 }
111- ((((u ++ C) ++ D) ++ E) ++ F)
125+ ((((y ++ G) ++ H) ++ I) ++ J)
112126 }
113127 else throw("Only admin can call this function")
114128
115129
116130
117-@Callable(g)
118-func deleteDepositLockRecords (G) = if (containsElement([d, e, f], g.callerPublicKey))
131+@Callable(l)
132+func deleteDepositLockRecords (K) = if (containsElement([d, e, f], l.callerPublicKey))
119133 then {
120- func H (m,I) = DeleteEntry((I + "_locked")) :: m
134+ func L (r,M) = DeleteEntry((M + "_locked")) :: r
121135
122- let J = {
123- let v = G
124- let w = size(v)
125- let x = nil
126- func y (z,A) = if ((A >= w))
127- then z
128- else H(z, v[A])
136+ let N = {
137+ let z = K
138+ let A = size(z)
139+ let B = nil
140+ func C (D,E) = if ((E >= A))
141+ then D
142+ else L(D, z[E])
129143
130- func B (z,A) = if ((A >= w))
131- then z
144+ func F (D,E) = if ((E >= A))
145+ then D
132146 else throw("List size exceeds 100")
133147
134- B(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(x, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
148+ F(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(B, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
135149 }
136- J
150+ N
137151 }
138152 else throw("Only admin can call this function")
139153
140154
141155
142-@Callable(g)
143-func issueToken (K,L,M,N) = if (containsElement([d, e, f], g.callerPublicKey))
144- then [Issue(K, L, M, N, true, unit, 0)]
156+@Callable(l)
157+func distributionReward (h,O,P,Q) = if (containsElement([d, e, f], l.callerPublicKey))
158+ then {
159+ func R (r,S) = {
160+ let T = value(indexOf(P, S))
161+ let U = Q[T]
162+ let V = (((h + "_") + S) + "_current_reward")
163+ let W = {
164+ let i = getInteger(V)
165+ if ($isInstanceOf(i, "Int"))
166+ then {
167+ let X = i
168+ X
169+ }
170+ else {
171+ let k = i
172+ 0
173+ }
174+ }
175+ let Y = (W + U)
176+IntegerEntry(V, 0) :: r
177+ }
178+
179+ let Z = {
180+ let z = P
181+ let A = size(z)
182+ let B = nil
183+ func C (D,E) = if ((E >= A))
184+ then D
185+ else R(D, z[E])
186+
187+ func F (D,E) = if ((E >= A))
188+ then D
189+ else throw("List size exceeds 100")
190+
191+ F(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(C(B, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
192+ }
193+ let aa = g(h)
194+Reissue(fromBase58String(aa), O, true) :: Z
195+ }
145196 else throw("Only admin can call this function")
146197
147198
148199
149-@Callable(O)
200+@Callable(l)
201+func issueToken (ab,ac,ad,ae) = if (containsElement([d, e, f], l.callerPublicKey))
202+ then [Issue(ab, ac, ad, ae, true, unit, 0)]
203+ else throw("Only admin can call this function")
204+
205+
206+
207+@Callable(af)
150208 func call () = {
151- let P = 10
152- let Q = 1
153- let R = 8
154- let S = 6
155- let T = ((R + S) / 2)
156- let U = pow(P, R, 5, 1, R, DOWN)
157- let V = pow(Q, S, 5, 1, S, DOWN)
158- let W = pow(10, 0, T, 0, 0, DOWN)
159- let X = fraction(U, V, W)
160-[IntegerEntry("fisrt", U), IntegerEntry("second", V), IntegerEntry("third", W), IntegerEntry("fouth", X)]
209+ let ag = 10
210+ let ah = 1
211+ let ai = 8
212+ let aj = 6
213+ let ak = ((ai + aj) / 2)
214+ let al = pow(ag, ai, 5, 1, ai, DOWN)
215+ let am = pow(ah, aj, 5, 1, aj, DOWN)
216+ let an = pow(10, 0, ak, 0, 0, DOWN)
217+ let ao = fraction(al, am, an)
218+[IntegerEntry("fisrt", al), IntegerEntry("second", am), IntegerEntry("third", an), IntegerEntry("fouth", ao)]
161219 }
162220
163221
164222
165-@Callable(g)
166-func deposit (n) = if ((size(g.payments) != 1))
223+@Callable(l)
224+func deposit (h) = if ((size(l.payments) != 1))
167225 then throw("One attached payment expected")
168226 else {
169- let Y = g.payments[0].amount
170- let Z = g.payments[0].assetId
171- let aa = {
172- let ab = Z
173- if ($isInstanceOf(ab, "ByteVector"))
227+ let ap = l.payments[0].amount
228+ let aq = l.payments[0].assetId
229+ let ar = {
230+ let i = aq
231+ if ($isInstanceOf(i, "ByteVector"))
174232 then {
175- let ac = ab
176- toBase58String(ac)
233+ let as = i
234+ toBase58String(as)
177235 }
178236 else throw("Match error")
179237 }
180- if ((0 >= Y))
181- then throw(("Deposit amount must be positive. Actual: " + toString(Y)))
238+ if ((0 >= ap))
239+ then throw(("Deposit amount must be positive. Actual: " + toString(ap)))
182240 else {
183- let ad = (n + "_asset_balance")
184- let ae = toString(g.caller)
185- let af = (((n + "_") + ae) + "_asset_balance")
186- let ag = {
187- let ab = getString((n + "_service_token"))
188- if ($isInstanceOf(ab, "String"))
241+ let at = (h + "_asset_balance")
242+ let au = toString(l.caller)
243+ let av = (((h + "_") + au) + "_asset_balance")
244+ let aa = g(h)
245+ let aw = {
246+ let i = getString((h + "_liquidity_token"))
247+ if ($isInstanceOf(i, "String"))
189248 then {
190- let ah = ab
191- ah
249+ let j = i
250+ j
192251 }
193252 else {
194- let ai = ab
253+ let k = i
195254 throw("You try to deposit on unsupported pool")
196255 }
197256 }
198- let aj = {
199- let ab = getString((n + "_liquidity_token"))
200- if ($isInstanceOf(ab, "String"))
257+ let ax = {
258+ let i = assetInfo(fromBase58String(aw))
259+ if ($isInstanceOf(i, "Asset"))
201260 then {
202- let ah = ab
203- ah
204- }
205- else {
206- let ai = ab
207- throw("You try to deposit on unsupported pool")
208- }
209- }
210- let ak = {
211- let ab = assetInfo(fromBase58String(aj))
212- if ($isInstanceOf(ab, "Asset"))
213- then {
214- let al = ab
215- al.decimals
261+ let ay = i
262+ ay.decimals
216263 }
217264 else throw("Can't find asset")
218265 }
219- if ((aj != aa))
266+ if ((aw != ar))
220267 then throw("You attached wrong liquidity token from Swop.fi")
221268 else {
222- let am = getIntegerValue(this, ad)
223- let an = {
224- let ab = getInteger(af)
225- if ($isInstanceOf(ab, "Int"))
269+ let az = getIntegerValue(this, at)
270+ let aA = {
271+ let i = getInteger(av)
272+ if ($isInstanceOf(i, "Int"))
226273 then {
227- let ao = ab
228- ao
274+ let X = i
275+ X
229276 }
230277 else {
231- let ai = ab
278+ let k = i
232279 0
233280 }
234281 }
235- let ap = (am + Y)
236- let aq = ((Y - fraction(Y, 1, a, HALFUP)) - fraction(Y, 1, b, HALFUP))
237- let ar = (an + aq)
238- let as = (((((n + "_") + ae) + "_") + toBase58String(g.transactionId)) + "_locked")
239-[Reissue(fromBase58String(ag), aq, true), ScriptTransfer(g.caller, aq, fromBase58String(ag)), IntegerEntry(as, aq), IntegerEntry(ad, ap), IntegerEntry(af, ar)]
282+ let aB = (az + ap)
283+ let aC = ((ap - fraction(ap, 1, a, HALFUP)) - fraction(ap, 1, b, HALFUP))
284+ let aD = (aA + aC)
285+ let aE = (((((h + "_") + au) + "_") + toBase58String(l.transactionId)) + "_locked")
286+[Reissue(fromBase58String(aa), aC, true), ScriptTransfer(l.caller, aC, fromBase58String(aa)), IntegerEntry(aE, aC), IntegerEntry(at, aB), IntegerEntry(av, aD)]
240287 }
241288 }
242289 }
243290
244291
245292
246-@Callable(g)
247-func withdraw (n,Y) = if ((0 >= Y))
248- then throw(("Deposit amount must be positive. Actual: " + toString(Y)))
293+@Callable(l)
294+func withdraw (h,ap) = if ((0 >= ap))
295+ then throw(("Deposit amount must be positive. Actual: " + toString(ap)))
249296 else {
250- let ad = (n + "_asset_balance")
251- let ae = toString(g.caller)
252- let af = (((n + "_") + ae) + "_asset_balance")
253- let ag = {
254- let ab = getString((n + "_service_token"))
255- if ($isInstanceOf(ab, "String"))
297+ let at = (h + "_asset_balance")
298+ let au = toString(l.caller)
299+ let av = (((h + "_") + au) + "_asset_balance")
300+ let aa = g(h)
301+ let aw = {
302+ let i = getString((h + "_liquidity_token"))
303+ if ($isInstanceOf(i, "String"))
256304 then {
257- let ah = ab
258- ah
305+ let j = i
306+ j
259307 }
260308 else {
261- let ai = ab
309+ let k = i
262310 throw("You try to withdraw from unsupported pool")
263311 }
264312 }
265- let aj = {
266- let ab = getString((n + "_liquidity_token"))
267- if ($isInstanceOf(ab, "String"))
313+ let az = getIntegerValue(this, at)
314+ let aA = {
315+ let i = getInteger(av)
316+ if ($isInstanceOf(i, "Int"))
268317 then {
269- let ah = ab
270- ah
318+ let X = i
319+ X
271320 }
272321 else {
273- let ai = ab
274- throw("You try to withdraw from unsupported pool")
275- }
276- }
277- let am = getIntegerValue(this, ad)
278- let an = {
279- let ab = getInteger(af)
280- if ($isInstanceOf(ab, "Int"))
281- then {
282- let ao = ab
283- ao
284- }
285- else {
286- let ai = ab
322+ let k = i
287323 0
288324 }
289325 }
290- let at = ((Y - fraction(Y, 1, c, HALFUP)) - fraction(Y, 1, b, HALFUP))
291- let ap = (am - at)
292- if ((an >= Y))
326+ let aF = ((ap - fraction(ap, 1, c, HALFUP)) - fraction(ap, 1, b, HALFUP))
327+ let aB = (az - aF)
328+ if ((aA >= ap))
293329 then {
294- let ar = (an - Y)
295-[Burn(fromBase58String(ag), at), ScriptTransfer(g.caller, at, fromBase58String(aj)), IntegerEntry(ad, ap), IntegerEntry(af, ar)]
330+ let aD = (aA - ap)
331+[Burn(fromBase58String(aa), aF), ScriptTransfer(l.caller, aF, fromBase58String(aw)), IntegerEntry(at, aB), IntegerEntry(av, aD)]
296332 }
297333 else throw("You have not such balance for withdraw")
298334 }
299335
300336
301-@Verifier(au)
302-func av () = sigVerify(au.bodyBytes, au.proofs[0], au.senderPublicKey)
337+@Verifier(aG)
338+func aH () = sigVerify(aG.bodyBytes, aG.proofs[0], aG.senderPublicKey)
303339

github/deemru/w8io/c3f4982 
129.86 ms