tx · 5V44Y5meWuqF8XGuckBtNi79qdccqxSNS5GSfkrJ9vdj

3My57GB3ge7XtaAMqc3QMHYmHw5wyxEqWyd:  -0.01400000 Waves

2022.06.07 09:20 [2085573] smart account 3My57GB3ge7XtaAMqc3QMHYmHw5wyxEqWyd > SELF 0.00000000 Waves

{ "type": 13, "id": "5V44Y5meWuqF8XGuckBtNi79qdccqxSNS5GSfkrJ9vdj", "fee": 1400000, "feeAssetId": null, "timestamp": 1654582869788, "version": 1, "sender": "3My57GB3ge7XtaAMqc3QMHYmHw5wyxEqWyd", "senderPublicKey": "3n1MmdMKYw8xBhJPebRrNC3DzTdTg5nboqo1d4T2xLTG", "proofs": [ "37dfSchHSnr1kkE6Uj7zJGQxsUDUGGbxeoqy8o83cof5L5WRbjEwNTnwxnsCsbGE4nBjm8CE5TryxBpmNvuX8D2" ], "script": "base64:AAIFAAAAAAAAACcIAhIDCgEIEgMKAQgSABIDCgEYEggKBgEBAQEIARIDCgEIEgMKAQgAAAAhAAAAAANTRVACAAAAAl9fAAAAAAVFTVBUWQIAAAAAAAAAAA5pZHhQb29sQWRkcmVzcwAAAAAAAAAAAQAAAAAJaWR4TFBBc0lkAAAAAAAAAAADAAAAAAlpZHhBbUFzSWQAAAAAAAAAAAQAAAAACWlkeFByQXNJZAAAAAAAAAAABQAAAAAPaWR4RmFjdFN0YWtDbnRyAAAAAAAAAAABAAAAAAVkZWxheQIAAAAJJXNfX2RlbGF5AQAAAAtrZXlGYWN0Q250cgAAAAACAAAAEyVzX19mYWN0b3J5Q29udHJhY3QBAAAAE2tleU1hbmFnZXJQdWJsaWNLZXkAAAAAAgAAABQlc19fbWFuYWdlclB1YmxpY0tleQEAAAAaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAAAAAgAAABslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAAAAC2tleVBvb2xBZGRyAAAAAAIAAAAPJXNfX3Bvb2xBZGRyZXNzAQAAAAtrZXlBbXRBc3NldAAAAAACAAAADyVzX19hbW91bnRBc3NldAEAAAANa2V5UHJpY2VBc3NldAAAAAACAAAADiVzX19wcmljZUFzc2V0AQAAAA9rZXlBZG1pblB1YktleXMAAAAAAgAAABAlc19fYWRtaW5QdWJLZXlzAQAAAAZrZXlBbXAAAAAAAgAAAAclc19fYW1wAQAAAA1rZXlBbXBIaXN0b3J5AAAAAQAAAAZoZWlnaHQJAAEsAAAAAgIAAAALJXMlZF9fYW1wX18JAAGkAAAAAQUAAAAGaGVpZ2h0AQAAABZsYXN0R2V0T3JQdXRPbmVUa25DYWxsAAAAAQAAAAZjYWxsZXIJAAS5AAAAAgkABEwAAAACAgAAABwlcyVzX19sYXN0R2V0T3JQdXRPbmVUa25DYWxsCQAETAAAAAIFAAAABmNhbGxlcgUAAAADbmlsBQAAAANTRVABAAAAEGtleUZhY3RvcnlDb25maWcAAAAAAgAAABElc19fZmFjdG9yeUNvbmZpZwEAAAANa2V5UG9vbENvbmZpZwAAAAIAAAAGaUFtdEFzAAAABWlQckFzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACCVkJWQlc19fBQAAAAZpQW10QXMCAAAAAl9fBQAAAAVpUHJBcwIAAAAIX19jb25maWcBAAAAH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQAAAABAAAABWJBU3RyCQABLAAAAAICAAAAKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAAAABWJBU3RyAQAAAA9nZXRTdHJpbmdPckZhaWwAAAACAAAABGFkZHIAAAADa2V5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAEYWRkcgUAAAADa2V5CQAEuQAAAAIJAARMAAAAAgIAAAAKbWFuZGF0b3J5IAkABEwAAAACCQAEJQAAAAEFAAAABGFkZHIJAARMAAAAAgIAAAABLgkABEwAAAACBQAAAANrZXkJAARMAAAAAgIAAAAMIG5vdCBkZWZpbmVkBQAAAANuaWwCAAAAAAEAAAAMZ2V0SW50T3JGYWlsAAAAAgAAAARhZGRyAAAAA2tleQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABGFkZHIFAAAAA2tleQkABLkAAAACCQAETAAAAAICAAAACm1hbmRhdG9yeSAJAARMAAAAAgkABCUAAAABBQAAAARhZGRyCQAETAAAAAICAAAAAS4JAARMAAAAAgUAAAADa2V5CQAETAAAAAICAAAADCBub3QgZGVmaW5lZAUAAAADbmlsAgAAAAAAAAAADHBvb2xDb250cmFjdAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAIFAAAABHRoaXMJAQAAAAtrZXlQb29sQWRkcgAAAAAAAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAIFAAAADHBvb2xDb250cmFjdAkBAAAAC2tleUZhY3RDbnRyAAAAAAEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAABWFtdEFzCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAgUAAAAMcG9vbENvbnRyYWN0CQEAAAALa2V5QW10QXNzZXQAAAAABAAAAAdwcmljZUFzCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAgUAAAAMcG9vbENvbnRyYWN0CQEAAAANa2V5UHJpY2VBc3NldAAAAAAEAAAACGlQcmljZUFzCQEAAAAMZ2V0SW50T3JGYWlsAAAAAgUAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAAfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAAAAAEFAAAAB3ByaWNlQXMEAAAABmlBbXRBcwkBAAAADGdldEludE9yRmFpbAAAAAIFAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQAAAABBQAAAAVhbXRBcwkABLUAAAACCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAgUAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAANa2V5UG9vbENvbmZpZwAAAAIJAAGkAAAAAQUAAAAGaUFtdEFzCQABpAAAAAEFAAAACGlQcmljZUFzBQAAAANTRVABAAAAEGdldEZhY3RvcnlDb25maWcAAAAACQAEtQAAAAIJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAABBrZXlGYWN0b3J5Q29uZmlnAAAAAAUAAAADU0VQAQAAABZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAAAAAQAAAAHJG1hdGNoMAkABCIAAAABCQEAAAATa2V5TWFuYWdlclB1YmxpY0tleQAAAAADCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABcwUAAAAHJG1hdGNoMAkAAlkAAAABBQAAAAFzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BQAAAAR1bml0CQAAAgAAAAECAAAAC01hdGNoIGVycm9yAQAAAB1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdAAAAAAEAAAAByRtYXRjaDAJAAQiAAAAAQkBAAAAGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAAAAAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwCQACWQAAAAEFAAAAAXMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQFAAAABHVuaXQJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IBAAAAC211c3RNYW5hZ2VyAAAAAQAAAAFpBAAAAAJwZAkAAAIAAAABAgAAABFQZXJtaXNzaW9uIGRlbmllZAQAAAAHJG1hdGNoMAkBAAAAFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAAAAAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAJwawUAAAAHJG1hdGNoMAMJAAAAAAAAAggFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BQAAAAJwawYFAAAAAnBkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0AwkAAAAAAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMGBQAAAAJwZAkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgEAAAAJZ2V0QWRtaW5zAAAAAAQAAAAHJG1hdGNoMAkABCIAAAABCQEAAAAPa2V5QWRtaW5QdWJLZXlzAAAAAAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwAwkAAAAAAAACCQABMQAAAAEFAAAAAXMAAAAAAAAAAAAFAAAAA25pbAkABLUAAAACBQAAAAFzBQAAAANTRVAFAAAAA25pbAEAAAAJbXVzdEFkbWluAAAAAQAAAAFpAwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIJAQAAAAlnZXRBZG1pbnMAAAAACQACWAAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQYJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkBAAAACG11c3RQb29sAAAAAQAAAAFpAwkAAAAAAAACCAUAAAABaQAAAAZjYWxsZXIFAAAADHBvb2xDb250cmFjdAYJAAACAAAAAQIAAAAXY2FsbGVyIG11c3QgYmUgdGhlIHBvb2wAAAAHAAAAAWkBAAAAC2NvbnN0cnVjdG9yAAAAAQAAAAtwb29sQWRkcmVzcwQAAAALY2hlY2tDYWxsZXIJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAALa2V5UG9vbEFkZHIAAAAABQAAAAtwb29sQWRkcmVzcwUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAApzZXRNYW5hZ2VyAAAAAQAAABdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQQAAAALY2hlY2tDYWxsZXIJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgQAAAAVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQACWQAAAAEFAAAAF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AwkAAAAAAAACBQAAABVjaGVja01hbmFnZXJQdWJsaWNLZXkFAAAAFWNoZWNrTWFuYWdlclB1YmxpY0tleQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAAAABQAAABdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAOY29uZmlybU1hbmFnZXIAAAAABAAAAAJwbQkBAAAAHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAAAAAQAAAAFaGFzUE0DCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAACcG0GCQAAAgAAAAECAAAAEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAAAAAAAAgUAAAAFaGFzUE0FAAAABWhhc1BNBAAAAAdjaGVja1BNAwkAAAAAAAACCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAQAAAAV2YWx1ZQAAAAEFAAAAAnBtBgkAAAIAAAABAgAAABtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAAAAAAIFAAAAB2NoZWNrUE0F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", "chainId": 84, "height": 2085573, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BhSDvCcL11XC4hWSpPrax8TRYgAT91jWWWKwHb4ayoTb Next: none Diff:
OldNewDifferences
4444 func keyAmpHistory (height) = ("%s%d__amp__" + toString(height))
4545
4646
47-func lastGetOneTknCall (caller) = makeString(["%s%s__lastGetOneTknCall", caller], SEP)
48-
49-
50-func lastPutOneTknCall (caller) = makeString(["%s%s__lastPutOneTknCall", caller], SEP)
47+func lastGetOrPutOneTknCall (caller) = makeString(["%s%s__lastGetOrPutOneTknCall", caller], SEP)
5148
5249
5350 func keyFactoryConfig () = "%s__factoryConfig"
225222 if ((checkCaller == checkCaller))
226223 then {
227224 let res1 = invoke(poolContract, "setS", [keyAmp(), amp], nil)
228- let res2 = invoke(poolContract, "setS", [keyAmpHistory(r), amp], nil)
225+ let res2 = invoke(poolContract, "setS", [keyAmpHistory(height), amp], nil)
229226 $Tuple2(nil, $Tuple2(res1, res2))
230227 }
231228 else throw("Strict value is not equal to itself.")
234231
235232
236233 @Callable(i)
237-func ensureCanGetOneTkn (caller) = {
234+func ensureCanGetOrPutOneTkn (caller) = {
238235 let checkCaller = mustPool(i)
239236 if ((checkCaller == checkCaller))
240237 then {
241- let ensureCanPut = match getInteger(poolContract, lastPutOneTknCall(caller)) {
238+ let ensureCanPut = match getInteger(poolContract, lastGetOrPutOneTknCall(caller)) {
242239 case int: Int =>
243240 let permittedHeight = (int + value(getInteger(poolContract, delay)))
244- let isReadyforPutOneTkn = (r >= permittedHeight)
245- let needBlocks = (permittedHeight - r)
241+ let isReadyforPutOneTkn = (height >= permittedHeight)
242+ let needBlocks = (permittedHeight - height)
246243 if (isReadyforPutOneTkn)
247244 then true
248245 else throw(makeString(["you should wait", toString(needBlocks), "blocks more to perform the action"], " "))
251248 }
252249 if ((ensureCanPut == ensureCanPut))
253250 then {
254- let ensureCanGet = match getInteger(poolContract, lastGetOneTknCall(caller)) {
255- case int: Int =>
256- let permittedHeight = (int + value(getInteger(poolContract, delay)))
257- let isReadyforGetOneTkn = (r >= permittedHeight)
258- let needBlocks = (permittedHeight - r)
259- if (isReadyforGetOneTkn)
260- then true
261- else throw(makeString(["you should wait", toString(needBlocks), "blocks more to perform the action"], " "))
262- case _ =>
263- true
264- }
265- if ((ensureCanGet == ensureCanGet))
266- then {
267- let setI = invoke(poolContract, "setI", [lastPutOneTknCall(caller), r], nil)
268- if ((setI == setI))
269- then nil
270- else throw("Strict value is not equal to itself.")
271- }
272- else throw("Strict value is not equal to itself.")
273- }
274- else throw("Strict value is not equal to itself.")
275- }
276- else throw("Strict value is not equal to itself.")
277- }
278-
279-
280-
281-@Callable(i)
282-func ensureCanPutOneTkn (caller) = {
283- let checkCaller = mustPool(i)
284- if ((checkCaller == checkCaller))
285- then {
286- let ensureCanPut = match getInteger(poolContract, lastPutOneTknCall(caller)) {
287- case int: Int =>
288- let permittedHeight = (int + value(getInteger(poolContract, delay)))
289- let isReadyforPutOneTkn = (r >= permittedHeight)
290- let needBlocks = (permittedHeight - r)
291- if (isReadyforPutOneTkn)
292- then true
293- else throw(makeString(["you should wait", toString(needBlocks), "blocks more to perform the action"], " "))
294- case _ =>
295- true
296- }
297- if ((ensureCanPut == ensureCanPut))
298- then {
299- let ensureCanGet = match getInteger(poolContract, lastGetOneTknCall(caller)) {
300- case int: Int =>
301- let permittedHeight = (int + value(getInteger(poolContract, delay)))
302- let isReadyforGetOneTkn = (r >= permittedHeight)
303- let needBlocks = (permittedHeight - r)
304- if (isReadyforGetOneTkn)
305- then true
306- else throw(makeString(["you should wait", toString(needBlocks), "blocks more to perform the action"], " "))
307- case _ =>
308- true
309- }
310- if ((ensureCanGet == ensureCanGet))
311- then {
312- let setI = invoke(poolContract, "setI", [lastPutOneTknCall(caller), r], nil)
313- if ((setI == setI))
314- then nil
315- else throw("Strict value is not equal to itself.")
316- }
251+ let setI = invoke(poolContract, "setI", [lastGetOrPutOneTknCall(caller), height], nil)
252+ if ((setI == setI))
253+ then nil
317254 else throw("Strict value is not equal to itself.")
318255 }
319256 else throw("Strict value is not equal to itself.")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let SEP = "__"
55
66 let EMPTY = ""
77
88 let idxPoolAddress = 1
99
1010 let idxLPAsId = 3
1111
1212 let idxAmAsId = 4
1313
1414 let idxPrAsId = 5
1515
1616 let idxFactStakCntr = 1
1717
1818 let delay = "%s__delay"
1919
2020 func keyFactCntr () = "%s__factoryContract"
2121
2222
2323 func keyManagerPublicKey () = "%s__managerPublicKey"
2424
2525
2626 func keyPendingManagerPublicKey () = "%s__pendingManagerPublicKey"
2727
2828
2929 func keyPoolAddr () = "%s__poolAddress"
3030
3131
3232 func keyAmtAsset () = "%s__amountAsset"
3333
3434
3535 func keyPriceAsset () = "%s__priceAsset"
3636
3737
3838 func keyAdminPubKeys () = "%s__adminPubKeys"
3939
4040
4141 func keyAmp () = "%s__amp"
4242
4343
4444 func keyAmpHistory (height) = ("%s%d__amp__" + toString(height))
4545
4646
47-func lastGetOneTknCall (caller) = makeString(["%s%s__lastGetOneTknCall", caller], SEP)
48-
49-
50-func lastPutOneTknCall (caller) = makeString(["%s%s__lastPutOneTknCall", caller], SEP)
47+func lastGetOrPutOneTknCall (caller) = makeString(["%s%s__lastGetOrPutOneTknCall", caller], SEP)
5148
5249
5350 func keyFactoryConfig () = "%s__factoryConfig"
5451
5552
5653 func keyPoolConfig (iAmtAs,iPrAs) = (((("%d%d%s__" + iAmtAs) + "__") + iPrAs) + "__config")
5754
5855
5956 func keyMappingsBaseAsset2internalId (bAStr) = ("%s%s%s__mappings__baseAsset2internalId__" + bAStr)
6057
6158
6259 func getStringOrFail (addr,key) = valueOrErrorMessage(getString(addr, key), makeString(["mandatory ", toString(addr), ".", key, " not defined"], ""))
6360
6461
6562 func getIntOrFail (addr,key) = valueOrErrorMessage(getInteger(addr, key), makeString(["mandatory ", toString(addr), ".", key, " not defined"], ""))
6663
6764
6865 let poolContract = addressFromStringValue(getStringOrFail(this, keyPoolAddr()))
6966
7067 let factoryContract = addressFromStringValue(getStringOrFail(poolContract, keyFactCntr()))
7168
7269 func getPoolConfig () = {
7370 let amtAs = getStringOrFail(poolContract, keyAmtAsset())
7471 let priceAs = getStringOrFail(poolContract, keyPriceAsset())
7572 let iPriceAs = getIntOrFail(factoryContract, keyMappingsBaseAsset2internalId(priceAs))
7673 let iAmtAs = getIntOrFail(factoryContract, keyMappingsBaseAsset2internalId(amtAs))
7774 split(getStringOrFail(factoryContract, keyPoolConfig(toString(iAmtAs), toString(iPriceAs))), SEP)
7875 }
7976
8077
8178 func getFactoryConfig () = split(getStringOrFail(factoryContract, keyFactoryConfig()), SEP)
8279
8380
8481 func managerPublicKeyOrUnit () = match getString(keyManagerPublicKey()) {
8582 case s: String =>
8683 fromBase58String(s)
8784 case _: Unit =>
8885 unit
8986 case _ =>
9087 throw("Match error")
9188 }
9289
9390
9491 func pendingManagerPublicKeyOrUnit () = match getString(keyPendingManagerPublicKey()) {
9592 case s: String =>
9693 fromBase58String(s)
9794 case _: Unit =>
9895 unit
9996 case _ =>
10097 throw("Match error")
10198 }
10299
103100
104101 func mustManager (i) = {
105102 let pd = throw("Permission denied")
106103 match managerPublicKeyOrUnit() {
107104 case pk: ByteVector =>
108105 if ((i.callerPublicKey == pk))
109106 then true
110107 else pd
111108 case _: Unit =>
112109 if ((i.caller == this))
113110 then true
114111 else pd
115112 case _ =>
116113 throw("Match error")
117114 }
118115 }
119116
120117
121118 func getAdmins () = match getString(keyAdminPubKeys()) {
122119 case s: String =>
123120 if ((size(s) == 0))
124121 then nil
125122 else split(s, SEP)
126123 case _ =>
127124 nil
128125 }
129126
130127
131128 func mustAdmin (i) = if (containsElement(getAdmins(), toBase58String(i.callerPublicKey)))
132129 then true
133130 else mustManager(i)
134131
135132
136133 func mustPool (i) = if ((i.caller == poolContract))
137134 then true
138135 else throw("caller must be the pool")
139136
140137
141138 @Callable(i)
142139 func constructor (poolAddress) = {
143140 let checkCaller = mustManager(i)
144141 if ((checkCaller == checkCaller))
145142 then [StringEntry(keyPoolAddr(), poolAddress)]
146143 else throw("Strict value is not equal to itself.")
147144 }
148145
149146
150147
151148 @Callable(i)
152149 func setManager (pendingManagerPublicKey) = {
153150 let checkCaller = mustManager(i)
154151 if ((checkCaller == checkCaller))
155152 then {
156153 let checkManagerPublicKey = fromBase58String(pendingManagerPublicKey)
157154 if ((checkManagerPublicKey == checkManagerPublicKey))
158155 then [StringEntry(keyPendingManagerPublicKey(), pendingManagerPublicKey)]
159156 else throw("Strict value is not equal to itself.")
160157 }
161158 else throw("Strict value is not equal to itself.")
162159 }
163160
164161
165162
166163 @Callable(i)
167164 func confirmManager () = {
168165 let pm = pendingManagerPublicKeyOrUnit()
169166 let hasPM = if (isDefined(pm))
170167 then true
171168 else throw("No pending manager")
172169 if ((hasPM == hasPM))
173170 then {
174171 let checkPM = if ((i.callerPublicKey == value(pm)))
175172 then true
176173 else throw("You are not pending manager")
177174 if ((checkPM == checkPM))
178175 then [StringEntry(keyManagerPublicKey(), toBase58String(value(pm))), DeleteEntry(keyPendingManagerPublicKey())]
179176 else throw("Strict value is not equal to itself.")
180177 }
181178 else throw("Strict value is not equal to itself.")
182179 }
183180
184181
185182
186183 @Callable(i)
187184 func setAdmins (adminPubKeys) = {
188185 let checkCaller = mustManager(i)
189186 if ((checkCaller == checkCaller))
190187 then [StringEntry(keyAdminPubKeys(), makeString(adminPubKeys, SEP))]
191188 else throw("Strict value is not equal to itself.")
192189 }
193190
194191
195192
196193 @Callable(i)
197194 func unstakeAndGetOneTkn (amount,exchResult,notUsed,outAmount,outAssetId,slippage) = {
198195 let checkPayments = if ((size(i.payments) != 0))
199196 then throw("No pmnts expd")
200197 else true
201198 if ((checkPayments == checkPayments))
202199 then {
203200 let cfg = getPoolConfig()
204201 let factoryCfg = getFactoryConfig()
205202 let lpAssetId = fromBase58String(cfg[idxLPAsId])
206203 let staking = valueOrErrorMessage(addressFromString(factoryCfg[idxFactStakCntr]), "Wr st addr")
207204 let unstakeInv = invoke(staking, "unstake", [toBase58String(lpAssetId), amount], nil)
208205 if ((unstakeInv == unstakeInv))
209206 then {
210207 let getOneTkn = invoke(poolContract, "getOneTkn", [exchResult, notUsed, outAmount, outAssetId, slippage], [AttachedPayment(lpAssetId, amount)])
211208 if ((getOneTkn == getOneTkn))
212209 then nil
213210 else throw("Strict value is not equal to itself.")
214211 }
215212 else throw("Strict value is not equal to itself.")
216213 }
217214 else throw("Strict value is not equal to itself.")
218215 }
219216
220217
221218
222219 @Callable(i)
223220 func setAmp (amp) = {
224221 let checkCaller = mustAdmin(i)
225222 if ((checkCaller == checkCaller))
226223 then {
227224 let res1 = invoke(poolContract, "setS", [keyAmp(), amp], nil)
228- let res2 = invoke(poolContract, "setS", [keyAmpHistory(r), amp], nil)
225+ let res2 = invoke(poolContract, "setS", [keyAmpHistory(height), amp], nil)
229226 $Tuple2(nil, $Tuple2(res1, res2))
230227 }
231228 else throw("Strict value is not equal to itself.")
232229 }
233230
234231
235232
236233 @Callable(i)
237-func ensureCanGetOneTkn (caller) = {
234+func ensureCanGetOrPutOneTkn (caller) = {
238235 let checkCaller = mustPool(i)
239236 if ((checkCaller == checkCaller))
240237 then {
241- let ensureCanPut = match getInteger(poolContract, lastPutOneTknCall(caller)) {
238+ let ensureCanPut = match getInteger(poolContract, lastGetOrPutOneTknCall(caller)) {
242239 case int: Int =>
243240 let permittedHeight = (int + value(getInteger(poolContract, delay)))
244- let isReadyforPutOneTkn = (r >= permittedHeight)
245- let needBlocks = (permittedHeight - r)
241+ let isReadyforPutOneTkn = (height >= permittedHeight)
242+ let needBlocks = (permittedHeight - height)
246243 if (isReadyforPutOneTkn)
247244 then true
248245 else throw(makeString(["you should wait", toString(needBlocks), "blocks more to perform the action"], " "))
249246 case _ =>
250247 true
251248 }
252249 if ((ensureCanPut == ensureCanPut))
253250 then {
254- let ensureCanGet = match getInteger(poolContract, lastGetOneTknCall(caller)) {
255- case int: Int =>
256- let permittedHeight = (int + value(getInteger(poolContract, delay)))
257- let isReadyforGetOneTkn = (r >= permittedHeight)
258- let needBlocks = (permittedHeight - r)
259- if (isReadyforGetOneTkn)
260- then true
261- else throw(makeString(["you should wait", toString(needBlocks), "blocks more to perform the action"], " "))
262- case _ =>
263- true
264- }
265- if ((ensureCanGet == ensureCanGet))
266- then {
267- let setI = invoke(poolContract, "setI", [lastPutOneTknCall(caller), r], nil)
268- if ((setI == setI))
269- then nil
270- else throw("Strict value is not equal to itself.")
271- }
272- else throw("Strict value is not equal to itself.")
273- }
274- else throw("Strict value is not equal to itself.")
275- }
276- else throw("Strict value is not equal to itself.")
277- }
278-
279-
280-
281-@Callable(i)
282-func ensureCanPutOneTkn (caller) = {
283- let checkCaller = mustPool(i)
284- if ((checkCaller == checkCaller))
285- then {
286- let ensureCanPut = match getInteger(poolContract, lastPutOneTknCall(caller)) {
287- case int: Int =>
288- let permittedHeight = (int + value(getInteger(poolContract, delay)))
289- let isReadyforPutOneTkn = (r >= permittedHeight)
290- let needBlocks = (permittedHeight - r)
291- if (isReadyforPutOneTkn)
292- then true
293- else throw(makeString(["you should wait", toString(needBlocks), "blocks more to perform the action"], " "))
294- case _ =>
295- true
296- }
297- if ((ensureCanPut == ensureCanPut))
298- then {
299- let ensureCanGet = match getInteger(poolContract, lastGetOneTknCall(caller)) {
300- case int: Int =>
301- let permittedHeight = (int + value(getInteger(poolContract, delay)))
302- let isReadyforGetOneTkn = (r >= permittedHeight)
303- let needBlocks = (permittedHeight - r)
304- if (isReadyforGetOneTkn)
305- then true
306- else throw(makeString(["you should wait", toString(needBlocks), "blocks more to perform the action"], " "))
307- case _ =>
308- true
309- }
310- if ((ensureCanGet == ensureCanGet))
311- then {
312- let setI = invoke(poolContract, "setI", [lastPutOneTknCall(caller), r], nil)
313- if ((setI == setI))
314- then nil
315- else throw("Strict value is not equal to itself.")
316- }
251+ let setI = invoke(poolContract, "setI", [lastGetOrPutOneTknCall(caller), height], nil)
252+ if ((setI == setI))
253+ then nil
317254 else throw("Strict value is not equal to itself.")
318255 }
319256 else throw("Strict value is not equal to itself.")
320257 }
321258 else throw("Strict value is not equal to itself.")
322259 }
323260
324261
325262 @Verifier(tx)
326263 func verify () = {
327264 let targetPublicKey = match managerPublicKeyOrUnit() {
328265 case pk: ByteVector =>
329266 pk
330267 case _: Unit =>
331268 tx.senderPublicKey
332269 case _ =>
333270 throw("Match error")
334271 }
335272 sigVerify(tx.bodyBytes, tx.proofs[0], targetPublicKey)
336273 }
337274

github/deemru/w8io/169f3d6 
62.81 ms