tx · 8otCbNPTA6D5g3bgxP5T9BvpCRGbS1nmvZMbfwNY3Lcn

3N8rwRVNrxgqwFiVCNyX2Zyy6Lzgd1fDctN:  -0.01400000 Waves

2022.01.13 17:57 [1877332] smart account 3N8rwRVNrxgqwFiVCNyX2Zyy6Lzgd1fDctN > SELF 0.00000000 Waves

{ "type": 13, "id": "8otCbNPTA6D5g3bgxP5T9BvpCRGbS1nmvZMbfwNY3Lcn", "fee": 1400000, "feeAssetId": null, "timestamp": 1642085922779, "version": 2, "chainId": 84, "sender": "3N8rwRVNrxgqwFiVCNyX2Zyy6Lzgd1fDctN", "senderPublicKey": "2SGdJb3x9Ak59xjRyHMHFxLvh6dC5m37urdsBJy3f6TU", "proofs": [ "3FiKqZFxyeLasDc6oKMqjPkZxNH69cAQ6KhDLCC991yJ99E4K1NATtmc7awKTzUvpRtCBDpKDtYgD1SB8DGzzwaT", "g9zmoYYSMUG2Rv7raC5vngBXmjBT9MTdaxb8gPcnJtxN6xAJBPPEe5dvVx8qveDcT8hQFro5vWRGRNjmJjd7nXy" ], "script": "base64:AAIFAAAAAAAAACYIAhIAEgMKAQESBAoCAQESABIECgIBARIAEgASABIFCgMEAQgSAAAAAFEAAAAAB3ZlcnNpb24CAAAABTIuMC4wAAAAAAhrVmVyc2lvbgIAAAAHdmVyc2lvbgAAAAAHa0FjdGl2ZQIAAAAGYWN0aXZlAAAAAAlrQXNzZXRJZEECAAAACkFfYXNzZXRfaWQAAAAACWtBc3NldElkQgIAAAAKQl9hc3NldF9pZAAAAAAJa0JhbGFuY2VBAgAAAA9BX2Fzc2V0X2JhbGFuY2UAAAAACWtCYWxhbmNlQgIAAAAPQl9hc3NldF9iYWxhbmNlAAAAAA1rU2hhcmVBc3NldElkAgAAAA5zaGFyZV9hc3NldF9pZAAAAAARa1NoYXJlQXNzZXRTdXBwbHkCAAAAEnNoYXJlX2Fzc2V0X3N1cHBseQAAAAAEa0ZlZQIAAAAKY29tbWlzc2lvbgAAAAASa0ZlZVNjYWxlRGVsaW1pdGVyAgAAABpjb21taXNzaW9uX3NjYWxlX2RlbGltaXRlcgAAAAAKa0ludmFyaWFudAIAAAAJaW52YXJpYW50AAAAAAZrQ2F1c2UCAAAADnNodXRkb3duX2NhdXNlAAAAABJrZXlVU0ROTlNCVEFkZHJlc3MCAAAAGHN0YWtpbmdfdXNkbm5zYnRfYWRkcmVzcwAAAAAOa2V5RVVSTkFkZHJlc3MCAAAAFHN0YWtpbmdfZXVybl9hZGRyZXNzAAAAAA9rZXlBZG1pblB1YktleTECAAAAC2FkbWluX3B1Yl8xAAAAAA9rZXlBZG1pblB1YktleTICAAAAC2FkbWluX3B1Yl8yAAAAAA9rZXlBZG1pblB1YktleTMCAAAAC2FkbWluX3B1Yl8zAAAAABRVU0ROVG9XYXZlc0V4Y2hhbmdlcgkBAAAAB0FkZHJlc3MAAAABAQAAABoBV6ugnY67/HaJPzVO8b2xSyoDl1hFH8eK8wAAAAAGb3JhY2xlCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFXiv8IaJo1ukDNYXTyEjfepjfw+jjO6B44AQAAAAtnZXRBZG1pblB1YgAAAAEAAAALa2V5QWRtaW5QdWIEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAGb3JhY2xlBQAAAAtrZXlBZG1pblB1YgMJAAABAAAAAgUAAAAH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AA1zbGlwcGFnZVZhbHVlCQAAZQAAAAIFAAAABnNjYWxlOAkAAGkAAAACCQAAaAAAAAIFAAAABnNjYWxlOAAAAAAAAAAAAQAAAAAAAJiWgAQAAAAeZGVsdGFCZXR3ZWVuTWF4QW5kTWluU2VuZFZhbHVlCQAAZQAAAAIFAAAAFWFtb3VudFRvU2VuZEVzdGltYXRlZAUAAAAVbWluVG9rZW5SZWNlaXZlQW1vdW50BAAAAAF4CQAAZAAAAAIFAAAACGJhbGFuY2VBBQAAABJ0b2tlblJlY2VpdmVBbW91bnQEAAAAAXkJAABkAAAAAgUAAAAIYmFsYW5jZUIFAAAAEnRva2VuUmVjZWl2ZUFtb3VudAQAAAAMaW52YXJpYW50TmV3AwkAAAAAAAACBQAAAAd0b2tlbklkBQAAAAhhc3NldElkQQkBAAAADWludmFyaWFudENhbGMAAAACBQAAAAF4CQAAZQAAAAIFAAAACGJhbGFuY2VCBQAAABVhbW91bnRUb1NlbmRFc3RpbWF0ZWQDCQAAAAAAAAIFAAAAB3Rva2VuSWQFAAAACGFzc2V0SWRCCQEAAAANaW52YXJpYW50Q2FsYwAAAAIJAABlAAAAAgUAAAAIYmFsYW5jZUEFAAAAFWFtb3VudFRvU2VuZEVzdGltYXRlZAUAAAABeQkAAAIAAAABAgAAABZXcm9uZyBhc3NldCBpbiBwYXltZW50BAAAABdpbnZhcmlhbnRFc3RpbWF0ZWRSYXRpbwkAAGsAAAADBQAAAAZzY2FsZTgFAAAACWludmFyaWFudAUAAAAMaW52YXJpYW50TmV3CgEAAAANZ2V0U3RlcEFtb3VudAAAAAIAAAADYWNjAAAABHN0ZXADCQAAAAAAAAIFAAAAA2FjYwD//////////wQAAAAMYW1vdW50VG9TZW5kCQAAZQAAAAIFAAAAFWFtb3VudFRvU2VuZEVzdGltYXRlZAkAAGkAAAACCQAAaAAAAAIFAAAABHN0ZXAFAAAAHmRlbHRhQmV0d2Vlbk1heEFuZE1pblNlbmRWYWx1ZQAAAAAAAAAABQQAAAANc3RlcEludmFyaWFudAMJAAAAAAAAAgUAAAAHdG9rZW5JZAUAAAAIYXNzZXRJZEEJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgUAAAABeAkAAGUAAAACBQAA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bnRlZ2VyRW50cnkAAAACBQAAABFrU2hhcmVBc3NldFN1cHBseQUAAAASc2hhcmVJbml0aWFsU3VwcGx5CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAASc2hhcmVJbml0aWFsU3VwcGx5BQAAAAxzaGFyZUlzc3VlSWQFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAFnJlcGxlbmlzaFdpdGhUd29Ub2tlbnMAAAABAAAAEXNsaXBwYWdlVG9sZXJhbmNlBAAAAAtwbXRBc3NldElkQQgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAQAAAALcG10QXNzZXRJZEIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABAAAAB2Fzc2V0SWQEAAAACnBtdEFtb3VudEEICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAQAAAAKcG10QW1vdW50QggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEAAAAGYW1vdW50BAAAAA0kdDAxMTkyMTExOTk4CQEAAAAMZ2V0QXNzZXRJbmZvAAAAAQUAAAALcG10QXNzZXRJZEEEAAAADnBtdFN0ckFzc2V0SWRBCAUAAAANJHQwMTE5MjExMTk5OAAAAAJfMQQAAAANcG10QXNzZXROYW1lQQgFAAAADSR0MDExOTIxMTE5OTgAAAACXzIEAAAADHBtdERlY2ltYWxzQQgFAAAADSR0MDExOTIxMTE5OTgAAAACXzMEAAAADSR0MDEyMDAzMTIxOTcJAQAAAAxnZXRBc3NldEluZm8AAAABBQAAAAtwbXRBc3NldElkQgQAAAAOcG10U3RyQXNzZXRJZEIIBQAAAA0kdDAxMjAwMzEyMTk3AAAAAl8xBAAAAA1wbXRBc3NldE5hbWVCCAUAAAANJHQwMTIwMDMxMjE5NwAAAAJfMgQAAAAMcG10RGVjaW1hbHNCCAUAAAANJHQwMTIwMDMxMjE5NwAAAAJfMwQAAAAKdG9rZW5SYXRpbwkAAGsAAAADCQAAawAAAAMFAAAABnNjYWxlOAUAAAAIYmFsYW5jZUEFAAAACnBtdEFtb3VudEEFAAAABnNjYWxlMwkAAGsAAAADBQAAAAZzY2FsZTgFAAAACGJhbGFuY2VCBQAAAApwbXRBbW91bnRCBAAAABNyYXRpb1NoYXJlVG9rZW5zSW5BCQAAawAAAAMFAAAABnNjYWxlOAUAAAAKcG10QW1vdW50QQUAAAAIYmFsYW5jZUEEAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkIJAABrAAAAAwUAAAAGc2NhbGU4BQAAAApwbXRBbW91bnRCBQAAAAhiYWxhbmNlQgQAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50CQAAawAAAAMJAAGXAAAAAQkABEwAAAACBQAAABNyYXRpb1NoYXJlVG9rZW5zSW5BCQAETAAAAAIFAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkIFAAAAA25pbAUAAAAQc2hhcmVBc3NldFN1cHBseQUAAAAGc2NhbGU4BAAAABNpbnZhcmlhbnRDYWxjdWxhdGVkCQEAAAANaW52YXJpYW50Q2FsYwAAAAIJAABkAAAAAgUAAAAIYmFsYW5jZUEFAAAACnBtdEFtb3VudEEJAABkAAAAAgUAAAAIYmFsYW5jZUIFAAAACnBtdEFtb3VudEIDCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQEAAAAPdGhyb3dJc0luYWN0aXZlAAAAAAMDCQAAZgAAAAIAAAAAAAAAAAAFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBgkAAGYAAAACBQAAABFzbGlwcGFnZVRvbGVyYW5jZQAAAAAAAAAACgkAAAIAAAABAgAAACBTbGlwcGFnZSB0b2xlcmFuY2UgbXVzdCBiZSA8PSAxJQMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAIJAAACAAAAAQIAAAAcVHdvIGF0dGFjaGVkIGFzc2V0cyBleHBlY3RlZAMDCQEAAAACIT0AAAACBQAAAAtwbXRBc3NldElkQQUAAAAIYXNzZXRJZEEGCQEAAAACIT0AAAACBQAAAAtwbXRBc3NldElkQgUAAAAIYXNzZXRJZEIJAQAAAAt0aHJvd0Fzc2V0cwAAAAADAwkAAGYAAAACCQAAaQAAAAIJAABoAAAAAgUAAAAGc2NhbGUzCQAAZQAAAAIFAAAADnNsaXBwYWdlU2NhbGUzBQAAABFzbGlwcGFnZVRvbGVyYW5jZQUAAAAOc2xpcHBhZ2VTY2FsZTMFAAAACnRva2VuUmF0aW8GCQAAZgAAAAIFAAAACnRva2VuUmF0aW8JAABpAAAAAgkAAGgAAAACBQAAAAZzY2FsZTMJAABkAAAAAgUAAAAOc2xpcHBhZ2VTY2FsZTMFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBQAAAA5zbGlwcGFnZVNjYWxlMwkAAAIAAAABAgAAAD1JbmNvcnJlY3QgYXNzZXRzIGFtb3VudDogYW1vdW50cyBtdXN0IGhhdmUgdGhlIGNvbnRyYWN0IHJhdGlvAwkAAAAAAAACBQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQAAAAAAAAAAAAJAAACAAAAAQIAAAAdVG9vIHNtYWxsIGFtb3VudCB0byByZXBsZW5pc2gDCQEAAAABIQAAAAEFAAAAEGhhc0Vub3VnaEJhbGFuY2UJAAROAAAAAgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAACnBtdEFtb3VudEEFAAAAC3BtdEFzc2V0SWRBCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAKcG10QW1vdW50QgUAAAALcG10QXNzZXRJZEIFAAAAA25pbAkBAAAAEXN1c3BlbmRTdXNwaWNpb3VzAAAAAAQAAAAGc3Rha2UxAwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAADXN0YWtpbmdBc3NldHMFAAAADnBtdFN0ckFzc2V0SWRBCQAD/AAAAAQFAAAABHRoaXMCAAAADHN0YWtlVW5zdGFrZQkABEwAAAACBgkABEwAAAACBQAAAApwbXRBbW91bnRBCQAETAAAAAIFAAAADnBtdFN0ckFzc2V0SWRBBQAAAANuaWwFAAAAA25pbAAAAAAAAAAAAAMJAAAAAAAAAgUAAAAGc3Rha2UxBQAAAAZzdGFrZTEEAAAABnN0YWtlMgMJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAA1zdGFraW5nQXNzZXRzBQAAAA5wbXRTdHJBc3NldElkQgkAA/wAAAAEBQAAAAR0aGlzAgAAAAxzdGFrZVVuc3Rha2UJAARMAAAAAgYJAARMAAAAAgUAAAAKcG10QW1vdW50QgkABEwAAAACBQAAAA5wbXRTdHJBc3NldElkQgUAAAADbmlsBQAAAANuaWwAAAAAAAAAAAADCQAAAAAAAAIFAAAABnN0YWtlMgUAAAAGc3Rha2UyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAlrQmFsYW5jZUEJAABkAAAAAgUAAAAIYmFsYW5jZUEFAAAACnBtdEFtb3VudEEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACWtCYWxhbmNlQgkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAAKcG10QW1vdW50QgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAARa1NoYXJlQXNzZXRTdXBwbHkJAABkAAAAAgUAAAAQc2hhcmVBc3NldFN1cHBseQUAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAprSW52YXJpYW50BQAAABNpbnZhcmlhbnRDYWxjdWxhdGVkCQAETAAAAAIJAQAAAAdSZWlzc3VlAAAAAwUAAAAMc2hhcmVBc3NldElkBQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQGCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50BQAAAAxzaGFyZUFzc2V0SWQFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAFXJlcGxlbmlzaFdpdGhPbmVUb2tlbgAAAAIAAAATdmlydHVhbFN3YXBUb2tlblBheQAAABN2aXJ0dWFsU3dhcFRv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AAcFAAAAE3ZpcnR1YWxTd2FwVG9rZW5HZXQJAABlAAAAAgUAAAAJcG10QW1vdW50BQAAABN2aXJ0dWFsU3dhcFRva2VuUGF5CQAAZQAAAAIFAAAACGJhbGFuY2VBBQAAABN2aXJ0dWFsU3dhcFRva2VuR2V0CQAAZAAAAAIFAAAACGJhbGFuY2VCBQAAABN2aXJ0dWFsU3dhcFRva2VuUGF5CQEAAAANaW52YXJpYW50Q2FsYwAAAAIFAAAACGJhbGFuY2VBCQAAZAAAAAIFAAAACGJhbGFuY2VCBQAAAAlwbXRBbW91bnQFAAAACGJhbGFuY2VBCQAAZAAAAAIFAAAACGJhbGFuY2VCBQAAAAlwbXRBbW91bnQEAAAAEXZpcnR1YWxSZXBsZW5pc2hBCAUAAAANJHQwMTU2NjExNjQyNgAAAAJfMQQAAAARdmlydHVhbFJlcGxlbmlzaEIIBQAAAA0kdDAxNTY2MTE2NDI2AAAAAl8yBAAAABFiYWxhbmNlQWZ0ZXJTd2FwQQgFAAAADSR0MDE1NjYxMTY0MjYAAAACXzMEAAAAEWJhbGFuY2VBZnRlclN3YXBCCAUAAAANJHQwMTU2NjExNjQyNgAAAAJfNAQAAAATaW52YXJpYW50Q2FsY3VsYXRlZAgFAAAADSR0MDE1NjYxMTY0MjYAAAACXzUEAAAAC25ld0JhbGFuY2VBCAUAAAANJHQwMTU2NjExNjQyNgAAAAJfNgQAAAALbmV3QmFsYW5jZUIIBQAAAA0kdDAxNTY2MTE2NDI2AAAAAl83BAAAAA9uZXdCYWxhbmNlRW50cnkDCQAAAAAAAAIFAAAACnBtdEFzc2V0SWQFAAAACGFzc2V0SWRBCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAJa0JhbGFuY2VBBQAAAAtuZXdCYWxhbmNlQQkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACWtCYWxhbmNlQgUAAAALbmV3QmFsYW5jZUIEAAAADGludmFyaWFudE5ldwkBAAAADWludmFyaWFudENhbGMAAAACBQAAABFiYWxhbmNlQWZ0ZXJTd2FwQQUAAAARYmFsYW5jZUFmdGVyU3dhcEIEAAAAF2ludmFyaWFudEVzdGltYXRlZFJhdGlvCQAAawAAAAMFAAAABnNjYWxlOAUAAAAJaW52YXJpYW50BQAAAAxpbnZhcmlhbnROZXcEAAAAJXJhdGlvVmlydHVhbEJhbGFuY2VUb1ZpcnR1YWxSZXBsZW5pc2gJAABpAAAAAgkAAGsAAAADCQAAaAAAAAIFAAAABnNjYWxlOAUAAAAGc2NhbGU4BQAAABFiYWxhbmNlQWZ0ZXJTd2FwQQUAAAARYmFsYW5jZUFmdGVyU3dhcEIJAABrAAAAAwUAAAAGc2NhbGU4BQAAABF2aXJ0dWFsUmVwbGVuaXNoQQUAAAARdmlydHVhbFJlcGxlbmlzaEIEAAAAE2RBcHBUaHJlc2hvbGRBbW91bnQJAABrAAAAAwkAAGQAAAACBQAAAAtuZXdCYWxhbmNlQQUAAAALbmV3QmFsYW5jZUIFAAAADWRBcHBUaHJlc2hvbGQJAABoAAAAAgAAAAAAAAAAAgUAAAATZEFwcFRocmVzaG9sZFNjYWxlMgMDCQAAZwAAAAIFAAAAF3NsaXBwYWdlVmFsdWVNaW5Gb3JTd2FwBQAAABdpbnZhcmlhbnRFc3RpbWF0ZWRSYXRpbwYJAABmAAAAAgUAAAAJaW52YXJpYW50BQAAAAxpbnZhcmlhbnROZXcJAAACAAAAAQIAAAA6SW5jb3JyZWN0IHZpcnR1YWxTd2FwVG9rZW5QYXkgb3IgdmlydHVhbFN3YXBUb2tlbkdldCB2YWx1ZQMDCQAAZgAAAAIFAAAAHHNsaXBwYWdlVmFsdWVNaW5Gb3JSZXBsZW5pc2gFAAAAJXJhdGlvVmlydHVhbEJhbGFuY2VUb1ZpcnR1YWxSZXBsZW5pc2gGCQAAZgAAAAIFAAAAJXJhdGlvVmlydHVhbEJhbGFuY2VUb1ZpcnR1YWxSZXBsZW5pc2gFAAAAHHNsaXBwYWdlVmFsdWVNYXhGb3JSZXBsZW5pc2gJAAACAAAAAQIAAABsU3dhcCB3aXRoIHZpcnR1YWxTd2FwVG9rZW5QYXkgYW5kIHZpcnR1YWxTd2FwVG9rZW5HZXQgaXMgcG9zc2libGUsIGJ1dCByYXRpbyBhZnRlciB2aXJ0dWFsIHN3YXAgaXMgaW5jb3JyZWN0AwMJAABmAAAAAgUAAAATZEFwcFRocmVzaG9sZEFtb3VudAUAAAALbmV3QmFsYW5jZUEGCQAAZgAAAAIFAAAAE2RBcHBUaHJlc2hvbGRBbW91bnQFAAAAC25ld0JhbGFuY2VCCQEAAAAOdGhyb3dUaHJlc2hvbGQAAAADBQAAABNkQXBwVGhyZXNob2xkQW1vdW50BQAAAAtuZXdCYWxhbmNlQQUAAAALbmV3QmFsYW5jZUIEAAAABnN0YWtlMQMJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAA1zdGFraW5nQXNzZXRzBQAAAA1wbXRTdHJBc3NldElkCQAD/AAAAAQFAAAABHRoaXMCAAAADHN0YWtlVW5zdGFrZQkABEwAAAACBgkABEwAAAACBQAAAAlwbXRBbW91bnQJAARMAAAAAgUAAAANcG10U3RyQXNzZXRJZAUAAAADbmlsBQAAAANuaWwAAAAAAAAAAAADCQAAAAAAAAIFAAAABnN0YWtlMQUAAAAGc3Rha2UxBAAAABNyYXRpb1NoYXJlVG9rZW5zSW5BCQAAawAAAAMFAAAAEXZpcnR1YWxSZXBsZW5pc2hBBQAAAAZzY2FsZTgFAAAAEWJhbGFuY2VBZnRlclN3YXBBBAAAABNyYXRpb1NoYXJlVG9rZW5zSW5CCQAAawAAAAMFAAAAEXZpcnR1YWxSZXBsZW5pc2hCBQAAAAZzY2FsZTgFAAAAEWJhbGFuY2VBZnRlclN3YXBCBAAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQJAABrAAAAAwkAAZcAAAABCQAETAAAAAIFAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkEJAARMAAAAAgUAAAATcmF0aW9TaGFyZVRva2Vuc0luQgUAAAADbmlsBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAAAZzY2FsZTgJAARMAAAAAgkBAAAAB1JlaXNzdWUAAAADBQAAAAxzaGFyZUFzc2V0SWQFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAYJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQFAAAADHNoYXJlQXNzZXRJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAARa1NoYXJlQXNzZXRTdXBwbHkJAABkAAAAAgUAAAAQc2hhcmVBc3NldFN1cHBseQUAAAAVc2hhcmVUb2tlblRvUGF5QW1v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AAprSW52YXJpYW50BQAAABNpbnZhcmlhbnRDYWxjdWxhdGVkCQAETAAAAAIJAQAAAARCdXJuAAAAAgUAAAAMc2hhcmVBc3NldElkBQAAAAlwbXRBbW91bnQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAxhbW91bnRUb1BheUEFAAAACGFzc2V0SWRBCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAMYW1vdW50VG9QYXlCBQAAAAhhc3NldElkQgUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAIZXhjaGFuZ2UAAAACAAAAGGVzdGltYXRlZEFtb3VudFRvUmVjZWl2ZQAAABJtaW5BbW91bnRUb1JlY2VpdmUEAAAADSR0MDIwMzA5MjAzODQJAAUUAAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAAlwbXRBbW91bnQIBQAAAA0kdDAyMDMwOTIwMzg0AAAAAl8xBAAAAApwbXRBc3NldElkCAUAAAANJHQwMjAzMDkyMDM4NAAAAAJfMgMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAQAAAA90aHJvd0lzSW5hY3RpdmUAAAAAAwkAAGcAAAACAAAAAAAAAAAABQAAABhlc3RpbWF0ZWRBbW91bnRUb1JlY2VpdmUJAAACAAAAAQkAASwAAAACAgAAACtFc3RpbWF0ZWQgYW1vdW50IG11c3QgYmUgcG9zaXRpdmUuIEFjdHVhbDogCQABpAAAAAEFAAAAGGVzdGltYXRlZEFtb3VudFRvUmVjZWl2ZQMJAABmAAAAAgUAAAASbWluQW1vdW50VG9SZWNlaXZlBQAAABhlc3RpbWF0ZWRBbW91bnRUb1JlY2VpdmUJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAA7TWluaW1hbCBhbW91bnQgY2FuJ3QgYmUgZ3JlYXRlciB0aGFuIGVzdGltYXRlZC4gRXN0aW1hdGVkOiAJAAGkAAAAAQUAAAAYZXN0aW1hdGVkQW1vdW50VG9SZWNlaXZlAgAAAAsuIE1pbmltYWw6IAkAAaQAAAABBQAAABJtaW5BbW91bnRUb1JlY2VpdmUDCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQAAAgAAAAECAAAAHU9uZSBhdHRhY2hlZCBwYXltZW50IGV4cGVjdGVkAwkBAAAAASEAAAABBQAAABBoYXNFbm91Z2hCYWxhbmNlCQAETgAAAAIJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAlwbXRBbW91bnQFAAAACnBtdEFzc2V0SWQFAAAAA25pbAkBAAAAEXN1c3BlbmRTdXNwaWNpb3VzAAAAAAMDCQEAAAACIT0AAAACBQAAAApwbXRBc3NldElkBQAAAAhhc3NldElkQQkBAAAAAiE9AAAAAgUAAAAKcG10QXNzZXRJZAUAAAAIYXNzZXRJZEIHCQEAAAALdGhyb3dBc3NldHMAAAAAAwkAAGYAAAACAAAAAAAAmJaABQAAAAlwbXRBbW91bnQJAAACAAAAAQIAAAAwT25seSBzd2FwIG9mIDEwLjAwMDAwMCBvciBtb3JlIHRva2VucyBpcyBhbGxvd2VkAwMJAABmAAAAAgUAAAAVZXhjaGFuZ2VSYXRpb0xpbWl0TWluCQAAawAAAAMFAAAABnNjYWxlOAUAAAASbWluQW1vdW50VG9SZWNlaXZlBQAAAAlwbXRBbW91bnQGCQAAZgAAAAIJAABrAAAAAwUAAAAGc2NhbGU4BQAAABhlc3RpbWF0ZWRBbW91bnRUb1JlY2VpdmUFAAAACXBtdEFtb3VudAUAAAAVZXhjaGFuZ2VSYXRpb0xpbWl0TWF4CQAAAgAAAAECAAAAHEluY29ycmVjdCBhcmdzIGFuZCBwbXQgcmF0aW8EAAAAC3NlbmRBc3NldElkAwkAAAAAAAACBQAAAApwbXRBc3NldElkBQAAAAhhc3NldElkQQUAAAAIYXNzZXRJZEIFAAAACGFzc2V0SWRBBAAAAAZhbW91bnQJAQAAABNjYWxjdWxhdGVTZW5kQW1vdW50AAAABAUAAAAYZXN0aW1hdGVkQW1vdW50VG9SZWNlaXZlBQAAABJtaW5BbW91bnRUb1JlY2VpdmUFAAAACXBtdEFtb3VudAUAAAAKcG10QXNzZXRJZAQAAAAQZ292ZXJuYW5jZVJld2FyZAkAAGsAAAADBQAAAAZhbW91bnQFAAAADWZlZUdvdmVybmFuY2UFAAAACWZlZVNjYWxlNgQAAAAOYW1vdW50TWludXNGZWUJAABrAAAAAwUAAAAGYW1vdW50CQAAZQAAAAIFAAAACWZlZVNjYWxlNgUAAAADZmVlBQAAAAlmZWVTY2FsZTYEAAAADSR0MDIxODA2MjIwNjgDCQAAAAAAAAIFAAAACnBtdEFzc2V0SWQFAAAACGFzc2V0SWRBCQAFFAAAAAIJAABkAAAAAgUAAAAIYmFsYW5jZUEFAAAACXBtdEFtb3VudAkAAGUAAAACCQAAZQAAAAIFAAAACGJhbGFuY2VCBQAAAA5hbW91bnRNaW51c0ZlZQUAAAAQZ292ZXJuYW5jZVJld2FyZAkABRQAAAACCQAAZQAAAAIJAABlAAAAAgUAAAAIYmFsYW5jZUEFAAAADmFtb3VudE1pbnVzRmVlBQAAABBnb3Zlcm5hbmNlUmV3YXJkCQAAZAAAAAIFAAAACGJhbGFuY2VCBQAAAAlwbXRBbW91bnQEAAAAC25ld0JhbGFuY2VBCAUAAAANJHQwMjE4MDYyMjA2OAAAAAJfMQQAAAALbmV3QmFsYW5jZUIIBQAAAA0kdDAyMTgwNjIyMDY4AAAAAl8yBAAAABNkQXBwVGhyZXNob2xkQW1vdW50CQAAawAAAAMJAABkAAAAAgUAAAALbmV3QmFsYW5jZUEFAAAAC25ld0JhbGFuY2VCBQAAAA1kQXBwVGhyZXNob2xkCQAAaAAAAAIAAAAAAAAAAAIFAAAAE2RBcHBUaHJlc2hvbGRTY2FsZTIDAwkAAGYAAAACBQAAABNkQXBwVGhyZXNob2xkQW1vdW50BQAAAAtuZXdCYWxhbmNlQQYJAABmAAAAAgUAAAATZEFwcFRocmVzaG9sZEFtb3VudAUAAAALbmV3QmFsYW5jZUIJAQAAAA50aHJvd1RocmVzaG9sZAAAAAMFAAAAE2RBcHBUaHJlc2hvbGRBbW91bnQFAAAAC25ld0JhbGFuY2VBBQAAAAtuZXdCYWxhbmNlQgQAAAANJHQwMjIzNjYyMjQzOQkBAAAADGdldEFzc2V0SW5mbwAAAAEFAAAACnBtdEFzc2V0SWQEAAAADXBtdFN0ckFzc2V0SWQIBQAAAA0kdDAyMjM2NjIyNDM5AAAAAl8xBAAAAAxwbXRBc3NldE5hbWUIBQAAAA0kdDAyMjM2NjIyNDM5AAAAAl8yBAAAAAtwbXREZWNpbWFscwgFAAAADSR0MDIyMzY2MjI0MzkAAAACXzMEAAAADSR0MDIyNDUyMjI1MjkJAQAAAAxnZXRBc3NldEluZm8AAAABBQAAAAtzZW5kQXNzZXRJZAQAAAAOc2VuZFN0ckFzc2V0SWQIBQAAAA0kdDAyMjQ1MjIyNTI5AAAAAl8xBAAAAA1zZW5kQXNzZXROYW1lCAUAAAANJHQwMjI0NTIyMjUyOQAAAAJfMgQAAAAMc2VuZERlY2ltYWxzCAUAAAANJHQwMjI0NTIyMjUyOQAAAAJfMwQAAAAGc3Rha2UxAwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAADXN0YWtpbmdBc3NldHMFAAAADXBtdFN0ckFzc2V0SWQJAAP8AAAABAUAAAAEdGhpcwIAAAAMc3Rha2VVbnN0YWtlCQAETAAAAAIGCQAETAAAAAIFAAAACXBtdEFtb3VudAkABEwAAAACBQAAAA1wbXRTdHJBc3NldElkBQAAAANuaWwFAAAAA25pbAAAAAAAAAAAAAMJAAAAAAAAAgUAAAAGc3Rha2UxBQAAAAZzdGFrZTEEAAAABnN0YWtlMgMJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAA1zdGFraW5nQXNzZXRzBQAAAA5zZW5kU3RyQXNzZXRJZAkAA/wAAAAEBQAAAAR0aGlzAgAAAAxzdGFrZVVuc3Rha2UJAARMAAAAAgcJAARMAAAAAgkAAGQAAAACBQAAAA5hbW91bnRNaW51c0ZlZQUAAAAQZ292ZXJuYW5jZVJld2FyZAkABEwAAAACBQAAAA5zZW5kU3RyQXNzZXRJZAUAAAADbmlsBQAAAANuaWwAAAAAAAAAAAADCQAAAAAAAAIFAAAABnN0YWtlMgUAAAAGc3Rha2UyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAlrQmFsYW5jZUEFAAAAC25ld0JhbGFuY2VBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAlrQmFsYW5jZUIFAAAAC25ld0JhbGFuY2VCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAprSW52YXJpYW50CQEAAAANaW52YXJpYW50Q2FsYwAAAAIFAAAAC25ld0JhbGFuY2VBBQAAAAtuZXdCYWxhbmNlQgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAADmFtb3VudE1pbnVzRmVlBQAAAAtzZW5kQXNzZXRJZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAA13YWxsZXRBZGRyZXNzBQAAABBnb3Zlcm5hbmNlUmV3YXJkBQAAAAtzZW5kQXNzZXRJZAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAIc2h1dGRvd24AAAAAAwkBAAAAASEAAAABBQAAAAhpc0FjdGl2ZQkAAAIAAAABCQABLAAAAAICAAAAIkRBcHAgaXMgYWxyZWFkeSBzdXNwZW5kZWQuIENhdXNlOiAJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAAGa0NhdXNlAgAAABp0aGUgY2F1c2Ugd2Fzbid0IHNwZWNpZmllZAMJAQAAAAEhAAAAAQkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkxCQAETAAAAAIFAAAADGFkbWluUHViS2V5MgkABEwAAAACBQAAAAxhZG1pblB1YktleTMJAARMAAAAAgUAAAAMYWRtU3RhcnRTdG9wBQAAAANuaWwIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQkBAAAADnRocm93T25seUFkbWluAAAAAAkBAAAAB3N1c3BlbmQAAAABAgAAAA9QYXVzZWQgYnkgYWRtaW4AAAABaQEAAAAIYWN0aXZhdGUAAAAAAwUAAAAIaXNBY3RpdmUJAQAAAA10aHJvd0lzQWN0aXZlAAAAAAMJAQAAAAEhAAAAAQkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkxCQAETAAAAAIFAAAADGFkbWluUHViS2V5MgkABEwAAAACBQAAAAxhZG1pblB1YktleTMJAARMAAAAAgUAAAAMYWRtU3RhcnRTdG9wBQAAAANuaWwIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQkBAAAADnRocm93T25seUFkbWluAAAAAAkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgUAAAAHa0FjdGl2ZQYJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAAGa0NhdXNlBQAAAANuaWwAAAABaQEAAAAZdGFrZUludG9BY2NvdW50RXh0cmFGdW5kcwAAAAAEAAAADWFtb3VudEVucm9sbEEJAABlAAAAAgUAAAAZYWNjb3VudEJhbGFuY2VXaXRoU3Rha2VkQQUAAAAIYmFsYW5jZUEEAAAADWFtb3VudEVucm9sbEIJAABlAAAAAgUAAAAZYWNjb3VudEJhbGFuY2VXaXRoU3Rha2VkQgUAAAAIYmFsYW5jZUIEAAAADGludmFyaWFudE5ldwkBAAAADWludmFyaWFudENhbGMAAAACCQAAZAAAAAIFAAAACGJhbGFuY2VBBQAAAA1hbW91bnRFbnJvbGxBCQAAZAAAAAIFAAAACGJhbGFuY2VCBQAAAA1hbW91bnRFbnJvbGxCAwkBAAAAASEAAAABBQAAAAhpc0FjdGl2ZQkBAAAAD3Rocm93SXNJbmFjdGl2ZQAAAAADCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAADXdhbGxldEFkZHJlc3MJAAACAAAAAQIAAAAmT25seSB0aGUgd2FsbGV0IGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24DAwkAAGYAAAACAAAAAAAAAAAABQAAAA1hbW91bnRFbnJvbGxBBgkAAGYAAAACAAAAAAAAAAAABQAAAA1hbW91bnRFbnJvbGxCCQEAAAAHc3VzcGVuZAAAAAECAAAAFkVu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", "height": 1877332, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9CCaQKPy8sF9RDApJzp4xjeFPExFh1fM3x9vB3fxLMFm Next: none Diff:
OldNewDifferences
3737
3838 let r = "admin_pub_3"
3939
40-let s = Address(base58'3N8PGkzXhbtTvEwEQTtE2xiTJmsDEQ9XfoZ')
40+let s = Address(base58'3PHaNgomBkrvEL2QnuJarQVJa71wjw9qiqG')
4141
42-let t = Address(base58'3NBBWfzZtZtszaXbitTKnrB2xXwv26Bn7H9')
42+let t = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom')
4343
4444 func u (v) = {
4545 let w = getString(t, v)
6767
6868 let E = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
6969
70-let F = Address(base58'3N6q7sCGSSLBUXDdjBdYGTJbZGZfhhh8cNg')
70+let F = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
7171
72-let G = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
72+let G = base58'ECBCkHS68DckpBrzLeoRgYbFg7sCVqR176mPqbXsj9pA'
7373
74-let H = base58'ECBCkHS68DckpBrzLeoRgYbFg7sCVqR176mPqbXsj9pA'
74+let H = [toBase58String(F), toBase58String(G)]
7575
76-let I = [toBase58String(G), toBase58String(H)]
76+let I = Address(fromBase58String(valueOrErrorMessage(getString(t, n), "no usdn staking address")))
7777
78-let J = Address(fromBase58String(valueOrErrorMessage(getString(t, n), "no usdn staking address")))
78+let J = Address(fromBase58String(valueOrErrorMessage(getString(t, o), "no usdn staking address")))
7979
80-let K = Address(fromBase58String(valueOrErrorMessage(getString(t, o), "no usdn staking address")))
80+let K = getBooleanValue(this, c)
8181
82-let L = getBooleanValue(this, c)
82+let L = getStringValue(this, d)
8383
84-let M = getStringValue(this, d)
84+let M = getStringValue(this, e)
8585
86-let N = getStringValue(this, e)
86+let N = if ((L == "WAVES"))
87+ then unit
88+ else fromBase58String(L)
8789
8890 let O = if ((M == "WAVES"))
8991 then unit
9092 else fromBase58String(M)
9193
92-let P = if ((N == "WAVES"))
93- then unit
94- else fromBase58String(N)
95-
96-let Q = {
97- let w = O
94+let P = {
95+ let w = N
9896 if ($isInstanceOf(w, "ByteVector"))
9997 then {
100- let R = w
101- value(assetInfo(R)).name
98+ let Q = w
99+ value(assetInfo(Q)).name
102100 }
103101 else if ($isInstanceOf(w, "Unit"))
104102 then {
105- let S = w
103+ let R = w
106104 "WAVES"
107105 }
108106 else throw("Match error")
109107 }
110108
111-let T = {
112- let w = P
109+let S = {
110+ let w = O
113111 if ($isInstanceOf(w, "ByteVector"))
114112 then {
115- let R = w
116- value(assetInfo(R)).name
113+ let Q = w
114+ value(assetInfo(Q)).name
117115 }
118116 else if ($isInstanceOf(w, "Unit"))
119117 then {
120- let S = w
118+ let R = w
121119 "WAVES"
122120 }
123121 else throw("Match error")
124122 }
125123
126-let U = getIntegerValue(this, f)
124+let T = getIntegerValue(this, f)
127125
128-let V = getIntegerValue(this, g)
126+let U = getIntegerValue(this, g)
129127
130-let W = fromBase58String(getStringValue(this, h))
128+let V = fromBase58String(getStringValue(this, h))
131129
132-let X = getIntegerValue(this, i)
130+let W = getIntegerValue(this, i)
133131
134-let Y = getIntegerValue(this, l)
132+let X = getIntegerValue(this, l)
135133
136-let Z = 500
134+let Y = 500
137135
138-let aa = 200
136+let Z = 200
139137
140-let ab = 1000000
138+let aa = 1000000
141139
142-let ac = 1000
140+let ab = 1000
143141
144-let ad = 100000000
142+let ac = 100000000
145143
146-let ae = 1000000000000
144+let ad = 1000000000000
147145
148-let af = 1000
146+let ae = 1000
149147
150-let ag = 8
148+let af = 8
151149
152-let ah = 50
150+let ag = 50
153151
154-let ai = 100
152+let ah = 100
155153
156-let aj = 90000000
154+let ai = 90000000
157155
158-let ak = 110000000
156+let aj = 110000000
159157
160-let al = 50
158+let ak = 50
161159
162-let am = 2
160+let al = 2
163161
164-let an = 46000000
162+let am = 46000000
165163
166-func ao (ap) = {
167- let w = ap
164+func an (ao) = {
165+ let w = ao
168166 if ($isInstanceOf(w, "ByteVector"))
169167 then {
170- let R = w
171- assetBalance(this, R)
168+ let Q = w
169+ assetBalance(this, Q)
172170 }
173171 else if ($isInstanceOf(w, "Unit"))
174172 then {
175- let S = w
173+ let R = w
176174 wavesBalance(this).available
177175 }
178176 else throw("Match error")
179177 }
180178
181179
182-func aq (ap) = {
183- let ar = {
184- let w = ap
180+func ap (ao) = {
181+ let aq = {
182+ let w = ao
185183 if ($isInstanceOf(w, "ByteVector"))
186184 then {
187- let as = w
188- if ((as == G))
189- then getInteger(J, ((("rpd_balance_" + toBase58String(as)) + "_") + toString(this)))
190- else if ((as == H))
191- then getInteger(K, ((("%s%s%s__stakingBalance__" + toBase58String(as)) + "__") + toString(this)))
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)))
192190 else 0
193191 }
194192 else if ($isInstanceOf(w, "Unit"))
195193 then 0
196194 else throw("Match error")
197195 }
198- let w = ar
196+ let w = aq
199197 if ($isInstanceOf(w, "Int"))
200198 then {
201- let at = w
202- at
199+ let as = w
200+ as
203201 }
204202 else 0
205203 }
206204
207205
208-let au = aq(O)
206+let at = ap(N)
209207
210-let av = aq(P)
208+let au = ap(O)
209+
210+let av = (T - at)
211211
212212 let aw = (U - au)
213213
214-let ax = (V - av)
214+let ax = (an(N) + at)
215215
216-let ay = (ao(O) + au)
216+let ay = (an(O) + au)
217217
218-let az = (ao(P) + av)
219-
220-let aA = if ((ay >= U))
221- then (az >= V)
218+let az = if ((ax >= T))
219+ then (ay >= U)
222220 else false
223221
224-func aB (aC,aD) = (((fraction(ae, aC, aD) + fraction(ae, aD, aC)) / 2) / 10000)
222+func aA (aB,aC) = (((fraction(ad, aB, aC) + fraction(ad, aC, aB)) / 2) / 10000)
225223
226224
227-func aE (aC,aD) = {
228- let aF = aB(aC, aD)
229- (fraction((aC + aD), ad, pow(aF, ag, al, am, ag, CEILING)) + (2 * fraction(pow(fraction(aC, aD, ad), 0, 5, 1, (ag / 2), DOWN), pow((aF - an), ag, al, am, ag, DOWN), ad)))
225+func aD (aB,aC) = {
226+ let aE = aA(aB, aC)
227+ (fraction((aB + aC), ac, pow(aE, af, ak, al, af, CEILING)) + (2 * fraction(pow(fraction(aB, aC, ac), 0, 5, 1, (af / 2), DOWN), pow((aE - am), af, ak, al, af, DOWN), ac)))
230228 }
231229
232230
233-func aG (aH,aI,aJ,aK) = {
234- let aL = (ad - ((ad * 1) / 10000000))
235- let aM = (aH - aI)
236- let aC = (U + aJ)
237- let aD = (V + aJ)
238- let aN = if ((aK == O))
239- then aE(aC, (V - aH))
240- else if ((aK == P))
241- then aE((U - aH), aD)
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+ let aM = if ((aJ == N))
237+ then aD(aB, (U - aG))
238+ else if ((aJ == O))
239+ then aD((T - aG), aC)
242240 else throw("Wrong asset in payment")
243- let aO = fraction(ad, Y, aN)
244- func aP (aQ,aR) = if ((aQ == -1))
241+ let aN = fraction(ac, X, aM)
242+ func aO (aP,aQ) = if ((aP == -1))
245243 then {
246- let aS = (aH - ((aR * aM) / 5))
247- let aT = if ((aK == O))
248- then aE(aC, (V - aS))
249- else aE((U - aS), aD)
250- if ((aT > Y))
251- then aS
244+ let aR = (aG - ((aQ * aL) / 5))
245+ let aS = if ((aJ == N))
246+ then aD(aB, (U - aR))
247+ else aD((T - aR), aC)
248+ if ((aS > X))
249+ then aR
252250 else -1
253251 }
254- else aQ
252+ else aP
255253
256- let aU = {
257- let aV = [1, 2, 3, 4, 5]
258- let aW = size(aV)
259- let aX = -1
260- func aY (aZ,ba) = if ((ba >= aW))
261- then aZ
262- else aP(aZ, aV[ba])
254+ let aT = {
255+ let aU = [1, 2, 3, 4, 5]
256+ let aV = size(aU)
257+ let aW = -1
258+ func aX (aY,aZ) = if ((aZ >= aV))
259+ then aY
260+ else aO(aY, aU[aZ])
263261
264- func bb (aZ,ba) = if ((ba >= aW))
265- then aZ
262+ func ba (aY,aZ) = if ((aZ >= aV))
263+ then aY
266264 else throw("List size exceeds 5")
267265
268- bb(aY(aY(aY(aY(aY(aX, 0), 1), 2), 3), 4), 5)
266+ ba(aX(aX(aX(aX(aX(aW, 0), 1), 2), 3), 4), 5)
269267 }
270- if ((0 > aU))
268+ if ((0 > aT))
271269 then throw("something went wrong while working with amountToSend")
272- else if (if ((aO > aL))
273- then (aN > Y)
270+ else if (if ((aN > aK))
271+ then (aM > X)
274272 else false)
275- then aH
276- else aU
273+ then aG
274+ else aT
277275 }
278276
279277
280-func bc (ap) = {
281- let w = ap
278+func bb (ao) = {
279+ let w = ao
282280 if ($isInstanceOf(w, "ByteVector"))
283281 then {
284- let R = w
285- let bd = toBase58String(R)
286- let be = valueOrErrorMessage(assetInfo(R), (("Asset " + bd) + " doesn't exist"))
287- $Tuple3(bd, be.name, be.decimals)
282+ let Q = w
283+ let bc = toBase58String(Q)
284+ let bd = valueOrErrorMessage(assetInfo(Q), (("Asset " + bc) + " doesn't exist"))
285+ $Tuple3(bc, bd.name, bd.decimals)
288286 }
289287 else if ($isInstanceOf(w, "Unit"))
290288 then {
291- let S = w
289+ let R = w
292290 $Tuple3("WAVES", "WAVES", 8)
293291 }
294292 else throw("Match error")
295293 }
296294
297295
298-func bf (bg) = [BooleanEntry(c, false), StringEntry(m, bg)]
296+func be (bf) = [BooleanEntry(c, false), StringEntry(m, bf)]
299297
300298
301-func bh () = throw("DApp is already active")
299+func bg () = throw("DApp is already active")
302300
303301
304-func bi () = throw("DApp is inactive at this moment")
302+func bh () = throw("DApp is inactive at this moment")
305303
306304
307-func bj () = throw("Only admin can call this function")
305+func bi () = throw("Only admin can call this function")
308306
309307
310-func bk () = throw(((("Incorrect assets attached. Expected: " + M) + " and ") + N))
308+func bj () = throw(((("Incorrect assets attached. Expected: " + L) + " and ") + M))
311309
312310
313-func bl (bm,bn,bo) = throw(((((((((("New balance in assets of the DApp is less than threshold " + toString(bm)) + ": ") + toString(bn)) + " ") + Q) + ", ") + toString(bo)) + " ") + T))
311+func bk (bl,bm,bn) = throw(((((((((("New balance in assets of the DApp is less than threshold " + toString(bl)) + ": ") + toString(bm)) + " ") + P) + ", ") + toString(bn)) + " ") + S))
314312
315313
316-func bp () = bf(((((((((((((((("Suspicious state. Actual balances: " + toString(U)) + " ") + Q) + ", ") + toString(V)) + " ") + T) + ". State: ") + toString(ao(O))) + " ") + Q) + ", ") + toString(ao(P))) + " ") + T))
314+func bo () = be(((((((((((((((("Suspicious state. Actual balances: " + toString(T)) + " ") + P) + ", ") + toString(U)) + " ") + S) + ". State: ") + toString(an(N))) + " ") + P) + ", ") + toString(an(O))) + " ") + S))
317315
318316
319-func bq (br,ap) = if (br)
320- then if ((ap == G))
321- then $Tuple2("lockNeutrino", J)
322- else $Tuple2("startStaking", K)
323- else if ((ap == G))
324- then $Tuple2("unlockNeutrino", J)
325- else $Tuple2("stopStaking", K)
317+func bp (bq,ao) = if (bq)
318+ then if ((ao == F))
319+ then $Tuple2("lockNeutrino", I)
320+ else $Tuple2("startStaking", J)
321+ else if ((ao == F))
322+ then $Tuple2("unlockNeutrino", I)
323+ else $Tuple2("stopStaking", J)
326324
327325
328-func bs (br,bt,ap) = if (br)
326+func br (bq,bs,ao) = if (bq)
329327 then {
330- let bu = bq(br, ap)
331- let bv = bu._1
332- let bw = bu._2
333- $Tuple4(bv, bw, nil, [AttachedPayment(ap, bt)])
328+ let bt = bp(bq, ao)
329+ let bu = bt._1
330+ let bv = bt._2
331+ $Tuple4(bu, bv, nil, [AttachedPayment(ao, bs)])
334332 }
335333 else {
336- let bx = bq(br, ap)
337- let bv = bx._1
338- let bw = bx._2
339- $Tuple4(bv, bw, [bt, toBase58String(ap)], nil)
334+ let bw = bp(bq, ao)
335+ let bu = bw._1
336+ let bv = bw._2
337+ $Tuple4(bu, bv, [bs, toBase58String(ao)], nil)
340338 }
341339
342340
343-@Callable(at)
341+@Callable(as)
344342 func init () = {
345- let by = $Tuple2(at.payments[0].amount, at.payments[0].assetId)
346- let bz = by._1
347- let bA = by._2
348- let bB = $Tuple2(at.payments[1].amount, at.payments[1].assetId)
349- let bC = bB._1
350- let bD = bB._2
351- let bE = bc(bA)
352- let bF = bE._1
353- let bG = bE._2
354- let bH = bE._3
355- let bI = bc(bD)
356- let bJ = bI._1
357- let bK = bI._2
358- let bL = bI._3
343+ let bx = $Tuple2(as.payments[0].amount, as.payments[0].assetId)
344+ let by = bx._1
345+ let bz = bx._2
346+ let bA = $Tuple2(as.payments[1].amount, as.payments[1].assetId)
347+ let bB = bA._1
348+ let bC = bA._2
349+ let bD = bb(bz)
350+ let bE = bD._1
351+ let bF = bD._2
352+ let bG = bD._3
353+ let bH = bb(bC)
354+ let bI = bH._1
355+ let bJ = bH._2
356+ let bK = bH._3
359357 if (isDefined(getBoolean(this, c)))
360- then bh()
361- else if ((bA == bD))
358+ then bg()
359+ else if ((bz == bC))
362360 then throw("Assets must be different")
363361 else {
364- let bM = ((("s" + take(bG, 7)) + "_") + take(bK, 7))
365- let bN = ((((("ShareToken of SwopFi protocol for " + bG) + " and ") + bK) + " at address ") + toString(this))
366- let bO = ((bH + bL) / 2)
367- let bP = fraction(pow(bz, bH, 5, 1, bH, DOWN), pow(bC, bL, 5, 1, bL, DOWN), pow(10, 0, bO, 0, 0, DOWN))
368- let bQ = Issue(bM, bN, bP, bO, true)
369- let bR = calculateAssetId(bQ)
370- let bS = aE(bz, bC)
371- let bT = if (containsElement(I, bF))
372- then invoke(this, "stakeUnstake", [true, bz, bF], nil)
362+ let bL = ((("s" + take(bF, 7)) + "_") + take(bJ, 7))
363+ let bM = ((((("ShareToken of SwopFi protocol for " + bF) + " and ") + bJ) + " at address ") + toString(this))
364+ let bN = ((bG + bK) / 2)
365+ let bO = fraction(pow(by, bG, 5, 1, bG, DOWN), pow(bB, bK, 5, 1, bK, DOWN), pow(10, 0, bN, 0, 0, DOWN))
366+ let bP = Issue(bL, bM, bO, bN, true)
367+ let bQ = calculateAssetId(bP)
368+ let bR = aD(by, bB)
369+ let bS = if (containsElement(H, bE))
370+ then invoke(this, "stakeUnstake", [true, by, bE], nil)
373371 else 0
374- if ((bT == bT))
372+ if ((bS == bS))
375373 then {
376- let bU = if (containsElement(I, bJ))
377- then invoke(this, "stakeUnstake", [true, bC, bJ], nil)
374+ let bT = if (containsElement(H, bI))
375+ then invoke(this, "stakeUnstake", [true, bB, bI], nil)
378376 else 0
379- if ((bU == bU))
380- then [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bF), StringEntry(e, bJ), IntegerEntry(f, bz), IntegerEntry(g, bC), IntegerEntry(l, bS), IntegerEntry(j, Z), IntegerEntry(k, ab), bQ, StringEntry(h, toBase58String(bR)), IntegerEntry(i, bP), ScriptTransfer(at.caller, bP, bR)]
377+ if ((bT == bT))
378+ then [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bE), StringEntry(e, bI), IntegerEntry(f, by), IntegerEntry(g, bB), IntegerEntry(l, bR), IntegerEntry(j, Y), IntegerEntry(k, aa), bP, StringEntry(h, toBase58String(bQ)), IntegerEntry(i, bO), ScriptTransfer(as.caller, bO, bQ)]
381379 else throw("Strict value is not equal to itself.")
382380 }
383381 else throw("Strict value is not equal to itself.")
386384
387385
388386
389-@Callable(at)
390-func replenishWithTwoTokens (bV) = {
391- let bA = at.payments[0].assetId
392- let bD = at.payments[1].assetId
393- let bz = at.payments[0].amount
394- let bC = at.payments[1].amount
395- let bW = bc(bA)
396- let bF = bW._1
397- let bG = bW._2
398- let bH = bW._3
399- let bX = bc(bD)
400- let bJ = bX._1
401- let bK = bX._2
402- let bL = bX._3
403- let bY = fraction(fraction(ad, U, bz), ac, fraction(ad, V, bC))
404- let bZ = fraction(ad, bz, U)
405- let ca = fraction(ad, bC, V)
406- let cb = fraction(min([bZ, ca]), X, ad)
407- let bS = aE((U + bz), (V + bC))
408- if (!(L))
409- then bi()
410- else if (if ((0 > bV))
387+@Callable(as)
388+func replenishWithTwoTokens (bU) = {
389+ let bz = as.payments[0].assetId
390+ let bC = as.payments[1].assetId
391+ let by = as.payments[0].amount
392+ let bB = as.payments[1].amount
393+ let bV = bb(bz)
394+ let bE = bV._1
395+ let bF = bV._2
396+ let bG = bV._3
397+ let bW = bb(bC)
398+ let bI = bW._1
399+ let bJ = bW._2
400+ let bK = bW._3
401+ let bX = fraction(fraction(ac, T, by), ab, fraction(ac, U, bB))
402+ let bY = fraction(ac, by, T)
403+ let bZ = fraction(ac, bB, U)
404+ let ca = fraction(min([bY, bZ]), W, ac)
405+ let bR = aD((T + by), (U + bB))
406+ if (!(K))
407+ then bh()
408+ else if (if ((0 > bU))
411409 then true
412- else (bV > 10))
410+ else (bU > 10))
413411 then throw("Slippage tolerance must be <= 1%")
414- else if ((size(at.payments) != 2))
412+ else if ((size(as.payments) != 2))
415413 then throw("Two attached assets expected")
416- else if (if ((bA != O))
414+ else if (if ((bz != N))
417415 then true
418- else (bD != P))
419- then bk()
420- else if (if ((((ac * (af - bV)) / af) > bY))
416+ else (bC != O))
417+ then bj()
418+ else if (if ((((ab * (ae - bU)) / ae) > bX))
421419 then true
422- else (bY > ((ac * (af + bV)) / af)))
420+ else (bX > ((ab * (ae + bU)) / ae)))
423421 then throw("Incorrect assets amount: amounts must have the contract ratio")
424- else if ((cb == 0))
422+ else if ((ca == 0))
425423 then throw("Too small amount to replenish")
426- else if (!(aA))
427- then ([ScriptTransfer(at.caller, bz, bA), ScriptTransfer(at.caller, bC, bD)] ++ bp())
424+ else if (!(az))
425+ then ([ScriptTransfer(as.caller, by, bz), ScriptTransfer(as.caller, bB, bC)] ++ bo())
428426 else {
429- let bT = if (containsElement(I, bF))
430- then invoke(this, "stakeUnstake", [true, bz, bF], nil)
427+ let bS = if (containsElement(H, bE))
428+ then invoke(this, "stakeUnstake", [true, by, bE], nil)
431429 else 0
432- if ((bT == bT))
430+ if ((bS == bS))
433431 then {
434- let bU = if (containsElement(I, bJ))
435- then invoke(this, "stakeUnstake", [true, bC, bJ], nil)
432+ let bT = if (containsElement(H, bI))
433+ then invoke(this, "stakeUnstake", [true, bB, bI], nil)
436434 else 0
437- if ((bU == bU))
438- then [IntegerEntry(f, (U + bz)), IntegerEntry(g, (V + bC)), IntegerEntry(i, (X + cb)), IntegerEntry(l, bS), Reissue(W, cb, true), ScriptTransfer(at.caller, cb, W)]
435+ if ((bT == bT))
436+ then [IntegerEntry(f, (T + by)), IntegerEntry(g, (U + bB)), IntegerEntry(i, (W + ca)), IntegerEntry(l, bR), Reissue(V, ca, true), ScriptTransfer(as.caller, ca, V)]
439437 else throw("Strict value is not equal to itself.")
440438 }
441439 else throw("Strict value is not equal to itself.")
444442
445443
446444
447-@Callable(at)
448-func replenishWithOneToken (cc,cd) = {
449- let ce = $Tuple2(at.payments[0].amount, at.payments[0].assetId)
450- let cf = ce._1
451- let cg = ce._2
452- let ch = bc(cg)
453- let ci = ch._1
454- let cj = ch._2
455- let ck = ch._3
456- let cl = 5000000
457- let cm = 50000000
458- let cn = if ((cm > cf))
445+@Callable(as)
446+func replenishWithOneToken (cb,cc) = {
447+ let cd = $Tuple2(as.payments[0].amount, as.payments[0].assetId)
448+ let ce = cd._1
449+ let cf = cd._2
450+ let cg = bb(cf)
451+ let ch = cg._1
452+ let ci = cg._2
453+ let cj = cg._3
454+ let ck = 5000000
455+ let cl = 50000000
456+ let cm = if ((cl > ce))
459457 then 100000
460458 else 1
461- let co = (ad - ((ad * cn) / 10000000))
462- let cp = (ad + ((ad * cn) / 10000000))
463- let cq = (ad - ((ad * 1) / 10000000))
464- if (!(L))
465- then bi()
466- else if ((cl > cf))
467- then throw((((("Payment amount " + toString(cf)) + " does not exceed the minimum amount of ") + toString(cl)) + " tokens"))
468- else if ((size(at.payments) != 1))
459+ let cn = (ac - ((ac * cm) / 10000000))
460+ let co = (ac + ((ac * cm) / 10000000))
461+ let cp = (ac - ((ac * 1) / 10000000))
462+ if (!(K))
463+ then bh()
464+ else if ((ck > ce))
465+ then throw((((("Payment amount " + toString(ce)) + " does not exceed the minimum amount of ") + toString(ck)) + " tokens"))
466+ else if ((size(as.payments) != 1))
469467 then throw("One attached payment expected")
470- else if (!(aA))
471- then ([ScriptTransfer(at.caller, cf, cg)] ++ bp())
472- else if (if ((cg != O))
473- then (cg != P)
468+ else if (!(az))
469+ then ([ScriptTransfer(as.caller, ce, cf)] ++ bo())
470+ else if (if ((cf != N))
471+ then (cf != O)
474472 else false)
475- then bk()
473+ then bj()
476474 else {
477- let cr = if ((cg == O))
478- then $Tuple7((cf - cc), cd, (U + cc), (V - cd), aE((U + cf), V), (U + cf), V)
479- else $Tuple7(cd, (cf - cc), (U - cd), (V + cc), aE(U, (V + cf)), U, (V + cf))
480- let cs = cr._1
481- let ct = cr._2
482- let cu = cr._3
483- let cv = cr._4
484- let bS = cr._5
485- let cw = cr._6
486- let cx = cr._7
487- let cy = if ((cg == O))
488- then IntegerEntry(f, cw)
489- else IntegerEntry(g, cx)
490- let aN = aE(cu, cv)
491- let aO = fraction(ad, Y, aN)
492- let cz = (fraction((ad * ad), cu, cv) / fraction(ad, cs, ct))
493- let cA = fraction((cw + cx), ah, (2 * ai))
494- if (if ((cq >= aO))
475+ let cq = if ((cf == N))
476+ then $Tuple7((ce - cb), cc, (T + cb), (U - cc), aD((T + ce), U), (T + ce), U)
477+ else $Tuple7(cc, (ce - cb), (T - cc), (U + cb), aD(T, (U + ce)), T, (U + ce))
478+ let cr = cq._1
479+ let cs = cq._2
480+ let ct = cq._3
481+ let cu = cq._4
482+ let bR = cq._5
483+ let cv = cq._6
484+ let cw = cq._7
485+ let cx = if ((cf == N))
486+ then IntegerEntry(f, cv)
487+ else IntegerEntry(g, cw)
488+ let aM = aD(ct, cu)
489+ let aN = fraction(ac, X, aM)
490+ let cy = (fraction((ac * ac), ct, cu) / fraction(ac, cr, cs))
491+ let cz = fraction((cv + cw), ag, (2 * ah))
492+ if (if ((cp >= aN))
495493 then true
496- else (Y > aN))
494+ else (X > aM))
497495 then throw("Incorrect virtualSwapTokenPay or virtualSwapTokenGet value")
498- else if (if ((co > cz))
496+ else if (if ((cn > cy))
499497 then true
500- else (cz > cp))
498+ else (cy > co))
501499 then throw("Swap with virtualSwapTokenPay and virtualSwapTokenGet is possible, but ratio after virtual swap is incorrect")
502- else if (if ((cA > cw))
500+ else if (if ((cz > cv))
503501 then true
504- else (cA > cx))
505- then bl(cA, cw, cx)
502+ else (cz > cw))
503+ then bk(cz, cv, cw)
506504 else {
507- let bT = if (containsElement(I, ci))
508- then invoke(this, "stakeUnstake", [true, cf, ci], nil)
505+ let bS = if (containsElement(H, ch))
506+ then invoke(this, "stakeUnstake", [true, ce, ch], nil)
509507 else 0
510- if ((bT == bT))
508+ if ((bS == bS))
511509 then {
512- let bZ = fraction(cs, ad, cu)
513- let ca = fraction(ct, ad, cv)
514- let cb = fraction(min([bZ, ca]), X, ad)
515-[Reissue(W, cb, true), ScriptTransfer(at.caller, cb, W), IntegerEntry(i, (X + cb)), cy, IntegerEntry(l, bS)]
510+ let bY = fraction(cr, ac, ct)
511+ let bZ = fraction(cs, ac, cu)
512+ let ca = fraction(min([bY, bZ]), W, ac)
513+[Reissue(V, ca, true), ScriptTransfer(as.caller, ca, V), IntegerEntry(i, (W + ca)), cx, IntegerEntry(l, bR)]
516514 }
517515 else throw("Strict value is not equal to itself.")
518516 }
521519
522520
523521
524-@Callable(at)
522+@Callable(as)
525523 func withdraw () = {
526- let cB = $Tuple2(at.payments[0].amount, at.payments[0].assetId)
527- let cf = cB._1
528- let cg = cB._2
529- let cC = fraction(cf, U, X)
530- let cD = fraction(cf, V, X)
531- let bS = aE((U - cC), (V - cD))
532- if (!(L))
533- then bi()
534- else if ((size(at.payments) != 1))
524+ let cA = $Tuple2(as.payments[0].amount, as.payments[0].assetId)
525+ let ce = cA._1
526+ let cf = cA._2
527+ let cB = fraction(ce, T, W)
528+ let cC = fraction(ce, U, W)
529+ let bR = aD((T - cB), (U - cC))
530+ if (!(K))
531+ then bh()
532+ else if ((size(as.payments) != 1))
535533 then throw("One attached payment expected")
536- else if ((cg != W))
537- then throw(("Incorrect asset attached. Expected: " + toBase58String(W)))
538- else if (!(aA))
539- then ([ScriptTransfer(at.caller, cf, cg)] ++ bp())
534+ else if ((cf != V))
535+ then throw(("Incorrect asset attached. Expected: " + toBase58String(V)))
536+ else if (!(az))
537+ then ([ScriptTransfer(as.caller, ce, cf)] ++ bo())
540538 else {
541- let bT = if (containsElement(I, M))
542- then invoke(this, "stakeUnstake", [false, cC, M], nil)
539+ let bS = if (containsElement(H, L))
540+ then invoke(this, "stakeUnstake", [false, cB, L], nil)
543541 else 0
544- if ((bT == bT))
542+ if ((bS == bS))
545543 then {
546- let bU = if (containsElement(I, N))
547- then invoke(this, "stakeUnstake", [false, cD, N], nil)
544+ let bT = if (containsElement(H, M))
545+ then invoke(this, "stakeUnstake", [false, cC, M], nil)
548546 else 0
549- if ((bU == bU))
550- then [IntegerEntry(f, (U - cC)), IntegerEntry(g, (V - cD)), IntegerEntry(i, (X - cf)), IntegerEntry(l, bS), Burn(W, cf), ScriptTransfer(at.caller, cC, O), ScriptTransfer(at.caller, cD, P)]
547+ if ((bT == bT))
548+ then [IntegerEntry(f, (T - cB)), IntegerEntry(g, (U - cC)), IntegerEntry(i, (W - ce)), IntegerEntry(l, bR), Burn(V, ce), ScriptTransfer(as.caller, cB, N), ScriptTransfer(as.caller, cC, O)]
551549 else throw("Strict value is not equal to itself.")
552550 }
553551 else throw("Strict value is not equal to itself.")
556554
557555
558556
559-@Callable(at)
560-func exchange (cE,cF) = {
561- let cG = $Tuple2(at.payments[0].amount, at.payments[0].assetId)
562- let cf = cG._1
563- let cg = cG._2
564- if (!(L))
565- then bi()
566- else if ((0 >= cE))
567- then throw(("Estimated amount must be positive. Actual: " + toString(cE)))
568- else if ((cF > cE))
569- then throw(((("Minimal amount can't be greater than estimated. Estimated: " + toString(cE)) + ". Minimal: ") + toString(cF)))
570- else if ((size(at.payments) != 1))
557+@Callable(as)
558+func exchange (cD,cE) = {
559+ let cF = $Tuple2(as.payments[0].amount, as.payments[0].assetId)
560+ let ce = cF._1
561+ let cf = cF._2
562+ if (!(K))
563+ then bh()
564+ else if ((0 >= cD))
565+ then throw(("Estimated amount must be positive. Actual: " + toString(cD)))
566+ else if ((cE > cD))
567+ then throw(((("Minimal amount can't be greater than estimated. Estimated: " + toString(cD)) + ". Minimal: ") + toString(cE)))
568+ else if ((size(as.payments) != 1))
571569 then throw("One attached payment expected")
572- else if (!(aA))
573- then ([ScriptTransfer(at.caller, cf, cg)] ++ bp())
574- else if (if ((cg != O))
575- then (cg != P)
570+ else if (!(az))
571+ then ([ScriptTransfer(as.caller, ce, cf)] ++ bo())
572+ else if (if ((cf != N))
573+ then (cf != O)
576574 else false)
577- then bk()
578- else if ((10000000 > cf))
575+ then bj()
576+ else if ((10000000 > ce))
579577 then throw("Only swap of 10.000000 or more tokens is allowed")
580- else if (if ((aj > fraction(ad, cF, cf)))
578+ else if (if ((ai > fraction(ac, cE, ce)))
581579 then true
582- else (fraction(ad, cE, cf) > ak))
580+ else (fraction(ac, cD, ce) > aj))
583581 then throw("Incorrect args and pmt ratio")
584582 else {
585- let cH = if ((cg == O))
586- then P
587- else O
588- let bt = aG(cE, cF, cf, cg)
589- let cI = fraction(bt, aa, ab)
590- let cJ = fraction(bt, (ab - Z), ab)
591- let cK = if ((cg == O))
592- then $Tuple2((U + cf), ((V - cJ) - cI))
593- else $Tuple2(((U - cJ) - cI), (V + cf))
594- let cw = cK._1
595- let cx = cK._2
596- let cA = fraction((cw + cx), ah, (2 * ai))
597- if (if ((cA > cw))
583+ let cG = if ((cf == N))
584+ then O
585+ else N
586+ let bs = aF(cD, cE, ce, cf)
587+ let cH = fraction(bs, Z, aa)
588+ let cI = fraction(bs, (aa - Y), aa)
589+ let cJ = if ((cf == N))
590+ then $Tuple2((T + ce), ((U - cI) - cH))
591+ else $Tuple2(((T - cI) - cH), (U + ce))
592+ let cv = cJ._1
593+ let cw = cJ._2
594+ let cz = fraction((cv + cw), ag, (2 * ah))
595+ if (if ((cz > cv))
598596 then true
599- else (cA > cx))
600- then bl(cA, cw, cx)
597+ else (cz > cw))
598+ then bk(cz, cv, cw)
601599 else {
602- let cL = bc(cg)
603- let ci = cL._1
604- let cj = cL._2
605- let ck = cL._3
606- let cM = bc(cH)
607- let cN = cM._1
608- let cO = cM._2
609- let cP = cM._3
610- let bT = if (containsElement(I, ci))
611- then invoke(this, "stakeUnstake", [true, cf, ci], nil)
600+ let cK = bb(cf)
601+ let ch = cK._1
602+ let ci = cK._2
603+ let cj = cK._3
604+ let cL = bb(cG)
605+ let cM = cL._1
606+ let cN = cL._2
607+ let cO = cL._3
608+ let bS = if (containsElement(H, ch))
609+ then invoke(this, "stakeUnstake", [true, ce, ch], nil)
612610 else 0
613- if ((bT == bT))
611+ if ((bS == bS))
614612 then {
615- let bU = if (containsElement(I, cN))
616- then invoke(this, "stakeUnstake", [false, (cJ + cI), cN], nil)
613+ let bT = if (containsElement(H, cM))
614+ then invoke(this, "stakeUnstake", [false, (cI + cH), cM], nil)
617615 else 0
618- if ((bU == bU))
619- then [IntegerEntry(f, cw), IntegerEntry(g, cx), IntegerEntry(l, aE(cw, cx)), ScriptTransfer(at.caller, cJ, cH), ScriptTransfer(E, cI, cH)]
616+ if ((bT == bT))
617+ then [IntegerEntry(f, cv), IntegerEntry(g, cw), IntegerEntry(l, aD(cv, cw)), ScriptTransfer(as.caller, cI, cG), ScriptTransfer(E, cH, cG)]
620618 else throw("Strict value is not equal to itself.")
621619 }
622620 else throw("Strict value is not equal to itself.")
626624
627625
628626
629-@Callable(at)
630-func shutdown () = if (!(L))
627+@Callable(as)
628+func shutdown () = if (!(K))
631629 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, m), "the cause wasn't specified")))
632- else if (!(containsElement([z, A, B, C], at.callerPublicKey)))
633- then bj()
634- else bf("Paused by admin")
630+ else if (!(containsElement([z, A, B, C], as.callerPublicKey)))
631+ then bi()
632+ else be("Paused by admin")
635633
636634
637635
638-@Callable(at)
639-func activate () = if (L)
640- then bh()
641- else if (!(containsElement([z, A, B, C], at.callerPublicKey)))
642- then bj()
636+@Callable(as)
637+func activate () = if (K)
638+ then bg()
639+ else if (!(containsElement([z, A, B, C], as.callerPublicKey)))
640+ then bi()
643641 else [BooleanEntry(c, true), DeleteEntry(m)]
644642
645643
646644
647-@Callable(at)
648-func takeIntoAccountExtraFunds (cQ) = {
649- let cR = (ay - U)
650- let cS = (az - V)
651- let cT = (cR - (if ((O == unit))
652- then cQ
653- else 0))
654- let cU = (cS - (if ((P == unit))
655- then cQ
656- else 0))
657- let aN = aE((U + cT), (V + cU))
658- if (!(L))
659- then bi()
660- else if ((at.caller != this))
661- then bj()
662- else if ((0 > cQ))
663- then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(cQ)))
664- else if (if ((0 > cR))
665- then true
666- else (0 > cS))
667- then bf("Enroll amount negative")
668- else if (if ((0 > cT))
669- then true
670- else (0 > cU))
671- then throw("Too large amountLeave")
672- else {
673- let bT = if (if (containsElement(I, M))
674- then (cT > 0)
675- else false)
676- then invoke(this, "stakeUnstake", [true, cT, M], nil)
677- else 0
678- if ((bT == bT))
679- then {
680- let bU = if (if (containsElement(I, N))
681- then (cU > 0)
682- else false)
683- then invoke(this, "stakeUnstake", [true, cU, N], nil)
684- else 0
685- if ((bU == bU))
686- then [IntegerEntry(l, aN), IntegerEntry(f, (U + cT)), IntegerEntry(g, (V + cU)), IntegerEntry(("last_income_" + M), cT), IntegerEntry(("last_income_" + N), cU)]
687- else throw("Strict value is not equal to itself.")
688- }
689- else throw("Strict value is not equal to itself.")
690- }
645+@Callable(as)
646+func takeIntoAccountExtraFunds () = {
647+ let cP = (ax - T)
648+ let cQ = (ay - U)
649+ let aM = aD((T + cP), (U + cQ))
650+ if (!(K))
651+ then bh()
652+ else if ((as.caller != E))
653+ then throw("Only the wallet can call this function")
654+ else if (if ((0 > cP))
655+ then true
656+ else (0 > cQ))
657+ then be("Enroll amount negative")
658+ else if (if ((cP == 0))
659+ then (cQ == 0)
660+ else false)
661+ then throw("No money to take")
662+ else {
663+ let bS = if (if (containsElement(H, L))
664+ then (cP > 0)
665+ else false)
666+ then invoke(this, "stakeUnstake", [true, cP, L], nil)
667+ else 0
668+ if ((bS == bS))
669+ then {
670+ let bT = if (if (containsElement(H, M))
671+ then (cQ > 0)
672+ else false)
673+ then invoke(this, "stakeUnstake", [true, cQ, M], nil)
674+ else 0
675+ if ((bT == bT))
676+ then [IntegerEntry(l, aM), IntegerEntry(f, (T + cP)), IntegerEntry(g, (U + cQ)), IntegerEntry(("last_income_" + L), cP), IntegerEntry(("last_income_" + M), cQ)]
677+ else throw("Strict value is not equal to itself.")
678+ }
679+ else throw("Strict value is not equal to itself.")
680+ }
691681 }
692682
693683
694684
695-@Callable(at)
696-func stakeUnstake (br,bt,cV) = if ((at.caller != this))
685+@Callable(as)
686+func stakeUnstake (bq,bs,cR) = if ((as.caller != this))
697687 then throw("Only contract itself can invoke this function")
698688 else {
699- let cW = bs(br, bt, fromBase58String(cV))
700- let bv = cW._1
701- let cX = cW._2
702- let cY = cW._3
703- let cZ = cW._4
704- let da = invoke(cX, bv, cY, cZ)
705- if ((da == da))
689+ let cS = br(bq, bs, fromBase58String(cR))
690+ let bu = cS._1
691+ let cT = cS._2
692+ let cU = cS._3
693+ let cV = cS._4
694+ let cW = invoke(cT, bu, cU, cV)
695+ if ((cW == cW))
706696 then nil
707697 else throw("Strict value is not equal to itself.")
708698 }
709699
710700
711701
712-@Callable(at)
713-func stakeAll () = if (!(L))
702+@Callable(as)
703+func stakeAll () = if (!(K))
714704 then throw("DApp is inactive at this moment")
715- else if (!(containsElement([z, A, B, C], at.callerPublicKey)))
705+ else if (!(containsElement([z, A, B, C], as.callerPublicKey)))
716706 then throw("Only admin can call this function")
717707 else {
718- let bT = if (containsElement(I, M))
708+ let bS = if (containsElement(H, L))
719709 then {
720- let bn = (U - au)
721- if ((bn > 0))
722- then invoke(this, "stakeUnstake", [true, bn, M], nil)
710+ let bm = (T - at)
711+ if ((bm > 0))
712+ then invoke(this, "stakeUnstake", [true, bm, L], nil)
723713 else 0
724714 }
725715 else 0
726- if ((bT == bT))
716+ if ((bS == bS))
727717 then {
728- let bU = if (containsElement(I, N))
718+ let bT = if (containsElement(H, M))
729719 then {
730- let bo = (V - av)
731- if ((bo > 0))
732- then invoke(this, "stakeUnstake", [true, bo, N], nil)
720+ let bn = (U - au)
721+ if ((bn > 0))
722+ then invoke(this, "stakeUnstake", [true, bn, M], nil)
733723 else 0
734724 }
735725 else 0
736- if ((bU == bU))
726+ if ((bT == bT))
737727 then nil
738728 else throw("Strict value is not equal to itself.")
739729 }
741731 }
742732
743733
744-@Verifier(db)
745-func dc () = {
746- let dd = {
747- let de = if (sigVerify(db.bodyBytes, db.proofs[0], z))
734+@Verifier(cX)
735+func cY () = {
736+ let cZ = {
737+ let da = if (sigVerify(cX.bodyBytes, cX.proofs[0], z))
748738 then 1
749739 else 0
750- let df = if (sigVerify(db.bodyBytes, db.proofs[1], A))
740+ let db = if (sigVerify(cX.bodyBytes, cX.proofs[1], A))
751741 then 1
752742 else 0
753- let dg = if (sigVerify(db.bodyBytes, db.proofs[2], B))
743+ let dc = if (sigVerify(cX.bodyBytes, cX.proofs[2], B))
754744 then 1
755745 else 0
756- (((de + df) + dg) >= 2)
746+ (((da + db) + dc) >= 2)
757747 }
758- let w = db
748+ let w = cX
759749 if ($isInstanceOf(w, "InvokeScriptTransaction"))
760750 then {
761- let da = w
762- let dh = if ((da.dApp == this))
763- then (da.function == "takeIntoAccountExtraFunds")
751+ let cW = w
752+ let dd = if ((cW.dApp == this))
753+ then (cW.function == "takeIntoAccountExtraFunds")
764754 else false
765- let di = if (if (if (sigVerify(db.bodyBytes, db.proofs[0], z))
755+ let de = if (if (if (sigVerify(cX.bodyBytes, cX.proofs[0], z))
766756 then true
767- else sigVerify(db.bodyBytes, db.proofs[0], A))
757+ else sigVerify(cX.bodyBytes, cX.proofs[0], A))
768758 then true
769- else sigVerify(db.bodyBytes, db.proofs[0], B))
759+ else sigVerify(cX.bodyBytes, cX.proofs[0], B))
770760 then true
771- else sigVerify(db.bodyBytes, db.proofs[0], D)
772- if (if (dh)
773- then di
761+ else sigVerify(cX.bodyBytes, cX.proofs[0], D)
762+ if (if (dd)
763+ then de
774764 else false)
775765 then true
776- else dd
766+ else cZ
777767 }
778- else dd
768+ else cZ
779769 }
780770
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
3030 let n = "staking_usdnnsbt_address"
3131
3232 let o = "staking_eurn_address"
3333
3434 let p = "admin_pub_1"
3535
3636 let q = "admin_pub_2"
3737
3838 let r = "admin_pub_3"
3939
40-let s = Address(base58'3N8PGkzXhbtTvEwEQTtE2xiTJmsDEQ9XfoZ')
40+let s = Address(base58'3PHaNgomBkrvEL2QnuJarQVJa71wjw9qiqG')
4141
42-let t = Address(base58'3NBBWfzZtZtszaXbitTKnrB2xXwv26Bn7H9')
42+let t = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom')
4343
4444 func u (v) = {
4545 let w = getString(t, v)
4646 if ($isInstanceOf(w, "String"))
4747 then {
4848 let x = w
4949 fromBase58String(x)
5050 }
5151 else {
5252 let y = w
5353 throw("Admin public key is empty")
5454 }
5555 }
5656
5757
5858 let z = u(p)
5959
6060 let A = u(q)
6161
6262 let B = u(r)
6363
6464 let C = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
6565
6666 let D = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
6767
6868 let E = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
6969
70-let F = Address(base58'3N6q7sCGSSLBUXDdjBdYGTJbZGZfhhh8cNg')
70+let F = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
7171
72-let G = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
72+let G = base58'ECBCkHS68DckpBrzLeoRgYbFg7sCVqR176mPqbXsj9pA'
7373
74-let H = base58'ECBCkHS68DckpBrzLeoRgYbFg7sCVqR176mPqbXsj9pA'
74+let H = [toBase58String(F), toBase58String(G)]
7575
76-let I = [toBase58String(G), toBase58String(H)]
76+let I = Address(fromBase58String(valueOrErrorMessage(getString(t, n), "no usdn staking address")))
7777
78-let J = Address(fromBase58String(valueOrErrorMessage(getString(t, n), "no usdn staking address")))
78+let J = Address(fromBase58String(valueOrErrorMessage(getString(t, o), "no usdn staking address")))
7979
80-let K = Address(fromBase58String(valueOrErrorMessage(getString(t, o), "no usdn staking address")))
80+let K = getBooleanValue(this, c)
8181
82-let L = getBooleanValue(this, c)
82+let L = getStringValue(this, d)
8383
84-let M = getStringValue(this, d)
84+let M = getStringValue(this, e)
8585
86-let N = getStringValue(this, e)
86+let N = if ((L == "WAVES"))
87+ then unit
88+ else fromBase58String(L)
8789
8890 let O = if ((M == "WAVES"))
8991 then unit
9092 else fromBase58String(M)
9193
92-let P = if ((N == "WAVES"))
93- then unit
94- else fromBase58String(N)
95-
96-let Q = {
97- let w = O
94+let P = {
95+ let w = N
9896 if ($isInstanceOf(w, "ByteVector"))
9997 then {
100- let R = w
101- value(assetInfo(R)).name
98+ let Q = w
99+ value(assetInfo(Q)).name
102100 }
103101 else if ($isInstanceOf(w, "Unit"))
104102 then {
105- let S = w
103+ let R = w
106104 "WAVES"
107105 }
108106 else throw("Match error")
109107 }
110108
111-let T = {
112- let w = P
109+let S = {
110+ let w = O
113111 if ($isInstanceOf(w, "ByteVector"))
114112 then {
115- let R = w
116- value(assetInfo(R)).name
113+ let Q = w
114+ value(assetInfo(Q)).name
117115 }
118116 else if ($isInstanceOf(w, "Unit"))
119117 then {
120- let S = w
118+ let R = w
121119 "WAVES"
122120 }
123121 else throw("Match error")
124122 }
125123
126-let U = getIntegerValue(this, f)
124+let T = getIntegerValue(this, f)
127125
128-let V = getIntegerValue(this, g)
126+let U = getIntegerValue(this, g)
129127
130-let W = fromBase58String(getStringValue(this, h))
128+let V = fromBase58String(getStringValue(this, h))
131129
132-let X = getIntegerValue(this, i)
130+let W = getIntegerValue(this, i)
133131
134-let Y = getIntegerValue(this, l)
132+let X = getIntegerValue(this, l)
135133
136-let Z = 500
134+let Y = 500
137135
138-let aa = 200
136+let Z = 200
139137
140-let ab = 1000000
138+let aa = 1000000
141139
142-let ac = 1000
140+let ab = 1000
143141
144-let ad = 100000000
142+let ac = 100000000
145143
146-let ae = 1000000000000
144+let ad = 1000000000000
147145
148-let af = 1000
146+let ae = 1000
149147
150-let ag = 8
148+let af = 8
151149
152-let ah = 50
150+let ag = 50
153151
154-let ai = 100
152+let ah = 100
155153
156-let aj = 90000000
154+let ai = 90000000
157155
158-let ak = 110000000
156+let aj = 110000000
159157
160-let al = 50
158+let ak = 50
161159
162-let am = 2
160+let al = 2
163161
164-let an = 46000000
162+let am = 46000000
165163
166-func ao (ap) = {
167- let w = ap
164+func an (ao) = {
165+ let w = ao
168166 if ($isInstanceOf(w, "ByteVector"))
169167 then {
170- let R = w
171- assetBalance(this, R)
168+ let Q = w
169+ assetBalance(this, Q)
172170 }
173171 else if ($isInstanceOf(w, "Unit"))
174172 then {
175- let S = w
173+ let R = w
176174 wavesBalance(this).available
177175 }
178176 else throw("Match error")
179177 }
180178
181179
182-func aq (ap) = {
183- let ar = {
184- let w = ap
180+func ap (ao) = {
181+ let aq = {
182+ let w = ao
185183 if ($isInstanceOf(w, "ByteVector"))
186184 then {
187- let as = w
188- if ((as == G))
189- then getInteger(J, ((("rpd_balance_" + toBase58String(as)) + "_") + toString(this)))
190- else if ((as == H))
191- then getInteger(K, ((("%s%s%s__stakingBalance__" + toBase58String(as)) + "__") + toString(this)))
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)))
192190 else 0
193191 }
194192 else if ($isInstanceOf(w, "Unit"))
195193 then 0
196194 else throw("Match error")
197195 }
198- let w = ar
196+ let w = aq
199197 if ($isInstanceOf(w, "Int"))
200198 then {
201- let at = w
202- at
199+ let as = w
200+ as
203201 }
204202 else 0
205203 }
206204
207205
208-let au = aq(O)
206+let at = ap(N)
209207
210-let av = aq(P)
208+let au = ap(O)
209+
210+let av = (T - at)
211211
212212 let aw = (U - au)
213213
214-let ax = (V - av)
214+let ax = (an(N) + at)
215215
216-let ay = (ao(O) + au)
216+let ay = (an(O) + au)
217217
218-let az = (ao(P) + av)
219-
220-let aA = if ((ay >= U))
221- then (az >= V)
218+let az = if ((ax >= T))
219+ then (ay >= U)
222220 else false
223221
224-func aB (aC,aD) = (((fraction(ae, aC, aD) + fraction(ae, aD, aC)) / 2) / 10000)
222+func aA (aB,aC) = (((fraction(ad, aB, aC) + fraction(ad, aC, aB)) / 2) / 10000)
225223
226224
227-func aE (aC,aD) = {
228- let aF = aB(aC, aD)
229- (fraction((aC + aD), ad, pow(aF, ag, al, am, ag, CEILING)) + (2 * fraction(pow(fraction(aC, aD, ad), 0, 5, 1, (ag / 2), DOWN), pow((aF - an), ag, al, am, ag, DOWN), ad)))
225+func aD (aB,aC) = {
226+ let aE = aA(aB, aC)
227+ (fraction((aB + aC), ac, pow(aE, af, ak, al, af, CEILING)) + (2 * fraction(pow(fraction(aB, aC, ac), 0, 5, 1, (af / 2), DOWN), pow((aE - am), af, ak, al, af, DOWN), ac)))
230228 }
231229
232230
233-func aG (aH,aI,aJ,aK) = {
234- let aL = (ad - ((ad * 1) / 10000000))
235- let aM = (aH - aI)
236- let aC = (U + aJ)
237- let aD = (V + aJ)
238- let aN = if ((aK == O))
239- then aE(aC, (V - aH))
240- else if ((aK == P))
241- then aE((U - aH), aD)
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+ let aM = if ((aJ == N))
237+ then aD(aB, (U - aG))
238+ else if ((aJ == O))
239+ then aD((T - aG), aC)
242240 else throw("Wrong asset in payment")
243- let aO = fraction(ad, Y, aN)
244- func aP (aQ,aR) = if ((aQ == -1))
241+ let aN = fraction(ac, X, aM)
242+ func aO (aP,aQ) = if ((aP == -1))
245243 then {
246- let aS = (aH - ((aR * aM) / 5))
247- let aT = if ((aK == O))
248- then aE(aC, (V - aS))
249- else aE((U - aS), aD)
250- if ((aT > Y))
251- then aS
244+ let aR = (aG - ((aQ * aL) / 5))
245+ let aS = if ((aJ == N))
246+ then aD(aB, (U - aR))
247+ else aD((T - aR), aC)
248+ if ((aS > X))
249+ then aR
252250 else -1
253251 }
254- else aQ
252+ else aP
255253
256- let aU = {
257- let aV = [1, 2, 3, 4, 5]
258- let aW = size(aV)
259- let aX = -1
260- func aY (aZ,ba) = if ((ba >= aW))
261- then aZ
262- else aP(aZ, aV[ba])
254+ let aT = {
255+ let aU = [1, 2, 3, 4, 5]
256+ let aV = size(aU)
257+ let aW = -1
258+ func aX (aY,aZ) = if ((aZ >= aV))
259+ then aY
260+ else aO(aY, aU[aZ])
263261
264- func bb (aZ,ba) = if ((ba >= aW))
265- then aZ
262+ func ba (aY,aZ) = if ((aZ >= aV))
263+ then aY
266264 else throw("List size exceeds 5")
267265
268- bb(aY(aY(aY(aY(aY(aX, 0), 1), 2), 3), 4), 5)
266+ ba(aX(aX(aX(aX(aX(aW, 0), 1), 2), 3), 4), 5)
269267 }
270- if ((0 > aU))
268+ if ((0 > aT))
271269 then throw("something went wrong while working with amountToSend")
272- else if (if ((aO > aL))
273- then (aN > Y)
270+ else if (if ((aN > aK))
271+ then (aM > X)
274272 else false)
275- then aH
276- else aU
273+ then aG
274+ else aT
277275 }
278276
279277
280-func bc (ap) = {
281- let w = ap
278+func bb (ao) = {
279+ let w = ao
282280 if ($isInstanceOf(w, "ByteVector"))
283281 then {
284- let R = w
285- let bd = toBase58String(R)
286- let be = valueOrErrorMessage(assetInfo(R), (("Asset " + bd) + " doesn't exist"))
287- $Tuple3(bd, be.name, be.decimals)
282+ let Q = w
283+ let bc = toBase58String(Q)
284+ let bd = valueOrErrorMessage(assetInfo(Q), (("Asset " + bc) + " doesn't exist"))
285+ $Tuple3(bc, bd.name, bd.decimals)
288286 }
289287 else if ($isInstanceOf(w, "Unit"))
290288 then {
291- let S = w
289+ let R = w
292290 $Tuple3("WAVES", "WAVES", 8)
293291 }
294292 else throw("Match error")
295293 }
296294
297295
298-func bf (bg) = [BooleanEntry(c, false), StringEntry(m, bg)]
296+func be (bf) = [BooleanEntry(c, false), StringEntry(m, bf)]
299297
300298
301-func bh () = throw("DApp is already active")
299+func bg () = throw("DApp is already active")
302300
303301
304-func bi () = throw("DApp is inactive at this moment")
302+func bh () = throw("DApp is inactive at this moment")
305303
306304
307-func bj () = throw("Only admin can call this function")
305+func bi () = throw("Only admin can call this function")
308306
309307
310-func bk () = throw(((("Incorrect assets attached. Expected: " + M) + " and ") + N))
308+func bj () = throw(((("Incorrect assets attached. Expected: " + L) + " and ") + M))
311309
312310
313-func bl (bm,bn,bo) = throw(((((((((("New balance in assets of the DApp is less than threshold " + toString(bm)) + ": ") + toString(bn)) + " ") + Q) + ", ") + toString(bo)) + " ") + T))
311+func bk (bl,bm,bn) = throw(((((((((("New balance in assets of the DApp is less than threshold " + toString(bl)) + ": ") + toString(bm)) + " ") + P) + ", ") + toString(bn)) + " ") + S))
314312
315313
316-func bp () = bf(((((((((((((((("Suspicious state. Actual balances: " + toString(U)) + " ") + Q) + ", ") + toString(V)) + " ") + T) + ". State: ") + toString(ao(O))) + " ") + Q) + ", ") + toString(ao(P))) + " ") + T))
314+func bo () = be(((((((((((((((("Suspicious state. Actual balances: " + toString(T)) + " ") + P) + ", ") + toString(U)) + " ") + S) + ". State: ") + toString(an(N))) + " ") + P) + ", ") + toString(an(O))) + " ") + S))
317315
318316
319-func bq (br,ap) = if (br)
320- then if ((ap == G))
321- then $Tuple2("lockNeutrino", J)
322- else $Tuple2("startStaking", K)
323- else if ((ap == G))
324- then $Tuple2("unlockNeutrino", J)
325- else $Tuple2("stopStaking", K)
317+func bp (bq,ao) = if (bq)
318+ then if ((ao == F))
319+ then $Tuple2("lockNeutrino", I)
320+ else $Tuple2("startStaking", J)
321+ else if ((ao == F))
322+ then $Tuple2("unlockNeutrino", I)
323+ else $Tuple2("stopStaking", J)
326324
327325
328-func bs (br,bt,ap) = if (br)
326+func br (bq,bs,ao) = if (bq)
329327 then {
330- let bu = bq(br, ap)
331- let bv = bu._1
332- let bw = bu._2
333- $Tuple4(bv, bw, nil, [AttachedPayment(ap, bt)])
328+ let bt = bp(bq, ao)
329+ let bu = bt._1
330+ let bv = bt._2
331+ $Tuple4(bu, bv, nil, [AttachedPayment(ao, bs)])
334332 }
335333 else {
336- let bx = bq(br, ap)
337- let bv = bx._1
338- let bw = bx._2
339- $Tuple4(bv, bw, [bt, toBase58String(ap)], nil)
334+ let bw = bp(bq, ao)
335+ let bu = bw._1
336+ let bv = bw._2
337+ $Tuple4(bu, bv, [bs, toBase58String(ao)], nil)
340338 }
341339
342340
343-@Callable(at)
341+@Callable(as)
344342 func init () = {
345- let by = $Tuple2(at.payments[0].amount, at.payments[0].assetId)
346- let bz = by._1
347- let bA = by._2
348- let bB = $Tuple2(at.payments[1].amount, at.payments[1].assetId)
349- let bC = bB._1
350- let bD = bB._2
351- let bE = bc(bA)
352- let bF = bE._1
353- let bG = bE._2
354- let bH = bE._3
355- let bI = bc(bD)
356- let bJ = bI._1
357- let bK = bI._2
358- let bL = bI._3
343+ let bx = $Tuple2(as.payments[0].amount, as.payments[0].assetId)
344+ let by = bx._1
345+ let bz = bx._2
346+ let bA = $Tuple2(as.payments[1].amount, as.payments[1].assetId)
347+ let bB = bA._1
348+ let bC = bA._2
349+ let bD = bb(bz)
350+ let bE = bD._1
351+ let bF = bD._2
352+ let bG = bD._3
353+ let bH = bb(bC)
354+ let bI = bH._1
355+ let bJ = bH._2
356+ let bK = bH._3
359357 if (isDefined(getBoolean(this, c)))
360- then bh()
361- else if ((bA == bD))
358+ then bg()
359+ else if ((bz == bC))
362360 then throw("Assets must be different")
363361 else {
364- let bM = ((("s" + take(bG, 7)) + "_") + take(bK, 7))
365- let bN = ((((("ShareToken of SwopFi protocol for " + bG) + " and ") + bK) + " at address ") + toString(this))
366- let bO = ((bH + bL) / 2)
367- let bP = fraction(pow(bz, bH, 5, 1, bH, DOWN), pow(bC, bL, 5, 1, bL, DOWN), pow(10, 0, bO, 0, 0, DOWN))
368- let bQ = Issue(bM, bN, bP, bO, true)
369- let bR = calculateAssetId(bQ)
370- let bS = aE(bz, bC)
371- let bT = if (containsElement(I, bF))
372- then invoke(this, "stakeUnstake", [true, bz, bF], nil)
362+ let bL = ((("s" + take(bF, 7)) + "_") + take(bJ, 7))
363+ let bM = ((((("ShareToken of SwopFi protocol for " + bF) + " and ") + bJ) + " at address ") + toString(this))
364+ let bN = ((bG + bK) / 2)
365+ let bO = fraction(pow(by, bG, 5, 1, bG, DOWN), pow(bB, bK, 5, 1, bK, DOWN), pow(10, 0, bN, 0, 0, DOWN))
366+ let bP = Issue(bL, bM, bO, bN, true)
367+ let bQ = calculateAssetId(bP)
368+ let bR = aD(by, bB)
369+ let bS = if (containsElement(H, bE))
370+ then invoke(this, "stakeUnstake", [true, by, bE], nil)
373371 else 0
374- if ((bT == bT))
372+ if ((bS == bS))
375373 then {
376- let bU = if (containsElement(I, bJ))
377- then invoke(this, "stakeUnstake", [true, bC, bJ], nil)
374+ let bT = if (containsElement(H, bI))
375+ then invoke(this, "stakeUnstake", [true, bB, bI], nil)
378376 else 0
379- if ((bU == bU))
380- then [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bF), StringEntry(e, bJ), IntegerEntry(f, bz), IntegerEntry(g, bC), IntegerEntry(l, bS), IntegerEntry(j, Z), IntegerEntry(k, ab), bQ, StringEntry(h, toBase58String(bR)), IntegerEntry(i, bP), ScriptTransfer(at.caller, bP, bR)]
377+ if ((bT == bT))
378+ then [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bE), StringEntry(e, bI), IntegerEntry(f, by), IntegerEntry(g, bB), IntegerEntry(l, bR), IntegerEntry(j, Y), IntegerEntry(k, aa), bP, StringEntry(h, toBase58String(bQ)), IntegerEntry(i, bO), ScriptTransfer(as.caller, bO, bQ)]
381379 else throw("Strict value is not equal to itself.")
382380 }
383381 else throw("Strict value is not equal to itself.")
384382 }
385383 }
386384
387385
388386
389-@Callable(at)
390-func replenishWithTwoTokens (bV) = {
391- let bA = at.payments[0].assetId
392- let bD = at.payments[1].assetId
393- let bz = at.payments[0].amount
394- let bC = at.payments[1].amount
395- let bW = bc(bA)
396- let bF = bW._1
397- let bG = bW._2
398- let bH = bW._3
399- let bX = bc(bD)
400- let bJ = bX._1
401- let bK = bX._2
402- let bL = bX._3
403- let bY = fraction(fraction(ad, U, bz), ac, fraction(ad, V, bC))
404- let bZ = fraction(ad, bz, U)
405- let ca = fraction(ad, bC, V)
406- let cb = fraction(min([bZ, ca]), X, ad)
407- let bS = aE((U + bz), (V + bC))
408- if (!(L))
409- then bi()
410- else if (if ((0 > bV))
387+@Callable(as)
388+func replenishWithTwoTokens (bU) = {
389+ let bz = as.payments[0].assetId
390+ let bC = as.payments[1].assetId
391+ let by = as.payments[0].amount
392+ let bB = as.payments[1].amount
393+ let bV = bb(bz)
394+ let bE = bV._1
395+ let bF = bV._2
396+ let bG = bV._3
397+ let bW = bb(bC)
398+ let bI = bW._1
399+ let bJ = bW._2
400+ let bK = bW._3
401+ let bX = fraction(fraction(ac, T, by), ab, fraction(ac, U, bB))
402+ let bY = fraction(ac, by, T)
403+ let bZ = fraction(ac, bB, U)
404+ let ca = fraction(min([bY, bZ]), W, ac)
405+ let bR = aD((T + by), (U + bB))
406+ if (!(K))
407+ then bh()
408+ else if (if ((0 > bU))
411409 then true
412- else (bV > 10))
410+ else (bU > 10))
413411 then throw("Slippage tolerance must be <= 1%")
414- else if ((size(at.payments) != 2))
412+ else if ((size(as.payments) != 2))
415413 then throw("Two attached assets expected")
416- else if (if ((bA != O))
414+ else if (if ((bz != N))
417415 then true
418- else (bD != P))
419- then bk()
420- else if (if ((((ac * (af - bV)) / af) > bY))
416+ else (bC != O))
417+ then bj()
418+ else if (if ((((ab * (ae - bU)) / ae) > bX))
421419 then true
422- else (bY > ((ac * (af + bV)) / af)))
420+ else (bX > ((ab * (ae + bU)) / ae)))
423421 then throw("Incorrect assets amount: amounts must have the contract ratio")
424- else if ((cb == 0))
422+ else if ((ca == 0))
425423 then throw("Too small amount to replenish")
426- else if (!(aA))
427- then ([ScriptTransfer(at.caller, bz, bA), ScriptTransfer(at.caller, bC, bD)] ++ bp())
424+ else if (!(az))
425+ then ([ScriptTransfer(as.caller, by, bz), ScriptTransfer(as.caller, bB, bC)] ++ bo())
428426 else {
429- let bT = if (containsElement(I, bF))
430- then invoke(this, "stakeUnstake", [true, bz, bF], nil)
427+ let bS = if (containsElement(H, bE))
428+ then invoke(this, "stakeUnstake", [true, by, bE], nil)
431429 else 0
432- if ((bT == bT))
430+ if ((bS == bS))
433431 then {
434- let bU = if (containsElement(I, bJ))
435- then invoke(this, "stakeUnstake", [true, bC, bJ], nil)
432+ let bT = if (containsElement(H, bI))
433+ then invoke(this, "stakeUnstake", [true, bB, bI], nil)
436434 else 0
437- if ((bU == bU))
438- then [IntegerEntry(f, (U + bz)), IntegerEntry(g, (V + bC)), IntegerEntry(i, (X + cb)), IntegerEntry(l, bS), Reissue(W, cb, true), ScriptTransfer(at.caller, cb, W)]
435+ if ((bT == bT))
436+ then [IntegerEntry(f, (T + by)), IntegerEntry(g, (U + bB)), IntegerEntry(i, (W + ca)), IntegerEntry(l, bR), Reissue(V, ca, true), ScriptTransfer(as.caller, ca, V)]
439437 else throw("Strict value is not equal to itself.")
440438 }
441439 else throw("Strict value is not equal to itself.")
442440 }
443441 }
444442
445443
446444
447-@Callable(at)
448-func replenishWithOneToken (cc,cd) = {
449- let ce = $Tuple2(at.payments[0].amount, at.payments[0].assetId)
450- let cf = ce._1
451- let cg = ce._2
452- let ch = bc(cg)
453- let ci = ch._1
454- let cj = ch._2
455- let ck = ch._3
456- let cl = 5000000
457- let cm = 50000000
458- let cn = if ((cm > cf))
445+@Callable(as)
446+func replenishWithOneToken (cb,cc) = {
447+ let cd = $Tuple2(as.payments[0].amount, as.payments[0].assetId)
448+ let ce = cd._1
449+ let cf = cd._2
450+ let cg = bb(cf)
451+ let ch = cg._1
452+ let ci = cg._2
453+ let cj = cg._3
454+ let ck = 5000000
455+ let cl = 50000000
456+ let cm = if ((cl > ce))
459457 then 100000
460458 else 1
461- let co = (ad - ((ad * cn) / 10000000))
462- let cp = (ad + ((ad * cn) / 10000000))
463- let cq = (ad - ((ad * 1) / 10000000))
464- if (!(L))
465- then bi()
466- else if ((cl > cf))
467- then throw((((("Payment amount " + toString(cf)) + " does not exceed the minimum amount of ") + toString(cl)) + " tokens"))
468- else if ((size(at.payments) != 1))
459+ let cn = (ac - ((ac * cm) / 10000000))
460+ let co = (ac + ((ac * cm) / 10000000))
461+ let cp = (ac - ((ac * 1) / 10000000))
462+ if (!(K))
463+ then bh()
464+ else if ((ck > ce))
465+ then throw((((("Payment amount " + toString(ce)) + " does not exceed the minimum amount of ") + toString(ck)) + " tokens"))
466+ else if ((size(as.payments) != 1))
469467 then throw("One attached payment expected")
470- else if (!(aA))
471- then ([ScriptTransfer(at.caller, cf, cg)] ++ bp())
472- else if (if ((cg != O))
473- then (cg != P)
468+ else if (!(az))
469+ then ([ScriptTransfer(as.caller, ce, cf)] ++ bo())
470+ else if (if ((cf != N))
471+ then (cf != O)
474472 else false)
475- then bk()
473+ then bj()
476474 else {
477- let cr = if ((cg == O))
478- then $Tuple7((cf - cc), cd, (U + cc), (V - cd), aE((U + cf), V), (U + cf), V)
479- else $Tuple7(cd, (cf - cc), (U - cd), (V + cc), aE(U, (V + cf)), U, (V + cf))
480- let cs = cr._1
481- let ct = cr._2
482- let cu = cr._3
483- let cv = cr._4
484- let bS = cr._5
485- let cw = cr._6
486- let cx = cr._7
487- let cy = if ((cg == O))
488- then IntegerEntry(f, cw)
489- else IntegerEntry(g, cx)
490- let aN = aE(cu, cv)
491- let aO = fraction(ad, Y, aN)
492- let cz = (fraction((ad * ad), cu, cv) / fraction(ad, cs, ct))
493- let cA = fraction((cw + cx), ah, (2 * ai))
494- if (if ((cq >= aO))
475+ let cq = if ((cf == N))
476+ then $Tuple7((ce - cb), cc, (T + cb), (U - cc), aD((T + ce), U), (T + ce), U)
477+ else $Tuple7(cc, (ce - cb), (T - cc), (U + cb), aD(T, (U + ce)), T, (U + ce))
478+ let cr = cq._1
479+ let cs = cq._2
480+ let ct = cq._3
481+ let cu = cq._4
482+ let bR = cq._5
483+ let cv = cq._6
484+ let cw = cq._7
485+ let cx = if ((cf == N))
486+ then IntegerEntry(f, cv)
487+ else IntegerEntry(g, cw)
488+ let aM = aD(ct, cu)
489+ let aN = fraction(ac, X, aM)
490+ let cy = (fraction((ac * ac), ct, cu) / fraction(ac, cr, cs))
491+ let cz = fraction((cv + cw), ag, (2 * ah))
492+ if (if ((cp >= aN))
495493 then true
496- else (Y > aN))
494+ else (X > aM))
497495 then throw("Incorrect virtualSwapTokenPay or virtualSwapTokenGet value")
498- else if (if ((co > cz))
496+ else if (if ((cn > cy))
499497 then true
500- else (cz > cp))
498+ else (cy > co))
501499 then throw("Swap with virtualSwapTokenPay and virtualSwapTokenGet is possible, but ratio after virtual swap is incorrect")
502- else if (if ((cA > cw))
500+ else if (if ((cz > cv))
503501 then true
504- else (cA > cx))
505- then bl(cA, cw, cx)
502+ else (cz > cw))
503+ then bk(cz, cv, cw)
506504 else {
507- let bT = if (containsElement(I, ci))
508- then invoke(this, "stakeUnstake", [true, cf, ci], nil)
505+ let bS = if (containsElement(H, ch))
506+ then invoke(this, "stakeUnstake", [true, ce, ch], nil)
509507 else 0
510- if ((bT == bT))
508+ if ((bS == bS))
511509 then {
512- let bZ = fraction(cs, ad, cu)
513- let ca = fraction(ct, ad, cv)
514- let cb = fraction(min([bZ, ca]), X, ad)
515-[Reissue(W, cb, true), ScriptTransfer(at.caller, cb, W), IntegerEntry(i, (X + cb)), cy, IntegerEntry(l, bS)]
510+ let bY = fraction(cr, ac, ct)
511+ let bZ = fraction(cs, ac, cu)
512+ let ca = fraction(min([bY, bZ]), W, ac)
513+[Reissue(V, ca, true), ScriptTransfer(as.caller, ca, V), IntegerEntry(i, (W + ca)), cx, IntegerEntry(l, bR)]
516514 }
517515 else throw("Strict value is not equal to itself.")
518516 }
519517 }
520518 }
521519
522520
523521
524-@Callable(at)
522+@Callable(as)
525523 func withdraw () = {
526- let cB = $Tuple2(at.payments[0].amount, at.payments[0].assetId)
527- let cf = cB._1
528- let cg = cB._2
529- let cC = fraction(cf, U, X)
530- let cD = fraction(cf, V, X)
531- let bS = aE((U - cC), (V - cD))
532- if (!(L))
533- then bi()
534- else if ((size(at.payments) != 1))
524+ let cA = $Tuple2(as.payments[0].amount, as.payments[0].assetId)
525+ let ce = cA._1
526+ let cf = cA._2
527+ let cB = fraction(ce, T, W)
528+ let cC = fraction(ce, U, W)
529+ let bR = aD((T - cB), (U - cC))
530+ if (!(K))
531+ then bh()
532+ else if ((size(as.payments) != 1))
535533 then throw("One attached payment expected")
536- else if ((cg != W))
537- then throw(("Incorrect asset attached. Expected: " + toBase58String(W)))
538- else if (!(aA))
539- then ([ScriptTransfer(at.caller, cf, cg)] ++ bp())
534+ else if ((cf != V))
535+ then throw(("Incorrect asset attached. Expected: " + toBase58String(V)))
536+ else if (!(az))
537+ then ([ScriptTransfer(as.caller, ce, cf)] ++ bo())
540538 else {
541- let bT = if (containsElement(I, M))
542- then invoke(this, "stakeUnstake", [false, cC, M], nil)
539+ let bS = if (containsElement(H, L))
540+ then invoke(this, "stakeUnstake", [false, cB, L], nil)
543541 else 0
544- if ((bT == bT))
542+ if ((bS == bS))
545543 then {
546- let bU = if (containsElement(I, N))
547- then invoke(this, "stakeUnstake", [false, cD, N], nil)
544+ let bT = if (containsElement(H, M))
545+ then invoke(this, "stakeUnstake", [false, cC, M], nil)
548546 else 0
549- if ((bU == bU))
550- then [IntegerEntry(f, (U - cC)), IntegerEntry(g, (V - cD)), IntegerEntry(i, (X - cf)), IntegerEntry(l, bS), Burn(W, cf), ScriptTransfer(at.caller, cC, O), ScriptTransfer(at.caller, cD, P)]
547+ if ((bT == bT))
548+ then [IntegerEntry(f, (T - cB)), IntegerEntry(g, (U - cC)), IntegerEntry(i, (W - ce)), IntegerEntry(l, bR), Burn(V, ce), ScriptTransfer(as.caller, cB, N), ScriptTransfer(as.caller, cC, O)]
551549 else throw("Strict value is not equal to itself.")
552550 }
553551 else throw("Strict value is not equal to itself.")
554552 }
555553 }
556554
557555
558556
559-@Callable(at)
560-func exchange (cE,cF) = {
561- let cG = $Tuple2(at.payments[0].amount, at.payments[0].assetId)
562- let cf = cG._1
563- let cg = cG._2
564- if (!(L))
565- then bi()
566- else if ((0 >= cE))
567- then throw(("Estimated amount must be positive. Actual: " + toString(cE)))
568- else if ((cF > cE))
569- then throw(((("Minimal amount can't be greater than estimated. Estimated: " + toString(cE)) + ". Minimal: ") + toString(cF)))
570- else if ((size(at.payments) != 1))
557+@Callable(as)
558+func exchange (cD,cE) = {
559+ let cF = $Tuple2(as.payments[0].amount, as.payments[0].assetId)
560+ let ce = cF._1
561+ let cf = cF._2
562+ if (!(K))
563+ then bh()
564+ else if ((0 >= cD))
565+ then throw(("Estimated amount must be positive. Actual: " + toString(cD)))
566+ else if ((cE > cD))
567+ then throw(((("Minimal amount can't be greater than estimated. Estimated: " + toString(cD)) + ". Minimal: ") + toString(cE)))
568+ else if ((size(as.payments) != 1))
571569 then throw("One attached payment expected")
572- else if (!(aA))
573- then ([ScriptTransfer(at.caller, cf, cg)] ++ bp())
574- else if (if ((cg != O))
575- then (cg != P)
570+ else if (!(az))
571+ then ([ScriptTransfer(as.caller, ce, cf)] ++ bo())
572+ else if (if ((cf != N))
573+ then (cf != O)
576574 else false)
577- then bk()
578- else if ((10000000 > cf))
575+ then bj()
576+ else if ((10000000 > ce))
579577 then throw("Only swap of 10.000000 or more tokens is allowed")
580- else if (if ((aj > fraction(ad, cF, cf)))
578+ else if (if ((ai > fraction(ac, cE, ce)))
581579 then true
582- else (fraction(ad, cE, cf) > ak))
580+ else (fraction(ac, cD, ce) > aj))
583581 then throw("Incorrect args and pmt ratio")
584582 else {
585- let cH = if ((cg == O))
586- then P
587- else O
588- let bt = aG(cE, cF, cf, cg)
589- let cI = fraction(bt, aa, ab)
590- let cJ = fraction(bt, (ab - Z), ab)
591- let cK = if ((cg == O))
592- then $Tuple2((U + cf), ((V - cJ) - cI))
593- else $Tuple2(((U - cJ) - cI), (V + cf))
594- let cw = cK._1
595- let cx = cK._2
596- let cA = fraction((cw + cx), ah, (2 * ai))
597- if (if ((cA > cw))
583+ let cG = if ((cf == N))
584+ then O
585+ else N
586+ let bs = aF(cD, cE, ce, cf)
587+ let cH = fraction(bs, Z, aa)
588+ let cI = fraction(bs, (aa - Y), aa)
589+ let cJ = if ((cf == N))
590+ then $Tuple2((T + ce), ((U - cI) - cH))
591+ else $Tuple2(((T - cI) - cH), (U + ce))
592+ let cv = cJ._1
593+ let cw = cJ._2
594+ let cz = fraction((cv + cw), ag, (2 * ah))
595+ if (if ((cz > cv))
598596 then true
599- else (cA > cx))
600- then bl(cA, cw, cx)
597+ else (cz > cw))
598+ then bk(cz, cv, cw)
601599 else {
602- let cL = bc(cg)
603- let ci = cL._1
604- let cj = cL._2
605- let ck = cL._3
606- let cM = bc(cH)
607- let cN = cM._1
608- let cO = cM._2
609- let cP = cM._3
610- let bT = if (containsElement(I, ci))
611- then invoke(this, "stakeUnstake", [true, cf, ci], nil)
600+ let cK = bb(cf)
601+ let ch = cK._1
602+ let ci = cK._2
603+ let cj = cK._3
604+ let cL = bb(cG)
605+ let cM = cL._1
606+ let cN = cL._2
607+ let cO = cL._3
608+ let bS = if (containsElement(H, ch))
609+ then invoke(this, "stakeUnstake", [true, ce, ch], nil)
612610 else 0
613- if ((bT == bT))
611+ if ((bS == bS))
614612 then {
615- let bU = if (containsElement(I, cN))
616- then invoke(this, "stakeUnstake", [false, (cJ + cI), cN], nil)
613+ let bT = if (containsElement(H, cM))
614+ then invoke(this, "stakeUnstake", [false, (cI + cH), cM], nil)
617615 else 0
618- if ((bU == bU))
619- then [IntegerEntry(f, cw), IntegerEntry(g, cx), IntegerEntry(l, aE(cw, cx)), ScriptTransfer(at.caller, cJ, cH), ScriptTransfer(E, cI, cH)]
616+ if ((bT == bT))
617+ then [IntegerEntry(f, cv), IntegerEntry(g, cw), IntegerEntry(l, aD(cv, cw)), ScriptTransfer(as.caller, cI, cG), ScriptTransfer(E, cH, cG)]
620618 else throw("Strict value is not equal to itself.")
621619 }
622620 else throw("Strict value is not equal to itself.")
623621 }
624622 }
625623 }
626624
627625
628626
629-@Callable(at)
630-func shutdown () = if (!(L))
627+@Callable(as)
628+func shutdown () = if (!(K))
631629 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, m), "the cause wasn't specified")))
632- else if (!(containsElement([z, A, B, C], at.callerPublicKey)))
633- then bj()
634- else bf("Paused by admin")
630+ else if (!(containsElement([z, A, B, C], as.callerPublicKey)))
631+ then bi()
632+ else be("Paused by admin")
635633
636634
637635
638-@Callable(at)
639-func activate () = if (L)
640- then bh()
641- else if (!(containsElement([z, A, B, C], at.callerPublicKey)))
642- then bj()
636+@Callable(as)
637+func activate () = if (K)
638+ then bg()
639+ else if (!(containsElement([z, A, B, C], as.callerPublicKey)))
640+ then bi()
643641 else [BooleanEntry(c, true), DeleteEntry(m)]
644642
645643
646644
647-@Callable(at)
648-func takeIntoAccountExtraFunds (cQ) = {
649- let cR = (ay - U)
650- let cS = (az - V)
651- let cT = (cR - (if ((O == unit))
652- then cQ
653- else 0))
654- let cU = (cS - (if ((P == unit))
655- then cQ
656- else 0))
657- let aN = aE((U + cT), (V + cU))
658- if (!(L))
659- then bi()
660- else if ((at.caller != this))
661- then bj()
662- else if ((0 > cQ))
663- then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(cQ)))
664- else if (if ((0 > cR))
665- then true
666- else (0 > cS))
667- then bf("Enroll amount negative")
668- else if (if ((0 > cT))
669- then true
670- else (0 > cU))
671- then throw("Too large amountLeave")
672- else {
673- let bT = if (if (containsElement(I, M))
674- then (cT > 0)
675- else false)
676- then invoke(this, "stakeUnstake", [true, cT, M], nil)
677- else 0
678- if ((bT == bT))
679- then {
680- let bU = if (if (containsElement(I, N))
681- then (cU > 0)
682- else false)
683- then invoke(this, "stakeUnstake", [true, cU, N], nil)
684- else 0
685- if ((bU == bU))
686- then [IntegerEntry(l, aN), IntegerEntry(f, (U + cT)), IntegerEntry(g, (V + cU)), IntegerEntry(("last_income_" + M), cT), IntegerEntry(("last_income_" + N), cU)]
687- else throw("Strict value is not equal to itself.")
688- }
689- else throw("Strict value is not equal to itself.")
690- }
645+@Callable(as)
646+func takeIntoAccountExtraFunds () = {
647+ let cP = (ax - T)
648+ let cQ = (ay - U)
649+ let aM = aD((T + cP), (U + cQ))
650+ if (!(K))
651+ then bh()
652+ else if ((as.caller != E))
653+ then throw("Only the wallet can call this function")
654+ else if (if ((0 > cP))
655+ then true
656+ else (0 > cQ))
657+ then be("Enroll amount negative")
658+ else if (if ((cP == 0))
659+ then (cQ == 0)
660+ else false)
661+ then throw("No money to take")
662+ else {
663+ let bS = if (if (containsElement(H, L))
664+ then (cP > 0)
665+ else false)
666+ then invoke(this, "stakeUnstake", [true, cP, L], nil)
667+ else 0
668+ if ((bS == bS))
669+ then {
670+ let bT = if (if (containsElement(H, M))
671+ then (cQ > 0)
672+ else false)
673+ then invoke(this, "stakeUnstake", [true, cQ, M], nil)
674+ else 0
675+ if ((bT == bT))
676+ then [IntegerEntry(l, aM), IntegerEntry(f, (T + cP)), IntegerEntry(g, (U + cQ)), IntegerEntry(("last_income_" + L), cP), IntegerEntry(("last_income_" + M), cQ)]
677+ else throw("Strict value is not equal to itself.")
678+ }
679+ else throw("Strict value is not equal to itself.")
680+ }
691681 }
692682
693683
694684
695-@Callable(at)
696-func stakeUnstake (br,bt,cV) = if ((at.caller != this))
685+@Callable(as)
686+func stakeUnstake (bq,bs,cR) = if ((as.caller != this))
697687 then throw("Only contract itself can invoke this function")
698688 else {
699- let cW = bs(br, bt, fromBase58String(cV))
700- let bv = cW._1
701- let cX = cW._2
702- let cY = cW._3
703- let cZ = cW._4
704- let da = invoke(cX, bv, cY, cZ)
705- if ((da == da))
689+ let cS = br(bq, bs, fromBase58String(cR))
690+ let bu = cS._1
691+ let cT = cS._2
692+ let cU = cS._3
693+ let cV = cS._4
694+ let cW = invoke(cT, bu, cU, cV)
695+ if ((cW == cW))
706696 then nil
707697 else throw("Strict value is not equal to itself.")
708698 }
709699
710700
711701
712-@Callable(at)
713-func stakeAll () = if (!(L))
702+@Callable(as)
703+func stakeAll () = if (!(K))
714704 then throw("DApp is inactive at this moment")
715- else if (!(containsElement([z, A, B, C], at.callerPublicKey)))
705+ else if (!(containsElement([z, A, B, C], as.callerPublicKey)))
716706 then throw("Only admin can call this function")
717707 else {
718- let bT = if (containsElement(I, M))
708+ let bS = if (containsElement(H, L))
719709 then {
720- let bn = (U - au)
721- if ((bn > 0))
722- then invoke(this, "stakeUnstake", [true, bn, M], nil)
710+ let bm = (T - at)
711+ if ((bm > 0))
712+ then invoke(this, "stakeUnstake", [true, bm, L], nil)
723713 else 0
724714 }
725715 else 0
726- if ((bT == bT))
716+ if ((bS == bS))
727717 then {
728- let bU = if (containsElement(I, N))
718+ let bT = if (containsElement(H, M))
729719 then {
730- let bo = (V - av)
731- if ((bo > 0))
732- then invoke(this, "stakeUnstake", [true, bo, N], nil)
720+ let bn = (U - au)
721+ if ((bn > 0))
722+ then invoke(this, "stakeUnstake", [true, bn, M], nil)
733723 else 0
734724 }
735725 else 0
736- if ((bU == bU))
726+ if ((bT == bT))
737727 then nil
738728 else throw("Strict value is not equal to itself.")
739729 }
740730 else throw("Strict value is not equal to itself.")
741731 }
742732
743733
744-@Verifier(db)
745-func dc () = {
746- let dd = {
747- let de = if (sigVerify(db.bodyBytes, db.proofs[0], z))
734+@Verifier(cX)
735+func cY () = {
736+ let cZ = {
737+ let da = if (sigVerify(cX.bodyBytes, cX.proofs[0], z))
748738 then 1
749739 else 0
750- let df = if (sigVerify(db.bodyBytes, db.proofs[1], A))
740+ let db = if (sigVerify(cX.bodyBytes, cX.proofs[1], A))
751741 then 1
752742 else 0
753- let dg = if (sigVerify(db.bodyBytes, db.proofs[2], B))
743+ let dc = if (sigVerify(cX.bodyBytes, cX.proofs[2], B))
754744 then 1
755745 else 0
756- (((de + df) + dg) >= 2)
746+ (((da + db) + dc) >= 2)
757747 }
758- let w = db
748+ let w = cX
759749 if ($isInstanceOf(w, "InvokeScriptTransaction"))
760750 then {
761- let da = w
762- let dh = if ((da.dApp == this))
763- then (da.function == "takeIntoAccountExtraFunds")
751+ let cW = w
752+ let dd = if ((cW.dApp == this))
753+ then (cW.function == "takeIntoAccountExtraFunds")
764754 else false
765- let di = if (if (if (sigVerify(db.bodyBytes, db.proofs[0], z))
755+ let de = if (if (if (sigVerify(cX.bodyBytes, cX.proofs[0], z))
766756 then true
767- else sigVerify(db.bodyBytes, db.proofs[0], A))
757+ else sigVerify(cX.bodyBytes, cX.proofs[0], A))
768758 then true
769- else sigVerify(db.bodyBytes, db.proofs[0], B))
759+ else sigVerify(cX.bodyBytes, cX.proofs[0], B))
770760 then true
771- else sigVerify(db.bodyBytes, db.proofs[0], D)
772- if (if (dh)
773- then di
761+ else sigVerify(cX.bodyBytes, cX.proofs[0], D)
762+ if (if (dd)
763+ then de
774764 else false)
775765 then true
776- else dd
766+ else cZ
777767 }
778- else dd
768+ else cZ
779769 }
780770

github/deemru/w8io/026f985 
287.86 ms