tx · 42gjVAvrjitPTXCfFYwKkeCwU3c9LZCuMNkWFtBbFJnC

3PFmKfhZFCmfbZRqMNz7vPd5dnRZ4tjA65f:  -0.01100000 Waves

2023.01.24 12:23 [3484365] smart account 3PFmKfhZFCmfbZRqMNz7vPd5dnRZ4tjA65f > SELF 0.00000000 Waves

{ "type": 13, "id": "42gjVAvrjitPTXCfFYwKkeCwU3c9LZCuMNkWFtBbFJnC", "fee": 1100000, "feeAssetId": null, "timestamp": 1674552234613, "version": 2, "chainId": 87, "sender": "3PFmKfhZFCmfbZRqMNz7vPd5dnRZ4tjA65f", "senderPublicKey": "DLNxpTucP8Vt6LakEFjvs9nSPJGWBRRDG9uMboDqf5bf", "proofs": [ "2BcfVfCCuH8Q3PmCw1jaCs3zvpVQs52N3kXgQ7gUqQu5d3Dkx9AAi92HVSo22aXVtbMMrttroZQnfwx1GPcFb4xV" ], "script": "base64:BgIaCAISBAoCCAESBQoDCAEIEgQKAggIEgMKAQgHAAl1c2RuSWRTdHICLERHMnhGa1BkRHdLVW9Ca3pHQWhRdExwU0d6ZlhMaUNZUEV6ZUtIMkFkMjRwAAZ1c2RuSWQBILYmKcME9c5TkaQOS3UkL2SMUbH6369UKb1I0h0qsqrRAQx0cnlHZXRTdHJpbmcBA2tleQQHJG1hdGNoMAkAnQgCBQR0aGlzBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFiBQckbWF0Y2gwBQFiAgABDmdldEFzc2V0U3RyaW5nAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWIFByRtYXRjaDAJANgEAQUBYgIFV0FWRVMBDWdldEFzc2V0Qnl0ZXMBCmFzc2V0SWRTdHIDCQAAAgUKYXNzZXRJZFN0cgIFV0FWRVMFBHVuaXQJANkEAQUKYXNzZXRJZFN0cgEKZ2V0QmFsYW5jZQEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgRVbml0BAF4BQckbWF0Y2gwCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQEFdmFsdWUBBQdhc3NldElkAQZzd2FwV1gDBmFzc2V0MAZhc3NldDEHYW1vdW50MAQOZmFjdG9yeUFkZHJlc3MJAQdBZGRyZXNzAQEaAVd4W96KvlEqrosx6m8TkCW+9Km4orsJAkEECGFzc2V0SW50CQCkAwEJARFAZXh0ck5hdGl2ZSgxMDUwKQIFDmZhY3RvcnlBZGRyZXNzCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18DCQECIT0CBQZhc3NldDEFCXVzZG5JZFN0cgUGYXNzZXQxBQZhc3NldDAEB3VzZG5JbnQJAKQDAQkBEUBleHRyTmF0aXZlKDEwNTApAgUOZmFjdG9yeUFkZHJlc3MJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUJdXNkbklkU3RyBApwb29sQ29uZmlnCQC1CQIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFDmZhY3RvcnlBZGRyZXNzCQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQhhc3NldEludAICX18FB3VzZG5JbnQCCF9fY29uZmlnAgJfXwQLcG9vbEFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUKcG9vbENvbmZpZwABBAtwb29sQXNzZXRJZAkAkQMCBQpwb29sQ29uZmlnAAMEBGludjEJAPwHBAULcG9vbEFkZHJlc3MCCXB1dE9uZVRrbgkAzAgCAAAJAMwIAgcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDWdldEFzc2V0Qnl0ZXMBBQZhc3NldDAFB2Ftb3VudDAFA25pbAMJAAACBQRpbnYxBQRpbnYxBA9wb29sVG9rZW5BbW91bnQJAQpnZXRCYWxhbmNlAQkBDWdldEFzc2V0Qnl0ZXMBBQtwb29sQXNzZXRJZAMJAAACBQ9wb29sVG9rZW5BbW91bnQFD3Bvb2xUb2tlbkFtb3VudAQTYXNzZXQxQmFsYW5jZUJlZm9yZQkBCmdldEJhbGFuY2UBCQENZ2V0QXNzZXRCeXRlcwEFBmFzc2V0MQMJAAACBRNhc3NldDFCYWxhbmNlQmVmb3JlBRNhc3NldDFCYWxhbmNlQmVmb3JlBARpbnYyCQD8BwQFC3Bvb2xBZGRyZXNzAglnZXRPbmVUa24JAMwIAgUGYXNzZXQxCQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0QXNzZXRCeXRlcwEFC3Bvb2xBc3NldElkBQ9wb29sVG9rZW5BbW91bnQFA25pbAMJAAACBQRpbnYyBQRpbnYyBAdhbW91bnQxCQBlAgkBCmdldEJhbGFuY2UBCQENZ2V0QXNzZXRCeXRlcwEFBmFzc2V0MQUTYXNzZXQxQmFsYW5jZUJlZm9yZQMJAAACBQdhbW91bnQxBQdhbW91bnQxBQdhbW91bnQxCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAFpAQRzd2FwAglyb3V0ZXNTdHIMbWluVG9SZWNlaXZlBAhiYWxhbmNlMAkAZQIJAQpnZXRCYWxhbmNlAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAoBBmRvU3dhcAIHYW1vdW50MARzd2FwBAZzd2FwTGkJALUJAgUEc3dhcAIBLAQLJHQwMjEyNDIyMDUJAJYKBAkAkQMCBQZzd2FwTGkAAAkAkQMCBQZzd2FwTGkAAQkAkQMCBQZzd2FwTGkAAgkAkQMCBQZzd2FwTGkAAwQEZEFwcAgFCyR0MDIxMjQyMjA1Al8xBAhkQXBwVHlwZQgFCyR0MDIxMjQyMjA1Al8yBAV0MFN0cggFCyR0MDIxMjQyMjA1Al8zBAV0MVN0cggFCyR0MDIxMjQyMjA1Al80BAJ0MAkBDWdldEFzc2V0Qnl0ZXMBBQV0MFN0cgQCdDEJAQ1nZXRBc3NldEJ5dGVzAQUFdDFTdHIEDWJhbGFuY2VCZWZvcmUJAQpnZXRCYWxhbmNlAQUCdDEDCQAAAgUNYmFsYW5jZUJlZm9yZQUNYmFsYW5jZUJlZm9yZQQCaTEDCQAAAgUIZEFwcFR5cGUCBnN3b3BmaQkA/AcECQEHQWRkcmVzcwEJANkEAQUEZEFwcAIIZXhjaGFuZ2UJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAnQwBQdhbW91bnQwBQNuaWwDCQAAAgUIZEFwcFR5cGUCBnB1enpsZQkA/AcECQEHQWRkcmVzcwEJANkEAQUEZEFwcAIEc3dhcAkAzAgCBQV0MVN0cgkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCdDAFB2Ftb3VudDAFA25pbAMJAAACBQhkQXBwVHlwZQICd3gJAQZzd2FwV1gDBQV0MFN0cgUFdDFTdHIFB2Ftb3VudDAJAAIBAitpbnRlcm5hbCBhZ2dyZWdhdG9yIGlzc3VlOiB1bmtub3cgcG9vbCB0eXBlAwkAAAIFAmkxBQJpMQQMYmFsYW5jZUFmdGVyCQEKZ2V0QmFsYW5jZQEFAnQxAwkAAAIFDGJhbGFuY2VBZnRlcgUMYmFsYW5jZUFmdGVyCQBlAgUMYmFsYW5jZUFmdGVyBQ1iYWxhbmNlQmVmb3JlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCgEHZG9Sb3V0ZQIFYWNjdW0Fcm91dGUECGFtb3VudEluCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCBQVyb3V0ZQIBLwAABAVzd2FwcwkAtQkCCQCRAwIJALUJAgUFcm91dGUCAS8AAQIBOwQLc3dhcHNSZXN1bHQKAAIkbAUFc3dhcHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQhhbW91bnRJbgoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEGZG9Td2FwAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyAzCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAwkAAAIFC3N3YXBzUmVzdWx0BQtzd2Fwc1Jlc3VsdAkAZAIFBWFjY3VtBQtzd2Fwc1Jlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQGcm91dGVzCQC1CQIFCXJvdXRlc1N0cgIBfAQIYW1vdW50SW4JAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUGcm91dGVzAAACAS8AAAQIYXNzZXQwSWQJAQ1nZXRBc3NldEJ5dGVzAQkAkQMCCQC1CQIJAJEDAgkAtQkCCQCRAwIJALUJAgkAkQMCBQZyb3V0ZXMAAAIBLwABAgE7AAACASwAAgQIdG90YWxPdXQKAAIkbAUGcm91dGVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdkb1JvdXRlAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQMJAAACBQh0b3RhbE91dAUIdG90YWxPdXQECWZlZUFtb3VudAkAawMFCHRvdGFsT3V0AB0AkE4EEGNsZWFuVG90YWxBbW91bnQJAGUCBQh0b3RhbE91dAUJZmVlQW1vdW50BAlhc3NldDFTdHIJAJEDAgkAtQkCBQlyb3V0ZXNTdHICASwJAGUCCQCQAwEJALUJAgUJcm91dGVzU3RyAgEsAAEEBmFzc2V0MQkBDWdldEFzc2V0Qnl0ZXMBBQlhc3NldDFTdHIEB3VzZG5GZWUDCQAAAgUGYXNzZXQxBQZ1c2RuSWQFCWZlZUFtb3VudAQRdXNkbkJhbGFuY2VCZWZvcmUJAQpnZXRCYWxhbmNlAQUGdXNkbklkAwkAAAIFEXVzZG5CYWxhbmNlQmVmb3JlBRF1c2RuQmFsYW5jZUJlZm9yZQQOcG9vbEFkZHJlc3NTdHIJAQx0cnlHZXRTdHJpbmcBCQCsAgIJAKwCAgINc3RhdGljX2Fzc2V0XwUJYXNzZXQxU3RyAgtfcHV6emxlUG9vbAMJAAACBQ5wb29sQWRkcmVzc1N0cgIAAAAEDGNvbnZlcnRlZEZlZQkA/AcECQERQGV4dHJOYXRpdmUoMTA2MikBBQ5wb29sQWRkcmVzc1N0cgIEc3dhcAkAzAgCBQl1c2RuSWRTdHIJAMwIAgAABQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBmFzc2V0MQUJZmVlQW1vdW50BQNuaWwDCQAAAgUMY29udmVydGVkRmVlBQxjb252ZXJ0ZWRGZWUEEHVzZG5CYWxhbmNlQWZ0ZXIJAQpnZXRCYWxhbmNlAQUGdXNkbklkAwkAAAIFEHVzZG5CYWxhbmNlQWZ0ZXIFEHVzZG5CYWxhbmNlQWZ0ZXIJAGUCBRB1c2RuQmFsYW5jZUFmdGVyBRF1c2RuQmFsYW5jZUJlZm9yZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQd1c2RuRmVlBQd1c2RuRmVlBAV0b3BVcAkA/AcECQEHQWRkcmVzcwEBGgFXwIqtc5QhM72wGFYPKLW5PkF3zr9v8v7XAgt0b3BVcFJld2FyZAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQZ1c2RuSWQFB3VzZG5GZWUFA25pbAMJAAACBQV0b3BVcAUFdG9wVXAECGJhbGFuY2UxCQEKZ2V0QmFsYW5jZQEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAMJAAACBQhiYWxhbmNlMQUIYmFsYW5jZTEDCQBmAgUMbWluVG9SZWNlaXZlBRBjbGVhblRvdGFsQW1vdW50CQACAQkArAICAi1hbW91bnQgdG8gcmVjZWl2ZSBpcyBsb3dlciB0aGFuIGV4cGVjdGVkIG9uZSAJAKQDAQUQY2xlYW5Ub3RhbEFtb3VudAMDCQECIT0CBQhhc3NldDBJZAgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBgkAZgIFCGFtb3VudEluCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAAgECH3dyb25nIGFzc2V0IGF0dGFjaGVkIGFzIHBheW1lbnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBRBjbGVhblRvdGFsQW1vdW50BQZhc3NldDEFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARBzd2FwV2l0aFJlZmVycmFsAwlyb3V0ZXNTdHIMbWluVG9SZWNlaXZlBnJlZktleQQIYmFsYW5jZTAJAGUCCQEKZ2V0QmFsYW5jZQEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQKAQZkb1N3YXACB2Ftb3VudDAEc3dhcAQGc3dhcExpCQC1CQIFBHN3YXACASwECyR0MDQ4Mzk0OTIwCQCWCgQJAJEDAgUGc3dhcExpAAAJAJEDAgUGc3dhcExpAAEJAJEDAgUGc3dhcExpAAIJAJEDAgUGc3dhcExpAAMEBGRBcHAIBQskdDA0ODM5NDkyMAJfMQQIZEFwcFR5cGUIBQskdDA0ODM5NDkyMAJfMgQFdDBTdHIIBQskdDA0ODM5NDkyMAJfMwQFdDFTdHIIBQskdDA0ODM5NDkyMAJfNAQCdDAJAQ1nZXRBc3NldEJ5dGVzAQUFdDBTdHIEAnQxCQENZ2V0QXNzZXRCeXRlcwEFBXQxU3RyBA1iYWxhbmNlQmVmb3JlCQEKZ2V0QmFsYW5jZQEFAnQxAwkAAAIFDWJhbGFuY2VCZWZvcmUFDWJhbGFuY2VCZWZvcmUEAmkxAwkAAAIFCGRBcHBUeXBlAgZzd29wZmkJAPwHBAkBB0FkZHJlc3MBCQDZBAEFBGRBcHACCGV4Y2hhbmdlCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJ0MAUHYW1vdW50MAUDbmlsCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQRkQXBwAgRzd2FwCQDMCAIFBXQxU3RyCQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJ0MAUHYW1vdW50MAUDbmlsAwkAAAIFAmkxBQJpMQQMYmFsYW5jZUFmdGVyCQEKZ2V0QmFsYW5jZQEFAnQxAwkAAAIFDGJhbGFuY2VBZnRlcgUMYmFsYW5jZUFmdGVyCQBlAgUMYmFsYW5jZUFmdGVyBQ1iYWxhbmNlQmVmb3JlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCgEHZG9Sb3V0ZQIFYWNjdW0Fcm91dGUECGFtb3VudEluCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCBQVyb3V0ZQIBLwAABAVzd2FwcwkAtQkCCQCRAwIJALUJAgUFcm91dGUCAS8AAQIBOwQLc3dhcHNSZXN1bHQKAAIkbAUFc3dhcHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQhhbW91bnRJbgoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEGZG9Td2FwAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyAzCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAwkAAAIFC3N3YXBzUmVzdWx0BQtzd2Fwc1Jlc3VsdAkAZAIFBWFjY3VtBQtzd2Fwc1Jlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQGcm91dGVzCQC1CQIFCXJvdXRlc1N0cgIBfAQIYW1vdW50SW4JAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUGcm91dGVzAAACAS8AAAQIYXNzZXQwSWQJAQ1nZXRBc3NldEJ5dGVzAQkAkQMCCQC1CQIJAJEDAgkAtQkCCQCRAwIJALUJAgkAkQMCBQZyb3V0ZXMAAAIBLwABAgE7AAACASwAAgQIdG90YWxPdXQKAAIkbAUGcm91dGVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdkb1JvdXRlAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQMJAAACBQh0b3RhbE91dAUIdG90YWxPdXQECWZlZUFtb3VudAkAawMFCHRvdGFsT3V0AB0AkE4EEGNsZWFuVG90YWxBbW91bnQJAGUCBQh0b3RhbE91dAUJZmVlQW1vdW50BAlhc3NldDFTdHIJAJEDAgkAtQkCBQlyb3V0ZXNTdHICASwJAGUCCQCQAwEJALUJAgUJcm91dGVzU3RyAgEsAAEEBmFzc2V0MQkBDWdldEFzc2V0Qnl0ZXMBBQlhc3NldDFTdHIEB3VzZG5GZWUDCQAAAgUGYXNzZXQxBQZ1c2RuSWQFCWZlZUFtb3VudAQRdXNkbkJhbGFuY2VCZWZvcmUJAQpnZXRCYWxhbmNlAQUGdXNkbklkAwkAAAIFEXVzZG5CYWxhbmNlQmVmb3JlBRF1c2RuQmFsYW5jZUJlZm9yZQQMY29udmVydGVkRmVlCQD8BwQJAQdBZGRyZXNzAQkA2QQBCQEMdHJ5R2V0U3RyaW5nAQkArAICCQCsAgICDXN0YXRpY19hc3NldF8FCWFzc2V0MVN0cgILX3B1enpsZVBvb2wCBHN3YXAJAMwIAgUJdXNkbklkU3RyCQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQZhc3NldDEFCWZlZUFtb3VudAUDbmlsAwkAAAIFDGNvbnZlcnRlZEZlZQUMY29udmVydGVkRmVlBBB1c2RuQmFsYW5jZUFmdGVyCQEKZ2V0QmFsYW5jZQEFBnVzZG5JZAMJAAACBRB1c2RuQmFsYW5jZUFmdGVyBRB1c2RuQmFsYW5jZUFmdGVyCQBlAgUQdXNkbkJhbGFuY2VBZnRlcgURdXNkbkJhbGFuY2VCZWZvcmUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUHdXNkbkZlZQUHdXNkbkZlZQQPcmVmZXJyYWxBZGRyZXNzAwkAAAIFBnJlZktleQIEbXVuYQkBB0FkZHJlc3MBARoBV50MqsYTUaluy4D3Y33BZHji73JNqAy60wMJAAACBQZyZWZLZXkCBmtlZXBlcgkBB0FkZHJlc3MBARoBV+O2yhI07m9Gb/DKqIDji69xTfFemaw79gMJAAACBQZyZWZLZXkCA3RjaQkBB0FkZHJlc3MBARoBV+O2yhI07m9Gb/DKqIDji69xTfFemaw79gkBB0FkZHJlc3MBARoBV/yaB3Dhb97RlCEhbXq2jVjSQlh7LAcmEgQMcmVmVXNkblNoYXJlCQBrAwUHdXNkbkZlZQACAAoEBXRvcFVwCQD8BwQJAQdBZGRyZXNzAQEaAVfAiq1zlCEzvbAYVg8otbk+QXfOv2/y/tcCC3RvcFVwUmV3YXJkBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBnVzZG5JZAkAZQIFB3VzZG5GZWUFDHJlZlVzZG5TaGFyZQUDbmlsAwkAAAIFBXRvcFVwBQV0b3BVcAMJAGYCBQxtaW5Ub1JlY2VpdmUFEGNsZWFuVG90YWxBbW91bnQJAAIBCQCsAgICLWFtb3VudCB0byByZWNlaXZlIGlzIGxvd2VyIHRoYW4gZXhwZWN0ZWQgb25lIAkApAMBBRBjbGVhblRvdGFsQW1vdW50AwMJAQIhPQIFCGFzc2V0MElkCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQGCQBmAgUIYW1vdW50SW4ICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CQACAQIfd3JvbmcgYXNzZXQgYXR0YWNoZWQgYXMgcGF5bWVudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFEGNsZWFuVG90YWxBbW91bnQFBmFzc2V0MQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ9yZWZlcnJhbEFkZHJlc3MFDHJlZlVzZG5TaGFyZQUGdXNkbklkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQESYWRkVG9rZW5QdXp6bGVQb29sAgphc3NldElkU3RyDnBvb2xBZGRyZXNzU3RyAwkBAiE9AggFAWkGY2FsbGVyCQEHQWRkcmVzcwEBGgFXS8NszvszWENYQ1EQ7u/uIRAXS/J4y3wyCQACAQIKYWRtaW4gb25seQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgINc3RhdGljX2Fzc2V0XwUKYXNzZXRJZFN0cgILX3B1enpsZVBvb2wFDnBvb2xBZGRyZXNzU3RyBQNuaWwBaQEOc3dhcFdYRXh0ZXJuYWwBBmFzc2V0MQQGYXNzZXQwCQEOZ2V0QXNzZXRTdHJpbmcBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQEB2Ftb3VudDAICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BApwcmljZUFzc2V0AwMJAAACBQZhc3NldDACLDM0TjlZY0VFVExXbjkzcVlRNjRFc1AxeDg5dFNydUpVNDRSckVNU1hYRVBKBgkAAAIFBmFzc2V0MQIsMzROOVljRUVUTFduOTNxWVE2NEVzUDF4ODl0U3J1SlU0NFJyRU1TWFhFUEoCLDM0TjlZY0VFVExXbjkzcVlRNjRFc1AxeDg5dFNydUpVNDRSckVNU1hYRVBKAwMJAAACBQZhc3NldDACLDZYdEhqcFhiczlSUkpQMlNyOUdVeVZxekFDY2J5OVRrVGhIWG5qVkM1Q0RKBgkAAAIFBmFzc2V0MQIsNlh0SGpwWGJzOVJSSlAyU3I5R1V5VnF6QUNjYnk5VGtUaEhYbmpWQzVDREoCLDZYdEhqcFhiczlSUkpQMlNyOUdVeVZxekFDY2J5OVRrVGhIWG5qVkM1Q0RKAwMJAAACBQZhc3NldDAFCXVzZG5JZFN0cgYJAAACBQZhc3NldDEFCXVzZG5JZFN0cgUJdXNkbklkU3RyAwMJAAACBQZhc3NldDACLDhMUVc4ZjdQNWQ1UFpNN0d0WkVCZ2FxUlBHU3pTM0RmUHVpWHJVUko0QUpTBgkAAAIFBmFzc2V0MQIsOExRVzhmN1A1ZDVQWk03R3RaRUJnYXFSUEdTelMzRGZQdWlYclVSSjRBSlMCLDhMUVc4ZjdQNWQ1UFpNN0d0WkVCZ2FxUlBHU3pTM0RmUHVpWHJVUko0QUpTAwMJAAACBQZhc3NldDACBVdBVkVTBgkAAAIFBmFzc2V0MQIFV0FWRVMCBVdBVkVTBQl1c2RuSWRTdHIEDmZhY3RvcnlBZGRyZXNzCQEHQWRkcmVzcwEBGgFXeFveir5RKq6LMepvE5AlvvSpuKK7CQJBBAhhc3NldEludAkApAMBCQERQGV4dHJOYXRpdmUoMTA1MCkCBQ5mYWN0b3J5QWRkcmVzcwkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fAwkBAiE9AgUGYXNzZXQxBQpwcmljZUFzc2V0BQZhc3NldDEFBmFzc2V0MAQHdXNkbkludAkApAMBCQERQGV4dHJOYXRpdmUoMTA1MCkCBQ5mYWN0b3J5QWRkcmVzcwkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQpwcmljZUFzc2V0BApwb29sQ29uZmlnCQC1CQIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFDmZhY3RvcnlBZGRyZXNzCQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQhhc3NldEludAICX18FB3VzZG5JbnQCCF9fY29uZmlnAgJfXwQLcG9vbEFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUKcG9vbENvbmZpZwABBAtwb29sQXNzZXRJZAkAkQMCBQpwb29sQ29uZmlnAAMEBGludjEJAPwHBAULcG9vbEFkZHJlc3MCCXB1dE9uZVRrbgkAzAgCAAAJAMwIAgcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDWdldEFzc2V0Qnl0ZXMBBQZhc3NldDAFB2Ftb3VudDAFA25pbAMJAAACBQRpbnYxBQRpbnYxBA9wb29sVG9rZW5BbW91bnQJAQpnZXRCYWxhbmNlAQkBDWdldEFzc2V0Qnl0ZXMBBQtwb29sQXNzZXRJZAMJAAACBQ9wb29sVG9rZW5BbW91bnQFD3Bvb2xUb2tlbkFtb3VudAQTYXNzZXQxQmFsYW5jZUJlZm9yZQkBCmdldEJhbGFuY2UBCQENZ2V0QXNzZXRCeXRlcwEFBmFzc2V0MQMJAAACBRNhc3NldDFCYWxhbmNlQmVmb3JlBRNhc3NldDFCYWxhbmNlQmVmb3JlBARpbnYyCQD8BwQFC3Bvb2xBZGRyZXNzAglnZXRPbmVUa24JAMwIAgUGYXNzZXQxCQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0QXNzZXRCeXRlcwEFC3Bvb2xBc3NldElkBQ9wb29sVG9rZW5BbW91bnQFA25pbAMJAAACBQRpbnYyBQRpbnYyBAdhbW91bnQxCQBlAgkBCmdldEJhbGFuY2UBCQENZ2V0QXNzZXRCeXRlcwEFBmFzc2V0MQUTYXNzZXQxQmFsYW5jZUJlZm9yZQMJAAACBQdhbW91bnQxBQdhbW91bnQxCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUHYW1vdW50MQkBDWdldEFzc2V0Qnl0ZXMBBQZhc3NldDEFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXmNT2hu", "height": 3484365, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8DW4r6jNFfSGQkJu31CRi2CkCHRK78KNVnYZMyHhFNBk Next: Dg94oAbjhorUHnbAGx6w8L7Age41HeTGugfSPjtCMZBh Diff:
OldNewDifferences
329329 func swapWXExternal (asset1) = {
330330 let asset0 = getAssetString(i.payments[0].assetId)
331331 let amount0 = i.payments[0].amount
332- let priceAsset = if (if ((asset0 == usdnIdStr))
332+ let priceAsset = if (if ((asset0 == "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"))
333333 then true
334- else (asset1 == usdnIdStr))
335- then usdnIdStr
336- else if (if ((asset0 == "WAVES"))
334+ else (asset1 == "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"))
335+ then "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"
336+ else if (if ((asset0 == "6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ"))
337337 then true
338- else (asset1 == "WAVES"))
339- then "WAVES"
340- else "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"
338+ else (asset1 == "6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ"))
339+ then "6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ"
340+ else if (if ((asset0 == usdnIdStr))
341+ then true
342+ else (asset1 == usdnIdStr))
343+ then usdnIdStr
344+ else if (if ((asset0 == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
345+ then true
346+ else (asset1 == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
347+ then "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"
348+ else if (if ((asset0 == "WAVES"))
349+ then true
350+ else (asset1 == "WAVES"))
351+ then "WAVES"
352+ else usdnIdStr
341353 let factoryAddress = Address(base58'3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv')
342354 let assetInt = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + (if ((asset1 != priceAsset))
343355 then asset1
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let usdnIdStr = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p"
55
66 let usdnId = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
77
88 func tryGetString (key) = match getString(this, key) {
99 case b: String =>
1010 b
1111 case _ =>
1212 ""
1313 }
1414
1515
1616 func getAssetString (assetId) = match assetId {
1717 case b: ByteVector =>
1818 toBase58String(b)
1919 case _ =>
2020 "WAVES"
2121 }
2222
2323
2424 func getAssetBytes (assetIdStr) = if ((assetIdStr == "WAVES"))
2525 then unit
2626 else fromBase58String(assetIdStr)
2727
2828
2929 func getBalance (assetId) = match assetId {
3030 case x: Unit =>
3131 wavesBalance(this).available
3232 case _ =>
3333 assetBalance(this, value(assetId))
3434 }
3535
3636
3737 func swapWX (asset0,asset1,amount0) = {
3838 let factoryAddress = Address(base58'3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv')
3939 let assetInt = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + (if ((asset1 != usdnIdStr))
4040 then asset1
4141 else asset0))))
4242 let usdnInt = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + usdnIdStr)))
4343 let poolConfig = split(getStringValue(factoryAddress, (((("%d%d%s__" + assetInt) + "__") + usdnInt) + "__config")), "__")
4444 let poolAddress = addressFromStringValue(poolConfig[1])
4545 let poolAssetId = poolConfig[3]
4646 let inv1 = invoke(poolAddress, "putOneTkn", [0, false], [AttachedPayment(getAssetBytes(asset0), amount0)])
4747 if ((inv1 == inv1))
4848 then {
4949 let poolTokenAmount = getBalance(getAssetBytes(poolAssetId))
5050 if ((poolTokenAmount == poolTokenAmount))
5151 then {
5252 let asset1BalanceBefore = getBalance(getAssetBytes(asset1))
5353 if ((asset1BalanceBefore == asset1BalanceBefore))
5454 then {
5555 let inv2 = invoke(poolAddress, "getOneTkn", [asset1, 0], [AttachedPayment(getAssetBytes(poolAssetId), poolTokenAmount)])
5656 if ((inv2 == inv2))
5757 then {
5858 let amount1 = (getBalance(getAssetBytes(asset1)) - asset1BalanceBefore)
5959 if ((amount1 == amount1))
6060 then amount1
6161 else throw("Strict value is not equal to itself.")
6262 }
6363 else throw("Strict value is not equal to itself.")
6464 }
6565 else throw("Strict value is not equal to itself.")
6666 }
6767 else throw("Strict value is not equal to itself.")
6868 }
6969 else throw("Strict value is not equal to itself.")
7070 }
7171
7272
7373 @Callable(i)
7474 func swap (routesStr,minToReceive) = {
7575 let balance0 = (getBalance(i.payments[0].assetId) - i.payments[0].amount)
7676 func doSwap (amount0,swap) = {
7777 let swapLi = split(swap, ",")
7878 let $t021242205 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
7979 let dApp = $t021242205._1
8080 let dAppType = $t021242205._2
8181 let t0Str = $t021242205._3
8282 let t1Str = $t021242205._4
8383 let t0 = getAssetBytes(t0Str)
8484 let t1 = getAssetBytes(t1Str)
8585 let balanceBefore = getBalance(t1)
8686 if ((balanceBefore == balanceBefore))
8787 then {
8888 let i1 = if ((dAppType == "swopfi"))
8989 then invoke(Address(fromBase58String(dApp)), "exchange", [1], [AttachedPayment(t0, amount0)])
9090 else if ((dAppType == "puzzle"))
9191 then invoke(Address(fromBase58String(dApp)), "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
9292 else if ((dAppType == "wx"))
9393 then swapWX(t0Str, t1Str, amount0)
9494 else throw("internal aggregator issue: unknow pool type")
9595 if ((i1 == i1))
9696 then {
9797 let balanceAfter = getBalance(t1)
9898 if ((balanceAfter == balanceAfter))
9999 then (balanceAfter - balanceBefore)
100100 else throw("Strict value is not equal to itself.")
101101 }
102102 else throw("Strict value is not equal to itself.")
103103 }
104104 else throw("Strict value is not equal to itself.")
105105 }
106106
107107 func doRoute (accum,route) = {
108108 let amountIn = parseIntValue(split(route, "/")[0])
109109 let swaps = split(split(route, "/")[1], ";")
110110 let swapsResult = {
111111 let $l = swaps
112112 let $s = size($l)
113113 let $acc0 = amountIn
114114 func $f0_1 ($a,$i) = if (($i >= $s))
115115 then $a
116116 else doSwap($a, $l[$i])
117117
118118 func $f0_2 ($a,$i) = if (($i >= $s))
119119 then $a
120120 else throw("List size exceeds 3")
121121
122122 $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3)
123123 }
124124 if ((swapsResult == swapsResult))
125125 then (accum + swapsResult)
126126 else throw("Strict value is not equal to itself.")
127127 }
128128
129129 let routes = split(routesStr, "|")
130130 let amountIn = parseIntValue(split(routes[0], "/")[0])
131131 let asset0Id = getAssetBytes(split(split(split(routes[0], "/")[1], ";")[0], ",")[2])
132132 let totalOut = {
133133 let $l = routes
134134 let $s = size($l)
135135 let $acc0 = 0
136136 func $f0_1 ($a,$i) = if (($i >= $s))
137137 then $a
138138 else doRoute($a, $l[$i])
139139
140140 func $f0_2 ($a,$i) = if (($i >= $s))
141141 then $a
142142 else throw("List size exceeds 5")
143143
144144 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
145145 }
146146 if ((totalOut == totalOut))
147147 then {
148148 let feeAmount = fraction(totalOut, 29, 10000)
149149 let cleanTotalAmount = (totalOut - feeAmount)
150150 let asset1Str = split(routesStr, ",")[(size(split(routesStr, ",")) - 1)]
151151 let asset1 = getAssetBytes(asset1Str)
152152 let usdnFee = if ((asset1 == usdnId))
153153 then feeAmount
154154 else {
155155 let usdnBalanceBefore = getBalance(usdnId)
156156 if ((usdnBalanceBefore == usdnBalanceBefore))
157157 then {
158158 let poolAddressStr = tryGetString((("static_asset_" + asset1Str) + "_puzzlePool"))
159159 if ((poolAddressStr == ""))
160160 then 0
161161 else {
162162 let convertedFee = invoke(addressFromStringValue(poolAddressStr), "swap", [usdnIdStr, 0], [AttachedPayment(asset1, feeAmount)])
163163 if ((convertedFee == convertedFee))
164164 then {
165165 let usdnBalanceAfter = getBalance(usdnId)
166166 if ((usdnBalanceAfter == usdnBalanceAfter))
167167 then (usdnBalanceAfter - usdnBalanceBefore)
168168 else throw("Strict value is not equal to itself.")
169169 }
170170 else throw("Strict value is not equal to itself.")
171171 }
172172 }
173173 else throw("Strict value is not equal to itself.")
174174 }
175175 if ((usdnFee == usdnFee))
176176 then {
177177 let topUp = invoke(Address(base58'3PKUxbZaSYfsR7wu2HaAgiirHYwAMupDrYW'), "topUpReward", nil, [AttachedPayment(usdnId, usdnFee)])
178178 if ((topUp == topUp))
179179 then {
180180 let balance1 = getBalance(i.payments[0].assetId)
181181 if ((balance1 == balance1))
182182 then if ((minToReceive > cleanTotalAmount))
183183 then throw(("amount to receive is lower than expected one " + toString(cleanTotalAmount)))
184184 else if (if ((asset0Id != i.payments[0].assetId))
185185 then true
186186 else (amountIn > i.payments[0].amount))
187187 then throw("wrong asset attached as payment")
188188 else [ScriptTransfer(i.caller, cleanTotalAmount, asset1)]
189189 else throw("Strict value is not equal to itself.")
190190 }
191191 else throw("Strict value is not equal to itself.")
192192 }
193193 else throw("Strict value is not equal to itself.")
194194 }
195195 else throw("Strict value is not equal to itself.")
196196 }
197197
198198
199199
200200 @Callable(i)
201201 func swapWithReferral (routesStr,minToReceive,refKey) = {
202202 let balance0 = (getBalance(i.payments[0].assetId) - i.payments[0].amount)
203203 func doSwap (amount0,swap) = {
204204 let swapLi = split(swap, ",")
205205 let $t048394920 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
206206 let dApp = $t048394920._1
207207 let dAppType = $t048394920._2
208208 let t0Str = $t048394920._3
209209 let t1Str = $t048394920._4
210210 let t0 = getAssetBytes(t0Str)
211211 let t1 = getAssetBytes(t1Str)
212212 let balanceBefore = getBalance(t1)
213213 if ((balanceBefore == balanceBefore))
214214 then {
215215 let i1 = if ((dAppType == "swopfi"))
216216 then invoke(Address(fromBase58String(dApp)), "exchange", [1], [AttachedPayment(t0, amount0)])
217217 else invoke(Address(fromBase58String(dApp)), "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
218218 if ((i1 == i1))
219219 then {
220220 let balanceAfter = getBalance(t1)
221221 if ((balanceAfter == balanceAfter))
222222 then (balanceAfter - balanceBefore)
223223 else throw("Strict value is not equal to itself.")
224224 }
225225 else throw("Strict value is not equal to itself.")
226226 }
227227 else throw("Strict value is not equal to itself.")
228228 }
229229
230230 func doRoute (accum,route) = {
231231 let amountIn = parseIntValue(split(route, "/")[0])
232232 let swaps = split(split(route, "/")[1], ";")
233233 let swapsResult = {
234234 let $l = swaps
235235 let $s = size($l)
236236 let $acc0 = amountIn
237237 func $f0_1 ($a,$i) = if (($i >= $s))
238238 then $a
239239 else doSwap($a, $l[$i])
240240
241241 func $f0_2 ($a,$i) = if (($i >= $s))
242242 then $a
243243 else throw("List size exceeds 3")
244244
245245 $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3)
246246 }
247247 if ((swapsResult == swapsResult))
248248 then (accum + swapsResult)
249249 else throw("Strict value is not equal to itself.")
250250 }
251251
252252 let routes = split(routesStr, "|")
253253 let amountIn = parseIntValue(split(routes[0], "/")[0])
254254 let asset0Id = getAssetBytes(split(split(split(routes[0], "/")[1], ";")[0], ",")[2])
255255 let totalOut = {
256256 let $l = routes
257257 let $s = size($l)
258258 let $acc0 = 0
259259 func $f0_1 ($a,$i) = if (($i >= $s))
260260 then $a
261261 else doRoute($a, $l[$i])
262262
263263 func $f0_2 ($a,$i) = if (($i >= $s))
264264 then $a
265265 else throw("List size exceeds 5")
266266
267267 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
268268 }
269269 if ((totalOut == totalOut))
270270 then {
271271 let feeAmount = fraction(totalOut, 29, 10000)
272272 let cleanTotalAmount = (totalOut - feeAmount)
273273 let asset1Str = split(routesStr, ",")[(size(split(routesStr, ",")) - 1)]
274274 let asset1 = getAssetBytes(asset1Str)
275275 let usdnFee = if ((asset1 == usdnId))
276276 then feeAmount
277277 else {
278278 let usdnBalanceBefore = getBalance(usdnId)
279279 if ((usdnBalanceBefore == usdnBalanceBefore))
280280 then {
281281 let convertedFee = invoke(Address(fromBase58String(tryGetString((("static_asset_" + asset1Str) + "_puzzlePool")))), "swap", [usdnIdStr, 0], [AttachedPayment(asset1, feeAmount)])
282282 if ((convertedFee == convertedFee))
283283 then {
284284 let usdnBalanceAfter = getBalance(usdnId)
285285 if ((usdnBalanceAfter == usdnBalanceAfter))
286286 then (usdnBalanceAfter - usdnBalanceBefore)
287287 else throw("Strict value is not equal to itself.")
288288 }
289289 else throw("Strict value is not equal to itself.")
290290 }
291291 else throw("Strict value is not equal to itself.")
292292 }
293293 if ((usdnFee == usdnFee))
294294 then {
295295 let referralAddress = if ((refKey == "muna"))
296296 then Address(base58'3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU')
297297 else if ((refKey == "keeper"))
298298 then Address(base58'3PNgw6Db2TGUQbjnV7ekve6q126xBC1e7eM')
299299 else if ((refKey == "tci"))
300300 then Address(base58'3PNgw6Db2TGUQbjnV7ekve6q126xBC1e7eM')
301301 else Address(base58'3PQxXXiQXpWsjDwQLYxyuoPiaLnVHjJguFo')
302302 let refUsdnShare = fraction(usdnFee, 2, 10)
303303 let topUp = invoke(Address(base58'3PKUxbZaSYfsR7wu2HaAgiirHYwAMupDrYW'), "topUpReward", nil, [AttachedPayment(usdnId, (usdnFee - refUsdnShare))])
304304 if ((topUp == topUp))
305305 then if ((minToReceive > cleanTotalAmount))
306306 then throw(("amount to receive is lower than expected one " + toString(cleanTotalAmount)))
307307 else if (if ((asset0Id != i.payments[0].assetId))
308308 then true
309309 else (amountIn > i.payments[0].amount))
310310 then throw("wrong asset attached as payment")
311311 else [ScriptTransfer(i.caller, cleanTotalAmount, asset1), ScriptTransfer(referralAddress, refUsdnShare, usdnId)]
312312 else throw("Strict value is not equal to itself.")
313313 }
314314 else throw("Strict value is not equal to itself.")
315315 }
316316 else throw("Strict value is not equal to itself.")
317317 }
318318
319319
320320
321321 @Callable(i)
322322 func addTokenPuzzlePool (assetIdStr,poolAddressStr) = if ((i.caller != Address(base58'3P8qVX189qpoTJZQQQdKS9endHK5sxWsvrd')))
323323 then throw("admin only")
324324 else [StringEntry((("static_asset_" + assetIdStr) + "_puzzlePool"), poolAddressStr)]
325325
326326
327327
328328 @Callable(i)
329329 func swapWXExternal (asset1) = {
330330 let asset0 = getAssetString(i.payments[0].assetId)
331331 let amount0 = i.payments[0].amount
332- let priceAsset = if (if ((asset0 == usdnIdStr))
332+ let priceAsset = if (if ((asset0 == "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"))
333333 then true
334- else (asset1 == usdnIdStr))
335- then usdnIdStr
336- else if (if ((asset0 == "WAVES"))
334+ else (asset1 == "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"))
335+ then "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"
336+ else if (if ((asset0 == "6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ"))
337337 then true
338- else (asset1 == "WAVES"))
339- then "WAVES"
340- else "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"
338+ else (asset1 == "6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ"))
339+ then "6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ"
340+ else if (if ((asset0 == usdnIdStr))
341+ then true
342+ else (asset1 == usdnIdStr))
343+ then usdnIdStr
344+ else if (if ((asset0 == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
345+ then true
346+ else (asset1 == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
347+ then "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"
348+ else if (if ((asset0 == "WAVES"))
349+ then true
350+ else (asset1 == "WAVES"))
351+ then "WAVES"
352+ else usdnIdStr
341353 let factoryAddress = Address(base58'3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv')
342354 let assetInt = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + (if ((asset1 != priceAsset))
343355 then asset1
344356 else asset0))))
345357 let usdnInt = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + priceAsset)))
346358 let poolConfig = split(getStringValue(factoryAddress, (((("%d%d%s__" + assetInt) + "__") + usdnInt) + "__config")), "__")
347359 let poolAddress = addressFromStringValue(poolConfig[1])
348360 let poolAssetId = poolConfig[3]
349361 let inv1 = invoke(poolAddress, "putOneTkn", [0, false], [AttachedPayment(getAssetBytes(asset0), amount0)])
350362 if ((inv1 == inv1))
351363 then {
352364 let poolTokenAmount = getBalance(getAssetBytes(poolAssetId))
353365 if ((poolTokenAmount == poolTokenAmount))
354366 then {
355367 let asset1BalanceBefore = getBalance(getAssetBytes(asset1))
356368 if ((asset1BalanceBefore == asset1BalanceBefore))
357369 then {
358370 let inv2 = invoke(poolAddress, "getOneTkn", [asset1, 0], [AttachedPayment(getAssetBytes(poolAssetId), poolTokenAmount)])
359371 if ((inv2 == inv2))
360372 then {
361373 let amount1 = (getBalance(getAssetBytes(asset1)) - asset1BalanceBefore)
362374 if ((amount1 == amount1))
363375 then [ScriptTransfer(i.caller, amount1, getAssetBytes(asset1))]
364376 else throw("Strict value is not equal to itself.")
365377 }
366378 else throw("Strict value is not equal to itself.")
367379 }
368380 else throw("Strict value is not equal to itself.")
369381 }
370382 else throw("Strict value is not equal to itself.")
371383 }
372384 else throw("Strict value is not equal to itself.")
373385 }
374386
375387
376388 @Verifier(tx)
377389 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
378390

github/deemru/w8io/3ef1775 
66.04 ms