tx · 6FUJKpscEYNtgMSt11ouvqs2JqrerY66acpXF6GKGCgP

3N8bnD2caKnxdcTqvrJUEkDe3XebgfwWjSV:  -0.01400000 Waves

2022.05.30 17:39 [2074520] smart account 3N8bnD2caKnxdcTqvrJUEkDe3XebgfwWjSV > SELF 0.00000000 Waves

{ "type": 13, "id": "6FUJKpscEYNtgMSt11ouvqs2JqrerY66acpXF6GKGCgP", "fee": 1400000, "feeAssetId": null, "timestamp": 1653921608825, "version": 1, "sender": "3N8bnD2caKnxdcTqvrJUEkDe3XebgfwWjSV", "senderPublicKey": "8KXPjDuC8ffL9qjNuDBLnkvJKbMojhZYcnm2o75UCyun", "proofs": [ "cXzc1h5c8ziiGBuaUnphwkunuFEhs2r746qTJBaQzJ2RzBCUeQCZYb2JmL2229uuDD3MZLLHhdmHEMcrzpZVksn" ], "script": "base64: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bnRyYWN0CQEAAAALa2V5RmFjdENudHIAAAAAAQAAAA1nZXRQb29sQ29uZmlnAAAAAAQAAAAFYW10QXMJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAACBQAAAAxwb29sQ29udHJhY3QJAQAAAAtrZXlBbXRBc3NldAAAAAAEAAAAB3ByaWNlQXMJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAACBQAAAAxwb29sQ29udHJhY3QJAQAAAA1rZXlQcmljZUFzc2V0AAAAAAQAAAAIaVByaWNlQXMJAQAAAAxnZXRJbnRPckZhaWwAAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAAB9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAAAAAQUAAAAHcHJpY2VBcwQAAAAGaUFtdEFzCQEAAAAMZ2V0SW50T3JGYWlsAAAAAgUAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAAfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAAAAAEFAAAABWFtdEFzCQAEtQAAAAIJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAAA1rZXlQb29sQ29uZmlnAAAAAgkAAaQAAAABBQAAAAZpQW10QXMJAAGkAAAAAQUAAAAIaVByaWNlQXMFAAAAA1NFUAEAAAAQZ2V0RmFjdG9yeUNvbmZpZwAAAAAJAAS1AAAAAgkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAIFAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAEGtleUZhY3RvcnlDb25maWcAAAAABQAAAANTRVABAAAAFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAAAABAAAAAckbWF0Y2gwCQAEIgAAAAEJAQAAABNrZXlNYW5hZ2VyUHVibGljS2V5AAAAAAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwCQACWQAAAAEFAAAAAXMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQFAAAABHVuaXQJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IBAAAAHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAAAAAQAAAAHJG1hdGNoMAkABCIAAAABCQEAAAAaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAAAAAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXMFAAAAByRtYXRjaDAJAAJZAAAAAQUAAAABcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAUAAAAEdW5pdAkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgEAAAALbXVzdE1hbmFnZXIAAAABAAAAAWkEAAAAAnBkCQAAAgAAAAECAAAAF1Blcm1pc3Npb24gZGVuaWVkIGFkZG9uBAAAAAckbWF0Y2gwCQEAAAAWbWFuYWdlclB1YmxpY0tleU9yVW5pdAAAAAADCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACkJ5dGVWZWN0b3IEAAAAAnBrBQAAAAckbWF0Y2gwAwkAAAAAAAACCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkFAAAAAnBrBgUAAAACcGQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQDCQAAAAAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwYFAAAAAnBkCQAAAgAAAAECAAAAC01hdGNoIGVycm9yAQAAAAlnZXRBZG1pbnMAAAAABAAAAAckbWF0Y2gwCQAEIgAAAAEJAQAAAA9rZXlBZG1pblB1YktleXMAAAAAAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXMFAAAAByRtYXRjaDADCQAAAAAAAAIJAAExAAAAAQUAAAABcwAAAAAAAAAAAAUAAAADbmlsCQAEtQAAAAIFAAAAAXMFAAAAA1NFUAUAAAADbmlsAQAAAAltdXN0QWRtaW4AAAABAAAAAWkDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkBAAAACWdldEFkbWlucwAAAAAJAAJYAAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BgkBAAAAC211c3RNYW5hZ2VyAAAAAQUAAAABaQEAAAAIbXVzdFBvb2wAAAABAAAAAWkDCQAAAAAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAMcG9vbENvbnRyYWN0BgkAAAIAAAABAgAAABdjYWxsZXIgbXVzdCBiZSB0aGUgcG9vbAAAAAgAAAABaQEAAAALY29uc3RydWN0b3IAAAABAAAAC3Bvb2xBZGRyZXNzBAAAAAtjaGVja0NhbGxlcgkBAAAAC211c3RNYW5hZ2VyAAAAAQUAAAABaQMJAAAAAAAAAgUAAAALY2hlY2tDYWxsZXIFAAAAC2NoZWNrQ2FsbGVyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAtrZXlQb29sQWRkcgAAAAAFAAAAC3Bvb2xBZGRyZXNzBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAACnNldE1hbmFnZXIAAAABAAAAF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BAAAAAtjaGVja0NhbGxlcgkBAAAAC211c3RNYW5hZ2VyAAAAAQUAAAABaQMJAAAAAAAAAgUAAAALY2hlY2tDYWxsZXIFAAAAC2NoZWNrQ2FsbGVyBAAAABVjaGVja01hbmFnZXJQdWJsaWNLZXkJAAJZAAAAAQUAAAAXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkDCQAAAAAAAAIFAAAAFWNoZWNrTWFuYWdlclB1YmxpY0tleQUAAAAVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAAAAAFAAAAF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAA5jb25maXJtTWFuYWdlcgAAAAAEAAAAAnBtCQEAAAAdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQAAAAABAAAAAVoYXNQTQMJAQAAAAlpc0RlZmluZWQAAAABBQAAAAJwbQYJAAACAAAAAQIAAAASTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAAAAAACBQAAAAVoYXNQTQUAAAAFaGFzUE0EAAAAB2NoZWNrUE0DCQAAAAAAAAIIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQkBAAAABXZhbHVlAAAAAQUAAAACcG0GCQAAAgAAAAECAAAAG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAAAAAAAAgUAAAAHY2hlY2tQTQUAAAAHY2hlY2tQTQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAATa2V5TWFuYWdlclB1YmxpY0tleQAAAAAJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQUAAAACcG0JAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAAAAAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAJc2V0QWRtaW5zAAAAAQAAAAxhZG1pblB1YktleXMEAAAAC2NoZWNrQ2FsbGVyCQEAAAALbXVzdE1hbmFnZXIAAAABBQAAAAFpAwkAAAAAAAACBQAAAAtjaGVja0NhbGxlcgUAAAALY2hlY2tDYWxsZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAD2tleUFkbWluUHViS2V5cwAAAAAJAAS5AAAAAgUAAAAMYWRtaW5QdWJLZXlzBQAAAANTRVAFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAATdW5zdGFrZUFuZEdldE9uZVRrbgAAAAYAAAAGYW1vdW50AAAACmV4Y2hSZXN1bHQAAAAHbm90VXNlZAAAAAlvdXRBbW91bnQAAAAKb3V0QXNzZXRJZAAAAAhzbGlwcGFnZQQAAAANY2hlY2tQYXltZW50cwMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAJAAACAAAAAQIAAAANTm8gcG1udHMgZXhwZAYDCQAAAAAAAAIFAAAADWNoZWNrUGF5bWVudHMFAAAADWNoZWNrUGF5bWVudHMEAAAAA2NmZwkBAAAADWdldFBvb2xDb25maWcAAAAABAAAAApmYWN0b3J5Q2ZnCQEAAAAQZ2V0RmFjdG9yeUNvbmZpZwAAAAAEAAAACWxwQXNzZXRJZAkAAlkAAAABCQABkQAAAAIFAAAAA2NmZwUAAAAJaWR4TFBBc0lkBAAAAAdzdGFraW5nCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQkAAZEAAAACBQAAAApmYWN0b3J5Q2ZnBQAAAA9pZHhGYWN0U3Rha0NudHICAAAACldyIHN0IGFkZHIEAAAACnVuc3Rha2VJbnYJAAP8AAAABAUAAAAHc3Rha2luZwIAAAAHdW5zdGFrZQkABEwAAAACCQACWAAAAAEFAAAACWxwQXNzZXRJZAkABEwAAAACBQAAAAZhbW91bnQFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAAp1bnN0YWtlSW52BQAAAAp1bnN0YWtlSW52BAAAAAlnZXRPbmVUa24JAAP8AAAABAUAAAAMcG9vbENvbnRyYWN0AgAAAAlnZXRPbmVUa24JAARMAAAAAgUAAAAKZXhjaFJlc3VsdAkABEwAAAACBQAAAAdub3RVc2VkCQAETAAAAAIFAAAACW91dEFtb3VudAkABEwAAAACBQAAAApvdXRBc3NldElkCQAETAAAAAIFAAAACHNsaXBwYWdlBQAAAANuaWwJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIFAAAACWxwQXNzZXRJZAUAAAAGYW1vdW50BQAAAANuaWwDCQAAAAAAAAIFAAAACWdldE9uZVRrbgUAAAAJZ2V0T25lVGtuBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAGc2V0QW1wAAAAAQAAAANhbXAEAAAAC2NoZWNrQ2FsbGVyCQEAAAAJbXVzdEFkbWluAAAAAQUAAAABaQMJAAAAAAAAAgUAAAALY2hlY2tDYWxsZXIFAAAAC2NoZWNrQ2FsbGVyBAAAAARyZXMxCQAD/AAAAAQFAAAADHBvb2xDb250cmFjdAIAAAAEc2V0UwkABEwAAAACCQEAAAAGa2V5QW1wAAAAAAkABEwAAAACBQAAAANhbXAFAAAAA25pbAUAAAADbmlsBAAAAARyZXMyCQAD/AAAAAQFAAAADHBvb2xDb250cmFjdAIAAAAEc2V0UwkABEwAAAACCQEAAAANa2V5QW1wSGlzdG9yeQAAAAEFAAAABmhlaWdodAkABEwAAAACBQAAAANhbXAFAAAAA25pbAUAAAADbmlsCQAFFAAAAAIFAAAAA25pbAkABRQAAAACBQAAAARyZXMxBQAAAARyZXMyCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAABJlbnN1cmVDYW5HZXRPbmVUa24AAAABAAAABmNhbGxlcgQAAAALY2hlY2tDYWxsZXIJAQAAAAhtdXN0UG9vbAAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgQAAAAGZW5zdXJlBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAADHBvb2xDb250cmFjdAkBAAAAEWxhc3RHZXRPbmVUa25DYWxsAAAAAQUAAAAGY2FsbGVyAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAA2ludAUAAAAHJG1hdGNoMAQAAAAPcGVybWl0dGVkSGVpZ2h0CQAAZAAAAAIFAAAAA2ludAkBAAAABXZhbHVlAAAAAQkABBoAAAACBQAAAAxwb29sQ29udHJhY3QFAAAABWRlbGF5BAAAABNpc1JlYWR5Zm9yR2V0T25lVGtuCQAAZwAAAAIFAAAAD3Blcm1pdHRlZEhlaWdodAUAAAAGaGVpZ2h0BAAAAApuZWVkQmxvY2tzCQAAZQAAAAIFAAAAD3Blcm1pdHRlZEhlaWdodAUAAAAGaGVpZ2h0AwUAAAATaXNSZWFkeWZvckdldE9uZVRrbgYJAAACAAAAAQkABLkAAAACCQAETAAAAAICAAAACHdhaXQgZm9yCQAETAAAAAIJAAGkAAAAAQUAAAAKbmVlZEJsb2NrcwkABEwAAAACAgAAAA1ibG9jayhzKSBtb3JlBQAAAANuaWwCAAAAASAGBAAAAARzZXRJCQAD/AAAAAQFAAAADHBvb2xDb250cmFjdAIAAAAEc2V0SQkABEwAAAACCQEAAAARbGFzdEdldE9uZVRrbkNhbGwAAAABBQAAAAZjYWxsZXIJAARMAAAAAgUAAAAGaGVpZ2h0BQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAEc2V0SQUAAAAEc2V0SQkABRQAAAACBQAAAANuaWwFAAAABmVuc3VyZQkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAEmVuc3VyZUNhblB1dE9uZVRrbgAAAAEAAAAGY2FsbGVyBAAAAAtjaGVja0NhbGxlcgkBAAAACG11c3RQb29sAAAAAQUAAAABaQMJAAAAAAAAAgUAAAALY2hlY2tDYWxsZXIFAAAAC2NoZWNrQ2FsbGVyBAAAAAZlbnN1cmUEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAMcG9vbENvbnRyYWN0CQEAAAARbGFzdFB1dE9uZVRrbkNhbGwAAAABBQAAAAZjYWxsZXIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAADaW50BQAAAAckbWF0Y2gwBAAAAA9wZXJtaXR0ZWRIZWlnaHQJAABkAAAAAgUAAAADaW50CQEAAAAFdmFsdWUAAAABCQAEGgAAAAIFAAAADHBvb2xDb250cmFjdAUAAAAFZGVsYXkEAAAAE2lzUmVhZHlmb3JQdXRPbmVUa24JAABnAAAAAgUAAAAPcGVybWl0dGVkSGVpZ2h0BQAAAAZoZWlnaHQEAAAACm5lZWRCbG9ja3MJAABlAAAAAgUAAAAPcGVybWl0dGVkSGVpZ2h0BQAAAAZoZWlnaHQDBQAAABNpc1JlYWR5Zm9yUHV0T25lVGtuBgkAAAIAAAABCQAEuQAAAAIJAARMAAAAAgIAAAAId2FpdCBmb3IJAARMAAAAAgkAAaQAAAABBQAAAApuZWVkQmxvY2tzCQAETAAAAAICAAAADWJsb2NrKHMpIG1vcmUFAAAAA25pbAIAAAABIAYEAAAABWVycm9yAgAAABhlbnN1cmVDYW5QdXRPbmVUa24gZXJyb3IDCQAAAAAAAAIFAAAABWVycm9yBQAAAAVlcnJvcgQAAAAEc2V0SQkAA/wAAAAEBQAAAAxwb29sQ29udHJhY3QCAAAABHNldEkJAARMAAAAAgkBAAAAEWxhc3RQdXRPbmVUa25DYWxsAAAAAQUAAAAGY2FsbGVyCQAETAAAAAIFAAAABmhlaWdodAUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAABHNldEkFAAAABHNldEkJAAUUAAAAAgUAAAADbmlsBQAAAAZlbnN1cmUJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABAAAAA90YXJnZXRQdWJsaWNLZXkEAAAAByRtYXRjaDAJAQAAABZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAAAAAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAACcGsFAAAAByRtYXRjaDAFAAAAAnBrAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0CAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5CQAAAgAAAAECAAAAC01hdGNoIGVycm9yCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAAPdGFyZ2V0UHVibGljS2V53GclrA==", "chainId": 84, "height": 2074520, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FxDtQrHW7jpL4M9L5Sn3c8mNWMFGrgakQD5KGtXBxT1s Next: 31YixHqYC1nYF9Etm8hGVyun2Dnv2cdaovKeYyLpD4Ay Diff:
OldNewDifferences
275275 case _ =>
276276 true
277277 }
278- let setI = invoke(poolContract, "setI", [lastPutOneTknCall(caller), height], nil)
279- if ((setI == setI))
280- then $Tuple2(nil, ensure)
278+ let error = "ensureCanPutOneTkn error"
279+ if ((error == error))
280+ then {
281+ let setI = invoke(poolContract, "setI", [lastPutOneTknCall(caller), height], nil)
282+ if ((setI == setI))
283+ then $Tuple2(nil, ensure)
284+ else throw("Strict value is not equal to itself.")
285+ }
281286 else throw("Strict value is not equal to itself.")
282287 }
283288 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
4747 func lastGetOneTknCall (caller) = makeString(["%s%s__lastGetOneTknCall", caller], SEP)
4848
4949
5050 func lastPutOneTknCall (caller) = makeString(["%s%s__lastPutOneTknCall", caller], SEP)
5151
5252
5353 func keyFactoryConfig () = "%s__factoryConfig"
5454
5555
5656 func keyPoolConfig (iAmtAs,iPrAs) = (((("%d%d%s__" + iAmtAs) + "__") + iPrAs) + "__config")
5757
5858
5959 func keyMappingsBaseAsset2internalId (bAStr) = ("%s%s%s__mappings__baseAsset2internalId__" + bAStr)
6060
6161
6262 func getStringOrFail (addr,key) = valueOrErrorMessage(getString(addr, key), makeString(["mandatory ", toString(addr), ".", key, " not defined"], ""))
6363
6464
6565 func getIntOrFail (addr,key) = valueOrErrorMessage(getInteger(addr, key), makeString(["mandatory ", toString(addr), ".", key, " not defined"], ""))
6666
6767
6868 let poolContract = addressFromStringValue(getStringOrFail(this, keyPoolAddr()))
6969
7070 let factoryContract = addressFromStringValue(getStringOrFail(poolContract, keyFactCntr()))
7171
7272 func getPoolConfig () = {
7373 let amtAs = getStringOrFail(poolContract, keyAmtAsset())
7474 let priceAs = getStringOrFail(poolContract, keyPriceAsset())
7575 let iPriceAs = getIntOrFail(factoryContract, keyMappingsBaseAsset2internalId(priceAs))
7676 let iAmtAs = getIntOrFail(factoryContract, keyMappingsBaseAsset2internalId(amtAs))
7777 split(getStringOrFail(factoryContract, keyPoolConfig(toString(iAmtAs), toString(iPriceAs))), SEP)
7878 }
7979
8080
8181 func getFactoryConfig () = split(getStringOrFail(factoryContract, keyFactoryConfig()), SEP)
8282
8383
8484 func managerPublicKeyOrUnit () = match getString(keyManagerPublicKey()) {
8585 case s: String =>
8686 fromBase58String(s)
8787 case _: Unit =>
8888 unit
8989 case _ =>
9090 throw("Match error")
9191 }
9292
9393
9494 func pendingManagerPublicKeyOrUnit () = match getString(keyPendingManagerPublicKey()) {
9595 case s: String =>
9696 fromBase58String(s)
9797 case _: Unit =>
9898 unit
9999 case _ =>
100100 throw("Match error")
101101 }
102102
103103
104104 func mustManager (i) = {
105105 let pd = throw("Permission denied addon")
106106 match managerPublicKeyOrUnit() {
107107 case pk: ByteVector =>
108108 if ((i.callerPublicKey == pk))
109109 then true
110110 else pd
111111 case _: Unit =>
112112 if ((i.caller == this))
113113 then true
114114 else pd
115115 case _ =>
116116 throw("Match error")
117117 }
118118 }
119119
120120
121121 func getAdmins () = match getString(keyAdminPubKeys()) {
122122 case s: String =>
123123 if ((size(s) == 0))
124124 then nil
125125 else split(s, SEP)
126126 case _ =>
127127 nil
128128 }
129129
130130
131131 func mustAdmin (i) = if (containsElement(getAdmins(), toBase58String(i.callerPublicKey)))
132132 then true
133133 else mustManager(i)
134134
135135
136136 func mustPool (i) = if ((i.caller == poolContract))
137137 then true
138138 else throw("caller must be the pool")
139139
140140
141141 @Callable(i)
142142 func constructor (poolAddress) = {
143143 let checkCaller = mustManager(i)
144144 if ((checkCaller == checkCaller))
145145 then [StringEntry(keyPoolAddr(), poolAddress)]
146146 else throw("Strict value is not equal to itself.")
147147 }
148148
149149
150150
151151 @Callable(i)
152152 func setManager (pendingManagerPublicKey) = {
153153 let checkCaller = mustManager(i)
154154 if ((checkCaller == checkCaller))
155155 then {
156156 let checkManagerPublicKey = fromBase58String(pendingManagerPublicKey)
157157 if ((checkManagerPublicKey == checkManagerPublicKey))
158158 then [StringEntry(keyPendingManagerPublicKey(), pendingManagerPublicKey)]
159159 else throw("Strict value is not equal to itself.")
160160 }
161161 else throw("Strict value is not equal to itself.")
162162 }
163163
164164
165165
166166 @Callable(i)
167167 func confirmManager () = {
168168 let pm = pendingManagerPublicKeyOrUnit()
169169 let hasPM = if (isDefined(pm))
170170 then true
171171 else throw("No pending manager")
172172 if ((hasPM == hasPM))
173173 then {
174174 let checkPM = if ((i.callerPublicKey == value(pm)))
175175 then true
176176 else throw("You are not pending manager")
177177 if ((checkPM == checkPM))
178178 then [StringEntry(keyManagerPublicKey(), toBase58String(value(pm))), DeleteEntry(keyPendingManagerPublicKey())]
179179 else throw("Strict value is not equal to itself.")
180180 }
181181 else throw("Strict value is not equal to itself.")
182182 }
183183
184184
185185
186186 @Callable(i)
187187 func setAdmins (adminPubKeys) = {
188188 let checkCaller = mustManager(i)
189189 if ((checkCaller == checkCaller))
190190 then [StringEntry(keyAdminPubKeys(), makeString(adminPubKeys, SEP))]
191191 else throw("Strict value is not equal to itself.")
192192 }
193193
194194
195195
196196 @Callable(i)
197197 func unstakeAndGetOneTkn (amount,exchResult,notUsed,outAmount,outAssetId,slippage) = {
198198 let checkPayments = if ((size(i.payments) != 0))
199199 then throw("No pmnts expd")
200200 else true
201201 if ((checkPayments == checkPayments))
202202 then {
203203 let cfg = getPoolConfig()
204204 let factoryCfg = getFactoryConfig()
205205 let lpAssetId = fromBase58String(cfg[idxLPAsId])
206206 let staking = valueOrErrorMessage(addressFromString(factoryCfg[idxFactStakCntr]), "Wr st addr")
207207 let unstakeInv = invoke(staking, "unstake", [toBase58String(lpAssetId), amount], nil)
208208 if ((unstakeInv == unstakeInv))
209209 then {
210210 let getOneTkn = invoke(poolContract, "getOneTkn", [exchResult, notUsed, outAmount, outAssetId, slippage], [AttachedPayment(lpAssetId, amount)])
211211 if ((getOneTkn == getOneTkn))
212212 then nil
213213 else throw("Strict value is not equal to itself.")
214214 }
215215 else throw("Strict value is not equal to itself.")
216216 }
217217 else throw("Strict value is not equal to itself.")
218218 }
219219
220220
221221
222222 @Callable(i)
223223 func setAmp (amp) = {
224224 let checkCaller = mustAdmin(i)
225225 if ((checkCaller == checkCaller))
226226 then {
227227 let res1 = invoke(poolContract, "setS", [keyAmp(), amp], nil)
228228 let res2 = invoke(poolContract, "setS", [keyAmpHistory(height), amp], nil)
229229 $Tuple2(nil, $Tuple2(res1, res2))
230230 }
231231 else throw("Strict value is not equal to itself.")
232232 }
233233
234234
235235
236236 @Callable(i)
237237 func ensureCanGetOneTkn (caller) = {
238238 let checkCaller = mustPool(i)
239239 if ((checkCaller == checkCaller))
240240 then {
241241 let ensure = match getInteger(poolContract, lastGetOneTknCall(caller)) {
242242 case int: Int =>
243243 let permittedHeight = (int + value(getInteger(poolContract, delay)))
244244 let isReadyforGetOneTkn = (permittedHeight >= height)
245245 let needBlocks = (permittedHeight - height)
246246 if (isReadyforGetOneTkn)
247247 then true
248248 else throw(makeString(["wait for", toString(needBlocks), "block(s) more"], " "))
249249 case _ =>
250250 true
251251 }
252252 let setI = invoke(poolContract, "setI", [lastGetOneTknCall(caller), height], nil)
253253 if ((setI == setI))
254254 then $Tuple2(nil, ensure)
255255 else throw("Strict value is not equal to itself.")
256256 }
257257 else throw("Strict value is not equal to itself.")
258258 }
259259
260260
261261
262262 @Callable(i)
263263 func ensureCanPutOneTkn (caller) = {
264264 let checkCaller = mustPool(i)
265265 if ((checkCaller == checkCaller))
266266 then {
267267 let ensure = match getInteger(poolContract, lastPutOneTknCall(caller)) {
268268 case int: Int =>
269269 let permittedHeight = (int + value(getInteger(poolContract, delay)))
270270 let isReadyforPutOneTkn = (permittedHeight >= height)
271271 let needBlocks = (permittedHeight - height)
272272 if (isReadyforPutOneTkn)
273273 then true
274274 else throw(makeString(["wait for", toString(needBlocks), "block(s) more"], " "))
275275 case _ =>
276276 true
277277 }
278- let setI = invoke(poolContract, "setI", [lastPutOneTknCall(caller), height], nil)
279- if ((setI == setI))
280- then $Tuple2(nil, ensure)
278+ let error = "ensureCanPutOneTkn error"
279+ if ((error == error))
280+ then {
281+ let setI = invoke(poolContract, "setI", [lastPutOneTknCall(caller), height], nil)
282+ if ((setI == setI))
283+ then $Tuple2(nil, ensure)
284+ else throw("Strict value is not equal to itself.")
285+ }
281286 else throw("Strict value is not equal to itself.")
282287 }
283288 else throw("Strict value is not equal to itself.")
284289 }
285290
286291
287292 @Verifier(tx)
288293 func verify () = {
289294 let targetPublicKey = match managerPublicKeyOrUnit() {
290295 case pk: ByteVector =>
291296 pk
292297 case _: Unit =>
293298 tx.senderPublicKey
294299 case _ =>
295300 throw("Match error")
296301 }
297302 sigVerify(tx.bodyBytes, tx.proofs[0], targetPublicKey)
298303 }
299304

github/deemru/w8io/873ac7e 
100.31 ms