tx · BhtDQohiKkmDXtbykyPeSSUBVRmUDQsXJLhTrce6GdcZ

3N5Xd7QVQZWntaJwha9Kg42is626GUPjtUW:  -0.01400000 Waves

2021.04.02 15:01 [1464797] smart account 3N5Xd7QVQZWntaJwha9Kg42is626GUPjtUW > SELF 0.00000000 Waves

{ "type": 13, "id": "BhtDQohiKkmDXtbykyPeSSUBVRmUDQsXJLhTrce6GdcZ", "fee": 1400000, "feeAssetId": null, "timestamp": 1617364964580, "version": 2, "chainId": 84, "sender": "3N5Xd7QVQZWntaJwha9Kg42is626GUPjtUW", "senderPublicKey": "DfbjpZJBbZwnUKysUkxCbWTE1ZWuoUb6Y6BZdu5iAE8j", "proofs": [ "2UmukAFyMLQ2hWJz8jhFTutjwEesFXFQgA7BaSWLiHoTEZKtKVDyW9ZT9R5dDgjpkER5pkvau3JdcpWYCV8oLuux" ], "script": "base64:AAIEAAAAAAAAABkIAhIAEgMKAQESABIDCgEBEgASABIDCgEBAAAAMwAAAAAHdmVyc2lvbgIAAAAFMS4wLjAAAAAACmtleVZlcnNpb24CAAAAB3ZlcnNpb24AAAAACWtleUFjdGl2ZQIAAAAGYWN0aXZlAAAAAAtrZXlBc3NldElkQQIAAAAKQV9hc3NldF9pZAAAAAALa2V5QXNzZXRJZEICAAAACkJfYXNzZXRfaWQAAAAAC2tleUJhbGFuY2VBAgAAAA9BX2Fzc2V0X2JhbGFuY2UAAAAAC2tleUJhbGFuY2VCAgAAAA9CX2Fzc2V0X2JhbGFuY2UAAAAAD2tleVNoYXJlQXNzZXRJZAIAAAAOc2hhcmVfYXNzZXRfaWQAAAAAE2tleVNoYXJlQXNzZXRTdXBwbHkCAAAAEnNoYXJlX2Fzc2V0X3N1cHBseQAAAAANa2V5Q29tbWlzc2lvbgIAAAAKY29tbWlzc2lvbgAAAAAba2V5Q29tbWlzc2lvblNjYWxlRGVsaW1pdGVyAgAAABpjb21taXNzaW9uX3NjYWxlX2RlbGltaXRlcgAAAAAIa2V5Q2F1c2UCAAAADnNodXRkb3duX2NhdXNlAAAAAAxhZG1pblB1YktleTEBAAAAIATPdeVk0MEPTme5HxNkxBoN6oQkQjF9M5BdQFgKnZNKAAAAAAxhZG1pblB1YktleTIBAAAAIATPdeVk0MEPTme5HxNkxBoN6oQkQjF9M5BdQFgKnZNKAAAAAAxhZG1pblB1YktleTMBAAAAIATPdeVk0MEPTme5HxNkxBoN6oQkQjF9M5BdQFgKnZNKAAAAABRhZG1pblB1YktleVN0YXJ0U3RvcAEAAAAgBM915WTQwQ9OZ7kfE2TEGg3qhCRCMX0zkF1AWAqdk0oAAAAAEmFkbWluUHViS2V5U3Rha2luZwEAAAAgBM915WTQwQ9OZ7kfE2TEGg3qhCRCMX0zkF1AWAqdk0oAAAAAEWdvdmVybmFuY2VBZGRyZXNzCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFU3z1Ll4lYWd4V4ORRC1bdPXpfvbV/hSGJAAAAAA5zdGFraW5nQWRkcmVzcwkBAAAAB0FkZHJlc3MAAAABAQAAABoBVLmJzc9HcbqXcuy4RQ8zsKpJhdENeDICbQAAAAAEVVNETgEAAAAgbySjyqsw3FIpmOgsYVruWn8jTcItdbvpnapU4NLQB8EAAAAAEHN0YWtpbmdGZWVJblVTRE4JAABoAAAAAgAAAAAAAAAACQkBAAAABXZhbHVlAAAAAQgJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAAEVVNETgAAAA9taW5TcG9uc29yZWRGZWUAAAAACGlzQWN0aXZlCQEAAAARQGV4dHJOYXRpdmUoMTA1MSkAAAACBQAAAAR0aGlzBQAAAAlrZXlBY3RpdmUAAAAAC3N0ckFzc2V0SWRBCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzBQAAAAtrZXlBc3NldElkQQAAAAALc3RyQXNzZXRJZEIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMFAAAAC2tleUFzc2V0SWRCAAAAAAhhc3NldElkQQMJAAAAAAAAAgUAAAALc3RyQXNzZXRJZEECAAAABVdBVkVTBQAAAAR1bml0CQACWQAAAAEFAAAAC3N0ckFzc2V0SWRBAAAAAAhhc3NldElkQgMJAAAAAAAAAgUAAAALc3RyQXNzZXRJZEICAAAABVdBVkVTBQAAAAR1bml0CQACWQAAAAEFAAAAC3N0ckFzc2V0SWRCAAAAAAphc3NldE5hbWVBBAAAAAckbWF0Y2gwBQAAAAhhc3NldElkQQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAACaWQFAAAAByRtYXRjaDAICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAAAmlkAAAABG5hbWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAABXdhdmVzBQAAAAckbWF0Y2gwAgAAAAVXQVZFUwkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgAAAAAKYXNzZXROYW1lQgQAAAAHJG1hdGNoMAUAAAAIYXNzZXRJZEIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACkJ5dGVWZWN0b3IEAAAAAmlkBQAAAAckbWF0Y2gwCAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAAJpZAAAAARuYW1lAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BAAAAAV3YXZlcwUAAAAHJG1hdGNoMAIAAAAFV0FWRVMJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IAAAAACGJhbGFuY2VBCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzBQAAAAtrZXlCYWxhbmNlQQAAAAAIYmFsYW5jZUIJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMFAAAAC2tleUJhbGFuY2VCAAAAAAxzaGFyZUFzc2V0SWQJAAJZAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwUAAAAPa2V5U2hhcmVBc3NldElkAAAAABBzaGFyZUFzc2V0U3VwcGx5CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzBQAAABNrZXlTaGFyZUFzc2V0U3VwcGx5AAAAAApjb21taXNzaW9uAAAAAAAAAAu4AAAAABRjb21taXNzaW9uR292ZXJuYW5jZQAAAAAAAAAEsAAAAAAYY29tbWlzc2lvblNjYWxlRGVsaW1pdGVyAAAAAAAAD0JAAAAAAAtzY2FsZVZhbHVlMwAAAAAAAAAD6AAAAAALc2NhbGVWYWx1ZTgAAAAAAAX14QAAAAAAGnNsaXBwYWdlVG9sZXJhbmNlRGVsaW1pdGVyAAAAAAAAAAPoAAAAABFzY2FsZVZhbHVlOERpZ2l0cwAAAAAAAAAACAEAAAAOYWNjb3VudEJhbGFuY2UAAAABAAAAB2Fzc2V0SWQEAAAAByRtYXRjaDAFAAAAB2Fzc2V0SWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACkJ5dGVWZWN0b3IEAAAAAmlkBQAAAAckbWF0Y2gwCQAD8AAAAAIFAAAABHRoaXMFAAAAAmlkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BAAAAAV3YXZlcwUAAAAHJG1hdGNoMAgJAAPvAAAAAQUAAAAEdGhpcwAAAAlhdmFpbGFibGUJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IAAAAAEHN0YWtlZEFtb3VudFVTRE4EAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAOc3Rha2luZ0FkZHJlc3MJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADHJwZF9iYWxhbmNlXwkAAlgAAAABBQAAAARVU0ROAgAAAAFfCQAEJQAAAAEFAAAABHRoaXMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAAGc3Rha2VkBQAAAAckbWF0Y2gwBQAAAAZzdGFrZWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAAB25vdGhpbmcFAAAAByRtYXRjaDAAAAAAAAAAAAAJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IAAAAAEWF2YWlsYWJsZUJhbGFuY2VBCQAAZQAAAAIFAAAACGJhbGFuY2VBAwkAAAAAAAACBQAAAAhhc3NldElkQQUAAAAEVVNETgUAAAAQc3Rha2VkQW1vdW50VVNETgAAAAAAAAAAAAAAAAARYXZhaWxhYmxlQmFsYW5jZUIJAABlAAAAAgUAAAAIYmFsYW5jZUIDCQAAAAAAAAIFAAAACGFzc2V0SWRCBQAAAARVU0ROBQAAABBzdGFrZWRBbW91bnRVU0ROAAAAAAAAAAAAAAAAABlhY2NvdW50QmFsYW5jZVdpdGhTdGFrZWRBCQAAZAAAAAIJAQAAAA5hY2NvdW50QmFsYW5jZQAAAAEFAAAACGFzc2V0SWRBAwkAAAAAAAACBQAAAAhhc3NldElkQQUAAAAEVVNETgUAAAAQc3Rha2VkQW1vdW50VVNETgAAAAAAAAAAAAAAAAAZYWNjb3VudEJhbGFuY2VXaXRoU3Rha2VkQgkAAGQAAAACCQEAAAAOYWNjb3VudEJhbGFuY2UAAAABBQAAAAhhc3NldElkQgMJAAAAAAAAAgUAAAAIYXNzZXRJZEIFAAAABFVTRE4FAAAAEHN0YWtlZEFtb3VudFVTRE4AAAAAAAAAAAAAAAAAEGhhc0Vub3VnaEJhbGFuY2UDCQAAZwAAAAIFAAAAGWFjY291bnRCYWxhbmNlV2l0aFN0YWtlZEEFAAAACGJhbGFuY2VBCQAAZwAAAAIFAAAAGWFjY291bnRCYWxhbmNlV2l0aFN0YWtlZEIFAAAACGJhbGFuY2VCBwEAAAAMZ2V0QXNzZXRJbmZvAAAAAQAAAAdhc3NldElkBAAAAAckbWF0Y2gwBQAAAAdhc3NldElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAJpZAUAAAAHJG1hdGNoMAQAAAAI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Z0VudHJ5AAAAAgUAAAALa2V5QXNzZXRJZEIFAAAADnBtdFN0ckFzc2V0SWRCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQUAAAAKcG10QW1vdW50QQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAALa2V5QmFsYW5jZUIFAAAACnBtdEFtb3VudEIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADWtleUNvbW1pc3Npb24FAAAACmNvbW1pc3Npb24JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAG2tleUNvbW1pc3Npb25TY2FsZURlbGltaXRlcgUAAAAYY29tbWlzc2lvblNjYWxlRGVsaW1pdGVyCQAETAAAAAIFAAAACnNoYXJlSXNzdWUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAPa2V5U2hhcmVBc3NldElkCQACWAAAAAEFAAAADHNoYXJlSXNzdWVJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAATa2V5U2hhcmVBc3NldFN1cHBseQUAAAASc2hhcmVJbml0aWFsU3VwcGx5CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAASc2hhcmVJbml0aWFsU3VwcGx5BQAAAAxzaGFyZUlzc3VlSWQFAAAAA25pbAAAAAFpAQAAABZyZXBsZW5pc2hXaXRoVHdvVG9rZW5zAAAAAQAAABFzbGlwcGFnZVRvbGVyYW5jZQQAAAALcG10QXNzZXRJZEEICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAAC3BtdEFzc2V0SWRCCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQAAAAdhc3NldElkBAAAAApwbXRBbW91bnRBCQEAAAAQZGVkdWN0U3Rha2luZ0ZlZQAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAUAAAALcG10QXNzZXRJZEEEAAAACnBtdEFtb3VudEIJAQAAABBkZWR1Y3RTdGFraW5nRmVlAAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEAAAAGYW1vdW50BQAAAAtwbXRBc3NldElkQgQAAAAKdG9rZW5SYXRpbwkAAGsAAAADCQAAawAAAAMFAAAACGJhbGFuY2VBBQAAAAtzY2FsZVZhbHVlOAUAAAAKcG10QW1vdW50QQUAAAALc2NhbGVWYWx1ZTMJAABrAAAAAwUAAAAIYmFsYW5jZUIFAAAAC3NjYWxlVmFsdWU4BQAAAApwbXRBbW91bnRCBAAAABNyYXRpb1NoYXJlVG9rZW5zSW5BCQAAawAAAAMFAAAACnBtdEFtb3VudEEFAAAAC3NjYWxlVmFsdWU4BQAAAAhiYWxhbmNlQQQAAAATcmF0aW9TaGFyZVRva2Vuc0luQgkAAGsAAAADBQAAAApwbXRBbW91bnRCBQAAAAtzY2FsZVZhbHVlOAUAAAAIYmFsYW5jZUIEAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAkAAGsAAAADCQABlwAAAAEJAARMAAAAAgUAAAATcmF0aW9TaGFyZVRva2Vuc0luQQkABEwAAAACBQAAABNyYXRpb1NoYXJlVG9rZW5zSW5CBQAAAANuaWwFAAAAEHNoYXJlQXNzZXRTdXBwbHkFAAAAC3NjYWxlVmFsdWU4AwkBAAAAASEAAAABBQAAAAhpc0FjdGl2ZQkAAAIAAAABAgAAAB9EQXBwIGlzIGluYWN0aXZlIGF0IHRoaXMgbW9tZW50AwMJAABmAAAAAgAAAAAAAAAAAAUAAAARc2xpcHBhZ2VUb2xlcmFuY2UGCQAAZgAAAAIFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBQAAABpzbGlwcGFnZVRvbGVyYW5jZURlbGltaXRlcgkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAClTbGlwcGFnZSB0b2xlcmFuY2UgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIAkAAaQAAAABBQAAABpzbGlwcGFnZVRvbGVyYW5jZURlbGltaXRlcgIAAAAWIGluY2x1c2l2ZWx5LiBBY3R1YWw6IAkAAaQAAAABBQAAABFzbGlwcGFnZVRvbGVyYW5jZQMJAQAAAAIhPQAAAAIJAAGQAAAAAQgF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YXNzZXRJZEECAAAAASAFAAAACmFzc2V0TmFtZUECAAAAAiwgCQABpAAAAAEJAQAAAA5hY2NvdW50QmFsYW5jZQAAAAEFAAAACGFzc2V0SWRCAgAAAAEgBQAAAAphc3NldE5hbWVCAwMJAABmAAAAAgUAAAAMYW1vdW50VG9QYXlBBQAAABFhdmFpbGFibGVCYWxhbmNlQQYJAABmAAAAAgUAAAAMYW1vdW50VG9QYXlCBQAAABFhdmFpbGFibGVCYWxhbmNlQgkBAAAAInRocm93SW5zdWZmaWNpZW50QXZhaWxhYmxlQmFsYW5jZXMAAAACBQAAAAxhbW91bnRUb1BheUEFAAAADGFtb3VudFRvUGF5QgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAALa2V5QmFsYW5jZUEJAABlAAAAAgUAAAAIYmFsYW5jZUEFAAAADGFtb3VudFRvUGF5QQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAALa2V5QmFsYW5jZUIJAABlAAAAAgUAAAAIYmFsYW5jZUIFAAAADGFtb3VudFRvUGF5QgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAATa2V5U2hhcmVBc3NldFN1cHBseQkAAGUAAAACBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAAAlwbXRBbW91bnQJAARMAAAAAgkBAAAABEJ1cm4AAAACBQAAAAxzaGFyZUFzc2V0SWQFAAAACXBtdEFtb3VudAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAADGFtb3VudFRvUGF5QQUAAAAIYXNzZXRJZEEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAxhbW91bnRUb1BheUIFAAAACGFzc2V0SWRCBQAAAANuaWwAAAABaQEAAAAIZXhjaGFuZ2UAAAABAAAAEm1pbkFtb3VudFRvUmVjZWl2ZQQAAAANJHQwMTA4MDcxMDg4MgkABRQAAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAACXBtdEFtb3VudAgFAAAADSR0MDEwODA3MTA4ODIAAAACXzEEAAAACnBtdEFzc2V0SWQIBQAAAA0kdDAxMDgwNzEwODgyAAAAAl8yCgEAAAANY2FsY3VsYXRlRmVlcwAAAAIAAAAJdG9rZW5Gcm9tAAAAB3Rva2VuVG8EAAAAEGFtb3VudFdpdGhvdXRGZWUJAABrAAAAAwUAAAAHdG9rZW5UbwUAAAAJcG10QW1vdW50CQAAZAAAAAIFAAAACXBtdEFtb3VudAUAAAAJdG9rZW5Gcm9tBAAAAA1hbW91bnRXaXRoRmVlCQAAawAAAAMFAAAAEGFtb3VudFdpdGhvdXRGZWUJAABlAAAAAgUAAAAYY29tbWlzc2lvblNjYWxlRGVsaW1pdGVyBQAAAApjb21taXNzaW9uBQAAABhjb21taXNzaW9uU2NhbGVEZWxpbWl0ZXIEAAAAEGdvdmVybmFuY2VSZXdhcmQJAABrAAAAAwUAAAAQYW1vdW50V2l0aG91dEZlZQUAAAAUY29tbWlzc2lvbkdvdmVybmFuY2UFAAAAGGNvbW1pc3Npb25TY2FsZURlbGltaXRlcgMJAABmAAAAAgUAAAASbWluQW1vdW50VG9SZWNlaXZlBQAAAA1hbW91bnRXaXRoRmVlCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAHUNhbGN1bGF0ZWQgYW1vdW50IHRvIHJlY2VpdmUgCQABpAAAAAEFAAAADWFtb3VudFdpdGhGZWUCAAAAICBpcyBsZXNzIHRoYW4gc3BlY2lmaWVkIG1pbmltdW0gCQABpAAAAAEFAAAAEm1pbkFtb3VudFRvUmVjZWl2ZQkABRUAAAADBQAAABBhbW91bnRXaXRob3V0RmVlBQAAAA1hbW91bnRXaXRoRmVlBQAAABBnb3Zlcm5hbmNlUmV3YXJkAwkBAAAAASEAAAABBQAAAAhpc0FjdGl2ZQkAAAIAAAABAgAAAB9EQXBwIGlzIGluYWN0aXZlIGF0IHRoaXMgbW9tZW50AwkAAGcAAAACAAAAAAAAAAAABQAAABJtaW5BbW91bnRUb1JlY2VpdmUJAAACAAAAAQkAASwAAAACAgAAADRNaW5pbWFsIGFtb3VudCB0byByZWNlaXZlIG11c3QgYmUgcG9zaXRpdmUuIEFjdHVhbDogCQABpAAAAAEFAAAAEm1pbkFtb3VudFRvUmVjZWl2ZQMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEJAAACAAAAAQIAAAAdT25lIGF0dGFjaGVkIHBheW1lbnQgZXhwZWN0ZWQDCQEAAAABIQAAAAEFAAAAEGhhc0Vub3VnaEJhbGFuY2UJAQAAAAdzdXNwZW5kAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAjU3VzcGljaW91cyBzdGF0ZS4gQWN0dWFsIGJhbGFuY2VzOiAJAAGkAAAAAQUAAAAIYmFsYW5jZUECAAAAASAFAAAACmFzc2V0TmFtZUECAAAAAiwgCQABpAAAAAEFAAAACGJhbGFuY2VCAgAAAAEgBQAAAAphc3NldE5hbWVCAgAAAAkuIFN0YXRlOiAJAAGkAAAAAQkBAAAADmFjY291bnRCYWxhbmNlAAAAAQUAAAAIYXNzZXRJZEECAAAAASAFAAAACmFzc2V0TmFtZUECAAAAAiwgCQABpAAAAAEJAQAAAA5hY2NvdW50QmFsYW5jZQAAAAEFAAAACGFzc2V0SWRCAgAAAAEgBQAAAAphc3NldE5hbWVCAwkAAAAAAAACBQAAAApwbXRBc3NldElkBQAAAAhhc3NldElkQQQAAAALYXNzZXRJZFNlbmQFAAAACGFzc2V0SWRCBAAAAA0kdDAxMjI0MTEyMzMyCQEAAAANY2FsY3VsYXRlRmVlcwAAAAIFAAAACGJhbGFuY2VBBQAAAAhiYWxhbmNlQgQAAAAQYW1vdW50V2l0aG91dEZlZQgFAAAADSR0MDEyMjQxMTIzMzIAAAACXzEEAAAADWFtb3VudFdpdGhGZWUIBQAAAA0kdDAxMjI0MTEyMzMyAAAAAl8yBAAAABBnb3Zlcm5hbmNlUmV3YXJkCAUAAAANJHQwMTIyNDExMjMzMgAAAAJfMwQAAAALbmV3QmFsYW5jZUEJAABkAAAAAgUAAAAIYmFsYW5jZUEFAAAACXBtdEFtb3VudAQAAAALbmV3QmFsYW5jZUIJAABlAAAAAgkAAGUAAAACBQAAAAhiYWxhbmNlQgUAAAANYW1vdW50V2l0aEZlZQUAAAAQZ292ZXJuYW5jZVJld2FyZAMDAwkAAAAAAAACBQAAAAhhc3NldElkQQUAAAAEVVNETgkAAGcAAAACBQAAABBzdGFrZWRBbW91bnRVU0ROBQAAAAtuZXdCYWxhbmNlQQcGAwkAAAAAAAACBQAAAAhhc3NldElkQgUAAAAEVVNETgkAAGcAAAACBQAAABBzdGFrZWRBbW91bnRVU0ROBQAAAAtuZXdCYWxhbmNlQgcJAQAAACF0aHJvd0luc3VmZmljaWVudEF2YWlsYWJsZUJhbGFuY2UAAAADBQAAAA1hbW91bnRXaXRoRmVlBQAAABFhdmFpbGFibGVCYWxhbmNlQgUAAAAKYXNzZXROYW1lQgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAALa2V5QmFsYW5jZUEFAAAAC25ld0JhbGFuY2VBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQgUAAAALbmV3QmFsYW5jZUIJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAA1hbW91bnRXaXRoRmVlBQAAAAthc3NldElkU2VuZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAABFnb3Zlcm5hbmNlQWRkcmVzcwUAAAAQZ292ZXJuYW5jZVJld2FyZAUAAAALYXNzZXRJZFNlbmQFAAAAA25pbAMJAAAAAAAAAgUAAAAKcG10QXNzZXRJZAUAAAAIYXNzZXRJZEIEAAAAC2Fzc2V0SWRTZW5kBQAAAAhhc3NldElkQQQAAAANJHQwMTMyMDUxMzI5NgkBAAAADWNhbGN1bGF0ZUZlZXMAAAACBQAAAAhiYWxhbmNlQgUAAAAIYmFsYW5jZUEEAAAAEGFtb3VudFdpdGhvdXRGZWUIBQAAAA0kdDAxMzIwNTEzMjk2AAAAAl8xBAAAAA1hbW91bnRXaXRoRmVlCAUAAAANJHQwMTMyMDUxMzI5NgAAAAJfMgQAAAAQZ292ZXJuYW5jZVJld2FyZAgFAAAADSR0MDEzMjA1MTMyOTYAAAACXzMEAAAAC25ld0JhbGFuY2VBCQAAZQAAAAIJAABlAAAAAgUAAAAIYmFsYW5jZUEFAAAADWFtb3VudFdpdGhGZWUFAAAAEGdvdmVybmFuY2VSZXdhcmQEAAAAC25ld0JhbGFuY2VCCQAAZAAAAAIFAAAACGJhbGFuY2VCBQAAAAlwbXRBbW91bnQDAwMJAAAAAAAAAgUAAAAIYXNzZXRJZEEFAAAABFVTRE4JAABnAAAAAgUAAAAQc3Rha2VkQW1vdW50VVNETgUAAAALbmV3QmFsYW5jZUEHBgMJAAAAAAAAAgUAAAAIYXNzZXRJZEIFAAAABFVTRE4JAABnAAAAAgUAAAAQc3Rha2VkQW1vdW50VVNETgUAAAALbmV3QmFsYW5jZUIHCQEAAAAhdGhyb3dJbnN1ZmZpY2llbnRBdmFpbGFibGVCYWxhbmNlAAAAAwUAAAANYW1vdW50V2l0aEZlZQUAAAARYXZhaWxhYmxlQmFsYW5jZUEFAAAACmFzc2V0TmFtZUEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VBBQAAAAtuZXdCYWxhbmNlQQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAALa2V5QmFsYW5jZUIFAAAAC25ld0JhbGFuY2VCCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAANYW1vdW50V2l0aEZlZQUAAAALYXNzZXRJZFNlbmQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAARZ292ZXJuYW5jZUFkZHJlc3MFAAAAEGdvdmVybmFuY2VSZXdhcmQFAAAAC2Fzc2V0SWRTZW5kBQAAAANuaWwJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAkSW5jb3JyZWN0IGFzc2V0IGF0dGFjaGVkLiBFeHBlY3RlZDogBQAAAAtzdHJBc3NldElkQQIAAAAEIG9yIAUAAAALc3RyQXNzZXRJZEIAAAABaQEAAAAIc2h1dGRvd24AAAAAAwkBAAAAASEAAAABBQAAAAhpc0FjdGl2ZQkAAAIAAAABCQABLAAAAAICAAAAIkRBcHAgaXMgYWxyZWFkeSBzdXNwZW5kZWQuIENhdXNlOiAJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAAIa2V5Q2F1c2UCAAAAGnRoZSBjYXVzZSB3YXNuJ3Qgc3BlY2lmaWVkAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwkABEwAAAACBQAAABRhZG1pblB1YktleVN0YXJ0U3RvcAUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAAhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uCQEAAAAHc3VzcGVuZAAAAAECAAAAD1BhdXNlZCBieSBhZG1pbgAAAAFpAQAAAAhhY3RpdmF0ZQAAAAADBQAAAAhpc0FjdGl2ZQkAAAIAAAABAgAAABZEQXBwIGlzIGFscmVhZHkgYWN0aXZlAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwkABEwAAAACBQAAABRhZG1pblB1YktleVN0YXJ0U3RvcAUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAAhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAAlrZXlBY3RpdmUGCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAACGtleUNhdXNlBQAAAANuaWwAAAABaQEAAAAZdGFrZUludG9BY2NvdW50RXh0cmFGdW5kcwAAAAEAAAALYW1vdW50TGVhdmUEAAAAHXVuY291bnRhYmxlQW1vdW50RW5yb2xsQXNzZXRBCQAAZQAAAAIFAAAAGWFjY291bnRCYWxhbmNlV2l0aFN0YWtlZEEFAAAACGJhbGFuY2VBBAAAAB11bmNvdW50YWJsZUFtb3VudEVucm9sbEFzc2V0QgkAAGUAAAACBQAAABlhY2NvdW50QmFsYW5jZVdpdGhTdGFrZWRCBQAAAAhiYWxhbmNlQgQAAAANYW1vdW50RW5yb2xsQQkAAGUAAAACBQAAAB11bmNvdW50YWJsZUFtb3VudEVucm9sbEFzc2V0QQMJAAAAAAAAAgUAAAAIYXNzZXRJZEEFAAAABFVTRE4FAAAAC2Ftb3VudExlYXZlAAAAAAAAAAAABAAAAA1hbW91bnRFbnJvbGxCCQAAZQAAAAIFAAAAHXVuY291bnRhYmxlQW1vdW50RW5yb2xsQXNzZXRCAwkAAAAAAAACBQAAAAhhc3NldElkQgUAAAAEVVNETgUAAAALYW1vdW50TGVhdmUAAAAAAAAAAAADCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAArT25seSB0aGUgREFwcCBpdHNlbGYgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgMJAABmAAAAAgAAAAAAAAAAAAUAAAALYW1vdW50TGVhdmUJAAACAAAAAQkAASwAAAACAgAAADNBcmd1bWVudCAnYW1vdW50TGVhdmUnIGNhbm5vdCBiZSBuZWdhdGl2ZS4gQWN0dWFsOiAJAAGkAAAAAQUAAAALYW1vdW50TGVhdmUDAwkAAGYAAAACAAAAAAAAAAAABQAAAB11bmNvdW50YWJsZUFtb3VudEVucm9sbEFzc2V0QQYJAABmAAAAAgAAAAAAAAAAAAUAAAAddW5jb3VudGFibGVBbW91bnRFbnJvbGxBc3NldEIJAQAAAAdzdXNwZW5kAAAAAQIAAAAWRW5yb2xsIGFtb3VudCBuZWdhdGl2ZQMDCQAAZgAAAAIAAAAAAAAAAAAFAAAADWFtb3VudEVucm9sbEEGCQAAZgAAAAIAAAAAAAAAAAAFAAAADWFtb3VudEVucm9sbEIJAAACAAAAAQIAAAAVVG9vIGxhcmdlIGFtb3VudExlYXZlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQkAAGQAAAACBQAAAAhiYWxhbmNlQQUAAAANYW1vdW50RW5yb2xsQQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAALa2V5QmFsYW5jZUIJAABkAAAAAgUAAAAIYmFsYW5jZUIFAAAADWFtb3VudEVucm9sbEIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAAMbGFzdF9pbmNvbWVfBQAAAAtzdHJBc3NldElkQQUAAAANYW1vdW50RW5yb2xsQQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACAgAAAAxsYXN0X2luY29tZV8FAAAAC3N0ckFzc2V0SWRCBQAAAA1hbW91bnRFbnJvbGxCBQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABAAAAAckbWF0Y2gwBQAAAAJ0eAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAXSW52b2tlU2NyaXB0VHJhbnNhY3Rpb24EAAAABmludm9rZQUAAAAHJG1hdGNoMAQAAAATY2FsbFRha2VJbnRvQWNjb3VudAMJAAAAAAAAAggFAAAABmludm9rZQAAAARkQXBwBQAAAAR0aGlzCQAAAAAAAAIIBQAAAAZpbnZva2UAAAAIZnVuY3Rpb24CAAAAGXRha2VJbnRvQWNjb3VudEV4dHJhRnVuZHMHBAAAAAtjYWxsU3Rha2luZwMJAAAAAAAAAggFAAAABmludm9rZQAAAARkQXBwBQAAAA5zdGFraW5nQWRkcmVzcwMDAwkAAAAAAAACCAUAAAAGaW52b2tlAAAACGZ1bmN0aW9uAgAAAAxsb2NrTmV1dHJpbm8JAAAAAAAAAgkAAZAAAAABCAUAAAAGaW52b2tlAAAACHBheW1lbnRzAAAAAAAAAAABBwkAAAAAAAACCAkAAZEAAAACCAUAAAAGaW52b2tlAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQFAAAABFVTRE4HBgMJAAAAAAAAAggFAAAABmludm9rZQAAAAhmdW5jdGlvbgIAAAAOdW5sb2NrTmV1dHJpbm8JAAAAAAAAAgkAAZAAAAABCAUAAAAGaW52b2tlAAAACHBheW1lbnRzAAAAAAAAAAAABwcEAAAADXNpZ25lZEJ5QWRtaW4DAwMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAABQAAAAxhZG1pblB1YktleTEGCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAAMYWRtaW5QdWJLZXkyBgkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAFAAAADGFkbWluUHViS2V5MwYJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAABQAAABJhZG1pblB1YktleVN0YWtpbmcDBQAAABNjYWxsVGFrZUludG9BY2NvdW50BgUAAAALY2FsbFN0YWtpbmcJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5tf5rZA==", "height": 1464797, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2KpywD9ZTExTSbp5XBeFruo52nGKsGDiWJJeNNgifsH9 Next: 3Hy5xeUQU913zh36UtTvQFyYANpC5RcEyJ4ssSX8tEHs Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = "2.0.0"
4+let a = "1.0.0"
55
66 let b = "version"
77
2323
2424 let k = "commission_scale_delimiter"
2525
26-let l = "invariant"
26+let l = "shutdown_cause"
2727
28-let m = "shutdown_cause"
28+let m = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
2929
30-let n = base58'DXDY2itiEcYBtGkVLnkpHtDFyWQUkoLJz79uJ7ECbMrA'
30+let n = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
3131
32-let o = base58'E6Wa1SGoktYcjHjsKrvjMiqJY3SWmGKcD8Q5L8kxSPS7'
32+let o = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
3333
34-let p = base58'AZmWJtuy4GeVrMmJH4hfFBRApe1StvhJSk4jcbT6bArQ'
34+let p = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
3535
36-let q = base58'EtVkT6ed8GtbUiVVEqdmEqsp2J4qbb3rre2HFgxeVYdg'
36+let q = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
3737
38-let r = base58'Czn4yoAuUZCVCLJDRfskn8URfkwpknwBTZDbs1wFrY7h'
38+let r = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
3939
40-let s = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
40+let s = Address(base58'3N6q7sCGSSLBUXDdjBdYGTJbZGZfhhh8cNg')
4141
42-let t = Address(base58'3ND2G6RdHNnSNUzyPsWhQ6L7pEUUAyfrWzo')
42+let t = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
4343
44-let u = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
44+let u = (9 * value(value(assetInfo(t)).minSponsoredFee))
4545
46-let v = (9 * value(value(assetInfo(u)).minSponsoredFee))
46+let v = getBooleanValue(this, c)
4747
48-let w = getBooleanValue(this, c)
48+let w = getStringValue(this, d)
4949
50-let x = getStringValue(this, d)
50+let x = getStringValue(this, e)
5151
52-let y = getStringValue(this, e)
52+let y = if ((w == "WAVES"))
53+ then unit
54+ else fromBase58String(w)
5355
5456 let z = if ((x == "WAVES"))
5557 then unit
5658 else fromBase58String(x)
5759
58-let A = if ((y == "WAVES"))
59- then unit
60- else fromBase58String(y)
61-
62-let B = {
63- let C = z
64- if ($isInstanceOf(C, "ByteVector"))
60+let A = {
61+ let B = y
62+ if ($isInstanceOf(B, "ByteVector"))
6563 then {
66- let D = C
67- value(assetInfo(D)).name
64+ let C = B
65+ value(assetInfo(C)).name
6866 }
69- else if ($isInstanceOf(C, "Unit"))
67+ else if ($isInstanceOf(B, "Unit"))
7068 then {
71- let E = C
69+ let D = B
7270 "WAVES"
7371 }
7472 else throw("Match error")
7573 }
7674
77-let F = {
78- let C = A
79- if ($isInstanceOf(C, "ByteVector"))
75+let E = {
76+ let B = z
77+ if ($isInstanceOf(B, "ByteVector"))
8078 then {
81- let D = C
82- value(assetInfo(D)).name
79+ let C = B
80+ value(assetInfo(C)).name
8381 }
84- else if ($isInstanceOf(C, "Unit"))
82+ else if ($isInstanceOf(B, "Unit"))
8583 then {
86- let E = C
84+ let D = B
8785 "WAVES"
8886 }
8987 else throw("Match error")
9088 }
9189
92-let G = getIntegerValue(this, f)
90+let F = getIntegerValue(this, f)
9391
94-let H = getIntegerValue(this, g)
92+let G = getIntegerValue(this, g)
9593
96-let I = fromBase58String(getStringValue(this, h))
94+let H = fromBase58String(getStringValue(this, h))
9795
98-let J = getIntegerValue(this, i)
96+let I = getIntegerValue(this, i)
9997
100-let K = getIntegerValue(this, l)
98+let J = 3000
10199
102-let L = 500
100+let K = 1200
103101
104-let M = 200
102+let L = 1000000
105103
106-let N = 1000000
104+let M = 1000
105+
106+let N = 100000000
107107
108108 let O = 1000
109109
110-let P = 100000000
110+let P = 8
111111
112-let Q = 1000000000000
113-
114-let R = 1000
115-
116-let S = 8
117-
118-let T = 50
119-
120-let U = 100
121-
122-let V = 90000000
123-
124-let W = 110000000
125-
126-let X = 50
127-
128-let Y = 2
129-
130-let Z = 46000000
131-
132-func aa (ab) = {
133- let C = ab
134- if ($isInstanceOf(C, "ByteVector"))
112+func Q (R) = {
113+ let B = R
114+ if ($isInstanceOf(B, "ByteVector"))
135115 then {
136- let D = C
137- assetBalance(this, D)
116+ let C = B
117+ assetBalance(this, C)
138118 }
139- else if ($isInstanceOf(C, "Unit"))
119+ else if ($isInstanceOf(B, "Unit"))
140120 then {
141- let E = C
121+ let D = B
142122 wavesBalance(this).available
143123 }
144124 else throw("Match error")
145125 }
146126
147127
148-let ac = {
149- let C = getInteger(t, ((("rpd_balance_" + toBase58String(u)) + "_") + toString(this)))
150- if ($isInstanceOf(C, "Int"))
128+let S = {
129+ let B = getInteger(s, ((("rpd_balance_" + toBase58String(t)) + "_") + toString(this)))
130+ if ($isInstanceOf(B, "Int"))
151131 then {
152- let ad = C
153- ad
132+ let T = B
133+ T
154134 }
155- else if ($isInstanceOf(C, "Unit"))
135+ else if ($isInstanceOf(B, "Unit"))
156136 then {
157- let ae = C
137+ let U = B
158138 0
159139 }
160140 else throw("Match error")
161141 }
162142
163-let af = (G - (if ((z == u))
164- then ac
143+let V = (F - (if ((y == t))
144+ then S
165145 else 0))
166146
167-let ag = (H - (if ((A == u))
168- then ac
147+let W = (G - (if ((z == t))
148+ then S
169149 else 0))
170150
171-let ah = (aa(z) + (if ((z == u))
172- then ac
151+let X = (Q(y) + (if ((y == t))
152+ then S
173153 else 0))
174154
175-let ai = (aa(A) + (if ((A == u))
176- then ac
155+let Y = (Q(z) + (if ((z == t))
156+ then S
177157 else 0))
178158
179-let aj = if ((ah >= G))
180- then (ai >= H)
159+let Z = if ((X >= F))
160+ then (Y >= G)
181161 else false
182162
183-func ak (al,am) = (((fraction(Q, al, am) + fraction(Q, am, al)) / 2) / 10000)
184-
185-
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)))
189- }
190-
191-
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))
163+func aa (R) = {
164+ let B = R
165+ if ($isInstanceOf(B, "ByteVector"))
204166 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
167+ let C = B
168+ let ab = toBase58String(C)
169+ let ac = valueOrErrorMessage(assetInfo(C), (("Asset " + ab) + " doesn't exist"))
170+ $Tuple3(ab, ac.name, ac.decimals)
212171 }
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)
255- else false)
256- then aq
257- else aD
258- }
259-
260-
261-func aN (ab) = {
262- let C = ab
263- if ($isInstanceOf(C, "ByteVector"))
264- then {
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)
269- }
270- else if ($isInstanceOf(C, "Unit"))
172+ else if ($isInstanceOf(B, "Unit"))
271173 then {
272- let E = C
174+ let D = B
273175 $Tuple3("WAVES", "WAVES", 8)
274176 }
275177 else throw("Match error")
276178 }
277179
278180
279-func aQ (aR) = [BooleanEntry(c, false), StringEntry(m, aR)]
181+func ad (ae) = [BooleanEntry(c, false), StringEntry(l, ae)]
280182
281183
282-func aS (aT,ab) = if ((ab == u))
184+func af (ag,R) = if ((R == t))
283185 then {
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
186+ let ah = (ag - u)
187+ if ((0 >= ah))
188+ then throw((((("Insufficient amount " + toString(ag)) + " to deduct staking fee ") + toString(u)) + " USD-N"))
189+ else ah
288190 }
289- else aT
191+ else ag
290192
291193
292-func aV () = throw("DApp is already active")
194+func ai (ag,aj,ak) = throw((((((((("Insufficient DApp balance to pay " + toString(ag)) + " ") + ak) + " due to staking. Available: ") + toString(aj)) + " ") + ak) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
293195
294196
295-func aW () = throw("DApp is inactive at this moment")
197+func al (am,an) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(am)) + " ") + A) + " and ") + toString(an)) + " ") + E) + " due to staking. Available: ") + toString(V)) + " ") + A) + " and ") + toString(W)) + " ") + E) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
296198
297199
298-func aX () = throw("Only admin can call this function")
299-
300-
301-func aY () = throw(((("Incorrect assets attached. Expected: " + x) + " and ") + y))
302-
303-
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))
305-
306-
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"))
308-
309-
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"))
311-
312-
313-func bh () = aQ(((((((((((((((("Suspicious state. Actual balances: " + toString(G)) + " ") + B) + ", ") + toString(H)) + " ") + F) + ". State: ") + toString(aa(z))) + " ") + B) + ", ") + toString(aa(A))) + " ") + F))
314-
315-
316-@Callable(bi)
200+@Callable(ao)
317201 func init () = {
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
202+ let ap = $Tuple2(ao.payments[0].amount, ao.payments[0].assetId)
203+ let aq = ap._1
204+ let ar = ap._2
205+ let as = $Tuple2(ao.payments[1].amount, ao.payments[1].assetId)
206+ let at = as._1
207+ let au = as._2
208+ let av = aa(ar)
209+ let aw = av._1
210+ let ax = av._2
211+ let ay = av._3
212+ let az = aa(au)
213+ let aA = az._1
214+ let aB = az._2
215+ let aC = az._3
332216 if (isDefined(getBoolean(this, c)))
333- then aV()
334- else if ((bl == bo))
217+ then throw("DApp is already active")
218+ else if ((ar == au))
335219 then throw("Assets must be different")
336220 else {
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)]
221+ let aD = ((("s" + take(ax, 7)) + "_") + take(aB, 7))
222+ let aE = ((((("ShareToken of SwopFi protocol for " + ax) + " and ") + aB) + " at address ") + toString(this))
223+ let aF = ((ay + aC) / 2)
224+ let aG = fraction(pow(aq, ay, 5, 1, ay, HALFDOWN), pow(at, aC, 5, 1, aC, HALFDOWN), pow(10, 0, aF, 0, 0, HALFDOWN))
225+ let aH = Issue(aD, aE, aG, aF, true)
226+ let aI = calculateAssetId(aH)
227+[StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aw), StringEntry(e, aA), IntegerEntry(f, aq), IntegerEntry(g, at), IntegerEntry(j, J), IntegerEntry(k, L), aH, StringEntry(h, toBase58String(aI)), IntegerEntry(i, aG), ScriptTransfer(ao.caller, aG, aI)]
345228 }
346229 }
347230
348231
349232
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))
233+@Callable(ao)
234+func replenishWithTwoTokens (aJ) = {
235+ let ar = ao.payments[0].assetId
236+ let au = ao.payments[1].assetId
237+ let aq = af(ao.payments[0].amount, ar)
238+ let at = af(ao.payments[1].amount, au)
239+ let aK = fraction(fraction(F, N, aq), M, fraction(G, N, at))
240+ let aL = fraction(aq, N, F)
241+ let aM = fraction(at, N, G)
242+ let aN = fraction(min([aL, aM]), I, N)
243+ if (!(v))
244+ then throw("DApp is inactive at this moment")
245+ else if (if ((0 > aJ))
364246 then true
365- else (bE > 10))
366- then throw("Slippage tolerance must be <= 1%")
367- else if ((size(bi.payments) != 2))
247+ else (aJ > O))
248+ then throw(((("Slippage tolerance must be between 0 and " + toString(O)) + " inclusively. Actual: ") + toString(aJ)))
249+ else if ((size(ao.payments) != 2))
368250 then throw("Two attached assets expected")
369- else if (if ((bl != z))
251+ else if (if ((ar != y))
370252 then true
371- else (bo != A))
372- then aY()
373- else if (if ((((O * (R - bE)) / R) > bF))
253+ else (au != z))
254+ then throw(((("Incorrect assets attached. Expected: " + w) + " and ") + x))
255+ else if (if ((((M * (O - aJ)) / O) > aK))
374256 then true
375- else (bF > ((O * (R + bE)) / R)))
257+ else (aK > ((M * (O + aJ)) / O)))
376258 then throw("Incorrect assets amount: amounts must have the contract ratio")
377- else if ((bI == 0))
259+ else if ((aN == 0))
378260 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)]
261+ else if (!(Z))
262+ then ad(((((((((((((((("Suspicious state. Actual balances: " + toString(F)) + " ") + A) + ", ") + toString(G)) + " ") + E) + ". State: ") + toString(Q(y))) + " ") + A) + ", ") + toString(Q(z))) + " ") + E))
263+ else [IntegerEntry(f, (F + aq)), IntegerEntry(g, (G + at)), IntegerEntry(i, (I + aN)), Reissue(H, aN, true), ScriptTransfer(ao.caller, aN, H)]
382264 }
383265
384266
385267
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- let bU = (P + ((P * 1) / 10000000))
400- if (!(w))
401- then aW()
402- else if ((bO > bM))
403- then throw((((("Payment amount " + toString(bM)) + " does not exceed the minimum amount of ") + toString(bO)) + " tokens"))
404- else if ((size(bi.payments) != 1))
405- then throw("One attached payment expected")
406- else if (!(aj))
407- then bh()
408- else if (if ((bN != z))
409- then (bN != A)
410- else false)
411- then aY()
412- else {
413- let bV = if ((bN == z))
414- then $Tuple7((bM - bJ), bK, (G + bJ), (H - bK), an((G + bM), H), (G + bM), H)
415- else $Tuple7(bK, (bM - bJ), (G - bK), (H + bJ), an(G, (H + bM)), G, (H + bM))
416- let bW = bV._1
417- let bX = bV._2
418- let bY = bV._3
419- let bZ = bV._4
420- let bD = bV._5
421- let ca = bV._6
422- let cb = bV._7
423- let cc = if ((bN == z))
424- then IntegerEntry(f, ca)
425- else IntegerEntry(g, cb)
426- let aw = an(bY, bZ)
427- let ax = fraction(P, K, aw)
428- let cd = (fraction((P * P), bY, bZ) / fraction(P, bW, bX))
429- let ce = fraction((ca + cb), T, (2 * U))
430- if (if ((bT >= ax))
431- then true
432- else (K > aw))
433- then throw("Incorrect virtualSwapTokenPay or virtualSwapTokenGet value")
434- else if (if ((bR > cd))
435- then true
436- else (cd > bS))
437- then throw("Swap with virtualSwapTokenPay and virtualSwapTokenGet is possible, but ratio after virtual swap is incorrect")
438- else if (if ((ce > ca))
439- then true
440- else (ce > cb))
441- then aZ(ce, ca, cb)
442- else {
443- let bG = fraction(aS(bW, z), P, bY)
444- let bH = fraction(aS(bX, A), P, bZ)
445- let bI = fraction(min([bG, bH]), J, P)
446-[Reissue(I, bI, true), ScriptTransfer(bi.caller, bI, I), IntegerEntry(i, (J + bI)), cc, IntegerEntry(l, bD)]
447- }
448- }
268+@Callable(ao)
269+func withdraw () = {
270+ let aO = $Tuple2(ao.payments[0].amount, ao.payments[0].assetId)
271+ let aP = aO._1
272+ let aQ = aO._2
273+ let aR = af(fraction(aP, F, I), y)
274+ let aS = af(fraction(aP, G, I), z)
275+ if (!(v))
276+ then throw("DApp is inactive at this moment")
277+ else if ((size(ao.payments) != 1))
278+ then throw("One attached payment expected")
279+ else if ((aQ != H))
280+ then throw(("Incorrect asset attached. Expected: " + toBase58String(H)))
281+ else if (!(Z))
282+ then ad(((((((((((((((("Suspicious state. Actual balances: " + toString(F)) + " ") + A) + ", ") + toString(G)) + " ") + E) + ". State: ") + toString(Q(y))) + " ") + A) + ", ") + toString(Q(z))) + " ") + E))
283+ else if (if ((aR > V))
284+ then true
285+ else (aS > W))
286+ then al(aR, aS)
287+ else [IntegerEntry(f, (F - aR)), IntegerEntry(g, (G - aS)), IntegerEntry(i, (I - aP)), Burn(H, aP), ScriptTransfer(ao.caller, aR, y), ScriptTransfer(ao.caller, aS, z)]
449288 }
450289
451290
452291
453-@Callable(bi)
454-func withdraw () = {
455- let cf = $Tuple2(bi.payments[0].amount, bi.payments[0].assetId)
456- let bM = cf._1
457- let bN = cf._2
458- let cg = aS(fraction(bM, G, J), z)
459- let ch = aS(fraction(bM, H, J), A)
460- let bD = an((G - cg), (H - ch))
461- if (!(w))
462- then aW()
463- else if ((size(bi.payments) != 1))
464- then throw("One attached payment expected")
465- else if ((bN != I))
466- then throw(("Incorrect asset attached. Expected: " + toBase58String(I)))
467- else if (!(aj))
468- then bh()
469- else if (if ((cg > af))
470- then true
471- else (ch > ag))
472- then bg(cg, ch)
473- else [IntegerEntry(f, (G - cg)), IntegerEntry(g, (H - ch)), IntegerEntry(i, (J - bM)), IntegerEntry(l, bD), Burn(I, bM), ScriptTransfer(bi.caller, cg, z), ScriptTransfer(bi.caller, ch, A)]
292+@Callable(ao)
293+func exchange (aT) = {
294+ let aU = $Tuple2(ao.payments[0].amount, ao.payments[0].assetId)
295+ let aP = aU._1
296+ let aQ = aU._2
297+ func aV (aW,aX) = {
298+ let aY = fraction(aX, aP, (aP + aW))
299+ let aZ = fraction(aY, (L - J), L)
300+ let ba = fraction(aY, K, L)
301+ if ((aT > aZ))
302+ then throw(((("Calculated amount to receive " + toString(aZ)) + " is less than specified minimum ") + toString(aT)))
303+ else $Tuple3(aY, aZ, ba)
304+ }
305+
306+ if (!(v))
307+ then throw("DApp is inactive at this moment")
308+ else if ((0 >= aT))
309+ then throw(("Minimal amount to receive must be positive. Actual: " + toString(aT)))
310+ else if ((size(ao.payments) != 1))
311+ then throw("One attached payment expected")
312+ else if (!(Z))
313+ then ad(((((((((((((((("Suspicious state. Actual balances: " + toString(F)) + " ") + A) + ", ") + toString(G)) + " ") + E) + ". State: ") + toString(Q(y))) + " ") + A) + ", ") + toString(Q(z))) + " ") + E))
314+ else if ((aQ == y))
315+ then {
316+ let bb = z
317+ let bc = aV(F, G)
318+ let aY = bc._1
319+ let aZ = bc._2
320+ let ba = bc._3
321+ let bd = (F + aP)
322+ let be = ((G - aZ) - ba)
323+ if (if (if ((y == t))
324+ then (S >= bd)
325+ else false)
326+ then true
327+ else if ((z == t))
328+ then (S >= be)
329+ else false)
330+ then ai(aZ, W, E)
331+ else [IntegerEntry(f, bd), IntegerEntry(g, be), ScriptTransfer(ao.caller, aZ, bb), ScriptTransfer(r, ba, bb)]
332+ }
333+ else if ((aQ == z))
334+ then {
335+ let bb = y
336+ let bf = aV(G, F)
337+ let aY = bf._1
338+ let aZ = bf._2
339+ let ba = bf._3
340+ let bd = ((F - aZ) - ba)
341+ let be = (G + aP)
342+ if (if (if ((y == t))
343+ then (S >= bd)
344+ else false)
345+ then true
346+ else if ((z == t))
347+ then (S >= be)
348+ else false)
349+ then ai(aZ, V, A)
350+ else [IntegerEntry(f, bd), IntegerEntry(g, be), ScriptTransfer(ao.caller, aZ, bb), ScriptTransfer(r, ba, bb)]
351+ }
352+ else throw(((("Incorrect asset attached. Expected: " + w) + " or ") + x))
474353 }
475354
476355
477356
478-@Callable(bi)
479-func exchange (ci,cj) = {
480- let ck = $Tuple2(bi.payments[0].amount, bi.payments[0].assetId)
481- let bM = ck._1
482- let bN = ck._2
483- if (!(w))
484- then aW()
485- else if ((0 >= ci))
486- then throw(("Estimated amount must be positive. Actual: " + toString(ci)))
487- else if ((cj > ci))
488- then throw(((("Minimal amount can't be greater than estimated. Estimated: " + toString(ci)) + ". Minimal: ") + toString(cj)))
489- else if ((size(bi.payments) != 1))
490- then throw("One attached payment expected")
491- else if (!(aj))
492- then bh()
493- else if (if ((bN != z))
494- then (bN != A)
495- else false)
496- then aY()
497- else if ((10000000 > bM))
498- then throw("Only swap of 10.000000 or more tokens is allowed")
499- else if (if ((V > fraction(P, cj, bM)))
500- then true
501- else (fraction(P, ci, bM) > W))
502- then throw("Incorrect args and pmt ratio")
503- else {
504- let cl = if ((bN == z))
505- then A
506- else z
507- let aT = ap(ci, cj, bM, bN)
508- let cm = fraction(aT, M, N)
509- let cn = fraction(aT, (N - L), N)
510- let co = if ((bN == z))
511- then $Tuple2((G + bM), ((H - cn) - cm))
512- else $Tuple2(((G - cn) - cm), (H + bM))
513- let ca = co._1
514- let cb = co._2
515- let ce = fraction((ca + cb), T, (2 * U))
516- if (if ((ce > ca))
517- then true
518- else (ce > cb))
519- then aZ(ce, ca, cb)
520- else if (if (if ((z == u))
521- then (cl == z)
522- else false)
523- then (ac >= ca)
524- else false)
525- then bd(cn, af, B)
526- else if (if (if ((A == u))
527- then (cl == A)
528- else false)
529- then (ac >= cb)
530- else false)
531- then bd(cn, ag, F)
532- else [IntegerEntry(f, ca), IntegerEntry(g, cb), IntegerEntry(l, an(ca, cb)), ScriptTransfer(bi.caller, cn, cl), ScriptTransfer(s, cm, cl)]
533- }
357+@Callable(ao)
358+func shutdown () = if (!(v))
359+ then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, l), "the cause wasn't specified")))
360+ else if (!(containsElement([m, n, o, p], ao.callerPublicKey)))
361+ then throw("Only admin can call this function")
362+ else ad("Paused by admin")
363+
364+
365+
366+@Callable(ao)
367+func activate () = if (v)
368+ then throw("DApp is already active")
369+ else if (!(containsElement([m, n, o, p], ao.callerPublicKey)))
370+ then throw("Only admin can call this function")
371+ else [BooleanEntry(c, true), DeleteEntry(l)]
372+
373+
374+
375+@Callable(ao)
376+func takeIntoAccountExtraFunds (bg) = {
377+ let bh = (X - F)
378+ let bi = (Y - G)
379+ let bj = (bh - (if ((y == t))
380+ then bg
381+ else 0))
382+ let bk = (bi - (if ((z == t))
383+ then bg
384+ else 0))
385+ if (!(v))
386+ then throw("DApp is inactive at this moment")
387+ else if ((ao.caller != this))
388+ then throw("Only the DApp itself can call this function")
389+ else if ((0 > bg))
390+ then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(bg)))
391+ else if (if ((0 > bh))
392+ then true
393+ else (0 > bi))
394+ then ad("Enroll amount negative")
395+ else if (if ((0 > bj))
396+ then true
397+ else (0 > bk))
398+ then throw("Too large amountLeave")
399+ else [IntegerEntry(f, (F + bj)), IntegerEntry(g, (G + bk)), IntegerEntry(("last_income_" + w), bj), IntegerEntry(("last_income_" + x), bk)]
534400 }
535401
536402
537-
538-@Callable(bi)
539-func shutdown () = if (!(w))
540- then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, m), "the cause wasn't specified")))
541- else if (!(containsElement([n, o, p, q], bi.callerPublicKey)))
542- then aX()
543- else aQ("Paused by admin")
544-
545-
546-
547-@Callable(bi)
548-func activate () = if (w)
549- then aV()
550- else if (!(containsElement([n, o, p, q], bi.callerPublicKey)))
551- then aX()
552- else [BooleanEntry(c, true), DeleteEntry(m)]
553-
554-
555-
556-@Callable(bi)
557-func takeIntoAccountExtraFunds (cp) = {
558- let cq = (ah - G)
559- let cr = (ai - H)
560- let cs = (cq - (if ((z == u))
561- then cp
562- else 0))
563- let ct = (cr - (if ((A == u))
564- then cp
565- else 0))
566- if (!(w))
567- then aW()
568- else if ((bi.caller != this))
569- then aX()
570- else if ((0 > cp))
571- then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(cp)))
572- else if (if ((0 > cq))
573- then true
574- else (0 > cr))
575- then aQ("Enroll amount negative")
576- else if (if ((0 > cs))
577- then true
578- else (0 > ct))
579- then throw("Too large amountLeave")
580- else [IntegerEntry(f, (G + cs)), IntegerEntry(g, (H + ct)), IntegerEntry(("last_income_" + x), cs), IntegerEntry(("last_income_" + y), ct)]
581- }
582-
583-
584-@Verifier(cu)
585-func cv () = {
586- let C = cu
587- if ($isInstanceOf(C, "InvokeScriptTransaction"))
403+@Verifier(bl)
404+func bm () = {
405+ let B = bl
406+ if ($isInstanceOf(B, "InvokeScriptTransaction"))
588407 then {
589- let cw = C
590- let cx = if ((cw.dApp == this))
591- then (cw.function == "takeIntoAccountExtraFunds")
408+ let bn = B
409+ let bo = if ((bn.dApp == this))
410+ then (bn.function == "takeIntoAccountExtraFunds")
592411 else false
593- let cy = if ((cw.dApp == t))
594- then if (if (if ((cw.function == "lockNeutrino"))
595- then (size(cw.payments) == 1)
412+ let bp = if ((bn.dApp == s))
413+ then if (if (if ((bn.function == "lockNeutrino"))
414+ then (size(bn.payments) == 1)
596415 else false)
597- then (cw.payments[0].assetId == u)
416+ then (bn.payments[0].assetId == t)
598417 else false)
599418 then true
600- else if ((cw.function == "unlockNeutrino"))
601- then (size(cw.payments) == 0)
419+ else if ((bn.function == "unlockNeutrino"))
420+ then (size(bn.payments) == 0)
602421 else false
603422 else false
604- let cz = if (if (if (sigVerify(cu.bodyBytes, cu.proofs[0], n))
423+ let bq = if (if (if (sigVerify(bl.bodyBytes, bl.proofs[0], m))
605424 then true
606- else sigVerify(cu.bodyBytes, cu.proofs[0], o))
425+ else sigVerify(bl.bodyBytes, bl.proofs[0], n))
607426 then true
608- else sigVerify(cu.bodyBytes, cu.proofs[0], p))
427+ else sigVerify(bl.bodyBytes, bl.proofs[0], o))
609428 then true
610- else sigVerify(cu.bodyBytes, cu.proofs[0], r)
611- if (cx)
429+ else sigVerify(bl.bodyBytes, bl.proofs[0], q)
430+ if (bo)
612431 then true
613- else cy
432+ else bp
614433 }
615- else sigVerify(cu.bodyBytes, cu.proofs[0], cu.senderPublicKey)
434+ else sigVerify(bl.bodyBytes, bl.proofs[0], bl.senderPublicKey)
616435 }
617436
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = "2.0.0"
4+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
26-let l = "invariant"
26+let l = "shutdown_cause"
2727
28-let m = "shutdown_cause"
28+let m = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
2929
30-let n = base58'DXDY2itiEcYBtGkVLnkpHtDFyWQUkoLJz79uJ7ECbMrA'
30+let n = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
3131
32-let o = base58'E6Wa1SGoktYcjHjsKrvjMiqJY3SWmGKcD8Q5L8kxSPS7'
32+let o = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
3333
34-let p = base58'AZmWJtuy4GeVrMmJH4hfFBRApe1StvhJSk4jcbT6bArQ'
34+let p = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
3535
36-let q = base58'EtVkT6ed8GtbUiVVEqdmEqsp2J4qbb3rre2HFgxeVYdg'
36+let q = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
3737
38-let r = base58'Czn4yoAuUZCVCLJDRfskn8URfkwpknwBTZDbs1wFrY7h'
38+let r = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
3939
40-let s = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
40+let s = Address(base58'3N6q7sCGSSLBUXDdjBdYGTJbZGZfhhh8cNg')
4141
42-let t = Address(base58'3ND2G6RdHNnSNUzyPsWhQ6L7pEUUAyfrWzo')
42+let t = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
4343
44-let u = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
44+let u = (9 * value(value(assetInfo(t)).minSponsoredFee))
4545
46-let v = (9 * value(value(assetInfo(u)).minSponsoredFee))
46+let v = getBooleanValue(this, c)
4747
48-let w = getBooleanValue(this, c)
48+let w = getStringValue(this, d)
4949
50-let x = getStringValue(this, d)
50+let x = getStringValue(this, e)
5151
52-let y = getStringValue(this, e)
52+let y = if ((w == "WAVES"))
53+ then unit
54+ else fromBase58String(w)
5355
5456 let z = if ((x == "WAVES"))
5557 then unit
5658 else fromBase58String(x)
5759
58-let A = if ((y == "WAVES"))
59- then unit
60- else fromBase58String(y)
61-
62-let B = {
63- let C = z
64- if ($isInstanceOf(C, "ByteVector"))
60+let A = {
61+ let B = y
62+ if ($isInstanceOf(B, "ByteVector"))
6563 then {
66- let D = C
67- value(assetInfo(D)).name
64+ let C = B
65+ value(assetInfo(C)).name
6866 }
69- else if ($isInstanceOf(C, "Unit"))
67+ else if ($isInstanceOf(B, "Unit"))
7068 then {
71- let E = C
69+ let D = B
7270 "WAVES"
7371 }
7472 else throw("Match error")
7573 }
7674
77-let F = {
78- let C = A
79- if ($isInstanceOf(C, "ByteVector"))
75+let E = {
76+ let B = z
77+ if ($isInstanceOf(B, "ByteVector"))
8078 then {
81- let D = C
82- value(assetInfo(D)).name
79+ let C = B
80+ value(assetInfo(C)).name
8381 }
84- else if ($isInstanceOf(C, "Unit"))
82+ else if ($isInstanceOf(B, "Unit"))
8583 then {
86- let E = C
84+ let D = B
8785 "WAVES"
8886 }
8987 else throw("Match error")
9088 }
9189
92-let G = getIntegerValue(this, f)
90+let F = getIntegerValue(this, f)
9391
94-let H = getIntegerValue(this, g)
92+let G = getIntegerValue(this, g)
9593
96-let I = fromBase58String(getStringValue(this, h))
94+let H = fromBase58String(getStringValue(this, h))
9795
98-let J = getIntegerValue(this, i)
96+let I = getIntegerValue(this, i)
9997
100-let K = getIntegerValue(this, l)
98+let J = 3000
10199
102-let L = 500
100+let K = 1200
103101
104-let M = 200
102+let L = 1000000
105103
106-let N = 1000000
104+let M = 1000
105+
106+let N = 100000000
107107
108108 let O = 1000
109109
110-let P = 100000000
110+let P = 8
111111
112-let Q = 1000000000000
113-
114-let R = 1000
115-
116-let S = 8
117-
118-let T = 50
119-
120-let U = 100
121-
122-let V = 90000000
123-
124-let W = 110000000
125-
126-let X = 50
127-
128-let Y = 2
129-
130-let Z = 46000000
131-
132-func aa (ab) = {
133- let C = ab
134- if ($isInstanceOf(C, "ByteVector"))
112+func Q (R) = {
113+ let B = R
114+ if ($isInstanceOf(B, "ByteVector"))
135115 then {
136- let D = C
137- assetBalance(this, D)
116+ let C = B
117+ assetBalance(this, C)
138118 }
139- else if ($isInstanceOf(C, "Unit"))
119+ else if ($isInstanceOf(B, "Unit"))
140120 then {
141- let E = C
121+ let D = B
142122 wavesBalance(this).available
143123 }
144124 else throw("Match error")
145125 }
146126
147127
148-let ac = {
149- let C = getInteger(t, ((("rpd_balance_" + toBase58String(u)) + "_") + toString(this)))
150- if ($isInstanceOf(C, "Int"))
128+let S = {
129+ let B = getInteger(s, ((("rpd_balance_" + toBase58String(t)) + "_") + toString(this)))
130+ if ($isInstanceOf(B, "Int"))
151131 then {
152- let ad = C
153- ad
132+ let T = B
133+ T
154134 }
155- else if ($isInstanceOf(C, "Unit"))
135+ else if ($isInstanceOf(B, "Unit"))
156136 then {
157- let ae = C
137+ let U = B
158138 0
159139 }
160140 else throw("Match error")
161141 }
162142
163-let af = (G - (if ((z == u))
164- then ac
143+let V = (F - (if ((y == t))
144+ then S
165145 else 0))
166146
167-let ag = (H - (if ((A == u))
168- then ac
147+let W = (G - (if ((z == t))
148+ then S
169149 else 0))
170150
171-let ah = (aa(z) + (if ((z == u))
172- then ac
151+let X = (Q(y) + (if ((y == t))
152+ then S
173153 else 0))
174154
175-let ai = (aa(A) + (if ((A == u))
176- then ac
155+let Y = (Q(z) + (if ((z == t))
156+ then S
177157 else 0))
178158
179-let aj = if ((ah >= G))
180- then (ai >= H)
159+let Z = if ((X >= F))
160+ then (Y >= G)
181161 else false
182162
183-func ak (al,am) = (((fraction(Q, al, am) + fraction(Q, am, al)) / 2) / 10000)
184-
185-
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)))
189- }
190-
191-
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))
163+func aa (R) = {
164+ let B = R
165+ if ($isInstanceOf(B, "ByteVector"))
204166 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
167+ let C = B
168+ let ab = toBase58String(C)
169+ let ac = valueOrErrorMessage(assetInfo(C), (("Asset " + ab) + " doesn't exist"))
170+ $Tuple3(ab, ac.name, ac.decimals)
212171 }
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)
255- else false)
256- then aq
257- else aD
258- }
259-
260-
261-func aN (ab) = {
262- let C = ab
263- if ($isInstanceOf(C, "ByteVector"))
264- then {
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)
269- }
270- else if ($isInstanceOf(C, "Unit"))
172+ else if ($isInstanceOf(B, "Unit"))
271173 then {
272- let E = C
174+ let D = B
273175 $Tuple3("WAVES", "WAVES", 8)
274176 }
275177 else throw("Match error")
276178 }
277179
278180
279-func aQ (aR) = [BooleanEntry(c, false), StringEntry(m, aR)]
181+func ad (ae) = [BooleanEntry(c, false), StringEntry(l, ae)]
280182
281183
282-func aS (aT,ab) = if ((ab == u))
184+func af (ag,R) = if ((R == t))
283185 then {
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
186+ let ah = (ag - u)
187+ if ((0 >= ah))
188+ then throw((((("Insufficient amount " + toString(ag)) + " to deduct staking fee ") + toString(u)) + " USD-N"))
189+ else ah
288190 }
289- else aT
191+ else ag
290192
291193
292-func aV () = throw("DApp is already active")
194+func ai (ag,aj,ak) = throw((((((((("Insufficient DApp balance to pay " + toString(ag)) + " ") + ak) + " due to staking. Available: ") + toString(aj)) + " ") + ak) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
293195
294196
295-func aW () = throw("DApp is inactive at this moment")
197+func al (am,an) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(am)) + " ") + A) + " and ") + toString(an)) + " ") + E) + " due to staking. Available: ") + toString(V)) + " ") + A) + " and ") + toString(W)) + " ") + E) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
296198
297199
298-func aX () = throw("Only admin can call this function")
299-
300-
301-func aY () = throw(((("Incorrect assets attached. Expected: " + x) + " and ") + y))
302-
303-
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))
305-
306-
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"))
308-
309-
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"))
311-
312-
313-func bh () = aQ(((((((((((((((("Suspicious state. Actual balances: " + toString(G)) + " ") + B) + ", ") + toString(H)) + " ") + F) + ". State: ") + toString(aa(z))) + " ") + B) + ", ") + toString(aa(A))) + " ") + F))
314-
315-
316-@Callable(bi)
200+@Callable(ao)
317201 func init () = {
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
202+ let ap = $Tuple2(ao.payments[0].amount, ao.payments[0].assetId)
203+ let aq = ap._1
204+ let ar = ap._2
205+ let as = $Tuple2(ao.payments[1].amount, ao.payments[1].assetId)
206+ let at = as._1
207+ let au = as._2
208+ let av = aa(ar)
209+ let aw = av._1
210+ let ax = av._2
211+ let ay = av._3
212+ let az = aa(au)
213+ let aA = az._1
214+ let aB = az._2
215+ let aC = az._3
332216 if (isDefined(getBoolean(this, c)))
333- then aV()
334- else if ((bl == bo))
217+ then throw("DApp is already active")
218+ else if ((ar == au))
335219 then throw("Assets must be different")
336220 else {
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)]
221+ let aD = ((("s" + take(ax, 7)) + "_") + take(aB, 7))
222+ let aE = ((((("ShareToken of SwopFi protocol for " + ax) + " and ") + aB) + " at address ") + toString(this))
223+ let aF = ((ay + aC) / 2)
224+ let aG = fraction(pow(aq, ay, 5, 1, ay, HALFDOWN), pow(at, aC, 5, 1, aC, HALFDOWN), pow(10, 0, aF, 0, 0, HALFDOWN))
225+ let aH = Issue(aD, aE, aG, aF, true)
226+ let aI = calculateAssetId(aH)
227+[StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aw), StringEntry(e, aA), IntegerEntry(f, aq), IntegerEntry(g, at), IntegerEntry(j, J), IntegerEntry(k, L), aH, StringEntry(h, toBase58String(aI)), IntegerEntry(i, aG), ScriptTransfer(ao.caller, aG, aI)]
345228 }
346229 }
347230
348231
349232
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))
233+@Callable(ao)
234+func replenishWithTwoTokens (aJ) = {
235+ let ar = ao.payments[0].assetId
236+ let au = ao.payments[1].assetId
237+ let aq = af(ao.payments[0].amount, ar)
238+ let at = af(ao.payments[1].amount, au)
239+ let aK = fraction(fraction(F, N, aq), M, fraction(G, N, at))
240+ let aL = fraction(aq, N, F)
241+ let aM = fraction(at, N, G)
242+ let aN = fraction(min([aL, aM]), I, N)
243+ if (!(v))
244+ then throw("DApp is inactive at this moment")
245+ else if (if ((0 > aJ))
364246 then true
365- else (bE > 10))
366- then throw("Slippage tolerance must be <= 1%")
367- else if ((size(bi.payments) != 2))
247+ else (aJ > O))
248+ then throw(((("Slippage tolerance must be between 0 and " + toString(O)) + " inclusively. Actual: ") + toString(aJ)))
249+ else if ((size(ao.payments) != 2))
368250 then throw("Two attached assets expected")
369- else if (if ((bl != z))
251+ else if (if ((ar != y))
370252 then true
371- else (bo != A))
372- then aY()
373- else if (if ((((O * (R - bE)) / R) > bF))
253+ else (au != z))
254+ then throw(((("Incorrect assets attached. Expected: " + w) + " and ") + x))
255+ else if (if ((((M * (O - aJ)) / O) > aK))
374256 then true
375- else (bF > ((O * (R + bE)) / R)))
257+ else (aK > ((M * (O + aJ)) / O)))
376258 then throw("Incorrect assets amount: amounts must have the contract ratio")
377- else if ((bI == 0))
259+ else if ((aN == 0))
378260 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)]
261+ else if (!(Z))
262+ then ad(((((((((((((((("Suspicious state. Actual balances: " + toString(F)) + " ") + A) + ", ") + toString(G)) + " ") + E) + ". State: ") + toString(Q(y))) + " ") + A) + ", ") + toString(Q(z))) + " ") + E))
263+ else [IntegerEntry(f, (F + aq)), IntegerEntry(g, (G + at)), IntegerEntry(i, (I + aN)), Reissue(H, aN, true), ScriptTransfer(ao.caller, aN, H)]
382264 }
383265
384266
385267
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- let bU = (P + ((P * 1) / 10000000))
400- if (!(w))
401- then aW()
402- else if ((bO > bM))
403- then throw((((("Payment amount " + toString(bM)) + " does not exceed the minimum amount of ") + toString(bO)) + " tokens"))
404- else if ((size(bi.payments) != 1))
405- then throw("One attached payment expected")
406- else if (!(aj))
407- then bh()
408- else if (if ((bN != z))
409- then (bN != A)
410- else false)
411- then aY()
412- else {
413- let bV = if ((bN == z))
414- then $Tuple7((bM - bJ), bK, (G + bJ), (H - bK), an((G + bM), H), (G + bM), H)
415- else $Tuple7(bK, (bM - bJ), (G - bK), (H + bJ), an(G, (H + bM)), G, (H + bM))
416- let bW = bV._1
417- let bX = bV._2
418- let bY = bV._3
419- let bZ = bV._4
420- let bD = bV._5
421- let ca = bV._6
422- let cb = bV._7
423- let cc = if ((bN == z))
424- then IntegerEntry(f, ca)
425- else IntegerEntry(g, cb)
426- let aw = an(bY, bZ)
427- let ax = fraction(P, K, aw)
428- let cd = (fraction((P * P), bY, bZ) / fraction(P, bW, bX))
429- let ce = fraction((ca + cb), T, (2 * U))
430- if (if ((bT >= ax))
431- then true
432- else (K > aw))
433- then throw("Incorrect virtualSwapTokenPay or virtualSwapTokenGet value")
434- else if (if ((bR > cd))
435- then true
436- else (cd > bS))
437- then throw("Swap with virtualSwapTokenPay and virtualSwapTokenGet is possible, but ratio after virtual swap is incorrect")
438- else if (if ((ce > ca))
439- then true
440- else (ce > cb))
441- then aZ(ce, ca, cb)
442- else {
443- let bG = fraction(aS(bW, z), P, bY)
444- let bH = fraction(aS(bX, A), P, bZ)
445- let bI = fraction(min([bG, bH]), J, P)
446-[Reissue(I, bI, true), ScriptTransfer(bi.caller, bI, I), IntegerEntry(i, (J + bI)), cc, IntegerEntry(l, bD)]
447- }
448- }
268+@Callable(ao)
269+func withdraw () = {
270+ let aO = $Tuple2(ao.payments[0].amount, ao.payments[0].assetId)
271+ let aP = aO._1
272+ let aQ = aO._2
273+ let aR = af(fraction(aP, F, I), y)
274+ let aS = af(fraction(aP, G, I), z)
275+ if (!(v))
276+ then throw("DApp is inactive at this moment")
277+ else if ((size(ao.payments) != 1))
278+ then throw("One attached payment expected")
279+ else if ((aQ != H))
280+ then throw(("Incorrect asset attached. Expected: " + toBase58String(H)))
281+ else if (!(Z))
282+ then ad(((((((((((((((("Suspicious state. Actual balances: " + toString(F)) + " ") + A) + ", ") + toString(G)) + " ") + E) + ". State: ") + toString(Q(y))) + " ") + A) + ", ") + toString(Q(z))) + " ") + E))
283+ else if (if ((aR > V))
284+ then true
285+ else (aS > W))
286+ then al(aR, aS)
287+ else [IntegerEntry(f, (F - aR)), IntegerEntry(g, (G - aS)), IntegerEntry(i, (I - aP)), Burn(H, aP), ScriptTransfer(ao.caller, aR, y), ScriptTransfer(ao.caller, aS, z)]
449288 }
450289
451290
452291
453-@Callable(bi)
454-func withdraw () = {
455- let cf = $Tuple2(bi.payments[0].amount, bi.payments[0].assetId)
456- let bM = cf._1
457- let bN = cf._2
458- let cg = aS(fraction(bM, G, J), z)
459- let ch = aS(fraction(bM, H, J), A)
460- let bD = an((G - cg), (H - ch))
461- if (!(w))
462- then aW()
463- else if ((size(bi.payments) != 1))
464- then throw("One attached payment expected")
465- else if ((bN != I))
466- then throw(("Incorrect asset attached. Expected: " + toBase58String(I)))
467- else if (!(aj))
468- then bh()
469- else if (if ((cg > af))
470- then true
471- else (ch > ag))
472- then bg(cg, ch)
473- else [IntegerEntry(f, (G - cg)), IntegerEntry(g, (H - ch)), IntegerEntry(i, (J - bM)), IntegerEntry(l, bD), Burn(I, bM), ScriptTransfer(bi.caller, cg, z), ScriptTransfer(bi.caller, ch, A)]
292+@Callable(ao)
293+func exchange (aT) = {
294+ let aU = $Tuple2(ao.payments[0].amount, ao.payments[0].assetId)
295+ let aP = aU._1
296+ let aQ = aU._2
297+ func aV (aW,aX) = {
298+ let aY = fraction(aX, aP, (aP + aW))
299+ let aZ = fraction(aY, (L - J), L)
300+ let ba = fraction(aY, K, L)
301+ if ((aT > aZ))
302+ then throw(((("Calculated amount to receive " + toString(aZ)) + " is less than specified minimum ") + toString(aT)))
303+ else $Tuple3(aY, aZ, ba)
304+ }
305+
306+ if (!(v))
307+ then throw("DApp is inactive at this moment")
308+ else if ((0 >= aT))
309+ then throw(("Minimal amount to receive must be positive. Actual: " + toString(aT)))
310+ else if ((size(ao.payments) != 1))
311+ then throw("One attached payment expected")
312+ else if (!(Z))
313+ then ad(((((((((((((((("Suspicious state. Actual balances: " + toString(F)) + " ") + A) + ", ") + toString(G)) + " ") + E) + ". State: ") + toString(Q(y))) + " ") + A) + ", ") + toString(Q(z))) + " ") + E))
314+ else if ((aQ == y))
315+ then {
316+ let bb = z
317+ let bc = aV(F, G)
318+ let aY = bc._1
319+ let aZ = bc._2
320+ let ba = bc._3
321+ let bd = (F + aP)
322+ let be = ((G - aZ) - ba)
323+ if (if (if ((y == t))
324+ then (S >= bd)
325+ else false)
326+ then true
327+ else if ((z == t))
328+ then (S >= be)
329+ else false)
330+ then ai(aZ, W, E)
331+ else [IntegerEntry(f, bd), IntegerEntry(g, be), ScriptTransfer(ao.caller, aZ, bb), ScriptTransfer(r, ba, bb)]
332+ }
333+ else if ((aQ == z))
334+ then {
335+ let bb = y
336+ let bf = aV(G, F)
337+ let aY = bf._1
338+ let aZ = bf._2
339+ let ba = bf._3
340+ let bd = ((F - aZ) - ba)
341+ let be = (G + aP)
342+ if (if (if ((y == t))
343+ then (S >= bd)
344+ else false)
345+ then true
346+ else if ((z == t))
347+ then (S >= be)
348+ else false)
349+ then ai(aZ, V, A)
350+ else [IntegerEntry(f, bd), IntegerEntry(g, be), ScriptTransfer(ao.caller, aZ, bb), ScriptTransfer(r, ba, bb)]
351+ }
352+ else throw(((("Incorrect asset attached. Expected: " + w) + " or ") + x))
474353 }
475354
476355
477356
478-@Callable(bi)
479-func exchange (ci,cj) = {
480- let ck = $Tuple2(bi.payments[0].amount, bi.payments[0].assetId)
481- let bM = ck._1
482- let bN = ck._2
483- if (!(w))
484- then aW()
485- else if ((0 >= ci))
486- then throw(("Estimated amount must be positive. Actual: " + toString(ci)))
487- else if ((cj > ci))
488- then throw(((("Minimal amount can't be greater than estimated. Estimated: " + toString(ci)) + ". Minimal: ") + toString(cj)))
489- else if ((size(bi.payments) != 1))
490- then throw("One attached payment expected")
491- else if (!(aj))
492- then bh()
493- else if (if ((bN != z))
494- then (bN != A)
495- else false)
496- then aY()
497- else if ((10000000 > bM))
498- then throw("Only swap of 10.000000 or more tokens is allowed")
499- else if (if ((V > fraction(P, cj, bM)))
500- then true
501- else (fraction(P, ci, bM) > W))
502- then throw("Incorrect args and pmt ratio")
503- else {
504- let cl = if ((bN == z))
505- then A
506- else z
507- let aT = ap(ci, cj, bM, bN)
508- let cm = fraction(aT, M, N)
509- let cn = fraction(aT, (N - L), N)
510- let co = if ((bN == z))
511- then $Tuple2((G + bM), ((H - cn) - cm))
512- else $Tuple2(((G - cn) - cm), (H + bM))
513- let ca = co._1
514- let cb = co._2
515- let ce = fraction((ca + cb), T, (2 * U))
516- if (if ((ce > ca))
517- then true
518- else (ce > cb))
519- then aZ(ce, ca, cb)
520- else if (if (if ((z == u))
521- then (cl == z)
522- else false)
523- then (ac >= ca)
524- else false)
525- then bd(cn, af, B)
526- else if (if (if ((A == u))
527- then (cl == A)
528- else false)
529- then (ac >= cb)
530- else false)
531- then bd(cn, ag, F)
532- else [IntegerEntry(f, ca), IntegerEntry(g, cb), IntegerEntry(l, an(ca, cb)), ScriptTransfer(bi.caller, cn, cl), ScriptTransfer(s, cm, cl)]
533- }
357+@Callable(ao)
358+func shutdown () = if (!(v))
359+ then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, l), "the cause wasn't specified")))
360+ else if (!(containsElement([m, n, o, p], ao.callerPublicKey)))
361+ then throw("Only admin can call this function")
362+ else ad("Paused by admin")
363+
364+
365+
366+@Callable(ao)
367+func activate () = if (v)
368+ then throw("DApp is already active")
369+ else if (!(containsElement([m, n, o, p], ao.callerPublicKey)))
370+ then throw("Only admin can call this function")
371+ else [BooleanEntry(c, true), DeleteEntry(l)]
372+
373+
374+
375+@Callable(ao)
376+func takeIntoAccountExtraFunds (bg) = {
377+ let bh = (X - F)
378+ let bi = (Y - G)
379+ let bj = (bh - (if ((y == t))
380+ then bg
381+ else 0))
382+ let bk = (bi - (if ((z == t))
383+ then bg
384+ else 0))
385+ if (!(v))
386+ then throw("DApp is inactive at this moment")
387+ else if ((ao.caller != this))
388+ then throw("Only the DApp itself can call this function")
389+ else if ((0 > bg))
390+ then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(bg)))
391+ else if (if ((0 > bh))
392+ then true
393+ else (0 > bi))
394+ then ad("Enroll amount negative")
395+ else if (if ((0 > bj))
396+ then true
397+ else (0 > bk))
398+ then throw("Too large amountLeave")
399+ else [IntegerEntry(f, (F + bj)), IntegerEntry(g, (G + bk)), IntegerEntry(("last_income_" + w), bj), IntegerEntry(("last_income_" + x), bk)]
534400 }
535401
536402
537-
538-@Callable(bi)
539-func shutdown () = if (!(w))
540- then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, m), "the cause wasn't specified")))
541- else if (!(containsElement([n, o, p, q], bi.callerPublicKey)))
542- then aX()
543- else aQ("Paused by admin")
544-
545-
546-
547-@Callable(bi)
548-func activate () = if (w)
549- then aV()
550- else if (!(containsElement([n, o, p, q], bi.callerPublicKey)))
551- then aX()
552- else [BooleanEntry(c, true), DeleteEntry(m)]
553-
554-
555-
556-@Callable(bi)
557-func takeIntoAccountExtraFunds (cp) = {
558- let cq = (ah - G)
559- let cr = (ai - H)
560- let cs = (cq - (if ((z == u))
561- then cp
562- else 0))
563- let ct = (cr - (if ((A == u))
564- then cp
565- else 0))
566- if (!(w))
567- then aW()
568- else if ((bi.caller != this))
569- then aX()
570- else if ((0 > cp))
571- then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(cp)))
572- else if (if ((0 > cq))
573- then true
574- else (0 > cr))
575- then aQ("Enroll amount negative")
576- else if (if ((0 > cs))
577- then true
578- else (0 > ct))
579- then throw("Too large amountLeave")
580- else [IntegerEntry(f, (G + cs)), IntegerEntry(g, (H + ct)), IntegerEntry(("last_income_" + x), cs), IntegerEntry(("last_income_" + y), ct)]
581- }
582-
583-
584-@Verifier(cu)
585-func cv () = {
586- let C = cu
587- if ($isInstanceOf(C, "InvokeScriptTransaction"))
403+@Verifier(bl)
404+func bm () = {
405+ let B = bl
406+ if ($isInstanceOf(B, "InvokeScriptTransaction"))
588407 then {
589- let cw = C
590- let cx = if ((cw.dApp == this))
591- then (cw.function == "takeIntoAccountExtraFunds")
408+ let bn = B
409+ let bo = if ((bn.dApp == this))
410+ then (bn.function == "takeIntoAccountExtraFunds")
592411 else false
593- let cy = if ((cw.dApp == t))
594- then if (if (if ((cw.function == "lockNeutrino"))
595- then (size(cw.payments) == 1)
412+ let bp = if ((bn.dApp == s))
413+ then if (if (if ((bn.function == "lockNeutrino"))
414+ then (size(bn.payments) == 1)
596415 else false)
597- then (cw.payments[0].assetId == u)
416+ then (bn.payments[0].assetId == t)
598417 else false)
599418 then true
600- else if ((cw.function == "unlockNeutrino"))
601- then (size(cw.payments) == 0)
419+ else if ((bn.function == "unlockNeutrino"))
420+ then (size(bn.payments) == 0)
602421 else false
603422 else false
604- let cz = if (if (if (sigVerify(cu.bodyBytes, cu.proofs[0], n))
423+ let bq = if (if (if (sigVerify(bl.bodyBytes, bl.proofs[0], m))
605424 then true
606- else sigVerify(cu.bodyBytes, cu.proofs[0], o))
425+ else sigVerify(bl.bodyBytes, bl.proofs[0], n))
607426 then true
608- else sigVerify(cu.bodyBytes, cu.proofs[0], p))
427+ else sigVerify(bl.bodyBytes, bl.proofs[0], o))
609428 then true
610- else sigVerify(cu.bodyBytes, cu.proofs[0], r)
611- if (cx)
429+ else sigVerify(bl.bodyBytes, bl.proofs[0], q)
430+ if (bo)
612431 then true
613- else cy
432+ else bp
614433 }
615- else sigVerify(cu.bodyBytes, cu.proofs[0], cu.senderPublicKey)
434+ else sigVerify(bl.bodyBytes, bl.proofs[0], bl.senderPublicKey)
616435 }
617436

github/deemru/w8io/169f3d6 
114.43 ms