tx · GBrVVa8ZveuvowSHCvEkMtX1DL4qqRwGmv8veWrVrTWE

3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph:  -0.01400000 Waves

2021.12.05 21:28 [1821322] smart account 3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph > SELF 0.00000000 Waves

{ "type": 13, "id": "GBrVVa8ZveuvowSHCvEkMtX1DL4qqRwGmv8veWrVrTWE", "fee": 1400000, "feeAssetId": null, "timestamp": 1638729003894, "version": 2, "chainId": 84, "sender": "3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph", "senderPublicKey": "G7cNXePvAHUHmZfXa1eHnvFeH6DuykPC5wm9v9djTKgD", "proofs": [ "5s2hj99d1K8G1NxZYiEJixmw5p15tHzGrRUNTL1A2je3eqzqXGVqXnN8qJAd1shdiCA8LiSUsVZ9V4jUtXLfGi1e" ], "script": "base64:AAIFAAAAAAAAADEIAhIGCgQYGBgREgMKARgSBgoECAEYERIGCgQICAEBEgASAwoBCBIECgIIARIDCgEIAAAACAAAAAAKZGVwb3NpdEZlZQAAAAAAAAAD6AAAAAANY29udHJvbGxlckZlZQAAAAAAAAAnEAAAAAALcGxhdGZvcm1GZWUAAAAAAAAAJxAAAAAADGFkbWluUHViS2V5MQEAAAAgTC9F1XzqFGGdLucFXlrRY8ZeleddBPtyCBFVfBI5UHgAAAAADGFkbWluUHViS2V5MgEAAAAgTC9F1XzqFGGdLucFXlrRY8ZeleddBPtyCBFVfBI5UHgAAAAADGFkbWluUHViS2V5MwEAAAAgitC0+TBLGvFUtXZrOXd2PwDRrAhjEzCY3dTlamSkHykBAAAAE2dldERBcHBBc3NldEFkZHJlc3MAAAABAAAABHBvb2wEAAAAByRtYXRjaDAJAAQiAAAAAQkAASwAAAACBQAAAARwb29sAgAAAA5fc2VydmljZV90b2tlbgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAZzdHJpbmcFAAAAByRtYXRjaDAFAAAABnN0cmluZwQAAAAHbm90aGluZwUAAAAHJG1hdGNoMAkAAAIAAAABAgAAACZZb3UgdHJ5IHRvIGRlcG9zaXQgb24gdW5zdXBwb3J0ZWQgcG9vbAEAAAAYZ2V0TGlxdWlkdXR5QXNzZXRBZGRyZXNzAAAAAQAAAARwb29sBAAAAAckbWF0Y2gwCQAEIgAAAAEJAAEsAAAAAgUAAAAEcG9vbAIAAAAQX2xpcXVpZGl0eV90b2tlbgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAZzdHJpbmcFAAAAByRtYXRjaDAFAAAABnN0cmluZwQAAAAHbm90aGluZwUAAAAHJG1hdGNoMAkAAAIAAAABAgAAAClZb3UgdHJ5IHRvIHdpdGhkcmF3IGZyb20gdW5zdXBwb3J0ZWQgcG9vbAAAAAgAAAABaQEAAAAIYWRkUG9vbHMAAAAEAAAABXBvb2xzAAAAD2xpcXVpZGl0eVRva2VucwAAAA1zZXJ2aWNlVG9rZW5zAAAAFmxpcXVpZGl0eVRva2VuRGVjaW1hbHMDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkKAQAAABBnZW5lcmF0ZVBvb2xLZXlzAAAAAgAAAAthY2N1bXVsYXRlZAAAAARwb29sCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wCAAAADl9hc3NldF9iYWxhbmNlAAAAAAAAAAAABQAAAAthY2N1bXVsYXRlZAoBAAAAHmdlbmVyYXRlUG9vbExpcXVpZGl0eVRva2VuS2V5cwAAAAIAAAALYWNjdW11bGF0ZWQAAAAEcG9vbAQAAAAJcG9vbEluZGV4CQEAAAAFdmFsdWUAAAABCQAETwAAAAIFAAAABXBvb2xzBQAAAARwb29sBAAAAA5saXF1aWRpdHlUb2tlbgkAAZEAAAACBQAAAA9saXF1aWRpdHlUb2tlbnMFAAAACXBvb2xJbmRleAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAEF9saXF1aWRpdHlfdG9rZW4FAAAADmxpcXVpZGl0eVRva2VuBQAAAAthY2N1bXVsYXRlZAoBAAAAHGdlbmVyYXRlUG9vbFNlcnZpY2VUb2tlbktleXMAAAACAAAAC2FjY3VtdWxhdGVkAAAABHBvb2wEAAAACXBvb2xJbmRleAkBAAAABXZhbHVlAAAAAQkABE8AAAACBQAAAAVwb29scwUAAAAEcG9vbAQAAAAObGlxdWlkaXR5VG9rZW4JAAGRAAAAAgUAAAANc2VydmljZVRva2VucwUAAAAJcG9vbEluZGV4CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAAOX3NlcnZpY2VfdG9rZW4FAAAADmxpcXVpZGl0eVRva2VuBQAAAAthY2N1bXVsYXRlZAoBAAAAJWdlbmVyYXRlUG9vbExpcXVpZGl0eVRva2VuRGVjaW1hbEtleXMAAAACAAAAC2FjY3VtdWxhdGVkAAAABHBvb2wEAAAACXBvb2xJbmRleAkBAAAABXZh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MQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgUAAAAFJGFjYzAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAIAAAAAAAAAAAMAAAAAAAAAAAQAAAAAAAAAAAUAAAAAAAAAAAYAAAAAAAAAAAcAAAAAAAAAAAgAAAAAAAAAAAkAAAAAAAAAAAoAAAAAAAAAAAsAAAAAAAAAAAwAAAAAAAAAAA0AAAAAAAAAAA4AAAAAAAAAAA8AAAAAAAAAABAAAAAAAAAAABEAAAAAAAAAABIAAAAAAAAAABMAAAAAAAAAABQAAAAAAAAAABUAAAAAAAAAABYAAAAAAAAAABcAAAAAAAAAABgAAAAAAAAAABkAAAAAAAAAABoAAAAAAAAAABsAAAAAAAAAABwAAAAAAAAAAB0AAAAAAAAAAB4AAAAAAAAAAB8AAAAAAAAAACAAAAAAAAAAACEAAAAAAAAAACIAAAAAAAAAACMAAAAAAAAAACQAAAAAAAAAACUAAAAAAAAAACYAAAAAAAAAACcAAAAAAAAAACgAAAAAAAAAACkAAAAAAAAAACoAAAAAAAAAACsAAAAAAAAAACwAAAAAAAAAAC0AAAAAAAAAAC4AAAAAAAAAAC8AAAAAAAAAADAAAAAA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MQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACCQEAAAABMQAAAAIJAQAAAAExAAAAAgkBAAAAATEAAAACBQAAAAUkYWNjMAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAgAAAAAAAAAAAwAAAAAAAAAABAAAAAAAAAAABQAAAAAAAAAABgAAAAAAAAAABwAAAAAAAAAACAAAAAAAAAAACQAAAAAAAAAACgAAAAAAAAAACwAAAAAAAAAADAAAAAAAAAAADQAAAAAAAAAADgAAAAAAAAAADwAAAAAAAAAAEAAAAAAAAAAAEQAAAAAAAAAA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bnRLZXkJAAEsAAAAAgUAAAAEcG9vbAIAAAAOX2Fzc2V0X2JhbGFuY2UEAAAAC3VzZXJBZGRyZXNzCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAARdXNlclBvb2xBbW91bnRLZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8FAAAAC3VzZXJBZGRyZXNzAgAAAA5fYXNzZXRfYmFsYW5jZQQAAAAQZEFwcEFzc2V0QWRkcmVzcwkBAAAAE2dldERBcHBBc3NldEFkZHJlc3MAAAABBQAAAARwb29sBAAAABVsaXF1aWR1dHlBc3NldEFkZHJlc3MEAAAAByRtYXRjaDAJAAQiAAAAAQkAASwAAAACBQAAAARwb29sAgAAABBfbGlxdWlkaXR5X3Rva2VuAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAABnN0cmluZwUAAAAHJG1hdGNoMAUAAAAGc3RyaW5nBAAAAAdub3RoaW5nBQAAAAckbWF0Y2gwCQAAAgAAAAECAAAAJllvdSB0cnkgdG8gZGVwb3NpdCBvbiB1bnN1cHBvcnRlZCBwb29sBAAAABVsaXF1aWRpdHlUb2tlbkRlY2ltYWwEAAAAByRtYXRjaDAJAAPsAAAAAQkAAlkAAAABBQAAABVsaXF1aWR1dHlBc3NldEFkZHJlc3MDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABUFzc2V0BAAAAAVhc3NldAUAAAAHJG1hdGNoMAgFAAAABWFzc2V0AAAACGRlY2ltYWxzCQAAAgAAAAECAAAAEENhbid0IGZpbmQgYXNzZXQDCQEAAAACIT0AAAACBQAAABVsaXF1aWR1dHlBc3NldEFkZHJlc3MFAAAADWFzc2V0SWRTdHJpbmcJAAACAAAAAQIAAAAvWW91IGF0dGFjaGVkIHdyb25nIGxpcXVpZGl0eSB0b2tlbiBmcm9tIFN3b3AuZmkEAAAACnBvb2xBbW91bnQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMFAAAADXBvb2xBbW91bnRLZXkEAAAACnVzZXJBbW91bnQEAAAAByRtYXRjaDAJAAQfAAAAAQUAAAARdXNlclBvb2xBbW91bnRLZXkDCQAAAQAAAAIF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", "height": 1821322, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 75vjcKdVoyqZM2XHdTVxbEnvpXLakcujUzmfuBGk26E9 Next: 3K4UgkipYVwyUci4hQVetnXfv4Q2Vp6UE9F7XaccBCYk Diff:
OldNewDifferences
2727 }
2828
2929
30-@Callable(l)
31-func addPools (m,n,o,p) = if (containsElement([d, e, f], l.callerPublicKey))
30+func l (h) = {
31+ let i = getString((h + "_liquidity_token"))
32+ if ($isInstanceOf(i, "String"))
33+ then {
34+ let j = i
35+ j
36+ }
37+ else {
38+ let k = i
39+ throw("You try to withdraw from unsupported pool")
40+ }
41+ }
42+
43+
44+@Callable(m)
45+func addPools (n,o,p,q) = if (containsElement([d, e, f], m.callerPublicKey))
3246 then {
33- func q (r,h) = IntegerEntry((h + "_asset_balance"), 0) :: r
47+ func r (s,h) = IntegerEntry((h + "_asset_balance"), 0) :: s
3448
35- func s (r,h) = {
36- let t = value(indexOf(m, h))
37- let u = n[t]
38-StringEntry((h + "_liquidity_token"), u) :: r
49+ func t (s,h) = {
50+ let u = value(indexOf(n, h))
51+ let v = o[u]
52+StringEntry((h + "_liquidity_token"), v) :: s
3953 }
4054
41- func v (r,h) = {
42- let t = value(indexOf(m, h))
43- let u = o[t]
44-StringEntry((h + "_service_token"), u) :: r
55+ func w (s,h) = {
56+ let u = value(indexOf(n, h))
57+ let v = p[u]
58+StringEntry((h + "_service_token"), v) :: s
4559 }
4660
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
61+ func x (s,h) = {
62+ let u = value(indexOf(n, h))
63+ let v = q[u]
64+IntegerEntry((h + "_service_token_decimal"), v) :: s
5165 }
5266
53- func x (r,h) = BooleanEntry((h + "_active"), true) :: r
67+ func y (s,h) = BooleanEntry((h + "_active"), true) :: s
5468
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])
69+ let z = {
70+ let A = n
71+ let B = size(A)
72+ let C = nil
73+ func D (E,F) = if ((F >= B))
74+ then E
75+ else r(E, A[F])
6276
63- func F (D,E) = if ((E >= A))
64- then D
77+ func G (E,F) = if ((F >= B))
78+ then E
6579 else throw("List size exceeds 20")
6680
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)
81+ G(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
6882 }
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])
83+ let H = {
84+ let A = n
85+ let B = size(A)
86+ let C = nil
87+ func D (E,F) = if ((F >= B))
88+ then E
89+ else t(E, A[F])
7690
77- func F (D,E) = if ((E >= A))
78- then D
91+ func G (E,F) = if ((F >= B))
92+ then E
7993 else throw("List size exceeds 20")
8094
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)
95+ G(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
8296 }
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])
97+ let I = {
98+ let A = n
99+ let B = size(A)
100+ let C = nil
101+ func D (E,F) = if ((F >= B))
102+ then E
103+ else w(E, A[F])
90104
91- func F (D,E) = if ((E >= A))
92- then D
105+ func G (E,F) = if ((F >= B))
106+ then E
93107 else throw("List size exceeds 20")
94108
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)
109+ G(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
96110 }
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])
111+ let J = {
112+ let A = n
113+ let B = size(A)
114+ let C = nil
115+ func D (E,F) = if ((F >= B))
116+ then E
117+ else x(E, A[F])
104118
105- func F (D,E) = if ((E >= A))
106- then D
119+ func G (E,F) = if ((F >= B))
120+ then E
107121 else throw("List size exceeds 20")
108122
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)
123+ G(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
110124 }
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])
125+ let K = {
126+ let A = n
127+ let B = size(A)
128+ let C = nil
129+ func D (E,F) = if ((F >= B))
130+ then E
131+ else y(E, A[F])
118132
119- func F (D,E) = if ((E >= A))
120- then D
133+ func G (E,F) = if ((F >= B))
134+ then E
121135 else throw("List size exceeds 20")
122136
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)
137+ G(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
124138 }
125- ((((y ++ G) ++ H) ++ I) ++ J)
139+ ((((z ++ H) ++ I) ++ J) ++ K)
126140 }
127141 else throw("Only admin can call this function")
128142
129143
130144
131-@Callable(l)
132-func deleteDepositLockRecords (K) = if (containsElement([d, e, f], l.callerPublicKey))
145+@Callable(m)
146+func deleteDepositLockRecords (L) = if (containsElement([d, e, f], m.callerPublicKey))
133147 then {
134- func L (r,M) = DeleteEntry((M + "_locked")) :: r
148+ func M (s,N) = DeleteEntry((N + "_locked")) :: s
135149
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])
150+ let O = {
151+ let A = L
152+ let B = size(A)
153+ let C = nil
154+ func D (E,F) = if ((F >= B))
155+ then E
156+ else M(E, A[F])
143157
144- func F (D,E) = if ((E >= A))
145- then D
158+ func G (E,F) = if ((F >= B))
159+ then E
146160 else throw("List size exceeds 100")
147161
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)
162+ G(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(C, 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)
149163 }
150- N
164+ O
151165 }
152166 else throw("Only admin can call this function")
153167
154168
155169
156-@Callable(l)
157-func distributionReward (h,O,P,Q) = if (containsElement([d, e, f], l.callerPublicKey))
170+@Callable(m)
171+func distributionReward (h,P,Q,R) = if (containsElement([d, e, f], m.callerPublicKey))
158172 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)
173+ func S (s,T) = {
174+ let U = value(indexOf(Q, T))
175+ let V = R[U]
176+ let W = (((h + "_") + T) + "_current_reward")
177+ let X = {
178+ let i = getInteger(W)
165179 if ($isInstanceOf(i, "Int"))
166180 then {
167- let X = i
168- X
181+ let Y = i
182+ Y
169183 }
170184 else {
171185 let k = i
172186 0
173187 }
174188 }
175- let Y = (W + U)
176-IntegerEntry(V, Y) :: r
189+ let Z = (X + V)
190+IntegerEntry(W, Z) :: s
177191 }
178192
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])
193+ let aa = {
194+ let A = Q
195+ let B = size(A)
196+ let C = nil
197+ func D (E,F) = if ((F >= B))
198+ then E
199+ else S(E, A[F])
186200
187- func F (D,E) = if ((E >= A))
188- then D
201+ func G (E,F) = if ((F >= B))
202+ then E
189203 else throw("List size exceeds 87")
190204
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(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)
205+ G(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(C, 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)
192206 }
193- let aa = g(h)
194-Reissue(fromBase58String(aa), O, true) :: Z
207+ let ab = g(h)
208+Reissue(fromBase58String(ab), P, true) :: aa
195209 }
196210 else throw("Only admin can call this function")
197211
198212
199213
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)]
214+@Callable(m)
215+func issueToken (ac,ad,ae,af) = if (containsElement([d, e, f], m.callerPublicKey))
216+ then [Issue(ac, ad, ae, af, true, unit, 0)]
203217 else throw("Only admin can call this function")
204218
205219
206220
207-@Callable(af)
221+@Callable(ag)
208222 func call () = [DeleteEntry("3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1_3N5viYFhnu1ew4FRZ9nujme9edr918FkT1a_current_reward")]
209223
210224
211225
212-@Callable(l)
213-func deposit (h) = if ((size(l.payments) != 1))
226+@Callable(m)
227+func deposit (h) = if ((size(m.payments) != 1))
214228 then throw("One attached payment expected")
215229 else {
216- let ag = l.payments[0].amount
217- let ah = l.payments[0].assetId
218- let ai = {
219- let i = ah
230+ let ah = m.payments[0].amount
231+ let ai = m.payments[0].assetId
232+ let aj = {
233+ let i = ai
220234 if ($isInstanceOf(i, "ByteVector"))
221235 then {
222- let aj = i
223- toBase58String(aj)
236+ let ak = i
237+ toBase58String(ak)
224238 }
225239 else throw("Match error")
226240 }
227- if ((0 >= ag))
228- then throw(("Deposit amount must be positive. Actual: " + toString(ag)))
241+ if ((0 >= ah))
242+ then throw(("Deposit amount must be positive. Actual: " + toString(ah)))
229243 else {
230- let ak = (h + "_asset_balance")
231- let al = toString(l.caller)
232- let am = (((h + "_") + al) + "_asset_balance")
233- let aa = g(h)
234- let an = {
244+ let al = (h + "_asset_balance")
245+ let am = toString(m.caller)
246+ let an = (((h + "_") + am) + "_asset_balance")
247+ let ab = g(h)
248+ let ao = {
235249 let i = getString((h + "_liquidity_token"))
236250 if ($isInstanceOf(i, "String"))
237251 then {
243257 throw("You try to deposit on unsupported pool")
244258 }
245259 }
246- let ao = {
247- let i = assetInfo(fromBase58String(an))
260+ let ap = {
261+ let i = assetInfo(fromBase58String(ao))
248262 if ($isInstanceOf(i, "Asset"))
249263 then {
250- let ap = i
251- ap.decimals
264+ let aq = i
265+ aq.decimals
252266 }
253267 else throw("Can't find asset")
254268 }
255- if ((an != ai))
269+ if ((ao != aj))
256270 then throw("You attached wrong liquidity token from Swop.fi")
257271 else {
258- let aq = getIntegerValue(this, ak)
259- let ar = {
260- let i = getInteger(am)
272+ let ar = getIntegerValue(this, al)
273+ let as = {
274+ let i = getInteger(an)
261275 if ($isInstanceOf(i, "Int"))
262276 then {
263- let X = i
264- X
277+ let Y = i
278+ Y
265279 }
266280 else {
267281 let k = i
268282 0
269283 }
270284 }
271- let as = (aq + ag)
272- let at = ((ag - fraction(ag, 1, a, HALFUP)) - fraction(ag, 1, b, HALFUP))
273- let au = (ar + at)
274- let av = (((((h + "_") + al) + "_") + toBase58String(l.transactionId)) + "_locked")
275-[Reissue(fromBase58String(aa), at, true), ScriptTransfer(l.caller, at, fromBase58String(aa)), IntegerEntry(av, at), IntegerEntry(ak, as), IntegerEntry(am, au)]
285+ let at = (ar + ah)
286+ let au = ((ah - fraction(ah, 1, a, HALFUP)) - fraction(ah, 1, b, HALFUP))
287+ let av = (as + au)
288+ let aw = (((((h + "_") + am) + "_") + toBase58String(m.transactionId)) + "_locked")
289+[Reissue(fromBase58String(ab), au, true), ScriptTransfer(m.caller, au, fromBase58String(ab)), IntegerEntry(aw, au), IntegerEntry(al, at), IntegerEntry(an, av)]
276290 }
277291 }
278292 }
279293
280294
281295
282-@Callable(l)
283-func withdraw (h,ag) = if ((0 >= ag))
284- then throw(("Deposit amount must be positive. Actual: " + toString(ag)))
296+@Callable(m)
297+func withdraw (h,ah) = if ((0 >= ah))
298+ then throw(("Deposit amount must be positive. Actual: " + toString(ah)))
285299 else {
286- let ak = (h + "_asset_balance")
287- let al = toString(l.caller)
288- let am = (((h + "_") + al) + "_asset_balance")
289- let aa = g(h)
290- let an = {
291- let i = getString((h + "_liquidity_token"))
292- if ($isInstanceOf(i, "String"))
293- then {
294- let j = i
295- j
296- }
297- else {
298- let k = i
299- throw("You try to withdraw from unsupported pool")
300- }
301- }
302- let aq = getIntegerValue(this, ak)
303- let ar = {
304- let i = getInteger(am)
300+ let al = (h + "_asset_balance")
301+ let am = toString(m.caller)
302+ let an = (((h + "_") + am) + "_asset_balance")
303+ let ab = g(h)
304+ let ao = l(h)
305+ let ar = getIntegerValue(this, al)
306+ let as = {
307+ let i = getInteger(an)
305308 if ($isInstanceOf(i, "Int"))
306309 then {
307- let X = i
308- X
310+ let Y = i
311+ Y
309312 }
310313 else {
311314 let k = i
312315 0
313316 }
314317 }
315- let aw = ((ag - fraction(ag, 1, c, HALFUP)) - fraction(ag, 1, b, HALFUP))
316- let as = (aq - aw)
317- if ((ar >= ag))
318+ let ax = ((ah - fraction(ah, 1, c, HALFUP)) - fraction(ah, 1, b, HALFUP))
319+ let at = (ar - ax)
320+ if ((as >= ah))
318321 then {
319- let au = (ar - ag)
320-[Burn(fromBase58String(aa), aw), ScriptTransfer(l.caller, aw, fromBase58String(an)), IntegerEntry(ak, as), IntegerEntry(am, au)]
322+ let av = (as - ah)
323+[Burn(fromBase58String(ab), ax), ScriptTransfer(m.caller, ax, fromBase58String(ao)), IntegerEntry(al, at), IntegerEntry(an, av)]
321324 }
322325 else throw("You have not such balance for withdraw")
323326 }
324327
325328
326-@Verifier(ax)
327-func ay () = sigVerify(ax.bodyBytes, ax.proofs[0], ax.senderPublicKey)
329+
330+@Callable(m)
331+func claimReward (h) = {
332+ let am = toString(m.caller)
333+ let ay = (((h + "_") + am) + "_current_reward")
334+ let az = {
335+ let i = getInteger(ay)
336+ if ($isInstanceOf(i, "Int"))
337+ then {
338+ let Y = i
339+ Y
340+ }
341+ else {
342+ let k = i
343+ throw("You have not any reward in this pool")
344+ }
345+ }
346+ let ab = g(h)
347+ let ao = l(h)
348+[Burn(fromBase58String(ab), az), ScriptTransfer(m.caller, az, fromBase58String(ao)), IntegerEntry(ay, 0)]
349+ }
350+
351+
352+@Verifier(aA)
353+func aB () = sigVerify(aA.bodyBytes, aA.proofs[0], aA.senderPublicKey)
328354
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
1616 func g (h) = {
1717 let i = getString((h + "_service_token"))
1818 if ($isInstanceOf(i, "String"))
1919 then {
2020 let j = i
2121 j
2222 }
2323 else {
2424 let k = i
2525 throw("You try to deposit on unsupported pool")
2626 }
2727 }
2828
2929
30-@Callable(l)
31-func addPools (m,n,o,p) = if (containsElement([d, e, f], l.callerPublicKey))
30+func l (h) = {
31+ let i = getString((h + "_liquidity_token"))
32+ if ($isInstanceOf(i, "String"))
33+ then {
34+ let j = i
35+ j
36+ }
37+ else {
38+ let k = i
39+ throw("You try to withdraw from unsupported pool")
40+ }
41+ }
42+
43+
44+@Callable(m)
45+func addPools (n,o,p,q) = if (containsElement([d, e, f], m.callerPublicKey))
3246 then {
33- func q (r,h) = IntegerEntry((h + "_asset_balance"), 0) :: r
47+ func r (s,h) = IntegerEntry((h + "_asset_balance"), 0) :: s
3448
35- func s (r,h) = {
36- let t = value(indexOf(m, h))
37- let u = n[t]
38-StringEntry((h + "_liquidity_token"), u) :: r
49+ func t (s,h) = {
50+ let u = value(indexOf(n, h))
51+ let v = o[u]
52+StringEntry((h + "_liquidity_token"), v) :: s
3953 }
4054
41- func v (r,h) = {
42- let t = value(indexOf(m, h))
43- let u = o[t]
44-StringEntry((h + "_service_token"), u) :: r
55+ func w (s,h) = {
56+ let u = value(indexOf(n, h))
57+ let v = p[u]
58+StringEntry((h + "_service_token"), v) :: s
4559 }
4660
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
61+ func x (s,h) = {
62+ let u = value(indexOf(n, h))
63+ let v = q[u]
64+IntegerEntry((h + "_service_token_decimal"), v) :: s
5165 }
5266
53- func x (r,h) = BooleanEntry((h + "_active"), true) :: r
67+ func y (s,h) = BooleanEntry((h + "_active"), true) :: s
5468
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])
69+ let z = {
70+ let A = n
71+ let B = size(A)
72+ let C = nil
73+ func D (E,F) = if ((F >= B))
74+ then E
75+ else r(E, A[F])
6276
63- func F (D,E) = if ((E >= A))
64- then D
77+ func G (E,F) = if ((F >= B))
78+ then E
6579 else throw("List size exceeds 20")
6680
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)
81+ G(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
6882 }
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])
83+ let H = {
84+ let A = n
85+ let B = size(A)
86+ let C = nil
87+ func D (E,F) = if ((F >= B))
88+ then E
89+ else t(E, A[F])
7690
77- func F (D,E) = if ((E >= A))
78- then D
91+ func G (E,F) = if ((F >= B))
92+ then E
7993 else throw("List size exceeds 20")
8094
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)
95+ G(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
8296 }
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])
97+ let I = {
98+ let A = n
99+ let B = size(A)
100+ let C = nil
101+ func D (E,F) = if ((F >= B))
102+ then E
103+ else w(E, A[F])
90104
91- func F (D,E) = if ((E >= A))
92- then D
105+ func G (E,F) = if ((F >= B))
106+ then E
93107 else throw("List size exceeds 20")
94108
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)
109+ G(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
96110 }
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])
111+ let J = {
112+ let A = n
113+ let B = size(A)
114+ let C = nil
115+ func D (E,F) = if ((F >= B))
116+ then E
117+ else x(E, A[F])
104118
105- func F (D,E) = if ((E >= A))
106- then D
119+ func G (E,F) = if ((F >= B))
120+ then E
107121 else throw("List size exceeds 20")
108122
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)
123+ G(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
110124 }
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])
125+ let K = {
126+ let A = n
127+ let B = size(A)
128+ let C = nil
129+ func D (E,F) = if ((F >= B))
130+ then E
131+ else y(E, A[F])
118132
119- func F (D,E) = if ((E >= A))
120- then D
133+ func G (E,F) = if ((F >= B))
134+ then E
121135 else throw("List size exceeds 20")
122136
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)
137+ G(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(C, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
124138 }
125- ((((y ++ G) ++ H) ++ I) ++ J)
139+ ((((z ++ H) ++ I) ++ J) ++ K)
126140 }
127141 else throw("Only admin can call this function")
128142
129143
130144
131-@Callable(l)
132-func deleteDepositLockRecords (K) = if (containsElement([d, e, f], l.callerPublicKey))
145+@Callable(m)
146+func deleteDepositLockRecords (L) = if (containsElement([d, e, f], m.callerPublicKey))
133147 then {
134- func L (r,M) = DeleteEntry((M + "_locked")) :: r
148+ func M (s,N) = DeleteEntry((N + "_locked")) :: s
135149
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])
150+ let O = {
151+ let A = L
152+ let B = size(A)
153+ let C = nil
154+ func D (E,F) = if ((F >= B))
155+ then E
156+ else M(E, A[F])
143157
144- func F (D,E) = if ((E >= A))
145- then D
158+ func G (E,F) = if ((F >= B))
159+ then E
146160 else throw("List size exceeds 100")
147161
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)
162+ G(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(C, 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)
149163 }
150- N
164+ O
151165 }
152166 else throw("Only admin can call this function")
153167
154168
155169
156-@Callable(l)
157-func distributionReward (h,O,P,Q) = if (containsElement([d, e, f], l.callerPublicKey))
170+@Callable(m)
171+func distributionReward (h,P,Q,R) = if (containsElement([d, e, f], m.callerPublicKey))
158172 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)
173+ func S (s,T) = {
174+ let U = value(indexOf(Q, T))
175+ let V = R[U]
176+ let W = (((h + "_") + T) + "_current_reward")
177+ let X = {
178+ let i = getInteger(W)
165179 if ($isInstanceOf(i, "Int"))
166180 then {
167- let X = i
168- X
181+ let Y = i
182+ Y
169183 }
170184 else {
171185 let k = i
172186 0
173187 }
174188 }
175- let Y = (W + U)
176-IntegerEntry(V, Y) :: r
189+ let Z = (X + V)
190+IntegerEntry(W, Z) :: s
177191 }
178192
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])
193+ let aa = {
194+ let A = Q
195+ let B = size(A)
196+ let C = nil
197+ func D (E,F) = if ((F >= B))
198+ then E
199+ else S(E, A[F])
186200
187- func F (D,E) = if ((E >= A))
188- then D
201+ func G (E,F) = if ((F >= B))
202+ then E
189203 else throw("List size exceeds 87")
190204
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(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)
205+ G(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(D(C, 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)
192206 }
193- let aa = g(h)
194-Reissue(fromBase58String(aa), O, true) :: Z
207+ let ab = g(h)
208+Reissue(fromBase58String(ab), P, true) :: aa
195209 }
196210 else throw("Only admin can call this function")
197211
198212
199213
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)]
214+@Callable(m)
215+func issueToken (ac,ad,ae,af) = if (containsElement([d, e, f], m.callerPublicKey))
216+ then [Issue(ac, ad, ae, af, true, unit, 0)]
203217 else throw("Only admin can call this function")
204218
205219
206220
207-@Callable(af)
221+@Callable(ag)
208222 func call () = [DeleteEntry("3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1_3N5viYFhnu1ew4FRZ9nujme9edr918FkT1a_current_reward")]
209223
210224
211225
212-@Callable(l)
213-func deposit (h) = if ((size(l.payments) != 1))
226+@Callable(m)
227+func deposit (h) = if ((size(m.payments) != 1))
214228 then throw("One attached payment expected")
215229 else {
216- let ag = l.payments[0].amount
217- let ah = l.payments[0].assetId
218- let ai = {
219- let i = ah
230+ let ah = m.payments[0].amount
231+ let ai = m.payments[0].assetId
232+ let aj = {
233+ let i = ai
220234 if ($isInstanceOf(i, "ByteVector"))
221235 then {
222- let aj = i
223- toBase58String(aj)
236+ let ak = i
237+ toBase58String(ak)
224238 }
225239 else throw("Match error")
226240 }
227- if ((0 >= ag))
228- then throw(("Deposit amount must be positive. Actual: " + toString(ag)))
241+ if ((0 >= ah))
242+ then throw(("Deposit amount must be positive. Actual: " + toString(ah)))
229243 else {
230- let ak = (h + "_asset_balance")
231- let al = toString(l.caller)
232- let am = (((h + "_") + al) + "_asset_balance")
233- let aa = g(h)
234- let an = {
244+ let al = (h + "_asset_balance")
245+ let am = toString(m.caller)
246+ let an = (((h + "_") + am) + "_asset_balance")
247+ let ab = g(h)
248+ let ao = {
235249 let i = getString((h + "_liquidity_token"))
236250 if ($isInstanceOf(i, "String"))
237251 then {
238252 let j = i
239253 j
240254 }
241255 else {
242256 let k = i
243257 throw("You try to deposit on unsupported pool")
244258 }
245259 }
246- let ao = {
247- let i = assetInfo(fromBase58String(an))
260+ let ap = {
261+ let i = assetInfo(fromBase58String(ao))
248262 if ($isInstanceOf(i, "Asset"))
249263 then {
250- let ap = i
251- ap.decimals
264+ let aq = i
265+ aq.decimals
252266 }
253267 else throw("Can't find asset")
254268 }
255- if ((an != ai))
269+ if ((ao != aj))
256270 then throw("You attached wrong liquidity token from Swop.fi")
257271 else {
258- let aq = getIntegerValue(this, ak)
259- let ar = {
260- let i = getInteger(am)
272+ let ar = getIntegerValue(this, al)
273+ let as = {
274+ let i = getInteger(an)
261275 if ($isInstanceOf(i, "Int"))
262276 then {
263- let X = i
264- X
277+ let Y = i
278+ Y
265279 }
266280 else {
267281 let k = i
268282 0
269283 }
270284 }
271- let as = (aq + ag)
272- let at = ((ag - fraction(ag, 1, a, HALFUP)) - fraction(ag, 1, b, HALFUP))
273- let au = (ar + at)
274- let av = (((((h + "_") + al) + "_") + toBase58String(l.transactionId)) + "_locked")
275-[Reissue(fromBase58String(aa), at, true), ScriptTransfer(l.caller, at, fromBase58String(aa)), IntegerEntry(av, at), IntegerEntry(ak, as), IntegerEntry(am, au)]
285+ let at = (ar + ah)
286+ let au = ((ah - fraction(ah, 1, a, HALFUP)) - fraction(ah, 1, b, HALFUP))
287+ let av = (as + au)
288+ let aw = (((((h + "_") + am) + "_") + toBase58String(m.transactionId)) + "_locked")
289+[Reissue(fromBase58String(ab), au, true), ScriptTransfer(m.caller, au, fromBase58String(ab)), IntegerEntry(aw, au), IntegerEntry(al, at), IntegerEntry(an, av)]
276290 }
277291 }
278292 }
279293
280294
281295
282-@Callable(l)
283-func withdraw (h,ag) = if ((0 >= ag))
284- then throw(("Deposit amount must be positive. Actual: " + toString(ag)))
296+@Callable(m)
297+func withdraw (h,ah) = if ((0 >= ah))
298+ then throw(("Deposit amount must be positive. Actual: " + toString(ah)))
285299 else {
286- let ak = (h + "_asset_balance")
287- let al = toString(l.caller)
288- let am = (((h + "_") + al) + "_asset_balance")
289- let aa = g(h)
290- let an = {
291- let i = getString((h + "_liquidity_token"))
292- if ($isInstanceOf(i, "String"))
293- then {
294- let j = i
295- j
296- }
297- else {
298- let k = i
299- throw("You try to withdraw from unsupported pool")
300- }
301- }
302- let aq = getIntegerValue(this, ak)
303- let ar = {
304- let i = getInteger(am)
300+ let al = (h + "_asset_balance")
301+ let am = toString(m.caller)
302+ let an = (((h + "_") + am) + "_asset_balance")
303+ let ab = g(h)
304+ let ao = l(h)
305+ let ar = getIntegerValue(this, al)
306+ let as = {
307+ let i = getInteger(an)
305308 if ($isInstanceOf(i, "Int"))
306309 then {
307- let X = i
308- X
310+ let Y = i
311+ Y
309312 }
310313 else {
311314 let k = i
312315 0
313316 }
314317 }
315- let aw = ((ag - fraction(ag, 1, c, HALFUP)) - fraction(ag, 1, b, HALFUP))
316- let as = (aq - aw)
317- if ((ar >= ag))
318+ let ax = ((ah - fraction(ah, 1, c, HALFUP)) - fraction(ah, 1, b, HALFUP))
319+ let at = (ar - ax)
320+ if ((as >= ah))
318321 then {
319- let au = (ar - ag)
320-[Burn(fromBase58String(aa), aw), ScriptTransfer(l.caller, aw, fromBase58String(an)), IntegerEntry(ak, as), IntegerEntry(am, au)]
322+ let av = (as - ah)
323+[Burn(fromBase58String(ab), ax), ScriptTransfer(m.caller, ax, fromBase58String(ao)), IntegerEntry(al, at), IntegerEntry(an, av)]
321324 }
322325 else throw("You have not such balance for withdraw")
323326 }
324327
325328
326-@Verifier(ax)
327-func ay () = sigVerify(ax.bodyBytes, ax.proofs[0], ax.senderPublicKey)
329+
330+@Callable(m)
331+func claimReward (h) = {
332+ let am = toString(m.caller)
333+ let ay = (((h + "_") + am) + "_current_reward")
334+ let az = {
335+ let i = getInteger(ay)
336+ if ($isInstanceOf(i, "Int"))
337+ then {
338+ let Y = i
339+ Y
340+ }
341+ else {
342+ let k = i
343+ throw("You have not any reward in this pool")
344+ }
345+ }
346+ let ab = g(h)
347+ let ao = l(h)
348+[Burn(fromBase58String(ab), az), ScriptTransfer(m.caller, az, fromBase58String(ao)), IntegerEntry(ay, 0)]
349+ }
350+
351+
352+@Verifier(aA)
353+func aB () = sigVerify(aA.bodyBytes, aA.proofs[0], aA.senderPublicKey)
328354

github/deemru/w8io/169f3d6 
515.28 ms