tx · FLmu9AAdpsEPykecoWP1TzWHaJBwuPGVBo7yUvnbMdHZ

3N5Xd7QVQZWntaJwha9Kg42is626GUPjtUW:  -0.01400000 Waves

2022.03.04 17:29 [1949350] smart account 3N5Xd7QVQZWntaJwha9Kg42is626GUPjtUW > SELF 0.00000000 Waves

{ "type": 13, "id": "FLmu9AAdpsEPykecoWP1TzWHaJBwuPGVBo7yUvnbMdHZ", "fee": 1400000, "feeAssetId": null, "timestamp": 1646404219523, "version": 2, "chainId": 84, "sender": "3N5Xd7QVQZWntaJwha9Kg42is626GUPjtUW", "senderPublicKey": "DfbjpZJBbZwnUKysUkxCbWTE1ZWuoUb6Y6BZdu5iAE8j", "proofs": [ "iTpESaMHH7gkLDcHm8zzjNTApSrfw6tbfg8mtEXGiZjR7ErkFwGZgYGFq2cMRSsf9FTe34vT5hoSNskF5zkhMvj", "Tzei6YmL6AZTAoJEzPW2G6YK9d7RnFM5fanX7PoifU17GZm1by4nHHQ2hFZytc31YmxCGhWXG8FcvhBANcjwe69" ], "script": "base64:AAIFAAAAAAAAACEIAhIAEgASBAoCAQESABIECgIBARIAEgASABIFCgMEAQgAAABSAAAAAAd2ZXJzaW9uAgAAAAUyLjAuMAAAAAAIa1ZlcnNpb24CAAAAB3ZlcnNpb24AAAAAB2tBY3RpdmUCAAAABmFjdGl2ZQAAAAAJa0Fzc2V0SWRBAgAAAApBX2Fzc2V0X2lkAAAAAAlrQXNzZXRJZEICAAAACkJfYXNzZXRfaWQAAAAACWtCYWxhbmNlQQIAAAAPQV9hc3NldF9iYWxhbmNlAAAAAAlrQmFsYW5jZUICAAAAD0JfYXNzZXRfYmFsYW5jZQAAAAANa1NoYXJlQXNzZXRJZAIAAAAOc2hhcmVfYXNzZXRfaWQAAAAAEWtTaGFyZUFzc2V0U3VwcGx5AgAAABJzaGFyZV9hc3NldF9zdXBwbHkAAAAABGtGZWUCAAAACmNvbW1pc3Npb24AAAAAEmtGZWVTY2FsZURlbGltaXRlcgIAAAAaY29tbWlzc2lvbl9zY2FsZV9kZWxpbWl0ZXIAAAAACmtJbnZhcmlhbnQCAAAACWludmFyaWFudAAAAAAGa0NhdXNlAgAAAA5zaHV0ZG93bl9jYXVzZQAAAAASa2V5VVNETk5TQlRBZGRyZXNzAgAAABhzdGFraW5nX3VzZG5uc2J0X2FkZHJlc3MAAAAADmtleUVVUk5BZGRyZXNzAgAAABRzdGFraW5nX2V1cm5fYWRkcmVzcwAAAAAPa2V5QWRtaW5QdWJLZXkxAgAAAAthZG1pbl9wdWJfMQAAAAAPa2V5QWRtaW5QdWJLZXkyAgAAAAthZG1pbl9wdWJfMgAAAAAPa2V5QWRtaW5QdWJLZXkzAgAAAAthZG1pbl9wdWJfMwAAAAAUVVNETlRvV2F2ZXNFeGNoYW5nZXIJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVS8ryzsOdh8IBeszy751tH1xSIv8ZigJPIAAAAABm9yYWNsZQkBAAAAB0FkZHJlc3MAAAABAQAAABoBVOlFqh6QLzqu8boO5i6akl8amITh82KzCAEAAAALZ2V0QWRtaW5QdWIAAAABAAAAC2tleUFkbWluUHViBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABm9yYWNsZQUAAAALa2V5QWRtaW5QdWIDCQAAAQAAAAIFAAAAByRtYXRj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QmFsYW5jZQAAAAEFAAAACGFzc2V0SWRCAgAAAAEgBQAAAAphc3NldE5hbWVCAQAAABhjYWxjU3Rha2luZ0Z1bmNBbmRBZGRyZXMAAAACAAAABXN0YWtlAAAAB2Fzc2V0SWQDBQAAAAVzdGFrZQMJAAAAAAAAAgUAAAAHYXNzZXRJZAUAAAAEVVNETgkABRQAAAACAgAAAAxsb2NrTmV1dHJpbm8FAAAAFnN0YWtpbmdVU0ROTlNCVEFkZHJlc3MJAAUUAAAAAgIAAAAMc3RhcnRTdGFraW5nBQAAABJzdGFraW5nRVVSTkFkZHJlc3MDCQAAAAAAAAIFAAAAB2Fzc2V0SWQFAAAABFVTRE4JAAUUAAAAAgIAAAAOdW5sb2NrTmV1dHJpbm8FAAAAFnN0YWtpbmdVU0ROTlNCVEFkZHJlc3MJAAUUAAAAAgIAAAALc3RvcFN0YWtpbmcFAAAAEnN0YWtpbmdFVVJOQWRkcmVzcwEAAAARY2FsY1N0YWtpbmdQYXJhbXMAAAADAAAABXN0YWtlAAAABmFtb3VudAAAAAdhc3NldElkAwUAAAAFc3Rha2UEAAAACyR0MDk3MTE5Nzc3CQEAAAAYY2FsY1N0YWtpbmdGdW5jQW5kQWRkcmVzAAAAAgUAAAAFc3Rha2UFAAAAB2Fzc2V0SWQEAAAABGNhbGwIBQAAAAskdDA5NzExOTc3NwAAAAJfMQQAAAALc3Rha2luZ0FkZHIIBQAAAAskdDA5NzExOTc3NwAAAAJfMgkABRYAAAAEBQAAAARjYWxsBQAAAAtzdGFraW5nQWRkcgUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAAdhc3NldElkBQAAAAZhbW91bnQFAAAAA25pbAQAAAALJHQwOTg2Mzk5MjkJAQAAABhjYWxjU3Rha2luZ0Z1bmNBbmRBZGRyZXMAAAACBQAAAAVzdGFrZQUAAAAHYXNzZXRJZAQAAAAEY2FsbAgFAAAACyR0MDk4NjM5OTI5AAAAAl8xBAAAAAtzdGFraW5nQWRkcggFAAAACyR0MDk4NjM5OTI5AAAAAl8yCQAFFgAAAAQFAAAABGNhbGwFAAAAC3N0YWtpbmdBZGRyCQAETAAAAAIFAAAABmFtb3VudAkABEwAAAACCQACWAAAAAEFAAAA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QW1vdW50BgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAUAAAAMc2hhcmVBc3NldElkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAGY2hhbmdlBQAAAA1jaGFuZ2VBc3NldElkBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAABVyZXBsZW5pc2hXaXRoT25lVG9rZW4AAAACAAAAE3ZpcnR1YWxTd2FwVG9rZW5QYXkAAAATdmlydHVhbFN3YXBUb2tlbkdldAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkBAAAACGlzQWN0aXZlAAAAAAQAAAANJHQwMTUyOTUxNTM3MAkABRQAAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAACXBtdEFtb3VudAgFAAAADSR0MDE1Mjk1MTUzNzAAAAACXzEEAAAACnBtdEFzc2V0SWQIBQAAAA0kdDAxNTI5NTE1MzcwAAAAAl8yBAAAAA0kdDAxNTM3NTE1NDQ4CQEAAAAMZ2V0QXNzZXRJbmZvAAAAAQUAAAAKcG10QXNzZXRJZAQAAAANcG10U3RyQXNzZXRJZAgFAAAADSR0MDE1Mzc1MTU0NDgAAAACXzEEAAAADHBtdEFzc2V0TmFtZQgFAAAADSR0MDE1Mzc1MTU0NDgAAAACXzIEAAAAC3BtdERlY2ltYWxzCAUAAAANJHQwMTUzNzUxNTQ0OAAAAAJfMwQAAAAPcG10TWluVGhyZXNob2xkAAAAAAAATEtABAAAAB10aHJlc2hvbGRWYWx1ZUZvck1pblRvbGVyYW5jZQAAAAAAAvrwgAQAAAAJdG9sZXJhbmNlAwkAAGYAAAACBQAAAB10aHJlc2hvbGRWYWx1ZUZvck1pblRvbGVyYW5jZQUAAAAJcG10QW1vdW50AAAAAAAAAYagAAAAAAAAAAABBAAAABxzbGlwcGFnZVZhbHVlTWluRm9yUmVwbGVuaXNoCQAAZQAAAAIFAAAABnNjYWxlOAkAAGkAAAACCQAAaAAAAAIFAAAABnNjYWxlOAUAAAAJdG9sZXJhbmNlAAAAAAAAmJaABAAAABxzbGlwcGFnZVZhbHVlTWF4Rm9yUmVwbGVuaXNoCQAAZAAAAAIFAAAABnNjYWxlOAkAAGkAAAACCQAAaAAAAAIFAAAABnNjYWxlOAUAAAAJdG9sZXJhbmNlAAAAAAAAmJaABAAAABdzbGlwcGFnZVZhbHVlTWluRm9yU3dhcAkAAGUAAAACBQAAAAZzY2FsZTgJAABpAAAAAgkAAGgAAAACBQAAAAZzY2FsZTgAAAAAAAAAAAEAAAAAAACYloADCQAAZgAAAAIFAAAAD3BtdE1pblRocmVzaG9sZAUAAAAJcG10QW1vdW50CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAPUGF5bWVudCBhbW91bnQgCQABpAAAAAEFAAAACXBtdEFtb3VudAIAAAAnIGRvZXMgbm90IGV4Y2VlZCB0aGUgbWluaW11bSBhbW91bnQgb2YgCQABpAAAAAEFAAAAD3BtdE1pblRocmVzaG9sZAIAAAAHIHRva2VucwMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEJAQAAAA90aHJvd09uZVBheW1lbnQAAAAAAwkBAAAAASEAAAABBQAAABBoYXNFbm91Z2hCYWxhbmNlCQAETgAAAAIJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAlwbXRBbW91bnQFAAAACnBtdEFzc2V0SWQFAAAAA25pbAkBAAAAEXN1c3BlbmRTdXNwaWNpb3VzAAAAAAMDCQEAAAACIT0AAAACBQAAAApwbXRBc3NldElkBQAAAAhhc3NldElkQQkBAAAAAiE9AAAAAgUAAAAKcG10QXNzZXRJZAUAAAAIYXNzZXRJZEIHCQEAAAALdGhyb3dBc3NldHMAAAAABAAAAA0kdDAxNjM4NjE3MTUxAwkAAAAAAAACBQAAAApwbXRBc3NldElkBQAAAAhhc3NldElkQQkABRkAAAAHCQAAZQAAAAIFAAAACXBtdEFtb3VudAUAAAATdmlydHVhbFN3YXBUb2tlblBheQUAAAATdmlydHVhbFN3YXBUb2tlbkdldAkAAGQAAAACBQAAAAhiYWxhbmNlQQUAAAATdmlydHVhbFN3YXBUb2tlblBheQkAAGUAAAACBQAAAAhiYWxhbmNlQgUAAAATdmlydHVhbFN3YXBUb2tlbkdldAkBAAAADWludmFyaWFudENhbGMAAAACCQAAZAAAAAIFAAAACGJhbGFuY2VBBQAAAAlwbXRBbW91bnQFAAAACGJhbGFuY2VCCQAAZAAAAAIFAAAACGJhbGFuY2VBBQAAAAlwbXRBbW91bnQFAAAACGJhbGFuY2VCCQAFGQAAAAcFAAAAE3ZpcnR1YWxTd2FwVG9rZW5HZXQJAABlAAAAAgUAAAAJcG10QW1vdW50BQAAABN2aXJ0dWFsU3dhcFRva2VuUGF5CQAAZQAAAAIFAAAACGJhbGFuY2VBBQAAABN2aXJ0dWFsU3dhcFRva2VuR2V0CQAAZAAAAAIFAAAACGJhbGFuY2VCBQAAABN2aXJ0dWFsU3dhcFRva2VuUGF5CQEAAAANaW52YXJpYW50Q2FsYwAAAAIFAAAACGJhbGFuY2VBCQAAZAAAAAIFAAAACGJhbGFuY2VCBQAAAAlwbXRBbW91bnQFAAAACGJhbGFuY2VBCQAAZAAAAAIFAAAACGJhbGFuY2VCBQAAAAlwbXRBbW91bnQEAAAAEXZpcnR1YWxSZXBsZW5pc2hBCAUAAAANJHQwMTYzODYxNzE1MQAAAAJfMQQAAAARdmlydHVhbFJlcGxlbmlzaEIIBQAAAA0kdDAxNjM4NjE3MTUxAAAAAl8yBAAAABFiYWxhbmNlQWZ0ZXJTd2FwQQgFAAAADSR0MDE2Mzg2MTcxNTEAAAACXzMEAAAAEWJhbGFuY2VBZnRlclN3YXBCCAUAAAANJHQwMTYzODYxNzE1MQAAAAJfNAQAAAATaW52YXJpYW50Q2FsY3VsYXRlZAgFAAAADSR0MDE2Mzg2MTcxNTEAAAACXzUEAAAAC25ld0JhbGFuY2VBCAUAAAANJHQwMTYzODYxNzE1MQAAAAJfNgQAAAALbmV3QmFsYW5jZUIIBQAAAA0kdDAxNjM4NjE3MTUxAAAAAl83BAAAAA9uZXdCYWxhbmNlRW50cnkDCQAAAAAAAAIFAAAACnBtdEFzc2V0SWQFAAAACGFzc2V0SWRBCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAJa0JhbGFuY2VBBQAAAAtuZXdCYWxhbmNlQQkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACWtCYWxhbmNlQgUAAAALbmV3QmFsYW5jZUIEAAAADGludmFyaWFudE5ldwkBAAAADWludmFyaWFudENhbGMAAAACBQAAABFiYWxhbmNlQWZ0ZXJTd2FwQQUAAAARYmFsYW5jZUFmdGVyU3dhcEIEAAAAF2ludmFyaWFudEVzdGltYXRlZFJhdGlvCQAAawAAAAMFAAAABnNjYWxlOAUAAAAJaW52YXJpYW50BQAAAAxpbnZhcmlhbnROZXcEAAAAJXJhdGlvVmlydHVhbEJhbGFuY2VUb1ZpcnR1YWxSZXBsZW5pc2gJAABpAAAAAgkAAGsAAAADCQAAaAAAAAIFAAAABnNjYWxlOAUAAAAGc2NhbGU4BQAAABFiYWxhbmNlQWZ0ZXJTd2FwQQUAAAARYmFsYW5jZUFmdGVyU3dhcEIJAABrAAAAAwUAAAAGc2NhbGU4BQAAABF2aXJ0dWFsUmVwbGVuaXNoQQUAAAARdmlydHVhbFJlcGxlbmlzaEIEAAAAE2RBcHBUaHJlc2hvbGRBbW91bnQJAABrAAAAAwkAAGQAAAACBQAAAAtuZXdCYWxhbmNlQQUAAAALbmV3QmFsYW5jZUIFAAAADWRBcHBUaHJlc2hvbGQJAABoAAAAAgAAAAAAAAAAAgUAAAATZEFwcFRocmVzaG9sZFNjYWxlMgMDCQAAZwAAAAIFAAAAF3NsaXBwYWdlVmFsdWVNaW5Gb3JTd2FwBQAAABdpbnZhcmlhbnRFc3RpbWF0ZWRSYXRpbwYJAABmAAAAAgUAAAAJaW52YXJpYW50BQAAAAxpbnZhcmlhbnROZXcJAAACAAAAAQIAAAA6SW5jb3JyZWN0IHZpcnR1YWxTd2FwVG9rZW5QYXkgb3IgdmlydHVhbFN3YXBUb2tlbkdldCB2YWx1ZQMDCQAAZgAAAAIFAAAAHHNsaXBwYWdlVmFsdWVNaW5Gb3JSZXBsZW5pc2gFAAAAJXJhdGlvVmlydHVhbEJhbGFuY2VUb1ZpcnR1YWxSZXBsZW5pc2gGCQAAZgAAAAIFAAAAJXJhdGlvVmlydHVhbEJhbGFuY2VUb1ZpcnR1YWxSZXBsZW5pc2gFAAAAHHNsaXBwYWdlVmFsdWVNYXhGb3JSZXBsZW5pc2gJAAACAAAAAQIAAABsU3dhcCB3aXRoIHZpcnR1YWxTd2FwVG9rZW5QYXkgYW5kIHZpcnR1YWxTd2FwVG9rZW5HZXQgaXMgcG9zc2libGUsIGJ1dCByYXRpbyBhZnRlciB2aXJ0dWFsIHN3YXAgaXMgaW5jb3JyZWN0AwMJAABmAAAAAgUAAAATZEFwcFRocmVzaG9sZEFtb3VudAUAAAALbmV3QmFsYW5jZUEGCQAAZgAAAAIFAAAAE2RBcHBUaHJlc2hvbGRBbW91bnQFAAAAC25ld0JhbGFuY2VCCQEAAAAOdGhyb3dUaHJlc2hvbGQAAAADBQAAABNkQXBwVGhyZXNob2xkQW1vdW50BQAAAAtuZXdCYWxhbmNlQQUAAAALbmV3QmFsYW5jZUIEAAAABnN0YWtlMQMJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAA1zdGFraW5nQXNzZXRzBQAAAA1wbXRTdHJBc3NldElkCQAD/AAAAAQFAAAABHRoaXMCAAAADHN0YWtlVW5zdGFrZQkABEwAAAACBgkABEwAAAACBQAAAAlwbXRBbW91bnQJAARMAAAAAgUAAAANcG10U3RyQXNzZXRJZAUAAAADbmlsBQAAAANuaWwAAAAAAAAAAAADCQAAAAAAAAIFAAAABnN0YWtlMQUAAAAGc3Rha2UxBAAAABNyYXRpb1NoYXJlVG9rZW5zSW5BCQAAawAAAAMFAAAAEXZpcnR1YWxSZXBsZW5pc2hBBQAAAAZzY2FsZTgFAAAAEWJhbGFuY2VBZnRlclN3YXBBBAAAABNyYXRpb1NoYXJlVG9rZW5zSW5CCQAAawAAAAMFAAAAEXZpcnR1YWxSZXBsZW5pc2hCBQAAAAZzY2FsZTgFAAAAEWJhbGFuY2VBZnRlclN3YXBCBAAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQJAABrAAAAAwkAAZcAAAABCQAETAAAAAIFAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkEJAARMAAAAAgUAAAATcmF0aW9TaGFyZVRva2Vuc0luQgUAAAADbmlsBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAAAZzY2FsZTgJAARMAAAAAgkBAAAAB1JlaXNzdWUAAAADBQAAAAxzaGFyZUFzc2V0SWQFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAYJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQFAAAADHNoYXJlQXNzZXRJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAARa1NoYXJlQXNzZXRTdXBwbHkJAABkAAAAAgUAAAAQc2hhcmVBc3NldFN1cHBseQUAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50CQAETAAAAAIFAAAAD25ld0JhbGFuY2VFbnRyeQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAKa0ludmFyaWFudAUAAAATaW52YXJpYW50Q2FsY3VsYXRlZAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAh3aXRoZHJhdwAAAAAJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAQAAAAhpc0FjdGl2ZQAAAAAEAAAADSR0MDE5NDAxMTk1NDQJAAUUAAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAAlwbXRBbW91bnQIBQAAAA0kdDAxOTQwMTE5NTQ0AAAAAl8xBAAAAApwbXRBc3NldElkCAUAAAANJHQwMTk0MDExOTU0NAAAAAJfMgQAAAAMYW1vdW50VG9QYXlBCQAAawAAAAMFAAAACXBtdEFtb3VudAUAAAAIYmFsYW5jZUEFAAAAEHNoYXJlQXNzZXRTdXBwbHkEAAAADGFtb3VudFRvUGF5QgkAAGsAAAADBQAAAAlwbXRBbW91bnQFAAAACGJhbGFuY2VCBQAAABBzaGFyZUFzc2V0U3VwcGx5BAAAABNpbnZhcmlhbnRDYWxjdWxhdGVkCQEAAAANaW52YXJpYW50Q2FsYwAAAAIJAABlAAAAAgUAAAAIYmFsYW5jZUEFAAAADGFtb3VudFRvUGF5QQkAAGUAAAACBQAAAAhiYWxhbmNlQgUAAAAMYW1vdW50VG9QYXlCAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkBAAAAD3Rocm93T25lUGF5bWVudAAAAAADCQEAAAACIT0AAAACBQAAAApwbXRBc3NldElkBQAAAAxzaGFyZUFzc2V0SWQJAAACAAAAAQkAASwAAAACAgAAACRJbmNvcnJlY3QgYXNzZXQgYXR0YWNoZWQuIEV4cGVjdGVkOiAJAAJYAAAAAQUAAAAMc2hhcmVBc3NldElkAwkBAAAAASEAAAABBQAAABBoYXNFbm91Z2hCYWxhbmNlCQAETgAAAAIJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAlwbXRBbW91bnQFAAAACnBtdEFzc2V0SWQFAAAAA25pbAkBAAAAEXN1c3BlbmRTdXNwaWNpb3VzAAAAAAQAAAAGc3Rha2UxAwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAADXN0YWtpbmdBc3NldHMFAAAAC3N0ckFzc2V0SWRBCQAD/AAAAAQFAAAABHRoaXMCAAAADHN0YWtlVW5zdGFrZQkABEwAAAACBwkABEwAAAACBQAAAAxhbW91bnRUb1BheUEJAARMAAAAAgUAAAALc3RyQXNzZXRJZEEFAAAAA25pbAUAAAADbmlsAAAAAAAAAAAAAwkAAAAAAAACBQAAAAZzdGFrZTEFAAAABnN0YWtlMQQAAAAGc3Rha2UyAwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAADXN0YWtpbmdBc3NldHMFAAAAC3N0ckFzc2V0SWRCCQAD/AAAAAQFAAAABHRoaXMCAAAADHN0YWtlVW5zdGFrZQkABEwAAAACBwkABEwAAAACBQAAAAxhbW91bnRUb1BheUIJAARMAAAAAgUAAAALc3RyQXNzZXRJZEIFAAAAA25pbAUAAAADbmlsAAAAAAAAAAAAAwkAAAAAAAACBQAAAAZzdGFrZTIFAAAABnN0YWtlMgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAJa0JhbGFuY2VBCQAAZQAAAAIFAAAACGJhbGFuY2VBBQAAAAxhbW91bnRUb1BheUEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACWtCYWxhbmNlQgkAAGUAAAACBQAAAAhiYWxhbmNlQgUAAAAMYW1vdW50VG9QYXlCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABFrU2hhcmVBc3NldFN1cHBseQkAAGUAAAACBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAAAlwbXRBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACmtJbnZhcmlhbnQFAAAAE2ludmFyaWFudENhbGN1bGF0ZWQJAARMAAAAAgkBAAAABEJ1cm4AAAACBQAAAAxzaGFyZUFzc2V0SWQFAAAACXBtdEFtb3VudAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAADGFtb3VudFRvUGF5QQUAAAAIYXNzZXRJZEEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAxhbW91bnRUb1BheUIFAAAACGFzc2V0SWRCBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAhleGNoYW5nZQAAAAIAAAAYZXN0aW1hdGVkQW1vdW50VG9SZWNlaXZlAAAAEm1pbkFtb3VudFRvUmVjZWl2ZQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkBAAAACGlzQWN0aXZlAAAAAAQAAAANJHQwMjEwMDcyMTA4MgkABRQAAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAACXBtdEFtb3VudAgFAAAADSR0MDIxMDA3MjEwODIAAAACXzEEAAAACnBtdEFzc2V0SWQIBQAAAA0kdDAyMTAwNzIxMDgyAAAAAl8yAwkAAGcAAAACAAAAAAAAAAAABQAAABhlc3RpbWF0ZWRBbW91bnRUb1JlY2VpdmUJAAACAAAAAQkAASwAAAACAgAAACtFc3RpbWF0ZWQgYW1vdW50IG11c3QgYmUgcG9zaXRpdmUuIEFjdHVhbDogCQABpAAAAAEFAAAAGGVzdGltYXRlZEFtb3VudFRvUmVjZWl2ZQMJAABmAAAAAgUAAAASbWluQW1vdW50VG9SZWNlaXZlBQAAABhlc3RpbWF0ZWRBbW91bnRUb1JlY2VpdmUJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAA7TWluaW1hbCBhbW91bnQgY2FuJ3QgYmUgZ3JlYXRlciB0aGFuIGVzdGltYXRlZC4gRXN0aW1hdGVkOiAJAAGkAAAAAQUAAAAYZXN0aW1hdGVkQW1vdW50VG9SZWNlaXZlAgAAAAsuIE1pbmltYWw6IAkAAaQAAAABBQAAABJtaW5BbW91bnRUb1JlY2VpdmUDCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQEAAAAPdGhyb3dPbmVQYXltZW50AAAAAAMJAQAAAAEhAAAAAQUAAAAQaGFzRW5vdWdoQmFsYW5jZQkABE4AAAACCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAJcG10QW1vdW50BQAAAApwbXRBc3NldElkBQAAAANuaWwJAQAAABFzdXNwZW5kU3VzcGljaW91cwAAAAADAwkBAAAAAiE9AAAAAgUAAAAKcG10QXNzZXRJZAUAAAAIYXNzZXRJZEEJAQAAAAIhPQAAAAIFAAAACnBtdEFzc2V0SWQFAAAACGFzc2V0SWRCBwkBAAAAC3Rocm93QXNzZXRzAAAAAAMJAABmAAAAAgAAAAAAAJiWgAUAAAAJcG10QW1vdW50CQAAAgAAAAECAAAAME9ubHkgc3dhcCBvZiAxMC4wMDAwMDAgb3IgbW9yZSB0b2tlbnMgaXMgYWxsb3dlZAMDCQAAZgAAAAIFAAAAFWV4Y2hhbmdlUmF0aW9MaW1pdE1pbgkAAGsAAAADBQAAAAZzY2FsZTgFAAAAEm1pbkFtb3VudFRvUmVjZWl2ZQUAAAAJcG10QW1vdW50BgkAAGYAAAACCQAAawAAAAMFAAAABnNjYWxlOAUAAAAYZXN0aW1hdGVkQW1vdW50VG9SZWNlaXZlBQAAAAlwbXRBbW91bnQFAAAAFWV4Y2hhbmdlUmF0aW9MaW1pdE1heAkAAAIAAAABAgAAABxJbmNvcnJlY3QgYXJncyBhbmQgcG10IHJhdGlvBAAAAAtzZW5kQXNzZXRJZAMJAAAAAAAAAgUAAAAKcG10QXNzZXRJZAUAAAAIYXNzZXRJZEEFAAAACGFzc2V0SWRCBQAAAAhhc3NldElkQQQAAAANJHQwMjIxNzMyMjI5MgkBAAAAE2NhbGN1bGF0ZVNlbmRBbW91bnQAAAAEBQAAABhlc3RpbWF0ZWRBbW91bnRUb1JlY2VpdmUFAAAAEm1pbkFtb3VudFRvUmVjZWl2ZQUAAAAJcG10QW1vdW50BQAAAApwbXRBc3NldElkBAAAAAZhbW91bnQIBQAAAA0kdDAyMjE3MzIyMjkyAAAAAl8xBAAAAA5hbW91bnRJbnZhcmlhbggFAAAADSR0MDIyMTczMjIyOTIAAAACXzIEAAAAEGdvdmVybmFuY2VSZXdhcmQJAABrAAAAAwUAAAAGYW1vdW50BQAAAA1mZWVHb3Zlcm5hbmNlBQAAAAlmZWVTY2FsZTYEAAAADmFtb3VudE1pbnVzRmVlCQAAawAAAAMFAAAABmFtb3VudAkAAGUAAAACBQAAAAlmZWVTY2FsZTYFAAAAA2ZlZQUAAAAJZmVlU2NhbGU2BAAAAA0kdDAyMjQ0ODIyNzEwAwkAAAAAAAACBQAAAApwbXRBc3NldElkBQAAAAhhc3NldElkQQkABRQAAAACCQAAZAAAAAIFAAAACGJhbGFuY2VBBQAAAAlwbXRBbW91bnQJAABlAAAAAgkAAGUAAAACBQAAAAhiYWxhbmNlQgUAAAAOYW1vdW50TWludXNGZWUFAAAAEGdvdmVybmFuY2VSZXdhcmQJAAUUAAAAAgkAAGUAAAACCQAAZQAAAAIFAAAACGJhbGFuY2VBBQAAAA5hbW91bnRNaW51c0ZlZQUAAAAQZ292ZXJuYW5jZVJld2FyZAkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAAJcG10QW1vdW50BAAAAAtuZXdCYWxhbmNlQQgFAAAADSR0MDIyNDQ4MjI3MTAAAAACXzEEAAAAC25ld0JhbGFuY2VCCAUAAAANJHQwMjI0NDgyMjcxMAAAAAJfMgQAAAATZEFwcFRocmVzaG9sZEFtb3VudAkAAGsAAAADCQAAZAAAAAIFAAAAC25ld0JhbGFuY2VBBQAAAAtuZXdCYWxhbmNlQgUAAAANZEFwcFRocmVzaG9sZAkAAGgAAAACAAAAAAAAAAACBQAAABNkQXBwVGhyZXNob2xkU2NhbGUyAwMJAABmAAAAAgUAAAATZEFwcFRocmVzaG9sZEFtb3VudAUAAAALbmV3QmFsYW5jZUEGCQAAZgAAAAIFAAAAE2RBcHBUaHJlc2hvbGRBbW91bnQFAAAAC25ld0JhbGFuY2VCCQEAAAAOdGhyb3dUaHJlc2hvbGQAAAADBQAAABNkQXBwVGhyZXNob2xkQW1vdW50BQAAAAtuZXdCYWxhbmNlQQUAAAALbmV3QmFsYW5jZUIEAAAADSR0MDIzMDA4MjMwODEJAQAAAAxnZXRBc3NldEluZm8AAAABBQAAAApwbXRBc3NldElkBAAAAA1wbXRTdHJBc3NldElkCAUAAAANJHQwMjMwMDgyMzA4MQAAAAJfMQQAAAAMcG10QXNzZXROYW1lCAUAAAANJHQwMjMwMDgyMzA4MQAAAAJfMgQAAAALcG10RGVjaW1hbHMIBQAAAA0kdDAyMzAwODIzMDgxAAAAAl8zBAAAAA0kdDAyMzA5NDIzMTcxCQEAAAAMZ2V0QXNzZXRJbmZvAAAAAQUAAAALc2VuZEFzc2V0SWQEAAAADnNlbmRTdHJBc3NldElkCAUAAAANJHQwMjMwOTQyMzE3MQAAAAJfMQQAAAANc2VuZEFzc2V0TmFtZQgFAAAADSR0MDIzMDk0MjMxNzEAAAACXzIEAAAADHNlbmREZWNpbWFscwgFAAAADSR0MDIzMDk0MjMxNzEAAAACXzMEAAAABnN0YWtlMQMJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAA1zdGFraW5nQXNzZXRzBQAAAA1wbXRTdHJBc3NldElkCQAD/AAAAAQFAAAABHRoaXMCAAAADHN0YWtlVW5zdGFrZQkABEwA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AAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAAMYWRtaW5QdWJLZXkxAAAAAAAAAAABAAAAAAAAAAAABAAAABJhZG1pblB1YktleTJTaWduZWQDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAQUAAAAMYWRtaW5QdWJLZXkyAAAAAAAAAAABAAAAAAAAAAAABAAAABJhZG1pblB1YktleTNTaWduZWQDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAgUAAAAMYWRtaW5QdWJLZXkzAAAAAAAAAAABAAAAAAAAAAAACQAAZwAAAAIJAABkAAAAAgkAAGQAAAACBQAAABJhZG1pblB1YktleTFTaWduZWQFAAAAEmFkbWluUHViS2V5MlNpZ25lZAUAAAASYWRtaW5QdWJLZXkzU2lnbmVkAAAAAAAAAAACBAAAAAckbWF0Y2gwBQAAAAJ0eAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAXSW52b2tlU2NyaXB0VHJhbnNhY3Rpb24EAAAAA2ludgUAAAAHJG1hdGNoMAQAAAATY2FsbFRha2VJbnRvQWNjb3VudAMJAAAAAAAAAggFAAAAA2ludgAAAARkQXBwBQAAAAR0aGlzCQAAAAAAAAIIBQAAAANpbnYAAAAIZnVuY3Rpb24CAAAAGXRha2VJbnRvQWNjb3VudEV4dHJhRnVuZHMHBAAAAA1zaWduZWRCeUFkbWluAwMDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAAMYWRtaW5QdWJLZXkxBgkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAFAAAADGFkbWluUHViS2V5MgYJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAABQAAAAxhZG1pblB1YktleTMGCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAAKYWRtU3Rha2luZwMDBQAAABNjYWxsVGFrZUludG9BY2NvdW50BQAAAA1zaWduZWRCeUFkbWluBwYFAAAAE211bHRpU2lnbmVkQnlBZG1pbnMFAAAAE211bHRpU2lnbmVkQnlBZG1pbnNEFBpX", "height": 1949350, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6QnjJjju7RfGB8wdbdNbJbiiGQuzpWLKNzrZxUoZZ27x Next: G7LYSbhrEcqsFwWV3yGWYNTLVN53ZSvpxXTauQKpoLnv Diff:
OldNewDifferences
2727
2828 let m = "shutdown_cause"
2929
30-let n = "first_harvest"
30+let n = "staking_usdnnsbt_address"
3131
32-let o = "first_harvest_height"
32+let o = "staking_eurn_address"
3333
34-let p = "share_limit_on_first_harvest"
34+let p = "admin_pub_1"
3535
36-let q = "base_period"
36+let q = "admin_pub_2"
3737
38-let r = "period_length"
38+let r = "admin_pub_3"
3939
40-let s = "start_height"
40+let s = Address(base58'3N77kfPbQyjXWpDALX3xjKw3iEGMWEctV37')
4141
42-let t = "asset_priority_"
42+let t = Address(base58'3NBBWfzZtZtszaXbitTKnrB2xXwv26Bn7H9')
4343
44-let u = "script_hash_flat"
45-
46-let v = "init_pool_height_"
47-
48-let w = "admin_pub_1"
49-
50-let x = "admin_pub_2"
51-
52-let y = "admin_pub_3"
53-
54-let z = Address(base58'3N77kfPbQyjXWpDALX3xjKw3iEGMWEctV37')
55-
56-let A = Address(base58'3NBBWfzZtZtszaXbitTKnrB2xXwv26Bn7H9')
57-
58-let B = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
59-
60-let C = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
61-
62-func D (E) = {
63- let F = getString(A, E)
64- if ($isInstanceOf(F, "String"))
44+func u (v) = {
45+ let w = getString(t, v)
46+ if ($isInstanceOf(w, "String"))
6547 then {
66- let G = F
67- fromBase58String(G)
48+ let x = w
49+ fromBase58String(x)
6850 }
6951 else {
70- let H = F
52+ let y = w
7153 throw("Admin public key is empty")
7254 }
7355 }
7456
7557
76-let I = D(w)
58+let z = u(p)
7759
78-let J = D(x)
60+let A = u(q)
7961
80-let K = D(y)
62+let B = u(r)
8163
82-let L = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
64+let C = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
8365
84-let M = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
66+let D = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
8567
86-let N = valueOrErrorMessage(getInteger(C, q), "Empty kBasePeriod")
68+let E = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
8769
88-let O = valueOrErrorMessage(getInteger(C, s), "Empty kStartHeight")
70+let F = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
8971
90-let P = valueOrErrorMessage(getInteger(C, r), "Empty kPeriodLength")
72+let G = base58'ECBCkHS68DckpBrzLeoRgYbFg7sCVqR176mPqbXsj9pA'
9173
92-let Q = ((N + ((height - O) / P)) + 1)
74+let H = [toBase58String(F), toBase58String(G)]
9375
94-let R = Address(base58'3N6q7sCGSSLBUXDdjBdYGTJbZGZfhhh8cNg')
76+let I = Address(fromBase58String(valueOrErrorMessage(getString(t, n), "no usdn staking address")))
9577
96-let S = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
78+let J = Address(fromBase58String(valueOrErrorMessage(getString(t, o), "no usdn staking address")))
9779
98-let T = base58'2HAJrwa8q4SxBx9cHYaBTQdBjdk5wwqdof7ccpAx2uhZ'
80+let K = getBooleanValue(this, c)
9981
100-let U = 270000
82+let L = getStringValue(this, d)
10183
102-let V = getBooleanValue(this, c)
84+let M = getStringValue(this, e)
10385
104-let W = getStringValue(this, d)
86+let N = if ((L == "WAVES"))
87+ then unit
88+ else fromBase58String(L)
10589
106-let X = getStringValue(this, e)
90+let O = if ((M == "WAVES"))
91+ then unit
92+ else fromBase58String(M)
10793
108-let Y = if ((W == "WAVES"))
109- then unit
110- else fromBase58String(W)
111-
112-let Z = if ((X == "WAVES"))
113- then unit
114- else fromBase58String(X)
115-
116-let aa = {
117- let F = Y
118- if ($isInstanceOf(F, "ByteVector"))
94+let P = {
95+ let w = N
96+ if ($isInstanceOf(w, "ByteVector"))
11997 then {
120- let ab = F
121- value(assetInfo(ab)).name
98+ let Q = w
99+ value(assetInfo(Q)).name
122100 }
123- else if ($isInstanceOf(F, "Unit"))
101+ else if ($isInstanceOf(w, "Unit"))
124102 then {
125- let ac = F
103+ let R = w
126104 "WAVES"
127105 }
128106 else throw("Match error")
129107 }
130108
131-let ad = {
132- let F = Z
133- if ($isInstanceOf(F, "ByteVector"))
109+let S = {
110+ let w = O
111+ if ($isInstanceOf(w, "ByteVector"))
134112 then {
135- let ab = F
136- value(assetInfo(ab)).name
113+ let Q = w
114+ value(assetInfo(Q)).name
137115 }
138- else if ($isInstanceOf(F, "Unit"))
116+ else if ($isInstanceOf(w, "Unit"))
139117 then {
140- let ac = F
118+ let R = w
141119 "WAVES"
142120 }
143121 else throw("Match error")
144122 }
145123
146-let ae = getIntegerValue(this, f)
124+let T = getIntegerValue(this, f)
147125
148-let af = getIntegerValue(this, g)
126+let U = getIntegerValue(this, g)
149127
150-let ag = fromBase58String(getStringValue(this, h))
128+let V = fromBase58String(getStringValue(this, h))
151129
152-let ah = getIntegerValue(this, i)
130+let W = getIntegerValue(this, i)
153131
154-let ai = getIntegerValue(this, l)
132+let X = getIntegerValue(this, l)
155133
156-let aj = 500
134+let Y = 500
157135
158-let ak = 200
136+let Z = 200
159137
160-let al = 1000000
138+let aa = 1000000
161139
162-let am = 1000000000
140+let ab = 1000
163141
164-let an = 1000
142+let ac = 100000000
165143
166-let ao = 100000000
144+let ad = 10000000000000000
167145
168-let ap = 1000000000000
146+let ae = 1000
169147
170-let aq = 1000
148+let af = 8
171149
172-let ar = 8
150+let ag = 50
173151
174-let as = 50
152+let ah = 100
175153
176-let at = 100
154+let ai = 90000000
177155
178-let au = 90000000
156+let aj = 110000000
179157
180-let av = 110000000
158+let ak = 50
181159
182-let aw = 50
160+let al = 2
183161
184-let ax = 2
162+let am = 4600000000000000
185163
186-let ay = 46000000
187-
188-func az (aA) = {
189- let F = aA
190- if ($isInstanceOf(F, "ByteVector"))
164+func an (ao) = {
165+ let w = ao
166+ if ($isInstanceOf(w, "ByteVector"))
191167 then {
192- let ab = F
193- assetBalance(this, ab)
168+ let Q = w
169+ assetBalance(this, Q)
194170 }
195- else if ($isInstanceOf(F, "Unit"))
171+ else if ($isInstanceOf(w, "Unit"))
196172 then {
197- let ac = F
173+ let R = w
198174 wavesBalance(this).available
199175 }
200176 else throw("Match error")
201177 }
202178
203179
204-let aB = {
205- let F = getInteger(R, ((("rpd_balance_" + toBase58String(S)) + "_") + toString(this)))
206- if ($isInstanceOf(F, "Int"))
180+func ap (ao) = {
181+ let aq = {
182+ let w = ao
183+ if ($isInstanceOf(w, "ByteVector"))
184+ then {
185+ let ar = w
186+ if ((ar == F))
187+ then getInteger(I, ((("rpd_balance_" + toBase58String(ar)) + "_") + toString(this)))
188+ else if ((ar == G))
189+ then getInteger(J, ((("%s%s%s__stakingBalance__" + toBase58String(ar)) + "__") + toString(this)))
190+ else 0
191+ }
192+ else if ($isInstanceOf(w, "Unit"))
193+ then 0
194+ else throw("Match error")
195+ }
196+ let w = aq
197+ if ($isInstanceOf(w, "Int"))
207198 then {
208- let aC = F
209- aC
199+ let as = w
200+ as
210201 }
211- else if ($isInstanceOf(F, "Unit"))
212- then {
213- let H = F
214- 0
215- }
216- else throw("Match error")
217- }
218-
219-func aD (aA) = {
220- let F = aA
221- if ($isInstanceOf(F, "ByteVector"))
222- then {
223- let ab = F
224- if ((ab == S))
225- then true
226- else false
227- }
228- else if ($isInstanceOf(F, "Unit"))
229- then {
230- let ac = F
231- false
232- }
233- else throw("Match error")
202+ else 0
234203 }
235204
236205
237-let aE = (ae - (if ((Y == S))
238- then aB
239- else 0))
206+let at = ap(N)
240207
241-let aF = (af - (if ((Z == S))
242- then aB
243- else 0))
208+let au = ap(O)
244209
245-let aG = (az(Y) + (if ((Y == S))
246- then aB
247- else 0))
210+let av = (T - at)
248211
249-let aH = (az(Z) + (if ((Z == S))
250- then aB
251- else 0))
212+let aw = (U - au)
252213
253-let aI = if ((aG >= ae))
254- then (aH >= af)
214+let ax = (an(N) + at)
215+
216+let ay = (an(O) + au)
217+
218+let az = if ((ax >= T))
219+ then (ay >= U)
255220 else false
256221
257-func aJ (aK,aL) = (((fraction(ap, aK, aL) + fraction(ap, aL, aK)) / 2) / 10000)
222+func aA (aB,aC) = ((fraction(ad, aB, aC) + fraction(ad, aC, aB)) / 2)
258223
259224
260-func aM (aK,aL) = {
261- let aN = aJ(aK, aL)
262- (fraction((aK + aL), ao, pow(aN, ar, aw, ax, ar, CEILING)) + (2 * fraction(pow(fraction(aK, aL, ao), 0, 5, 1, (ar / 2), DOWN), pow((aN - ay), ar, aw, ax, ar, DOWN), ao)))
225+func aD (aB,aC) = {
226+ let aE = aA(aB, aC)
227+ (fraction((aB + aC), ad, pow(aE, af, ak, al, af, CEILING)) + (2 * fraction(toInt(pow(fraction(toBigInt(aB), toBigInt(aC), toBigInt(ac)), 0, toBigInt(5), 1, (af / 2), DOWN)), pow((aE - am), af, ak, al, af, DOWN), ac)))
263228 }
264229
265230
266-func aO (aP,aQ,aR,aS) = {
267- let aT = (ao - ((ao * 1) / 10000000))
268- let aU = (aP - aQ)
269- let aK = (ae + aR)
270- let aL = (af + aR)
271- let aV = if ((aS == Y))
272- then aM(aK, (af - aP))
273- else if ((aS == Z))
274- then aM((ae - aP), aL)
275- else throw("Wrong asset in payment")
276- let aW = fraction(ao, ai, aV)
277- func aX (aY,aZ) = if ((aY == -1))
231+func aF (aG,aH,aI,aJ) = {
232+ let aK = (ac - ((ac * 1) / 10000000))
233+ let aL = (aG - aH)
234+ let aB = (T + aI)
235+ let aC = (U + aI)
236+ func aM (aN,aO) = if ((aN._1 == -1))
278237 then {
279- let ba = (aP - ((aZ * aU) / 5))
280- let bb = if ((aS == Y))
281- then aM(aK, (af - ba))
282- else aM((ae - ba), aL)
283- if ((bb > ai))
284- then ba
285- else -1
238+ let aP = (aG - (((aO * aL) / 3) / ab))
239+ let aQ = if ((aJ == N))
240+ then aD(aB, (U - aP))
241+ else aD((T - aP), aC)
242+ if ((aQ > X))
243+ then $Tuple2(aP, aQ)
244+ else $Tuple2(-1, 0)
286245 }
287- else aY
246+ else aN
288247
289- let bc = {
290- let bd = [1, 2, 3, 4, 5]
291- let be = size(bd)
292- let bf = -1
293- if ((be == 0))
294- then bf
295- else {
296- let bg = aX(bf, bd[0])
297- if ((be == 1))
298- then bg
248+ let aR = aM($Tuple2(-1, 0), 3000)
249+ if ((0 > aR._1))
250+ then throw("Price is worse than minReceived")
251+ else {
252+ let aS = if ((aJ == N))
253+ then aD(aB, (U - aG))
254+ else if ((aJ == O))
255+ then aD((T - aG), aC)
256+ else throw("Wrong asset in payment")
257+ let aT = if ((X > aS))
258+ then if ((aK >= fraction(ac, X, aS)))
259+ then throw("Bad estimation provided 1")
299260 else {
300- let bh = aX(bg, bd[1])
301- if ((be == 2))
302- then bh
303- else {
304- let bi = aX(bh, bd[2])
305- if ((be == 3))
306- then bi
307- else {
308- let bj = aX(bi, bd[3])
309- if ((be == 4))
310- then bj
311- else {
312- let bk = aX(bj, bd[4])
313- if ((be == 5))
314- then bk
315- else {
316- let bl = aX(bk, bd[5])
317- throw("List size exceed 5")
318- }
319- }
320- }
321- }
261+ let aU = {
262+ let aV = [25, 200, 500]
263+ let aW = size(aV)
264+ let aX = $Tuple2(-1, 0)
265+ func aY (aZ,ba) = if ((ba >= aW))
266+ then aZ
267+ else aM(aZ, aV[ba])
268+
269+ func bb (aZ,ba) = if ((ba >= aW))
270+ then aZ
271+ else throw("List size exceeds 3")
272+
273+ bb(aY(aY(aY(aX, 0), 1), 2), 3)
274+ }
275+ if ((0 > aU._1))
276+ then aR
277+ else aU
322278 }
323- }
324- }
325- if ((0 > bc))
326- then throw("something went wrong while working with amountToSend")
327- else if (if ((aW > aT))
328- then (aV > ai)
329- else false)
330- then aP
331- else bc
279+ else {
280+ let aU = {
281+ let aV = [-500, -200, -25]
282+ let aW = size(aV)
283+ let aX = $Tuple2(-1, 0)
284+ func aY (aZ,ba) = if ((ba >= aW))
285+ then aZ
286+ else aM(aZ, aV[ba])
287+
288+ func bb (aZ,ba) = if ((ba >= aW))
289+ then aZ
290+ else throw("List size exceeds 3")
291+
292+ bb(aY(aY(aY(aX, 0), 1), 2), 3)
293+ }
294+ let bc = if ((0 > aU._1))
295+ then $Tuple2(aG, aS)
296+ else aU
297+ if ((aK >= fraction(ac, X, bc._2)))
298+ then throw("Bad estimation provided 2")
299+ else bc
300+ }
301+ aT
302+ }
332303 }
333304
334305
335-func bm (aA) = {
336- let F = aA
337- if ($isInstanceOf(F, "ByteVector"))
306+func bd (ao) = {
307+ let w = ao
308+ if ($isInstanceOf(w, "ByteVector"))
338309 then {
339- let ab = F
340- let bn = toBase58String(ab)
341- let bo = valueOrErrorMessage(assetInfo(ab), (("Asset " + bn) + " doesn't exist"))
342- $Tuple3(bn, bo.name, bo.decimals)
310+ let Q = w
311+ let be = toBase58String(Q)
312+ let bf = valueOrErrorMessage(assetInfo(Q), (("Asset " + be) + " doesn't exist"))
313+ $Tuple3(be, bf.name, bf.decimals)
343314 }
344- else if ($isInstanceOf(F, "Unit"))
315+ else if ($isInstanceOf(w, "Unit"))
345316 then {
346- let ac = F
317+ let R = w
347318 $Tuple3("WAVES", "WAVES", 8)
348319 }
349320 else throw("Match error")
350321 }
351322
352323
353-func bp (bq) = [BooleanEntry(c, false), StringEntry(m, bq)]
324+func bg (bh) = [BooleanEntry(c, false), StringEntry(m, bh)]
354325
355326
356-func br (bs,aA) = if ((aA == S))
357- then {
358- let bt = (bs - U)
359- if ((0 >= bt))
360- then throw((((("Insufficient amount " + toString(bs)) + " to deduct staking fee ") + toString(U)) + " USD-N"))
361- else bt
362- }
363- else bs
327+func bi () = throw("DApp is already active")
364328
365329
366-func bu () = throw("DApp is already active")
330+func bj () = if (K)
331+ then unit
332+ else throw("DApp is inactive at this moment")
367333
368334
369-func bv () = throw("DApp is inactive at this moment")
335+func bk (as) = if (containsElement([z, A, B], as.callerPublicKey))
336+ then unit
337+ else throw("Only admin can call this function")
370338
371339
372-func bw () = throw("Only admin can call this function")
340+func bl () = throw(((("Incorrect assets attached. Expected: " + L) + " and ") + M))
373341
374342
375-func bx () = throw(((("Incorrect assets attached. Expected: " + W) + " and ") + X))
343+func bm () = throw("One attached payment expected")
376344
377345
378-func by (bz,bA,bB) = throw(((((((((("New balance in assets of the DApp is less than threshold " + toString(bz)) + ": ") + toString(bA)) + " ") + aa) + ", ") + toString(bB)) + " ") + ad))
346+func bn (bo,bp,bq) = throw(((((((((("New balance in assets of the DApp is less than threshold " + toString(bo)) + ": ") + toString(bp)) + " ") + P) + ", ") + toString(bq)) + " ") + S))
379347
380348
381-func bC (bs,bD,bE) = throw((((((((("Insufficient DApp balance to pay " + toString(bs)) + " ") + bE) + " due to staking. Available: ") + toString(bD)) + " ") + bE) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
349+func br () = bg(((((((((((((((("Suspicious state. Actual balances: " + toString(T)) + " ") + P) + ", ") + toString(U)) + " ") + S) + ". State: ") + toString(an(N))) + " ") + P) + ", ") + toString(an(O))) + " ") + S))
382350
383351
384-func bF (bA,bB) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(bA)) + " ") + aa) + " and ") + toString(bB)) + " ") + ad) + " due to staking. Available: ") + toString(aE)) + " ") + aa) + " and ") + toString(aF)) + " ") + ad) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
352+func bs (bt,ao) = if (bt)
353+ then if ((ao == F))
354+ then $Tuple2("lockNeutrino", I)
355+ else $Tuple2("startStaking", J)
356+ else if ((ao == F))
357+ then $Tuple2("unlockNeutrino", I)
358+ else $Tuple2("stopStaking", J)
385359
386360
387-func bG () = bp(((((((((((((((("Suspicious state. Actual balances: " + toString(ae)) + " ") + aa) + ", ") + toString(af)) + " ") + ad) + ". State: ") + toString(az(Y))) + " ") + aa) + ", ") + toString(az(Z))) + " ") + ad))
361+func bu (bt,bv,ao) = if (bt)
362+ then {
363+ let bw = bs(bt, ao)
364+ let bx = bw._1
365+ let by = bw._2
366+ $Tuple4(bx, by, nil, [AttachedPayment(ao, bv)])
367+ }
368+ else {
369+ let bz = bs(bt, ao)
370+ let bx = bz._1
371+ let by = bz._2
372+ $Tuple4(bx, by, [bv, toBase58String(ao)], nil)
373+ }
388374
389375
390-@Callable(bH)
391-func init (bI) = {
392- let bJ = $Tuple2(bH.payments[0].amount, bH.payments[0].assetId)
393- let bK = bJ._1
394- let bL = bJ._2
395- let bM = $Tuple2(bH.payments[1].amount, bH.payments[1].assetId)
396- let bN = bM._1
397- let bO = bM._2
398- let bP = $Tuple2(bH.payments[2].amount, bH.payments[2].assetId)
399- let bQ = bP._1
400- let bR = bP._2
401- let bS = isDataStorageUntouched(this)
402- let bT = scriptHash(this)
403- let bU = addressFromStringValue(bI)
404- if ((bH.caller == this))
405- then throw("You can't call yourself")
406- else if (if ((bR != T))
407- then true
408- else (bQ != am))
409- then throw("You need to attach 10 SWOP tokens")
410- else if (if (!(aD(bL)))
411- then !(aD(bO))
412- else false)
413- then throw("One of assets must be USDN, WAVES or SWOP")
414- else if (if ((bT != value(getBinary(A, u))))
415- then true
416- else !(bS))
417- then throw("Unexpected script was found.")
418- else if (isDefined(getBoolean(this, c)))
419- then bu()
420- else if ((bL == bO))
421- then throw("Assets must be different")
422- else {
423- let bV = {
424- let F = bL
425- if ($isInstanceOf(F, "ByteVector"))
426- then {
427- let ab = F
428- toBase58String(ab)
429- }
430- else if ($isInstanceOf(F, "Unit"))
431- then {
432- let ac = F
433- "WAVES"
434- }
435- else throw("Match error")
436- }
437- let bW = {
438- let F = bO
439- if ($isInstanceOf(F, "ByteVector"))
440- then {
441- let ab = F
442- toBase58String(ab)
443- }
444- else if ($isInstanceOf(F, "Unit"))
445- then {
446- let ac = F
447- "WAVES"
448- }
449- else throw("Match error")
450- }
451- let bX = valueOrElse(getInteger(A, (t + bV)), 999999)
452- let bY = valueOrElse(getInteger(A, (t + bW)), 999999)
453- let bZ = if ((bY > bX))
454- then $Tuple4(bN, bO, bK, bL)
455- else $Tuple4(bK, bL, bN, bO)
456- let ca = bZ._1
457- let cb = bZ._2
458- let cc = bZ._3
459- let cd = bZ._4
460- let ce = bm(cb)
461- let cf = ce._1
462- let cg = ce._2
463- let ch = ce._3
464- let ci = bm(cd)
465- let cj = ci._1
466- let ck = ci._2
467- let cl = ci._3
468- let cm = ((("s" + take(cg, 7)) + "_") + take(ck, 7))
469- let cn = ((((("ShareToken of SwopFi protocol for " + cg) + " and ") + ck) + " at address ") + toString(this))
470- let co = ((ch + cl) / 2)
471- let cp = fraction(pow(ca, ch, 5, 1, ch, DOWN), pow(cc, cl, 5, 1, cl, DOWN), pow(10, 0, co, 0, 0, DOWN))
472- let cq = Issue(cm, cn, cp, co, true)
473- let cr = calculateAssetId(cq)
474- let cs = aM(ca, cc)
475-[StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, cf), StringEntry(e, cj), IntegerEntry(f, ca), IntegerEntry(g, cc), IntegerEntry(l, cs), IntegerEntry(j, aj), IntegerEntry(k, al), IntegerEntry(v, height), cq, StringEntry(h, toBase58String(cr)), IntegerEntry(i, cp), ScriptTransfer(bU, cp, cr), ScriptTransfer(B, am, T)]
476- }
376+@Callable(as)
377+func init () = {
378+ let bA = $Tuple2(as.payments[0].amount, as.payments[0].assetId)
379+ let bB = bA._1
380+ let bC = bA._2
381+ let bD = $Tuple2(as.payments[1].amount, as.payments[1].assetId)
382+ let bE = bD._1
383+ let bF = bD._2
384+ let bG = bd(bC)
385+ let bH = bG._1
386+ let bI = bG._2
387+ let bJ = bG._3
388+ let bK = bd(bF)
389+ let bL = bK._1
390+ let bM = bK._2
391+ let bN = bK._3
392+ if (isDefined(getBoolean(this, c)))
393+ then bi()
394+ else if ((bC == bF))
395+ then throw("Assets must be different")
396+ else {
397+ let bO = ((("s" + take(bI, 7)) + "_") + take(bM, 7))
398+ let bP = ((((("ShareToken of SwopFi protocol for " + bI) + " and ") + bM) + " at address ") + toString(this))
399+ let bQ = ((bJ + bN) / 2)
400+ let bR = fraction(pow(bB, bJ, 5, 1, bJ, DOWN), pow(bE, bN, 5, 1, bN, DOWN), pow(10, 0, bQ, 0, 0, DOWN))
401+ let bS = Issue(bO, bP, bR, bQ, true)
402+ let bT = calculateAssetId(bS)
403+ let bU = aD(bB, bE)
404+ let bV = if (containsElement(H, bH))
405+ then invoke(this, "stakeUnstake", [true, bB, bH], nil)
406+ else 0
407+ if ((bV == bV))
408+ then {
409+ let bW = if (containsElement(H, bL))
410+ then invoke(this, "stakeUnstake", [true, bE, bL], nil)
411+ else 0
412+ if ((bW == bW))
413+ then [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bH), StringEntry(e, bL), IntegerEntry(f, bB), IntegerEntry(g, bE), IntegerEntry(l, bU), IntegerEntry(j, Y), IntegerEntry(k, aa), bS, StringEntry(h, toBase58String(bT)), IntegerEntry(i, bR), ScriptTransfer(as.caller, bR, bT)]
414+ else throw("Strict value is not equal to itself.")
415+ }
416+ else throw("Strict value is not equal to itself.")
417+ }
477418 }
478419
479420
480421
481-@Callable(bH)
482-func keepLimitForFirstHarvest (ct) = if (!(V))
483- then throw("DApp is inactive at this moment")
484- else if (!(containsElement([I, J, K, M], bH.callerPublicKey)))
485- then throw("Only admin can call this function")
486- else [IntegerEntry(p, ct)]
422+@Callable(as)
423+func replenishWithTwoTokens () = valueOrElse(bj(), {
424+ let bC = as.payments[0].assetId
425+ let bF = as.payments[1].assetId
426+ let bX = fraction(ac, as.payments[0].amount, T)
427+ let bY = fraction(ac, as.payments[1].amount, U)
428+ let bZ = bd(bC)
429+ let bH = bZ._1
430+ let bI = bZ._2
431+ let bJ = bZ._3
432+ let ca = bd(bF)
433+ let bL = ca._1
434+ let bM = ca._2
435+ let bN = ca._3
436+ let cb = if ((bY > bX))
437+ then {
438+ let cc = fraction(U, bX, ac, CEILING)
439+ $Tuple5(as.payments[0].amount, cc, (as.payments[1].amount - cc), bF, bX)
440+ }
441+ else {
442+ let cc = fraction(U, bX, ac, CEILING)
443+ $Tuple5(cc, as.payments[1].amount, (as.payments[0].amount - cc), bC, bY)
444+ }
445+ let bB = cb._1
446+ let bE = cb._2
447+ let cd = cb._3
448+ let ce = cb._4
449+ let cf = cb._5
450+ let cg = fraction(cf, W, ac)
451+ if ((size(as.payments) != 2))
452+ then throw("Two attached assets expected")
453+ else if (if ((bC != N))
454+ then true
455+ else (bF != O))
456+ then bl()
457+ else if ((cg == 0))
458+ then throw("Too small amount to replenish")
459+ else if ((0 > cd))
460+ then throw("Change < 0")
461+ else if (!(az))
462+ then ([ScriptTransfer(as.caller, bB, bC), ScriptTransfer(as.caller, bE, bF)] ++ br())
463+ else {
464+ let bV = if (containsElement(H, bH))
465+ then invoke(this, "stakeUnstake", [true, bB, bH], nil)
466+ else 0
467+ if ((bV == bV))
468+ then {
469+ let bW = if (containsElement(H, bL))
470+ then invoke(this, "stakeUnstake", [true, bE, bL], nil)
471+ else 0
472+ if ((bW == bW))
473+ then [IntegerEntry(f, (T + bB)), IntegerEntry(g, (U + bE)), IntegerEntry(i, (W + cg)), IntegerEntry(l, aD((T + bB), (U + bE))), Reissue(V, cg, true), ScriptTransfer(as.caller, cg, V), ScriptTransfer(as.caller, cd, ce)]
474+ else throw("Strict value is not equal to itself.")
475+ }
476+ else throw("Strict value is not equal to itself.")
477+ }
478+ })
487479
488480
489481
490-@Callable(bH)
491-func replenishWithTwoTokens (cu) = {
492- let cb = bH.payments[0].assetId
493- let cd = bH.payments[1].assetId
494- let ca = br(bH.payments[0].amount, cb)
495- let cc = br(bH.payments[1].amount, cd)
496- let cv = fraction(fraction(ao, ae, ca), an, fraction(ao, af, cc))
497- let cw = fraction(ao, ca, ae)
498- let cx = fraction(ao, cc, af)
499- let cy = fraction(min([cw, cx]), ah, ao)
500- let cs = aM((ae + ca), (af + cc))
501- if (!(V))
502- then bv()
503- else if (if ((0 > cu))
504- then true
505- else (cu > 10))
506- then throw("Slippage tolerance must be <= 1%")
507- else if ((size(bH.payments) != 2))
508- then throw("Two attached assets expected")
509- else if (if ((cb != Y))
510- then true
511- else (cd != Z))
512- then bx()
513- else if (if ((((an * (aq - cu)) / aq) > cv))
514- then true
515- else (cv > ((an * (aq + cu)) / aq)))
516- then throw("Incorrect assets amount: amounts must have the contract ratio")
517- else if ((cy == 0))
518- then throw("Too small amount to replenish")
519- else if (!(aI))
520- then ([ScriptTransfer(bH.caller, ca, cb), ScriptTransfer(bH.caller, cc, cd)] ++ bG())
521- else [IntegerEntry(f, (ae + ca)), IntegerEntry(g, (af + cc)), IntegerEntry(i, (ah + cy)), IntegerEntry(l, cs), Reissue(ag, cy, true), ScriptTransfer(bH.caller, cy, ag)]
522- }
482+@Callable(as)
483+func replenishWithOneToken (ch,ci) = valueOrElse(bj(), {
484+ let cj = $Tuple2(as.payments[0].amount, as.payments[0].assetId)
485+ let ck = cj._1
486+ let cl = cj._2
487+ let cm = bd(cl)
488+ let cn = cm._1
489+ let co = cm._2
490+ let cp = cm._3
491+ let cq = 5000000
492+ let cr = 50000000
493+ let cs = if ((cr > ck))
494+ then 100000
495+ else 1
496+ let ct = (ac - ((ac * cs) / 10000000))
497+ let cu = (ac + ((ac * cs) / 10000000))
498+ let cv = (ac - ((ac * 1) / 10000000))
499+ if ((cq > ck))
500+ then throw((((("Payment amount " + toString(ck)) + " does not exceed the minimum amount of ") + toString(cq)) + " tokens"))
501+ else if ((size(as.payments) != 1))
502+ then bm()
503+ else if (!(az))
504+ then ([ScriptTransfer(as.caller, ck, cl)] ++ br())
505+ else if (if ((cl != N))
506+ then (cl != O)
507+ else false)
508+ then bl()
509+ else {
510+ let cw = if ((cl == N))
511+ then $Tuple7((ck - ch), ci, (T + ch), (U - ci), aD((T + ck), U), (T + ck), U)
512+ else $Tuple7(ci, (ck - ch), (T - ci), (U + ch), aD(T, (U + ck)), T, (U + ck))
513+ let cx = cw._1
514+ let cy = cw._2
515+ let cz = cw._3
516+ let cA = cw._4
517+ let bU = cw._5
518+ let cB = cw._6
519+ let cC = cw._7
520+ let cD = if ((cl == N))
521+ then IntegerEntry(f, cB)
522+ else IntegerEntry(g, cC)
523+ let cE = aD(cz, cA)
524+ let cF = fraction(ac, X, cE)
525+ let cG = (fraction((ac * ac), cz, cA) / fraction(ac, cx, cy))
526+ let cH = fraction((cB + cC), ag, (2 * ah))
527+ if (if ((cv >= cF))
528+ then true
529+ else (X > cE))
530+ then throw("Incorrect virtualSwapTokenPay or virtualSwapTokenGet value")
531+ else if (if ((ct > cG))
532+ then true
533+ else (cG > cu))
534+ then throw("Swap with virtualSwapTokenPay and virtualSwapTokenGet is possible, but ratio after virtual swap is incorrect")
535+ else if (if ((cH > cB))
536+ then true
537+ else (cH > cC))
538+ then bn(cH, cB, cC)
539+ else {
540+ let bV = if (containsElement(H, cn))
541+ then invoke(this, "stakeUnstake", [true, ck, cn], nil)
542+ else 0
543+ if ((bV == bV))
544+ then {
545+ let bX = fraction(cx, ac, cz)
546+ let bY = fraction(cy, ac, cA)
547+ let cg = fraction(min([bX, bY]), W, ac)
548+[Reissue(V, cg, true), ScriptTransfer(as.caller, cg, V), IntegerEntry(i, (W + cg)), cD, IntegerEntry(l, bU)]
549+ }
550+ else throw("Strict value is not equal to itself.")
551+ }
552+ }
553+ })
523554
524555
525556
526-@Callable(bH)
527-func replenishWithOneToken (cz,cA) = {
528- let cB = $Tuple2(bH.payments[0].amount, bH.payments[0].assetId)
529- let cC = cB._1
530- let cD = cB._2
531- let cE = 5000000
532- let cF = 50000000
533- let cG = if ((cF > cC))
534- then 100000
535- else 1
536- let cH = (ao - ((ao * cG) / 10000000))
537- let cI = (ao + ((ao * cG) / 10000000))
538- let cJ = (ao - ((ao * 1) / 10000000))
539- if (!(V))
540- then bv()
541- else if ((cE > cC))
542- then throw((((("Payment amount " + toString(cC)) + " does not exceed the minimum amount of ") + toString(cE)) + " tokens"))
543- else if ((size(bH.payments) != 1))
544- then throw("One attached payment expected")
545- else if (!(aI))
546- then ([ScriptTransfer(bH.caller, cC, cD)] ++ bG())
547- else if (if ((cD != Y))
548- then (cD != Z)
549- else false)
550- then bx()
551- else {
552- let cK = if ((cD == Y))
553- then $Tuple7((cC - cz), cA, (ae + cz), (af - cA), aM((ae + cC), af), (ae + cC), af)
554- else $Tuple7(cA, (cC - cz), (ae - cA), (af + cz), aM(ae, (af + cC)), ae, (af + cC))
555- let cL = cK._1
556- let cM = cK._2
557- let cN = cK._3
558- let cO = cK._4
559- let cs = cK._5
560- let cP = cK._6
561- let cQ = cK._7
562- let cR = if ((cD == Y))
563- then IntegerEntry(f, cP)
564- else IntegerEntry(g, cQ)
565- let aV = aM(cN, cO)
566- let aW = fraction(ao, ai, aV)
567- let cS = (fraction((ao * ao), cN, cO) / fraction(ao, cL, cM))
568- let cT = fraction((cP + cQ), as, (2 * at))
569- if (if ((cJ >= aW))
570- then true
571- else (ai > aV))
572- then throw("Incorrect virtualSwapTokenPay or virtualSwapTokenGet value")
573- else if (if ((cH > cS))
574- then true
575- else (cS > cI))
576- then throw("Swap with virtualSwapTokenPay and virtualSwapTokenGet is possible, but ratio after virtual swap is incorrect")
577- else if (if ((cT > cP))
578- then true
579- else (cT > cQ))
580- then by(cT, cP, cQ)
581- else {
582- let cw = fraction(br(cL, Y), ao, cN)
583- let cx = fraction(br(cM, Z), ao, cO)
584- let cy = fraction(min([cw, cx]), ah, ao)
585-[Reissue(ag, cy, true), ScriptTransfer(bH.caller, cy, ag), IntegerEntry(i, (ah + cy)), cR, IntegerEntry(l, cs)]
586- }
557+@Callable(as)
558+func withdraw () = valueOrElse(bj(), {
559+ let cI = $Tuple2(as.payments[0].amount, as.payments[0].assetId)
560+ let ck = cI._1
561+ let cl = cI._2
562+ let cJ = fraction(ck, T, W)
563+ let cK = fraction(ck, U, W)
564+ let bU = aD((T - cJ), (U - cK))
565+ if ((size(as.payments) != 1))
566+ then bm()
567+ else if ((cl != V))
568+ then throw(("Incorrect asset attached. Expected: " + toBase58String(V)))
569+ else if (!(az))
570+ then ([ScriptTransfer(as.caller, ck, cl)] ++ br())
571+ else {
572+ let bV = if (containsElement(H, L))
573+ then invoke(this, "stakeUnstake", [false, cJ, L], nil)
574+ else 0
575+ if ((bV == bV))
576+ then {
577+ let bW = if (containsElement(H, M))
578+ then invoke(this, "stakeUnstake", [false, cK, M], nil)
579+ else 0
580+ if ((bW == bW))
581+ then [IntegerEntry(f, (T - cJ)), IntegerEntry(g, (U - cK)), IntegerEntry(i, (W - ck)), IntegerEntry(l, bU), Burn(V, ck), ScriptTransfer(as.caller, cJ, N), ScriptTransfer(as.caller, cK, O)]
582+ else throw("Strict value is not equal to itself.")
587583 }
588- }
584+ else throw("Strict value is not equal to itself.")
585+ }
586+ })
589587
590588
591589
592-@Callable(bH)
593-func withdraw () = {
594- let cU = $Tuple2(bH.payments[0].amount, bH.payments[0].assetId)
595- let cC = cU._1
596- let cD = cU._2
597- let cV = br(fraction(cC, ae, ah), Y)
598- let cW = br(fraction(cC, af, ah), Z)
599- let cs = aM((ae - cV), (af - cW))
600- if (!(V))
601- then bv()
602- else if ((size(bH.payments) != 1))
603- then throw("One attached payment expected")
604- else if ((cD != ag))
605- then throw(("Incorrect asset attached. Expected: " + toBase58String(ag)))
606- else if (!(aI))
607- then ([ScriptTransfer(bH.caller, cC, cD)] ++ bG())
608- else if (if ((cV > aE))
609- then true
610- else (cW > aF))
611- then bF(cV, cW)
612- else [IntegerEntry(f, (ae - cV)), IntegerEntry(g, (af - cW)), IntegerEntry(i, (ah - cC)), IntegerEntry(l, cs), Burn(ag, cC), ScriptTransfer(bH.caller, cV, Y), ScriptTransfer(bH.caller, cW, Z)]
613- }
590+@Callable(as)
591+func exchange (cL,cM) = valueOrElse(bj(), {
592+ let cN = $Tuple2(as.payments[0].amount, as.payments[0].assetId)
593+ let ck = cN._1
594+ let cl = cN._2
595+ if ((0 >= cL))
596+ then throw(("Estimated amount must be positive. Actual: " + toString(cL)))
597+ else if ((cM > cL))
598+ then throw(((("Minimal amount can't be greater than estimated. Estimated: " + toString(cL)) + ". Minimal: ") + toString(cM)))
599+ else if ((size(as.payments) != 1))
600+ then bm()
601+ else if (!(az))
602+ then ([ScriptTransfer(as.caller, ck, cl)] ++ br())
603+ else if (if ((cl != N))
604+ then (cl != O)
605+ else false)
606+ then bl()
607+ else if ((10000000 > ck))
608+ then throw("Only swap of 10.000000 or more tokens is allowed")
609+ else if (if ((ai > fraction(ac, cM, ck)))
610+ then true
611+ else (fraction(ac, cL, ck) > aj))
612+ then throw("Incorrect args and pmt ratio")
613+ else {
614+ let cO = if ((cl == N))
615+ then O
616+ else N
617+ let cP = aF(cL, cM, ck, cl)
618+ let bv = cP._1
619+ let cQ = cP._2
620+ let cR = fraction(bv, Z, aa)
621+ let cS = fraction(bv, (aa - Y), aa)
622+ let cT = if ((cl == N))
623+ then $Tuple2((T + ck), ((U - cS) - cR))
624+ else $Tuple2(((T - cS) - cR), (U + ck))
625+ let cB = cT._1
626+ let cC = cT._2
627+ let cH = fraction((cB + cC), ag, (2 * ah))
628+ if (if ((cH > cB))
629+ then true
630+ else (cH > cC))
631+ then bn(cH, cB, cC)
632+ else {
633+ let cU = bd(cl)
634+ let cn = cU._1
635+ let co = cU._2
636+ let cp = cU._3
637+ let cV = bd(cO)
638+ let cW = cV._1
639+ let cX = cV._2
640+ let cY = cV._3
641+ let bV = if (containsElement(H, cn))
642+ then invoke(this, "stakeUnstake", [true, ck, cn], nil)
643+ else 0
644+ if ((bV == bV))
645+ then {
646+ let bW = if (containsElement(H, cW))
647+ then invoke(this, "stakeUnstake", [false, (cS + cR), cW], nil)
648+ else 0
649+ if ((bW == bW))
650+ then [IntegerEntry(f, cB), IntegerEntry(g, cC), IntegerEntry(l, cQ), ScriptTransfer(as.caller, cS, cO), ScriptTransfer(E, cR, cO)]
651+ else throw("Strict value is not equal to itself.")
652+ }
653+ else throw("Strict value is not equal to itself.")
654+ }
655+ }
656+ })
614657
615658
616659
617-@Callable(bH)
618-func exchange (cX,cY) = {
619- let cZ = $Tuple2(bH.payments[0].amount, bH.payments[0].assetId)
620- let cC = cZ._1
621- let cD = cZ._2
622- if (!(V))
623- then bv()
624- else if ((0 >= cX))
625- then throw(("Estimated amount must be positive. Actual: " + toString(cX)))
626- else if ((cY > cX))
627- then throw(((("Minimal amount can't be greater than estimated. Estimated: " + toString(cX)) + ". Minimal: ") + toString(cY)))
628- else if ((size(bH.payments) != 1))
629- then throw("One attached payment expected")
630- else if (!(aI))
631- then ([ScriptTransfer(bH.caller, cC, cD)] ++ bG())
632- else if (if ((cD != Y))
633- then (cD != Z)
634- else false)
635- then bx()
636- else if ((10000000 > cC))
637- then throw("Only swap of 10.000000 or more tokens is allowed")
638- else if (if ((au > fraction(ao, cY, cC)))
639- then true
640- else (fraction(ao, cX, cC) > av))
641- then throw("Incorrect args and pmt ratio")
642- else {
643- let da = if ((cD == Y))
644- then Z
645- else Y
646- let bs = aO(cX, cY, cC, cD)
647- let db = fraction(bs, ak, al)
648- let dc = fraction(bs, (al - aj), al)
649- let dd = if ((cD == Y))
650- then $Tuple2((ae + cC), ((af - dc) - db))
651- else $Tuple2(((ae - dc) - db), (af + cC))
652- let cP = dd._1
653- let cQ = dd._2
654- let cT = fraction((cP + cQ), as, (2 * at))
655- if (if ((cT > cP))
656- then true
657- else (cT > cQ))
658- then by(cT, cP, cQ)
659- else if (if (if ((Y == S))
660- then (da == Y)
661- else false)
662- then (aB >= cP)
663- else false)
664- then bC(dc, aE, aa)
665- else if (if (if ((Z == S))
666- then (da == Z)
667- else false)
668- then (aB >= cQ)
669- else false)
670- then bC(dc, aF, ad)
671- else [IntegerEntry(f, cP), IntegerEntry(g, cQ), IntegerEntry(l, aM(cP, cQ)), ScriptTransfer(bH.caller, dc, da), ScriptTransfer(B, db, da)]
672- }
673- }
660+@Callable(as)
661+func shutdown () = valueOrElse(bk(as), if (!(K))
662+ then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, m), "the cause wasn't specified")))
663+ else bg("Paused by admin"))
674664
675665
676666
677-@Callable(bH)
678-func shutdown () = if (!(V))
679- then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, m), "the cause wasn't specified")))
680- else if (!(containsElement([I, J, K, L], bH.callerPublicKey)))
681- then bw()
682- else bp("Paused by admin")
667+@Callable(as)
668+func activate () = valueOrElse(bk(as), if (K)
669+ then bi()
670+ else [BooleanEntry(c, true), DeleteEntry(m)])
683671
684672
685673
686-@Callable(bH)
687-func activate () = if (V)
688- then bu()
689- else if (!(containsElement([I, J, K, L], bH.callerPublicKey)))
690- then bw()
691- else [BooleanEntry(c, true), DeleteEntry(m)]
674+@Callable(as)
675+func takeIntoAccountExtraFunds () = valueOrElse(bj(), {
676+ let cZ = (ax - T)
677+ let da = (ay - U)
678+ let cE = aD((T + cZ), (U + da))
679+ if ((as.caller != E))
680+ then throw("Only the wallet can call this function")
681+ else if (if ((0 > cZ))
682+ then true
683+ else (0 > da))
684+ then bg("Enroll amount negative")
685+ else if (if ((cZ == 0))
686+ then (da == 0)
687+ else false)
688+ then throw("No money to take")
689+ else {
690+ let bV = if (if (containsElement(H, L))
691+ then (cZ > 0)
692+ else false)
693+ then invoke(this, "stakeUnstake", [true, cZ, L], nil)
694+ else 0
695+ if ((bV == bV))
696+ then {
697+ let bW = if (if (containsElement(H, M))
698+ then (da > 0)
699+ else false)
700+ then invoke(this, "stakeUnstake", [true, da, M], nil)
701+ else 0
702+ if ((bW == bW))
703+ then [IntegerEntry(l, cE), IntegerEntry(f, (T + cZ)), IntegerEntry(g, (U + da)), IntegerEntry(("last_income_" + L), cZ), IntegerEntry(("last_income_" + M), da)]
704+ else throw("Strict value is not equal to itself.")
705+ }
706+ else throw("Strict value is not equal to itself.")
707+ }
708+ })
692709
693710
694711
695-@Callable(bH)
696-func enableFirstHarvest () = [BooleanEntry(n, true), IntegerEntry(o, (O + (Q * P)))]
712+@Callable(as)
713+func stakeUnstake (bt,bv,db) = if ((as.caller != this))
714+ then throw("Only contract itself can invoke this function")
715+ else {
716+ let dc = bu(bt, bv, fromBase58String(db))
717+ let bx = dc._1
718+ let dd = dc._2
719+ let de = dc._3
720+ let df = dc._4
721+ let dg = invoke(dd, bx, de, df)
722+ if ((dg == dg))
723+ then nil
724+ else throw("Strict value is not equal to itself.")
725+ }
697726
698727
699-
700-@Callable(bH)
701-func takeIntoAccountExtraFunds (de) = {
702- let df = (aG - ae)
703- let dg = (aH - af)
704- let dh = (df - (if ((Y == unit))
705- then de
706- else 0))
707- let di = (dg - (if ((Z == unit))
708- then de
709- else 0))
710- let aV = aM((ae + dh), (af + di))
711- if (!(V))
712- then bv()
713- else if ((bH.caller != this))
714- then bw()
715- else if ((0 > de))
716- then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(de)))
717- else if (if ((0 > df))
718- then true
719- else (0 > dg))
720- then bp("Enroll amount negative")
721- else if (if ((0 > dh))
722- then true
723- else (0 > di))
724- then throw("Too large amountLeave")
725- else [IntegerEntry(l, aV), IntegerEntry(f, (ae + dh)), IntegerEntry(g, (af + di)), IntegerEntry(("last_income_" + W), dh), IntegerEntry(("last_income_" + X), di)]
726- }
727-
728-
729-@Verifier(dj)
730-func dk () = {
731- let dl = {
732- let dm = if (sigVerify(dj.bodyBytes, dj.proofs[0], I))
728+@Verifier(dh)
729+func di () = {
730+ let dj = {
731+ let dk = if (sigVerify(dh.bodyBytes, dh.proofs[0], z))
733732 then 1
734733 else 0
735- let dn = if (sigVerify(dj.bodyBytes, dj.proofs[1], J))
734+ let dl = if (sigVerify(dh.bodyBytes, dh.proofs[1], A))
736735 then 1
737736 else 0
738- let do = if (sigVerify(dj.bodyBytes, dj.proofs[2], K))
737+ let dm = if (sigVerify(dh.bodyBytes, dh.proofs[2], B))
739738 then 1
740739 else 0
741- (((dm + dn) + do) >= 2)
740+ (((dk + dl) + dm) >= 2)
742741 }
743- let F = dj
744- if ($isInstanceOf(F, "InvokeScriptTransaction"))
742+ let w = dh
743+ if ($isInstanceOf(w, "InvokeScriptTransaction"))
745744 then {
746- let dp = F
747- let dq = if ((dp.dApp == this))
748- then (dp.function == "takeIntoAccountExtraFunds")
745+ let dg = w
746+ let dn = if ((dg.dApp == this))
747+ then (dg.function == "takeIntoAccountExtraFunds")
749748 else false
750- let dr = if ((dp.dApp == this))
751- then (dp.function == "enableFirstHarvest")
752- else false
753- let ds = if ((dp.dApp == R))
754- then if (if (if ((dp.function == "lockNeutrino"))
755- then (size(dp.payments) == 1)
756- else false)
757- then (dp.payments[0].assetId == S)
758- else false)
759- then true
760- else if ((dp.function == "unlockNeutrino"))
761- then (size(dp.payments) == 0)
762- else false
763- else false
764- let dt = if (if (if ((dp.dApp == z))
765- then (dp.function == "exchange")
766- else false)
767- then (Y == S)
749+ let do = if (if (if (sigVerify(dh.bodyBytes, dh.proofs[0], z))
750+ then true
751+ else sigVerify(dh.bodyBytes, dh.proofs[0], A))
752+ then true
753+ else sigVerify(dh.bodyBytes, dh.proofs[0], B))
754+ then true
755+ else sigVerify(dh.bodyBytes, dh.proofs[0], D)
756+ if (if (dn)
757+ then do
768758 else false)
769759 then true
770- else if (if ((Z == S))
771- then (size(dp.payments) == 1)
772- else false)
773- then (dp.payments[0].assetId == S)
774- else false
775- let du = if (if (if (sigVerify(dj.bodyBytes, dj.proofs[0], I))
776- then true
777- else sigVerify(dj.bodyBytes, dj.proofs[0], J))
778- then true
779- else sigVerify(dj.bodyBytes, dj.proofs[0], K))
780- then true
781- else sigVerify(dj.bodyBytes, dj.proofs[0], M)
782- if (if (if (if (if (dq)
783- then true
784- else dr)
785- then true
786- else ds)
787- then true
788- else dt)
789- then du
790- else false)
791- then true
792- else dl
760+ else dj
793761 }
794- else dl
762+ else dj
795763 }
796764
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
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
2626 let l = "invariant"
2727
2828 let m = "shutdown_cause"
2929
30-let n = "first_harvest"
30+let n = "staking_usdnnsbt_address"
3131
32-let o = "first_harvest_height"
32+let o = "staking_eurn_address"
3333
34-let p = "share_limit_on_first_harvest"
34+let p = "admin_pub_1"
3535
36-let q = "base_period"
36+let q = "admin_pub_2"
3737
38-let r = "period_length"
38+let r = "admin_pub_3"
3939
40-let s = "start_height"
40+let s = Address(base58'3N77kfPbQyjXWpDALX3xjKw3iEGMWEctV37')
4141
42-let t = "asset_priority_"
42+let t = Address(base58'3NBBWfzZtZtszaXbitTKnrB2xXwv26Bn7H9')
4343
44-let u = "script_hash_flat"
45-
46-let v = "init_pool_height_"
47-
48-let w = "admin_pub_1"
49-
50-let x = "admin_pub_2"
51-
52-let y = "admin_pub_3"
53-
54-let z = Address(base58'3N77kfPbQyjXWpDALX3xjKw3iEGMWEctV37')
55-
56-let A = Address(base58'3NBBWfzZtZtszaXbitTKnrB2xXwv26Bn7H9')
57-
58-let B = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
59-
60-let C = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
61-
62-func D (E) = {
63- let F = getString(A, E)
64- if ($isInstanceOf(F, "String"))
44+func u (v) = {
45+ let w = getString(t, v)
46+ if ($isInstanceOf(w, "String"))
6547 then {
66- let G = F
67- fromBase58String(G)
48+ let x = w
49+ fromBase58String(x)
6850 }
6951 else {
70- let H = F
52+ let y = w
7153 throw("Admin public key is empty")
7254 }
7355 }
7456
7557
76-let I = D(w)
58+let z = u(p)
7759
78-let J = D(x)
60+let A = u(q)
7961
80-let K = D(y)
62+let B = u(r)
8163
82-let L = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
64+let C = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
8365
84-let M = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
66+let D = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
8567
86-let N = valueOrErrorMessage(getInteger(C, q), "Empty kBasePeriod")
68+let E = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
8769
88-let O = valueOrErrorMessage(getInteger(C, s), "Empty kStartHeight")
70+let F = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
8971
90-let P = valueOrErrorMessage(getInteger(C, r), "Empty kPeriodLength")
72+let G = base58'ECBCkHS68DckpBrzLeoRgYbFg7sCVqR176mPqbXsj9pA'
9173
92-let Q = ((N + ((height - O) / P)) + 1)
74+let H = [toBase58String(F), toBase58String(G)]
9375
94-let R = Address(base58'3N6q7sCGSSLBUXDdjBdYGTJbZGZfhhh8cNg')
76+let I = Address(fromBase58String(valueOrErrorMessage(getString(t, n), "no usdn staking address")))
9577
96-let S = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
78+let J = Address(fromBase58String(valueOrErrorMessage(getString(t, o), "no usdn staking address")))
9779
98-let T = base58'2HAJrwa8q4SxBx9cHYaBTQdBjdk5wwqdof7ccpAx2uhZ'
80+let K = getBooleanValue(this, c)
9981
100-let U = 270000
82+let L = getStringValue(this, d)
10183
102-let V = getBooleanValue(this, c)
84+let M = getStringValue(this, e)
10385
104-let W = getStringValue(this, d)
86+let N = if ((L == "WAVES"))
87+ then unit
88+ else fromBase58String(L)
10589
106-let X = getStringValue(this, e)
90+let O = if ((M == "WAVES"))
91+ then unit
92+ else fromBase58String(M)
10793
108-let Y = if ((W == "WAVES"))
109- then unit
110- else fromBase58String(W)
111-
112-let Z = if ((X == "WAVES"))
113- then unit
114- else fromBase58String(X)
115-
116-let aa = {
117- let F = Y
118- if ($isInstanceOf(F, "ByteVector"))
94+let P = {
95+ let w = N
96+ if ($isInstanceOf(w, "ByteVector"))
11997 then {
120- let ab = F
121- value(assetInfo(ab)).name
98+ let Q = w
99+ value(assetInfo(Q)).name
122100 }
123- else if ($isInstanceOf(F, "Unit"))
101+ else if ($isInstanceOf(w, "Unit"))
124102 then {
125- let ac = F
103+ let R = w
126104 "WAVES"
127105 }
128106 else throw("Match error")
129107 }
130108
131-let ad = {
132- let F = Z
133- if ($isInstanceOf(F, "ByteVector"))
109+let S = {
110+ let w = O
111+ if ($isInstanceOf(w, "ByteVector"))
134112 then {
135- let ab = F
136- value(assetInfo(ab)).name
113+ let Q = w
114+ value(assetInfo(Q)).name
137115 }
138- else if ($isInstanceOf(F, "Unit"))
116+ else if ($isInstanceOf(w, "Unit"))
139117 then {
140- let ac = F
118+ let R = w
141119 "WAVES"
142120 }
143121 else throw("Match error")
144122 }
145123
146-let ae = getIntegerValue(this, f)
124+let T = getIntegerValue(this, f)
147125
148-let af = getIntegerValue(this, g)
126+let U = getIntegerValue(this, g)
149127
150-let ag = fromBase58String(getStringValue(this, h))
128+let V = fromBase58String(getStringValue(this, h))
151129
152-let ah = getIntegerValue(this, i)
130+let W = getIntegerValue(this, i)
153131
154-let ai = getIntegerValue(this, l)
132+let X = getIntegerValue(this, l)
155133
156-let aj = 500
134+let Y = 500
157135
158-let ak = 200
136+let Z = 200
159137
160-let al = 1000000
138+let aa = 1000000
161139
162-let am = 1000000000
140+let ab = 1000
163141
164-let an = 1000
142+let ac = 100000000
165143
166-let ao = 100000000
144+let ad = 10000000000000000
167145
168-let ap = 1000000000000
146+let ae = 1000
169147
170-let aq = 1000
148+let af = 8
171149
172-let ar = 8
150+let ag = 50
173151
174-let as = 50
152+let ah = 100
175153
176-let at = 100
154+let ai = 90000000
177155
178-let au = 90000000
156+let aj = 110000000
179157
180-let av = 110000000
158+let ak = 50
181159
182-let aw = 50
160+let al = 2
183161
184-let ax = 2
162+let am = 4600000000000000
185163
186-let ay = 46000000
187-
188-func az (aA) = {
189- let F = aA
190- if ($isInstanceOf(F, "ByteVector"))
164+func an (ao) = {
165+ let w = ao
166+ if ($isInstanceOf(w, "ByteVector"))
191167 then {
192- let ab = F
193- assetBalance(this, ab)
168+ let Q = w
169+ assetBalance(this, Q)
194170 }
195- else if ($isInstanceOf(F, "Unit"))
171+ else if ($isInstanceOf(w, "Unit"))
196172 then {
197- let ac = F
173+ let R = w
198174 wavesBalance(this).available
199175 }
200176 else throw("Match error")
201177 }
202178
203179
204-let aB = {
205- let F = getInteger(R, ((("rpd_balance_" + toBase58String(S)) + "_") + toString(this)))
206- if ($isInstanceOf(F, "Int"))
180+func ap (ao) = {
181+ let aq = {
182+ let w = ao
183+ if ($isInstanceOf(w, "ByteVector"))
184+ then {
185+ let ar = w
186+ if ((ar == F))
187+ then getInteger(I, ((("rpd_balance_" + toBase58String(ar)) + "_") + toString(this)))
188+ else if ((ar == G))
189+ then getInteger(J, ((("%s%s%s__stakingBalance__" + toBase58String(ar)) + "__") + toString(this)))
190+ else 0
191+ }
192+ else if ($isInstanceOf(w, "Unit"))
193+ then 0
194+ else throw("Match error")
195+ }
196+ let w = aq
197+ if ($isInstanceOf(w, "Int"))
207198 then {
208- let aC = F
209- aC
199+ let as = w
200+ as
210201 }
211- else if ($isInstanceOf(F, "Unit"))
212- then {
213- let H = F
214- 0
215- }
216- else throw("Match error")
217- }
218-
219-func aD (aA) = {
220- let F = aA
221- if ($isInstanceOf(F, "ByteVector"))
222- then {
223- let ab = F
224- if ((ab == S))
225- then true
226- else false
227- }
228- else if ($isInstanceOf(F, "Unit"))
229- then {
230- let ac = F
231- false
232- }
233- else throw("Match error")
202+ else 0
234203 }
235204
236205
237-let aE = (ae - (if ((Y == S))
238- then aB
239- else 0))
206+let at = ap(N)
240207
241-let aF = (af - (if ((Z == S))
242- then aB
243- else 0))
208+let au = ap(O)
244209
245-let aG = (az(Y) + (if ((Y == S))
246- then aB
247- else 0))
210+let av = (T - at)
248211
249-let aH = (az(Z) + (if ((Z == S))
250- then aB
251- else 0))
212+let aw = (U - au)
252213
253-let aI = if ((aG >= ae))
254- then (aH >= af)
214+let ax = (an(N) + at)
215+
216+let ay = (an(O) + au)
217+
218+let az = if ((ax >= T))
219+ then (ay >= U)
255220 else false
256221
257-func aJ (aK,aL) = (((fraction(ap, aK, aL) + fraction(ap, aL, aK)) / 2) / 10000)
222+func aA (aB,aC) = ((fraction(ad, aB, aC) + fraction(ad, aC, aB)) / 2)
258223
259224
260-func aM (aK,aL) = {
261- let aN = aJ(aK, aL)
262- (fraction((aK + aL), ao, pow(aN, ar, aw, ax, ar, CEILING)) + (2 * fraction(pow(fraction(aK, aL, ao), 0, 5, 1, (ar / 2), DOWN), pow((aN - ay), ar, aw, ax, ar, DOWN), ao)))
225+func aD (aB,aC) = {
226+ let aE = aA(aB, aC)
227+ (fraction((aB + aC), ad, pow(aE, af, ak, al, af, CEILING)) + (2 * fraction(toInt(pow(fraction(toBigInt(aB), toBigInt(aC), toBigInt(ac)), 0, toBigInt(5), 1, (af / 2), DOWN)), pow((aE - am), af, ak, al, af, DOWN), ac)))
263228 }
264229
265230
266-func aO (aP,aQ,aR,aS) = {
267- let aT = (ao - ((ao * 1) / 10000000))
268- let aU = (aP - aQ)
269- let aK = (ae + aR)
270- let aL = (af + aR)
271- let aV = if ((aS == Y))
272- then aM(aK, (af - aP))
273- else if ((aS == Z))
274- then aM((ae - aP), aL)
275- else throw("Wrong asset in payment")
276- let aW = fraction(ao, ai, aV)
277- func aX (aY,aZ) = if ((aY == -1))
231+func aF (aG,aH,aI,aJ) = {
232+ let aK = (ac - ((ac * 1) / 10000000))
233+ let aL = (aG - aH)
234+ let aB = (T + aI)
235+ let aC = (U + aI)
236+ func aM (aN,aO) = if ((aN._1 == -1))
278237 then {
279- let ba = (aP - ((aZ * aU) / 5))
280- let bb = if ((aS == Y))
281- then aM(aK, (af - ba))
282- else aM((ae - ba), aL)
283- if ((bb > ai))
284- then ba
285- else -1
238+ let aP = (aG - (((aO * aL) / 3) / ab))
239+ let aQ = if ((aJ == N))
240+ then aD(aB, (U - aP))
241+ else aD((T - aP), aC)
242+ if ((aQ > X))
243+ then $Tuple2(aP, aQ)
244+ else $Tuple2(-1, 0)
286245 }
287- else aY
246+ else aN
288247
289- let bc = {
290- let bd = [1, 2, 3, 4, 5]
291- let be = size(bd)
292- let bf = -1
293- if ((be == 0))
294- then bf
295- else {
296- let bg = aX(bf, bd[0])
297- if ((be == 1))
298- then bg
248+ let aR = aM($Tuple2(-1, 0), 3000)
249+ if ((0 > aR._1))
250+ then throw("Price is worse than minReceived")
251+ else {
252+ let aS = if ((aJ == N))
253+ then aD(aB, (U - aG))
254+ else if ((aJ == O))
255+ then aD((T - aG), aC)
256+ else throw("Wrong asset in payment")
257+ let aT = if ((X > aS))
258+ then if ((aK >= fraction(ac, X, aS)))
259+ then throw("Bad estimation provided 1")
299260 else {
300- let bh = aX(bg, bd[1])
301- if ((be == 2))
302- then bh
303- else {
304- let bi = aX(bh, bd[2])
305- if ((be == 3))
306- then bi
307- else {
308- let bj = aX(bi, bd[3])
309- if ((be == 4))
310- then bj
311- else {
312- let bk = aX(bj, bd[4])
313- if ((be == 5))
314- then bk
315- else {
316- let bl = aX(bk, bd[5])
317- throw("List size exceed 5")
318- }
319- }
320- }
321- }
261+ let aU = {
262+ let aV = [25, 200, 500]
263+ let aW = size(aV)
264+ let aX = $Tuple2(-1, 0)
265+ func aY (aZ,ba) = if ((ba >= aW))
266+ then aZ
267+ else aM(aZ, aV[ba])
268+
269+ func bb (aZ,ba) = if ((ba >= aW))
270+ then aZ
271+ else throw("List size exceeds 3")
272+
273+ bb(aY(aY(aY(aX, 0), 1), 2), 3)
274+ }
275+ if ((0 > aU._1))
276+ then aR
277+ else aU
322278 }
323- }
324- }
325- if ((0 > bc))
326- then throw("something went wrong while working with amountToSend")
327- else if (if ((aW > aT))
328- then (aV > ai)
329- else false)
330- then aP
331- else bc
279+ else {
280+ let aU = {
281+ let aV = [-500, -200, -25]
282+ let aW = size(aV)
283+ let aX = $Tuple2(-1, 0)
284+ func aY (aZ,ba) = if ((ba >= aW))
285+ then aZ
286+ else aM(aZ, aV[ba])
287+
288+ func bb (aZ,ba) = if ((ba >= aW))
289+ then aZ
290+ else throw("List size exceeds 3")
291+
292+ bb(aY(aY(aY(aX, 0), 1), 2), 3)
293+ }
294+ let bc = if ((0 > aU._1))
295+ then $Tuple2(aG, aS)
296+ else aU
297+ if ((aK >= fraction(ac, X, bc._2)))
298+ then throw("Bad estimation provided 2")
299+ else bc
300+ }
301+ aT
302+ }
332303 }
333304
334305
335-func bm (aA) = {
336- let F = aA
337- if ($isInstanceOf(F, "ByteVector"))
306+func bd (ao) = {
307+ let w = ao
308+ if ($isInstanceOf(w, "ByteVector"))
338309 then {
339- let ab = F
340- let bn = toBase58String(ab)
341- let bo = valueOrErrorMessage(assetInfo(ab), (("Asset " + bn) + " doesn't exist"))
342- $Tuple3(bn, bo.name, bo.decimals)
310+ let Q = w
311+ let be = toBase58String(Q)
312+ let bf = valueOrErrorMessage(assetInfo(Q), (("Asset " + be) + " doesn't exist"))
313+ $Tuple3(be, bf.name, bf.decimals)
343314 }
344- else if ($isInstanceOf(F, "Unit"))
315+ else if ($isInstanceOf(w, "Unit"))
345316 then {
346- let ac = F
317+ let R = w
347318 $Tuple3("WAVES", "WAVES", 8)
348319 }
349320 else throw("Match error")
350321 }
351322
352323
353-func bp (bq) = [BooleanEntry(c, false), StringEntry(m, bq)]
324+func bg (bh) = [BooleanEntry(c, false), StringEntry(m, bh)]
354325
355326
356-func br (bs,aA) = if ((aA == S))
357- then {
358- let bt = (bs - U)
359- if ((0 >= bt))
360- then throw((((("Insufficient amount " + toString(bs)) + " to deduct staking fee ") + toString(U)) + " USD-N"))
361- else bt
362- }
363- else bs
327+func bi () = throw("DApp is already active")
364328
365329
366-func bu () = throw("DApp is already active")
330+func bj () = if (K)
331+ then unit
332+ else throw("DApp is inactive at this moment")
367333
368334
369-func bv () = throw("DApp is inactive at this moment")
335+func bk (as) = if (containsElement([z, A, B], as.callerPublicKey))
336+ then unit
337+ else throw("Only admin can call this function")
370338
371339
372-func bw () = throw("Only admin can call this function")
340+func bl () = throw(((("Incorrect assets attached. Expected: " + L) + " and ") + M))
373341
374342
375-func bx () = throw(((("Incorrect assets attached. Expected: " + W) + " and ") + X))
343+func bm () = throw("One attached payment expected")
376344
377345
378-func by (bz,bA,bB) = throw(((((((((("New balance in assets of the DApp is less than threshold " + toString(bz)) + ": ") + toString(bA)) + " ") + aa) + ", ") + toString(bB)) + " ") + ad))
346+func bn (bo,bp,bq) = throw(((((((((("New balance in assets of the DApp is less than threshold " + toString(bo)) + ": ") + toString(bp)) + " ") + P) + ", ") + toString(bq)) + " ") + S))
379347
380348
381-func bC (bs,bD,bE) = throw((((((((("Insufficient DApp balance to pay " + toString(bs)) + " ") + bE) + " due to staking. Available: ") + toString(bD)) + " ") + bE) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
349+func br () = bg(((((((((((((((("Suspicious state. Actual balances: " + toString(T)) + " ") + P) + ", ") + toString(U)) + " ") + S) + ". State: ") + toString(an(N))) + " ") + P) + ", ") + toString(an(O))) + " ") + S))
382350
383351
384-func bF (bA,bB) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(bA)) + " ") + aa) + " and ") + toString(bB)) + " ") + ad) + " due to staking. Available: ") + toString(aE)) + " ") + aa) + " and ") + toString(aF)) + " ") + ad) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
352+func bs (bt,ao) = if (bt)
353+ then if ((ao == F))
354+ then $Tuple2("lockNeutrino", I)
355+ else $Tuple2("startStaking", J)
356+ else if ((ao == F))
357+ then $Tuple2("unlockNeutrino", I)
358+ else $Tuple2("stopStaking", J)
385359
386360
387-func bG () = bp(((((((((((((((("Suspicious state. Actual balances: " + toString(ae)) + " ") + aa) + ", ") + toString(af)) + " ") + ad) + ". State: ") + toString(az(Y))) + " ") + aa) + ", ") + toString(az(Z))) + " ") + ad))
361+func bu (bt,bv,ao) = if (bt)
362+ then {
363+ let bw = bs(bt, ao)
364+ let bx = bw._1
365+ let by = bw._2
366+ $Tuple4(bx, by, nil, [AttachedPayment(ao, bv)])
367+ }
368+ else {
369+ let bz = bs(bt, ao)
370+ let bx = bz._1
371+ let by = bz._2
372+ $Tuple4(bx, by, [bv, toBase58String(ao)], nil)
373+ }
388374
389375
390-@Callable(bH)
391-func init (bI) = {
392- let bJ = $Tuple2(bH.payments[0].amount, bH.payments[0].assetId)
393- let bK = bJ._1
394- let bL = bJ._2
395- let bM = $Tuple2(bH.payments[1].amount, bH.payments[1].assetId)
396- let bN = bM._1
397- let bO = bM._2
398- let bP = $Tuple2(bH.payments[2].amount, bH.payments[2].assetId)
399- let bQ = bP._1
400- let bR = bP._2
401- let bS = isDataStorageUntouched(this)
402- let bT = scriptHash(this)
403- let bU = addressFromStringValue(bI)
404- if ((bH.caller == this))
405- then throw("You can't call yourself")
406- else if (if ((bR != T))
407- then true
408- else (bQ != am))
409- then throw("You need to attach 10 SWOP tokens")
410- else if (if (!(aD(bL)))
411- then !(aD(bO))
412- else false)
413- then throw("One of assets must be USDN, WAVES or SWOP")
414- else if (if ((bT != value(getBinary(A, u))))
415- then true
416- else !(bS))
417- then throw("Unexpected script was found.")
418- else if (isDefined(getBoolean(this, c)))
419- then bu()
420- else if ((bL == bO))
421- then throw("Assets must be different")
422- else {
423- let bV = {
424- let F = bL
425- if ($isInstanceOf(F, "ByteVector"))
426- then {
427- let ab = F
428- toBase58String(ab)
429- }
430- else if ($isInstanceOf(F, "Unit"))
431- then {
432- let ac = F
433- "WAVES"
434- }
435- else throw("Match error")
436- }
437- let bW = {
438- let F = bO
439- if ($isInstanceOf(F, "ByteVector"))
440- then {
441- let ab = F
442- toBase58String(ab)
443- }
444- else if ($isInstanceOf(F, "Unit"))
445- then {
446- let ac = F
447- "WAVES"
448- }
449- else throw("Match error")
450- }
451- let bX = valueOrElse(getInteger(A, (t + bV)), 999999)
452- let bY = valueOrElse(getInteger(A, (t + bW)), 999999)
453- let bZ = if ((bY > bX))
454- then $Tuple4(bN, bO, bK, bL)
455- else $Tuple4(bK, bL, bN, bO)
456- let ca = bZ._1
457- let cb = bZ._2
458- let cc = bZ._3
459- let cd = bZ._4
460- let ce = bm(cb)
461- let cf = ce._1
462- let cg = ce._2
463- let ch = ce._3
464- let ci = bm(cd)
465- let cj = ci._1
466- let ck = ci._2
467- let cl = ci._3
468- let cm = ((("s" + take(cg, 7)) + "_") + take(ck, 7))
469- let cn = ((((("ShareToken of SwopFi protocol for " + cg) + " and ") + ck) + " at address ") + toString(this))
470- let co = ((ch + cl) / 2)
471- let cp = fraction(pow(ca, ch, 5, 1, ch, DOWN), pow(cc, cl, 5, 1, cl, DOWN), pow(10, 0, co, 0, 0, DOWN))
472- let cq = Issue(cm, cn, cp, co, true)
473- let cr = calculateAssetId(cq)
474- let cs = aM(ca, cc)
475-[StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, cf), StringEntry(e, cj), IntegerEntry(f, ca), IntegerEntry(g, cc), IntegerEntry(l, cs), IntegerEntry(j, aj), IntegerEntry(k, al), IntegerEntry(v, height), cq, StringEntry(h, toBase58String(cr)), IntegerEntry(i, cp), ScriptTransfer(bU, cp, cr), ScriptTransfer(B, am, T)]
476- }
376+@Callable(as)
377+func init () = {
378+ let bA = $Tuple2(as.payments[0].amount, as.payments[0].assetId)
379+ let bB = bA._1
380+ let bC = bA._2
381+ let bD = $Tuple2(as.payments[1].amount, as.payments[1].assetId)
382+ let bE = bD._1
383+ let bF = bD._2
384+ let bG = bd(bC)
385+ let bH = bG._1
386+ let bI = bG._2
387+ let bJ = bG._3
388+ let bK = bd(bF)
389+ let bL = bK._1
390+ let bM = bK._2
391+ let bN = bK._3
392+ if (isDefined(getBoolean(this, c)))
393+ then bi()
394+ else if ((bC == bF))
395+ then throw("Assets must be different")
396+ else {
397+ let bO = ((("s" + take(bI, 7)) + "_") + take(bM, 7))
398+ let bP = ((((("ShareToken of SwopFi protocol for " + bI) + " and ") + bM) + " at address ") + toString(this))
399+ let bQ = ((bJ + bN) / 2)
400+ let bR = fraction(pow(bB, bJ, 5, 1, bJ, DOWN), pow(bE, bN, 5, 1, bN, DOWN), pow(10, 0, bQ, 0, 0, DOWN))
401+ let bS = Issue(bO, bP, bR, bQ, true)
402+ let bT = calculateAssetId(bS)
403+ let bU = aD(bB, bE)
404+ let bV = if (containsElement(H, bH))
405+ then invoke(this, "stakeUnstake", [true, bB, bH], nil)
406+ else 0
407+ if ((bV == bV))
408+ then {
409+ let bW = if (containsElement(H, bL))
410+ then invoke(this, "stakeUnstake", [true, bE, bL], nil)
411+ else 0
412+ if ((bW == bW))
413+ then [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bH), StringEntry(e, bL), IntegerEntry(f, bB), IntegerEntry(g, bE), IntegerEntry(l, bU), IntegerEntry(j, Y), IntegerEntry(k, aa), bS, StringEntry(h, toBase58String(bT)), IntegerEntry(i, bR), ScriptTransfer(as.caller, bR, bT)]
414+ else throw("Strict value is not equal to itself.")
415+ }
416+ else throw("Strict value is not equal to itself.")
417+ }
477418 }
478419
479420
480421
481-@Callable(bH)
482-func keepLimitForFirstHarvest (ct) = if (!(V))
483- then throw("DApp is inactive at this moment")
484- else if (!(containsElement([I, J, K, M], bH.callerPublicKey)))
485- then throw("Only admin can call this function")
486- else [IntegerEntry(p, ct)]
422+@Callable(as)
423+func replenishWithTwoTokens () = valueOrElse(bj(), {
424+ let bC = as.payments[0].assetId
425+ let bF = as.payments[1].assetId
426+ let bX = fraction(ac, as.payments[0].amount, T)
427+ let bY = fraction(ac, as.payments[1].amount, U)
428+ let bZ = bd(bC)
429+ let bH = bZ._1
430+ let bI = bZ._2
431+ let bJ = bZ._3
432+ let ca = bd(bF)
433+ let bL = ca._1
434+ let bM = ca._2
435+ let bN = ca._3
436+ let cb = if ((bY > bX))
437+ then {
438+ let cc = fraction(U, bX, ac, CEILING)
439+ $Tuple5(as.payments[0].amount, cc, (as.payments[1].amount - cc), bF, bX)
440+ }
441+ else {
442+ let cc = fraction(U, bX, ac, CEILING)
443+ $Tuple5(cc, as.payments[1].amount, (as.payments[0].amount - cc), bC, bY)
444+ }
445+ let bB = cb._1
446+ let bE = cb._2
447+ let cd = cb._3
448+ let ce = cb._4
449+ let cf = cb._5
450+ let cg = fraction(cf, W, ac)
451+ if ((size(as.payments) != 2))
452+ then throw("Two attached assets expected")
453+ else if (if ((bC != N))
454+ then true
455+ else (bF != O))
456+ then bl()
457+ else if ((cg == 0))
458+ then throw("Too small amount to replenish")
459+ else if ((0 > cd))
460+ then throw("Change < 0")
461+ else if (!(az))
462+ then ([ScriptTransfer(as.caller, bB, bC), ScriptTransfer(as.caller, bE, bF)] ++ br())
463+ else {
464+ let bV = if (containsElement(H, bH))
465+ then invoke(this, "stakeUnstake", [true, bB, bH], nil)
466+ else 0
467+ if ((bV == bV))
468+ then {
469+ let bW = if (containsElement(H, bL))
470+ then invoke(this, "stakeUnstake", [true, bE, bL], nil)
471+ else 0
472+ if ((bW == bW))
473+ then [IntegerEntry(f, (T + bB)), IntegerEntry(g, (U + bE)), IntegerEntry(i, (W + cg)), IntegerEntry(l, aD((T + bB), (U + bE))), Reissue(V, cg, true), ScriptTransfer(as.caller, cg, V), ScriptTransfer(as.caller, cd, ce)]
474+ else throw("Strict value is not equal to itself.")
475+ }
476+ else throw("Strict value is not equal to itself.")
477+ }
478+ })
487479
488480
489481
490-@Callable(bH)
491-func replenishWithTwoTokens (cu) = {
492- let cb = bH.payments[0].assetId
493- let cd = bH.payments[1].assetId
494- let ca = br(bH.payments[0].amount, cb)
495- let cc = br(bH.payments[1].amount, cd)
496- let cv = fraction(fraction(ao, ae, ca), an, fraction(ao, af, cc))
497- let cw = fraction(ao, ca, ae)
498- let cx = fraction(ao, cc, af)
499- let cy = fraction(min([cw, cx]), ah, ao)
500- let cs = aM((ae + ca), (af + cc))
501- if (!(V))
502- then bv()
503- else if (if ((0 > cu))
504- then true
505- else (cu > 10))
506- then throw("Slippage tolerance must be <= 1%")
507- else if ((size(bH.payments) != 2))
508- then throw("Two attached assets expected")
509- else if (if ((cb != Y))
510- then true
511- else (cd != Z))
512- then bx()
513- else if (if ((((an * (aq - cu)) / aq) > cv))
514- then true
515- else (cv > ((an * (aq + cu)) / aq)))
516- then throw("Incorrect assets amount: amounts must have the contract ratio")
517- else if ((cy == 0))
518- then throw("Too small amount to replenish")
519- else if (!(aI))
520- then ([ScriptTransfer(bH.caller, ca, cb), ScriptTransfer(bH.caller, cc, cd)] ++ bG())
521- else [IntegerEntry(f, (ae + ca)), IntegerEntry(g, (af + cc)), IntegerEntry(i, (ah + cy)), IntegerEntry(l, cs), Reissue(ag, cy, true), ScriptTransfer(bH.caller, cy, ag)]
522- }
482+@Callable(as)
483+func replenishWithOneToken (ch,ci) = valueOrElse(bj(), {
484+ let cj = $Tuple2(as.payments[0].amount, as.payments[0].assetId)
485+ let ck = cj._1
486+ let cl = cj._2
487+ let cm = bd(cl)
488+ let cn = cm._1
489+ let co = cm._2
490+ let cp = cm._3
491+ let cq = 5000000
492+ let cr = 50000000
493+ let cs = if ((cr > ck))
494+ then 100000
495+ else 1
496+ let ct = (ac - ((ac * cs) / 10000000))
497+ let cu = (ac + ((ac * cs) / 10000000))
498+ let cv = (ac - ((ac * 1) / 10000000))
499+ if ((cq > ck))
500+ then throw((((("Payment amount " + toString(ck)) + " does not exceed the minimum amount of ") + toString(cq)) + " tokens"))
501+ else if ((size(as.payments) != 1))
502+ then bm()
503+ else if (!(az))
504+ then ([ScriptTransfer(as.caller, ck, cl)] ++ br())
505+ else if (if ((cl != N))
506+ then (cl != O)
507+ else false)
508+ then bl()
509+ else {
510+ let cw = if ((cl == N))
511+ then $Tuple7((ck - ch), ci, (T + ch), (U - ci), aD((T + ck), U), (T + ck), U)
512+ else $Tuple7(ci, (ck - ch), (T - ci), (U + ch), aD(T, (U + ck)), T, (U + ck))
513+ let cx = cw._1
514+ let cy = cw._2
515+ let cz = cw._3
516+ let cA = cw._4
517+ let bU = cw._5
518+ let cB = cw._6
519+ let cC = cw._7
520+ let cD = if ((cl == N))
521+ then IntegerEntry(f, cB)
522+ else IntegerEntry(g, cC)
523+ let cE = aD(cz, cA)
524+ let cF = fraction(ac, X, cE)
525+ let cG = (fraction((ac * ac), cz, cA) / fraction(ac, cx, cy))
526+ let cH = fraction((cB + cC), ag, (2 * ah))
527+ if (if ((cv >= cF))
528+ then true
529+ else (X > cE))
530+ then throw("Incorrect virtualSwapTokenPay or virtualSwapTokenGet value")
531+ else if (if ((ct > cG))
532+ then true
533+ else (cG > cu))
534+ then throw("Swap with virtualSwapTokenPay and virtualSwapTokenGet is possible, but ratio after virtual swap is incorrect")
535+ else if (if ((cH > cB))
536+ then true
537+ else (cH > cC))
538+ then bn(cH, cB, cC)
539+ else {
540+ let bV = if (containsElement(H, cn))
541+ then invoke(this, "stakeUnstake", [true, ck, cn], nil)
542+ else 0
543+ if ((bV == bV))
544+ then {
545+ let bX = fraction(cx, ac, cz)
546+ let bY = fraction(cy, ac, cA)
547+ let cg = fraction(min([bX, bY]), W, ac)
548+[Reissue(V, cg, true), ScriptTransfer(as.caller, cg, V), IntegerEntry(i, (W + cg)), cD, IntegerEntry(l, bU)]
549+ }
550+ else throw("Strict value is not equal to itself.")
551+ }
552+ }
553+ })
523554
524555
525556
526-@Callable(bH)
527-func replenishWithOneToken (cz,cA) = {
528- let cB = $Tuple2(bH.payments[0].amount, bH.payments[0].assetId)
529- let cC = cB._1
530- let cD = cB._2
531- let cE = 5000000
532- let cF = 50000000
533- let cG = if ((cF > cC))
534- then 100000
535- else 1
536- let cH = (ao - ((ao * cG) / 10000000))
537- let cI = (ao + ((ao * cG) / 10000000))
538- let cJ = (ao - ((ao * 1) / 10000000))
539- if (!(V))
540- then bv()
541- else if ((cE > cC))
542- then throw((((("Payment amount " + toString(cC)) + " does not exceed the minimum amount of ") + toString(cE)) + " tokens"))
543- else if ((size(bH.payments) != 1))
544- then throw("One attached payment expected")
545- else if (!(aI))
546- then ([ScriptTransfer(bH.caller, cC, cD)] ++ bG())
547- else if (if ((cD != Y))
548- then (cD != Z)
549- else false)
550- then bx()
551- else {
552- let cK = if ((cD == Y))
553- then $Tuple7((cC - cz), cA, (ae + cz), (af - cA), aM((ae + cC), af), (ae + cC), af)
554- else $Tuple7(cA, (cC - cz), (ae - cA), (af + cz), aM(ae, (af + cC)), ae, (af + cC))
555- let cL = cK._1
556- let cM = cK._2
557- let cN = cK._3
558- let cO = cK._4
559- let cs = cK._5
560- let cP = cK._6
561- let cQ = cK._7
562- let cR = if ((cD == Y))
563- then IntegerEntry(f, cP)
564- else IntegerEntry(g, cQ)
565- let aV = aM(cN, cO)
566- let aW = fraction(ao, ai, aV)
567- let cS = (fraction((ao * ao), cN, cO) / fraction(ao, cL, cM))
568- let cT = fraction((cP + cQ), as, (2 * at))
569- if (if ((cJ >= aW))
570- then true
571- else (ai > aV))
572- then throw("Incorrect virtualSwapTokenPay or virtualSwapTokenGet value")
573- else if (if ((cH > cS))
574- then true
575- else (cS > cI))
576- then throw("Swap with virtualSwapTokenPay and virtualSwapTokenGet is possible, but ratio after virtual swap is incorrect")
577- else if (if ((cT > cP))
578- then true
579- else (cT > cQ))
580- then by(cT, cP, cQ)
581- else {
582- let cw = fraction(br(cL, Y), ao, cN)
583- let cx = fraction(br(cM, Z), ao, cO)
584- let cy = fraction(min([cw, cx]), ah, ao)
585-[Reissue(ag, cy, true), ScriptTransfer(bH.caller, cy, ag), IntegerEntry(i, (ah + cy)), cR, IntegerEntry(l, cs)]
586- }
557+@Callable(as)
558+func withdraw () = valueOrElse(bj(), {
559+ let cI = $Tuple2(as.payments[0].amount, as.payments[0].assetId)
560+ let ck = cI._1
561+ let cl = cI._2
562+ let cJ = fraction(ck, T, W)
563+ let cK = fraction(ck, U, W)
564+ let bU = aD((T - cJ), (U - cK))
565+ if ((size(as.payments) != 1))
566+ then bm()
567+ else if ((cl != V))
568+ then throw(("Incorrect asset attached. Expected: " + toBase58String(V)))
569+ else if (!(az))
570+ then ([ScriptTransfer(as.caller, ck, cl)] ++ br())
571+ else {
572+ let bV = if (containsElement(H, L))
573+ then invoke(this, "stakeUnstake", [false, cJ, L], nil)
574+ else 0
575+ if ((bV == bV))
576+ then {
577+ let bW = if (containsElement(H, M))
578+ then invoke(this, "stakeUnstake", [false, cK, M], nil)
579+ else 0
580+ if ((bW == bW))
581+ then [IntegerEntry(f, (T - cJ)), IntegerEntry(g, (U - cK)), IntegerEntry(i, (W - ck)), IntegerEntry(l, bU), Burn(V, ck), ScriptTransfer(as.caller, cJ, N), ScriptTransfer(as.caller, cK, O)]
582+ else throw("Strict value is not equal to itself.")
587583 }
588- }
584+ else throw("Strict value is not equal to itself.")
585+ }
586+ })
589587
590588
591589
592-@Callable(bH)
593-func withdraw () = {
594- let cU = $Tuple2(bH.payments[0].amount, bH.payments[0].assetId)
595- let cC = cU._1
596- let cD = cU._2
597- let cV = br(fraction(cC, ae, ah), Y)
598- let cW = br(fraction(cC, af, ah), Z)
599- let cs = aM((ae - cV), (af - cW))
600- if (!(V))
601- then bv()
602- else if ((size(bH.payments) != 1))
603- then throw("One attached payment expected")
604- else if ((cD != ag))
605- then throw(("Incorrect asset attached. Expected: " + toBase58String(ag)))
606- else if (!(aI))
607- then ([ScriptTransfer(bH.caller, cC, cD)] ++ bG())
608- else if (if ((cV > aE))
609- then true
610- else (cW > aF))
611- then bF(cV, cW)
612- else [IntegerEntry(f, (ae - cV)), IntegerEntry(g, (af - cW)), IntegerEntry(i, (ah - cC)), IntegerEntry(l, cs), Burn(ag, cC), ScriptTransfer(bH.caller, cV, Y), ScriptTransfer(bH.caller, cW, Z)]
613- }
590+@Callable(as)
591+func exchange (cL,cM) = valueOrElse(bj(), {
592+ let cN = $Tuple2(as.payments[0].amount, as.payments[0].assetId)
593+ let ck = cN._1
594+ let cl = cN._2
595+ if ((0 >= cL))
596+ then throw(("Estimated amount must be positive. Actual: " + toString(cL)))
597+ else if ((cM > cL))
598+ then throw(((("Minimal amount can't be greater than estimated. Estimated: " + toString(cL)) + ". Minimal: ") + toString(cM)))
599+ else if ((size(as.payments) != 1))
600+ then bm()
601+ else if (!(az))
602+ then ([ScriptTransfer(as.caller, ck, cl)] ++ br())
603+ else if (if ((cl != N))
604+ then (cl != O)
605+ else false)
606+ then bl()
607+ else if ((10000000 > ck))
608+ then throw("Only swap of 10.000000 or more tokens is allowed")
609+ else if (if ((ai > fraction(ac, cM, ck)))
610+ then true
611+ else (fraction(ac, cL, ck) > aj))
612+ then throw("Incorrect args and pmt ratio")
613+ else {
614+ let cO = if ((cl == N))
615+ then O
616+ else N
617+ let cP = aF(cL, cM, ck, cl)
618+ let bv = cP._1
619+ let cQ = cP._2
620+ let cR = fraction(bv, Z, aa)
621+ let cS = fraction(bv, (aa - Y), aa)
622+ let cT = if ((cl == N))
623+ then $Tuple2((T + ck), ((U - cS) - cR))
624+ else $Tuple2(((T - cS) - cR), (U + ck))
625+ let cB = cT._1
626+ let cC = cT._2
627+ let cH = fraction((cB + cC), ag, (2 * ah))
628+ if (if ((cH > cB))
629+ then true
630+ else (cH > cC))
631+ then bn(cH, cB, cC)
632+ else {
633+ let cU = bd(cl)
634+ let cn = cU._1
635+ let co = cU._2
636+ let cp = cU._3
637+ let cV = bd(cO)
638+ let cW = cV._1
639+ let cX = cV._2
640+ let cY = cV._3
641+ let bV = if (containsElement(H, cn))
642+ then invoke(this, "stakeUnstake", [true, ck, cn], nil)
643+ else 0
644+ if ((bV == bV))
645+ then {
646+ let bW = if (containsElement(H, cW))
647+ then invoke(this, "stakeUnstake", [false, (cS + cR), cW], nil)
648+ else 0
649+ if ((bW == bW))
650+ then [IntegerEntry(f, cB), IntegerEntry(g, cC), IntegerEntry(l, cQ), ScriptTransfer(as.caller, cS, cO), ScriptTransfer(E, cR, cO)]
651+ else throw("Strict value is not equal to itself.")
652+ }
653+ else throw("Strict value is not equal to itself.")
654+ }
655+ }
656+ })
614657
615658
616659
617-@Callable(bH)
618-func exchange (cX,cY) = {
619- let cZ = $Tuple2(bH.payments[0].amount, bH.payments[0].assetId)
620- let cC = cZ._1
621- let cD = cZ._2
622- if (!(V))
623- then bv()
624- else if ((0 >= cX))
625- then throw(("Estimated amount must be positive. Actual: " + toString(cX)))
626- else if ((cY > cX))
627- then throw(((("Minimal amount can't be greater than estimated. Estimated: " + toString(cX)) + ". Minimal: ") + toString(cY)))
628- else if ((size(bH.payments) != 1))
629- then throw("One attached payment expected")
630- else if (!(aI))
631- then ([ScriptTransfer(bH.caller, cC, cD)] ++ bG())
632- else if (if ((cD != Y))
633- then (cD != Z)
634- else false)
635- then bx()
636- else if ((10000000 > cC))
637- then throw("Only swap of 10.000000 or more tokens is allowed")
638- else if (if ((au > fraction(ao, cY, cC)))
639- then true
640- else (fraction(ao, cX, cC) > av))
641- then throw("Incorrect args and pmt ratio")
642- else {
643- let da = if ((cD == Y))
644- then Z
645- else Y
646- let bs = aO(cX, cY, cC, cD)
647- let db = fraction(bs, ak, al)
648- let dc = fraction(bs, (al - aj), al)
649- let dd = if ((cD == Y))
650- then $Tuple2((ae + cC), ((af - dc) - db))
651- else $Tuple2(((ae - dc) - db), (af + cC))
652- let cP = dd._1
653- let cQ = dd._2
654- let cT = fraction((cP + cQ), as, (2 * at))
655- if (if ((cT > cP))
656- then true
657- else (cT > cQ))
658- then by(cT, cP, cQ)
659- else if (if (if ((Y == S))
660- then (da == Y)
661- else false)
662- then (aB >= cP)
663- else false)
664- then bC(dc, aE, aa)
665- else if (if (if ((Z == S))
666- then (da == Z)
667- else false)
668- then (aB >= cQ)
669- else false)
670- then bC(dc, aF, ad)
671- else [IntegerEntry(f, cP), IntegerEntry(g, cQ), IntegerEntry(l, aM(cP, cQ)), ScriptTransfer(bH.caller, dc, da), ScriptTransfer(B, db, da)]
672- }
673- }
660+@Callable(as)
661+func shutdown () = valueOrElse(bk(as), if (!(K))
662+ then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, m), "the cause wasn't specified")))
663+ else bg("Paused by admin"))
674664
675665
676666
677-@Callable(bH)
678-func shutdown () = if (!(V))
679- then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, m), "the cause wasn't specified")))
680- else if (!(containsElement([I, J, K, L], bH.callerPublicKey)))
681- then bw()
682- else bp("Paused by admin")
667+@Callable(as)
668+func activate () = valueOrElse(bk(as), if (K)
669+ then bi()
670+ else [BooleanEntry(c, true), DeleteEntry(m)])
683671
684672
685673
686-@Callable(bH)
687-func activate () = if (V)
688- then bu()
689- else if (!(containsElement([I, J, K, L], bH.callerPublicKey)))
690- then bw()
691- else [BooleanEntry(c, true), DeleteEntry(m)]
674+@Callable(as)
675+func takeIntoAccountExtraFunds () = valueOrElse(bj(), {
676+ let cZ = (ax - T)
677+ let da = (ay - U)
678+ let cE = aD((T + cZ), (U + da))
679+ if ((as.caller != E))
680+ then throw("Only the wallet can call this function")
681+ else if (if ((0 > cZ))
682+ then true
683+ else (0 > da))
684+ then bg("Enroll amount negative")
685+ else if (if ((cZ == 0))
686+ then (da == 0)
687+ else false)
688+ then throw("No money to take")
689+ else {
690+ let bV = if (if (containsElement(H, L))
691+ then (cZ > 0)
692+ else false)
693+ then invoke(this, "stakeUnstake", [true, cZ, L], nil)
694+ else 0
695+ if ((bV == bV))
696+ then {
697+ let bW = if (if (containsElement(H, M))
698+ then (da > 0)
699+ else false)
700+ then invoke(this, "stakeUnstake", [true, da, M], nil)
701+ else 0
702+ if ((bW == bW))
703+ then [IntegerEntry(l, cE), IntegerEntry(f, (T + cZ)), IntegerEntry(g, (U + da)), IntegerEntry(("last_income_" + L), cZ), IntegerEntry(("last_income_" + M), da)]
704+ else throw("Strict value is not equal to itself.")
705+ }
706+ else throw("Strict value is not equal to itself.")
707+ }
708+ })
692709
693710
694711
695-@Callable(bH)
696-func enableFirstHarvest () = [BooleanEntry(n, true), IntegerEntry(o, (O + (Q * P)))]
712+@Callable(as)
713+func stakeUnstake (bt,bv,db) = if ((as.caller != this))
714+ then throw("Only contract itself can invoke this function")
715+ else {
716+ let dc = bu(bt, bv, fromBase58String(db))
717+ let bx = dc._1
718+ let dd = dc._2
719+ let de = dc._3
720+ let df = dc._4
721+ let dg = invoke(dd, bx, de, df)
722+ if ((dg == dg))
723+ then nil
724+ else throw("Strict value is not equal to itself.")
725+ }
697726
698727
699-
700-@Callable(bH)
701-func takeIntoAccountExtraFunds (de) = {
702- let df = (aG - ae)
703- let dg = (aH - af)
704- let dh = (df - (if ((Y == unit))
705- then de
706- else 0))
707- let di = (dg - (if ((Z == unit))
708- then de
709- else 0))
710- let aV = aM((ae + dh), (af + di))
711- if (!(V))
712- then bv()
713- else if ((bH.caller != this))
714- then bw()
715- else if ((0 > de))
716- then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(de)))
717- else if (if ((0 > df))
718- then true
719- else (0 > dg))
720- then bp("Enroll amount negative")
721- else if (if ((0 > dh))
722- then true
723- else (0 > di))
724- then throw("Too large amountLeave")
725- else [IntegerEntry(l, aV), IntegerEntry(f, (ae + dh)), IntegerEntry(g, (af + di)), IntegerEntry(("last_income_" + W), dh), IntegerEntry(("last_income_" + X), di)]
726- }
727-
728-
729-@Verifier(dj)
730-func dk () = {
731- let dl = {
732- let dm = if (sigVerify(dj.bodyBytes, dj.proofs[0], I))
728+@Verifier(dh)
729+func di () = {
730+ let dj = {
731+ let dk = if (sigVerify(dh.bodyBytes, dh.proofs[0], z))
733732 then 1
734733 else 0
735- let dn = if (sigVerify(dj.bodyBytes, dj.proofs[1], J))
734+ let dl = if (sigVerify(dh.bodyBytes, dh.proofs[1], A))
736735 then 1
737736 else 0
738- let do = if (sigVerify(dj.bodyBytes, dj.proofs[2], K))
737+ let dm = if (sigVerify(dh.bodyBytes, dh.proofs[2], B))
739738 then 1
740739 else 0
741- (((dm + dn) + do) >= 2)
740+ (((dk + dl) + dm) >= 2)
742741 }
743- let F = dj
744- if ($isInstanceOf(F, "InvokeScriptTransaction"))
742+ let w = dh
743+ if ($isInstanceOf(w, "InvokeScriptTransaction"))
745744 then {
746- let dp = F
747- let dq = if ((dp.dApp == this))
748- then (dp.function == "takeIntoAccountExtraFunds")
745+ let dg = w
746+ let dn = if ((dg.dApp == this))
747+ then (dg.function == "takeIntoAccountExtraFunds")
749748 else false
750- let dr = if ((dp.dApp == this))
751- then (dp.function == "enableFirstHarvest")
752- else false
753- let ds = if ((dp.dApp == R))
754- then if (if (if ((dp.function == "lockNeutrino"))
755- then (size(dp.payments) == 1)
756- else false)
757- then (dp.payments[0].assetId == S)
758- else false)
759- then true
760- else if ((dp.function == "unlockNeutrino"))
761- then (size(dp.payments) == 0)
762- else false
763- else false
764- let dt = if (if (if ((dp.dApp == z))
765- then (dp.function == "exchange")
766- else false)
767- then (Y == S)
749+ let do = if (if (if (sigVerify(dh.bodyBytes, dh.proofs[0], z))
750+ then true
751+ else sigVerify(dh.bodyBytes, dh.proofs[0], A))
752+ then true
753+ else sigVerify(dh.bodyBytes, dh.proofs[0], B))
754+ then true
755+ else sigVerify(dh.bodyBytes, dh.proofs[0], D)
756+ if (if (dn)
757+ then do
768758 else false)
769759 then true
770- else if (if ((Z == S))
771- then (size(dp.payments) == 1)
772- else false)
773- then (dp.payments[0].assetId == S)
774- else false
775- let du = if (if (if (sigVerify(dj.bodyBytes, dj.proofs[0], I))
776- then true
777- else sigVerify(dj.bodyBytes, dj.proofs[0], J))
778- then true
779- else sigVerify(dj.bodyBytes, dj.proofs[0], K))
780- then true
781- else sigVerify(dj.bodyBytes, dj.proofs[0], M)
782- if (if (if (if (if (dq)
783- then true
784- else dr)
785- then true
786- else ds)
787- then true
788- else dt)
789- then du
790- else false)
791- then true
792- else dl
760+ else dj
793761 }
794- else dl
762+ else dj
795763 }
796764

github/deemru/w8io/169f3d6 
148.97 ms