2023.01.24 18:13 [3484730] smart account 3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU > SELF 0.00000000 Waves

{ "type": 13, "id": "jLJyeRvujDuRdHe2k1azjFMnhC8XsZCjRR8hL24TJ1E", "fee": 1300000, "feeAssetId": null, "timestamp": 1674573250209, "version": 2, "chainId": 87, "sender": "3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU", "senderPublicKey": "Dmn1fWHxpwN789LPfoMHFj7uSYKSsb5VFfyNQyQ629f9", "proofs": [ "5spBQG8S5CMRzRqWkpjm3axFBz5akkZhFasZ3YZDniec8dMBTQfrKDUSYmQrGgDfWuBNdM4dzKpT3RUEt6W5Fvfo" ], "script": "base64:BgIVCAISBAoCCAESBQoDCAEIEgQKAggICAAJdXNkbklkU3RyAixERzJ4RmtQZER3S1VvQmt6R0FoUXRMcFNHemZYTGlDWVBFemVLSDJBZDI0cAAGdXNkbklkASC2JinDBPXOU5GkDkt1JC9kjFGx+t+vVCm9SNIdKrKq0QEMdHJ5R2V0U3RyaW5nAQNrZXkEByRtYXRjaDAJAJ0IAgUEdGhpcwUDa2V5AwkAAQIFByRtYXRjaDACBlN0cmluZwQBYgUHJG1hdGNoMAUBYgIAAQ5nZXRBc3NldFN0cmluZwEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwCQDYBAEFAWICBVdBVkVTAQ1nZXRBc3NldEJ5dGVzAQphc3NldElkU3RyAwkAAAIFCmFzc2V0SWRTdHICBVdBVkVTBQR1bml0CQDZBAEFCmFzc2V0SWRTdHIBCmdldEJhbGFuY2UBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIEVW5pdAQBeAUHJG1hdGNoMAgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkBBXZhbHVlAQUHYXNzZXRJZAEGc3dhcFdYAwZhc3NldDAGYXNzZXQxB2Ftb3VudDAECnByaWNlQXNzZXQDAwkAAAIFBmFzc2V0MAIsMzROOVljRUVUTFduOTNxWVE2NEVzUDF4ODl0U3J1SlU0NFJyRU1TWFhFUEoGCQAAAgUGYXNzZXQxAiwzNE45WWNFRVRMV245M3FZUTY0RXNQMXg4OXRTcnVKVTQ0UnJFTVNYWEVQSgIsMzROOVljRUVUTFduOTNxWVE2NEVzUDF4ODl0U3J1SlU0NFJyRU1TWFhFUEoDAwkAAAIFBmFzc2V0MAIsNlh0SGpwWGJzOVJSSlAyU3I5R1V5VnF6QUNjYnk5VGtUaEhYbmpWQzVDREoGCQAAAgUGYXNzZXQxAiw2WHRIanBYYnM5UlJKUDJTcjlHVXlWcXpBQ2NieTlUa1RoSFhualZDNUNESgIsNlh0SGpwWGJzOVJSSlAyU3I5R1V5VnF6QUNjYnk5VGtUaEhYbmpWQzVDREoDAwkAAAIFBmFzc2V0MAUJdXNkbklkU3RyBgkAAAIFBmFzc2V0MQUJdXNkbklkU3RyBQl1c2RuSWRTdHIDAwkAAAIFBmFzc2V0MAIsOExRVzhmN1A1ZDVQWk03R3RaRUJnYXFSUEdTelMzRGZQdWlYclVSSjRBSlMGCQAAAgUGYXNzZXQxAiw4TFFXOGY3UDVkNVBaTTdHdFpFQmdhcVJQR1N6UzNEZlB1aVhyVVJKNEFKUwIsOExRVzhmN1A1ZDVQWk03R3RaRUJnYXFSUEdTelMzRGZQdWlYclVSSjRBSlMDAwkAAAIFBmFzc2V0MAIFV0FWRVMGCQAAAgUGYXNzZXQxAgVXQVZFUwIFV0FWRVMFCXVzZG5JZFN0cgQOZmFjdG9yeUFkZHJlc3MJAQdBZGRyZXNzAQEaAVd4W96KvlEqrosx6m8TkCW+9Km4orsJAkEECGFzc2V0SW50CQCkAwEJARFAZXh0ck5hdGl2ZSgxMDUwKQIFDmZhY3RvcnlBZGRyZXNzCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18DCQECIT0CBQZhc3NldDEFCnByaWNlQXNzZXQFBmFzc2V0MQUGYXNzZXQwBAd1c2RuSW50CQCkAwEJARFAZXh0ck5hdGl2ZSgxMDUwKQIFDmZhY3RvcnlBZGRyZXNzCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FCnByaWNlQXNzZXQECnBvb2xDb25maWcJALUJAgkBEUBleHRyTmF0aXZlKDEwNTMpAgUOZmFjdG9yeUFkZHJlc3MJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FCGFzc2V0SW50AgJfXwUHdXNkbkludAIIX19jb25maWcCAl9fBAtwb29sQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQpwb29sQ29uZmlnAAEEC3Bvb2xBc3NldElkCQCRAwIFCnBvb2xDb25maWcAAwQEaW52MQkA/AcEBQtwb29sQWRkcmVzcwIJcHV0T25lVGtuCQDMCAIAAAkAzAgCBwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0QXNzZXRCeXRlcwEFBmFzc2V0MAUHYW1vdW50MAUDbmlsAwkAAAIFBGludjEFBGludjEED3Bvb2xUb2tlbkFtb3VudAkBCmdldEJhbGFuY2UBCQENZ2V0QXNzZXRCeXRlcwEFC3Bvb2xBc3NldElkAwkAAAIFD3Bvb2xUb2tlbkFtb3VudAUPcG9vbFRva2VuQW1vdW50BBNhc3NldDFCYWxhbmNlQmVmb3JlCQEKZ2V0QmFsYW5jZQEJAQ1nZXRBc3NldEJ5dGVzAQUGYXNzZXQxAwkAAAIFE2Fzc2V0MUJhbGFuY2VCZWZvcmUFE2Fzc2V0MUJhbGFuY2VCZWZvcmUEBGludjIJAPwHBAULcG9vbEFkZHJlc3MCCWdldE9uZVRrbgkAzAgCBQZhc3NldDEJAMwIAgAABQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ1nZXRBc3NldEJ5dGVzAQULcG9vbEFzc2V0SWQFD3Bvb2xUb2tlbkFtb3VudAUDbmlsAwkAAAIFBGludjIFBGludjIEB2Ftb3VudDEJAGUCCQEKZ2V0QmFsYW5jZQEJAQ1nZXRBc3NldEJ5dGVzAQUGYXNzZXQxBRNhc3NldDFCYWxhbmNlQmVmb3JlAwkAAAIFB2Ftb3VudDEFB2Ftb3VudDEFB2Ftb3VudDEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDHN3YXBJbnRlcm5hbAQBaQlyb3V0ZXNTdHIMbWluVG9SZWNlaXZlBnJlZktleQoBBmRvU3dhcAIGYW1vdW50BHN3YXAEBnN3YXBMaQkAtQkCBQRzd2FwAgEsBAskdDAyNzcyMjg1MwkAlgoECQCRAwIFBnN3YXBMaQAACQCRAwIFBnN3YXBMaQABCQCRAwIFBnN3YXBMaQACCQCRAwIFBnN3YXBMaQADBARkQXBwCAULJHQwMjc3MjI4NTMCXzEECGRBcHBUeXBlCAULJHQwMjc3MjI4NTMCXzIEBXQwU3RyCAULJHQwMjc3MjI4NTMCXzMEBXQxU3RyCAULJHQwMjc3MjI4NTMCXzQEAnQwCQENZ2V0QXNzZXRCeXRlcwEFBXQwU3RyBAdhbW91bnQwAwkBAiE9AgUGYW1vdW50AAAFBmFtb3VudAkBCmdldEJhbGFuY2UBBQJ0MAQCaTEDCQAAAgUIZEFwcFR5cGUCBnN3b3BmaQkA/AcECQEHQWRkcmVzcwEJANkEAQUEZEFwcAIIZXhjaGFuZ2UJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAnQwBQdhbW91bnQwBQNuaWwDCQAAAgUIZEFwcFR5cGUCBnB1enpsZQkA/AcECQEHQWRkcmVzcwEJANkEAQUEZEFwcAIEc3dhcAkAzAgCBQV0MVN0cgkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCdDAFB2Ftb3VudDAFA25pbAMJAAACBQhkQXBwVHlwZQICd3gJAQZzd2FwV1gDBQV0MFN0cgUFdDFTdHIFB2Ftb3VudDAJAAIBAitpbnRlcm5hbCBhZ2dyZWdhdG9yIGlzc3VlOiB1bmtub3cgcG9vbCB0eXBlAwkAAAIFAmkxBQJpMQAACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCgEHZG9Sb3V0ZQIFYWNjdW0Fcm91dGUECGFtb3VudEluCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCBQVyb3V0ZQIBLwAABAVzd2FwcwkAtQkCCQCRAwIJALUJAgUFcm91dGUCAS8AAQIBOwQLc3dhcHNSZXN1bHQKAAIkbAUFc3dhcHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQhhbW91bnRJbgoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEGZG9Td2FwAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyAzCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAwkAAAIFC3N3YXBzUmVzdWx0BQtzd2Fwc1Jlc3VsdAkAZAIFBWFjY3VtBQtzd2Fwc1Jlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQNc3BsaXR0ZWRSb3V0ZQkAtQkCCQCyAgIFCXJvdXRlc1N0cgAyAgEsBAlhc3NldDFTdHIJAJEDAgUNc3BsaXR0ZWRSb3V0ZQkAZQIJAJADAQUNc3BsaXR0ZWRSb3V0ZQABBAZhc3NldDEJAQ1nZXRBc3NldEJ5dGVzAQUJYXNzZXQxU3RyBAZyb3V0ZXMJALwJAgUJcm91dGVzU3RyAgF8BAVzd2FwcwoAAiRsBQZyb3V0ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2RvUm91dGUCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDQJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAMJAAACBQVzd2FwcwUFc3dhcHMECHRvdGFsT3V0CQEKZ2V0QmFsYW5jZQEFBmFzc2V0MQQJZmVlQW1vdW50CQBrAwUIdG90YWxPdXQAHQCQTgQQY2xlYW5Ub3RhbEFtb3VudAkAZQIFCHRvdGFsT3V0BQlmZWVBbW91bnQDCQBmAgUMbWluVG9SZWNlaXZlBRBjbGVhblRvdGFsQW1vdW50CQACAQkArAICAi1hbW91bnQgdG8gcmVjZWl2ZSBpcyBsb3dlciB0aGFuIGV4cGVjdGVkIG9uZSAJAKQDAQUQY2xlYW5Ub3RhbEFtb3VudAQHdXNkbkZlZQMJAAACBQZhc3NldDEFBnVzZG5JZAUJZmVlQW1vdW50BA5wb29sQWRkcmVzc1N0cgkBDHRyeUdldFN0cmluZwEJAKwCAgkArAICAg1zdGF0aWNfYXNzZXRfBQlhc3NldDFTdHICC19wdXp6bGVQb29sAwkAAAIFDnBvb2xBZGRyZXNzU3RyAgAAAAQRdXNkbkJhbGFuY2VCZWZvcmUJAQpnZXRCYWxhbmNlAQUGdXNkbklkAwkAAAIFEXVzZG5CYWxhbmNlQmVmb3JlBRF1c2RuQmFsYW5jZUJlZm9yZQQMY29udmVydGVkRmVlCQD8BwQJARFAZXh0ck5hdGl2ZSgxMDYyKQEFDnBvb2xBZGRyZXNzU3RyAgRzd2FwCQDMCAIFCXVzZG5JZFN0cgkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUGYXNzZXQxBQlmZWVBbW91bnQFA25pbAMJAAACBQxjb252ZXJ0ZWRGZWUFDGNvbnZlcnRlZEZlZQQQdXNkbkJhbGFuY2VBZnRlcgkBCmdldEJhbGFuY2UBBQZ1c2RuSWQDCQAAAgUQdXNkbkJhbGFuY2VBZnRlcgUQdXNkbkJhbGFuY2VBZnRlcgkAZQIFEHVzZG5CYWxhbmNlQWZ0ZXIFEXVzZG5CYWxhbmNlQmVmb3JlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFB3VzZG5GZWUFB3VzZG5GZWUED3JlZmVycmFsQWRkcmVzcwMJAAACBQZyZWZLZXkCBG11bmEJAQdBZGRyZXNzAQEaAVedDKrGE1GpbsuA92N9wWR44u9yTagMutMDCQAAAgUGcmVmS2V5AgZrZWVwZXIJAQdBZGRyZXNzAQEaAVfjtsoSNO5vRm/wyqiA44uvcU3xXpmsO/YDCQAAAgUGcmVmS2V5AgN0Y2kJAQdBZGRyZXNzAQEaAVdOBKn1coze5/nSUkrduGtTRYx6p5o4fZwJAQdBZGRyZXNzAQEaAVf8mgdw4W/e0ZQhIW16to1Y0kJYeywHJhIEDHJlZlVzZG5TaGFyZQMJAAACBQZyZWZLZXkCBW5vcmVmAAAJAGsDBQd1c2RuRmVlAAIACgQFdG9wVXAJAPwHBAkBB0FkZHJlc3MBARoBV8CKrXOUITO9sBhWDyi1uT5Bd86/b/L+1wILdG9wVXBSZXdhcmQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUGdXNkbklkCQBlAgUHdXNkbkZlZQUMcmVmVXNkblNoYXJlBQNuaWwDCQAAAgUFdG9wVXAFBXRvcFVwBAZhc3NldDAICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQHYW1vdW50MAkAZQIJAQpnZXRCYWxhbmNlAQUGYXNzZXQwAwkAAAIFBmFzc2V0MAUGdXNkbklkBQxyZWZVc2RuU2hhcmUAAAQHYW1vdW50MQkAZQIJAQpnZXRCYWxhbmNlAQUGYXNzZXQxAwkAAAIFBmFzc2V0MQUGdXNkbklkBQxyZWZVc2RuU2hhcmUAAAkAzggCCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQdhbW91bnQxBQZhc3NldDEFA25pbAMJAQIhPQIFDHJlZlVzZG5TaGFyZQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFD3JlZmVycmFsQWRkcmVzcwUMcmVmVXNkblNoYXJlBQZ1c2RuSWQFA25pbAUDbmlsAwkBAiE9AgUHYW1vdW50MAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUHYW1vdW50MAUGYXNzZXQwBQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMBaQEEc3dhcAIJcm91dGVzU3RyDG1pblRvUmVjZWl2ZQkBDHN3YXBJbnRlcm5hbAQFAWkFCXJvdXRlc1N0cgUMbWluVG9SZWNlaXZlAgVub3JlZgFpARBzd2FwV2l0aFJlZmVycmFsAwlyb3V0ZXNTdHIMbWluVG9SZWNlaXZlBnJlZktleQkBDHN3YXBJbnRlcm5hbAQFAWkFCXJvdXRlc1N0cgUMbWluVG9SZWNlaXZlBQZyZWZLZXkBaQESYWRkVG9rZW5QdXp6bGVQb29sAgphc3NldElkU3RyDnBvb2xBZGRyZXNzU3RyAwkBAiE9AggFAWkGY2FsbGVyCQEHQWRkcmVzcwEBGgFXS8NszvszWENYQ1EQ7u/uIRAXS/J4y3wyCQACAQIKYWRtaW4gb25seQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgINc3RhdGljX2Fzc2V0XwUKYXNzZXRJZFN0cgILX3B1enpsZVBvb2wFDnBvb2xBZGRyZXNzU3RyBQNuaWwBAnR4AQZ2ZXJpZnkACQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5+H4DLQ==", "height": 3484730, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DDiW6Q3ooUdsF3Ugj3vzRAzT9RA8a6rVG1JBS6aKZNfD Next: C3nyzW5GcYoJ2gcuckK2iMu2DgzZhU9gLX88TRh8iHXH Diff:
OldNewDifferences
137137 else throw("Strict value is not equal to itself.")
138138 }
139139
140- let asset1Str = split(routesStr, ",")[(size(split(routesStr, ",")) - 1)]
140+ let splittedRoute = split(takeRight(routesStr, 50), ",")
141+ let asset1Str = splittedRoute[(size(splittedRoute) - 1)]
141142 let asset1 = getAssetBytes(asset1Str)
142- let routes = split(routesStr, "|")
143+ let routes = split_4C(routesStr, "|")
143144 let swaps = {
144145 let $l = routes
145146 let $s = size($l)
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 priceAsset = if (if ((asset0 == "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"))
3939 then true
4040 else (asset1 == "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"))
4141 then "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"
4242 else if (if ((asset0 == "6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ"))
4343 then true
4444 else (asset1 == "6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ"))
4545 then "6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ"
4646 else if (if ((asset0 == usdnIdStr))
4747 then true
4848 else (asset1 == usdnIdStr))
4949 then usdnIdStr
5050 else if (if ((asset0 == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
5151 then true
5252 else (asset1 == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
5353 then "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"
5454 else if (if ((asset0 == "WAVES"))
5555 then true
5656 else (asset1 == "WAVES"))
5757 then "WAVES"
5858 else usdnIdStr
5959 let factoryAddress = Address(base58'3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv')
6060 let assetInt = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + (if ((asset1 != priceAsset))
6161 then asset1
6262 else asset0))))
6363 let usdnInt = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + priceAsset)))
6464 let poolConfig = split(getStringValue(factoryAddress, (((("%d%d%s__" + assetInt) + "__") + usdnInt) + "__config")), "__")
6565 let poolAddress = addressFromStringValue(poolConfig[1])
6666 let poolAssetId = poolConfig[3]
6767 let inv1 = invoke(poolAddress, "putOneTkn", [0, false], [AttachedPayment(getAssetBytes(asset0), amount0)])
6868 if ((inv1 == inv1))
6969 then {
7070 let poolTokenAmount = getBalance(getAssetBytes(poolAssetId))
7171 if ((poolTokenAmount == poolTokenAmount))
7272 then {
7373 let asset1BalanceBefore = getBalance(getAssetBytes(asset1))
7474 if ((asset1BalanceBefore == asset1BalanceBefore))
7575 then {
7676 let inv2 = invoke(poolAddress, "getOneTkn", [asset1, 0], [AttachedPayment(getAssetBytes(poolAssetId), poolTokenAmount)])
7777 if ((inv2 == inv2))
7878 then {
7979 let amount1 = (getBalance(getAssetBytes(asset1)) - asset1BalanceBefore)
8080 if ((amount1 == amount1))
8181 then amount1
8282 else throw("Strict value is not equal to itself.")
8383 }
8484 else throw("Strict value is not equal to itself.")
8585 }
8686 else throw("Strict value is not equal to itself.")
8787 }
8888 else throw("Strict value is not equal to itself.")
8989 }
9090 else throw("Strict value is not equal to itself.")
9191 }
9292
9393
9494 func swapInternal (i,routesStr,minToReceive,refKey) = {
9595 func doSwap (amount,swap) = {
9696 let swapLi = split(swap, ",")
9797 let $t027722853 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
9898 let dApp = $t027722853._1
9999 let dAppType = $t027722853._2
100100 let t0Str = $t027722853._3
101101 let t1Str = $t027722853._4
102102 let t0 = getAssetBytes(t0Str)
103103 let amount0 = if ((amount != 0))
104104 then amount
105105 else getBalance(t0)
106106 let i1 = if ((dAppType == "swopfi"))
107107 then invoke(Address(fromBase58String(dApp)), "exchange", [1], [AttachedPayment(t0, amount0)])
108108 else if ((dAppType == "puzzle"))
109109 then invoke(Address(fromBase58String(dApp)), "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
110110 else if ((dAppType == "wx"))
111111 then swapWX(t0Str, t1Str, amount0)
112112 else throw("internal aggregator issue: unknow pool type")
113113 if ((i1 == i1))
114114 then 0
115115 else throw("Strict value is not equal to itself.")
116116 }
117117
118118 func doRoute (accum,route) = {
119119 let amountIn = parseIntValue(split(route, "/")[0])
120120 let swaps = split(split(route, "/")[1], ";")
121121 let swapsResult = {
122122 let $l = swaps
123123 let $s = size($l)
124124 let $acc0 = amountIn
125125 func $f0_1 ($a,$i) = if (($i >= $s))
126126 then $a
127127 else doSwap($a, $l[$i])
128128
129129 func $f0_2 ($a,$i) = if (($i >= $s))
130130 then $a
131131 else throw("List size exceeds 3")
132132
133133 $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3)
134134 }
135135 if ((swapsResult == swapsResult))
136136 then (accum + swapsResult)
137137 else throw("Strict value is not equal to itself.")
138138 }
139139
140- let asset1Str = split(routesStr, ",")[(size(split(routesStr, ",")) - 1)]
140+ let splittedRoute = split(takeRight(routesStr, 50), ",")
141+ let asset1Str = splittedRoute[(size(splittedRoute) - 1)]
141142 let asset1 = getAssetBytes(asset1Str)
142- let routes = split(routesStr, "|")
143+ let routes = split_4C(routesStr, "|")
143144 let swaps = {
144145 let $l = routes
145146 let $s = size($l)
146147 let $acc0 = 0
147148 func $f0_1 ($a,$i) = if (($i >= $s))
148149 then $a
149150 else doRoute($a, $l[$i])
150151
151152 func $f0_2 ($a,$i) = if (($i >= $s))
152153 then $a
153154 else throw("List size exceeds 4")
154155
155156 $f0_2($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4)
156157 }
157158 if ((swaps == swaps))
158159 then {
159160 let totalOut = getBalance(asset1)
160161 let feeAmount = fraction(totalOut, 29, 10000)
161162 let cleanTotalAmount = (totalOut - feeAmount)
162163 if ((minToReceive > cleanTotalAmount))
163164 then throw(("amount to receive is lower than expected one " + toString(cleanTotalAmount)))
164165 else {
165166 let usdnFee = if ((asset1 == usdnId))
166167 then feeAmount
167168 else {
168169 let poolAddressStr = tryGetString((("static_asset_" + asset1Str) + "_puzzlePool"))
169170 if ((poolAddressStr == ""))
170171 then 0
171172 else {
172173 let usdnBalanceBefore = getBalance(usdnId)
173174 if ((usdnBalanceBefore == usdnBalanceBefore))
174175 then {
175176 let convertedFee = invoke(addressFromStringValue(poolAddressStr), "swap", [usdnIdStr, 0], [AttachedPayment(asset1, feeAmount)])
176177 if ((convertedFee == convertedFee))
177178 then {
178179 let usdnBalanceAfter = getBalance(usdnId)
179180 if ((usdnBalanceAfter == usdnBalanceAfter))
180181 then (usdnBalanceAfter - usdnBalanceBefore)
181182 else throw("Strict value is not equal to itself.")
182183 }
183184 else throw("Strict value is not equal to itself.")
184185 }
185186 else throw("Strict value is not equal to itself.")
186187 }
187188 }
188189 if ((usdnFee == usdnFee))
189190 then {
190191 let referralAddress = if ((refKey == "muna"))
191192 then Address(base58'3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU')
192193 else if ((refKey == "keeper"))
193194 then Address(base58'3PNgw6Db2TGUQbjnV7ekve6q126xBC1e7eM')
194195 else if ((refKey == "tci"))
195196 then Address(base58'3P93R2GBkTGVehRPhytHr7sdxYww93jkbhm')
196197 else Address(base58'3PQxXXiQXpWsjDwQLYxyuoPiaLnVHjJguFo')
197198 let refUsdnShare = if ((refKey == "noref"))
198199 then 0
199200 else fraction(usdnFee, 2, 10)
200201 let topUp = invoke(Address(base58'3PKUxbZaSYfsR7wu2HaAgiirHYwAMupDrYW'), "topUpReward", nil, [AttachedPayment(usdnId, (usdnFee - refUsdnShare))])
201202 if ((topUp == topUp))
202203 then {
203204 let asset0 = i.payments[0].assetId
204205 let amount0 = (getBalance(asset0) - (if ((asset0 == usdnId))
205206 then refUsdnShare
206207 else 0))
207208 let amount1 = (getBalance(asset1) - (if ((asset1 == usdnId))
208209 then refUsdnShare
209210 else 0))
210211 (([ScriptTransfer(i.caller, amount1, asset1)] ++ (if ((refUsdnShare != 0))
211212 then [ScriptTransfer(referralAddress, refUsdnShare, usdnId)]
212213 else nil)) ++ (if ((amount0 != 0))
213214 then [ScriptTransfer(i.caller, amount0, asset0)]
214215 else nil))
215216 }
216217 else throw("Strict value is not equal to itself.")
217218 }
218219 else throw("Strict value is not equal to itself.")
219220 }
220221 }
221222 else throw("Strict value is not equal to itself.")
222223 }
223224
224225
225226 @Callable(i)
226227 func swap (routesStr,minToReceive) = swapInternal(i, routesStr, minToReceive, "noref")
227228
228229
229230
230231 @Callable(i)
231232 func swapWithReferral (routesStr,minToReceive,refKey) = swapInternal(i, routesStr, minToReceive, refKey)
232233
233234
234235
235236 @Callable(i)
236237 func addTokenPuzzlePool (assetIdStr,poolAddressStr) = if ((i.caller != Address(base58'3P8qVX189qpoTJZQQQdKS9endHK5sxWsvrd')))
237238 then throw("admin only")
238239 else [StringEntry((("static_asset_" + assetIdStr) + "_puzzlePool"), poolAddressStr)]
239240
240241
241242 @Verifier(tx)
242243 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
243244

github/deemru/w8io/786bc32 
47.52 ms