tx · 5NChLH48U9yoomh6XV6XoE15GrHXjDydyGTeMn4QLBYR

3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz:  -0.03500000 Waves

2022.06.08 16:48 [2087469] smart account 3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz > SELF 0.00000000 Waves

{ "type": 13, "id": "5NChLH48U9yoomh6XV6XoE15GrHXjDydyGTeMn4QLBYR", "fee": 3500000, "feeAssetId": null, "timestamp": 1654696121777, "version": 1, "sender": "3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz", "senderPublicKey": "D28XoueZWsMfm8Y5pa6C5ZFuYoWgre2Wm8tzJANJgMnq", "proofs": [ "53kNL3BYjKZxvaxNkB7oezgTHw6MUouZNCnqMMZPNVHNQFFoKM6HZeSmWZ8AQquj3AL8hcQsuS4ADnu2NYor3oAn" ], "script": "base64:AAIFAAAAAAAAACcIAhIDCgEIEgMKAQgSABIDCgEYEggKBgEBAQEIARIDCgEIEgMKAQgAAAAhAAAAAANTRVACAAAAAl9fAAAAAAVFTVBUWQIAAAAAAAAAAA5pZHhQb29sQWRkcmVzcwAAAAAAAAAAAQAAAAAJaWR4TFBBc0lkAAAAAAAAAAADAAAAAAlpZHhBbUFzSWQAAAAAAAAAAAQAAAAACWlkeFByQXNJZAAAAAAAAAAABQAAAAAPaWR4RmFjdFN0YWtDbnRyAAAAAAAAAAABAAAAAAVkZWxheQIAAAAJJXNfX2RlbGF5AQAAAAtrZXlGYWN0Q250cgAAAAACAAAAEyVzX19mYWN0b3J5Q29udHJhY3QBAAAAE2tleU1hbmFnZXJQdWJsaWNLZXkAAAAAAgAAABQlc19fbWFuYWdlclB1YmxpY0tleQEAAAAaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAAAAAgAAABslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAAAAC2tleVBvb2xBZGRyAAAAAAIAAAAPJXNfX3Bvb2xBZGRyZXNzAQAAAAtrZXlBbXRBc3NldAAAAAACAAAADyVzX19hbW91bnRBc3NldAEAAAANa2V5UHJpY2VBc3NldAAAAAACAAAADiVzX19wcmljZUFzc2V0AQAAAA9rZXlBZG1pblB1YktleXMAAAAAAgAAABAlc19fYWRtaW5QdWJLZXlzAQAAAAZrZXlBbXAAAAAAAgAAAAclc19fYW1wAQAAAA1rZXlBbXBIaXN0b3J5AAAAAQAAAAZoZWlnaHQJAAEsAAAAAgIAAAALJXMlZF9fYW1wX18JAAGkAAAAAQUAAAAGaGVpZ2h0AQAAABZsYXN0R2V0T3JQdXRPbmVUa25DYWxsAAAAAQAAAAZjYWxsZXIJAAS5AAAAAgkABEwAAAACAgAAABwlcyVzX19sYXN0R2V0T3JQdXRPbmVUa25DYWxsCQAETAAAAAIFAAAABmNhbGxlcgUAAAADbmlsBQAAAANTRVABAAAAEGtleUZhY3RvcnlDb25maWcAAAAAAgAAABElc19fZmFjdG9yeUNvbmZpZwEAAAANa2V5UG9vbENvbmZpZwAAAAIAAAAGaUFtdEFzAAAABWlQckFzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACCVkJWQlc19fBQAAAAZpQW10QXMCAAAAAl9fBQAAAAVpUHJBcwIAAAAIX19jb25maWcBAAAAH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQAAAABAAAABWJBU3RyCQABLAAAAAICAAAAKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAAAABWJBU3RyAQAAAA9nZXRTdHJpbmdPckZhaWwAAAACAAAABGFkZHIAAAADa2V5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAEYWRkcgUAAAADa2V5CQAEuQAAAAIJAARMAAAAAgIAAAAKbWFuZGF0b3J5IAkABEwAAAACCQAEJQAAAAEFAAAABGFkZHIJAARMAAAAAgIAAAABLgkABEwAAAACBQAAAANrZXkJAARMAAAAAgIAAAAMIG5vdCBkZWZpbmVkBQAAAANuaWwCAAAAAAEAAAAMZ2V0SW50T3JGYWlsAAAAAgAAAARhZGRyAAAAA2tleQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABGFkZHIFAAAAA2tleQkABLkAAAACCQAETAAAAAICAAAACm1hbmRhdG9yeSAJAARMAAAAAgkABCUAAAABBQAAAARhZGRyCQAETAAAAAICAAAAAS4JAARMAAAAAgUAAAADa2V5CQAETAAAAAICAAAADCBub3QgZGVmaW5lZAUAAAADbmlsAgAAAAAAAAAADHBvb2xDb250cmFjdAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAIFAAAABHRoaXMJAQAAAAtrZXlQb29sQWRkcgAAAAAAAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAIFAAAADHBvb2xDb250cmFjdAkBAAAAC2tleUZhY3RDbnRyAAAAAAEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAABWFtdEFzCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAgUAAAAMcG9vbENvbnRyYWN0CQEAAAALa2V5QW10QXNzZXQAAAAABAAAAAdwcmljZUFzCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAgUAAAAMcG9vbENvbnRyYWN0CQEAAAANa2V5UHJpY2VBc3NldAAAAAAEAAAACGlQcmljZUFzCQEAAAAMZ2V0SW50T3JGYWlsAAAAAgUAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAAfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAAAAAEFAAAAB3ByaWNlQXMEAAAABmlBbXRBcwkBAAAADGdldEludE9yRmFpbAAAAAIFAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQAAAABBQAAAAVhbXRBcwkABLUAAAACCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAgUAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAANa2V5UG9vbENvbmZpZwAAAAIJAAGkAAAAAQUAAAAGaUFtdEFzCQABpAAAAAEFAAAACGlQcmljZUFzBQAAAANTRVABAAAAEGdldEZhY3RvcnlDb25maWcAAAAACQAEtQAAAAIJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAABBrZXlGYWN0b3J5Q29uZmlnAAAAAAUAAAADU0VQAQAAABZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAAAAAQAAAAHJG1hdGNoMAkABCIAAAABCQEAAAATa2V5TWFuYWdlclB1YmxpY0tleQAAAAADCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABcwUAAAAHJG1hdGNoMAkAAlkAAAABBQAAAAFzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BQAAAAR1bml0CQAAAgAAAAECAAAAC01hdGNoIGVycm9yAQAAAB1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdAAAAAAEAAAAByRtYXRjaDAJAAQiAAAAAQkBAAAAGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAAAAAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwCQACWQAAAAEFAAAAAXMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQFAAAABHVuaXQJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IBAAAAC211c3RNYW5hZ2VyAAAAAQAAAAFpBAAAAAJwZAkAAAIAAAABAgAAABFQZXJtaXNzaW9uIGRlbmllZAQAAAAHJG1hdGNoMAkBAAAAFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAAAAAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAJwawUAAAAHJG1hdGNoMAMJAAAAAAAAAggFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BQAAAAJwawYFAAAAAnBkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0AwkAAAAAAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMGBQAAAAJwZAkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgEAAAAJZ2V0QWRtaW5zAAAAAAQAAAAHJG1hdGNoMAkABCIAAAABCQEAAAAPa2V5QWRtaW5QdWJLZXlzAAAAAAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwAwkAAAAAAAACCQABMQAAAAEFAAAAAXMAAAAAAAAAAAAFAAAAA25pbAkABLUAAAACBQAAAAFzBQAAAANTRVAFAAAAA25pbAEAAAAJbXVzdEFkbWluAAAAAQAAAAFpAwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIJAQAAAAlnZXRBZG1pbnMAAAAACQACWAAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQYJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkBAAAACG11c3RQb29sAAAAAQAAAAFpAwkAAAAAAAACCAUAAAABaQAAAAZjYWxsZXIFAAAADHBvb2xDb250cmFjdAYJAAACAAAAAQIAAAAXY2FsbGVyIG11c3QgYmUgdGhlIHBvb2wAAAAHAAAAAWkBAAAAC2NvbnN0cnVjdG9yAAAAAQAAAAtwb29sQWRkcmVzcwQAAAALY2hlY2tDYWxsZXIJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAALa2V5UG9vbEFkZHIAAAAABQAAAAtwb29sQWRkcmVzcwUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAApzZXRNYW5hZ2VyAAAAAQAAABdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQQAAAALY2hlY2tDYWxsZXIJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgQAAAAVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQACWQAAAAEFAAAAF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AwkAAAAAAAACBQAAABVjaGVja01hbmFnZXJQdWJsaWNLZXkFAAAAFWNoZWNrTWFuYWdlclB1YmxpY0tleQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAAAABQAAABdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAOY29uZmlybU1hbmFnZXIAAAAABAAAAAJwbQkBAAAAHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAAAAAQAAAAFaGFzUE0DCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAACcG0GCQAAAgAAAAECAAAAEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAAAAAAAAgUAAAAFaGFzUE0FAAAABWhhc1BNBAAAAAdjaGVja1BNAwkAAAAAAAACCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAQAAAAV2YWx1ZQAAAAEFAAAAAnBtBgkAAAIAAAABAgAAABtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAAAAAAIFAAAAB2NoZWNrUE0FAAAAB2NoZWNrUE0JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAE2tleU1hbmFnZXJQdWJsaWNLZXkAAAAACQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEFAAAAAnBtCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAABprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAAAAAFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAACXNldEFkbWlucwAAAAEAAAAMYWRtaW5QdWJLZXlzBAAAAAtjaGVja0NhbGxlcgkBAAAAC211c3RNYW5hZ2VyAAAAAQUAAAABaQMJAAAAAAAAAgUAAAALY2hlY2tDYWxsZXIFAAAAC2NoZWNrQ2FsbGVyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA9rZXlBZG1pblB1YktleXMAAAAACQAEuQAAAAIFAAAADGFkbWluUHViS2V5cwUAAAADU0VQBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAE3Vuc3Rha2VBbmRHZXRPbmVUa24AAAAGAAAABmFtb3VudAAAAApleGNoUmVzdWx0AAAAB25vdFVzZWQAAAAJb3V0QW1vdW50AAAACm91dEFzc2V0SWQAAAAIc2xpcHBhZ2UEAAAADWNoZWNrUGF5bWVudHMDCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAACQAAAgAAAAECAAAADU5vIHBtbnRzIGV4cGQGAwkAAAAAAAACBQAAAA1jaGVja1BheW1lbnRzBQAAAA1jaGVja1BheW1lbnRzBAAAAANjZmcJAQAAAA1nZXRQb29sQ29uZmlnAAAAAAQAAAAKZmFjdG9yeUNmZwkBAAAAEGdldEZhY3RvcnlDb25maWcAAAAABAAAAAlscEFzc2V0SWQJAAJZAAAAAQkAAZEAAAACBQAAAANjZmcFAAAACWlkeExQQXNJZAQAAAAHc3Rha2luZwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEJgAAAAEJAAGRAAAAAgUAAAAKZmFjdG9yeUNmZwUAAAAPaWR4RmFjdFN0YWtDbnRyAgAAAApXciBzdCBhZGRyBAAAAAp1bnN0YWtlSW52CQAD/AAAAAQFAAAAB3N0YWtpbmcCAAAAB3Vuc3Rha2UJAARMAAAAAgkAAlgAAAABBQAAAAlscEFzc2V0SWQJAARMAAAAAgUAAAAGYW1vdW50BQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAKdW5zdGFrZUludgUAAAAKdW5zdGFrZUludgQAAAAJZ2V0T25lVGtuCQAD/QAAAAQFAAAADHBvb2xDb250cmFjdAIAAAAJZ2V0T25lVGtuCQAETAAAAAIFAAAACmV4Y2hSZXN1bHQJAARMAAAAAgUAAAAHbm90VXNlZAkABEwAAAACBQAAAAlvdXRBbW91bnQJAARMAAAAAgUAAAAKb3V0QXNzZXRJZAkABEwAAAACBQAAAAhzbGlwcGFnZQUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAAlscEFzc2V0SWQFAAAABmFtb3VudAUAAAADbmlsAwkAAAAAAAACBQAAAAlnZXRPbmVUa24FAAAACWdldE9uZVRrbgUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAABnNldEFtcAAAAAEAAAADYW1wBAAAAAtjaGVja0NhbGxlcgkBAAAACW11c3RBZG1pbgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgQAAAAEcmVzMQkAA/wAAAAEBQAAAAxwb29sQ29udHJhY3QCAAAABHNldFMJAARMAAAAAgkBAAAABmtleUFtcAAAAAAJAARMAAAAAgUAAAADYW1wBQAAAANuaWwFAAAAA25pbAQAAAAEcmVzMgkAA/wAAAAEBQAAAAxwb29sQ29udHJhY3QCAAAABHNldFMJAARMAAAAAgkBAAAADWtleUFtcEhpc3RvcnkAAAABBQAAAAZoZWlnaHQJAARMAAAAAgUAAAADYW1wBQAAAANuaWwFAAAAA25pbAkABRQAAAACBQAAAANuaWwJAAUUAAAAAgUAAAAEcmVzMQUAAAAEcmVzMgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAXZW5zdXJlQ2FuR2V0T3JQdXRPbmVUa24AAAABAAAABmNhbGxlcgQAAAALY2hlY2tDYWxsZXIJAQAAAAhtdXN0UG9vbAAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgQAAAAMZW5zdXJlQ2FuUHV0BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAADHBvb2xDb250cmFjdAkBAAAAFmxhc3RHZXRPclB1dE9uZVRrbkNhbGwAAAABBQAAAAZjYWxsZXIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAADaW50BQAAAAckbWF0Y2gwBAAAAA9wZXJtaXR0ZWRIZWlnaHQJAABkAAAAAgUAAAADaW50CQEAAAAFdmFsdWUAAAABCQAEGgAAAAIFAAAADHBvb2xDb250cmFjdAUAAAAFZGVsYXkEAAAAE2lzUmVhZHlmb3JQdXRPbmVUa24JAABnAAAAAgUAAAAGaGVpZ2h0BQAAAA9wZXJtaXR0ZWRIZWlnaHQEAAAACm5lZWRCbG9ja3MJAABlAAAAAgUAAAAPcGVybWl0dGVkSGVpZ2h0BQAAAAZoZWlnaHQDBQAAABNpc1JlYWR5Zm9yUHV0T25lVGtuBgkAAAIAAAABCQAEuQAAAAIJAARMAAAAAgIAAAAPeW91IHNob3VsZCB3YWl0CQAETAAAAAIJAAGkAAAAAQUAAAAKbmVlZEJsb2NrcwkABEwAAAACAgAAACFibG9ja3MgbW9yZSB0byBwZXJmb3JtIHRoZSBhY3Rpb24FAAAAA25pbAIAAAABIAYDCQAAAAAAAAIFAAAADGVuc3VyZUNhblB1dAUAAAAMZW5zdXJlQ2FuUHV0BAAAAARzZXRJCQAD/AAAAAQFAAAADHBvb2xDb250cmFjdAIAAAAEc2V0SQkABEwAAAACCQEAAAAWbGFzdEdldE9yUHV0T25lVGtuQ2FsbAAAAAEFAAAABmNhbGxlcgkABEwAAAACBQAAAAZoZWlnaHQFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAARzZXRJBQAAAARzZXRJBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABAAAAA90YXJnZXRQdWJsaWNLZXkEAAAAByRtYXRjaDAJAQAAABZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAAAAAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAACcGsFAAAAByRtYXRjaDAFAAAAAnBrAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0CAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5CQAAAgAAAAECAAAAC01hdGNoIGVycm9yCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAAPdGFyZ2V0UHVibGljS2V5pyjxuQ==", "chainId": 84, "height": 2087469, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8uMk9gcyqxTjm1s5RQa5WmmZnXwcQo1h8TbrHR3552Cc Next: AFS1mCWzWcF6e2753EkEzzhWHyvU1GVBGgf4WXFpQfxF Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = 8
4+let a = "__"
55
6-let b = 100000000
6+let b = ""
77
8-let c = 18
8+let c = 1
99
10-let d = toBigInt(1000000000000000000)
10+let d = 3
1111
12-let e = "__"
12+let e = 4
1313
14-let f = b
14+let f = 5
1515
16-func g (h) = {
17- let i = h
18- if ($isInstanceOf(i, "List[Any]"))
19- then {
20- let j = i
21- j
22- }
23- else throw("fail to cast into List[Any]")
16+let g = 1
17+
18+let h = "%s__delay"
19+
20+func i () = "%s__factoryContract"
21+
22+
23+func j () = "%s__managerPublicKey"
24+
25+
26+func k () = "%s__pendingManagerPublicKey"
27+
28+
29+func l () = "%s__poolAddress"
30+
31+
32+func m () = "%s__amountAsset"
33+
34+
35+func n () = "%s__priceAsset"
36+
37+
38+func o () = "%s__adminPubKeys"
39+
40+
41+func p () = "%s__amp"
42+
43+
44+func q (r) = ("%s%d__amp__" + toString(r))
45+
46+
47+func s (t) = makeString(["%s%s__lastGetOrPutOneTknCall", t], a)
48+
49+
50+func u () = "%s__factoryConfig"
51+
52+
53+func v (w,x) = (((("%d%d%s__" + w) + "__") + x) + "__config")
54+
55+
56+func y (z) = ("%s%s%s__mappings__baseAsset2internalId__" + z)
57+
58+
59+func A (B,C) = valueOrErrorMessage(getString(B, C), makeString(["mandatory ", toString(B), ".", C, " not defined"], ""))
60+
61+
62+func D (B,C) = valueOrErrorMessage(getInteger(B, C), makeString(["mandatory ", toString(B), ".", C, " not defined"], ""))
63+
64+
65+let E = addressFromStringValue(A(this, l()))
66+
67+let F = addressFromStringValue(A(E, i()))
68+
69+func G () = {
70+ let H = A(E, m())
71+ let I = A(E, n())
72+ let J = D(F, y(I))
73+ let w = D(F, y(H))
74+ split(A(F, v(toString(w), toString(J))), a)
2475 }
2576
2677
27-func k (h) = {
28- let i = h
29- if ($isInstanceOf(i, "Int"))
30- then {
31- let l = i
32- l
33- }
34- else throw("fail to cast into Int")
35- }
78+func K () = split(A(F, u()), a)
3679
3780
38-func m (h) = {
39- let i = h
40- if ($isInstanceOf(i, "String"))
81+func L () = {
82+ let M = getString(j())
83+ if ($isInstanceOf(M, "String"))
4184 then {
42- let n = i
43- n
85+ let N = M
86+ fromBase58String(N)
4487 }
45- else throw("fail to cast into Int")
46- }
47-
48-
49-func o (h) = {
50- let i = h
51- if ($isInstanceOf(i, "ByteVector"))
52- then {
53- let p = i
54- p
55- }
56- else throw("fail to cast into Int")
57- }
58-
59-
60-func q (r) = valueOrErrorMessage(getString(r), (("mandatory this." + r) + " is not defined"))
61-
62-
63-func s (t,r) = valueOrErrorMessage(getString(t, r), (((("mandatory " + toString(t)) + ".") + r) + " is not defined"))
64-
65-
66-func u (t,r) = valueOrElse(getInteger(t, r), 0)
67-
68-
69-func v (t,r,w) = valueOrElse(getInteger(t, r), w)
70-
71-
72-func x (t,r) = valueOrErrorMessage(getInteger(t, r), (("mandatory this." + r) + " is not defined"))
73-
74-
75-func y (z,A) = fraction(toBigInt(z), d, toBigInt(A))
76-
77-
78-func B (h,C) = toInt(fraction(h, toBigInt(C), d))
79-
80-
81-func D () = "%s%s__config__factoryAddress"
82-
83-
84-let E = 1
85-
86-let F = 2
87-
88-let G = 3
89-
90-let H = 4
91-
92-let I = 5
93-
94-let J = 6
95-
96-let K = 7
97-
98-func L () = "%s__factoryConfig"
99-
100-
101-func M () = "%s__managerPublicKey"
102-
103-
104-func N () = "%s__pendingManagerPublicKey"
105-
106-
107-func O () = "%s__stablePoolAddonAddr"
108-
109-
110-func P (Q) = makeString(["%s%s%s", Q, "mappings__lpAsset2PoolContract"], e)
111-
112-
113-func R () = "%s__lpTokensList"
114-
115-
116-func S (Q) = makeString(["%s%s%s", Q, "mappings__lpAsset2PoolContract"], e)
117-
118-
119-func T (U) = makeString(["%s%s", "poolWeight", U], e)
120-
121-
122-func V (W) = split(valueOrElse(getString(W, R()), ""), e)
123-
124-
125-func X (W) = split(s(W, L()), e)
126-
127-
128-func Y (Z) = addressFromStringValue(Z[F])
129-
130-
131-func aa (Z) = addressFromStringValue(Z[I])
132-
133-
134-func ab (Z) = addressFromStringValue(Z[E])
135-
136-
137-func ac () = "%s%s__ratePerBlock__current"
138-
139-
140-func ad () = "%s%s__ratePerBlockMax__current"
141-
142-
143-func ae () = "%s%s__emission__startBlock"
144-
145-
146-func af () = "%s%s__emission__duration"
147-
148-
149-func ag () = "%s%s__emission__endBlock"
150-
151-
152-func ah (ai,aj) = makeString(["%s%s%s__staked", ai, aj], e)
153-
154-
155-func ak (aj) = ("%s%s%s__staked__total__" + aj)
156-
157-
158-func al (aj,ai) = makeString(["%s%s%s__claimed", ai, aj], e)
159-
160-
161-func am (aj,ai) = makeString(["%s%s%s__claimedMinReward", ai, aj], e)
162-
163-
164-func an (aj,ai) = makeString(["%s%s%s__claimedBoostReward", ai, aj], e)
165-
166-
167-func ao (aj) = makeString(["%s%s%s__claimed", "total", aj], e)
168-
169-
170-func ap (r) = valueOrElse(getInteger(this, r), 0)
171-
172-
173-func aq (ar) = makeString(["%s%s%s", ar, "total", "bal"], e)
174-
175-
176-func as (ar,at) = makeString(["%s%s%s", ar, at, "bal"], e)
177-
178-
179-func au (ar) = makeString(["%s%s%s", ar, "total", "balINT"], e)
180-
181-
182-func av (ar,at) = makeString(["%s%s%s", ar, at, "balINT"], e)
183-
184-
185-func aw (ar) = makeString(["%s%s%s", ar, "total", "lastUpd"], e)
186-
187-
188-func ax (ar,at) = makeString(["%s%s%s", ar, at, "lastUpd"], e)
189-
190-
191-func ay (ar) = makeString(["%s%s%s%s", ar, "common", "lpInt"], e)
192-
193-
194-func az (ar) = makeString(["%s%s%s%s", ar, "common", "lpIntH"], e)
195-
196-
197-func aA (ar,at) = makeString(["%s%s%s%s", ar, at, "lpInt"], e)
198-
199-
200-func aB (ar,at) = makeString(["%s%s%s%s", ar, at, "lpIntH"], e)
201-
202-
203-func aC (ar) = makeString(["%s", ar, "wxPerLp"], e)
204-
205-
206-func aD (ar) = makeString(["%s", ar, "wxPerLpX18"], e)
207-
208-
209-func aE (ar,at) = makeString(["%s%s%s%s", ar, at, "uIntL"], e)
210-
211-
212-func aF (aG,at,aH) = makeString(["%s%s%s%s__history", aG, at, aH], e)
213-
214-
215-func aI (at,ar,aG,aJ) = makeString(["%s%s%s%d%d%d", at, ar, aG, toString(height), toString(lastBlock.timestamp), toString(aJ)], e)
216-
217-
218-func aK (aG,at,ar,aJ,aL) = StringEntry(aF(aG, at, toBase58String(aL)), aI(at, ar, aG, aJ))
219-
220-
221-let aM = q(D())
222-
223-let aN = addressFromStringValue(aM)
224-
225-let Z = X(aN)
226-
227-let aO = aa(Z)
228-
229-let aP = Y(Z)
230-
231-func aQ (aR,aS,aT,aU) = if (if ((aS == toBigInt(0)))
232- then (aR > toBigInt(0))
233- else false)
234- then toBigInt(0)
235- else if ((aR == toBigInt(0)))
236- then aT
237- else if (if ((aS > toBigInt(0)))
238- then (aR > toBigInt(0))
239- else false)
240- then toBigInt(x(this, aU))
241- else throw("calcWxPerLpIntegralUserLast: unexpected state")
242-
243-
244-func aV (aj,aW,aX) = {
245- let aY = ak(aj)
246- let aZ = ap(aY)
247- let ba = getIntegerValue(aN, T(aW))
248- let bb = x(aO, ae())
249- let bc = 1000
250- let bd = (x(aO, ac()) * bc)
251- let be = fraction(bd, ba, (f * 3))
252- let bf = ay(aj)
253- let bg = az(aj)
254- let bh = aC(aj)
255- let bi = v(this, bg, bb)
256- let bj = u(this, bf)
257- let bk = 0
258- let bl = max([(height - bi), 0])
259- let bm = if ((bk != 0))
260- then bk
261- else fraction(be, b, aZ)
262- let bn = (aZ + aX)
263- let aT = (toBigInt(bj) + (toBigInt(bm) * toBigInt(bl)))
264- let bo = (be / bn)
265- let bp = height
266- let bq = makeString([toString(aT), toString(bl), toString(bm), toString(aZ), toString(be), toString(bd), toString(ba)], "::")
267- $Tuple3(aT, [StringEntry(bf, toString(aT)), IntegerEntry(bg, bp), IntegerEntry(bh, bo)], bq)
268- }
269-
270-
271-func br (aj,ai,aW,aX) = {
272- let bs = aV(aj, aW, aX)
273- let aT = bs._1
274- let bt = bs._2
275- let bu = bs._3
276- let bc = 1000
277- let bv = ah(ai, aj)
278- let aR = ap(bv)
279- let bw = aA(aj, ai)
280- let bx = aB(aj, ai)
281- let aU = aE(aj, ai)
282- let by = u(this, bw)
283- let aS = u(this, bx)
284- let bz = aQ(toBigInt(aR), toBigInt(aS), aT, aU)
285- let bA = (b * bc)
286- let bB = (toBigInt(by) + fraction((aT - bz), toBigInt(aR), toBigInt(bA)))
287- let bC = aT
288- let bD = height
289- let bq = makeString([toString(bB), toString(bz), toString(aR), bu, toString(height)], "::")
290- $Tuple3(bB, (bt ++ [StringEntry(bw, toString(bB)), IntegerEntry(bx, bD), StringEntry(aU, toString(bC))]), bq)
291- }
292-
293-
294-func bE () = {
295- let i = getString(M())
296- if ($isInstanceOf(i, "String"))
297- then {
298- let bF = i
299- fromBase58String(bF)
300- }
301- else if ($isInstanceOf(i, "Unit"))
88+ else if ($isInstanceOf(M, "Unit"))
30289 then unit
30390 else throw("Match error")
30491 }
30592
30693
307-func bG () = {
308- let i = getString(N())
309- if ($isInstanceOf(i, "String"))
94+func O () = {
95+ let M = getString(k())
96+ if ($isInstanceOf(M, "String"))
31097 then {
311- let bF = i
312- fromBase58String(bF)
98+ let N = M
99+ fromBase58String(N)
313100 }
314- else if ($isInstanceOf(i, "Unit"))
101+ else if ($isInstanceOf(M, "Unit"))
315102 then unit
316103 else throw("Match error")
317104 }
318105
319106
320-func bH (bI) = {
321- let bJ = throw("Permission denied")
322- let i = bE()
323- if ($isInstanceOf(i, "ByteVector"))
107+func P (Q) = {
108+ let R = throw("Permission denied")
109+ let M = L()
110+ if ($isInstanceOf(M, "ByteVector"))
324111 then {
325- let bK = i
326- if ((bI.callerPublicKey == bK))
112+ let S = M
113+ if ((Q.callerPublicKey == S))
327114 then true
328- else bJ
115+ else R
329116 }
330- else if ($isInstanceOf(i, "Unit"))
331- then if ((bI.caller == this))
117+ else if ($isInstanceOf(M, "Unit"))
118+ then if ((Q.caller == this))
332119 then true
333- else bJ
120+ else R
334121 else throw("Match error")
335122 }
336123
337124
338-@Callable(bI)
339-func constructor (bL) = {
340- let bM = bH(bI)
341- if ((bM == bM))
342- then [StringEntry(D(), bL)]
125+func T () = {
126+ let M = getString(o())
127+ if ($isInstanceOf(M, "String"))
128+ then {
129+ let N = M
130+ if ((size(N) == 0))
131+ then nil
132+ else split(N, a)
133+ }
134+ else nil
135+ }
136+
137+
138+func U (Q) = if (containsElement(T(), toBase58String(Q.callerPublicKey)))
139+ then true
140+ else P(Q)
141+
142+
143+func V (Q) = if ((Q.caller == E))
144+ then true
145+ else throw("caller must be the pool")
146+
147+
148+@Callable(Q)
149+func constructor (W) = {
150+ let X = P(Q)
151+ if ((X == X))
152+ then [StringEntry(l(), W)]
343153 else throw("Strict value is not equal to itself.")
344154 }
345155
346156
347157
348-@Callable(bI)
349-func setManager (bN) = {
350- let bM = bH(bI)
351- if ((bM == bM))
158+@Callable(Q)
159+func setManager (Y) = {
160+ let X = P(Q)
161+ if ((X == X))
352162 then {
353- let bO = fromBase58String(bN)
354- if ((bO == bO))
355- then [StringEntry(N(), bN)]
163+ let Z = fromBase58String(Y)
164+ if ((Z == Z))
165+ then [StringEntry(k(), Y)]
356166 else throw("Strict value is not equal to itself.")
357167 }
358168 else throw("Strict value is not equal to itself.")
360170
361171
362172
363-@Callable(bI)
173+@Callable(Q)
364174 func confirmManager () = {
365- let bP = bG()
366- let bQ = if (isDefined(bP))
175+ let aa = O()
176+ let ab = if (isDefined(aa))
367177 then true
368178 else throw("No pending manager")
369- if ((bQ == bQ))
179+ if ((ab == ab))
370180 then {
371- let bR = if ((bI.callerPublicKey == value(bP)))
181+ let ac = if ((Q.callerPublicKey == value(aa)))
372182 then true
373183 else throw("You are not pending manager")
374- if ((bR == bR))
375- then [StringEntry(M(), toBase58String(value(bP))), DeleteEntry(N())]
184+ if ((ac == ac))
185+ then [StringEntry(j(), toBase58String(value(aa))), DeleteEntry(k())]
376186 else throw("Strict value is not equal to itself.")
377187 }
378188 else throw("Strict value is not equal to itself.")
380190
381191
382192
383-@Callable(bI)
384-func stake () = if ((size(bI.payments) != 1))
385- then throw("invalid payment - exact one payment must be attached")
386- else {
387- let bS = bI.payments[0]
388- let ar = value(bS.assetId)
389- let aj = toBase58String(ar)
390- let aJ = bS.amount
391- let aW = valueOrErrorMessage(getString(aN, P(aj)), ("unsupported lp asset " + aj))
392- let bT = toString(bI.caller)
393- let ai = if ((bT == aW))
394- then toString(bI.originCaller)
395- else bT
396- let bv = ah(ai, aj)
397- let aY = ak(aj)
398- let aR = ap(bv)
399- let aZ = ap(aY)
400- let bU = br(aj, ai, aW, aJ)
401- let bB = bU._1
402- let bV = bU._2
403- let bq = bU._3
404- ([IntegerEntry(bv, (aR + aJ)), IntegerEntry(aY, (aZ + aJ)), aK("stake", ai, aj, aJ, bI.transactionId)] ++ bV)
405- }
406-
407-
408-
409-@Callable(bI)
410-func unstake (aj,aJ) = {
411- let ar = fromBase58String(aj)
412- let aW = valueOrErrorMessage(getString(aN, P(aj)), ("unsupported lp asset " + aj))
413- let bW = valueOrElse(getString(this, O()), aW)
414- let bT = toString(bI.caller)
415- let ai = if (if ((bT == aW))
416- then true
417- else (bT == bW))
418- then toString(bI.originCaller)
419- else bT
420- let bv = ah(ai, aj)
421- let aY = ak(aj)
422- let aR = ap(bv)
423- let aZ = ap(aY)
424- let bX = br(aj, ai, aW, -(aJ))
425- let bB = bX._1
426- let bV = bX._2
427- let bq = bX._3
428- if ((aJ > aR))
429- then throw("passed amount is less then available")
430- else ([IntegerEntry(bv, (aR - aJ)), IntegerEntry(aY, (aZ - aJ)), ScriptTransfer(bI.caller, aJ, ar), aK("unstake", ai, aj, aJ, bI.transactionId)] ++ bV)
193+@Callable(Q)
194+func setAdmins (ad) = {
195+ let X = P(Q)
196+ if ((X == X))
197+ then [StringEntry(o(), makeString(ad, a))]
198+ else throw("Strict value is not equal to itself.")
431199 }
432200
433201
434202
435-@Callable(bI)
436-func claimWx (aj) = {
437- let at = bI.caller
438- let ai = toString(bI.caller)
439- let aW = s(aN, S(aj))
440- let bY = al(aj, ai)
441- let bZ = ao(aj)
442- let ca = am(aj, ai)
443- let cb = an(aj, ai)
444- let cc = toBigInt(u(this, bY))
445- let cd = toBigInt(u(this, ca))
446- let ce = toBigInt(u(this, cb))
447- let cf = toBigInt(u(this, bZ))
448- let cg = br(aj, ai, aW, 0)
449- let bB = cg._1
450- let bV = cg._2
451- let bq = cg._3
452- let ch = (bB - cc)
453- if ((toBigInt(0) >= ch))
454- then throw("nothing to claim")
455- else {
456- let ci = k(g(invoke(aP, "claimWxBoost", [aj, ai], nil))[0])
457- let cj = ch
458- let ck = min([(cj * toBigInt(2)), toBigInt(ci)])
459- let cl = o(g(invoke(aO, "emit", [cj], nil))[0])
460- let cm = g(invoke(aO, "emit", [ck], nil))
461- if ((cm == cm))
203+@Callable(Q)
204+func unstakeAndGetOneTkn (ae,af,ag,ah,ai,aj) = {
205+ let ak = if ((size(Q.payments) != 0))
206+ then throw("No pmnts expd")
207+ else true
208+ if ((ak == ak))
209+ then {
210+ let al = G()
211+ let am = K()
212+ let an = fromBase58String(al[d])
213+ let ao = valueOrErrorMessage(addressFromString(am[g]), "Wr st addr")
214+ let ap = invoke(ao, "unstake", [toBase58String(an), ae], nil)
215+ if ((ap == ap))
462216 then {
463- let cn = (cc + ch)
464- let co = (cd + cj)
465- let cp = (cd + cj)
466- let cq = (cd + cj)
467-[StringEntry(bY, toString(cn)), StringEntry(ca, toString(co)), StringEntry(cb, toString(cp)), StringEntry(bZ, toString(cq)), ScriptTransfer(at, toInt(cj), cl), ScriptTransfer(at, toInt(ck), cl), aK("claim", ai, aj, toInt(ch), bI.transactionId)]
217+ let aq = reentrantInvoke(E, "getOneTkn", [af, ag, ah, ai, aj], [AttachedPayment(an, ae)])
218+ if ((aq == aq))
219+ then nil
220+ else throw("Strict value is not equal to itself.")
468221 }
469222 else throw("Strict value is not equal to itself.")
470223 }
224+ else throw("Strict value is not equal to itself.")
471225 }
472226
473227
474228
475-@Callable(bI)
476-func claimWxREADONLY (aj,ai) = {
477- let bv = ah(ai, aj)
478- let aY = ak(aj)
479- let bY = al(aj, ai)
480- let aR = ap(bv)
481- let aZ = ap(aY)
482- let cc = u(this, bY)
483- let aW = s(aN, S(aj))
484- let ba = getIntegerValue(aN, T(aW))
485- let cr = x(aO, ac())
486- let bb = x(aO, ae())
487- let cs = if ((bb > height))
488- then 0
489- else (height - bb)
490- let ct = fraction((cr * cs), ba, f)
491- let cu = fraction(ct, aR, aZ)
492- let cv = br(aj, ai, aW, 0)
493- let bB = cv._1
494- let bV = cv._2
495- let bq = cv._3
496- let ch = (bB - toBigInt(cc))
497- let cw = g(invoke(aP, "claimWxBoostREADONLY", [aj, ai], nil))
498- let ci = k(cw[0])
499- let cx = m(cw[1])
500- let cj = ch
501- let ck = min([(cj * toBigInt(2)), toBigInt(ci)])
502- let cy = (cj + ck)
503- $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", aj, ai, toString(cy), toString(cc), toString(cj), toString(ck), ((((bq + "::") + toString(cu)) + "::BOOSTDEBUG::") + cx)], e))
229+@Callable(Q)
230+func setAmp (ar) = {
231+ let X = U(Q)
232+ if ((X == X))
233+ then {
234+ let as = invoke(E, "setS", [p(), ar], nil)
235+ let at = invoke(E, "setS", [q(height), ar], nil)
236+ $Tuple2(nil, $Tuple2(as, at))
237+ }
238+ else throw("Strict value is not equal to itself.")
504239 }
505240
506241
507242
508-@Callable(bI)
509-func onModifyWeight (aj,aW) = if ((bI.caller != aN))
510- then throw("permissions denied")
511- else {
512- let cz = aV(aj, aW, 0)
513- let aT = cz._1
514- let bt = cz._2
515- let bu = cz._3
516- bt
517- }
243+@Callable(Q)
244+func ensureCanGetOrPutOneTkn (t) = {
245+ let X = V(Q)
246+ if ((X == X))
247+ then {
248+ let au = {
249+ let M = getInteger(E, s(t))
250+ if ($isInstanceOf(M, "Int"))
251+ then {
252+ let av = M
253+ let aw = (av + value(getInteger(E, h)))
254+ let ax = (height >= aw)
255+ let ay = (aw - height)
256+ if (ax)
257+ then true
258+ else throw(makeString(["you should wait", toString(ay), "blocks more to perform the action"], " "))
259+ }
260+ else true
261+ }
262+ if ((au == au))
263+ then {
264+ let az = invoke(E, "setI", [s(t), height], nil)
265+ if ((az == az))
266+ then nil
267+ else throw("Strict value is not equal to itself.")
268+ }
269+ else throw("Strict value is not equal to itself.")
270+ }
271+ else throw("Strict value is not equal to itself.")
272+ }
518273
519274
520-@Verifier(cA)
521-func cB () = {
522- let cC = {
523- let i = bE()
524- if ($isInstanceOf(i, "ByteVector"))
275+@Verifier(aA)
276+func aB () = {
277+ let aC = {
278+ let M = L()
279+ if ($isInstanceOf(M, "ByteVector"))
525280 then {
526- let bK = i
527- bK
281+ let S = M
282+ S
528283 }
529- else if ($isInstanceOf(i, "Unit"))
530- then cA.senderPublicKey
284+ else if ($isInstanceOf(M, "Unit"))
285+ then aA.senderPublicKey
531286 else throw("Match error")
532287 }
533- sigVerify(cA.bodyBytes, cA.proofs[0], cC)
288+ sigVerify(aA.bodyBytes, aA.proofs[0], aC)
534289 }
535290
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = 8
4+let a = "__"
55
6-let b = 100000000
6+let b = ""
77
8-let c = 18
8+let c = 1
99
10-let d = toBigInt(1000000000000000000)
10+let d = 3
1111
12-let e = "__"
12+let e = 4
1313
14-let f = b
14+let f = 5
1515
16-func g (h) = {
17- let i = h
18- if ($isInstanceOf(i, "List[Any]"))
19- then {
20- let j = i
21- j
22- }
23- else throw("fail to cast into List[Any]")
16+let g = 1
17+
18+let h = "%s__delay"
19+
20+func i () = "%s__factoryContract"
21+
22+
23+func j () = "%s__managerPublicKey"
24+
25+
26+func k () = "%s__pendingManagerPublicKey"
27+
28+
29+func l () = "%s__poolAddress"
30+
31+
32+func m () = "%s__amountAsset"
33+
34+
35+func n () = "%s__priceAsset"
36+
37+
38+func o () = "%s__adminPubKeys"
39+
40+
41+func p () = "%s__amp"
42+
43+
44+func q (r) = ("%s%d__amp__" + toString(r))
45+
46+
47+func s (t) = makeString(["%s%s__lastGetOrPutOneTknCall", t], a)
48+
49+
50+func u () = "%s__factoryConfig"
51+
52+
53+func v (w,x) = (((("%d%d%s__" + w) + "__") + x) + "__config")
54+
55+
56+func y (z) = ("%s%s%s__mappings__baseAsset2internalId__" + z)
57+
58+
59+func A (B,C) = valueOrErrorMessage(getString(B, C), makeString(["mandatory ", toString(B), ".", C, " not defined"], ""))
60+
61+
62+func D (B,C) = valueOrErrorMessage(getInteger(B, C), makeString(["mandatory ", toString(B), ".", C, " not defined"], ""))
63+
64+
65+let E = addressFromStringValue(A(this, l()))
66+
67+let F = addressFromStringValue(A(E, i()))
68+
69+func G () = {
70+ let H = A(E, m())
71+ let I = A(E, n())
72+ let J = D(F, y(I))
73+ let w = D(F, y(H))
74+ split(A(F, v(toString(w), toString(J))), a)
2475 }
2576
2677
27-func k (h) = {
28- let i = h
29- if ($isInstanceOf(i, "Int"))
30- then {
31- let l = i
32- l
33- }
34- else throw("fail to cast into Int")
35- }
78+func K () = split(A(F, u()), a)
3679
3780
38-func m (h) = {
39- let i = h
40- if ($isInstanceOf(i, "String"))
81+func L () = {
82+ let M = getString(j())
83+ if ($isInstanceOf(M, "String"))
4184 then {
42- let n = i
43- n
85+ let N = M
86+ fromBase58String(N)
4487 }
45- else throw("fail to cast into Int")
46- }
47-
48-
49-func o (h) = {
50- let i = h
51- if ($isInstanceOf(i, "ByteVector"))
52- then {
53- let p = i
54- p
55- }
56- else throw("fail to cast into Int")
57- }
58-
59-
60-func q (r) = valueOrErrorMessage(getString(r), (("mandatory this." + r) + " is not defined"))
61-
62-
63-func s (t,r) = valueOrErrorMessage(getString(t, r), (((("mandatory " + toString(t)) + ".") + r) + " is not defined"))
64-
65-
66-func u (t,r) = valueOrElse(getInteger(t, r), 0)
67-
68-
69-func v (t,r,w) = valueOrElse(getInteger(t, r), w)
70-
71-
72-func x (t,r) = valueOrErrorMessage(getInteger(t, r), (("mandatory this." + r) + " is not defined"))
73-
74-
75-func y (z,A) = fraction(toBigInt(z), d, toBigInt(A))
76-
77-
78-func B (h,C) = toInt(fraction(h, toBigInt(C), d))
79-
80-
81-func D () = "%s%s__config__factoryAddress"
82-
83-
84-let E = 1
85-
86-let F = 2
87-
88-let G = 3
89-
90-let H = 4
91-
92-let I = 5
93-
94-let J = 6
95-
96-let K = 7
97-
98-func L () = "%s__factoryConfig"
99-
100-
101-func M () = "%s__managerPublicKey"
102-
103-
104-func N () = "%s__pendingManagerPublicKey"
105-
106-
107-func O () = "%s__stablePoolAddonAddr"
108-
109-
110-func P (Q) = makeString(["%s%s%s", Q, "mappings__lpAsset2PoolContract"], e)
111-
112-
113-func R () = "%s__lpTokensList"
114-
115-
116-func S (Q) = makeString(["%s%s%s", Q, "mappings__lpAsset2PoolContract"], e)
117-
118-
119-func T (U) = makeString(["%s%s", "poolWeight", U], e)
120-
121-
122-func V (W) = split(valueOrElse(getString(W, R()), ""), e)
123-
124-
125-func X (W) = split(s(W, L()), e)
126-
127-
128-func Y (Z) = addressFromStringValue(Z[F])
129-
130-
131-func aa (Z) = addressFromStringValue(Z[I])
132-
133-
134-func ab (Z) = addressFromStringValue(Z[E])
135-
136-
137-func ac () = "%s%s__ratePerBlock__current"
138-
139-
140-func ad () = "%s%s__ratePerBlockMax__current"
141-
142-
143-func ae () = "%s%s__emission__startBlock"
144-
145-
146-func af () = "%s%s__emission__duration"
147-
148-
149-func ag () = "%s%s__emission__endBlock"
150-
151-
152-func ah (ai,aj) = makeString(["%s%s%s__staked", ai, aj], e)
153-
154-
155-func ak (aj) = ("%s%s%s__staked__total__" + aj)
156-
157-
158-func al (aj,ai) = makeString(["%s%s%s__claimed", ai, aj], e)
159-
160-
161-func am (aj,ai) = makeString(["%s%s%s__claimedMinReward", ai, aj], e)
162-
163-
164-func an (aj,ai) = makeString(["%s%s%s__claimedBoostReward", ai, aj], e)
165-
166-
167-func ao (aj) = makeString(["%s%s%s__claimed", "total", aj], e)
168-
169-
170-func ap (r) = valueOrElse(getInteger(this, r), 0)
171-
172-
173-func aq (ar) = makeString(["%s%s%s", ar, "total", "bal"], e)
174-
175-
176-func as (ar,at) = makeString(["%s%s%s", ar, at, "bal"], e)
177-
178-
179-func au (ar) = makeString(["%s%s%s", ar, "total", "balINT"], e)
180-
181-
182-func av (ar,at) = makeString(["%s%s%s", ar, at, "balINT"], e)
183-
184-
185-func aw (ar) = makeString(["%s%s%s", ar, "total", "lastUpd"], e)
186-
187-
188-func ax (ar,at) = makeString(["%s%s%s", ar, at, "lastUpd"], e)
189-
190-
191-func ay (ar) = makeString(["%s%s%s%s", ar, "common", "lpInt"], e)
192-
193-
194-func az (ar) = makeString(["%s%s%s%s", ar, "common", "lpIntH"], e)
195-
196-
197-func aA (ar,at) = makeString(["%s%s%s%s", ar, at, "lpInt"], e)
198-
199-
200-func aB (ar,at) = makeString(["%s%s%s%s", ar, at, "lpIntH"], e)
201-
202-
203-func aC (ar) = makeString(["%s", ar, "wxPerLp"], e)
204-
205-
206-func aD (ar) = makeString(["%s", ar, "wxPerLpX18"], e)
207-
208-
209-func aE (ar,at) = makeString(["%s%s%s%s", ar, at, "uIntL"], e)
210-
211-
212-func aF (aG,at,aH) = makeString(["%s%s%s%s__history", aG, at, aH], e)
213-
214-
215-func aI (at,ar,aG,aJ) = makeString(["%s%s%s%d%d%d", at, ar, aG, toString(height), toString(lastBlock.timestamp), toString(aJ)], e)
216-
217-
218-func aK (aG,at,ar,aJ,aL) = StringEntry(aF(aG, at, toBase58String(aL)), aI(at, ar, aG, aJ))
219-
220-
221-let aM = q(D())
222-
223-let aN = addressFromStringValue(aM)
224-
225-let Z = X(aN)
226-
227-let aO = aa(Z)
228-
229-let aP = Y(Z)
230-
231-func aQ (aR,aS,aT,aU) = if (if ((aS == toBigInt(0)))
232- then (aR > toBigInt(0))
233- else false)
234- then toBigInt(0)
235- else if ((aR == toBigInt(0)))
236- then aT
237- else if (if ((aS > toBigInt(0)))
238- then (aR > toBigInt(0))
239- else false)
240- then toBigInt(x(this, aU))
241- else throw("calcWxPerLpIntegralUserLast: unexpected state")
242-
243-
244-func aV (aj,aW,aX) = {
245- let aY = ak(aj)
246- let aZ = ap(aY)
247- let ba = getIntegerValue(aN, T(aW))
248- let bb = x(aO, ae())
249- let bc = 1000
250- let bd = (x(aO, ac()) * bc)
251- let be = fraction(bd, ba, (f * 3))
252- let bf = ay(aj)
253- let bg = az(aj)
254- let bh = aC(aj)
255- let bi = v(this, bg, bb)
256- let bj = u(this, bf)
257- let bk = 0
258- let bl = max([(height - bi), 0])
259- let bm = if ((bk != 0))
260- then bk
261- else fraction(be, b, aZ)
262- let bn = (aZ + aX)
263- let aT = (toBigInt(bj) + (toBigInt(bm) * toBigInt(bl)))
264- let bo = (be / bn)
265- let bp = height
266- let bq = makeString([toString(aT), toString(bl), toString(bm), toString(aZ), toString(be), toString(bd), toString(ba)], "::")
267- $Tuple3(aT, [StringEntry(bf, toString(aT)), IntegerEntry(bg, bp), IntegerEntry(bh, bo)], bq)
268- }
269-
270-
271-func br (aj,ai,aW,aX) = {
272- let bs = aV(aj, aW, aX)
273- let aT = bs._1
274- let bt = bs._2
275- let bu = bs._3
276- let bc = 1000
277- let bv = ah(ai, aj)
278- let aR = ap(bv)
279- let bw = aA(aj, ai)
280- let bx = aB(aj, ai)
281- let aU = aE(aj, ai)
282- let by = u(this, bw)
283- let aS = u(this, bx)
284- let bz = aQ(toBigInt(aR), toBigInt(aS), aT, aU)
285- let bA = (b * bc)
286- let bB = (toBigInt(by) + fraction((aT - bz), toBigInt(aR), toBigInt(bA)))
287- let bC = aT
288- let bD = height
289- let bq = makeString([toString(bB), toString(bz), toString(aR), bu, toString(height)], "::")
290- $Tuple3(bB, (bt ++ [StringEntry(bw, toString(bB)), IntegerEntry(bx, bD), StringEntry(aU, toString(bC))]), bq)
291- }
292-
293-
294-func bE () = {
295- let i = getString(M())
296- if ($isInstanceOf(i, "String"))
297- then {
298- let bF = i
299- fromBase58String(bF)
300- }
301- else if ($isInstanceOf(i, "Unit"))
88+ else if ($isInstanceOf(M, "Unit"))
30289 then unit
30390 else throw("Match error")
30491 }
30592
30693
307-func bG () = {
308- let i = getString(N())
309- if ($isInstanceOf(i, "String"))
94+func O () = {
95+ let M = getString(k())
96+ if ($isInstanceOf(M, "String"))
31097 then {
311- let bF = i
312- fromBase58String(bF)
98+ let N = M
99+ fromBase58String(N)
313100 }
314- else if ($isInstanceOf(i, "Unit"))
101+ else if ($isInstanceOf(M, "Unit"))
315102 then unit
316103 else throw("Match error")
317104 }
318105
319106
320-func bH (bI) = {
321- let bJ = throw("Permission denied")
322- let i = bE()
323- if ($isInstanceOf(i, "ByteVector"))
107+func P (Q) = {
108+ let R = throw("Permission denied")
109+ let M = L()
110+ if ($isInstanceOf(M, "ByteVector"))
324111 then {
325- let bK = i
326- if ((bI.callerPublicKey == bK))
112+ let S = M
113+ if ((Q.callerPublicKey == S))
327114 then true
328- else bJ
115+ else R
329116 }
330- else if ($isInstanceOf(i, "Unit"))
331- then if ((bI.caller == this))
117+ else if ($isInstanceOf(M, "Unit"))
118+ then if ((Q.caller == this))
332119 then true
333- else bJ
120+ else R
334121 else throw("Match error")
335122 }
336123
337124
338-@Callable(bI)
339-func constructor (bL) = {
340- let bM = bH(bI)
341- if ((bM == bM))
342- then [StringEntry(D(), bL)]
125+func T () = {
126+ let M = getString(o())
127+ if ($isInstanceOf(M, "String"))
128+ then {
129+ let N = M
130+ if ((size(N) == 0))
131+ then nil
132+ else split(N, a)
133+ }
134+ else nil
135+ }
136+
137+
138+func U (Q) = if (containsElement(T(), toBase58String(Q.callerPublicKey)))
139+ then true
140+ else P(Q)
141+
142+
143+func V (Q) = if ((Q.caller == E))
144+ then true
145+ else throw("caller must be the pool")
146+
147+
148+@Callable(Q)
149+func constructor (W) = {
150+ let X = P(Q)
151+ if ((X == X))
152+ then [StringEntry(l(), W)]
343153 else throw("Strict value is not equal to itself.")
344154 }
345155
346156
347157
348-@Callable(bI)
349-func setManager (bN) = {
350- let bM = bH(bI)
351- if ((bM == bM))
158+@Callable(Q)
159+func setManager (Y) = {
160+ let X = P(Q)
161+ if ((X == X))
352162 then {
353- let bO = fromBase58String(bN)
354- if ((bO == bO))
355- then [StringEntry(N(), bN)]
163+ let Z = fromBase58String(Y)
164+ if ((Z == Z))
165+ then [StringEntry(k(), Y)]
356166 else throw("Strict value is not equal to itself.")
357167 }
358168 else throw("Strict value is not equal to itself.")
359169 }
360170
361171
362172
363-@Callable(bI)
173+@Callable(Q)
364174 func confirmManager () = {
365- let bP = bG()
366- let bQ = if (isDefined(bP))
175+ let aa = O()
176+ let ab = if (isDefined(aa))
367177 then true
368178 else throw("No pending manager")
369- if ((bQ == bQ))
179+ if ((ab == ab))
370180 then {
371- let bR = if ((bI.callerPublicKey == value(bP)))
181+ let ac = if ((Q.callerPublicKey == value(aa)))
372182 then true
373183 else throw("You are not pending manager")
374- if ((bR == bR))
375- then [StringEntry(M(), toBase58String(value(bP))), DeleteEntry(N())]
184+ if ((ac == ac))
185+ then [StringEntry(j(), toBase58String(value(aa))), DeleteEntry(k())]
376186 else throw("Strict value is not equal to itself.")
377187 }
378188 else throw("Strict value is not equal to itself.")
379189 }
380190
381191
382192
383-@Callable(bI)
384-func stake () = if ((size(bI.payments) != 1))
385- then throw("invalid payment - exact one payment must be attached")
386- else {
387- let bS = bI.payments[0]
388- let ar = value(bS.assetId)
389- let aj = toBase58String(ar)
390- let aJ = bS.amount
391- let aW = valueOrErrorMessage(getString(aN, P(aj)), ("unsupported lp asset " + aj))
392- let bT = toString(bI.caller)
393- let ai = if ((bT == aW))
394- then toString(bI.originCaller)
395- else bT
396- let bv = ah(ai, aj)
397- let aY = ak(aj)
398- let aR = ap(bv)
399- let aZ = ap(aY)
400- let bU = br(aj, ai, aW, aJ)
401- let bB = bU._1
402- let bV = bU._2
403- let bq = bU._3
404- ([IntegerEntry(bv, (aR + aJ)), IntegerEntry(aY, (aZ + aJ)), aK("stake", ai, aj, aJ, bI.transactionId)] ++ bV)
405- }
406-
407-
408-
409-@Callable(bI)
410-func unstake (aj,aJ) = {
411- let ar = fromBase58String(aj)
412- let aW = valueOrErrorMessage(getString(aN, P(aj)), ("unsupported lp asset " + aj))
413- let bW = valueOrElse(getString(this, O()), aW)
414- let bT = toString(bI.caller)
415- let ai = if (if ((bT == aW))
416- then true
417- else (bT == bW))
418- then toString(bI.originCaller)
419- else bT
420- let bv = ah(ai, aj)
421- let aY = ak(aj)
422- let aR = ap(bv)
423- let aZ = ap(aY)
424- let bX = br(aj, ai, aW, -(aJ))
425- let bB = bX._1
426- let bV = bX._2
427- let bq = bX._3
428- if ((aJ > aR))
429- then throw("passed amount is less then available")
430- else ([IntegerEntry(bv, (aR - aJ)), IntegerEntry(aY, (aZ - aJ)), ScriptTransfer(bI.caller, aJ, ar), aK("unstake", ai, aj, aJ, bI.transactionId)] ++ bV)
193+@Callable(Q)
194+func setAdmins (ad) = {
195+ let X = P(Q)
196+ if ((X == X))
197+ then [StringEntry(o(), makeString(ad, a))]
198+ else throw("Strict value is not equal to itself.")
431199 }
432200
433201
434202
435-@Callable(bI)
436-func claimWx (aj) = {
437- let at = bI.caller
438- let ai = toString(bI.caller)
439- let aW = s(aN, S(aj))
440- let bY = al(aj, ai)
441- let bZ = ao(aj)
442- let ca = am(aj, ai)
443- let cb = an(aj, ai)
444- let cc = toBigInt(u(this, bY))
445- let cd = toBigInt(u(this, ca))
446- let ce = toBigInt(u(this, cb))
447- let cf = toBigInt(u(this, bZ))
448- let cg = br(aj, ai, aW, 0)
449- let bB = cg._1
450- let bV = cg._2
451- let bq = cg._3
452- let ch = (bB - cc)
453- if ((toBigInt(0) >= ch))
454- then throw("nothing to claim")
455- else {
456- let ci = k(g(invoke(aP, "claimWxBoost", [aj, ai], nil))[0])
457- let cj = ch
458- let ck = min([(cj * toBigInt(2)), toBigInt(ci)])
459- let cl = o(g(invoke(aO, "emit", [cj], nil))[0])
460- let cm = g(invoke(aO, "emit", [ck], nil))
461- if ((cm == cm))
203+@Callable(Q)
204+func unstakeAndGetOneTkn (ae,af,ag,ah,ai,aj) = {
205+ let ak = if ((size(Q.payments) != 0))
206+ then throw("No pmnts expd")
207+ else true
208+ if ((ak == ak))
209+ then {
210+ let al = G()
211+ let am = K()
212+ let an = fromBase58String(al[d])
213+ let ao = valueOrErrorMessage(addressFromString(am[g]), "Wr st addr")
214+ let ap = invoke(ao, "unstake", [toBase58String(an), ae], nil)
215+ if ((ap == ap))
462216 then {
463- let cn = (cc + ch)
464- let co = (cd + cj)
465- let cp = (cd + cj)
466- let cq = (cd + cj)
467-[StringEntry(bY, toString(cn)), StringEntry(ca, toString(co)), StringEntry(cb, toString(cp)), StringEntry(bZ, toString(cq)), ScriptTransfer(at, toInt(cj), cl), ScriptTransfer(at, toInt(ck), cl), aK("claim", ai, aj, toInt(ch), bI.transactionId)]
217+ let aq = reentrantInvoke(E, "getOneTkn", [af, ag, ah, ai, aj], [AttachedPayment(an, ae)])
218+ if ((aq == aq))
219+ then nil
220+ else throw("Strict value is not equal to itself.")
468221 }
469222 else throw("Strict value is not equal to itself.")
470223 }
224+ else throw("Strict value is not equal to itself.")
471225 }
472226
473227
474228
475-@Callable(bI)
476-func claimWxREADONLY (aj,ai) = {
477- let bv = ah(ai, aj)
478- let aY = ak(aj)
479- let bY = al(aj, ai)
480- let aR = ap(bv)
481- let aZ = ap(aY)
482- let cc = u(this, bY)
483- let aW = s(aN, S(aj))
484- let ba = getIntegerValue(aN, T(aW))
485- let cr = x(aO, ac())
486- let bb = x(aO, ae())
487- let cs = if ((bb > height))
488- then 0
489- else (height - bb)
490- let ct = fraction((cr * cs), ba, f)
491- let cu = fraction(ct, aR, aZ)
492- let cv = br(aj, ai, aW, 0)
493- let bB = cv._1
494- let bV = cv._2
495- let bq = cv._3
496- let ch = (bB - toBigInt(cc))
497- let cw = g(invoke(aP, "claimWxBoostREADONLY", [aj, ai], nil))
498- let ci = k(cw[0])
499- let cx = m(cw[1])
500- let cj = ch
501- let ck = min([(cj * toBigInt(2)), toBigInt(ci)])
502- let cy = (cj + ck)
503- $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", aj, ai, toString(cy), toString(cc), toString(cj), toString(ck), ((((bq + "::") + toString(cu)) + "::BOOSTDEBUG::") + cx)], e))
229+@Callable(Q)
230+func setAmp (ar) = {
231+ let X = U(Q)
232+ if ((X == X))
233+ then {
234+ let as = invoke(E, "setS", [p(), ar], nil)
235+ let at = invoke(E, "setS", [q(height), ar], nil)
236+ $Tuple2(nil, $Tuple2(as, at))
237+ }
238+ else throw("Strict value is not equal to itself.")
504239 }
505240
506241
507242
508-@Callable(bI)
509-func onModifyWeight (aj,aW) = if ((bI.caller != aN))
510- then throw("permissions denied")
511- else {
512- let cz = aV(aj, aW, 0)
513- let aT = cz._1
514- let bt = cz._2
515- let bu = cz._3
516- bt
517- }
243+@Callable(Q)
244+func ensureCanGetOrPutOneTkn (t) = {
245+ let X = V(Q)
246+ if ((X == X))
247+ then {
248+ let au = {
249+ let M = getInteger(E, s(t))
250+ if ($isInstanceOf(M, "Int"))
251+ then {
252+ let av = M
253+ let aw = (av + value(getInteger(E, h)))
254+ let ax = (height >= aw)
255+ let ay = (aw - height)
256+ if (ax)
257+ then true
258+ else throw(makeString(["you should wait", toString(ay), "blocks more to perform the action"], " "))
259+ }
260+ else true
261+ }
262+ if ((au == au))
263+ then {
264+ let az = invoke(E, "setI", [s(t), height], nil)
265+ if ((az == az))
266+ then nil
267+ else throw("Strict value is not equal to itself.")
268+ }
269+ else throw("Strict value is not equal to itself.")
270+ }
271+ else throw("Strict value is not equal to itself.")
272+ }
518273
519274
520-@Verifier(cA)
521-func cB () = {
522- let cC = {
523- let i = bE()
524- if ($isInstanceOf(i, "ByteVector"))
275+@Verifier(aA)
276+func aB () = {
277+ let aC = {
278+ let M = L()
279+ if ($isInstanceOf(M, "ByteVector"))
525280 then {
526- let bK = i
527- bK
281+ let S = M
282+ S
528283 }
529- else if ($isInstanceOf(i, "Unit"))
530- then cA.senderPublicKey
284+ else if ($isInstanceOf(M, "Unit"))
285+ then aA.senderPublicKey
531286 else throw("Match error")
532287 }
533- sigVerify(cA.bodyBytes, cA.proofs[0], cC)
288+ sigVerify(aA.bodyBytes, aA.proofs[0], aC)
534289 }
535290

github/deemru/w8io/169f3d6 
95.97 ms