tx · Am6Lqm7vECUUwGZVXSHZsW9aZ79xuiUWq6s1VLJL3zXb

3P6QCup9ZgsBg8LLzk7dCa8MnCZBCLYQoXP:  -0.01200000 Waves

2024.02.24 10:37 [4055824] smart account 3P6QCup9ZgsBg8LLzk7dCa8MnCZBCLYQoXP > SELF 0.00000000 Waves

{ "type": 13, "id": "Am6Lqm7vECUUwGZVXSHZsW9aZ79xuiUWq6s1VLJL3zXb", "fee": 1200000, "feeAssetId": null, "timestamp": 1708760351547, "version": 2, "chainId": 87, "sender": "3P6QCup9ZgsBg8LLzk7dCa8MnCZBCLYQoXP", "senderPublicKey": "Gz4W9Y9UMEEZzMBu6GHyXY7BRsLXdbzFDwRPak18TW7u", "proofs": [ "39EfQGycFULwTHyBQLKmkjJyWQRicYduZfBkzBDTwNzfHDFTSz9JYEQtraX5xfr7N7yzfAxPumzgYpj8zbVQPwmR" ], "script": "base64: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JGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMV8yAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAANGZWUJAQ10cnlHZXRJbnRlZ2VyAQIKc3RhdGljX2ZlZQAGU2NhbGU4AIDC1y8ACEZlZVNjYWxlAJBOARJjYWxjdWxhdGVPdXRBbW91bnQFCEFtb3VudEluB2Fzc2V0SW4IYXNzZXRPdXQJQmFsYW5jZUluCkJhbGFuY2VPdXQEB0luZGV4SW4JAQV2YWx1ZQEJAM8IAgUIYXNzZXRJZHMFB2Fzc2V0SW4ECEluZGV4T3V0CQEFdmFsdWUBCQDPCAIFCGFzc2V0SWRzBQhhc3NldE91dAMJAAACBQdJbmRleEluBQhJbmRleE91dAUIQW1vdW50SW4JAG4EBQpCYWxhbmNlT3V0CQBlAgkAaAIFBlNjYWxlOAUGU2NhbGU4CQCgAwEJAHYGCQC9AgQJALYCAQUJQmFsYW5jZUluCQC2AgEJAGgCBQZTY2FsZTgFBlNjYWxlOAkAtgIBCQBkAgUJQmFsYW5jZUluBQhBbW91bnRJbgUGSEFMRlVQABAJALYCAQkAawMJAJEDAgUNQXNzZXRzV2VpZ2h0cwUHSW5kZXhJbgCQTgkAkQMCBQ1Bc3NldHNXZWlnaHRzBQhJbmRleE91dAAEABAFB0NFSUxJTkcJAGgCBQZTY2FsZTgFBlNjYWxlOAUERE9XTgEOY2FsY3VsYXRlU1JhdGUABA9zdGFraW5nRW1pc3Npb24EByRtYXRjaDAJAPwHBAkBB0FkZHJlc3MBARoBVxH9XmeRLmedFwcQVQ8N81O/JVRxjvd47gIXZ2V0U3Rha2luZ0Jsb2NrRW1pc3Npb24JAMwIAgcFA25pbAUDbmlsAwkAAQIFByRtYXRjaDACA0ludAQCaW4FByRtYXRjaDAFAmluCQACAQIKYmFkIGludm9rZQMJAAACBQ9zdGFraW5nRW1pc3Npb24FD3N0YWtpbmdFbWlzc2lvbgQObGFzdENoZWNrU1JhdGUJAQ50cnlHZXRJbnRlZ2VyMgIFB3BsdXRvU0MCFWdsb2JhbF9sYXN0Q2hlY2tTUmF0ZQQMc1BsdXRvQW1vdW50CQEOdHJ5R2V0SW50ZWdlcjICBQdwbHV0b1NDAg1nbG9iYWxfc1BsdXRvBA9sYXN0Q2hlY2tIZWlnaHQJAQ50cnlHZXRJbnRlZ2VyMgIFB3BsdXRvU0MCG2dsb2JhbF9sYXN0Q2hlY2tTUmF0ZUhlaWdodAQGYmxvY2tzCQBlAgUGaGVpZ2h0BQ9sYXN0Q2hlY2tIZWlnaHQDCQAAAgUMc1BsdXRvQW1vdW50AAAFBlNjYWxlOAkAZAIJAQ50cnlHZXRJbnRlZ2VyMgIFB3BsdXRvU0MCFWdsb2JhbF9sYXN0Q2hlY2tTUmF0ZQkAawMJAGgCBQZibG9ja3MFBlNjYWxlOAUPc3Rha2luZ0VtaXNzaW9uBQxzUGx1dG9BbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BFWNhbGN1bGF0ZVN0YWtlZEFtb3VudAAEBmFtb3VudAkBDnRyeUdldEludGVnZXIyAgUHcGx1dG9TQwkArAICCQClCAEFBHRoaXMCB19zUGx1dG8JAGsDBQZhbW91bnQJAQ5jYWxjdWxhdGVTUmF0ZQAFBlNjYWxlOAAMcHV6emxlU3Rha2VkCQEOdHJ5R2V0SW50ZWdlcjICBQ1wdXp6bGVTdGFraW5nCQCsAgIJAKUIAQUEdGhpcwIHX3N0YWtlZAALd2F2ZXNJblN3b3AJAGsDCQEOdHJ5R2V0SW50ZWdlcjICBQZzd29wU0MCD0FfYXNzZXRfYmFsYW5jZQkBDnRyeUdldEludGVnZXIyAgUGc3dvcFNDCQCsAgIJAKwCAgIkM1BIYU5nb21Ca3J2RUwyUW51SmFyUVZKYTcxd2p3OXFpcUdfCQClCAEFBHRoaXMCFF9zaGFyZV90b2tlbnNfbG9ja2VkCQEOdHJ5R2V0SW50ZWdlcjICBQZzd29wU0MCEnNoYXJlX2Fzc2V0X3N1cHBseQABQQkBDnRyeUdldEludGVnZXIyAgUGc3dvcFNDAg9BX2Fzc2V0X2JhbGFuY2UAB215U2hhcmUJAQ50cnlHZXRJbnRlZ2VyMgIFBnN3b3BTQwkArAICCQCsAgICJDNQSGFOZ29tQmtydkVMMlFudUphclFWSmE3MXdqdzlxaXFHXwkApQgBBQR0aGlzAhRfc2hhcmVfdG9rZW5zX2xvY2tlZAAKdG90YWxTaGFyZQkBDnRyeUdldEludGVnZXIyAgUGc3dvcFNDAhJzaGFyZV9hc3NldF9zdXBwbHkAAUIJAQ50cnlHZXRJbnRlZ2VyMgIFBnN3b3BTQwIPQl9hc3NldF9iYWxhbmNlAAl4dG5JblN3b3AJAGsDCQEOdHJ5R2V0SW50ZWdlcjICBQZzd29wU0MCD0JfYXNzZXRfYmFsYW5jZQkBDnRyeUdldEludGVnZXIyAgUGc3dvcFNDCQCsAgIJAKwCAgIkM1BIYU5nb21Ca3J2RUwyUW51SmFyUVZKYTcxd2p3OXFpcUdfCQClCAEFBHRoaXMCFF9zaGFyZV90b2tlbnNfbG9ja2VkCQEOdHJ5R2V0SW50ZWdlcjICBQZzd29wU0MCEnNoYXJlX2Fzc2V0X3N1cHBseQEPZ2V0VG9rZW5CYWxhbmNlAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAXQFByRtYXRjaDAJAGQCCQDwBwIFBHRoaXMFAXQDCQAAAgUHYXNzZXRJZAUFcGx1dG8JARVjYWxjdWxhdGVTdGFrZWRBbW91bnQACQBkAgAAAwkAAAIFB2Fzc2V0SWQFBnB1enpsZQUMcHV6emxlU3Rha2VkCQBkAgAAAwkAAAIFB2Fzc2V0SWQFA3h0bgUJeHRuSW5Td29wAAAJAGQCCAkA7wcBBQR0aGlzB3JlZ3VsYXIFC3dhdmVzSW5Td29wAQNzdW0CBWFjY3VtAW4JAGQCBQVhY2N1bQkBDXBhcnNlSW50VmFsdWUBBQFuAQppc1NodXRkb3duAAQHJG1hdGNoMAkAmwgCBQR0aGlzAgtpc19zaHV0ZG93bgMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAF4BQckbWF0Y2gwBQF4BwYBaQEIc2h1dGRvd24BCHNodXRkb3duAwkAAAIIBQFpBmNhbGxlcgUEdGhpcwkAzAgCCQEMQm9vbGVhbkVudHJ5AgILaXNfc2h1dGRvd24FCHNodXRkb3duBQNuaWwJAAIBAgphZG1pbiBvbmx5AWkBB3By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c2l6ZSBleGNlZWRzIDEwCQEFJGY2XzICCQEFJGY2XzECCQEFJGY2XzECCQEFJGY2XzECCQEFJGY2XzECCQEFJGY2XzECCQEFJGY2XzECCQEFJGY2XzECCQEFJGY2XzECCQEFJGY2XzECCQEFJGY2XzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoJAMwIAgkBC1N0cmluZ0VudHJ5AgIPc3RhdGljX3Rva2VuSWRzBQthc3NldElkc1N0cgkAzAgCCQELU3RyaW5nRW50cnkCAhNzdGF0aWNfdG9rZW5XZWlnaHRzBQ9hc3NldFdlaWdodHNTdHIJAMwIAgkBDEludGVnZXJFbnRyeQICE3N0YXRpY190b2tlbnNBbW91bnQJAJADAQUKYXNzZXRJZHNMaQkAzAgCCQEMSW50ZWdlckVudHJ5AgIKc3RhdGljX2ZlZQUDZmVlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEEc3dhcAIIYXNzZXRPdXQHbWluaW11bQMDCQAAAgkBCmlzU2h1dGRvd24ABgkBAiE9AggFAWkGY2FsbGVyCQEHQWRkcmVzcwEBGgFX6WYhKtIG4NwWiusIWpfUn51io3/3wlpMBwkAAgECFGNvbnRyYWN0IGlzIHNodXRkb3duBANwbXQDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABCQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAJAAIBAiFwbGVhc2UgYXR0YWNoIGV4YWN0bHkgb25lIHBheW1lbnQECEFtb3VudEluCQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQHQXNzZXRJbggFA3BtdAdhc3NldElkBAhBc3NldE91dAkBDWdldEFzc2V0Qnl0ZXMBBQhhc3NldE91dAQOQXNzZXRJbkJhbGFuY2UJAQ9nZXRUb2tlbkJhbGFuY2UBBQdBc3NldEluBA9Bc3NldE91dEJhbGFuY2UJAQ9nZXRUb2tlbkJhbGFuY2UBBQhBc3NldE91dAQLZmVlQW1vdW50SW4JAGsDBQhBbW91bnRJbgUDRmVlBQhGZWVTY2FsZQQNY2xlYW5BbW91bnRJbgkAZQIFCEFtb3VudEluBQtmZWVBbW91bnRJbgQJQW1vdW50T3V0CQESY2FsY3VsYXRlT3V0QW1vdW50BQUNY2xlYW5BbW91bnRJbgUHQXNzZXRJbgUIQXNzZXRPdXQFDkFzc2V0SW5CYWxhbmNlBQ9Bc3NldE91dEJhbGFuY2UEA3VwbAMJAAACBQhBc3NldE91dAUFcGx1dG8JAPwHBAUHcGx1dG9TQwIHdW5zdGFrZQkAzAgCBQlBbW91bnRPdXQFA25pbAUDbmlsBQR1bml0AwkAAAIFA3VwbAUDdXBsBANzcGwDCQAAAgUHQXNzZXRJbgUFcGx1dG8JAPwHBAUHcGx1dG9TQwIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUFcGx1dG8FCEFtb3VudEluBQNuaWwFBHVuaXQDCQAAAgUDc3BsBQNzcGwEA2NwdQMJAAACBQhBc3NldE91dAUGcHV6emxlCQD8BwQFDXB1enpsZVN0YWtpbmcCC2NsYWltUmV3YXJkBQNuaWwFA25pbAUEdW5pdAMJAAACBQNjcHUFA2NwdQQDdXB1AwkAAAIFCEFzc2V0T3V0BQZwdXp6bGUJAPwHBAUNcHV6emxlU3Rha2luZwIHdW5TdGFrZQkAzAgCCQBlAgUJQW1vdW50T3V0CQDwBwIFBHRoaXMFBnB1enpsZQUDbmlsBQNuaWwFBHVuaXQDCQAAAgUDdXB1BQN1cHUEA3NwdQMJAAACBQdBc3NldEluBQZwdXp6bGUJAPwHBAUNcHV6emxlU3Rha2luZwIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUGcHV6emxlCQDwBwIFBHRoaXMFBnB1enpsZQUDbmlsBQR1bml0AwkAAAIFA3NwdQUDc3B1BBhzaGFyZUFtb3VudFdpdGhkcmF3V2F2ZXMJAG4ECQBlAgUJQW1vdW50T3V0CAkA7wcBBQR0aGlzB3JlZ3VsYXIAAQkAawMJAQ50cnlHZXRJbnRlZ2VyMgIFBnN3b3BTQwIPQV9hc3NldF9iYWxhbmNlAAEJAQ50cnlHZXRJbnRlZ2VyMgIFBnN3b3BTQwISc2hhcmVfYXNzZXRfc3VwcGx5BQdDRUlMSU5HBAN1d3MDCQAAAgUIQXNzZXRPdXQFBXdhdmVzCQD8BwQFBnN3b3BTQwIMY2FsbEZ1bmN0aW9uCQDMCAICCHdpdGhkcmF3CQDMCAIJAMwIAgkApAMBBRhzaGFyZUFtb3VudFdpdGhkcmF3V2F2ZXMFA25pbAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUDdXdzBQN1d3MEFnNoYXJlQW1vdW50V2l0aGRyYXdYdG4JAG4ECQBlAgUJQW1vdW50T3V0CQDwBwIFBHRoaXMFA3h0bgABCQBrAwkBDnRyeUdldEludGVnZXIyAgUGc3dvcFNDAg9CX2Fzc2V0X2JhbGFuY2UAAQkBDnRyeUdldEludGVnZXIyAgUGc3dvcFNDAhJzaGFyZV9hc3NldF9zdXBwbHkFB0NFSUxJTkcEA3V4cwMJAAACBQhBc3NldE91dAUDeHRuCQD8BwQFBnN3b3BTQwIMY2FsbEZ1bmN0aW9uCQDMCAICCHdpdGhkcmF3CQDMCAIJAMwIAgkApAMBBRZzaGFyZUFtb3VudFdpdGhkcmF3WHRuBQNuaWwFA25pbAUDbmlsBQR1bml0AwkAAAIFA3V4cwUDdXhzBARzd3hzAwMDAwkBAiE9AgUIQXNzZXRPdXQFA3h0bgkBAiE9AgUIQXNzZXRPdXQFBXdhdmVzBwkAZgIJAQ9nZXRUb2tlbkJhbGFuY2UBBQN4dG4AAAcJAGYCCQEPZ2V0VG9rZW5CYWxhbmNlAQUFd2F2ZXMAAAcJAPwHBAUGc3dvcFNDAgxjYWxsRnVuY3Rpb24JAMwIAgIWcmVwbGVuaXNoV2l0aFR3b1Rva2VucwkAzAgCAgR0cnVlCQDMCAICATAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdAgJAO8HAQUEdGhpcwdyZWd1bGFyCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQN4dG4JAPAHAgUEdGhpcwUDeHRuBQNuaWwFBHVuaXQDCQAAAgUEc3d4cwUEc3d4cwMJAGYCBQdtaW5pbXVtBQlBbW91bnRPdXQJAAIBAidhbW91bnQgdG8gcmVjZWl2ZSBpcyBsb3dlciB0aGFuIG1pbmltdW0DCQAAAgUIQXNzZXRPdXQFB0Fzc2V0SW4JAAIBAhh0aGlzIHN3YXAgaXMgbm90IGFsbG93ZWQDCQBmAgAACQBlAgUPQXNzZXRPdXRCYWxhbmNlBQlBbW91bnRPdXQJAAIBAhNzd2FwIHNtYWxsZXIgYW1vdW50AwkBCmlzU2h1dGRvd24ACQACAQITY29udHJhY3QgaXMgb24gc3RvcAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFCUFtb3VudE91dAUIQXNzZXRPdXQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQxzdGFydEJhbGFuY2UAAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIcYWNjZXNzIG9ubHkgYnkgcHJvamVjdCBvd25lcgkAzAgCCQEMSW50ZWdlckVudHJ5AgULa2V5QnVybnh0blMJAQ9nZXRUb2tlbkJhbGFuY2UBBQdidXJueHRuCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlQbHV0b1MJAQ9nZXRUb2tlbkJhbGFuY2UBBQVwbHV0bwkAzAgCCQEMSW50ZWdlckVudHJ5AgUKa2V5UHV6emxlUwkBD2dldFRva2VuQmFsYW5jZQEFBnB1enpsZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5V2F2ZXNTCQEPZ2V0VG9rZW5CYWxhbmNlAQUEdW5pdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa2V5V2hpcmxwb29sUwkBD2dldFRva2VuQmFsYW5jZQEFCXdoaXJscG9vbAkAzAgCCQEMSW50ZWdlckVudHJ5AgUIa2V5Um9tZVMJAQ9nZXRUb2tlbkJhbGFuY2UBBQRyb21lCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQdrZXlYdG5TCQEPZ2V0VG9rZW5CYWxhbmNlAQUDeHRuBQNuaWwBaQEUY3VycmVudEJhbGFuY2VQcm9maXQAAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIcYWNjZXNzIG9ubHkgYnkgcHJvamVjdCBvd25lcgkAzAgCCQEMSW50ZWdlckVudHJ5AgIYQlVSTi1YVE4gY3VycmVudCBiYWxhbmNlCQEPZ2V0VG9rZW5CYWxhbmNlAQUHYnVybnh0bgkAzAgCCQEMSW50ZWdlckVudHJ5AgIVUExVVE8gY3VycmVudCBiYWxhbmNlCQEPZ2V0VG9rZW5CYWxhbmNlAQUFcGx1dG8JAMwIAgkBDEludGVnZXJFbnRyeQICFlBVWlpMRSBjdXJyZW50IGJhbGFuY2UJAQ9nZXRUb2tlbkJhbGFuY2UBBQZwdXp6bGUJAMwIAgkBDEludGVnZXJFbnRyeQICFVdBVkVTIGN1cnJlbnQgYmFsYW5jZQkBD2dldFRva2VuQmFsYW5jZQEFBXdhdmVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhlXSElSTFBPT0wgY3VycmVudCBiYWxhbmNlCQEPZ2V0VG9rZW5CYWxhbmNlAQUJd2hpcmxwb29sCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhRST01FIGN1cnJlbnQgYmFsYW5jZQkBD2dldFRva2VuQmFsYW5jZQEFBHJvbWUJAMwIAgkBDEludGVnZXJFbnRyeQICE1hUTiBjdXJyZW50IGJhbGFuY2UJAQ9nZXRUb2tlbkJhbGFuY2UBBQN4dG4JAMwIAgkBDEludGVnZXJFbnRyeQICD0JVUk4tWFROIHByb2ZpdAkAZQIJAQ9nZXRUb2tlbkJhbGFuY2UBBQdidXJueHRuCQENdHJ5R2V0SW50ZWdlcgEFC2tleUJ1cm54dG5TCQDMCAIJAQxJbnRlZ2VyRW50cnkCAgxQTFVUTyBwcm9maXQJAGUCCQEPZ2V0VG9rZW5CYWxhbmNlAQUFcGx1dG8JAQ10cnlHZXRJbnRlZ2VyAQUJa2V5UGx1dG9TCQDMCAIJAQxJbnRlZ2VyRW50cnkCAg1QVVpaTEUgcHJvZml0CQBlAgkBD2dldFRva2VuQmFsYW5jZQEFBnB1enpsZQkBDXRyeUdldEludGVnZXIBBQprZXlQdXp6bGVTCQDMCAIJAQxJbnRlZ2VyRW50cnkCAgtXQVZFUyBwcm9mdAkAZQIJAQ9nZXRUb2tlbkJhbGFuY2UBBQV3YXZlcwkBDXRyeUdldEludGVnZXIBBQlrZXlXYXZlc1MJAMwIAgkBDEludGVnZXJFbnRyeQICEFdISVJMUE9PTCBwcm9maXQJAGUCCQEPZ2V0VG9rZW5CYWxhbmNlAQUJd2hpcmxwb29sCQENdHJ5R2V0SW50ZWdlcgEFDWtleVdoaXJscG9vbFMJAMwIAgkBDEludGVnZXJFbnRyeQICC1JPTUUgcHJvZml0CQBlAgkBD2dldFRva2VuQmFsYW5jZQEFBHJvbWUJAQ10cnlHZXRJbnRlZ2VyAQUIa2V5Um9tZVMJAMwIAgkBDEludGVnZXJFbnRyeQICClhUTiBwcm9mdGkJAGUCCQEPZ2V0VG9rZW5CYWxhbmNlAQUDeHRuCQENdHJ5R2V0SW50ZWdlcgEFB2tleVh0blMFA25pbAFpAQljaGVja1N3b3AACQDMCAIJAQxJbnRlZ2VyRW50cnkCAgFBBQFBCQDMCAIJAQxJbnRlZ2VyRW50cnkCAghteSBzaGFyZQUHbXlTaGFyZQkAzAgCCQEMSW50ZWdlckVudHJ5AgILdG90YWwgc2hhcmUFCnRvdGFsU2hhcmUJAMwIAgkBDEludGVnZXJFbnRyeQICAUIFAUIFA25pbABAwHwo", "height": 4055824, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: AVWXDfVQ5gV91vi1HDxDwwLcnW4eTDoHGL7LjAfRqUwk Next: J8tJqMFh7eymv9LzwN7tYwxa7R3r2FD1qKC4L2hwyL4m Diff:
OldNewDifferences
153153 let puzzleStaked = tryGetInteger2(puzzleStaking, (toString(this) + "_staked"))
154154
155155 let wavesInSwop = fraction(tryGetInteger2(swopSC, "A_asset_balance"), tryGetInteger2(swopSC, (("3PHaNgomBkrvEL2QnuJarQVJa71wjw9qiqG_" + toString(this)) + "_share_tokens_locked")), tryGetInteger2(swopSC, "share_asset_supply"))
156+
157+let A = tryGetInteger2(swopSC, "A_asset_balance")
158+
159+let myShare = tryGetInteger2(swopSC, (("3PHaNgomBkrvEL2QnuJarQVJa71wjw9qiqG_" + toString(this)) + "_share_tokens_locked"))
160+
161+let totalShare = tryGetInteger2(swopSC, "share_asset_supply")
162+
163+let B = tryGetInteger2(swopSC, "B_asset_balance")
156164
157165 let xtnInSwop = fraction(tryGetInteger2(swopSC, "B_asset_balance"), tryGetInteger2(swopSC, (("3PHaNgomBkrvEL2QnuJarQVJa71wjw9qiqG_" + toString(this)) + "_share_tokens_locked")), tryGetInteger2(swopSC, "share_asset_supply"))
158166
370378 else [IntegerEntry("BURN-XTN current balance", getTokenBalance(burnxtn)), IntegerEntry("PLUTO current balance", getTokenBalance(pluto)), IntegerEntry("PUZZLE current balance", getTokenBalance(puzzle)), IntegerEntry("WAVES current balance", getTokenBalance(waves)), IntegerEntry("WHIRLPOOL current balance", getTokenBalance(whirlpool)), IntegerEntry("ROME current balance", getTokenBalance(rome)), IntegerEntry("XTN current balance", getTokenBalance(xtn)), IntegerEntry("BURN-XTN profit", (getTokenBalance(burnxtn) - tryGetInteger(keyBurnxtnS))), IntegerEntry("PLUTO profit", (getTokenBalance(pluto) - tryGetInteger(keyPlutoS))), IntegerEntry("PUZZLE profit", (getTokenBalance(puzzle) - tryGetInteger(keyPuzzleS))), IntegerEntry("WAVES proft", (getTokenBalance(waves) - tryGetInteger(keyWavesS))), IntegerEntry("WHIRLPOOL profit", (getTokenBalance(whirlpool) - tryGetInteger(keyWhirlpoolS))), IntegerEntry("ROME profit", (getTokenBalance(rome) - tryGetInteger(keyRomeS))), IntegerEntry("XTN profti", (getTokenBalance(xtn) - tryGetInteger(keyXtnS)))]
371379
372380
381+
382+@Callable(i)
383+func checkSwop () = [IntegerEntry("A", A), IntegerEntry("my share", myShare), IntegerEntry("total share", totalShare), IntegerEntry("B", B)]
384+
385+
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let pluto = base58'Ajso6nTTjptu2UHLx6hfSXVtHFtRBJCkKYd5SAyj7zf5'
55
66 let xtn = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
77
88 let puzzle = base58'HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS'
99
1010 let waves = base58'WAVES'
1111
1212 let burnxtn = base58'3SjxA2YLdfF9fTRbzLm9xFn27C6MW34W1YsdJ6Axefns'
1313
1414 let whirlpool = base58'73tY3E6Gd5AWYmsuq8m8Kek7KnJNAYyS3GoveTbc6jCi'
1515
1616 let rome = base58'AP4Cb5xLYGH6ZigHreCZHoXpQTWDkPsG2BHqfDUx6taJ'
1717
1818 let plutoSC = Address(base58'3P7dGTVZp8VLDYy3XEaUQbiqfi9cMK1Ly5q')
1919
2020 let swopSC = Address(base58'3PHaNgomBkrvEL2QnuJarQVJa71wjw9qiqG')
2121
2222 let puzzleStaking = Address(base58'3PFTbywqxtFfukX3HyT881g4iW5K4QL3FAS')
2323
2424 let keyPlutoS = "PLUTO starting balance"
2525
2626 let keyXtnS = "XTN starting balance"
2727
2828 let keyPuzzleS = "PUZZLE starting balance"
2929
3030 let keyWavesS = "WAVES starting balance"
3131
3232 let keyBurnxtnS = "BURN-XTN starting balance"
3333
3434 let keyWhirlpoolS = "WHIRLPOOL starting balance"
3535
3636 let keyRomeS = "ROME starting balance"
3737
3838 func tryGetInteger (key) = match getInteger(this, key) {
3939 case b: Int =>
4040 b
4141 case _ =>
4242 0
4343 }
4444
4545
4646 func tryGetInteger2 (address,key) = match getInteger(address, key) {
4747 case b: Int =>
4848 b
4949 case _ =>
5050 0
5151 }
5252
5353
5454 func tryGetString (key) = match getString(this, key) {
5555 case b: String =>
5656 b
5757 case _ =>
5858 ""
5959 }
6060
6161
6262 func getAssetString (assetId) = match assetId {
6363 case b: ByteVector =>
6464 toBase58String(b)
6565 case _ =>
6666 "WAVES"
6767 }
6868
6969
7070 func getAssetBytes (assetIdStr) = if ((assetIdStr == "WAVES"))
7171 then unit
7272 else fromBase58String(assetIdStr)
7373
7474
7575 func addAssetBytesToList (accum,item) = (accum ++ [getAssetBytes(item)])
7676
7777
7878 func addAssetWeightToList (accum,item) = (accum ++ [tryGetInteger((("static_" + getAssetString(item)) + "_weight"))])
7979
8080
8181 let assetIds = {
8282 let $l = split(tryGetString("static_tokenIds"), ",")
8383 let $s = size($l)
8484 let $acc0 = nil
8585 func $f0_1 ($a,$i) = if (($i >= $s))
8686 then $a
8787 else addAssetBytesToList($a, $l[$i])
8888
8989 func $f0_2 ($a,$i) = if (($i >= $s))
9090 then $a
9191 else throw("List size exceeds 10")
9292
9393 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
9494 }
9595
9696 let AssetsWeights = {
9797 let $l = assetIds
9898 let $s = size($l)
9999 let $acc0 = nil
100100 func $f1_1 ($a,$i) = if (($i >= $s))
101101 then $a
102102 else addAssetWeightToList($a, $l[$i])
103103
104104 func $f1_2 ($a,$i) = if (($i >= $s))
105105 then $a
106106 else throw("List size exceeds 10")
107107
108108 $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
109109 }
110110
111111 let Fee = tryGetInteger("static_fee")
112112
113113 let Scale8 = 100000000
114114
115115 let FeeScale = 10000
116116
117117 func calculateOutAmount (AmountIn,assetIn,assetOut,BalanceIn,BalanceOut) = {
118118 let IndexIn = value(indexOf(assetIds, assetIn))
119119 let IndexOut = value(indexOf(assetIds, assetOut))
120120 if ((IndexIn == IndexOut))
121121 then AmountIn
122122 else fraction(BalanceOut, ((Scale8 * Scale8) - toInt(pow(fraction(toBigInt(BalanceIn), toBigInt((Scale8 * Scale8)), toBigInt((BalanceIn + AmountIn)), HALFUP), 16, toBigInt(fraction(AssetsWeights[IndexIn], 10000, AssetsWeights[IndexOut])), 4, 16, CEILING))), (Scale8 * Scale8), DOWN)
123123 }
124124
125125
126126 func calculateSRate () = {
127127 let stakingEmission = match invoke(Address(base58'3P3a1jssxc2CGdyC7SGbTJc9ZvTjZ5jBMLZ'), "getStakingBlockEmission", [false], nil) {
128128 case in: Int =>
129129 in
130130 case _ =>
131131 throw("bad invoke")
132132 }
133133 if ((stakingEmission == stakingEmission))
134134 then {
135135 let lastCheckSRate = tryGetInteger2(plutoSC, "global_lastCheckSRate")
136136 let sPlutoAmount = tryGetInteger2(plutoSC, "global_sPluto")
137137 let lastCheckHeight = tryGetInteger2(plutoSC, "global_lastCheckSRateHeight")
138138 let blocks = (height - lastCheckHeight)
139139 if ((sPlutoAmount == 0))
140140 then Scale8
141141 else (tryGetInteger2(plutoSC, "global_lastCheckSRate") + fraction((blocks * Scale8), stakingEmission, sPlutoAmount))
142142 }
143143 else throw("Strict value is not equal to itself.")
144144 }
145145
146146
147147 func calculateStakedAmount () = {
148148 let amount = tryGetInteger2(plutoSC, (toString(this) + "_sPluto"))
149149 fraction(amount, calculateSRate(), Scale8)
150150 }
151151
152152
153153 let puzzleStaked = tryGetInteger2(puzzleStaking, (toString(this) + "_staked"))
154154
155155 let wavesInSwop = fraction(tryGetInteger2(swopSC, "A_asset_balance"), tryGetInteger2(swopSC, (("3PHaNgomBkrvEL2QnuJarQVJa71wjw9qiqG_" + toString(this)) + "_share_tokens_locked")), tryGetInteger2(swopSC, "share_asset_supply"))
156+
157+let A = tryGetInteger2(swopSC, "A_asset_balance")
158+
159+let myShare = tryGetInteger2(swopSC, (("3PHaNgomBkrvEL2QnuJarQVJa71wjw9qiqG_" + toString(this)) + "_share_tokens_locked"))
160+
161+let totalShare = tryGetInteger2(swopSC, "share_asset_supply")
162+
163+let B = tryGetInteger2(swopSC, "B_asset_balance")
156164
157165 let xtnInSwop = fraction(tryGetInteger2(swopSC, "B_asset_balance"), tryGetInteger2(swopSC, (("3PHaNgomBkrvEL2QnuJarQVJa71wjw9qiqG_" + toString(this)) + "_share_tokens_locked")), tryGetInteger2(swopSC, "share_asset_supply"))
158166
159167 func getTokenBalance (assetId) = match assetId {
160168 case t: ByteVector =>
161169 (assetBalance(this, t) + (if ((assetId == pluto))
162170 then calculateStakedAmount()
163171 else (0 + (if ((assetId == puzzle))
164172 then puzzleStaked
165173 else (0 + (if ((assetId == xtn))
166174 then xtnInSwop
167175 else 0))))))
168176 case _ =>
169177 (wavesBalance(this).regular + wavesInSwop)
170178 }
171179
172180
173181 func sum (accum,n) = (accum + parseIntValue(n))
174182
175183
176184 func isShutdown () = match getBoolean(this, "is_shutdown") {
177185 case x: Boolean =>
178186 x
179187 case _ =>
180188 false
181189 }
182190
183191
184192 @Callable(i)
185193 func shutdown (shutdown) = if ((i.caller == this))
186194 then [BooleanEntry("is_shutdown", shutdown)]
187195 else throw("admin only")
188196
189197
190198
191199 @Callable(i)
192200 func preInit (assetIdsStr,assetWeightsStr,fee) = if (isShutdown())
193201 then throw("contract is on stop")
194202 else if ((this != i.caller))
195203 then throw("admin only")
196204 else if (if ((fee > 500))
197205 then true
198206 else (1 > fee))
199207 then throw("fee value must be between 1 and 500 (0.01-5%)")
200208 else {
201209 let sb = invoke(this, "startBalance", nil, nil)
202210 if ((sb == sb))
203211 then {
204212 let assetIdsStrLi = split(assetIdsStr, ",")
205213 let assetIdsLi = {
206214 let $l = assetIdsStrLi
207215 let $s = size($l)
208216 let $acc0 = nil
209217 func $f4_1 ($a,$i) = if (($i >= $s))
210218 then $a
211219 else addAssetBytesToList($a, $l[$i])
212220
213221 func $f4_2 ($a,$i) = if (($i >= $s))
214222 then $a
215223 else throw("List size exceeds 10")
216224
217225 $f4_2($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
218226 }
219227 let assetWeightsStrLi = split(assetWeightsStr, ",")
220228 let assetWeightsSum = {
221229 let $l = assetWeightsStrLi
222230 let $s = size($l)
223231 let $acc0 = 0
224232 func $f5_1 ($a,$i) = if (($i >= $s))
225233 then $a
226234 else sum($a, $l[$i])
227235
228236 func $f5_2 ($a,$i) = if (($i >= $s))
229237 then $a
230238 else throw("List size exceeds 10")
231239
232240 $f5_2($f5_1($f5_1($f5_1($f5_1($f5_1($f5_1($f5_1($f5_1($f5_1($f5_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
233241 }
234242 func addTokenDataEntries (accum,assetNum) = if ((assetNum >= size(assetIdsLi)))
235243 then accum
236244 else {
237245 let assetDecimals = match assetIdsLi[assetNum] {
238246 case x: ByteVector =>
239247 value(assetInfo(x)).decimals
240248 case _ =>
241249 8
242250 }
243251 (accum ++ [IntegerEntry((("static_" + assetIdsStrLi[assetNum]) + "_scale"), pow(10, 0, assetDecimals, 0, 0, DOWN)), IntegerEntry((("static_" + assetIdsStrLi[assetNum]) + "_decimals"), assetDecimals), IntegerEntry((("static_" + assetIdsStrLi[assetNum]) + "_weight"), value(parseInt(assetWeightsStrLi[assetNum])))])
244252 }
245253
246254 if ((assetWeightsSum != 10000))
247255 then throw("sum of token weights must be equal to 10000")
248256 else ({
249257 let $l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
250258 let $s = size($l)
251259 let $acc0 = nil
252260 func $f6_1 ($a,$i) = if (($i >= $s))
253261 then $a
254262 else addTokenDataEntries($a, $l[$i])
255263
256264 func $f6_2 ($a,$i) = if (($i >= $s))
257265 then $a
258266 else throw("List size exceeds 10")
259267
260268 $f6_2($f6_1($f6_1($f6_1($f6_1($f6_1($f6_1($f6_1($f6_1($f6_1($f6_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
261269 } ++ [StringEntry("static_tokenIds", assetIdsStr), StringEntry("static_tokenWeights", assetWeightsStr), IntegerEntry("static_tokensAmount", size(assetIdsLi)), IntegerEntry("static_fee", fee)])
262270 }
263271 else throw("Strict value is not equal to itself.")
264272 }
265273
266274
267275
268276 @Callable(i)
269277 func swap (assetOut,minimum) = if (if ((isShutdown() == true))
270278 then (i.caller != Address(base58'3PPCzX2doZ7agBNuGSKqjrbdXgGEtE7CpQ3'))
271279 else false)
272280 then throw("contract is shutdown")
273281 else {
274282 let pmt = if ((size(i.payments) == 1))
275283 then value(i.payments[0])
276284 else throw("please attach exactly one payment")
277285 let AmountIn = value(i.payments[0].amount)
278286 let AssetIn = pmt.assetId
279287 let AssetOut = getAssetBytes(assetOut)
280288 let AssetInBalance = getTokenBalance(AssetIn)
281289 let AssetOutBalance = getTokenBalance(AssetOut)
282290 let feeAmountIn = fraction(AmountIn, Fee, FeeScale)
283291 let cleanAmountIn = (AmountIn - feeAmountIn)
284292 let AmountOut = calculateOutAmount(cleanAmountIn, AssetIn, AssetOut, AssetInBalance, AssetOutBalance)
285293 let upl = if ((AssetOut == pluto))
286294 then invoke(plutoSC, "unstake", [AmountOut], nil)
287295 else unit
288296 if ((upl == upl))
289297 then {
290298 let spl = if ((AssetIn == pluto))
291299 then invoke(plutoSC, "stake", nil, [AttachedPayment(pluto, AmountIn)])
292300 else unit
293301 if ((spl == spl))
294302 then {
295303 let cpu = if ((AssetOut == puzzle))
296304 then invoke(puzzleStaking, "claimReward", nil, nil)
297305 else unit
298306 if ((cpu == cpu))
299307 then {
300308 let upu = if ((AssetOut == puzzle))
301309 then invoke(puzzleStaking, "unStake", [(AmountOut - assetBalance(this, puzzle))], nil)
302310 else unit
303311 if ((upu == upu))
304312 then {
305313 let spu = if ((AssetIn == puzzle))
306314 then invoke(puzzleStaking, "stake", nil, [AttachedPayment(puzzle, assetBalance(this, puzzle))])
307315 else unit
308316 if ((spu == spu))
309317 then {
310318 let shareAmountWithdrawWaves = fraction((AmountOut - wavesBalance(this).regular), 1, fraction(tryGetInteger2(swopSC, "A_asset_balance"), 1, tryGetInteger2(swopSC, "share_asset_supply")), CEILING)
311319 let uws = if ((AssetOut == waves))
312320 then invoke(swopSC, "callFunction", ["withdraw", [toString(shareAmountWithdrawWaves)]], nil)
313321 else unit
314322 if ((uws == uws))
315323 then {
316324 let shareAmountWithdrawXtn = fraction((AmountOut - assetBalance(this, xtn)), 1, fraction(tryGetInteger2(swopSC, "B_asset_balance"), 1, tryGetInteger2(swopSC, "share_asset_supply")), CEILING)
317325 let uxs = if ((AssetOut == xtn))
318326 then invoke(swopSC, "callFunction", ["withdraw", [toString(shareAmountWithdrawXtn)]], nil)
319327 else unit
320328 if ((uxs == uxs))
321329 then {
322330 let swxs = if (if (if (if ((AssetOut != xtn))
323331 then (AssetOut != waves)
324332 else false)
325333 then (getTokenBalance(xtn) > 0)
326334 else false)
327335 then (getTokenBalance(waves) > 0)
328336 else false)
329337 then invoke(swopSC, "callFunction", ["replenishWithTwoTokens", "true", "0"], [AttachedPayment(unit, wavesBalance(this).regular), AttachedPayment(xtn, assetBalance(this, xtn))])
330338 else unit
331339 if ((swxs == swxs))
332340 then if ((minimum > AmountOut))
333341 then throw("amount to receive is lower than minimum")
334342 else if ((AssetOut == AssetIn))
335343 then throw("this swap is not allowed")
336344 else if ((0 > (AssetOutBalance - AmountOut)))
337345 then throw("swap smaller amount")
338346 else if (isShutdown())
339347 then throw("contract is on stop")
340348 else [ScriptTransfer(i.caller, AmountOut, AssetOut)]
341349 else throw("Strict value is not equal to itself.")
342350 }
343351 else throw("Strict value is not equal to itself.")
344352 }
345353 else throw("Strict value is not equal to itself.")
346354 }
347355 else throw("Strict value is not equal to itself.")
348356 }
349357 else throw("Strict value is not equal to itself.")
350358 }
351359 else throw("Strict value is not equal to itself.")
352360 }
353361 else throw("Strict value is not equal to itself.")
354362 }
355363 else throw("Strict value is not equal to itself.")
356364 }
357365
358366
359367
360368 @Callable(i)
361369 func startBalance () = if ((i.caller != this))
362370 then throw("access only by project owner")
363371 else [IntegerEntry(keyBurnxtnS, getTokenBalance(burnxtn)), IntegerEntry(keyPlutoS, getTokenBalance(pluto)), IntegerEntry(keyPuzzleS, getTokenBalance(puzzle)), IntegerEntry(keyWavesS, getTokenBalance(unit)), IntegerEntry(keyWhirlpoolS, getTokenBalance(whirlpool)), IntegerEntry(keyRomeS, getTokenBalance(rome)), IntegerEntry(keyXtnS, getTokenBalance(xtn))]
364372
365373
366374
367375 @Callable(i)
368376 func currentBalanceProfit () = if ((i.caller != this))
369377 then throw("access only by project owner")
370378 else [IntegerEntry("BURN-XTN current balance", getTokenBalance(burnxtn)), IntegerEntry("PLUTO current balance", getTokenBalance(pluto)), IntegerEntry("PUZZLE current balance", getTokenBalance(puzzle)), IntegerEntry("WAVES current balance", getTokenBalance(waves)), IntegerEntry("WHIRLPOOL current balance", getTokenBalance(whirlpool)), IntegerEntry("ROME current balance", getTokenBalance(rome)), IntegerEntry("XTN current balance", getTokenBalance(xtn)), IntegerEntry("BURN-XTN profit", (getTokenBalance(burnxtn) - tryGetInteger(keyBurnxtnS))), IntegerEntry("PLUTO profit", (getTokenBalance(pluto) - tryGetInteger(keyPlutoS))), IntegerEntry("PUZZLE profit", (getTokenBalance(puzzle) - tryGetInteger(keyPuzzleS))), IntegerEntry("WAVES proft", (getTokenBalance(waves) - tryGetInteger(keyWavesS))), IntegerEntry("WHIRLPOOL profit", (getTokenBalance(whirlpool) - tryGetInteger(keyWhirlpoolS))), IntegerEntry("ROME profit", (getTokenBalance(rome) - tryGetInteger(keyRomeS))), IntegerEntry("XTN profti", (getTokenBalance(xtn) - tryGetInteger(keyXtnS)))]
371379
372380
381+
382+@Callable(i)
383+func checkSwop () = [IntegerEntry("A", A), IntegerEntry("my share", myShare), IntegerEntry("total share", totalShare), IntegerEntry("B", B)]
384+
385+

github/deemru/w8io/3ef1775 
45.33 ms