tx · C2N5GK9WxVVXSfWq39KyMvsgsmdQ7LDKN1bHRUbgJfxd

3N6BhgoG1mZeN4UGVgSvba8ifuGQxdafTfo:  -0.01400000 Waves

2021.07.07 19:43 [1603427] smart account 3N6BhgoG1mZeN4UGVgSvba8ifuGQxdafTfo > SELF 0.00000000 Waves

{ "type": 13, "id": "C2N5GK9WxVVXSfWq39KyMvsgsmdQ7LDKN1bHRUbgJfxd", "fee": 1400000, "feeAssetId": null, "timestamp": 1625676261424, "version": 2, "chainId": 84, "sender": "3N6BhgoG1mZeN4UGVgSvba8ifuGQxdafTfo", "senderPublicKey": "9j7mtJYK5LgQZ7R4oo8NQfXTfApDBhiKbmPo4ZjWRCCA", "proofs": [ "2Pb9bYBcmKjD7ht5MWBANDDYq9XW9habLuYZSga4Bq5unsQ3Vpq4dHF3wFDXiCBPYs4HWEQC3hFDQj8LB92AjHY6" ], "script": "base64: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AAAEdGhpcwAAAAlhdmFpbGFibGUJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IBAAAADHN0YWtlZEFtb3VudAAAAAIAAAAOc3Rha2luZ0FkZHJlc3MAAAAFYXNzZXQEAAAAFnN0YWtlZEFtb3VudENhbGN1bGF0ZWQEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAOc3Rha2luZ0FkZHJlc3MJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADHJwZF9iYWxhbmNlXwUAAAAFYXNzZXQCAAAAAV8JAAQlAAAAAQUAAAAEdGhpcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAZzdGFrZWQFAAAAByRtYXRjaDAFAAAABnN0YWtlZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAAHbm90aGluZwUAAAAHJG1hdGNoMAAAAAAAAAAAAAkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgUAAAAWc3Rha2VkQW1vdW50Q2FsY3VsYXRlZAAAAAANc3Rha2VkQW1vdW50QQkBAAAADHN0YWtlZEFtb3VudAAAAAIFAAAAEnN0YWtpbmdBZGRyZXNzVVNETgUAAAALc3RyQXNzZXRJZEEAAAAADXN0YWtlZEFtb3VudEIJAQAAAAxzdGFrZWRBbW91bnQAAAACBQAAABJzdGFraW5nQWRkcmVzc1VTRE4FAAAAC3N0ckFzc2V0SWRCAAAAABFhdmFpbGFibGVCYWxhbmNlQQkAAGUAAAACBQAAAAhiYWxhbmNlQQUAAAANc3Rha2VkQW1vdW50QQAAAAARYXZhaWxhYmxlQmFsYW5jZUIJAABlAAAAAgUAAAAIYmFsYW5jZUIFAAAADXN0YWtlZEFtb3VudEIAAAAAGWFjY291bnRCYWxhbmNlV2l0aFN0YWtlZEEJAABkAAAAAgkBAAAADmFjY291bnRCYWxhbmNlAAAAAQUAAAAIYXNzZXRJZEEFAAAADXN0YWtlZEFtb3VudEEAAAAAGWFjY291bnRCYWxhbmNlV2l0aFN0YWtlZEIJAABkAAAAAgkBAAAADmFjY291bnRCYWxhbmNlAAAAAQUAAAAIYXNzZXRJZEIFAAAADXN0YWtlZEFtb3VudEIAAAAAEGhhc0Vub3VnaEJhbGFuY2UDCQAA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c2V0SWRCBQAAAA5wbXRTdHJBc3NldElkQgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAALa2V5QmFsYW5jZUEFAAAACnBtdEFtb3VudEEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VCBQAAAApwbXRBbW91bnRCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA1rZXlDb21taXNzaW9uBQAAAApjb21taXNzaW9uCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABtrZXlDb21taXNzaW9uU2NhbGVEZWxpbWl0ZXIFAAAAGGNvbW1pc3Npb25TY2FsZURlbGltaXRlcgkABEwAAAACBQAAAApzaGFyZUlzc3VlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAD2tleVNoYXJlQXNzZXRJZAkAAlgAAAABBQAAAAxzaGFyZUlzc3VlSWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAE2tleVNoYXJlQXNzZXRTdXBwbHkFAAAAEnNoYXJlSW5pdGlhbFN1cHBseQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAEnNoYXJlSW5pdGlhbFN1cHBseQUAAAAMc2hhcmVJc3N1ZUlkBQAAAANuaWwAAAABaQEAAAAWcmVwbGVuaXNoV2l0aFR3b1Rva2VucwAAAAEAAAARc2xpcHBhZ2VUb2xlcmFuY2UEAAAAC3BtdEFzc2V0SWRBCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAAtwbXRBc3NldElkQggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEAAAAHYXNzZXRJZAQAAAAKcG10QW1vdW50QQkBAAAAEGRlZHVjdFN0YWtpbmdGZWUAAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQFAAAAC3BtdEFzc2V0SWRBBAAAAApwbXRBbW91bnRCCQEAAAAQZGVkdWN0U3Rha2luZ0ZlZQAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABAAAABmFtb3VudAUAAAALcG10QXNzZXRJZEIEAAAACnRva2VuUmF0aW8JAABrAAAAAwkAAGsAAAADBQAAAAhiYWxhbmNlQQUAAAALc2NhbGVWYWx1ZTgFAAAACnBtdEFtb3VudEEFAAAAC3NjYWxlVmFsdWUzCQAAawAAAAMFAAAACGJhbGFuY2VCBQAAAAtzY2FsZVZhbHVlOAUAAAAKcG10QW1vdW50QgQAAAATcmF0aW9TaGFyZVRva2Vuc0luQQkAAGsAAAADBQAAAApwbXRBbW91bnRBBQAAAAtzY2FsZVZhbHVlOAUAAAAIYmFsYW5jZUEEAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkIJAABrAAAAAwUAAAAKcG10QW1vdW50QgUAAAALc2NhbGVWYWx1ZTgFAAAACGJhbGFuY2VCBAAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQJAABrAAAAAwkAAZcAAAABCQAETAAAAAIFAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkEJAARMAAAAAgUAAAATcmF0aW9TaGFyZVRva2Vuc0luQgUAAAADbmlsBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAAAtzY2FsZVZhbHVlOAMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAAfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAMDCQAAZgAAAAIAAAAAAAAAAAAFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBgkAAGYAAAACBQAAABFzbGlwcGFnZVRvbGVyYW5jZQUAAAAac2xpcHBhZ2VUb2xlcmFuY2VEZWxpbWl0ZXIJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAApU2xpcHBhZ2UgdG9sZXJhbmNlIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAJAAGkAAAAAQUAAAAac2xpcHBhZ2VUb2xlcmFuY2VEZWxpbWl0ZXICAAAAFiBpbmNsdXNpdmVseS4gQWN0dWFsOiAJAAGkAAAAAQUAAAARc2xpcHBhZ2VUb2xlcmFuY2UDCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAACCQAAAgAAAAECAAAAHFR3byBhdHRhY2hlZCBhc3NldHMgZXhwZWN0ZWQDAwkBAAAAAiE9AAAAAgUAAAALcG10QXNzZXRJZEEFAAAACGFzc2V0SWRBBgkBAAAAAiE9AAAAAgUAAAALcG10QXNzZXRJZEIFAAAACGFzc2V0SWRCCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAJUluY29ycmVjdCBhc3NldHMgYXR0YWNoZWQuIEV4cGVjdGVkOiAFAAAAC3N0ckFzc2V0SWRBAgAAAAUgYW5kIAUAAAALc3RyQXNzZXRJZEIDAwkAAGYAAAACCQAAaQAAAAIJAABoAAAAAgUAAAALc2NhbGVWYWx1ZTMJAABlAAAAAgUAAAAac2xpcHBhZ2VUb2xlcmFuY2VEZWxpbWl0ZXIFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBQAAABpzbGlwcGFnZVRvbGVyYW5jZURlbGltaXRlcgUAAAAKdG9rZW5SYXRpbwYJAABmAAAAAgUAAAAKdG9rZW5SYXRpbwkAAGkAAAACCQAAaAAAAAIFAAAAC3NjYWxlVmFsdWUzCQAAZAAAAAIFAAAAGnNsaXBwYWdlVG9sZXJhbmNlRGVsaW1pdGVyBQAAABFzbGlwcGFnZVRvbGVyYW5jZQUAAAAac2xpcHBhZ2VUb2xlcmFuY2VEZWxpbWl0ZXIJAAACAAAAAQIAAAA9SW5jb3JyZWN0IGFzc2V0cyBhbW91bnQ6IGFtb3VudHMgbXVzdCBoYXZlIHRoZSBjb250cmFjdCByYXRpbwMJAAAAAAAAAgUAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50AAAAAAAAAAAACQAAAgAAAAECAAAAHVRvbyBzbWFsbCBhbW91bnQgdG8gcmVwbGVuaXNoAwkBAAAAASEAAAABBQAAABBoYXNFbm91Z2hCYWxhbmNlCQAETgAAAAIJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAApwbXRBbW91bnRBBQAAAAtwbXRBc3NldElkQQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAACnBtdEFtb3VudEIFAAAAC3BtdEFzc2V0SWRCBQAAAANuaWwJAQAAABFzdXNwZW5kU3VzcGljaW91cwAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VBCQAAZAAAAAIFAAAACGJhbGFuY2VBBQAAAApwbXRBbW91bnRBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQgkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAAKcG10QW1vdW50QgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAATa2V5U2hhcmVBc3NldFN1cHBseQkAAGQAAAACBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQJAARMAAAAAgkBAAAAB1JlaXNzdWUAAAADBQAAAAxzaGFyZUFzc2V0SWQFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAYJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQFAAAADHNoYXJlQXNzZXRJZAUAAAADbmlsAAAAAWkBAAAACHdpdGhkcmF3AAAAAAQAAAANJHQwMTAwMDkxMDE1OQkABRQAAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAACXBtdEFtb3VudAgFAAAADSR0MDEwMDA5MTAxNTkAAAACXzEEAAAACnBtdEFzc2V0SWQIBQAAAA0kdDAxMDAwOTEwMTU5AAAAAl8yBAAAAAxhbW91bnRUb1BheUEJAQAAABBkZWR1Y3RTdGFraW5nRmVlAAAAAgkAAGsAAAADBQAAAAlwbXRBbW91bnQFAAAACGJhbGFuY2VBBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAAAhhc3NldElkQQQAAAAMYW1vdW50VG9QYXlCCQEAAAAQZGVkdWN0U3Rha2luZ0ZlZQAAAAIJAABrAAAAAwUAAAAJcG10QW1vdW50BQAAAAhiYWxhbmNlQgUAAAAQc2hhcmVBc3NldFN1cHBseQUAAAAIYXNzZXRJZEIDCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQDCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQAAAgAAAAECAAAAHU9uZSBhdHRhY2hlZCBwYXltZW50IGV4cGVjdGVkAwkBAAAAAiE9AAAAAgUAAAAKcG10QXNzZXRJZAUAAAAMc2hhcmVBc3NldElkCQAAAgAAAAEJAAEsAAAAAgIAAAAkSW5jb3JyZWN0IGFzc2V0IGF0dGFjaGVkLiBFeHBlY3RlZDogCQACWAAAAAEFAAAADHNoYXJlQXNzZXRJZAMJAQAAAAEhAAAAAQUAAAAQaGFzRW5vdWdoQmFsYW5jZQkABE4AAAACCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAJcG10QW1vdW50BQAAAApwbXRBc3NldElkBQAAAANuaWwJAQAAABFzdXNwZW5kU3VzcGljaW91cwAAAAADAwkAAGYAAAACBQAAAAxhbW91bnRUb1BheUEFAAAAEWF2YWlsYWJsZUJhbGFuY2VBBgkAAGYAAAACBQAAAAxhbW91bnRUb1BheUIFAAAAEWF2YWlsYWJsZUJhbGFuY2VCCQEAAAAidGhyb3dJbnN1ZmZpY2llbnRBdmFpbGFibGVCYWxhbmNlcwAAAAIFAAAADGFtb3VudFRvUGF5QQUAAAAMYW1vdW50VG9QYXlCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQkAAGUAAAACBQAAAAhiYWxhbmNlQQUAAAAMYW1vdW50VG9QYXlBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQgkAAGUAAAACBQAAAAhiYWxhbmNlQgUAAAAMYW1vdW50VG9QYXlCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABNrZXlTaGFyZUFzc2V0U3VwcGx5CQAAZQAAAAIFAAAAEHNoYXJlQXNzZXRTdXBwbHkFAAAACXBtdEFtb3VudAkABEwAAAACCQEAAAAEQnVybgAAAAIFAAAADHNoYXJlQXNzZXRJZAUAAAAJcG10QW1vdW50CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAMYW1vdW50VG9QYXlBBQAAAAhhc3NldElkQQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAADGFtb3VudFRvUGF5QgUAAAAIYXNzZXRJZEIFAAAAA25pbAAAAAFpAQAAAAhleGNoYW5nZQAAAAEAAAASbWluQW1vdW50VG9SZWNlaXZlBAAAAA0kdDAxMTM2NTExNDQwCQAFFAAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAQAAAAJcG10QW1vdW50CAUAAAANJHQwMTEzNjUxMTQ0MAAAAAJfMQQAAAAKcG10QXNzZXRJZAgFAAAADSR0MDExMzY1MTE0NDAAAAACXzIKAQAAAA1jYWxjdWxhdGVGZWVzAAAAAgAAAAl0b2tlbkZyb20AAAAHdG9rZW5UbwQAAAAQYW1vdW50V2l0aG91dEZlZQkAAGsAAAADBQAAAAd0b2tlblRvBQAAAAlwbXRBbW91bnQJAABkAAAAAgUAAAAJcG10QW1vdW50BQAAAAl0b2tlbkZyb20EAAAADWFtb3VudFdpdGhGZWUJAABrAAAAAwUAAAAQYW1vdW50V2l0aG91dEZlZQkAAGUAAAACBQAAABhjb21taXNzaW9uU2NhbGVEZWxpbWl0ZXIFAAAACmNvbW1pc3Npb24FAAAAGGNvbW1pc3Npb25TY2FsZURlbGltaXRlcgQAAAAQZ292ZXJuYW5jZVJld2FyZAkAAGsAAAADBQAAABBhbW91bnRXaXRob3V0RmVlBQAAABRjb21taXNzaW9uR292ZXJuYW5jZQUAAAAYY29tbWlzc2lvblNjYWxlRGVsaW1pdGVyAwkAAGYAAAACBQAAABJtaW5BbW91bnRUb1JlY2VpdmUFAAAADWFtb3VudFdpdGhGZWUJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAdQ2FsY3VsYXRlZCBhbW91bnQgdG8gcmVjZWl2ZSAJAAGkAAAAAQUAAAANYW1vdW50V2l0aEZlZQIAAAAgIGlzIGxlc3MgdGhhbiBzcGVjaWZpZWQgbWluaW11bSAJAAGkAAAAAQUAAAASbWluQW1vdW50VG9SZWNlaXZlCQAFFQAAAAMFAAAAEGFtb3VudFdpdGhvdXRGZWUFAAAADWFtb3VudFdpdGhGZWUFAAAAEGdvdmVybmFuY2VSZXdhcmQDCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQDCQAAZwAAAAIAAAAAAAAAAAAFAAAAEm1pbkFtb3VudFRvUmVjZWl2ZQkAAAIAAAABCQABLAAAAAICAAAANE1pbmltYWwgYW1vdW50IHRvIHJlY2VpdmUgbXVzdCBiZSBwb3NpdGl2ZS4gQWN0dWFsOiAJAAGkAAAAAQUAAAASbWluQW1vdW50VG9SZWNlaXZlAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAAB1PbmUgYXR0YWNoZWQgcGF5bWVudCBleHBlY3RlZAMJAQAAAAEhAAAAAQUAAAAQaGFzRW5vdWdoQmFsYW5jZQkABE4AAAACCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAJcG10QW1vdW50BQAAAApwbXRBc3NldElkBQAAAANuaWwJAQAAABFzdXNwZW5kU3VzcGljaW91cwAAAAADCQAAAAAAAAIFAAAACnBtdEFzc2V0SWQFAAAACGFzc2V0SWRBBAAAAAthc3NldElkU2VuZAUAAAAIYXNzZXRJZEIEAAAADSR0MDEyNjE1MTI3MDYJAQAAAA1jYWxjdWxhdGVGZWVzAAAAAgUAAAAIYmFsYW5jZUEFAAAACGJhbGFuY2VCBAAAABBhbW91bnRXaXRob3V0RmVlCAUAAAANJHQwMTI2MTUxMjcwNgAAAAJfMQQAAAANYW1vdW50V2l0aEZlZQgFAAAADSR0MDEyNjE1MTI3MDYAAAACXzIEAAAAEGdvdmVybmFuY2VSZXdhcmQIBQAAAA0kdDAxMjYxNTEyNzA2AAAAAl8zBAAAAAtuZXdCYWxhbmNlQQkAAGQAAAACBQAAAAhiYWxhbmNlQQUAAAAJcG10QW1vdW50BAAAAAtuZXdCYWxhbmNlQgkAAGUAAAACCQAAZQAAAAIFAAAACGJhbGFuY2VCBQAAAA1hbW91bnRXaXRoRmVlBQAAABBnb3Zlcm5hbmNlUmV3YXJkAwMJAABnAAAAAgUAAAANc3Rha2VkQW1vdW50QQUAAAALbmV3QmFsYW5jZUEGCQAAZwAAAAIFAAAADXN0YWtlZEFtb3VudEIFAAAAC25ld0JhbGFuY2VCCQEAAAAhdGhyb3dJbnN1ZmZpY2llbnRBdmFpbGFibGVCYWxhbmNlAAAAAwUAAAANYW1vdW50V2l0aEZlZQUAAAARYXZhaWxhYmxlQmFsYW5jZUIFAAAACmFzc2V0TmFtZUIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VBBQAAAAtuZXdCYWxhbmNlQQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAALa2V5QmFsYW5jZUIFAAAAC25ld0JhbGFuY2VCCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAANYW1vdW50V2l0aEZlZQUAAAALYXNzZXRJZFNlbmQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAARZ292ZXJuYW5jZUFkZHJlc3MFAAAAEGdvdmVybmFuY2VSZXdhcmQFAAAAC2Fzc2V0SWRTZW5kBQAAAANuaWwDCQAAAAAAAAIFAAAACnBtdEFzc2V0SWQFAAAACGFzc2V0SWRCBAAAAAthc3NldElkU2VuZAUAAAAIYXNzZXRJZEEEAAAADSR0MDEzNTI5MTM2MjAJAQAAAA1jYWxjdWxhdGVGZWVzAAAAAgUAAAAIYmFsYW5jZUIFAAAACGJhbGFuY2VBBAAAABBhbW91bnRXaXRob3V0RmVlCAUAAAANJHQwMTM1MjkxMzYyMAAAAAJfMQQAAAANYW1vdW50V2l0aEZlZQgFAAAADSR0MDEzNTI5MTM2MjAAAAACXzIEAAAAEGdvdmVybmFuY2VSZXdhcmQIBQAAAA0kdDAxMzUyOTEzNjIwAAAAAl8zBAAAAAtuZXdCYWxhbmNlQQkAAGUAAAACCQAAZQAAAAIFAAAACGJhbGFuY2VBBQAAAA1hbW91bnRXaXRoRmVlBQAAABBnb3Zlcm5hbmNlUmV3YXJkBAAAAAtuZXdCYWxhbmNlQgkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAAJcG10QW1vdW50AwMJAABnAAAAAgUAAAANc3Rha2VkQW1vdW50QQUAAAALbmV3QmFsYW5jZUEGCQAAZwAAAAIFAAAADXN0YWtlZEFtb3VudEIFAAAAC25ld0JhbGFuY2VCCQEAAAAhdGhyb3dJbnN1ZmZpY2llbnRBdmFpbGFibGVCYWxhbmNlAAAAAwUAAAANYW1vdW50V2l0aEZlZQUAAAARYXZhaWxhYmxlQmFsYW5jZUEFAAAACmFzc2V0TmFtZUEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VBBQAAAAtuZXdCYWxhbmNlQQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAALa2V5QmFsYW5jZUIFAAAAC25ld0JhbGFuY2VCCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAANYW1vdW50V2l0aEZlZQUAAAALYXNzZXRJZFNlbmQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAARZ292ZXJuYW5jZUFkZHJlc3MFAAAAEGdvdmVybmFuY2VSZXdhcmQFAAAAC2Fzc2V0SWRTZW5kBQAAAANuaWwJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAkSW5jb3JyZWN0IGFzc2V0IGF0dGFjaGVkLiBFeHBlY3RlZDogBQAAAAtzdHJBc3NldElkQQIAAAAEIG9yIAUAAAALc3RyQXNzZXRJZEIAAAABaQEAAAAIc2h1dGRvd24AAAAAAwkBAAAAASEAAAABBQAAAAhpc0FjdGl2ZQkAAAIAAAABCQABLAAAAAICAAAAIkRBcHAgaXMgYWxyZWFkeSBzdXNwZW5kZWQuIENhdXNlOiAJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAAIa2V5Q2F1c2UCAAAAGnRoZSBjYXVzZSB3YXNuJ3Qgc3BlY2lmaWVkAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwkABEwAAAACBQAAABRhZG1pblB1YktleVN0YXJ0U3RvcAUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAAhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uCQEAAAAHc3VzcGVuZAAAAAECAAAAD1BhdXNlZCBieSBhZG1pbgAAAAFpAQAAAAhhY3RpdmF0ZQAAAAADBQAAAAhpc0FjdGl2ZQkAAAIAAAABAgAAABZEQXBwIGlzIGFscmVhZHkgYWN0aXZlAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwkABEwAAAACBQAAABRhZG1pblB1YktleVN0YXJ0U3RvcAUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAAhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAAlrZXlBY3RpdmUGCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAACGtleUNhdXNlBQAAAANuaWwAAAABaQEAAAAZdGFrZUludG9BY2NvdW50RXh0cmFGdW5kcwAAAAEAAAALYW1vdW50TGVhdmUEAAAAHXVuY291bnRhYmxlQW1vdW50RW5yb2xsQXNzZXRBCQAAZQAAAAIFAAAAGWFjY291bnRCYWxhbmNlV2l0aFN0YWtlZEEFAAAACGJhbGFuY2VBBAAAAB11bmNvdW50YWJsZUFtb3VudEVucm9sbEFzc2V0QgkAAGUAAAACBQAAABlhY2NvdW50QmFsYW5jZVdpdGhTdGFrZWRCBQAAAAhiYWxhbmNlQgQAAAANYW1vdW50RW5yb2xsQQkAAGUAAAACBQAAAB11bmNvdW50YWJsZUFtb3VudEVucm9sbEFzc2V0QQMJAAAAAAAAAgUAAAAIYXNzZXRJZEEFAAAABHVuaXQFAAAAC2Ftb3VudExlYXZlAAAAAAAAAAAABAAAAA1hbW91bnRFbnJvbGxCCQAAZQAAAAIFAAAAHXVuY291bnRhYmxlQW1vdW50RW5yb2xsQXNzZXRCAwkAAAAAAAACBQAAAAhhc3NldElkQgUAAAAEdW5pdAUAAAALYW1vdW50TGVhdmUAAAAAAAAAAAADCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAArT25seSB0aGUgREFwcCBpdHNlbGYgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgMJAABmAAAAAgAAAAAAAAAAAAUAAAALYW1vdW50TGVhdmUJAAACAAAAAQkAASwAAAACAgAAADNBcmd1bWVudCAnYW1vdW50TGVhdmUnIGNhbm5vdCBiZSBuZWdhdGl2ZS4gQWN0dWFsOiAJAAGkAAAAAQUAAAALYW1vdW50TGVhdmUDAwkAAGYAAAACAAAAAAAAAAAABQAAAB11bmNvdW50YWJsZUFtb3VudEVucm9sbEFzc2V0QQYJAABmAAAAAgAAAAAAAAAAAAUAAAAddW5jb3VudGFibGVBbW91bnRFbnJvbGxBc3NldEIJAQAAAAdzdXNwZW5kAAAAAQIAAAAWRW5yb2xsIGFtb3VudCBuZWdhdGl2ZQMDCQAAZgAAAAIAAAAAAAAAAAAFAAAADWFtb3VudEVucm9sbEEGCQAAZgAAAAIAAAAAAAAAAAAFAAAADWFtb3VudEVucm9sbEIJAAACAAAAAQIAAAAVVG9vIGxhcmdlIGFtb3VudExlYXZlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQkAAGQAAAACBQAAAAhiYWxhbmNlQQUAAAANYW1v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", "height": 1603427, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HCYnn4FCaeak93DqJZSEwpvv61o6M35y8WyXcKFbkMqN Next: zx5MqzJCvXEPAmfvTjWFZed3NyCEUVrUzNSAoLL8n97 Diff:
OldNewDifferences
3535
3636 let q = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
3737
38-let r = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
38+let r = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
3939
4040 let s = Address(base58'3N6q7sCGSSLBUXDdjBdYGTJbZGZfhhh8cNg')
4141
4545
4646 let v = base58'2HAJrwa8q4SxBx9cHYaBTQdBjdk5wwqdof7ccpAx2uhZ'
4747
48-let w = Address(base58'3MuDZSULkhcvXKP7YG2HbuKrBUNe324Zss5')
48+let w = Address(base58'3N77kfPbQyjXWpDALX3xjKw3iEGMWEctV37')
4949
5050 let x = Address(base58'3MzTHd4e3yukNUURApVLVzH5uxeEsXHD6yY')
5151
52-let y = (9 * value(value(assetInfo(t)).minSponsoredFee))
52+let y = 270000
5353
5454 let z = getBooleanValue(this, c)
5555
216216 func ax (ay,az) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(ay)) + " ") + E) + " and ") + toString(az)) + " ") + I) + " due to staking. Available: ") + toString(ae)) + " ") + E) + " and ") + toString(af)) + " ") + I) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
217217
218218
219-@Callable(aA)
219+func aA () = am(((((((((((((((("Suspicious state. Actual balances: " + toString(ag)) + " ") + E) + ", ") + toString(ah)) + " ") + I) + ". State: ") + toString(J)) + " ") + E) + ", ") + toString(K)) + " ") + I))
220+
221+
222+@Callable(aB)
220223 func init () = {
221- let aB = $Tuple2(aA.payments[0].amount, aA.payments[0].assetId)
222- let aC = aB._1
223- let aD = aB._2
224- let aE = $Tuple2(aA.payments[1].amount, aA.payments[1].assetId)
225- let aF = aE._1
226- let aG = aE._2
227- let aH = aj(aD)
228- let aI = aH._1
229- let aJ = aH._2
230- let aK = aH._3
231- let aL = aj(aG)
232- let aM = aL._1
233- let aN = aL._2
234- let aO = aL._3
224+ let aC = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
225+ let aD = aC._1
226+ let aE = aC._2
227+ let aF = $Tuple2(aB.payments[1].amount, aB.payments[1].assetId)
228+ let aG = aF._1
229+ let aH = aF._2
230+ let aI = aj(aE)
231+ let aJ = aI._1
232+ let aK = aI._2
233+ let aL = aI._3
234+ let aM = aj(aH)
235+ let aN = aM._1
236+ let aO = aM._2
237+ let aP = aM._3
235238 if (isDefined(getBoolean(this, c)))
236239 then throw("DApp is already active")
237- else if ((aD == aG))
240+ else if ((aE == aH))
238241 then throw("Assets must be different")
239242 else {
240- let aP = ((("s" + take(aJ, 7)) + "_") + take(aN, 7))
241- let aQ = ((((("ShareToken of SwopFi protocol for " + aJ) + " and ") + aN) + " at address ") + toString(this))
242- let aR = ((aK + aO) / 2)
243- let aS = fraction(pow(aC, aK, 5, 1, aK, HALFDOWN), pow(aF, aO, 5, 1, aO, HALFDOWN), pow(10, 0, aR, 0, 0, HALFDOWN))
244- let aT = Issue(aP, aQ, aS, aR, true)
245- let aU = calculateAssetId(aT)
246-[StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aI), StringEntry(e, aM), IntegerEntry(f, aC), IntegerEntry(g, aF), IntegerEntry(j, N), IntegerEntry(k, P), aT, StringEntry(h, toBase58String(aU)), IntegerEntry(i, aS), ScriptTransfer(aA.caller, aS, aU)]
243+ let aQ = ((("s" + take(aK, 7)) + "_") + take(aO, 7))
244+ let aR = ((((("ShareToken of SwopFi protocol for " + aK) + " and ") + aO) + " at address ") + toString(this))
245+ let aS = ((aL + aP) / 2)
246+ let aT = fraction(pow(aD, aL, 5, 1, aL, HALFDOWN), pow(aG, aP, 5, 1, aP, HALFDOWN), pow(10, 0, aS, 0, 0, HALFDOWN))
247+ let aU = Issue(aQ, aR, aT, aS, true)
248+ let aV = calculateAssetId(aU)
249+[StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aJ), StringEntry(e, aN), IntegerEntry(f, aD), IntegerEntry(g, aG), IntegerEntry(j, N), IntegerEntry(k, P), aU, StringEntry(h, toBase58String(aV)), IntegerEntry(i, aT), ScriptTransfer(aB.caller, aT, aV)]
247250 }
248251 }
249252
250253
251254
252-@Callable(aA)
253-func replenishWithTwoTokens (aV) = {
254- let aD = aA.payments[0].assetId
255- let aG = aA.payments[1].assetId
256- let aC = ar(aA.payments[0].amount, aD)
257- let aF = ar(aA.payments[1].amount, aG)
258- let aW = fraction(fraction(J, R, aC), Q, fraction(K, R, aF))
259- let aX = fraction(aC, R, J)
260- let aY = fraction(aF, R, K)
261- let aZ = fraction(min([aX, aY]), M, R)
255+@Callable(aB)
256+func replenishWithTwoTokens (aW) = {
257+ let aE = aB.payments[0].assetId
258+ let aH = aB.payments[1].assetId
259+ let aD = ar(aB.payments[0].amount, aE)
260+ let aG = ar(aB.payments[1].amount, aH)
261+ let aX = fraction(fraction(J, R, aD), Q, fraction(K, R, aG))
262+ let aY = fraction(aD, R, J)
263+ let aZ = fraction(aG, R, K)
264+ let ba = fraction(min([aY, aZ]), M, R)
262265 if (!(z))
263266 then throw("DApp is inactive at this moment")
264- else if (if ((0 > aV))
267+ else if (if ((0 > aW))
265268 then true
266- else (aV > S))
267- then throw(((("Slippage tolerance must be between 0 and " + toString(S)) + " inclusively. Actual: ") + toString(aV)))
268- else if ((size(aA.payments) != 2))
269+ else (aW > S))
270+ then throw(((("Slippage tolerance must be between 0 and " + toString(S)) + " inclusively. Actual: ") + toString(aW)))
271+ else if ((size(aB.payments) != 2))
269272 then throw("Two attached assets expected")
270- else if (if ((aD != C))
273+ else if (if ((aE != C))
271274 then true
272- else (aG != D))
275+ else (aH != D))
273276 then throw(((("Incorrect assets attached. Expected: " + A) + " and ") + B))
274- else if (if ((((Q * (S - aV)) / S) > aW))
277+ else if (if ((((Q * (S - aW)) / S) > aX))
275278 then true
276- else (aW > ((Q * (S + aV)) / S)))
279+ else (aX > ((Q * (S + aW)) / S)))
277280 then throw("Incorrect assets amount: amounts must have the contract ratio")
278- else if ((aZ == 0))
281+ else if ((ba == 0))
279282 then throw("Too small amount to replenish")
280283 else if (!(ai))
281- then ([ScriptTransfer(aA.caller, aC, aD), ScriptTransfer(aA.caller, aF, aG)] ++ am(((((((((((((((("Suspicious state. Actual balances: " + toString(J)) + " ") + E) + ", ") + toString(K)) + " ") + I) + ". State: ") + toString(U(C))) + " ") + E) + ", ") + toString(U(D))) + " ") + I)))
282- else [IntegerEntry(f, (J + aC)), IntegerEntry(g, (K + aF)), IntegerEntry(i, (M + aZ)), Reissue(L, aZ, true), ScriptTransfer(aA.caller, aZ, L)]
284+ then ([ScriptTransfer(aB.caller, aD, aE), ScriptTransfer(aB.caller, aG, aH)] ++ aA())
285+ else [IntegerEntry(f, (J + aD)), IntegerEntry(g, (K + aG)), IntegerEntry(i, (M + ba)), Reissue(L, ba, true), ScriptTransfer(aB.caller, ba, L)]
283286 }
284287
285288
286289
287-@Callable(aA)
290+@Callable(aB)
288291 func withdraw () = {
289- let ba = $Tuple2(aA.payments[0].amount, aA.payments[0].assetId)
290- let bb = ba._1
291- let bc = ba._2
292- let bd = ar(fraction(bb, J, M), C)
293- let be = ar(fraction(bb, K, M), D)
292+ let bb = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
293+ let bc = bb._1
294+ let bd = bb._2
295+ let be = ar(fraction(bc, J, M), C)
296+ let bf = ar(fraction(bc, K, M), D)
294297 if (!(z))
295298 then throw("DApp is inactive at this moment")
296- else if ((size(aA.payments) != 1))
299+ else if ((size(aB.payments) != 1))
297300 then throw("One attached payment expected")
298- else if ((bc != L))
301+ else if ((bd != L))
299302 then throw(("Incorrect asset attached. Expected: " + toBase58String(L)))
300303 else if (!(ai))
301- then ([ScriptTransfer(aA.caller, bb, bc)] ++ am(((((((((((((((("Suspicious state. Actual balances: " + toString(J)) + " ") + E) + ", ") + toString(K)) + " ") + I) + ". State: ") + toString(U(C))) + " ") + E) + ", ") + toString(U(D))) + " ") + I)))
302- else if (if ((bd > ae))
304+ then ([ScriptTransfer(aB.caller, bc, bd)] ++ aA())
305+ else if (if ((be > ae))
303306 then true
304- else (be > af))
305- then ax(bd, be)
306- else [IntegerEntry(f, (J - bd)), IntegerEntry(g, (K - be)), IntegerEntry(i, (M - bb)), Burn(L, bb), ScriptTransfer(aA.caller, bd, C), ScriptTransfer(aA.caller, be, D)]
307+ else (bf > af))
308+ then ax(be, bf)
309+ else [IntegerEntry(f, (J - be)), IntegerEntry(g, (K - bf)), IntegerEntry(i, (M - bc)), Burn(L, bc), ScriptTransfer(aB.caller, be, C), ScriptTransfer(aB.caller, bf, D)]
307310 }
308311
309312
310313
311-@Callable(aA)
312-func exchange (bf) = {
313- let bg = $Tuple2(aA.payments[0].amount, aA.payments[0].assetId)
314- let bb = bg._1
315- let bc = bg._2
316- func bh (bi,bj) = {
317- let bk = fraction(bj, bb, (bb + bi))
318- let bl = fraction(bk, (P - N), P)
319- let bm = fraction(bk, O, P)
320- if ((bf > bl))
321- then throw(((("Calculated amount to receive " + toString(bl)) + " is less than specified minimum ") + toString(bf)))
322- else $Tuple3(bk, bl, bm)
314+@Callable(aB)
315+func exchange (bg) = {
316+ let bh = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
317+ let bc = bh._1
318+ let bd = bh._2
319+ func bi (bj,bk) = {
320+ let bl = fraction(bk, bc, (bc + bj))
321+ let bm = fraction(bl, (P - N), P)
322+ let bn = fraction(bl, O, P)
323+ if ((bg > bm))
324+ then throw(((("Calculated amount to receive " + toString(bm)) + " is less than specified minimum ") + toString(bg)))
325+ else $Tuple3(bl, bm, bn)
323326 }
324327
325328 if (!(z))
326329 then throw("DApp is inactive at this moment")
327- else if ((0 >= bf))
328- then throw(("Minimal amount to receive must be positive. Actual: " + toString(bf)))
329- else if ((size(aA.payments) != 1))
330+ else if ((0 >= bg))
331+ then throw(("Minimal amount to receive must be positive. Actual: " + toString(bg)))
332+ else if ((size(aB.payments) != 1))
330333 then throw("One attached payment expected")
331334 else if (!(ai))
332- then ([ScriptTransfer(aA.caller, bb, bc)] ++ am(((((((((((((((("Suspicious state. Actual balances: " + toString(J)) + " ") + E) + ", ") + toString(K)) + " ") + I) + ". State: ") + toString(U(C))) + " ") + E) + ", ") + toString(U(D))) + " ") + I)))
333- else if ((bc == C))
335+ then ([ScriptTransfer(aB.caller, bc, bd)] ++ aA())
336+ else if ((bd == C))
334337 then {
335- let bn = D
336- let bo = bh(J, K)
337- let bk = bo._1
338- let bl = bo._2
339- let bm = bo._3
340- let bp = (J + bb)
341- let bq = ((K - bl) - bm)
342- if (if ((ac >= bp))
338+ let bo = D
339+ let bp = bi(J, K)
340+ let bl = bp._1
341+ let bm = bp._2
342+ let bn = bp._3
343+ let bq = (J + bc)
344+ let br = ((K - bm) - bn)
345+ if (if ((ac >= bq))
343346 then true
344- else (ad >= bq))
345- then au(bl, af, I)
346- else [IntegerEntry(f, bp), IntegerEntry(g, bq), ScriptTransfer(aA.caller, bl, bn), ScriptTransfer(r, bm, bn)]
347+ else (ad >= br))
348+ then au(bm, af, I)
349+ else [IntegerEntry(f, bq), IntegerEntry(g, br), ScriptTransfer(aB.caller, bm, bo), ScriptTransfer(r, bn, bo)]
347350 }
348- else if ((bc == D))
351+ else if ((bd == D))
349352 then {
350- let bn = C
351- let br = bh(K, J)
352- let bk = br._1
353- let bl = br._2
354- let bm = br._3
355- let bp = ((J - bl) - bm)
356- let bq = (K + bb)
357- if (if ((ac >= bp))
353+ let bo = C
354+ let bs = bi(K, J)
355+ let bl = bs._1
356+ let bm = bs._2
357+ let bn = bs._3
358+ let bq = ((J - bm) - bn)
359+ let br = (K + bc)
360+ if (if ((ac >= bq))
358361 then true
359- else (ad >= bq))
360- then au(bl, ae, E)
361- else [IntegerEntry(f, bp), IntegerEntry(g, bq), ScriptTransfer(aA.caller, bl, bn), ScriptTransfer(r, bm, bn)]
362+ else (ad >= br))
363+ then au(bm, ae, E)
364+ else [IntegerEntry(f, bq), IntegerEntry(g, br), ScriptTransfer(aB.caller, bm, bo), ScriptTransfer(r, bn, bo)]
362365 }
363366 else throw(((("Incorrect asset attached. Expected: " + A) + " or ") + B))
364367 }
365368
366369
367370
368-@Callable(aA)
371+@Callable(aB)
369372 func shutdown () = if (!(z))
370373 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, l), "the cause wasn't specified")))
371- else if (!(containsElement([m, n, o, p], aA.callerPublicKey)))
374+ else if (!(containsElement([m, n, o, p], aB.callerPublicKey)))
372375 then throw("Only admin can call this function")
373376 else am("Paused by admin")
374377
375378
376379
377-@Callable(aA)
380+@Callable(aB)
378381 func activate () = if (z)
379382 then throw("DApp is already active")
380- else if (!(containsElement([m, n, o, p], aA.callerPublicKey)))
383+ else if (!(containsElement([m, n, o, p], aB.callerPublicKey)))
381384 then throw("Only admin can call this function")
382385 else [BooleanEntry(c, true), DeleteEntry(l)]
383386
384387
385388
386-@Callable(aA)
387-func takeIntoAccountExtraFunds (bs) = {
388- let bt = (ag - J)
389- let bu = (ah - K)
390- let bv = (bt - (if ((C == t))
391- then bs
389+@Callable(aB)
390+func takeIntoAccountExtraFunds (bt) = {
391+ let bu = (ag - J)
392+ let bv = (ah - K)
393+ let bw = (bu - (if ((C == unit))
394+ then bt
392395 else 0))
393- let bw = (bu - (if ((D == t))
394- then bs
396+ let bx = (bv - (if ((D == unit))
397+ then bt
395398 else 0))
396399 if (!(z))
397400 then throw("DApp is inactive at this moment")
398- else if ((aA.caller != this))
401+ else if ((aB.caller != this))
399402 then throw("Only the DApp itself can call this function")
400- else if ((0 > bs))
401- then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(bs)))
402- else if (if ((0 > bt))
403+ else if ((0 > bt))
404+ then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(bt)))
405+ else if (if ((0 > bu))
403406 then true
404- else (0 > bu))
407+ else (0 > bv))
405408 then am("Enroll amount negative")
406- else if (if ((0 > bv))
409+ else if (if ((0 > bw))
407410 then true
408- else (0 > bw))
411+ else (0 > bx))
409412 then throw("Too large amountLeave")
410- else [IntegerEntry(f, (J + bv)), IntegerEntry(g, (K + bw)), IntegerEntry(("last_income_" + A), bv), IntegerEntry(("last_income_" + B), bw)]
413+ else [IntegerEntry(f, (J + bw)), IntegerEntry(g, (K + bx)), IntegerEntry(("last_income_" + A), bw), IntegerEntry(("last_income_" + B), bx)]
411414 }
412415
413416
414-@Verifier(bx)
415-func by () = {
416- let F = bx
417+@Verifier(by)
418+func bz () = {
419+ let F = by
417420 if ($isInstanceOf(F, "InvokeScriptTransaction"))
418421 then {
419- let bz = F
420- if (if (if (sigVerify(bz.bodyBytes, bz.proofs[0], q))
421- then (bz.dApp == s)
422+ let bA = F
423+ if (if (if (sigVerify(bA.bodyBytes, bA.proofs[0], q))
424+ then (bA.dApp == s)
422425 else false)
423426 then true
424- else if (if (sigVerify(bz.bodyBytes, bz.proofs[0], q))
425- then (bz.function == "exchange")
427+ else if (if (sigVerify(bA.bodyBytes, bA.proofs[0], q))
428+ then (bA.function == "exchange")
426429 else false)
427430 then if (if (if (if ((C == u))
428431 then (D == t)
429432 else false)
430- then (bz.dApp == w)
433+ then (bA.dApp == w)
431434 else false)
432- then (bz.payments[0].assetId == unit)
435+ then if ((bA.payments[0].assetId == unit))
436+ then true
437+ else (bA.payments[0].assetId == t)
433438 else false)
434439 then true
435- else if (if (if ((C == u))
440+ else if (if ((C == u))
436441 then (D == v)
437442 else false)
438- then (bz.dApp == x)
439- else false)
440- then (bz.payments[0].assetId == t)
443+ then if (if ((bA.dApp == x))
444+ then (bA.payments[0].assetId == t)
445+ else false)
446+ then true
447+ else if ((bA.dApp == w))
448+ then if ((bA.payments[0].assetId == unit))
449+ then true
450+ else (bA.payments[0].assetId == t)
451+ else false
441452 else false
442453 else false)
443454 then true
444- else if (if (sigVerify(bz.bodyBytes, bz.proofs[0], q))
445- then (bz.dApp == this)
455+ else if (if (sigVerify(bA.bodyBytes, bA.proofs[0], q))
456+ then (bA.dApp == this)
446457 else false)
447- then (bz.function == "takeIntoAccountExtraFunds")
458+ then (bA.function == "takeIntoAccountExtraFunds")
448459 else false
449460 }
450- else sigVerify(bx.bodyBytes, bx.proofs[0], bx.senderPublicKey)
461+ else {
462+ let bB = if (sigVerify(by.bodyBytes, by.proofs[0], m))
463+ then 1
464+ else 0
465+ let bC = if (sigVerify(by.bodyBytes, by.proofs[1], n))
466+ then 1
467+ else 0
468+ let bD = if (sigVerify(by.bodyBytes, by.proofs[2], o))
469+ then 1
470+ else 0
471+ (((bB + bC) + bD) >= 2)
472+ }
451473 }
452474
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "1.0.0"
55
66 let b = "version"
77
88 let c = "active"
99
1010 let d = "A_asset_id"
1111
1212 let e = "B_asset_id"
1313
1414 let f = "A_asset_balance"
1515
1616 let g = "B_asset_balance"
1717
1818 let h = "share_asset_id"
1919
2020 let i = "share_asset_supply"
2121
2222 let j = "commission"
2323
2424 let k = "commission_scale_delimiter"
2525
2626 let l = "shutdown_cause"
2727
2828 let m = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
2929
3030 let n = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
3131
3232 let o = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
3333
3434 let p = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
3535
3636 let q = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
3737
38-let r = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
38+let r = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
3939
4040 let s = Address(base58'3N6q7sCGSSLBUXDdjBdYGTJbZGZfhhh8cNg')
4141
4242 let t = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
4343
4444 let u = base58'36mg8NZTaFRDygiVwb8uBnLR51hetJruUCZcxhaVcHj9'
4545
4646 let v = base58'2HAJrwa8q4SxBx9cHYaBTQdBjdk5wwqdof7ccpAx2uhZ'
4747
48-let w = Address(base58'3MuDZSULkhcvXKP7YG2HbuKrBUNe324Zss5')
48+let w = Address(base58'3N77kfPbQyjXWpDALX3xjKw3iEGMWEctV37')
4949
5050 let x = Address(base58'3MzTHd4e3yukNUURApVLVzH5uxeEsXHD6yY')
5151
52-let y = (9 * value(value(assetInfo(t)).minSponsoredFee))
52+let y = 270000
5353
5454 let z = getBooleanValue(this, c)
5555
5656 let A = getStringValue(this, d)
5757
5858 let B = getStringValue(this, e)
5959
6060 let C = if ((A == "WAVES"))
6161 then unit
6262 else fromBase58String(A)
6363
6464 let D = if ((B == "WAVES"))
6565 then unit
6666 else fromBase58String(B)
6767
6868 let E = {
6969 let F = C
7070 if ($isInstanceOf(F, "ByteVector"))
7171 then {
7272 let G = F
7373 value(assetInfo(G)).name
7474 }
7575 else if ($isInstanceOf(F, "Unit"))
7676 then {
7777 let H = F
7878 "WAVES"
7979 }
8080 else throw("Match error")
8181 }
8282
8383 let I = {
8484 let F = D
8585 if ($isInstanceOf(F, "ByteVector"))
8686 then {
8787 let G = F
8888 value(assetInfo(G)).name
8989 }
9090 else if ($isInstanceOf(F, "Unit"))
9191 then {
9292 let H = F
9393 "WAVES"
9494 }
9595 else throw("Match error")
9696 }
9797
9898 let J = getIntegerValue(this, f)
9999
100100 let K = getIntegerValue(this, g)
101101
102102 let L = fromBase58String(getStringValue(this, h))
103103
104104 let M = getIntegerValue(this, i)
105105
106106 let N = 3000
107107
108108 let O = 1200
109109
110110 let P = 1000000
111111
112112 let Q = 1000
113113
114114 let R = 100000000
115115
116116 let S = 1000
117117
118118 let T = 8
119119
120120 func U (V) = {
121121 let F = V
122122 if ($isInstanceOf(F, "ByteVector"))
123123 then {
124124 let G = F
125125 assetBalance(this, G)
126126 }
127127 else if ($isInstanceOf(F, "Unit"))
128128 then {
129129 let H = F
130130 wavesBalance(this).available
131131 }
132132 else throw("Match error")
133133 }
134134
135135
136136 func W (X,Y) = {
137137 let Z = {
138138 let F = getInteger(X, ((("rpd_balance_" + Y) + "_") + toString(this)))
139139 if ($isInstanceOf(F, "Int"))
140140 then {
141141 let aa = F
142142 aa
143143 }
144144 else if ($isInstanceOf(F, "Unit"))
145145 then {
146146 let ab = F
147147 0
148148 }
149149 else throw("Match error")
150150 }
151151 Z
152152 }
153153
154154
155155 let ac = W(s, A)
156156
157157 let ad = W(s, B)
158158
159159 let ae = (J - ac)
160160
161161 let af = (K - ad)
162162
163163 let ag = (U(C) + ac)
164164
165165 let ah = (U(D) + ad)
166166
167167 let ai = if ((ag >= J))
168168 then (ah >= K)
169169 else false
170170
171171 func aj (V) = {
172172 let F = V
173173 if ($isInstanceOf(F, "ByteVector"))
174174 then {
175175 let G = F
176176 let ak = toBase58String(G)
177177 let al = valueOrErrorMessage(assetInfo(G), (("Asset " + ak) + " doesn't exist"))
178178 $Tuple3(ak, al.name, al.decimals)
179179 }
180180 else if ($isInstanceOf(F, "Unit"))
181181 then {
182182 let H = F
183183 $Tuple3("WAVES", "WAVES", 8)
184184 }
185185 else throw("Match error")
186186 }
187187
188188
189189 func am (an) = [BooleanEntry(c, false), StringEntry(l, an)]
190190
191191
192192 func ao () = {
193193 let ap = if ((ac > 0))
194194 then 1
195195 else 0
196196 let aq = if ((ad > 0))
197197 then 1
198198 else 0
199199 (ap + aq)
200200 }
201201
202202
203203 func ar (as,V) = if ((V == t))
204204 then {
205205 let at = (as - (ao() * y))
206206 if ((0 >= at))
207207 then throw((((("Insufficient amount " + toString(as)) + " to deduct staking fee ") + toString(y)) + " USD-N"))
208208 else at
209209 }
210210 else as
211211
212212
213213 func au (as,av,aw) = throw((((((((("Insufficient DApp balance to pay " + toString(as)) + " ") + aw) + " due to staking. Available: ") + toString(av)) + " ") + aw) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
214214
215215
216216 func ax (ay,az) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(ay)) + " ") + E) + " and ") + toString(az)) + " ") + I) + " due to staking. Available: ") + toString(ae)) + " ") + E) + " and ") + toString(af)) + " ") + I) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
217217
218218
219-@Callable(aA)
219+func aA () = am(((((((((((((((("Suspicious state. Actual balances: " + toString(ag)) + " ") + E) + ", ") + toString(ah)) + " ") + I) + ". State: ") + toString(J)) + " ") + E) + ", ") + toString(K)) + " ") + I))
220+
221+
222+@Callable(aB)
220223 func init () = {
221- let aB = $Tuple2(aA.payments[0].amount, aA.payments[0].assetId)
222- let aC = aB._1
223- let aD = aB._2
224- let aE = $Tuple2(aA.payments[1].amount, aA.payments[1].assetId)
225- let aF = aE._1
226- let aG = aE._2
227- let aH = aj(aD)
228- let aI = aH._1
229- let aJ = aH._2
230- let aK = aH._3
231- let aL = aj(aG)
232- let aM = aL._1
233- let aN = aL._2
234- let aO = aL._3
224+ let aC = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
225+ let aD = aC._1
226+ let aE = aC._2
227+ let aF = $Tuple2(aB.payments[1].amount, aB.payments[1].assetId)
228+ let aG = aF._1
229+ let aH = aF._2
230+ let aI = aj(aE)
231+ let aJ = aI._1
232+ let aK = aI._2
233+ let aL = aI._3
234+ let aM = aj(aH)
235+ let aN = aM._1
236+ let aO = aM._2
237+ let aP = aM._3
235238 if (isDefined(getBoolean(this, c)))
236239 then throw("DApp is already active")
237- else if ((aD == aG))
240+ else if ((aE == aH))
238241 then throw("Assets must be different")
239242 else {
240- let aP = ((("s" + take(aJ, 7)) + "_") + take(aN, 7))
241- let aQ = ((((("ShareToken of SwopFi protocol for " + aJ) + " and ") + aN) + " at address ") + toString(this))
242- let aR = ((aK + aO) / 2)
243- let aS = fraction(pow(aC, aK, 5, 1, aK, HALFDOWN), pow(aF, aO, 5, 1, aO, HALFDOWN), pow(10, 0, aR, 0, 0, HALFDOWN))
244- let aT = Issue(aP, aQ, aS, aR, true)
245- let aU = calculateAssetId(aT)
246-[StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aI), StringEntry(e, aM), IntegerEntry(f, aC), IntegerEntry(g, aF), IntegerEntry(j, N), IntegerEntry(k, P), aT, StringEntry(h, toBase58String(aU)), IntegerEntry(i, aS), ScriptTransfer(aA.caller, aS, aU)]
243+ let aQ = ((("s" + take(aK, 7)) + "_") + take(aO, 7))
244+ let aR = ((((("ShareToken of SwopFi protocol for " + aK) + " and ") + aO) + " at address ") + toString(this))
245+ let aS = ((aL + aP) / 2)
246+ let aT = fraction(pow(aD, aL, 5, 1, aL, HALFDOWN), pow(aG, aP, 5, 1, aP, HALFDOWN), pow(10, 0, aS, 0, 0, HALFDOWN))
247+ let aU = Issue(aQ, aR, aT, aS, true)
248+ let aV = calculateAssetId(aU)
249+[StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aJ), StringEntry(e, aN), IntegerEntry(f, aD), IntegerEntry(g, aG), IntegerEntry(j, N), IntegerEntry(k, P), aU, StringEntry(h, toBase58String(aV)), IntegerEntry(i, aT), ScriptTransfer(aB.caller, aT, aV)]
247250 }
248251 }
249252
250253
251254
252-@Callable(aA)
253-func replenishWithTwoTokens (aV) = {
254- let aD = aA.payments[0].assetId
255- let aG = aA.payments[1].assetId
256- let aC = ar(aA.payments[0].amount, aD)
257- let aF = ar(aA.payments[1].amount, aG)
258- let aW = fraction(fraction(J, R, aC), Q, fraction(K, R, aF))
259- let aX = fraction(aC, R, J)
260- let aY = fraction(aF, R, K)
261- let aZ = fraction(min([aX, aY]), M, R)
255+@Callable(aB)
256+func replenishWithTwoTokens (aW) = {
257+ let aE = aB.payments[0].assetId
258+ let aH = aB.payments[1].assetId
259+ let aD = ar(aB.payments[0].amount, aE)
260+ let aG = ar(aB.payments[1].amount, aH)
261+ let aX = fraction(fraction(J, R, aD), Q, fraction(K, R, aG))
262+ let aY = fraction(aD, R, J)
263+ let aZ = fraction(aG, R, K)
264+ let ba = fraction(min([aY, aZ]), M, R)
262265 if (!(z))
263266 then throw("DApp is inactive at this moment")
264- else if (if ((0 > aV))
267+ else if (if ((0 > aW))
265268 then true
266- else (aV > S))
267- then throw(((("Slippage tolerance must be between 0 and " + toString(S)) + " inclusively. Actual: ") + toString(aV)))
268- else if ((size(aA.payments) != 2))
269+ else (aW > S))
270+ then throw(((("Slippage tolerance must be between 0 and " + toString(S)) + " inclusively. Actual: ") + toString(aW)))
271+ else if ((size(aB.payments) != 2))
269272 then throw("Two attached assets expected")
270- else if (if ((aD != C))
273+ else if (if ((aE != C))
271274 then true
272- else (aG != D))
275+ else (aH != D))
273276 then throw(((("Incorrect assets attached. Expected: " + A) + " and ") + B))
274- else if (if ((((Q * (S - aV)) / S) > aW))
277+ else if (if ((((Q * (S - aW)) / S) > aX))
275278 then true
276- else (aW > ((Q * (S + aV)) / S)))
279+ else (aX > ((Q * (S + aW)) / S)))
277280 then throw("Incorrect assets amount: amounts must have the contract ratio")
278- else if ((aZ == 0))
281+ else if ((ba == 0))
279282 then throw("Too small amount to replenish")
280283 else if (!(ai))
281- then ([ScriptTransfer(aA.caller, aC, aD), ScriptTransfer(aA.caller, aF, aG)] ++ am(((((((((((((((("Suspicious state. Actual balances: " + toString(J)) + " ") + E) + ", ") + toString(K)) + " ") + I) + ". State: ") + toString(U(C))) + " ") + E) + ", ") + toString(U(D))) + " ") + I)))
282- else [IntegerEntry(f, (J + aC)), IntegerEntry(g, (K + aF)), IntegerEntry(i, (M + aZ)), Reissue(L, aZ, true), ScriptTransfer(aA.caller, aZ, L)]
284+ then ([ScriptTransfer(aB.caller, aD, aE), ScriptTransfer(aB.caller, aG, aH)] ++ aA())
285+ else [IntegerEntry(f, (J + aD)), IntegerEntry(g, (K + aG)), IntegerEntry(i, (M + ba)), Reissue(L, ba, true), ScriptTransfer(aB.caller, ba, L)]
283286 }
284287
285288
286289
287-@Callable(aA)
290+@Callable(aB)
288291 func withdraw () = {
289- let ba = $Tuple2(aA.payments[0].amount, aA.payments[0].assetId)
290- let bb = ba._1
291- let bc = ba._2
292- let bd = ar(fraction(bb, J, M), C)
293- let be = ar(fraction(bb, K, M), D)
292+ let bb = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
293+ let bc = bb._1
294+ let bd = bb._2
295+ let be = ar(fraction(bc, J, M), C)
296+ let bf = ar(fraction(bc, K, M), D)
294297 if (!(z))
295298 then throw("DApp is inactive at this moment")
296- else if ((size(aA.payments) != 1))
299+ else if ((size(aB.payments) != 1))
297300 then throw("One attached payment expected")
298- else if ((bc != L))
301+ else if ((bd != L))
299302 then throw(("Incorrect asset attached. Expected: " + toBase58String(L)))
300303 else if (!(ai))
301- then ([ScriptTransfer(aA.caller, bb, bc)] ++ am(((((((((((((((("Suspicious state. Actual balances: " + toString(J)) + " ") + E) + ", ") + toString(K)) + " ") + I) + ". State: ") + toString(U(C))) + " ") + E) + ", ") + toString(U(D))) + " ") + I)))
302- else if (if ((bd > ae))
304+ then ([ScriptTransfer(aB.caller, bc, bd)] ++ aA())
305+ else if (if ((be > ae))
303306 then true
304- else (be > af))
305- then ax(bd, be)
306- else [IntegerEntry(f, (J - bd)), IntegerEntry(g, (K - be)), IntegerEntry(i, (M - bb)), Burn(L, bb), ScriptTransfer(aA.caller, bd, C), ScriptTransfer(aA.caller, be, D)]
307+ else (bf > af))
308+ then ax(be, bf)
309+ else [IntegerEntry(f, (J - be)), IntegerEntry(g, (K - bf)), IntegerEntry(i, (M - bc)), Burn(L, bc), ScriptTransfer(aB.caller, be, C), ScriptTransfer(aB.caller, bf, D)]
307310 }
308311
309312
310313
311-@Callable(aA)
312-func exchange (bf) = {
313- let bg = $Tuple2(aA.payments[0].amount, aA.payments[0].assetId)
314- let bb = bg._1
315- let bc = bg._2
316- func bh (bi,bj) = {
317- let bk = fraction(bj, bb, (bb + bi))
318- let bl = fraction(bk, (P - N), P)
319- let bm = fraction(bk, O, P)
320- if ((bf > bl))
321- then throw(((("Calculated amount to receive " + toString(bl)) + " is less than specified minimum ") + toString(bf)))
322- else $Tuple3(bk, bl, bm)
314+@Callable(aB)
315+func exchange (bg) = {
316+ let bh = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
317+ let bc = bh._1
318+ let bd = bh._2
319+ func bi (bj,bk) = {
320+ let bl = fraction(bk, bc, (bc + bj))
321+ let bm = fraction(bl, (P - N), P)
322+ let bn = fraction(bl, O, P)
323+ if ((bg > bm))
324+ then throw(((("Calculated amount to receive " + toString(bm)) + " is less than specified minimum ") + toString(bg)))
325+ else $Tuple3(bl, bm, bn)
323326 }
324327
325328 if (!(z))
326329 then throw("DApp is inactive at this moment")
327- else if ((0 >= bf))
328- then throw(("Minimal amount to receive must be positive. Actual: " + toString(bf)))
329- else if ((size(aA.payments) != 1))
330+ else if ((0 >= bg))
331+ then throw(("Minimal amount to receive must be positive. Actual: " + toString(bg)))
332+ else if ((size(aB.payments) != 1))
330333 then throw("One attached payment expected")
331334 else if (!(ai))
332- then ([ScriptTransfer(aA.caller, bb, bc)] ++ am(((((((((((((((("Suspicious state. Actual balances: " + toString(J)) + " ") + E) + ", ") + toString(K)) + " ") + I) + ". State: ") + toString(U(C))) + " ") + E) + ", ") + toString(U(D))) + " ") + I)))
333- else if ((bc == C))
335+ then ([ScriptTransfer(aB.caller, bc, bd)] ++ aA())
336+ else if ((bd == C))
334337 then {
335- let bn = D
336- let bo = bh(J, K)
337- let bk = bo._1
338- let bl = bo._2
339- let bm = bo._3
340- let bp = (J + bb)
341- let bq = ((K - bl) - bm)
342- if (if ((ac >= bp))
338+ let bo = D
339+ let bp = bi(J, K)
340+ let bl = bp._1
341+ let bm = bp._2
342+ let bn = bp._3
343+ let bq = (J + bc)
344+ let br = ((K - bm) - bn)
345+ if (if ((ac >= bq))
343346 then true
344- else (ad >= bq))
345- then au(bl, af, I)
346- else [IntegerEntry(f, bp), IntegerEntry(g, bq), ScriptTransfer(aA.caller, bl, bn), ScriptTransfer(r, bm, bn)]
347+ else (ad >= br))
348+ then au(bm, af, I)
349+ else [IntegerEntry(f, bq), IntegerEntry(g, br), ScriptTransfer(aB.caller, bm, bo), ScriptTransfer(r, bn, bo)]
347350 }
348- else if ((bc == D))
351+ else if ((bd == D))
349352 then {
350- let bn = C
351- let br = bh(K, J)
352- let bk = br._1
353- let bl = br._2
354- let bm = br._3
355- let bp = ((J - bl) - bm)
356- let bq = (K + bb)
357- if (if ((ac >= bp))
353+ let bo = C
354+ let bs = bi(K, J)
355+ let bl = bs._1
356+ let bm = bs._2
357+ let bn = bs._3
358+ let bq = ((J - bm) - bn)
359+ let br = (K + bc)
360+ if (if ((ac >= bq))
358361 then true
359- else (ad >= bq))
360- then au(bl, ae, E)
361- else [IntegerEntry(f, bp), IntegerEntry(g, bq), ScriptTransfer(aA.caller, bl, bn), ScriptTransfer(r, bm, bn)]
362+ else (ad >= br))
363+ then au(bm, ae, E)
364+ else [IntegerEntry(f, bq), IntegerEntry(g, br), ScriptTransfer(aB.caller, bm, bo), ScriptTransfer(r, bn, bo)]
362365 }
363366 else throw(((("Incorrect asset attached. Expected: " + A) + " or ") + B))
364367 }
365368
366369
367370
368-@Callable(aA)
371+@Callable(aB)
369372 func shutdown () = if (!(z))
370373 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, l), "the cause wasn't specified")))
371- else if (!(containsElement([m, n, o, p], aA.callerPublicKey)))
374+ else if (!(containsElement([m, n, o, p], aB.callerPublicKey)))
372375 then throw("Only admin can call this function")
373376 else am("Paused by admin")
374377
375378
376379
377-@Callable(aA)
380+@Callable(aB)
378381 func activate () = if (z)
379382 then throw("DApp is already active")
380- else if (!(containsElement([m, n, o, p], aA.callerPublicKey)))
383+ else if (!(containsElement([m, n, o, p], aB.callerPublicKey)))
381384 then throw("Only admin can call this function")
382385 else [BooleanEntry(c, true), DeleteEntry(l)]
383386
384387
385388
386-@Callable(aA)
387-func takeIntoAccountExtraFunds (bs) = {
388- let bt = (ag - J)
389- let bu = (ah - K)
390- let bv = (bt - (if ((C == t))
391- then bs
389+@Callable(aB)
390+func takeIntoAccountExtraFunds (bt) = {
391+ let bu = (ag - J)
392+ let bv = (ah - K)
393+ let bw = (bu - (if ((C == unit))
394+ then bt
392395 else 0))
393- let bw = (bu - (if ((D == t))
394- then bs
396+ let bx = (bv - (if ((D == unit))
397+ then bt
395398 else 0))
396399 if (!(z))
397400 then throw("DApp is inactive at this moment")
398- else if ((aA.caller != this))
401+ else if ((aB.caller != this))
399402 then throw("Only the DApp itself can call this function")
400- else if ((0 > bs))
401- then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(bs)))
402- else if (if ((0 > bt))
403+ else if ((0 > bt))
404+ then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(bt)))
405+ else if (if ((0 > bu))
403406 then true
404- else (0 > bu))
407+ else (0 > bv))
405408 then am("Enroll amount negative")
406- else if (if ((0 > bv))
409+ else if (if ((0 > bw))
407410 then true
408- else (0 > bw))
411+ else (0 > bx))
409412 then throw("Too large amountLeave")
410- else [IntegerEntry(f, (J + bv)), IntegerEntry(g, (K + bw)), IntegerEntry(("last_income_" + A), bv), IntegerEntry(("last_income_" + B), bw)]
413+ else [IntegerEntry(f, (J + bw)), IntegerEntry(g, (K + bx)), IntegerEntry(("last_income_" + A), bw), IntegerEntry(("last_income_" + B), bx)]
411414 }
412415
413416
414-@Verifier(bx)
415-func by () = {
416- let F = bx
417+@Verifier(by)
418+func bz () = {
419+ let F = by
417420 if ($isInstanceOf(F, "InvokeScriptTransaction"))
418421 then {
419- let bz = F
420- if (if (if (sigVerify(bz.bodyBytes, bz.proofs[0], q))
421- then (bz.dApp == s)
422+ let bA = F
423+ if (if (if (sigVerify(bA.bodyBytes, bA.proofs[0], q))
424+ then (bA.dApp == s)
422425 else false)
423426 then true
424- else if (if (sigVerify(bz.bodyBytes, bz.proofs[0], q))
425- then (bz.function == "exchange")
427+ else if (if (sigVerify(bA.bodyBytes, bA.proofs[0], q))
428+ then (bA.function == "exchange")
426429 else false)
427430 then if (if (if (if ((C == u))
428431 then (D == t)
429432 else false)
430- then (bz.dApp == w)
433+ then (bA.dApp == w)
431434 else false)
432- then (bz.payments[0].assetId == unit)
435+ then if ((bA.payments[0].assetId == unit))
436+ then true
437+ else (bA.payments[0].assetId == t)
433438 else false)
434439 then true
435- else if (if (if ((C == u))
440+ else if (if ((C == u))
436441 then (D == v)
437442 else false)
438- then (bz.dApp == x)
439- else false)
440- then (bz.payments[0].assetId == t)
443+ then if (if ((bA.dApp == x))
444+ then (bA.payments[0].assetId == t)
445+ else false)
446+ then true
447+ else if ((bA.dApp == w))
448+ then if ((bA.payments[0].assetId == unit))
449+ then true
450+ else (bA.payments[0].assetId == t)
451+ else false
441452 else false
442453 else false)
443454 then true
444- else if (if (sigVerify(bz.bodyBytes, bz.proofs[0], q))
445- then (bz.dApp == this)
455+ else if (if (sigVerify(bA.bodyBytes, bA.proofs[0], q))
456+ then (bA.dApp == this)
446457 else false)
447- then (bz.function == "takeIntoAccountExtraFunds")
458+ then (bA.function == "takeIntoAccountExtraFunds")
448459 else false
449460 }
450- else sigVerify(bx.bodyBytes, bx.proofs[0], bx.senderPublicKey)
461+ else {
462+ let bB = if (sigVerify(by.bodyBytes, by.proofs[0], m))
463+ then 1
464+ else 0
465+ let bC = if (sigVerify(by.bodyBytes, by.proofs[1], n))
466+ then 1
467+ else 0
468+ let bD = if (sigVerify(by.bodyBytes, by.proofs[2], o))
469+ then 1
470+ else 0
471+ (((bB + bC) + bD) >= 2)
472+ }
451473 }
452474

github/deemru/w8io/026f985 
115.78 ms