tx · 8bjriE5A9NEpwaQky5JQdLFjcdzVJWLfZ3wufHopyPs5

3PNi1BJendWYYe2CRnqpfLoYxUZ6UTcx3LF:  -0.01400000 Waves

2021.05.26 15:24 [2607287] smart account 3PNi1BJendWYYe2CRnqpfLoYxUZ6UTcx3LF > SELF 0.00000000 Waves

{ "type": 13, "id": "8bjriE5A9NEpwaQky5JQdLFjcdzVJWLfZ3wufHopyPs5", "fee": 1400000, "feeAssetId": null, "timestamp": 1622031787473, "version": 2, "chainId": 87, "sender": "3PNi1BJendWYYe2CRnqpfLoYxUZ6UTcx3LF", "senderPublicKey": "DPiPHjYxH29a4J8cyZDKwgtLKxH17JvT7nwm6ugnSEm7", "proofs": [ "", "3xTwaXg2zWQogsR19zBdu816TSkVoejTgp6kVfB2g8LcsrcaxLWo54XXVNsJ73GV6pcK1xxutcurGo2TwRTJKFic", "4KNcZArkW1KVaYKwKAKyQf7d3UbfETwxuQD7MEE5fqT42wkRerGA4MEstFCJKNAdERTVhZLT7fn5vUK5GFzMJvqk" ], "script": "base64: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bmNlQQUAAAASdG9rZW5SZWNlaXZlQW1vdW50BAAAAAF5CQAAZAAAAAIFAAAACGJhbGFuY2VCBQAAABJ0b2tlblJlY2VpdmVBbW91bnQEAAAADGludmFyaWFudE5ldwMJAAAAAAAAAgUAAAAHdG9rZW5JZAUAAAAIYXNzZXRJZEEJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgUAAAABeAkAAGUAAAACBQAAAAhiYWxhbmNlQgUAAAAVYW1vdW50VG9TZW5kRXN0aW1hdGVkAwkAAAAAAAACBQAAAAd0b2tlbklkBQAAAAhhc3NldElkQgkBAAAADWludmFyaWFudENhbGMAAAACCQAAZQAAAAIFAAAACGJhbGFuY2VBBQAAABVhbW91bnRUb1NlbmRFc3RpbWF0ZWQFAAAAAXkJAAACAAAAAQIAAAAWV3JvbmcgYXNzZXQgaW4gcGF5bWVudAQAAAAXaW52YXJpYW50RXN0aW1hdGVkUmF0aW8JAABrAAAAAwUAAAAGc2NhbGU4BQAAAAlpbnZhcmlhbnQFAAAADGludmFyaWFudE5ldwoBAAAADWdldFN0ZXBBbW91bnQAAAACAAAAA2FjYwAAAARzdGVwAwkAAAAAAAACBQAAAANhY2MA//////////8EAAAADGFtb3VudFRvU2VuZAkAAGUAAAACBQAAABVhbW91bnRUb1NlbmRFc3RpbWF0ZWQJAABpAAAAAgkAAGgAAAACBQAAAARzdGVwBQAAAB5kZWx0YUJldHdlZW5NYXhBbmRNaW5TZW5kVmFsdWUAAAAAAAAAAAUEAAAADXN0ZXBJbnZhcmlhbnQDCQAAAAAAAAIFAAAAB3Rva2VuSWQFAAAACGFzc2V0SWRBCQEAAAANaW52YXJpYW50Q2FsYwAAAAIFAAAAAXgJAABlAAAAAgUAAAAIYmFsYW5jZUIFAAAADGFtb3VudFRvU2VuZAkBAAAADWludmFyaWFudENhbGMAAAACCQAAZQAAAAIFAAAACGJhbGFuY2VBBQAAAAxhbW91bnRUb1NlbmQFAAAAAXkDCQAAZgAAAAIFAAAADXN0ZXBJbnZhcmlhbnQFAAAACWludmFyaWFudAUAAAAMYW1vdW50VG9TZW5kAP//////////BQAAAANhY2MEAAAACnN0ZXBBbW91bnQEAAAADSRsaXN0NTY3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AAAADCBhdCBhZGRyZXNzIAkABCUAAAABBQAAAAR0aGlzBAAAAA1zaGFyZURlY2ltYWxzCQAAaQAAAAIJAABkAAAAAgUAAAAMcG10RGVjaW1hbHNBBQAAAAxwbXREZWNpbWFsc0IAAAAAAAAAAAIEAAAAEnNoYXJlSW5pdGlhbFN1cHBseQkAAGsAAAADCQAAbAAAAAYFAAAACnBtdEFtb3VudEEFAAAADHBtdERlY2ltYWxzQQAAAAAAAAAABQAAAAAAAAAAAQUAAAAMcG10RGVjaW1hbHNBBQAAAAhIQUxGRE9XTgkAAGwAAAAGBQAAAApwbXRBbW91bnRCBQAAAAxwbXREZWNpbWFsc0IAAAAAAAAAAAUAAAAAAAAAAAEFAAAADHBtdERlY2ltYWxzQgUAAAAISEFMRkRPV04JAABsAAAABgAAAAAAAAAACgAAAAAAAAAAAAUAAAANc2hhcmVEZWNpbWFscwAAAAAAAAAAAAAAAAAAAAAAAAUAAAAISEFMRkRPV04EAAAACnNoYXJlSXNzdWUJAARCAAAABQUAAAAJc2hhcmVOYW1lBQAAABBzaGFyZURlc2NyaXB0aW9uBQAAABJzaGFyZUluaXRpYWxTdXBwbHkFAAAADXNoYXJlRGVjaW1hbHMGBAAAAAxzaGFyZUlzc3VlSWQJAAQ4AAAAAQUAAAAKc2hhcmVJc3N1ZQQAAAATaW52YXJpYW50Q2FsY3VsYXRlZAkBAAAADWludmFyaWFudENhbGMAAAACBQAAAApwbXRBbW91bnRBBQAAAApwbXRBbW91bnRCCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAACGtWZXJzaW9uBQAAAAd2ZXJzaW9uCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAAdrQWN0aXZlBgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAlrQXNzZXRJZEEFAAAADnBtdFN0ckFzc2V0SWRBCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAACWtBc3NldElkQgUAAAAOcG10U3RyQXNzZXRJZEIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACWtCYWxhbmNlQQUAAAAKcG10QW1vdW50QQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAJa0JhbGFuY2VCBQAAAApwbXRBbW91bnRCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAprSW52YXJpYW50BQAAABNpbnZhcmlhbnRDYWxjdWxhdGVkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAARrRmVlBQAAAANmZWUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEmtGZWVTY2FsZURlbGltaXRlcgUAAAAJZmVlU2NhbGU2CQAETAAAAAIFAAAACnNoYXJlSXNzdWUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAANa1NoYXJlQXNzZXRJZAkAAlgAAAABBQAAAAxzaGFyZUlzc3VlSWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEWtTaGFyZUFzc2V0U3VwcGx5BQAAABJzaGFyZUluaXRpYWxTdXBwbHkJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAABJzaGFyZUluaXRpYWxTdXBwbHkFAAAADHNoYXJlSXNzdWVJZAUAAAADbmlsAAAAAWkBAAAAFnJlcGxlbmlzaFdpdGhUd29Ub2tlbnMAAAABAAAAEXNsaXBwYWdlVG9sZXJhbmNlBAAAAAtwbXRBc3NldElkQQgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAQAAAALcG10QXNzZXRJZEIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABAAAAB2Fzc2V0SWQEAAAACnBtdEFtb3VudEEJAQAAABBkZWR1Y3RTdGFraW5nRmVlAAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50BQAAAAtwbXRBc3NldElkQQQAAAAKcG10QW1vdW50QgkBAAAAEGRlZHVjdFN0YWtpbmdGZWUAAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQAAAAZhbW91bnQFAAAAC3BtdEFzc2V0SWRCBAAAAAp0b2tlblJhdGlvCQAAawAAAAMJAABrAAAAAwUAAAAGc2NhbGU4BQAAAAhiYWxhbmNlQQUAAAAKcG10QW1vdW50QQUAAAAGc2NhbGUzCQAAawAAAAMFAAAABnNjYWxlOAUAAAAIYmFsYW5jZUIFAAAACnBtdEFtb3VudEIEAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkEJAABrAAAAAwUAAAAGc2NhbGU4BQAAAApwbXRBbW91bnRBBQAAAAhiYWxhbmNlQQQAAAATcmF0aW9TaGFyZVRva2Vuc0luQgkAAGsAAAADBQAAAAZzY2FsZTgFAAAACnBtdEFtb3VudEIFAAAACGJhbGFuY2VCBAAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQJAABrAAAAAwkAAZcAAAABCQAETAAAAAIFAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkEJAARMAAAAAgUAAAATcmF0aW9TaGFyZVRva2Vuc0luQgUAAAADbmlsBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAAAZzY2FsZTgEAAAAE2ludmFyaWFudENhbGN1bGF0ZWQJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgkAAGQAAAACBQAAAAhiYWxhbmNlQQUAAAAKcG10QW1vdW50QQkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAAKcG10QW1vdW50QgMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAQAAAA90aHJvd0lzSW5hY3RpdmUAAAAAAwMJAABmAAAAAgAAAAAAAAAAAAUAAAARc2xpcHBhZ2VUb2xlcmFuY2UGCQAAZgAAAAIFAAAAEXNsaXBwYWdlVG9sZXJhbmNlAAAAAAAAAAAKCQAAAgAAAAECAAAAIFNsaXBwYWdlIHRvbGVyYW5jZSBtdXN0IGJlIDw9IDElAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAgkAAAIAAAABAgAAABxUd28gYXR0YWNoZWQgYXNzZXRzIGV4cGVjdGVkAwMJAQAAAAIhPQAAAAIFAAAAC3BtdEFzc2V0SWRBBQAAAAhhc3NldElkQQYJAQAAAAIhPQAAAAIFAAAAC3BtdEFzc2V0SWRCBQAAAAhhc3NldElkQgkBAAAAC3Rocm93QXNzZXRzAAAAAAMDCQAAZgAAAAIJAABpAAAAAgkAAGgAAAACBQAAAAZzY2FsZTMJAABlAAAAAgUAAAAOc2xpcHBhZ2VTY2FsZTMFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBQAAAA5zbGlwcGFnZVNjYWxlMwUAAAAKdG9rZW5SYXRpbwYJAABmAAAAAgUAAAAKdG9rZW5SYXRpbwkAAGkAAAACCQAAaAAAAAIFAAAABnNjYWxlMwkAAGQAAAACBQAAAA5zbGlwcGFnZVNjYWxlMwUAAAARc2xpcHBhZ2VUb2xlcmFuY2UFAAAADnNsaXBwYWdlU2NhbGUzCQAAAgAAAAECAAAAPUluY29ycmVjdCBhc3NldHMgYW1vdW50OiBhbW91bnRzIG11c3QgaGF2ZSB0aGUgY29udHJhY3QgcmF0aW8DCQAAAAAAAAIFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAAAAAAAAAAAAAkAAAIAAAABAgAAAB1Ub28gc21hbGwgYW1vdW50IHRvIHJlcGxlbmlzaAMJAQAAAAEhAAAAAQUAAAAQaGFzRW5vdWdoQmFsYW5jZQkBAAAAEXN1c3BlbmRTdXNwaWNpb3VzAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAJa0JhbGFuY2VBCQAAZAAAAAIFAAAACGJhbGFuY2VBBQAAAApwbXRBbW91bnRBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAlrQmFsYW5jZUIJAABkAAAAAgUAAAAIYmFsYW5jZUIFAAAACnBtdEFtb3VudEIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEWtTaGFyZUFzc2V0U3VwcGx5CQAAZAAAAAIFAAAAEHNoYXJlQXNzZXRTdXBwbHkFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAKa0ludmFyaWFudAUAAAATaW52YXJpYW50Q2FsY3VsYXRlZAkABEwAAAACCQEAAAAHUmVpc3N1ZQAAAAMFAAAADHNoYXJlQXNzZXRJZAUAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50BgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAUAAAAMc2hhcmVBc3NldElkBQAAAANuaWwAAAABaQEAAAAVcmVwbGVuaXNoV2l0aE9uZVRva2VuAAAAAgAAABN2aXJ0dWFsU3dhcFRva2VuUGF5AAAAE3ZpcnR1YWxTd2FwVG9rZW5HZXQEAAAADSR0MDEyOTMyMTMwMDcJAAUUAAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAAlwbXRBbW91bnQIBQAAAA0kdDAxMjkzMjEzMDA3AAAAAl8xBAAAAApwbXRBc3NldElkCAUAAAANJHQwMTI5MzIxMzAwNwAAAAJfMgQAAAAPcG10TWluVGhyZXNob2xkAAAAAAAATEtABAAAAB10aHJlc2hvbGRWYWx1ZUZvck1pblRvbGVyYW5jZQAAAAAAAvrwgAQAAAAJdG9sZXJhbmNlAwkAAGYAAAACBQAAAB10aHJlc2hvbGRWYWx1ZUZvck1pblRvbGVyYW5jZQUAAAAJcG10QW1vdW50AAAAAAAAAYagAAAAAAAAAAABBAAAABxzbGlwcGFnZVZhbHVlTWluRm9yUmVwbGVuaXNoCQAAZQAAAAIFAAAABnNjYWxlOAkAAGkAAAACCQAAaAAAAAIFAAAABnNjYWxlOAUAAAAJdG9sZXJhbmNlAAAAAAAAmJaABAAAABxzbGlwcGFnZVZhbHVlTWF4Rm9yUmVwbGVuaXNoCQAAZAAAAAIFAAAABnNjYWxlOAkAAGkAAAACCQAAaAAAAAIFAAAABnNjYWxlOAUAAAAJdG9sZXJhbmNlAAAAAAAAmJaABAAAABdzbGlwcGFnZVZhbHVlTWluRm9yU3dhcAkAAGUAAAACBQAAAAZzY2FsZTgJAABpAAAAAgkAAGgAAAACBQAAAAZzY2FsZTgAAAAAAAAAAAEAAAAAAACYloADCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQEAAAAPdGhyb3dJc0luYWN0aXZlAAAAAAMJAABmAAAAAgUAAAAPcG10TWluVGhyZXNob2xkBQAAAAlwbXRBbW91bnQJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9QYXltZW50IGFtb3VudCAJAAGkAAAAAQUAAAAJcG10QW1vdW50AgAAACcgZG9lcyBub3QgZXhjZWVkIHRoZSBtaW5pbXVtIGFtb3VudCBvZiAJAAGkAAAAAQUAAAAPcG10TWluVGhyZXNob2xkAgAAAAcgdG9rZW5zAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAAB1PbmUgYXR0YWNoZWQgcGF5bWVudCBleHBlY3RlZAMJAQAAAAEhAAAAAQUAAAAQaGFzRW5vdWdoQmFsYW5jZQkBAAAAEXN1c3BlbmRTdXNwaWNpb3VzAAAAAAMDCQEAAAACIT0AAAACBQAAAApwbXRBc3NldElkBQAAAAhhc3NldElkQQkBAAAAAiE9AAAAAgUAAAAKcG10QXNzZXRJZAUAAAAIYXNzZXRJZEIHCQEAAAALdGhyb3dBc3NldHMAAAAABAAAAA0kdDAxMzk0NDE0NzA5AwkAAAAAAAACBQAAAApwbXRBc3NldElkBQAAAAhhc3NldElkQQkABRkAAAAHCQAAZQAAAAIFAAAACXBtdEFtb3VudAUAAAATdmlydHVhbFN3YXBUb2tlblBheQUAAAATdmlydHVhbFN3YXBUb2tlbkdldAkAAGQAAAACBQAAAAhiYWxhbmNlQQUAAAATdmlydHVhbFN3YXBUb2tlblBheQkAAGUAAAACBQAAAAhiYWxhbmNlQgUAAAATdmlydHVhbFN3YXBUb2tlbkdldAkBAAAADWludmFyaWFudENhbGMAAAACCQAAZAAAAAIFAAAACGJhbGFuY2VBBQAAAAlwbXRBbW91bnQFAAAACGJhbGFuY2VCCQAAZAAAAAIFAAAACGJhbGFuY2VBBQAAAAlwbXRBbW91bnQFAAAACGJhbGFuY2VCCQAFGQAAAAcFAAAAE3ZpcnR1YWxTd2FwVG9rZW5HZXQJAABlAAAAAgUAAAAJcG10QW1vdW50BQAAABN2aXJ0dWFsU3dhcFRva2VuUGF5CQAAZQAAAAIFAAAACGJhbGFuY2VBBQAAABN2aXJ0dWFsU3dhcFRva2VuR2V0CQAAZAAAAAIFAAAACGJhbGFuY2VCBQAAABN2aXJ0dWFsU3dhcFRva2VuUGF5CQEAAAANaW52YXJpYW50Q2FsYwAAAAIFAAAACGJhbGFuY2VBCQAAZAAAAAIFAAAACGJhbGFuY2VCBQAAAAlwbXRBbW91bnQFAAAACGJhbGFuY2VBCQAAZAAAAAIFAAAACGJhbGFuY2VCBQAAAAlwbXRBbW91bnQEAAAAEXZpcnR1YWxSZXBsZW5pc2hBCAUAAAANJHQwMTM5NDQxNDcwOQAAAAJfMQQAAAARdmlydHVhbFJlcGxlbmlzaEIIBQAAAA0kdDAxMzk0NDE0NzA5AAAAAl8yBAAAABFiYWxhbmNlQWZ0ZXJTd2FwQQgFAAAADSR0MDEzOTQ0MTQ3MDkAAAACXzMEAAAAEWJhbGFuY2VBZnRlclN3YXBCCAUAAAANJHQwMTM5NDQxNDcwOQAAAAJfNAQAAAATaW52YXJpYW50Q2FsY3VsYXRlZAgFAAAADSR0MDEzOTQ0MTQ3MDkAAAACXzUEAAAAC25ld0JhbGFuY2VBCAUAAAANJHQwMTM5NDQxNDcwOQAAAAJfNgQAAAALbmV3QmFsYW5jZUIIBQAAAA0kdDAxMzk0NDE0NzA5AAAAAl83BAAAAA9uZXdCYWxhbmNlRW50cnkDCQAAAAAAAAIFAAAACnBtdEFzc2V0SWQFAAAACGFzc2V0SWRBCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAJa0JhbGFuY2VBBQAAAAtuZXdCYWxhbmNlQQkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACWtCYWxhbmNlQgUAAAALbmV3QmFsYW5jZUIEAAAADGludmFyaWFudE5ldwkBAAAADWludmFyaWFudENhbGMAAAACBQAAABFiYWxhbmNlQWZ0ZXJTd2FwQQUAAAARYmFsYW5jZUFmdGVyU3dhcEIEAAAAF2ludmFyaWFudEVzdGltYXRlZFJhdGlvCQAAawAAAAMFAAAABnNjYWxlOAUAAAAJaW52YXJpYW50BQAAAAxpbnZhcmlhbnROZXcEAAAAJXJhdGlvVmlydHVhbEJhbGFuY2VUb1ZpcnR1YWxSZXBsZW5pc2gJAABpAAAAAgkAAGsAAAADCQAAaAAAAAIFAAAABnNjYWxlOAUAAAAGc2NhbGU4BQAAABFiYWxhbmNlQWZ0ZXJTd2FwQQUAAAARYmFsYW5jZUFmdGVyU3dhcEIJAABrAAAAAwUAAAAGc2NhbGU4BQAAABF2aXJ0dWFsUmVwbGVuaXNoQQUAAAARdmlydHVhbFJlcGxlbmlzaEIEAAAAE2RBcHBUaHJlc2hvbGRBbW91bnQJAABrAAAAAwkAAGQAAAACBQAAAAtuZXdCYWxhbmNlQQUAAAALbmV3QmFsYW5jZUIFAAAADWRBcHBUaHJlc2hvbGQJAABoAAAAAgAAAAAAAAAAAgUAAAATZEFwcFRocmVzaG9sZFNjYWxlMgMDCQAAZwAAAAIFAAAAF3NsaXBwYWdlVmFsdWVNaW5Gb3JTd2FwBQAAABdpbnZhcmlhbnRFc3RpbWF0ZWRSYXRpbwYJAABmAAAAAgUAAAAJaW52YXJpYW50BQAAAAxpbnZhcmlhbnROZXcJAAACAAAAAQIAAAA6SW5jb3JyZWN0IHZpcnR1YWxTd2FwVG9rZW5QYXkgb3IgdmlydHVhbFN3YXBUb2tlbkdldCB2YWx1ZQMDCQAAZgAAAAIFAAAAHHNsaXBwYWdlVmFsdWVNaW5Gb3JSZXBsZW5pc2gFAAAAJXJhdGlvVmlydHVhbEJhbGFuY2VUb1ZpcnR1YWxSZXBsZW5pc2gGCQAAZgAAAAIFAAAAJXJhdGlvVmlydHVhbEJhbGFuY2VUb1ZpcnR1YWxSZXBsZW5pc2gFAAAAHHNsaXBwYWdlVmFsdWVNYXhGb3JSZXBsZW5pc2gJAAACAAAAAQIAAABsU3dhcCB3aXRoIHZpcnR1YWxTd2FwVG9rZW5QYXkgYW5kIHZpcnR1YWxTd2FwVG9rZW5HZXQgaXMgcG9zc2libGUsIGJ1dCByYXRpbyBhZnRlciB2aXJ0dWFsIHN3YXAgaXMgaW5jb3JyZWN0AwMJAABmAAAAAgUAAAATZEFwcFRocmVzaG9sZEFtb3VudAUAAAALbmV3QmFsYW5jZUEGCQAAZgAAAAIFAAAAE2RBcHBUaHJlc2hvbGRBbW91bnQFAAAAC25ld0JhbGFuY2VCCQEAAAAOdGhyb3dUaHJlc2hvbGQAAAADBQAAABNkQXBwVGhyZXNob2xkQW1vdW50BQAAAAtuZXdCYWxhbmNlQQUAAAALbmV3QmFsYW5jZUIEAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkEJAABrAAAAAwkBAAAAEGRlZHVjdFN0YWtpbmdGZWUAAAACBQAAABF2aXJ0dWFsUmVwbGVuaXNoQQUAAAAIYXNzZXRJZEEFAAAABnNjYWxlOAUAAAARYmFsYW5jZUFmdGVyU3dhcEEEAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkIJAABrAAAAAwkBAAAAEGRlZHVjdFN0YWtpbmdGZWUAAAACBQAAABF2aXJ0dWFsUmVwbGVuaXNoQgUAAAAIYXNzZXRJZEIFAAAABnNjYWxlOAUAAAARYmFsYW5jZUFmdGVyU3dhcEIEAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAkAAGsAAAADCQABlwAAAAEJAARMAAAAAgUAAAATcmF0aW9TaGFyZVRva2Vuc0luQQkABEwAAAACBQAAABNyYXRpb1NoYXJlVG9rZW5zSW5CBQAAAANuaWwFAAAAEHNoYXJlQXNzZXRTdXBwbHkFAAAABnNjYWxlOAkABEwAAAACCQEAAAAHUmVpc3N1ZQAAAAMFAAAADHNoYXJlQXNzZXRJZAUAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50BgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAUAAAAMc2hhcmVBc3NldElkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABFrU2hhcmVBc3NldFN1cHBseQkAAGQAAAACBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQJAARMAAAAAgUAAAAPbmV3QmFsYW5jZUVudHJ5CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAprSW52YXJpYW50BQAAABNpbnZhcmlhbnRDYWxjdWxhdGVkBQAAAANuaWwAAAABaQEAAAAId2l0aGRyYXcAAAAABAAAAA0kdDAxNjg2MjE3MDA1CQAFFAAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAQAAAAJcG10QW1vdW50CAUAAAANJHQwMTY4NjIxNzAwNQAAAAJfMQQAAAAKcG10QXNzZXRJZAgFAAAADSR0MDE2ODYyMTcwMDUAAAACXzIEAAAADGFtb3VudFRvUGF5QQkBAAAAEGRlZHVjdFN0YWtpbmdGZWUAAAACCQAAawAAAAMFAAAACXBtdEFtb3VudAUAAAAIYmFsYW5jZUEFAAAAEHNoYXJlQXNzZXRTdXBwbHkFAAAACGFzc2V0SWRBBAAAAAxhbW91bnRUb1BheUIJAQAAABBkZWR1Y3RTdGFraW5nRmVlAAAAAgkAAGsAAAADBQAAAAlwbXRBbW91bnQFAAAACGJhbGFuY2VCBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAAAhhc3NldElkQgQAAAATaW52YXJpYW50Q2FsY3VsYXRlZAkBAAAADWludmFyaWFudENhbGMAAAACCQAAZQAAAAIFAAAACGJhbGFuY2VBBQAAAAxhbW91bnRUb1BheUEJAABlAAAAAgUAAAAIYmFsYW5jZUIFAAAADGFtb3VudFRvUGF5QgMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAQAAAA90aHJvd0lzSW5hY3RpdmUAAAAAAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAAB1PbmUgYXR0YWNoZWQgcGF5bWVudCBleHBlY3RlZAMJAQAAAAIhPQAAAAIFAAAACnBtdEFzc2V0SWQFAAAADHNoYXJlQXNzZXRJZAkAAAIAAAABCQABLAAAAAICAAAAJEluY29ycmVjdCBhc3NldCBhdHRhY2hlZC4gRXhwZWN0ZWQ6IAkAAlgAAAABBQAAAAxzaGFyZUFzc2V0SWQDCQEAAAABIQAAAAEFAAAAEGhhc0Vub3VnaEJhbGFuY2UJAQAAABFzdXNwZW5kU3VzcGljaW91cwAAAAADAwkAAGYAAAACBQAAAAxhbW91bnRUb1BheUEFAAAAEWF2YWlsYWJsZUJhbGFuY2VBBgkAAGYAAAACBQAAAAxhbW91bnRUb1BheUIFAAAAEWF2YWlsYWJsZUJhbGFuY2VCCQEAAAAidGhyb3dJbnN1ZmZpY2llbnRBdmFpbGFibGVCYWxhbmNlcwAAAAIFAAAADGFtb3VudFRvUGF5QQUAAAAMYW1vdW50VG9QYXlCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAlrQmFsYW5jZUEJAABlAAAAAgUAAAAIYmFsYW5jZUEFAAAADGFtb3VudFRvUGF5QQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAJa0JhbGFuY2VCCQAAZQAAAAIFAAAACGJhbGFuY2VCBQAAAAxhbW91bnRUb1BheUIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEWtTaGFyZUFzc2V0U3VwcGx5CQAAZQAAAAIFAAAAEHNoYXJlQXNzZXRTdXBwbHkFAAAACXBtdEFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAKa0ludmFyaWFudAUAAAATaW52YXJpYW50Q2FsY3VsYXRlZAkABEwAAAACCQEAAAAEQnVybgAAAAIFAAAADHNoYXJlQXNzZXRJZAUAAAAJcG10QW1vdW50CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAMYW1vdW50VG9QYXlBBQAAAAhhc3NldElkQQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAADGFtb3VudFRvUGF5QgUAAAAIYXNzZXRJZEIFAAAAA25pbAAAAAFpAQAAAAhleGNoYW5nZQAAAAIAAAAYZXN0aW1hdGVkQW1vdW50VG9SZWNlaXZlAAAAEm1pbkFtb3VudFRvUmVjZWl2ZQQAAAANJHQwMTgyODgxODM2MwkABRQAAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAACXBtdEFtb3VudAgFAAAADSR0MDE4Mjg4MTgzNjMAAAACXzEEAAAACnBtdEFzc2V0SWQIBQAAAA0kdDAxODI4ODE4MzYzAAAAAl8yAwkBAAAAASEAAAABBQAAAAhpc0FjdGl2ZQkBAAAAD3Rocm93SXNJbmFjdGl2ZQAAAAADCQAAZwAAAAIAAAAAAAAAAAAFAAAAGGVzdGltYXRlZEFtb3VudFRvUmVjZWl2ZQkAAAIAAAABCQABLAAAAAICAAAAK0VzdGltYXRlZCBhbW91bnQgbXVzdCBiZSBwb3NpdGl2ZS4gQWN0dWFsOiAJAAGkAAAAAQUAAAAYZXN0aW1hdGVkQW1vdW50VG9SZWNlaXZlAwkAAGYAAAACBQAAABJtaW5BbW91bnRUb1JlY2VpdmUFAAAAGGVzdGltYXRlZEFtb3VudFRvUmVjZWl2ZQkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAADtNaW5pbWFsIGFtb3VudCBjYW4ndCBiZSBncmVhdGVyIHRoYW4gZXN0aW1hdGVkLiBFc3RpbWF0ZWQ6IAkAAaQAAAABBQAAABhlc3RpbWF0ZWRBbW91bnRUb1JlY2VpdmUCAAAACy4gTWluaW1hbDogCQABpAAAAAEFAAAAEm1pbkFtb3VudFRvUmVjZWl2ZQMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEJAAACAAAAAQIAAAAdT25lIGF0dGFjaGVkIHBheW1lbnQgZXhwZWN0ZWQDCQEAAAABIQAAAAEFAAAAEGhhc0Vub3VnaEJhbGFuY2UJAQAAABFzdXNwZW5kU3VzcGljaW91cwAAAAADAwkBAAAAAiE9AAAAAgUAAAAKcG10QXNzZXRJZAUAAAAIYXNzZXRJZEEJAQAAAAIhPQAAAAIFAAAACnBtdEFzc2V0SWQFAAAACGFzc2V0SWRCBwkBAAAAC3Rocm93QXNzZXRzAAAAAAMJAABmAAAAAgAAAAAAAJiWgAUAAAAJcG10QW1vdW50CQAAAgAAAAECAAAAME9ubHkgc3dhcCBvZiAxMC4wMDAwMDAgb3IgbW9yZSB0b2tlbnMgaXMgYWxsb3dlZAMDCQAAZgAAAAIFAAAAFWV4Y2hhbmdlUmF0aW9MaW1pdE1pbgkAAGsAAAADBQAAAAZzY2FsZTgFAAAAEm1pbkFtb3VudFRvUmVjZWl2ZQUAAAAJcG10QW1vdW50BgkAAGYAAAACCQAAawAAAAMFAAAABnNjYWxlOAUAAAAYZXN0aW1hdGVkQW1vdW50VG9SZWNlaXZlBQAAAAlwbXRBbW91bnQFAAAAFWV4Y2hhbmdlUmF0aW9MaW1pdE1heAkAAAIAAAABAgAAABxJbmNvcnJlY3QgYXJncyBhbmQgcG10IHJhdGlvBAAAAAtzZW5kQXNzZXRJZAMJAAAAAAAAAgUAAAAKcG10QXNzZXRJZAUAAAAIYXNzZXRJZEEFAAAACGFzc2V0SWRCBQAAAAhhc3NldElkQQQAAAAGYW1vdW50CQEAAAATY2FsY3VsYXRlU2VuZEFtb3VudAAAAAQFAAAAGGVzdGltYXRlZEFtb3VudFRvUmVjZWl2ZQUAAAASbWluQW1vdW50VG9SZWNlaXZlBQAAAAlwbXRBbW91bnQFAAAACnBtdEFzc2V0SWQEAAAAEGdvdmVybmFuY2VSZXdhcmQJAABrAAAAAwUAAAAGYW1vdW50BQAAAA1mZWVHb3Zlcm5hbmNlBQAAAAlmZWVTY2FsZTYEAAAADmFtb3VudE1pbnVzRmVlCQAAawAAAAMFAAAABmFtb3VudAkAAGUAAAACBQAAAAlmZWVTY2FsZTYFAAAAA2ZlZQUAAAAJZmVlU2NhbGU2BAAAAA0kdDAxOTcxNDE5OTc3AwkAAAAAAAACBQAAAApwbXRBc3NldElkBQAAAAhhc3NldElkQQkABRQAAAACCQAAZAAAAAIFAAAACGJhbGFuY2VBBQAAAAlwbXRBbW91bnQJAABlAAAAAgkAAGUAAAACBQAAAAhiYWxhbmNlQgUAAAAOYW1vdW50TWludXNGZWUFAAAAEGdvdmVybmFuY2VSZXdhcmQJAAUUAAAAAgkAAGUAAAACCQAAZQAAAAIFAAAACGJhbGFuY2VBBQAAAA5hbW91bnRNaW51c0ZlZQUAAAAQZ292ZXJuYW5jZVJld2FyZAkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAAJcG10QW1vdW50BAAAAAtuZXdCYWxhbmNlQQgFAAAADSR0MDE5NzE0MTk5NzcAAAACXzEEAAAAC25ld0JhbGFuY2VCCAUAAAANJHQwMTk3MTQxOTk3NwAAAAJfMgQAAAATZEFwcFRocmVzaG9sZEFtb3VudAkAAGsAAAADCQAAZAAAAAIFAAAAC25ld0JhbGFuY2VBBQAAAAtuZXdCYWxhbmNlQgUAAAANZEFwcFRocmVzaG9sZAkAAGgAAAACAAAAAAAAAAACBQAAABNkQXBwVGhyZXNob2xkU2NhbGUyAwMJAABmAAAAAgUAAAATZEFwcFRocmVzaG9sZEFtb3VudAUAAAALbmV3QmFsYW5jZUEGCQAAZgAAAAIFAAAAE2RBcHBUaHJlc2hvbGRBbW91bnQFAAAAC25ld0JhbGFuY2VCCQEAAAAOdGhyb3dUaHJlc2hvbGQAAAADBQAAABNkQXBwVGhyZXNob2xkQW1vdW50BQAAAAtuZXdCYWxhbmNlQQUAAAALbmV3QmFsYW5jZUIDAwMJAAAAAAAAAgUAAAAIYXNzZXRJZEEFAAAABFVTRE4JAAAAAAAAAgUAAAALc2VuZEFzc2V0SWQFAAAACGFzc2V0SWRBBwkAAGcAAAACBQAAABBzdGFrZWRBbW91bnRVU0ROBQAAAAtuZXdCYWxhbmNlQQcJAQAAACF0aHJvd0luc3VmZmljaWVudEF2YWlsYWJsZUJhbGFuY2UAAAADBQAAAA5hbW91bnRNaW51c0ZlZQUAAAARYXZhaWxhYmxlQmFsYW5jZUEFAAAACmFzc2V0TmFtZUEDAwMJAAAAAAAAAgUAAAAIYXNzZXRJZEIFAAAABFVTRE4JAAAAAAAAAgUAAAALc2VuZEFzc2V0SWQFAAAACGFzc2V0SWRCBwkAAGcAAAACBQAAABBzdGFrZWRBbW91bnRVU0ROBQAAAAtuZXdCYWxhbmNlQgcJAQAAACF0aHJvd0luc3VmZmljaWVudEF2YWlsYWJsZUJhbGFuY2UAAAADBQAAAA5hbW91bnRNaW51c0ZlZQUAAAARYXZhaWxhYmxlQmFsYW5jZUIFAAAACmFzc2V0TmFtZUIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACWtCYWxhbmNlQQUAAAALbmV3QmFsYW5jZUEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACWtCYWxhbmNlQgUAAAALbmV3QmFsYW5jZUIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACmtJbnZhcmlhbnQJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgUAAAALbmV3QmFsYW5jZUEFAAAAC25ld0JhbGFuY2VCCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAOYW1vdW50TWludXNGZWUFAAAAC3NlbmRBc3NldElkCQAE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", "height": 2607287, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3Goh8aagWWeCw75F1Ps6bFk3knJGSzdHMiD25pJRETwK Next: F83b67UC4GtBfHaQHYWJYrLoQ2WPngoLYBJRd6BYKtFo Diff:
OldNewDifferences
2323
2424 let k = "commission_scale_delimiter"
2525
26-let l = "commission_governance"
26+let l = "invariant"
2727
28-let m = "invariant"
28+let m = "shutdown_cause"
2929
30-let n = "shutdown_cause"
30+let n = base58'DXDY2itiEcYBtGkVLnkpHtDFyWQUkoLJz79uJ7ECbMrA'
3131
32-let o = base58'DXDY2itiEcYBtGkVLnkpHtDFyWQUkoLJz79uJ7ECbMrA'
32+let o = base58'E6Wa1SGoktYcjHjsKrvjMiqJY3SWmGKcD8Q5L8kxSPS7'
3333
34-let p = base58'E6Wa1SGoktYcjHjsKrvjMiqJY3SWmGKcD8Q5L8kxSPS7'
34+let p = base58'AZmWJtuy4GeVrMmJH4hfFBRApe1StvhJSk4jcbT6bArQ'
3535
36-let q = base58'AZmWJtuy4GeVrMmJH4hfFBRApe1StvhJSk4jcbT6bArQ'
36+let q = base58'EtVkT6ed8GtbUiVVEqdmEqsp2J4qbb3rre2HFgxeVYdg'
3737
38-let r = base58'EtVkT6ed8GtbUiVVEqdmEqsp2J4qbb3rre2HFgxeVYdg'
38+let r = base58'Czn4yoAuUZCVCLJDRfskn8URfkwpknwBTZDbs1wFrY7h'
3939
40-let s = base58'Czn4yoAuUZCVCLJDRfskn8URfkwpknwBTZDbs1wFrY7h'
40+let s = Address(base58'3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp')
4141
42-let t = Address(base58'3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp')
42+let t = Address(base58'3PNikM6yp4NqcSU8guxQtmR5onr2D4e8yTJ')
4343
44-let u = Address(base58'3PNikM6yp4NqcSU8guxQtmR5onr2D4e8yTJ')
44+let u = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
4545
46-let v = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
46+let v = (9 * value(value(assetInfo(u)).minSponsoredFee))
4747
48-let w = (9 * value(value(assetInfo(v)).minSponsoredFee))
48+let w = getBooleanValue(this, c)
4949
50-let x = getBooleanValue(this, c)
50+let x = getStringValue(this, d)
5151
52-let y = getStringValue(this, d)
52+let y = getStringValue(this, e)
5353
54-let z = getStringValue(this, e)
54+let z = if ((x == "WAVES"))
55+ then unit
56+ else fromBase58String(x)
5557
5658 let A = if ((y == "WAVES"))
5759 then unit
5860 else fromBase58String(y)
5961
60-let B = if ((z == "WAVES"))
61- then unit
62- else fromBase58String(z)
63-
64-let C = {
65- let D = A
66- if ($isInstanceOf(D, "ByteVector"))
62+let B = {
63+ let C = z
64+ if ($isInstanceOf(C, "ByteVector"))
6765 then {
68- let E = D
69- value(assetInfo(E)).name
66+ let D = C
67+ value(assetInfo(D)).name
7068 }
71- else if ($isInstanceOf(D, "Unit"))
69+ else if ($isInstanceOf(C, "Unit"))
7270 then {
73- let F = D
71+ let E = C
7472 "WAVES"
7573 }
7674 else throw("Match error")
7775 }
7876
79-let G = {
80- let D = B
81- if ($isInstanceOf(D, "ByteVector"))
77+let F = {
78+ let C = A
79+ if ($isInstanceOf(C, "ByteVector"))
8280 then {
83- let E = D
84- value(assetInfo(E)).name
81+ let D = C
82+ value(assetInfo(D)).name
8583 }
86- else if ($isInstanceOf(D, "Unit"))
84+ else if ($isInstanceOf(C, "Unit"))
8785 then {
88- let F = D
86+ let E = C
8987 "WAVES"
9088 }
9189 else throw("Match error")
9290 }
9391
94-let H = getIntegerValue(this, f)
92+let G = getIntegerValue(this, f)
9593
96-let I = getIntegerValue(this, g)
94+let H = getIntegerValue(this, g)
9795
98-let J = fromBase58String(getStringValue(this, h))
96+let I = fromBase58String(getStringValue(this, h))
9997
100-let K = getIntegerValue(this, i)
98+let J = getIntegerValue(this, i)
10199
102-let L = getIntegerValue(this, m)
100+let K = getIntegerValue(this, l)
103101
104-let M = 500
102+let L = 500
105103
106-let N = 200
104+let M = 200
107105
108-let O = 1000000
106+let N = 1000000
109107
110-let P = 1000
108+let O = 1000
111109
112-let Q = 100000000
110+let P = 100000000
113111
114-let R = 1000000000000
112+let Q = 1000000000000
115113
116-let S = 1000
114+let R = 1000
117115
118-let T = 8
116+let S = 8
119117
120-let U = 12
118+let T = 50
121119
122-let V = 50
120+let U = 100
123121
124-let W = 100
122+let V = 90000000
125123
126-let X = 100000000
124+let W = 110000000
127125
128-let Y = 99999000
126+let X = 50
129127
130-let Z = 90000000
128+let Y = 2
131129
132-let aa = 110000000
130+let Z = 46000000
133131
134-let ab = 50
135-
136-let ac = 2
137-
138-let ad = 46000000
139-
140-let ae = 8
141-
142-func af (ag) = {
143- let D = ag
144- if ($isInstanceOf(D, "ByteVector"))
132+func aa (ab) = {
133+ let C = ab
134+ if ($isInstanceOf(C, "ByteVector"))
145135 then {
146- let E = D
147- assetBalance(this, E)
136+ let D = C
137+ assetBalance(this, D)
148138 }
149- else if ($isInstanceOf(D, "Unit"))
139+ else if ($isInstanceOf(C, "Unit"))
150140 then {
151- let F = D
141+ let E = C
152142 wavesBalance(this).available
153143 }
154144 else throw("Match error")
155145 }
156146
157147
158-let ah = {
159- let D = getInteger(u, ((("rpd_balance_" + toBase58String(v)) + "_") + toString(this)))
160- if ($isInstanceOf(D, "Int"))
148+let ac = {
149+ let C = getInteger(t, ((("rpd_balance_" + toBase58String(u)) + "_") + toString(this)))
150+ if ($isInstanceOf(C, "Int"))
161151 then {
162- let ai = D
163- ai
152+ let ad = C
153+ ad
164154 }
165- else if ($isInstanceOf(D, "Unit"))
155+ else if ($isInstanceOf(C, "Unit"))
166156 then {
167- let aj = D
157+ let ae = C
168158 0
169159 }
170160 else throw("Match error")
171161 }
172162
173-let ak = (H - (if ((A == v))
174- then ah
163+let af = (G - (if ((z == u))
164+ then ac
175165 else 0))
176166
177-let al = (I - (if ((B == v))
178- then ah
167+let ag = (H - (if ((A == u))
168+ then ac
179169 else 0))
180170
181-let am = (af(A) + (if ((A == v))
182- then ah
171+let ah = (aa(z) + (if ((z == u))
172+ then ac
183173 else 0))
184174
185-let an = (af(B) + (if ((B == v))
186- then ah
175+let ai = (aa(A) + (if ((A == u))
176+ then ac
187177 else 0))
188178
189-let ao = if ((am >= H))
190- then (an >= I)
179+let aj = if ((ah >= G))
180+ then (ai >= H)
191181 else false
192182
193-func ap (aq,ar) = (((fraction(R, aq, ar) + fraction(R, ar, aq)) / 2) / 10000)
183+func ak (al,am) = (((fraction(Q, al, am) + fraction(Q, am, al)) / 2) / 10000)
194184
195185
196-func as (aq,ar) = {
197- let at = ap(aq, ar)
198- (fraction((aq + ar), Q, pow(at, T, ab, ac, T, UP)) + (2 * fraction(pow(fraction(aq, ar, Q), 0, 5, 1, (T / 2), DOWN), pow((at - ad), T, ab, ac, T, DOWN), Q)))
186+func an (al,am) = {
187+ let ao = ak(al, am)
188+ (fraction((al + am), P, pow(ao, S, X, Y, S, UP)) + (2 * fraction(pow(fraction(al, am, P), 0, 5, 1, (S / 2), DOWN), pow((ao - Z), S, X, Y, S, DOWN), P)))
199189 }
200190
201191
202-func au (av,aw,ax,ay,az) = {
203- let aA = (Q - ((Q * 1) / 10000000))
204- let aB = (av - aw)
205- let aC = (av - ((1 * aB) / 5))
206- let aD = (av - ((2 * aB) / 5))
207- let aE = (av - ((3 * aB) / 5))
208- let aF = (av - ((4 * aB) / 5))
209- let aG = (av - ((5 * aB) / 5))
210- let ar = (ay + az)
211- let aH = as((ax - av), ar)
212- let aI = fraction(L, Q, aH)
213- if ((0 >= (as((ax - aG), ar) - L)))
214- then throw("err1")
215- else if (if ((aI > aA))
216- then ((aH - L) > 0)
192+func ap (aq,ar,as,at) = {
193+ let au = (P - ((P * 1) / 10000000))
194+ let av = (aq - ar)
195+ let al = (G + as)
196+ let am = (H + as)
197+ let aw = if ((at == z))
198+ then an(al, (H - aq))
199+ else if ((at == A))
200+ then an((G - aq), am)
201+ else throw("Wrong asset in payment")
202+ let ax = fraction(P, K, aw)
203+ func ay (az,aA) = if ((az == -1))
204+ then {
205+ let aB = (aq - ((aA * av) / 5))
206+ let aC = if ((at == z))
207+ then an(al, (H - aB))
208+ else an((G - aB), am)
209+ if ((aC > K))
210+ then aB
211+ else -1
212+ }
213+ else az
214+
215+ let aD = {
216+ let aE = [1, 2, 3, 4, 5]
217+ let aF = size(aE)
218+ let aG = -1
219+ if ((aF == 0))
220+ then aG
221+ else {
222+ let aH = ay(aG, aE[0])
223+ if ((aF == 1))
224+ then aH
225+ else {
226+ let aI = ay(aH, aE[1])
227+ if ((aF == 2))
228+ then aI
229+ else {
230+ let aJ = ay(aI, aE[2])
231+ if ((aF == 3))
232+ then aJ
233+ else {
234+ let aK = ay(aJ, aE[3])
235+ if ((aF == 4))
236+ then aK
237+ else {
238+ let aL = ay(aK, aE[4])
239+ if ((aF == 5))
240+ then aL
241+ else {
242+ let aM = ay(aL, aE[5])
243+ throw("List size exceed 5")
244+ }
245+ }
246+ }
247+ }
248+ }
249+ }
250+ }
251+ if ((0 > aD))
252+ then throw("something went wrong while working with amountToSend")
253+ else if (if ((ax > au))
254+ then (aw > K)
217255 else false)
218- then av
219- else if (((as((ax - aC), ar) - L) > 0))
220- then ((aC * (O - M)) / O)
221- else if (((as((ax - aD), ar) - L) > 0))
222- then ((aD * (O - M)) / O)
223- else if (((as((ax - aE), ar) - L) > 0))
224- then ((aE * (O - M)) / O)
225- else if (((as((ax - aF), ar) - L) > 0))
226- then ((aF * (O - M)) / O)
227- else if (((as((ax - aG), ar) - L) > 0))
228- then ((aG * (O - M)) / O)
229- else throw("err2")
256+ then aq
257+ else aD
230258 }
231259
232260
233-func aJ (av,aw,ax,ay,az) = {
234- let aA = (Q - ((Q * 1) / 10000000))
235- let aB = (av - aw)
236- let aC = (av - ((1 * aB) / 5))
237- let aD = (av - ((2 * aB) / 5))
238- let aE = (av - ((3 * aB) / 5))
239- let aF = (av - ((4 * aB) / 5))
240- let aG = (av - ((5 * aB) / 5))
241- let aq = (ax + az)
242- let aH = as(aq, (ay - av))
243- let aI = fraction(L, Q, aH)
244- if ((0 >= (as(aq, (ay - aG)) - L)))
245- then throw("err1")
246- else if (if ((aI > aA))
247- then ((aH - L) > 0)
248- else false)
249- then av
250- else if (((as(aq, (ay - aC)) - L) > 0))
251- then ((aC * (O - M)) / O)
252- else if (((as(aq, (ay - aD)) - L) > 0))
253- then ((aD * (O - M)) / O)
254- else if (((as(aq, (ay - aE)) - L) > 0))
255- then ((aE * (O - M)) / O)
256- else if (((as(aq, (ay - aF)) - L) > 0))
257- then ((aF * (O - M)) / O)
258- else if (((as(aq, (ay - aG)) - L) > 0))
259- then ((aG * (O - M)) / O)
260- else throw("err2")
261- }
262-
263-
264-func aK (ag) = {
265- let D = ag
266- if ($isInstanceOf(D, "ByteVector"))
261+func aN (ab) = {
262+ let C = ab
263+ if ($isInstanceOf(C, "ByteVector"))
267264 then {
268- let E = D
269- let aL = toBase58String(E)
270- let aM = valueOrErrorMessage(assetInfo(E), (("Asset " + aL) + " doesn't exist"))
271- $Tuple3(aL, aM.name, aM.decimals)
265+ let D = C
266+ let aO = toBase58String(D)
267+ let aP = valueOrErrorMessage(assetInfo(D), (("Asset " + aO) + " doesn't exist"))
268+ $Tuple3(aO, aP.name, aP.decimals)
272269 }
273- else if ($isInstanceOf(D, "Unit"))
270+ else if ($isInstanceOf(C, "Unit"))
274271 then {
275- let F = D
272+ let E = C
276273 $Tuple3("WAVES", "WAVES", 8)
277274 }
278275 else throw("Match error")
279276 }
280277
281278
282-func aN (aO) = [BooleanEntry(c, false), StringEntry(n, aO)]
279+func aQ (aR) = [BooleanEntry(c, false), StringEntry(m, aR)]
283280
284281
285-func aP (aQ,ag) = if ((ag == v))
282+func aS (aT,ab) = if ((ab == u))
286283 then {
287- let aR = (aQ - w)
288- if ((0 >= aR))
289- then throw((((("Insufficient amount " + toString(aQ)) + " to deduct staking fee ") + toString(w)) + " USD-N"))
290- else aR
284+ let aU = (aT - v)
285+ if ((0 >= aU))
286+ then throw((((("Insufficient amount " + toString(aT)) + " to deduct staking fee ") + toString(v)) + " USD-N"))
287+ else aU
291288 }
292- else aQ
289+ else aT
293290
294291
295-func aS () = throw("DApp is already active")
292+func aV () = throw("DApp is already active")
296293
297294
298-func aT () = throw("DApp is inactive at this moment")
295+func aW () = throw("DApp is inactive at this moment")
299296
300297
301-func aU () = throw("Only admin can call this function")
298+func aX () = throw("Only admin can call this function")
302299
303300
304-func aV () = throw(((("Incorrect assets attached. Expected: " + y) + " and ") + z))
301+func aY () = throw(((("Incorrect assets attached. Expected: " + x) + " and ") + y))
305302
306303
307-func aW (aX,ax,ay) = throw(((((((((("New balance in assets of the DApp is less than threshold " + toString(aX)) + ": ") + toString(ax)) + " ") + C) + ", ") + toString(ay)) + " ") + G))
304+func aZ (ba,bb,bc) = throw(((((((((("New balance in assets of the DApp is less than threshold " + toString(ba)) + ": ") + toString(bb)) + " ") + B) + ", ") + toString(bc)) + " ") + F))
308305
309306
310-func aY (aQ,aZ,ba) = throw((((((((("Insufficient DApp balance to pay " + toString(aQ)) + " ") + ba) + " due to staking. Available: ") + toString(aZ)) + " ") + ba) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
307+func bd (aT,be,bf) = throw((((((((("Insufficient DApp balance to pay " + toString(aT)) + " ") + bf) + " due to staking. Available: ") + toString(be)) + " ") + bf) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
311308
312309
313-func bb (ax,ay) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(ax)) + " ") + C) + " and ") + toString(ay)) + " ") + G) + " due to staking. Available: ") + toString(ak)) + " ") + C) + " and ") + toString(al)) + " ") + G) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
310+func bg (bb,bc) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(bb)) + " ") + B) + " and ") + toString(bc)) + " ") + F) + " due to staking. Available: ") + toString(af)) + " ") + B) + " and ") + toString(ag)) + " ") + F) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
314311
315312
316-func bc () = aN(((((((((((((((("Suspicious state. Actual balances: " + toString(H)) + " ") + C) + ", ") + toString(I)) + " ") + G) + ". State: ") + toString(af(A))) + " ") + C) + ", ") + toString(af(B))) + " ") + G))
313+func bh () = aQ(((((((((((((((("Suspicious state. Actual balances: " + toString(G)) + " ") + B) + ", ") + toString(H)) + " ") + F) + ". State: ") + toString(aa(z))) + " ") + B) + ", ") + toString(aa(A))) + " ") + F))
317314
318315
319-@Callable(bd)
316+@Callable(bi)
320317 func init () = {
321- let be = $Tuple2(bd.payments[0].amount, bd.payments[0].assetId)
322- let bf = be._1
323- let bg = be._2
324- let bh = $Tuple2(bd.payments[1].amount, bd.payments[1].assetId)
325- let bi = bh._1
326- let bj = bh._2
327- let bk = aK(bg)
328- let bl = bk._1
329- let bm = bk._2
330- let bn = bk._3
331- let bo = aK(bj)
332- let bp = bo._1
333- let bq = bo._2
334- let br = bo._3
318+ let bj = $Tuple2(bi.payments[0].amount, bi.payments[0].assetId)
319+ let bk = bj._1
320+ let bl = bj._2
321+ let bm = $Tuple2(bi.payments[1].amount, bi.payments[1].assetId)
322+ let bn = bm._1
323+ let bo = bm._2
324+ let bp = aN(bl)
325+ let bq = bp._1
326+ let br = bp._2
327+ let bs = bp._3
328+ let bt = aN(bo)
329+ let bu = bt._1
330+ let bv = bt._2
331+ let bw = bt._3
335332 if (isDefined(getBoolean(this, c)))
336- then aS()
337- else if ((bg == bj))
333+ then aV()
334+ else if ((bl == bo))
338335 then throw("Assets must be different")
339336 else {
340- let bs = ((("s" + take(bm, 7)) + "_") + take(bq, 7))
341- let bt = ((((("ShareToken of SwopFi protocol for " + bm) + " and ") + bq) + " at address ") + toString(this))
342- let bu = ((bn + br) / 2)
343- let bv = fraction(pow(bf, bn, 5, 1, bn, HALFDOWN), pow(bi, br, 5, 1, br, HALFDOWN), pow(10, 0, bu, 0, 0, HALFDOWN))
344- let bw = Issue(bs, bt, bv, bu, true)
345- let bx = calculateAssetId(bw)
346- let by = as(bf, bi)
347-[StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bl), StringEntry(e, bp), IntegerEntry(f, bf), IntegerEntry(g, bi), IntegerEntry(m, by), IntegerEntry(j, M), IntegerEntry(k, O), bw, StringEntry(h, toBase58String(bx)), IntegerEntry(i, bv), ScriptTransfer(bd.caller, bv, bx)]
337+ let bx = ((("s" + take(br, 7)) + "_") + take(bv, 7))
338+ let by = ((((("ShareToken of SwopFi protocol for " + br) + " and ") + bv) + " at address ") + toString(this))
339+ let bz = ((bs + bw) / 2)
340+ let bA = fraction(pow(bk, bs, 5, 1, bs, HALFDOWN), pow(bn, bw, 5, 1, bw, HALFDOWN), pow(10, 0, bz, 0, 0, HALFDOWN))
341+ let bB = Issue(bx, by, bA, bz, true)
342+ let bC = calculateAssetId(bB)
343+ let bD = an(bk, bn)
344+[StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bq), StringEntry(e, bu), IntegerEntry(f, bk), IntegerEntry(g, bn), IntegerEntry(l, bD), IntegerEntry(j, L), IntegerEntry(k, N), bB, StringEntry(h, toBase58String(bC)), IntegerEntry(i, bA), ScriptTransfer(bi.caller, bA, bC)]
348345 }
349346 }
350347
351348
352349
353-@Callable(bd)
354-func replenishWithTwoTokens (bz) = if ((bz > 10))
355- then throw("slippage tolerance must be <= 1%")
356- else {
357- let bg = bd.payments[0].assetId
358- let bj = bd.payments[1].assetId
359- let bf = aP(bd.payments[0].amount, bg)
360- let bi = aP(bd.payments[1].amount, bj)
361- let bA = fraction(fraction(H, Q, bf), P, fraction(I, Q, bi))
362- let bB = fraction(bf, Q, H)
363- let bC = fraction(bi, Q, I)
364- let bD = fraction(min([bB, bC]), K, Q)
365- let by = as((H + bf), (I + bi))
366- if (!(x))
367- then aT()
368- else if (if ((0 > bz))
369- then true
370- else (bz > S))
371- then throw(((("Slippage tolerance must be between 0 and " + toString(S)) + " inclusively. Actual: ") + toString(bz)))
372- else if ((size(bd.payments) != 2))
373- then throw("Two attached assets expected")
374- else if (if ((bg != A))
350+@Callable(bi)
351+func replenishWithTwoTokens (bE) = {
352+ let bl = bi.payments[0].assetId
353+ let bo = bi.payments[1].assetId
354+ let bk = aS(bi.payments[0].amount, bl)
355+ let bn = aS(bi.payments[1].amount, bo)
356+ let bF = fraction(fraction(P, G, bk), O, fraction(P, H, bn))
357+ let bG = fraction(P, bk, G)
358+ let bH = fraction(P, bn, H)
359+ let bI = fraction(min([bG, bH]), J, P)
360+ let bD = an((G + bk), (H + bn))
361+ if (!(w))
362+ then aW()
363+ else if (if ((0 > bE))
364+ then true
365+ else (bE > 10))
366+ then throw("Slippage tolerance must be <= 1%")
367+ else if ((size(bi.payments) != 2))
368+ then throw("Two attached assets expected")
369+ else if (if ((bl != z))
370+ then true
371+ else (bo != A))
372+ then aY()
373+ else if (if ((((O * (R - bE)) / R) > bF))
375374 then true
376- else (bj != B))
377- then aV()
378- else if (if ((((P * (S - bz)) / S) > bA))
379- then true
380- else (bA > ((P * (S + bz)) / S)))
381- then throw("Incorrect assets amount: amounts must have the contract ratio")
382- else if ((bD == 0))
383- then throw("Too small amount to replenish")
384- else if (!(ao))
385- then bc()
386- else [IntegerEntry(f, (H + bf)), IntegerEntry(g, (I + bi)), IntegerEntry(i, (K + bD)), IntegerEntry(m, by), Reissue(J, bD, true), ScriptTransfer(bd.caller, bD, J)]
387- }
388-
389-
390-
391-@Callable(bd)
392-func replenishWithOneToken (bE,bF) = {
393- let bG = $Tuple2(bd.payments[0].amount, bd.payments[0].assetId)
394- let bH = bG._1
395- let bI = bG._2
396- let bJ = 5000000
397- let bK = 50000000
398- let bL = if ((bK > bH))
399- then 100000
400- else 1
401- let bM = (Q - ((Q * bL) / 10000000))
402- let bN = (Q + ((Q * bL) / 10000000))
403- let bO = (Q - ((Q * 1) / 10000000))
404- let bP = (Q + ((Q * 1) / 10000000))
405- if (!(x))
406- then aT()
407- else if ((bJ > bH))
408- then throw((((("Payment amount " + toString(bH)) + " does not exceed the minimum amount of ") + toString(bJ)) + " tokens"))
409- else if ((size(bd.payments) != 1))
410- then throw("One attached payment expected")
411- else if (!(ao))
412- then bc()
413- else if ((bI == A))
414- then {
415- let bQ = (bH - bE)
416- let bR = bF
417- let bS = (H + bE)
418- let bT = (I - bF)
419- let aH = as(bS, bT)
420- let aI = fraction(L, Q, aH)
421- if (if ((aI > bO))
422- then ((aH - L) >= 0)
423- else false)
424- then {
425- let bU = (fraction(bS, (Q * Q), bT) / fraction(bQ, Q, bR))
426- if (if ((bM > bU))
427- then true
428- else (bU > bN))
429- then throw("Ratio after virtual swap incorrect")
430- else {
431- let bB = fraction(aP(bQ, A), Q, bS)
432- let bC = fraction(aP(bR, B), Q, bT)
433- let bD = fraction(min([bB, bC]), K, Q)
434- let by = as((H + bH), I)
435- let bV = (H + bH)
436- let bW = I
437- let bX = fraction((bV + bW), V, (2 * W))
438- if (if ((bX > bV))
439- then true
440- else (bX > bW))
441- then aW(bX, bV, bW)
442- else [Reissue(J, bD, true), ScriptTransfer(bd.caller, bD, J), IntegerEntry(i, (K + bD)), IntegerEntry(f, bV), IntegerEntry(m, by)]
443- }
444- }
445- else throw("Incorrect virtualSwapTokenPay or virtualSwapTokenGet value")
446- }
447- else if ((bI == B))
448- then {
449- let bR = (bH - bE)
450- let bQ = bF
451- let bS = (H - bF)
452- let bT = (I + bE)
453- let aH = as(bS, bT)
454- let aI = fraction(L, Q, aH)
455- if (if ((aI > bO))
456- then ((aH - L) >= 0)
457- else false)
458- then {
459- let bU = (fraction(bS, (Q * Q), bT) / fraction(bQ, Q, bR))
460- if (if ((bM > bU))
461- then true
462- else (bU > bN))
463- then throw("Ratio after virtual swap incorrect")
464- else {
465- let bB = fraction(aP(bQ, A), Q, bS)
466- let bC = fraction(aP(bR, B), Q, bT)
467- let bD = fraction(min([bB, bC]), K, Q)
468- let by = as(H, (I + bH))
469- let bV = H
470- let bW = (I + bH)
471- let bX = fraction((bV + bW), V, (2 * W))
472- if (if ((bX > bV))
473- then true
474- else (bX > bW))
475- then aW(bX, bV, bW)
476- else [Reissue(J, bD, true), ScriptTransfer(bd.caller, bD, J), IntegerEntry(i, (K + bD)), IntegerEntry(g, bW), IntegerEntry(m, by)]
477- }
478- }
479- else throw("Incorrect virtualSwapTokenPay or virtualSwapTokenGet value")
480- }
481- else aV()
375+ else (bF > ((O * (R + bE)) / R)))
376+ then throw("Incorrect assets amount: amounts must have the contract ratio")
377+ else if ((bI == 0))
378+ then throw("Too small amount to replenish")
379+ else if (!(aj))
380+ then bh()
381+ else [IntegerEntry(f, (G + bk)), IntegerEntry(g, (H + bn)), IntegerEntry(i, (J + bI)), IntegerEntry(l, bD), Reissue(I, bI, true), ScriptTransfer(bi.caller, bI, I)]
482382 }
483383
484384
485385
486-@Callable(bd)
487-func withdraw () = {
488- let bY = $Tuple2(bd.payments[0].amount, bd.payments[0].assetId)
489- let bH = bY._1
490- let bI = bY._2
491- let bZ = aP(fraction(bH, H, K), A)
492- let ca = aP(fraction(bH, I, K), B)
493- let by = as((H - bZ), (I - ca))
494- if (!(x))
495- then aT()
496- else if ((size(bd.payments) != 1))
497- then throw("One attached payment expected")
498- else if ((bI != J))
499- then throw(("Incorrect asset attached. Expected: " + toBase58String(J)))
500- else if (!(ao))
501- then bc()
502- else if (if ((bZ > ak))
503- then true
504- else (ca > al))
505- then bb(bZ, ca)
506- else [IntegerEntry(f, (H - bZ)), IntegerEntry(g, (I - ca)), IntegerEntry(i, (K - bH)), IntegerEntry(m, by), Burn(J, bH), ScriptTransfer(bd.caller, bZ, A), ScriptTransfer(bd.caller, ca, B)]
386+@Callable(bi)
387+func replenishWithOneToken (bJ,bK) = {
388+ let bL = $Tuple2(bi.payments[0].amount, bi.payments[0].assetId)
389+ let bM = bL._1
390+ let bN = bL._2
391+ let bO = 5000000
392+ let bP = 50000000
393+ let bQ = if ((bP > bM))
394+ then 100000
395+ else 1
396+ let bR = (P - ((P * bQ) / 10000000))
397+ let bS = (P + ((P * bQ) / 10000000))
398+ let bT = (P - ((P * 1) / 10000000))
399+ if (!(w))
400+ then aW()
401+ else if ((bO > bM))
402+ then throw((((("Payment amount " + toString(bM)) + " does not exceed the minimum amount of ") + toString(bO)) + " tokens"))
403+ else if ((size(bi.payments) != 1))
404+ then throw("One attached payment expected")
405+ else if (!(aj))
406+ then bh()
407+ else if (if ((bN != z))
408+ then (bN != A)
409+ else false)
410+ then aY()
411+ else {
412+ let bU = if ((bN == z))
413+ then $Tuple7((bM - bJ), bK, (G + bJ), (H - bK), an((G + bM), H), (G + bM), H)
414+ else $Tuple7(bK, (bM - bJ), (G - bK), (H + bJ), an(G, (H + bM)), G, (H + bM))
415+ let bV = bU._1
416+ let bW = bU._2
417+ let bX = bU._3
418+ let bY = bU._4
419+ let bD = bU._5
420+ let bZ = bU._6
421+ let ca = bU._7
422+ let cb = if ((bN == z))
423+ then IntegerEntry(f, bZ)
424+ else IntegerEntry(g, ca)
425+ let aw = an(bX, bY)
426+ let ax = fraction(P, K, aw)
427+ let cc = (fraction((P * P), bX, bY) / fraction(P, bV, bW))
428+ let cd = fraction((bZ + ca), T, (2 * U))
429+ if (if ((bT >= ax))
430+ then true
431+ else (K > aw))
432+ then throw("Incorrect virtualSwapTokenPay or virtualSwapTokenGet value")
433+ else if (if ((bR > cc))
434+ then true
435+ else (cc > bS))
436+ then throw("Swap with virtualSwapTokenPay and virtualSwapTokenGet is possible, but ratio after virtual swap is incorrect")
437+ else if (if ((cd > bZ))
438+ then true
439+ else (cd > ca))
440+ then aZ(cd, bZ, ca)
441+ else {
442+ let bG = fraction(aS(bV, z), P, bX)
443+ let bH = fraction(aS(bW, A), P, bY)
444+ let bI = fraction(min([bG, bH]), J, P)
445+[Reissue(I, bI, true), ScriptTransfer(bi.caller, bI, I), IntegerEntry(i, (J + bI)), cb, IntegerEntry(l, bD)]
446+ }
447+ }
507448 }
508449
509450
510451
511-@Callable(bd)
512-func exchange (cb,cc) = {
513- let cd = $Tuple2(bd.payments[0].amount, bd.payments[0].assetId)
514- let bH = cd._1
515- let bI = cd._2
516- if (if ((Z > fraction(cc, Q, bH)))
517- then true
518- else (fraction(cb, Q, bH) > aa))
519- then throw("Incorrect args and pmt ratio")
520- else if (!(x))
521- then aT()
522- else if ((0 >= cb))
523- then throw(("Estimated amount must be positive. Actual: " + toString(cb)))
524- else if ((cc > cb))
525- then throw(((("Minimal amount can't be greater than estimated. Estimated: " + toString(cb)) + ". Minimal: ") + toString(cc)))
526- else if ((size(bd.payments) != 1))
527- then throw("One attached payment expected")
528- else if (!(ao))
529- then bc()
530- else if ((10000000 > bH))
531- then throw("Only swap of 10.000000 or more tokens is allowed")
532- else if ((bI == A))
533- then {
534- let ce = B
535- let cf = aJ(cb, cc, H, I, bH)
536- let cg = fraction(cf, (O - M), O)
537- let ch = fraction(cf, N, O)
538- let bV = (H + bH)
539- let bW = ((I - cg) - ch)
540- let bX = fraction((bV + bW), V, (2 * W))
541- if (if ((bX > bV))
542- then true
543- else (bX > bW))
544- then aW(bX, bV, bW)
545- else if (if (if ((A == v))
546- then (ah >= bV)
547- else false)
548- then true
549- else if ((B == v))
550- then (ah >= bW)
551- else false)
552- then aY(cg, al, G)
553- else [IntegerEntry(f, bV), IntegerEntry(g, bW), IntegerEntry(m, as((H + bH), ((I - cg) - ch))), ScriptTransfer(bd.caller, cg, ce), ScriptTransfer(t, ch, ce)]
554- }
555- else if ((bI == B))
556- then {
557- let ce = A
558- let cf = au(cb, cc, H, I, bH)
559- let cg = fraction(cf, (O - M), O)
560- let ch = fraction(cf, N, O)
561- let bV = ((H - cg) - ch)
562- let bW = (I + bH)
563- let bX = fraction((bV + bW), V, (2 * W))
564- if (if ((bX > bV))
565- then true
566- else (bX > bW))
567- then aW(bX, bV, bW)
568- else if (if (if ((A == v))
569- then (ah >= bV)
570- else false)
571- then true
572- else if ((B == v))
573- then (ah >= bW)
574- else false)
575- then aY(cg, ak, C)
576- else [IntegerEntry(f, bV), IntegerEntry(g, bW), IntegerEntry(m, as(((H - cg) - ch), (I + bH))), ScriptTransfer(bd.caller, cg, ce), ScriptTransfer(t, ch, ce)]
577- }
578- else aV()
452+@Callable(bi)
453+func withdraw () = {
454+ let ce = $Tuple2(bi.payments[0].amount, bi.payments[0].assetId)
455+ let bM = ce._1
456+ let bN = ce._2
457+ let cf = aS(fraction(bM, G, J), z)
458+ let cg = aS(fraction(bM, H, J), A)
459+ let bD = an((G - cf), (H - cg))
460+ if (!(w))
461+ then aW()
462+ else if ((size(bi.payments) != 1))
463+ then throw("One attached payment expected")
464+ else if ((bN != I))
465+ then throw(("Incorrect asset attached. Expected: " + toBase58String(I)))
466+ else if (!(aj))
467+ then bh()
468+ else if (if ((cf > af))
469+ then true
470+ else (cg > ag))
471+ then bg(cf, cg)
472+ else [IntegerEntry(f, (G - cf)), IntegerEntry(g, (H - cg)), IntegerEntry(i, (J - bM)), IntegerEntry(l, bD), Burn(I, bM), ScriptTransfer(bi.caller, cf, z), ScriptTransfer(bi.caller, cg, A)]
579473 }
580474
581475
582476
583-@Callable(bd)
584-func shutdown () = if (!(x))
585- then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, n), "the cause wasn't specified")))
586- else if (!(containsElement([o, p, q, r], bd.callerPublicKey)))
587- then aU()
588- else aN("Paused by admin")
477+@Callable(bi)
478+func exchange (ch,ci) = {
479+ let cj = $Tuple2(bi.payments[0].amount, bi.payments[0].assetId)
480+ let bM = cj._1
481+ let bN = cj._2
482+ if (!(w))
483+ then aW()
484+ else if ((0 >= ch))
485+ then throw(("Estimated amount must be positive. Actual: " + toString(ch)))
486+ else if ((ci > ch))
487+ then throw(((("Minimal amount can't be greater than estimated. Estimated: " + toString(ch)) + ". Minimal: ") + toString(ci)))
488+ else if ((size(bi.payments) != 1))
489+ then throw("One attached payment expected")
490+ else if (!(aj))
491+ then bh()
492+ else if (if ((bN != z))
493+ then (bN != A)
494+ else false)
495+ then aY()
496+ else if ((10000000 > bM))
497+ then throw("Only swap of 10.000000 or more tokens is allowed")
498+ else if (if ((V > fraction(P, ci, bM)))
499+ then true
500+ else (fraction(P, ch, bM) > W))
501+ then throw("Incorrect args and pmt ratio")
502+ else {
503+ let ck = if ((bN == z))
504+ then A
505+ else z
506+ let aT = ap(ch, ci, bM, bN)
507+ let cl = fraction(aT, M, N)
508+ let cm = fraction(aT, (N - L), N)
509+ let cn = if ((bN == z))
510+ then $Tuple2((G + bM), ((H - cm) - cl))
511+ else $Tuple2(((G - cm) - cl), (H + bM))
512+ let bZ = cn._1
513+ let ca = cn._2
514+ let cd = fraction((bZ + ca), T, (2 * U))
515+ if (if ((cd > bZ))
516+ then true
517+ else (cd > ca))
518+ then aZ(cd, bZ, ca)
519+ else if (if (if ((z == u))
520+ then (ck == z)
521+ else false)
522+ then (ac >= bZ)
523+ else false)
524+ then bd(cm, af, B)
525+ else if (if (if ((A == u))
526+ then (ck == A)
527+ else false)
528+ then (ac >= ca)
529+ else false)
530+ then bd(cm, ag, F)
531+ else [IntegerEntry(f, bZ), IntegerEntry(g, ca), IntegerEntry(l, an(bZ, ca)), ScriptTransfer(bi.caller, cm, ck), ScriptTransfer(s, cl, ck)]
532+ }
533+ }
589534
590535
591536
592-@Callable(bd)
593-func activate () = if (x)
594- then aS()
595- else if (!(containsElement([o, p, q, r], bd.callerPublicKey)))
596- then aU()
597- else [BooleanEntry(c, true), DeleteEntry(n)]
537+@Callable(bi)
538+func shutdown () = if (!(w))
539+ then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, m), "the cause wasn't specified")))
540+ else if (!(containsElement([n, o, p, q], bi.callerPublicKey)))
541+ then aX()
542+ else aQ("Paused by admin")
598543
599544
600545
601-@Callable(bd)
602-func takeIntoAccountExtraFunds (ci) = {
603- let cj = (am - H)
604- let ck = (an - I)
605- let cl = (cj - (if ((A == v))
606- then ci
546+@Callable(bi)
547+func activate () = if (w)
548+ then aV()
549+ else if (!(containsElement([n, o, p, q], bi.callerPublicKey)))
550+ then aX()
551+ else [BooleanEntry(c, true), DeleteEntry(m)]
552+
553+
554+
555+@Callable(bi)
556+func takeIntoAccountExtraFunds (co) = {
557+ let cp = (ah - G)
558+ let cq = (ai - H)
559+ let cr = (cp - (if ((z == u))
560+ then co
607561 else 0))
608- let cm = (ck - (if ((B == v))
609- then ci
562+ let cs = (cq - (if ((A == u))
563+ then co
610564 else 0))
611- if (!(x))
612- then aT()
613- else if ((bd.caller != this))
614- then aU()
615- else if ((0 > ci))
616- then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(ci)))
617- else if (if ((0 > cj))
565+ let aw = an((G + cr), (H + cs))
566+ if (!(w))
567+ then aW()
568+ else if ((bi.caller != this))
569+ then aX()
570+ else if ((0 > co))
571+ then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(co)))
572+ else if (if ((0 > cp))
618573 then true
619- else (0 > ck))
620- then aN("Enroll amount negative")
621- else if (if ((0 > cl))
574+ else (0 > cq))
575+ then aQ("Enroll amount negative")
576+ else if (if ((0 > cr))
622577 then true
623- else (0 > cm))
578+ else (0 > cs))
624579 then throw("Too large amountLeave")
625- else [IntegerEntry(f, (H + cl)), IntegerEntry(g, (I + cm)), IntegerEntry(("last_income_" + y), cl), IntegerEntry(("last_income_" + z), cm)]
580+ else [IntegerEntry(l, aw), IntegerEntry(f, (G + cr)), IntegerEntry(g, (H + cs)), IntegerEntry(("last_income_" + x), cr), IntegerEntry(("last_income_" + y), cs)]
626581 }
627582
628583
629-@Verifier(cn)
630-func co () = {
631- let D = cn
632- if ($isInstanceOf(D, "InvokeScriptTransaction"))
584+@Verifier(ct)
585+func cu () = {
586+ let C = ct
587+ if ($isInstanceOf(C, "InvokeScriptTransaction"))
633588 then {
634- let cp = D
635- let cq = if ((cp.dApp == this))
636- then (cp.function == "takeIntoAccountExtraFunds")
589+ let cv = C
590+ let cw = if ((cv.dApp == this))
591+ then (cv.function == "takeIntoAccountExtraFunds")
637592 else false
638- let cr = if ((cp.dApp == u))
639- then if (if (if ((cp.function == "lockNeutrino"))
640- then (size(cp.payments) == 1)
593+ let cx = if ((cv.dApp == t))
594+ then if (if (if ((cv.function == "lockNeutrino"))
595+ then (size(cv.payments) == 1)
641596 else false)
642- then (cp.payments[0].assetId == v)
597+ then (cv.payments[0].assetId == u)
643598 else false)
644599 then true
645- else if ((cp.function == "unlockNeutrino"))
646- then (size(cp.payments) == 0)
600+ else if ((cv.function == "unlockNeutrino"))
601+ then (size(cv.payments) == 0)
647602 else false
648603 else false
649- let cs = if (if (if (sigVerify(cn.bodyBytes, cn.proofs[0], o))
604+ let cy = if (if (if (sigVerify(ct.bodyBytes, ct.proofs[0], n))
650605 then true
651- else sigVerify(cn.bodyBytes, cn.proofs[0], p))
606+ else sigVerify(ct.bodyBytes, ct.proofs[0], o))
652607 then true
653- else sigVerify(cn.bodyBytes, cn.proofs[0], q))
608+ else sigVerify(ct.bodyBytes, ct.proofs[0], p))
654609 then true
655- else sigVerify(cn.bodyBytes, cn.proofs[0], s)
656- if (if (cq)
610+ else sigVerify(ct.bodyBytes, ct.proofs[0], r)
611+ if (if (cw)
657612 then true
658- else cr)
659- then cs
613+ else cx)
614+ then cy
660615 else false
661616 }
662617 else {
663- let ct = if (sigVerify(cn.bodyBytes, cn.proofs[0], o))
618+ let cz = if (sigVerify(ct.bodyBytes, ct.proofs[0], n))
664619 then 1
665620 else 0
666- let cu = if (sigVerify(cn.bodyBytes, cn.proofs[1], p))
621+ let cA = if (sigVerify(ct.bodyBytes, ct.proofs[1], o))
667622 then 1
668623 else 0
669- let cv = if (sigVerify(cn.bodyBytes, cn.proofs[2], q))
624+ let cB = if (sigVerify(ct.bodyBytes, ct.proofs[2], p))
670625 then 1
671626 else 0
672- (((ct + cu) + cv) >= 2)
627+ (((cz + cA) + cB) >= 2)
673628 }
674629 }
675630
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "2.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
26-let l = "commission_governance"
26+let l = "invariant"
2727
28-let m = "invariant"
28+let m = "shutdown_cause"
2929
30-let n = "shutdown_cause"
30+let n = base58'DXDY2itiEcYBtGkVLnkpHtDFyWQUkoLJz79uJ7ECbMrA'
3131
32-let o = base58'DXDY2itiEcYBtGkVLnkpHtDFyWQUkoLJz79uJ7ECbMrA'
32+let o = base58'E6Wa1SGoktYcjHjsKrvjMiqJY3SWmGKcD8Q5L8kxSPS7'
3333
34-let p = base58'E6Wa1SGoktYcjHjsKrvjMiqJY3SWmGKcD8Q5L8kxSPS7'
34+let p = base58'AZmWJtuy4GeVrMmJH4hfFBRApe1StvhJSk4jcbT6bArQ'
3535
36-let q = base58'AZmWJtuy4GeVrMmJH4hfFBRApe1StvhJSk4jcbT6bArQ'
36+let q = base58'EtVkT6ed8GtbUiVVEqdmEqsp2J4qbb3rre2HFgxeVYdg'
3737
38-let r = base58'EtVkT6ed8GtbUiVVEqdmEqsp2J4qbb3rre2HFgxeVYdg'
38+let r = base58'Czn4yoAuUZCVCLJDRfskn8URfkwpknwBTZDbs1wFrY7h'
3939
40-let s = base58'Czn4yoAuUZCVCLJDRfskn8URfkwpknwBTZDbs1wFrY7h'
40+let s = Address(base58'3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp')
4141
42-let t = Address(base58'3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp')
42+let t = Address(base58'3PNikM6yp4NqcSU8guxQtmR5onr2D4e8yTJ')
4343
44-let u = Address(base58'3PNikM6yp4NqcSU8guxQtmR5onr2D4e8yTJ')
44+let u = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
4545
46-let v = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
46+let v = (9 * value(value(assetInfo(u)).minSponsoredFee))
4747
48-let w = (9 * value(value(assetInfo(v)).minSponsoredFee))
48+let w = getBooleanValue(this, c)
4949
50-let x = getBooleanValue(this, c)
50+let x = getStringValue(this, d)
5151
52-let y = getStringValue(this, d)
52+let y = getStringValue(this, e)
5353
54-let z = getStringValue(this, e)
54+let z = if ((x == "WAVES"))
55+ then unit
56+ else fromBase58String(x)
5557
5658 let A = if ((y == "WAVES"))
5759 then unit
5860 else fromBase58String(y)
5961
60-let B = if ((z == "WAVES"))
61- then unit
62- else fromBase58String(z)
63-
64-let C = {
65- let D = A
66- if ($isInstanceOf(D, "ByteVector"))
62+let B = {
63+ let C = z
64+ if ($isInstanceOf(C, "ByteVector"))
6765 then {
68- let E = D
69- value(assetInfo(E)).name
66+ let D = C
67+ value(assetInfo(D)).name
7068 }
71- else if ($isInstanceOf(D, "Unit"))
69+ else if ($isInstanceOf(C, "Unit"))
7270 then {
73- let F = D
71+ let E = C
7472 "WAVES"
7573 }
7674 else throw("Match error")
7775 }
7876
79-let G = {
80- let D = B
81- if ($isInstanceOf(D, "ByteVector"))
77+let F = {
78+ let C = A
79+ if ($isInstanceOf(C, "ByteVector"))
8280 then {
83- let E = D
84- value(assetInfo(E)).name
81+ let D = C
82+ value(assetInfo(D)).name
8583 }
86- else if ($isInstanceOf(D, "Unit"))
84+ else if ($isInstanceOf(C, "Unit"))
8785 then {
88- let F = D
86+ let E = C
8987 "WAVES"
9088 }
9189 else throw("Match error")
9290 }
9391
94-let H = getIntegerValue(this, f)
92+let G = getIntegerValue(this, f)
9593
96-let I = getIntegerValue(this, g)
94+let H = getIntegerValue(this, g)
9795
98-let J = fromBase58String(getStringValue(this, h))
96+let I = fromBase58String(getStringValue(this, h))
9997
100-let K = getIntegerValue(this, i)
98+let J = getIntegerValue(this, i)
10199
102-let L = getIntegerValue(this, m)
100+let K = getIntegerValue(this, l)
103101
104-let M = 500
102+let L = 500
105103
106-let N = 200
104+let M = 200
107105
108-let O = 1000000
106+let N = 1000000
109107
110-let P = 1000
108+let O = 1000
111109
112-let Q = 100000000
110+let P = 100000000
113111
114-let R = 1000000000000
112+let Q = 1000000000000
115113
116-let S = 1000
114+let R = 1000
117115
118-let T = 8
116+let S = 8
119117
120-let U = 12
118+let T = 50
121119
122-let V = 50
120+let U = 100
123121
124-let W = 100
122+let V = 90000000
125123
126-let X = 100000000
124+let W = 110000000
127125
128-let Y = 99999000
126+let X = 50
129127
130-let Z = 90000000
128+let Y = 2
131129
132-let aa = 110000000
130+let Z = 46000000
133131
134-let ab = 50
135-
136-let ac = 2
137-
138-let ad = 46000000
139-
140-let ae = 8
141-
142-func af (ag) = {
143- let D = ag
144- if ($isInstanceOf(D, "ByteVector"))
132+func aa (ab) = {
133+ let C = ab
134+ if ($isInstanceOf(C, "ByteVector"))
145135 then {
146- let E = D
147- assetBalance(this, E)
136+ let D = C
137+ assetBalance(this, D)
148138 }
149- else if ($isInstanceOf(D, "Unit"))
139+ else if ($isInstanceOf(C, "Unit"))
150140 then {
151- let F = D
141+ let E = C
152142 wavesBalance(this).available
153143 }
154144 else throw("Match error")
155145 }
156146
157147
158-let ah = {
159- let D = getInteger(u, ((("rpd_balance_" + toBase58String(v)) + "_") + toString(this)))
160- if ($isInstanceOf(D, "Int"))
148+let ac = {
149+ let C = getInteger(t, ((("rpd_balance_" + toBase58String(u)) + "_") + toString(this)))
150+ if ($isInstanceOf(C, "Int"))
161151 then {
162- let ai = D
163- ai
152+ let ad = C
153+ ad
164154 }
165- else if ($isInstanceOf(D, "Unit"))
155+ else if ($isInstanceOf(C, "Unit"))
166156 then {
167- let aj = D
157+ let ae = C
168158 0
169159 }
170160 else throw("Match error")
171161 }
172162
173-let ak = (H - (if ((A == v))
174- then ah
163+let af = (G - (if ((z == u))
164+ then ac
175165 else 0))
176166
177-let al = (I - (if ((B == v))
178- then ah
167+let ag = (H - (if ((A == u))
168+ then ac
179169 else 0))
180170
181-let am = (af(A) + (if ((A == v))
182- then ah
171+let ah = (aa(z) + (if ((z == u))
172+ then ac
183173 else 0))
184174
185-let an = (af(B) + (if ((B == v))
186- then ah
175+let ai = (aa(A) + (if ((A == u))
176+ then ac
187177 else 0))
188178
189-let ao = if ((am >= H))
190- then (an >= I)
179+let aj = if ((ah >= G))
180+ then (ai >= H)
191181 else false
192182
193-func ap (aq,ar) = (((fraction(R, aq, ar) + fraction(R, ar, aq)) / 2) / 10000)
183+func ak (al,am) = (((fraction(Q, al, am) + fraction(Q, am, al)) / 2) / 10000)
194184
195185
196-func as (aq,ar) = {
197- let at = ap(aq, ar)
198- (fraction((aq + ar), Q, pow(at, T, ab, ac, T, UP)) + (2 * fraction(pow(fraction(aq, ar, Q), 0, 5, 1, (T / 2), DOWN), pow((at - ad), T, ab, ac, T, DOWN), Q)))
186+func an (al,am) = {
187+ let ao = ak(al, am)
188+ (fraction((al + am), P, pow(ao, S, X, Y, S, UP)) + (2 * fraction(pow(fraction(al, am, P), 0, 5, 1, (S / 2), DOWN), pow((ao - Z), S, X, Y, S, DOWN), P)))
199189 }
200190
201191
202-func au (av,aw,ax,ay,az) = {
203- let aA = (Q - ((Q * 1) / 10000000))
204- let aB = (av - aw)
205- let aC = (av - ((1 * aB) / 5))
206- let aD = (av - ((2 * aB) / 5))
207- let aE = (av - ((3 * aB) / 5))
208- let aF = (av - ((4 * aB) / 5))
209- let aG = (av - ((5 * aB) / 5))
210- let ar = (ay + az)
211- let aH = as((ax - av), ar)
212- let aI = fraction(L, Q, aH)
213- if ((0 >= (as((ax - aG), ar) - L)))
214- then throw("err1")
215- else if (if ((aI > aA))
216- then ((aH - L) > 0)
192+func ap (aq,ar,as,at) = {
193+ let au = (P - ((P * 1) / 10000000))
194+ let av = (aq - ar)
195+ let al = (G + as)
196+ let am = (H + as)
197+ let aw = if ((at == z))
198+ then an(al, (H - aq))
199+ else if ((at == A))
200+ then an((G - aq), am)
201+ else throw("Wrong asset in payment")
202+ let ax = fraction(P, K, aw)
203+ func ay (az,aA) = if ((az == -1))
204+ then {
205+ let aB = (aq - ((aA * av) / 5))
206+ let aC = if ((at == z))
207+ then an(al, (H - aB))
208+ else an((G - aB), am)
209+ if ((aC > K))
210+ then aB
211+ else -1
212+ }
213+ else az
214+
215+ let aD = {
216+ let aE = [1, 2, 3, 4, 5]
217+ let aF = size(aE)
218+ let aG = -1
219+ if ((aF == 0))
220+ then aG
221+ else {
222+ let aH = ay(aG, aE[0])
223+ if ((aF == 1))
224+ then aH
225+ else {
226+ let aI = ay(aH, aE[1])
227+ if ((aF == 2))
228+ then aI
229+ else {
230+ let aJ = ay(aI, aE[2])
231+ if ((aF == 3))
232+ then aJ
233+ else {
234+ let aK = ay(aJ, aE[3])
235+ if ((aF == 4))
236+ then aK
237+ else {
238+ let aL = ay(aK, aE[4])
239+ if ((aF == 5))
240+ then aL
241+ else {
242+ let aM = ay(aL, aE[5])
243+ throw("List size exceed 5")
244+ }
245+ }
246+ }
247+ }
248+ }
249+ }
250+ }
251+ if ((0 > aD))
252+ then throw("something went wrong while working with amountToSend")
253+ else if (if ((ax > au))
254+ then (aw > K)
217255 else false)
218- then av
219- else if (((as((ax - aC), ar) - L) > 0))
220- then ((aC * (O - M)) / O)
221- else if (((as((ax - aD), ar) - L) > 0))
222- then ((aD * (O - M)) / O)
223- else if (((as((ax - aE), ar) - L) > 0))
224- then ((aE * (O - M)) / O)
225- else if (((as((ax - aF), ar) - L) > 0))
226- then ((aF * (O - M)) / O)
227- else if (((as((ax - aG), ar) - L) > 0))
228- then ((aG * (O - M)) / O)
229- else throw("err2")
256+ then aq
257+ else aD
230258 }
231259
232260
233-func aJ (av,aw,ax,ay,az) = {
234- let aA = (Q - ((Q * 1) / 10000000))
235- let aB = (av - aw)
236- let aC = (av - ((1 * aB) / 5))
237- let aD = (av - ((2 * aB) / 5))
238- let aE = (av - ((3 * aB) / 5))
239- let aF = (av - ((4 * aB) / 5))
240- let aG = (av - ((5 * aB) / 5))
241- let aq = (ax + az)
242- let aH = as(aq, (ay - av))
243- let aI = fraction(L, Q, aH)
244- if ((0 >= (as(aq, (ay - aG)) - L)))
245- then throw("err1")
246- else if (if ((aI > aA))
247- then ((aH - L) > 0)
248- else false)
249- then av
250- else if (((as(aq, (ay - aC)) - L) > 0))
251- then ((aC * (O - M)) / O)
252- else if (((as(aq, (ay - aD)) - L) > 0))
253- then ((aD * (O - M)) / O)
254- else if (((as(aq, (ay - aE)) - L) > 0))
255- then ((aE * (O - M)) / O)
256- else if (((as(aq, (ay - aF)) - L) > 0))
257- then ((aF * (O - M)) / O)
258- else if (((as(aq, (ay - aG)) - L) > 0))
259- then ((aG * (O - M)) / O)
260- else throw("err2")
261- }
262-
263-
264-func aK (ag) = {
265- let D = ag
266- if ($isInstanceOf(D, "ByteVector"))
261+func aN (ab) = {
262+ let C = ab
263+ if ($isInstanceOf(C, "ByteVector"))
267264 then {
268- let E = D
269- let aL = toBase58String(E)
270- let aM = valueOrErrorMessage(assetInfo(E), (("Asset " + aL) + " doesn't exist"))
271- $Tuple3(aL, aM.name, aM.decimals)
265+ let D = C
266+ let aO = toBase58String(D)
267+ let aP = valueOrErrorMessage(assetInfo(D), (("Asset " + aO) + " doesn't exist"))
268+ $Tuple3(aO, aP.name, aP.decimals)
272269 }
273- else if ($isInstanceOf(D, "Unit"))
270+ else if ($isInstanceOf(C, "Unit"))
274271 then {
275- let F = D
272+ let E = C
276273 $Tuple3("WAVES", "WAVES", 8)
277274 }
278275 else throw("Match error")
279276 }
280277
281278
282-func aN (aO) = [BooleanEntry(c, false), StringEntry(n, aO)]
279+func aQ (aR) = [BooleanEntry(c, false), StringEntry(m, aR)]
283280
284281
285-func aP (aQ,ag) = if ((ag == v))
282+func aS (aT,ab) = if ((ab == u))
286283 then {
287- let aR = (aQ - w)
288- if ((0 >= aR))
289- then throw((((("Insufficient amount " + toString(aQ)) + " to deduct staking fee ") + toString(w)) + " USD-N"))
290- else aR
284+ let aU = (aT - v)
285+ if ((0 >= aU))
286+ then throw((((("Insufficient amount " + toString(aT)) + " to deduct staking fee ") + toString(v)) + " USD-N"))
287+ else aU
291288 }
292- else aQ
289+ else aT
293290
294291
295-func aS () = throw("DApp is already active")
292+func aV () = throw("DApp is already active")
296293
297294
298-func aT () = throw("DApp is inactive at this moment")
295+func aW () = throw("DApp is inactive at this moment")
299296
300297
301-func aU () = throw("Only admin can call this function")
298+func aX () = throw("Only admin can call this function")
302299
303300
304-func aV () = throw(((("Incorrect assets attached. Expected: " + y) + " and ") + z))
301+func aY () = throw(((("Incorrect assets attached. Expected: " + x) + " and ") + y))
305302
306303
307-func aW (aX,ax,ay) = throw(((((((((("New balance in assets of the DApp is less than threshold " + toString(aX)) + ": ") + toString(ax)) + " ") + C) + ", ") + toString(ay)) + " ") + G))
304+func aZ (ba,bb,bc) = throw(((((((((("New balance in assets of the DApp is less than threshold " + toString(ba)) + ": ") + toString(bb)) + " ") + B) + ", ") + toString(bc)) + " ") + F))
308305
309306
310-func aY (aQ,aZ,ba) = throw((((((((("Insufficient DApp balance to pay " + toString(aQ)) + " ") + ba) + " due to staking. Available: ") + toString(aZ)) + " ") + ba) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
307+func bd (aT,be,bf) = throw((((((((("Insufficient DApp balance to pay " + toString(aT)) + " ") + bf) + " due to staking. Available: ") + toString(be)) + " ") + bf) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
311308
312309
313-func bb (ax,ay) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(ax)) + " ") + C) + " and ") + toString(ay)) + " ") + G) + " due to staking. Available: ") + toString(ak)) + " ") + C) + " and ") + toString(al)) + " ") + G) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
310+func bg (bb,bc) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(bb)) + " ") + B) + " and ") + toString(bc)) + " ") + F) + " due to staking. Available: ") + toString(af)) + " ") + B) + " and ") + toString(ag)) + " ") + F) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
314311
315312
316-func bc () = aN(((((((((((((((("Suspicious state. Actual balances: " + toString(H)) + " ") + C) + ", ") + toString(I)) + " ") + G) + ". State: ") + toString(af(A))) + " ") + C) + ", ") + toString(af(B))) + " ") + G))
313+func bh () = aQ(((((((((((((((("Suspicious state. Actual balances: " + toString(G)) + " ") + B) + ", ") + toString(H)) + " ") + F) + ". State: ") + toString(aa(z))) + " ") + B) + ", ") + toString(aa(A))) + " ") + F))
317314
318315
319-@Callable(bd)
316+@Callable(bi)
320317 func init () = {
321- let be = $Tuple2(bd.payments[0].amount, bd.payments[0].assetId)
322- let bf = be._1
323- let bg = be._2
324- let bh = $Tuple2(bd.payments[1].amount, bd.payments[1].assetId)
325- let bi = bh._1
326- let bj = bh._2
327- let bk = aK(bg)
328- let bl = bk._1
329- let bm = bk._2
330- let bn = bk._3
331- let bo = aK(bj)
332- let bp = bo._1
333- let bq = bo._2
334- let br = bo._3
318+ let bj = $Tuple2(bi.payments[0].amount, bi.payments[0].assetId)
319+ let bk = bj._1
320+ let bl = bj._2
321+ let bm = $Tuple2(bi.payments[1].amount, bi.payments[1].assetId)
322+ let bn = bm._1
323+ let bo = bm._2
324+ let bp = aN(bl)
325+ let bq = bp._1
326+ let br = bp._2
327+ let bs = bp._3
328+ let bt = aN(bo)
329+ let bu = bt._1
330+ let bv = bt._2
331+ let bw = bt._3
335332 if (isDefined(getBoolean(this, c)))
336- then aS()
337- else if ((bg == bj))
333+ then aV()
334+ else if ((bl == bo))
338335 then throw("Assets must be different")
339336 else {
340- let bs = ((("s" + take(bm, 7)) + "_") + take(bq, 7))
341- let bt = ((((("ShareToken of SwopFi protocol for " + bm) + " and ") + bq) + " at address ") + toString(this))
342- let bu = ((bn + br) / 2)
343- let bv = fraction(pow(bf, bn, 5, 1, bn, HALFDOWN), pow(bi, br, 5, 1, br, HALFDOWN), pow(10, 0, bu, 0, 0, HALFDOWN))
344- let bw = Issue(bs, bt, bv, bu, true)
345- let bx = calculateAssetId(bw)
346- let by = as(bf, bi)
347-[StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bl), StringEntry(e, bp), IntegerEntry(f, bf), IntegerEntry(g, bi), IntegerEntry(m, by), IntegerEntry(j, M), IntegerEntry(k, O), bw, StringEntry(h, toBase58String(bx)), IntegerEntry(i, bv), ScriptTransfer(bd.caller, bv, bx)]
337+ let bx = ((("s" + take(br, 7)) + "_") + take(bv, 7))
338+ let by = ((((("ShareToken of SwopFi protocol for " + br) + " and ") + bv) + " at address ") + toString(this))
339+ let bz = ((bs + bw) / 2)
340+ let bA = fraction(pow(bk, bs, 5, 1, bs, HALFDOWN), pow(bn, bw, 5, 1, bw, HALFDOWN), pow(10, 0, bz, 0, 0, HALFDOWN))
341+ let bB = Issue(bx, by, bA, bz, true)
342+ let bC = calculateAssetId(bB)
343+ let bD = an(bk, bn)
344+[StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bq), StringEntry(e, bu), IntegerEntry(f, bk), IntegerEntry(g, bn), IntegerEntry(l, bD), IntegerEntry(j, L), IntegerEntry(k, N), bB, StringEntry(h, toBase58String(bC)), IntegerEntry(i, bA), ScriptTransfer(bi.caller, bA, bC)]
348345 }
349346 }
350347
351348
352349
353-@Callable(bd)
354-func replenishWithTwoTokens (bz) = if ((bz > 10))
355- then throw("slippage tolerance must be <= 1%")
356- else {
357- let bg = bd.payments[0].assetId
358- let bj = bd.payments[1].assetId
359- let bf = aP(bd.payments[0].amount, bg)
360- let bi = aP(bd.payments[1].amount, bj)
361- let bA = fraction(fraction(H, Q, bf), P, fraction(I, Q, bi))
362- let bB = fraction(bf, Q, H)
363- let bC = fraction(bi, Q, I)
364- let bD = fraction(min([bB, bC]), K, Q)
365- let by = as((H + bf), (I + bi))
366- if (!(x))
367- then aT()
368- else if (if ((0 > bz))
369- then true
370- else (bz > S))
371- then throw(((("Slippage tolerance must be between 0 and " + toString(S)) + " inclusively. Actual: ") + toString(bz)))
372- else if ((size(bd.payments) != 2))
373- then throw("Two attached assets expected")
374- else if (if ((bg != A))
350+@Callable(bi)
351+func replenishWithTwoTokens (bE) = {
352+ let bl = bi.payments[0].assetId
353+ let bo = bi.payments[1].assetId
354+ let bk = aS(bi.payments[0].amount, bl)
355+ let bn = aS(bi.payments[1].amount, bo)
356+ let bF = fraction(fraction(P, G, bk), O, fraction(P, H, bn))
357+ let bG = fraction(P, bk, G)
358+ let bH = fraction(P, bn, H)
359+ let bI = fraction(min([bG, bH]), J, P)
360+ let bD = an((G + bk), (H + bn))
361+ if (!(w))
362+ then aW()
363+ else if (if ((0 > bE))
364+ then true
365+ else (bE > 10))
366+ then throw("Slippage tolerance must be <= 1%")
367+ else if ((size(bi.payments) != 2))
368+ then throw("Two attached assets expected")
369+ else if (if ((bl != z))
370+ then true
371+ else (bo != A))
372+ then aY()
373+ else if (if ((((O * (R - bE)) / R) > bF))
375374 then true
376- else (bj != B))
377- then aV()
378- else if (if ((((P * (S - bz)) / S) > bA))
379- then true
380- else (bA > ((P * (S + bz)) / S)))
381- then throw("Incorrect assets amount: amounts must have the contract ratio")
382- else if ((bD == 0))
383- then throw("Too small amount to replenish")
384- else if (!(ao))
385- then bc()
386- else [IntegerEntry(f, (H + bf)), IntegerEntry(g, (I + bi)), IntegerEntry(i, (K + bD)), IntegerEntry(m, by), Reissue(J, bD, true), ScriptTransfer(bd.caller, bD, J)]
387- }
388-
389-
390-
391-@Callable(bd)
392-func replenishWithOneToken (bE,bF) = {
393- let bG = $Tuple2(bd.payments[0].amount, bd.payments[0].assetId)
394- let bH = bG._1
395- let bI = bG._2
396- let bJ = 5000000
397- let bK = 50000000
398- let bL = if ((bK > bH))
399- then 100000
400- else 1
401- let bM = (Q - ((Q * bL) / 10000000))
402- let bN = (Q + ((Q * bL) / 10000000))
403- let bO = (Q - ((Q * 1) / 10000000))
404- let bP = (Q + ((Q * 1) / 10000000))
405- if (!(x))
406- then aT()
407- else if ((bJ > bH))
408- then throw((((("Payment amount " + toString(bH)) + " does not exceed the minimum amount of ") + toString(bJ)) + " tokens"))
409- else if ((size(bd.payments) != 1))
410- then throw("One attached payment expected")
411- else if (!(ao))
412- then bc()
413- else if ((bI == A))
414- then {
415- let bQ = (bH - bE)
416- let bR = bF
417- let bS = (H + bE)
418- let bT = (I - bF)
419- let aH = as(bS, bT)
420- let aI = fraction(L, Q, aH)
421- if (if ((aI > bO))
422- then ((aH - L) >= 0)
423- else false)
424- then {
425- let bU = (fraction(bS, (Q * Q), bT) / fraction(bQ, Q, bR))
426- if (if ((bM > bU))
427- then true
428- else (bU > bN))
429- then throw("Ratio after virtual swap incorrect")
430- else {
431- let bB = fraction(aP(bQ, A), Q, bS)
432- let bC = fraction(aP(bR, B), Q, bT)
433- let bD = fraction(min([bB, bC]), K, Q)
434- let by = as((H + bH), I)
435- let bV = (H + bH)
436- let bW = I
437- let bX = fraction((bV + bW), V, (2 * W))
438- if (if ((bX > bV))
439- then true
440- else (bX > bW))
441- then aW(bX, bV, bW)
442- else [Reissue(J, bD, true), ScriptTransfer(bd.caller, bD, J), IntegerEntry(i, (K + bD)), IntegerEntry(f, bV), IntegerEntry(m, by)]
443- }
444- }
445- else throw("Incorrect virtualSwapTokenPay or virtualSwapTokenGet value")
446- }
447- else if ((bI == B))
448- then {
449- let bR = (bH - bE)
450- let bQ = bF
451- let bS = (H - bF)
452- let bT = (I + bE)
453- let aH = as(bS, bT)
454- let aI = fraction(L, Q, aH)
455- if (if ((aI > bO))
456- then ((aH - L) >= 0)
457- else false)
458- then {
459- let bU = (fraction(bS, (Q * Q), bT) / fraction(bQ, Q, bR))
460- if (if ((bM > bU))
461- then true
462- else (bU > bN))
463- then throw("Ratio after virtual swap incorrect")
464- else {
465- let bB = fraction(aP(bQ, A), Q, bS)
466- let bC = fraction(aP(bR, B), Q, bT)
467- let bD = fraction(min([bB, bC]), K, Q)
468- let by = as(H, (I + bH))
469- let bV = H
470- let bW = (I + bH)
471- let bX = fraction((bV + bW), V, (2 * W))
472- if (if ((bX > bV))
473- then true
474- else (bX > bW))
475- then aW(bX, bV, bW)
476- else [Reissue(J, bD, true), ScriptTransfer(bd.caller, bD, J), IntegerEntry(i, (K + bD)), IntegerEntry(g, bW), IntegerEntry(m, by)]
477- }
478- }
479- else throw("Incorrect virtualSwapTokenPay or virtualSwapTokenGet value")
480- }
481- else aV()
375+ else (bF > ((O * (R + bE)) / R)))
376+ then throw("Incorrect assets amount: amounts must have the contract ratio")
377+ else if ((bI == 0))
378+ then throw("Too small amount to replenish")
379+ else if (!(aj))
380+ then bh()
381+ else [IntegerEntry(f, (G + bk)), IntegerEntry(g, (H + bn)), IntegerEntry(i, (J + bI)), IntegerEntry(l, bD), Reissue(I, bI, true), ScriptTransfer(bi.caller, bI, I)]
482382 }
483383
484384
485385
486-@Callable(bd)
487-func withdraw () = {
488- let bY = $Tuple2(bd.payments[0].amount, bd.payments[0].assetId)
489- let bH = bY._1
490- let bI = bY._2
491- let bZ = aP(fraction(bH, H, K), A)
492- let ca = aP(fraction(bH, I, K), B)
493- let by = as((H - bZ), (I - ca))
494- if (!(x))
495- then aT()
496- else if ((size(bd.payments) != 1))
497- then throw("One attached payment expected")
498- else if ((bI != J))
499- then throw(("Incorrect asset attached. Expected: " + toBase58String(J)))
500- else if (!(ao))
501- then bc()
502- else if (if ((bZ > ak))
503- then true
504- else (ca > al))
505- then bb(bZ, ca)
506- else [IntegerEntry(f, (H - bZ)), IntegerEntry(g, (I - ca)), IntegerEntry(i, (K - bH)), IntegerEntry(m, by), Burn(J, bH), ScriptTransfer(bd.caller, bZ, A), ScriptTransfer(bd.caller, ca, B)]
386+@Callable(bi)
387+func replenishWithOneToken (bJ,bK) = {
388+ let bL = $Tuple2(bi.payments[0].amount, bi.payments[0].assetId)
389+ let bM = bL._1
390+ let bN = bL._2
391+ let bO = 5000000
392+ let bP = 50000000
393+ let bQ = if ((bP > bM))
394+ then 100000
395+ else 1
396+ let bR = (P - ((P * bQ) / 10000000))
397+ let bS = (P + ((P * bQ) / 10000000))
398+ let bT = (P - ((P * 1) / 10000000))
399+ if (!(w))
400+ then aW()
401+ else if ((bO > bM))
402+ then throw((((("Payment amount " + toString(bM)) + " does not exceed the minimum amount of ") + toString(bO)) + " tokens"))
403+ else if ((size(bi.payments) != 1))
404+ then throw("One attached payment expected")
405+ else if (!(aj))
406+ then bh()
407+ else if (if ((bN != z))
408+ then (bN != A)
409+ else false)
410+ then aY()
411+ else {
412+ let bU = if ((bN == z))
413+ then $Tuple7((bM - bJ), bK, (G + bJ), (H - bK), an((G + bM), H), (G + bM), H)
414+ else $Tuple7(bK, (bM - bJ), (G - bK), (H + bJ), an(G, (H + bM)), G, (H + bM))
415+ let bV = bU._1
416+ let bW = bU._2
417+ let bX = bU._3
418+ let bY = bU._4
419+ let bD = bU._5
420+ let bZ = bU._6
421+ let ca = bU._7
422+ let cb = if ((bN == z))
423+ then IntegerEntry(f, bZ)
424+ else IntegerEntry(g, ca)
425+ let aw = an(bX, bY)
426+ let ax = fraction(P, K, aw)
427+ let cc = (fraction((P * P), bX, bY) / fraction(P, bV, bW))
428+ let cd = fraction((bZ + ca), T, (2 * U))
429+ if (if ((bT >= ax))
430+ then true
431+ else (K > aw))
432+ then throw("Incorrect virtualSwapTokenPay or virtualSwapTokenGet value")
433+ else if (if ((bR > cc))
434+ then true
435+ else (cc > bS))
436+ then throw("Swap with virtualSwapTokenPay and virtualSwapTokenGet is possible, but ratio after virtual swap is incorrect")
437+ else if (if ((cd > bZ))
438+ then true
439+ else (cd > ca))
440+ then aZ(cd, bZ, ca)
441+ else {
442+ let bG = fraction(aS(bV, z), P, bX)
443+ let bH = fraction(aS(bW, A), P, bY)
444+ let bI = fraction(min([bG, bH]), J, P)
445+[Reissue(I, bI, true), ScriptTransfer(bi.caller, bI, I), IntegerEntry(i, (J + bI)), cb, IntegerEntry(l, bD)]
446+ }
447+ }
507448 }
508449
509450
510451
511-@Callable(bd)
512-func exchange (cb,cc) = {
513- let cd = $Tuple2(bd.payments[0].amount, bd.payments[0].assetId)
514- let bH = cd._1
515- let bI = cd._2
516- if (if ((Z > fraction(cc, Q, bH)))
517- then true
518- else (fraction(cb, Q, bH) > aa))
519- then throw("Incorrect args and pmt ratio")
520- else if (!(x))
521- then aT()
522- else if ((0 >= cb))
523- then throw(("Estimated amount must be positive. Actual: " + toString(cb)))
524- else if ((cc > cb))
525- then throw(((("Minimal amount can't be greater than estimated. Estimated: " + toString(cb)) + ". Minimal: ") + toString(cc)))
526- else if ((size(bd.payments) != 1))
527- then throw("One attached payment expected")
528- else if (!(ao))
529- then bc()
530- else if ((10000000 > bH))
531- then throw("Only swap of 10.000000 or more tokens is allowed")
532- else if ((bI == A))
533- then {
534- let ce = B
535- let cf = aJ(cb, cc, H, I, bH)
536- let cg = fraction(cf, (O - M), O)
537- let ch = fraction(cf, N, O)
538- let bV = (H + bH)
539- let bW = ((I - cg) - ch)
540- let bX = fraction((bV + bW), V, (2 * W))
541- if (if ((bX > bV))
542- then true
543- else (bX > bW))
544- then aW(bX, bV, bW)
545- else if (if (if ((A == v))
546- then (ah >= bV)
547- else false)
548- then true
549- else if ((B == v))
550- then (ah >= bW)
551- else false)
552- then aY(cg, al, G)
553- else [IntegerEntry(f, bV), IntegerEntry(g, bW), IntegerEntry(m, as((H + bH), ((I - cg) - ch))), ScriptTransfer(bd.caller, cg, ce), ScriptTransfer(t, ch, ce)]
554- }
555- else if ((bI == B))
556- then {
557- let ce = A
558- let cf = au(cb, cc, H, I, bH)
559- let cg = fraction(cf, (O - M), O)
560- let ch = fraction(cf, N, O)
561- let bV = ((H - cg) - ch)
562- let bW = (I + bH)
563- let bX = fraction((bV + bW), V, (2 * W))
564- if (if ((bX > bV))
565- then true
566- else (bX > bW))
567- then aW(bX, bV, bW)
568- else if (if (if ((A == v))
569- then (ah >= bV)
570- else false)
571- then true
572- else if ((B == v))
573- then (ah >= bW)
574- else false)
575- then aY(cg, ak, C)
576- else [IntegerEntry(f, bV), IntegerEntry(g, bW), IntegerEntry(m, as(((H - cg) - ch), (I + bH))), ScriptTransfer(bd.caller, cg, ce), ScriptTransfer(t, ch, ce)]
577- }
578- else aV()
452+@Callable(bi)
453+func withdraw () = {
454+ let ce = $Tuple2(bi.payments[0].amount, bi.payments[0].assetId)
455+ let bM = ce._1
456+ let bN = ce._2
457+ let cf = aS(fraction(bM, G, J), z)
458+ let cg = aS(fraction(bM, H, J), A)
459+ let bD = an((G - cf), (H - cg))
460+ if (!(w))
461+ then aW()
462+ else if ((size(bi.payments) != 1))
463+ then throw("One attached payment expected")
464+ else if ((bN != I))
465+ then throw(("Incorrect asset attached. Expected: " + toBase58String(I)))
466+ else if (!(aj))
467+ then bh()
468+ else if (if ((cf > af))
469+ then true
470+ else (cg > ag))
471+ then bg(cf, cg)
472+ else [IntegerEntry(f, (G - cf)), IntegerEntry(g, (H - cg)), IntegerEntry(i, (J - bM)), IntegerEntry(l, bD), Burn(I, bM), ScriptTransfer(bi.caller, cf, z), ScriptTransfer(bi.caller, cg, A)]
579473 }
580474
581475
582476
583-@Callable(bd)
584-func shutdown () = if (!(x))
585- then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, n), "the cause wasn't specified")))
586- else if (!(containsElement([o, p, q, r], bd.callerPublicKey)))
587- then aU()
588- else aN("Paused by admin")
477+@Callable(bi)
478+func exchange (ch,ci) = {
479+ let cj = $Tuple2(bi.payments[0].amount, bi.payments[0].assetId)
480+ let bM = cj._1
481+ let bN = cj._2
482+ if (!(w))
483+ then aW()
484+ else if ((0 >= ch))
485+ then throw(("Estimated amount must be positive. Actual: " + toString(ch)))
486+ else if ((ci > ch))
487+ then throw(((("Minimal amount can't be greater than estimated. Estimated: " + toString(ch)) + ". Minimal: ") + toString(ci)))
488+ else if ((size(bi.payments) != 1))
489+ then throw("One attached payment expected")
490+ else if (!(aj))
491+ then bh()
492+ else if (if ((bN != z))
493+ then (bN != A)
494+ else false)
495+ then aY()
496+ else if ((10000000 > bM))
497+ then throw("Only swap of 10.000000 or more tokens is allowed")
498+ else if (if ((V > fraction(P, ci, bM)))
499+ then true
500+ else (fraction(P, ch, bM) > W))
501+ then throw("Incorrect args and pmt ratio")
502+ else {
503+ let ck = if ((bN == z))
504+ then A
505+ else z
506+ let aT = ap(ch, ci, bM, bN)
507+ let cl = fraction(aT, M, N)
508+ let cm = fraction(aT, (N - L), N)
509+ let cn = if ((bN == z))
510+ then $Tuple2((G + bM), ((H - cm) - cl))
511+ else $Tuple2(((G - cm) - cl), (H + bM))
512+ let bZ = cn._1
513+ let ca = cn._2
514+ let cd = fraction((bZ + ca), T, (2 * U))
515+ if (if ((cd > bZ))
516+ then true
517+ else (cd > ca))
518+ then aZ(cd, bZ, ca)
519+ else if (if (if ((z == u))
520+ then (ck == z)
521+ else false)
522+ then (ac >= bZ)
523+ else false)
524+ then bd(cm, af, B)
525+ else if (if (if ((A == u))
526+ then (ck == A)
527+ else false)
528+ then (ac >= ca)
529+ else false)
530+ then bd(cm, ag, F)
531+ else [IntegerEntry(f, bZ), IntegerEntry(g, ca), IntegerEntry(l, an(bZ, ca)), ScriptTransfer(bi.caller, cm, ck), ScriptTransfer(s, cl, ck)]
532+ }
533+ }
589534
590535
591536
592-@Callable(bd)
593-func activate () = if (x)
594- then aS()
595- else if (!(containsElement([o, p, q, r], bd.callerPublicKey)))
596- then aU()
597- else [BooleanEntry(c, true), DeleteEntry(n)]
537+@Callable(bi)
538+func shutdown () = if (!(w))
539+ then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, m), "the cause wasn't specified")))
540+ else if (!(containsElement([n, o, p, q], bi.callerPublicKey)))
541+ then aX()
542+ else aQ("Paused by admin")
598543
599544
600545
601-@Callable(bd)
602-func takeIntoAccountExtraFunds (ci) = {
603- let cj = (am - H)
604- let ck = (an - I)
605- let cl = (cj - (if ((A == v))
606- then ci
546+@Callable(bi)
547+func activate () = if (w)
548+ then aV()
549+ else if (!(containsElement([n, o, p, q], bi.callerPublicKey)))
550+ then aX()
551+ else [BooleanEntry(c, true), DeleteEntry(m)]
552+
553+
554+
555+@Callable(bi)
556+func takeIntoAccountExtraFunds (co) = {
557+ let cp = (ah - G)
558+ let cq = (ai - H)
559+ let cr = (cp - (if ((z == u))
560+ then co
607561 else 0))
608- let cm = (ck - (if ((B == v))
609- then ci
562+ let cs = (cq - (if ((A == u))
563+ then co
610564 else 0))
611- if (!(x))
612- then aT()
613- else if ((bd.caller != this))
614- then aU()
615- else if ((0 > ci))
616- then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(ci)))
617- else if (if ((0 > cj))
565+ let aw = an((G + cr), (H + cs))
566+ if (!(w))
567+ then aW()
568+ else if ((bi.caller != this))
569+ then aX()
570+ else if ((0 > co))
571+ then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(co)))
572+ else if (if ((0 > cp))
618573 then true
619- else (0 > ck))
620- then aN("Enroll amount negative")
621- else if (if ((0 > cl))
574+ else (0 > cq))
575+ then aQ("Enroll amount negative")
576+ else if (if ((0 > cr))
622577 then true
623- else (0 > cm))
578+ else (0 > cs))
624579 then throw("Too large amountLeave")
625- else [IntegerEntry(f, (H + cl)), IntegerEntry(g, (I + cm)), IntegerEntry(("last_income_" + y), cl), IntegerEntry(("last_income_" + z), cm)]
580+ else [IntegerEntry(l, aw), IntegerEntry(f, (G + cr)), IntegerEntry(g, (H + cs)), IntegerEntry(("last_income_" + x), cr), IntegerEntry(("last_income_" + y), cs)]
626581 }
627582
628583
629-@Verifier(cn)
630-func co () = {
631- let D = cn
632- if ($isInstanceOf(D, "InvokeScriptTransaction"))
584+@Verifier(ct)
585+func cu () = {
586+ let C = ct
587+ if ($isInstanceOf(C, "InvokeScriptTransaction"))
633588 then {
634- let cp = D
635- let cq = if ((cp.dApp == this))
636- then (cp.function == "takeIntoAccountExtraFunds")
589+ let cv = C
590+ let cw = if ((cv.dApp == this))
591+ then (cv.function == "takeIntoAccountExtraFunds")
637592 else false
638- let cr = if ((cp.dApp == u))
639- then if (if (if ((cp.function == "lockNeutrino"))
640- then (size(cp.payments) == 1)
593+ let cx = if ((cv.dApp == t))
594+ then if (if (if ((cv.function == "lockNeutrino"))
595+ then (size(cv.payments) == 1)
641596 else false)
642- then (cp.payments[0].assetId == v)
597+ then (cv.payments[0].assetId == u)
643598 else false)
644599 then true
645- else if ((cp.function == "unlockNeutrino"))
646- then (size(cp.payments) == 0)
600+ else if ((cv.function == "unlockNeutrino"))
601+ then (size(cv.payments) == 0)
647602 else false
648603 else false
649- let cs = if (if (if (sigVerify(cn.bodyBytes, cn.proofs[0], o))
604+ let cy = if (if (if (sigVerify(ct.bodyBytes, ct.proofs[0], n))
650605 then true
651- else sigVerify(cn.bodyBytes, cn.proofs[0], p))
606+ else sigVerify(ct.bodyBytes, ct.proofs[0], o))
652607 then true
653- else sigVerify(cn.bodyBytes, cn.proofs[0], q))
608+ else sigVerify(ct.bodyBytes, ct.proofs[0], p))
654609 then true
655- else sigVerify(cn.bodyBytes, cn.proofs[0], s)
656- if (if (cq)
610+ else sigVerify(ct.bodyBytes, ct.proofs[0], r)
611+ if (if (cw)
657612 then true
658- else cr)
659- then cs
613+ else cx)
614+ then cy
660615 else false
661616 }
662617 else {
663- let ct = if (sigVerify(cn.bodyBytes, cn.proofs[0], o))
618+ let cz = if (sigVerify(ct.bodyBytes, ct.proofs[0], n))
664619 then 1
665620 else 0
666- let cu = if (sigVerify(cn.bodyBytes, cn.proofs[1], p))
621+ let cA = if (sigVerify(ct.bodyBytes, ct.proofs[1], o))
667622 then 1
668623 else 0
669- let cv = if (sigVerify(cn.bodyBytes, cn.proofs[2], q))
624+ let cB = if (sigVerify(ct.bodyBytes, ct.proofs[2], p))
670625 then 1
671626 else 0
672- (((ct + cu) + cv) >= 2)
627+ (((cz + cA) + cB) >= 2)
673628 }
674629 }
675630

github/deemru/w8io/3ef1775 
193.58 ms