tx · DDiW6Q3ooUdsF3Ugj3vzRAzT9RA8a6rVG1JBS6aKZNfD

3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU:  -0.01300000 Waves

2023.01.24 12:32 [3484374] smart account 3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU > SELF 0.00000000 Waves

{ "type": 13, "id": "DDiW6Q3ooUdsF3Ugj3vzRAzT9RA8a6rVG1JBS6aKZNfD", "fee": 1300000, "feeAssetId": null, "timestamp": 1674552786903, "version": 2, "chainId": 87, "sender": "3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU", "senderPublicKey": "Dmn1fWHxpwN789LPfoMHFj7uSYKSsb5VFfyNQyQ629f9", "proofs": [ "5c2ETs6HciThRBK1QLCinXhQJwHHahP7x47tfG5cXYaQWuSrLTSpbS6BDuBb9wTTgW82hcozSqXQ5FMfsvDqgxgS" ], "script": "base64:BgIVCAISBAoCCAESBQoDCAEIEgQKAggICAAJdXNkbklkU3RyAixERzJ4RmtQZER3S1VvQmt6R0FoUXRMcFNHemZYTGlDWVBFemVLSDJBZDI0cAAGdXNkbklkASC2JinDBPXOU5GkDkt1JC9kjFGx+t+vVCm9SNIdKrKq0QEMdHJ5R2V0U3RyaW5nAQNrZXkEByRtYXRjaDAJAJ0IAgUEdGhpcwUDa2V5AwkAAQIFByRtYXRjaDACBlN0cmluZwQBYgUHJG1hdGNoMAUBYgIAAQ5nZXRBc3NldFN0cmluZwEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwCQDYBAEFAWICBVdBVkVTAQ1nZXRBc3NldEJ5dGVzAQphc3NldElkU3RyAwkAAAIFCmFzc2V0SWRTdHICBVdBVkVTBQR1bml0CQDZBAEFCmFzc2V0SWRTdHIBCmdldEJhbGFuY2UBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIEVW5pdAQBeAUHJG1hdGNoMAgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkBBXZhbHVlAQUHYXNzZXRJZAEGc3dhcFdYAwZhc3NldDAGYXNzZXQxB2Ftb3VudDAECnByaWNlQXNzZXQDAwkAAAIFBmFzc2V0MAIsMzROOVljRUVUTFduOTNxWVE2NEVzUDF4ODl0U3J1SlU0NFJyRU1TWFhFUEoGCQAAAgUGYXNzZXQxAiwzNE45WWNFRVRMV245M3FZUTY0RXNQMXg4OXRTcnVKVTQ0UnJFTVNYWEVQSgIsMzROOVljRUVUTFduOTNxWVE2NEVzUDF4ODl0U3J1SlU0NFJyRU1TWFhFUEoDAwkAAAIFBmFzc2V0MAIsNlh0SGpwWGJzOVJSSlAyU3I5R1V5VnF6QUNjYnk5VGtUaEhYbmpWQzVDREoGCQAAAgUGYXNzZXQxAiw2WHRIanBYYnM5UlJKUDJTcjlHVXlWcXpBQ2NieTlUa1RoSFhualZDNUNESgIsNlh0SGpwWGJzOVJSSlAyU3I5R1V5VnF6QUNjYnk5VGtUaEhYbmpWQzVDREoDAwkAAAIFBmFzc2V0MAUJdXNkbklkU3RyBgkAAAIFBmFzc2V0MQUJdXNkbklkU3RyBQl1c2RuSWRTdHIDAwkAAAIFBmFzc2V0MAIsOExRVzhmN1A1ZDVQWk03R3RaRUJnYXFSUEdTelMzRGZQdWlYclVSSjRBSlMGCQAAAgUGYXNzZXQxAiw4TFFXOGY3UDVkNVBaTTdHdFpFQmdhcVJQR1N6UzNEZlB1aVhyVVJKNEFKUwIsOExRVzhmN1A1ZDVQWk03R3RaRUJnYXFSUEdTelMzRGZQdWlYclVSSjRBSlMDAwkAAAIFBmFzc2V0MAIFV0FWRVMGCQAAAgUGYXNzZXQxAgVXQVZFUwIFV0FWRVMFCXVzZG5JZFN0cgQOZmFjdG9yeUFkZHJlc3MJAQdBZGRyZXNzAQEaAVd4W96KvlEqrosx6m8TkCW+9Km4orsJAkEECGFzc2V0SW50CQCkAwEJARFAZXh0ck5hdGl2ZSgxMDUwKQIFDmZhY3RvcnlBZGRyZXNzCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18DCQECIT0CBQZhc3NldDEFCnByaWNlQXNzZXQFBmFzc2V0MQUGYXNzZXQwBAd1c2RuSW50CQCkAwEJARFAZXh0ck5hdGl2ZSgxMDUwKQIFDmZhY3RvcnlBZGRyZXNzCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FCnByaWNlQXNzZXQECnBvb2xDb25maWcJALUJAgkBEUBleHRyTmF0aXZlKDEwNTMpAgUOZmFjdG9yeUFkZHJlc3MJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FCGFzc2V0SW50AgJfXwUHdXNkbkludAIIX19jb25maWcCAl9fBAtwb29sQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQpwb29sQ29uZmlnAAEEC3Bvb2xBc3NldElkCQCRAwIFCnBvb2xDb25maWcAAwQEaW52MQkA/AcEBQtwb29sQWRkcmVzcwIJcHV0T25lVGtuCQDMCAIAAAkAzAgCBwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0QXNzZXRCeXRlcwEFBmFzc2V0MAUHYW1vdW50MAUDbmlsAwkAAAIFBGludjEFBGludjEED3Bvb2xUb2tlbkFtb3VudAkBCmdldEJhbGFuY2UBCQENZ2V0QXNzZXRCeXRlcwEFC3Bvb2xBc3NldElkAwkAAAIFD3Bvb2xUb2tlbkFtb3VudAUPcG9vbFRva2VuQW1vdW50BBNhc3NldDFCYWxhbmNlQmVmb3JlCQEKZ2V0QmFsYW5jZQEJAQ1nZXRBc3NldEJ5dGVzAQUGYXNzZXQxAwkAAAIFE2Fzc2V0MUJhbGFuY2VCZWZvcmUFE2Fzc2V0MUJhbGFuY2VCZWZvcmUEBGludjIJAPwHBAULcG9vbEFkZHJlc3MCCWdldE9uZVRrbgkAzAgCBQZhc3NldDEJAMwIAgAABQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ1nZXRBc3NldEJ5dGVzAQULcG9vbEFzc2V0SWQFD3Bvb2xUb2tlbkFtb3VudAUDbmlsAwkAAAIFBGludjIFBGludjIEB2Ftb3VudDEJAGUCCQEKZ2V0QmFsYW5jZQEJAQ1nZXRBc3NldEJ5dGVzAQUGYXNzZXQxBRNhc3NldDFCYWxhbmNlQmVmb3JlAwkAAAIFB2Ftb3VudDEFB2Ftb3VudDEFB2Ftb3VudDEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDHN3YXBJbnRlcm5hbAQBaQlyb3V0ZXNTdHIMbWluVG9SZWNlaXZlBnJlZktleQoBBmRvU3dhcAIGYW1vdW50BHN3YXAEBnN3YXBMaQkAtQkCBQRzd2FwAgEsBAskdDAyNzcyMjg1MwkAlgoECQCRAwIFBnN3YXBMaQAACQCRAwIFBnN3YXBMaQABCQCRAwIFBnN3YXBMaQACCQCRAwIFBnN3YXBMaQADBARkQXBwCAULJHQwMjc3MjI4NTMCXzEECGRBcHBUeXBlCAULJHQwMjc3MjI4NTMCXzIEBXQwU3RyCAULJHQwMjc3MjI4NTMCXzMEBXQxU3RyCAULJHQwMjc3MjI4NTMCXzQEAnQwCQENZ2V0QXNzZXRCeXRlcwEFBXQwU3RyBAdhbW91bnQwAwkBAiE9AgUGYW1vdW50AAAFBmFtb3VudAkBCmdldEJhbGFuY2UBBQJ0MAQCaTEDCQAAAgUIZEFwcFR5cGUCBnN3b3BmaQkA/AcECQEHQWRkcmVzcwEJANkEAQUEZEFwcAIIZXhjaGFuZ2UJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAnQwBQdhbW91bnQwBQNuaWwDCQAAAgUIZEFwcFR5cGUCBnB1enpsZQkA/AcECQEHQWRkcmVzcwEJANkEAQUEZEFwcAIEc3dhcAkAzAgCBQV0MVN0cgkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCdDAFB2Ftb3VudDAFA25pbAMJAAACBQhkQXBwVHlwZQICd3gJAQZzd2FwV1gDBQV0MFN0cgUFdDFTdHIFB2Ftb3VudDAJAAIBAitpbnRlcm5hbCBhZ2dyZWdhdG9yIGlzc3VlOiB1bmtub3cgcG9vbCB0eXBlAwkAAAIFAmkxBQJpMQAACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCgEHZG9Sb3V0ZQIFYWNjdW0Fcm91dGUECGFtb3VudEluCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCBQVyb3V0ZQIBLwAABAVzd2FwcwkAtQkCCQCRAwIJALUJAgUFcm91dGUCAS8AAQIBOwQLc3dhcHNSZXN1bHQKAAIkbAUFc3dhcHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQhhbW91bnRJbgoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEGZG9Td2FwAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyAzCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAwkAAAIFC3N3YXBzUmVzdWx0BQtzd2Fwc1Jlc3VsdAkAZAIFBWFjY3VtBQtzd2Fwc1Jlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQJYXNzZXQxU3RyCQCRAwIJALUJAgUJcm91dGVzU3RyAgEsCQBlAgkAkAMBCQC1CQIFCXJvdXRlc1N0cgIBLAABBAZhc3NldDEJAQ1nZXRBc3NldEJ5dGVzAQUJYXNzZXQxU3RyBAZyb3V0ZXMJALUJAgUJcm91dGVzU3RyAgF8BAVzd2FwcwoAAiRsBQZyb3V0ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2RvUm91dGUCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDQJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAMJAAACBQVzd2FwcwUFc3dhcHMECHRvdGFsT3V0CQEKZ2V0QmFsYW5jZQEFBmFzc2V0MQQJZmVlQW1vdW50CQBrAwUIdG90YWxPdXQAHQCQTgQQY2xlYW5Ub3RhbEFtb3VudAkAZQIFCHRvdGFsT3V0BQlmZWVBbW91bnQDCQBmAgUMbWluVG9SZWNlaXZlBRBjbGVhblRvdGFsQW1vdW50CQACAQkArAICAi1hbW91bnQgdG8gcmVjZWl2ZSBpcyBsb3dlciB0aGFuIGV4cGVjdGVkIG9uZSAJAKQDAQUQY2xlYW5Ub3RhbEFtb3VudAQHdXNkbkZlZQMJAAACBQZhc3NldDEFBnVzZG5JZAUJZmVlQW1vdW50BA5wb29sQWRkcmVzc1N0cgkBDHRyeUdldFN0cmluZwEJAKwCAgkArAICAg1zdGF0aWNfYXNzZXRfBQlhc3NldDFTdHICC19wdXp6bGVQb29sAwkAAAIFDnBvb2xBZGRyZXNzU3RyAgAAAAQRdXNkbkJhbGFuY2VCZWZvcmUJAQpnZXRCYWxhbmNlAQUGdXNkbklkAwkAAAIFEXVzZG5CYWxhbmNlQmVmb3JlBRF1c2RuQmFsYW5jZUJlZm9yZQQMY29udmVydGVkRmVlCQD8BwQJARFAZXh0ck5hdGl2ZSgxMDYyKQEFDnBvb2xBZGRyZXNzU3RyAgRzd2FwCQDMCAIFCXVzZG5JZFN0cgkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUGYXNzZXQxBQlmZWVBbW91bnQFA25pbAMJAAACBQxjb252ZXJ0ZWRGZWUFDGNvbnZlcnRlZEZlZQQQdXNkbkJhbGFuY2VBZnRlcgkBCmdldEJhbGFuY2UBBQZ1c2RuSWQDCQAAAgUQdXNkbkJhbGFuY2VBZnRlcgUQdXNkbkJhbGFuY2VBZnRlcgkAZQIFEHVzZG5CYWxhbmNlQWZ0ZXIFEXVzZG5CYWxhbmNlQmVmb3JlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFB3VzZG5GZWUFB3VzZG5GZWUED3JlZmVycmFsQWRkcmVzcwMJAAACBQZyZWZLZXkCBG11bmEJAQdBZGRyZXNzAQEaAVedDKrGE1GpbsuA92N9wWR44u9yTagMutMDCQAAAgUGcmVmS2V5AgZrZWVwZXIJAQdBZGRyZXNzAQEaAVfjtsoSNO5vRm/wyqiA44uvcU3xXpmsO/YDCQAAAgUGcmVmS2V5AgN0Y2kJAQdBZGRyZXNzAQEaAVdOBKn1coze5/nSUkrduGtTRYx6p5o4fZwJAQdBZGRyZXNzAQEaAVf8mgdw4W/e0ZQhIW16to1Y0kJYeywHJhIEDHJlZlVzZG5TaGFyZQMJAAACBQZyZWZLZXkCBW5vcmVmAAAJAGsDBQd1c2RuRmVlAAIACgQFdG9wVXAJAPwHBAkBB0FkZHJlc3MBARoBV8CKrXOUITO9sBhWDyi1uT5Bd86/b/L+1wILdG9wVXBSZXdhcmQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUGdXNkbklkCQBlAgUHdXNkbkZlZQUMcmVmVXNkblNoYXJlBQNuaWwDCQAAAgUFdG9wVXAFBXRvcFVwBAZhc3NldDAICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQHYW1vdW50MAkAZQIJAQpnZXRCYWxhbmNlAQUGYXNzZXQwAwkAAAIFBmFzc2V0MAUGdXNkbklkBQxyZWZVc2RuU2hhcmUAAAQHYW1vdW50MQkAZQIJAQpnZXRCYWxhbmNlAQUGYXNzZXQxAwkAAAIFBmFzc2V0MQUGdXNkbklkBQxyZWZVc2RuU2hhcmUAAAkAzggCCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQdhbW91bnQxBQZhc3NldDEFA25pbAMJAQIhPQIFDHJlZlVzZG5TaGFyZQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFD3JlZmVycmFsQWRkcmVzcwUMcmVmVXNkblNoYXJlBQZ1c2RuSWQFA25pbAUDbmlsAwkBAiE9AgUHYW1vdW50MAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUHYW1vdW50MAUGYXNzZXQwBQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMBaQEEc3dhcAIJcm91dGVzU3RyDG1pblRvUmVjZWl2ZQkBDHN3YXBJbnRlcm5hbAQFAWkFCXJvdXRlc1N0cgUMbWluVG9SZWNlaXZlAgVub3JlZgFpARBzd2FwV2l0aFJlZmVycmFsAwlyb3V0ZXNTdHIMbWluVG9SZWNlaXZlBnJlZktleQkBDHN3YXBJbnRlcm5hbAQFAWkFCXJvdXRlc1N0cgUMbWluVG9SZWNlaXZlBQZyZWZLZXkBaQESYWRkVG9rZW5QdXp6bGVQb29sAgphc3NldElkU3RyDnBvb2xBZGRyZXNzU3RyAwkBAiE9AggFAWkGY2FsbGVyCQEHQWRkcmVzcwEBGgFXS8NszvszWENYQ1EQ7u/uIRAXS/J4y3wyCQACAQIKYWRtaW4gb25seQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgINc3RhdGljX2Fzc2V0XwUKYXNzZXRJZFN0cgILX3B1enpsZVBvb2wFDnBvb2xBZGRyZXNzU3RyBQNuaWwBAnR4AQZ2ZXJpZnkACQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5i/l66g==", "height": 3484374, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: C7vKfkY361boi8YPJMRvDGLWoNrgJRe1zG8vkDXJKW7F Next: jLJyeRvujDuRdHe2k1azjFMnhC8XsZCjRR8hL24TJ1E Diff:
OldNewDifferences
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])
66- let poolAssetId = getAssetBytes(poolConfig[3])
67- let inv1 = invoke(poolAddress, "putOneTkn", [0, true], [AttachedPayment(getAssetBytes(asset0), amount0)])
66+ let poolAssetId = poolConfig[3]
67+ let inv1 = invoke(poolAddress, "putOneTkn", [0, false], [AttachedPayment(getAssetBytes(asset0), amount0)])
6868 if ((inv1 == inv1))
6969 then {
70- let poolTokenAmount = {
71- let @ = inv1
72- if ($isInstanceOf(@, "Int"))
73- then @
74- else throw(($getType(@) + " couldn't be cast to Int"))
75- }
70+ let poolTokenAmount = getBalance(getAssetBytes(poolAssetId))
7671 if ((poolTokenAmount == poolTokenAmount))
7772 then {
7873 let asset1BalanceBefore = getBalance(getAssetBytes(asset1))
7974 if ((asset1BalanceBefore == asset1BalanceBefore))
8075 then {
81- let inv2 = invoke(poolAddress, "unstakeAndGetOneTkn", [poolTokenAmount, asset1, 0], nil)
76+ let inv2 = invoke(poolAddress, "getOneTkn", [asset1, 0], [AttachedPayment(getAssetBytes(poolAssetId), poolTokenAmount)])
8277 if ((inv2 == inv2))
8378 then {
8479 let amount1 = (getBalance(getAssetBytes(asset1)) - asset1BalanceBefore)
9994 func swapInternal (i,routesStr,minToReceive,refKey) = {
10095 func doSwap (amount,swap) = {
10196 let swapLi = split(swap, ",")
102- let $t027582839 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
103- let dApp = $t027582839._1
104- let dAppType = $t027582839._2
105- let t0Str = $t027582839._3
106- let t1Str = $t027582839._4
97+ let $t027722853 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
98+ let dApp = $t027722853._1
99+ let dAppType = $t027722853._2
100+ let t0Str = $t027722853._3
101+ let t1Str = $t027722853._4
107102 let t0 = getAssetBytes(t0Str)
108103 let amount0 = if ((amount != 0))
109104 then amount
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])
66- let poolAssetId = getAssetBytes(poolConfig[3])
67- let inv1 = invoke(poolAddress, "putOneTkn", [0, true], [AttachedPayment(getAssetBytes(asset0), amount0)])
66+ let poolAssetId = poolConfig[3]
67+ let inv1 = invoke(poolAddress, "putOneTkn", [0, false], [AttachedPayment(getAssetBytes(asset0), amount0)])
6868 if ((inv1 == inv1))
6969 then {
70- let poolTokenAmount = {
71- let @ = inv1
72- if ($isInstanceOf(@, "Int"))
73- then @
74- else throw(($getType(@) + " couldn't be cast to Int"))
75- }
70+ let poolTokenAmount = getBalance(getAssetBytes(poolAssetId))
7671 if ((poolTokenAmount == poolTokenAmount))
7772 then {
7873 let asset1BalanceBefore = getBalance(getAssetBytes(asset1))
7974 if ((asset1BalanceBefore == asset1BalanceBefore))
8075 then {
81- let inv2 = invoke(poolAddress, "unstakeAndGetOneTkn", [poolTokenAmount, asset1, 0], nil)
76+ let inv2 = invoke(poolAddress, "getOneTkn", [asset1, 0], [AttachedPayment(getAssetBytes(poolAssetId), poolTokenAmount)])
8277 if ((inv2 == inv2))
8378 then {
8479 let amount1 = (getBalance(getAssetBytes(asset1)) - asset1BalanceBefore)
8580 if ((amount1 == amount1))
8681 then amount1
8782 else throw("Strict value is not equal to itself.")
8883 }
8984 else throw("Strict value is not equal to itself.")
9085 }
9186 else throw("Strict value is not equal to itself.")
9287 }
9388 else throw("Strict value is not equal to itself.")
9489 }
9590 else throw("Strict value is not equal to itself.")
9691 }
9792
9893
9994 func swapInternal (i,routesStr,minToReceive,refKey) = {
10095 func doSwap (amount,swap) = {
10196 let swapLi = split(swap, ",")
102- let $t027582839 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
103- let dApp = $t027582839._1
104- let dAppType = $t027582839._2
105- let t0Str = $t027582839._3
106- let t1Str = $t027582839._4
97+ let $t027722853 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
98+ let dApp = $t027722853._1
99+ let dAppType = $t027722853._2
100+ let t0Str = $t027722853._3
101+ let t1Str = $t027722853._4
107102 let t0 = getAssetBytes(t0Str)
108103 let amount0 = if ((amount != 0))
109104 then amount
110105 else getBalance(t0)
111106 let i1 = if ((dAppType == "swopfi"))
112107 then invoke(Address(fromBase58String(dApp)), "exchange", [1], [AttachedPayment(t0, amount0)])
113108 else if ((dAppType == "puzzle"))
114109 then invoke(Address(fromBase58String(dApp)), "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
115110 else if ((dAppType == "wx"))
116111 then swapWX(t0Str, t1Str, amount0)
117112 else throw("internal aggregator issue: unknow pool type")
118113 if ((i1 == i1))
119114 then 0
120115 else throw("Strict value is not equal to itself.")
121116 }
122117
123118 func doRoute (accum,route) = {
124119 let amountIn = parseIntValue(split(route, "/")[0])
125120 let swaps = split(split(route, "/")[1], ";")
126121 let swapsResult = {
127122 let $l = swaps
128123 let $s = size($l)
129124 let $acc0 = amountIn
130125 func $f0_1 ($a,$i) = if (($i >= $s))
131126 then $a
132127 else doSwap($a, $l[$i])
133128
134129 func $f0_2 ($a,$i) = if (($i >= $s))
135130 then $a
136131 else throw("List size exceeds 3")
137132
138133 $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3)
139134 }
140135 if ((swapsResult == swapsResult))
141136 then (accum + swapsResult)
142137 else throw("Strict value is not equal to itself.")
143138 }
144139
145140 let asset1Str = split(routesStr, ",")[(size(split(routesStr, ",")) - 1)]
146141 let asset1 = getAssetBytes(asset1Str)
147142 let routes = split(routesStr, "|")
148143 let swaps = {
149144 let $l = routes
150145 let $s = size($l)
151146 let $acc0 = 0
152147 func $f0_1 ($a,$i) = if (($i >= $s))
153148 then $a
154149 else doRoute($a, $l[$i])
155150
156151 func $f0_2 ($a,$i) = if (($i >= $s))
157152 then $a
158153 else throw("List size exceeds 4")
159154
160155 $f0_2($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4)
161156 }
162157 if ((swaps == swaps))
163158 then {
164159 let totalOut = getBalance(asset1)
165160 let feeAmount = fraction(totalOut, 29, 10000)
166161 let cleanTotalAmount = (totalOut - feeAmount)
167162 if ((minToReceive > cleanTotalAmount))
168163 then throw(("amount to receive is lower than expected one " + toString(cleanTotalAmount)))
169164 else {
170165 let usdnFee = if ((asset1 == usdnId))
171166 then feeAmount
172167 else {
173168 let poolAddressStr = tryGetString((("static_asset_" + asset1Str) + "_puzzlePool"))
174169 if ((poolAddressStr == ""))
175170 then 0
176171 else {
177172 let usdnBalanceBefore = getBalance(usdnId)
178173 if ((usdnBalanceBefore == usdnBalanceBefore))
179174 then {
180175 let convertedFee = invoke(addressFromStringValue(poolAddressStr), "swap", [usdnIdStr, 0], [AttachedPayment(asset1, feeAmount)])
181176 if ((convertedFee == convertedFee))
182177 then {
183178 let usdnBalanceAfter = getBalance(usdnId)
184179 if ((usdnBalanceAfter == usdnBalanceAfter))
185180 then (usdnBalanceAfter - usdnBalanceBefore)
186181 else throw("Strict value is not equal to itself.")
187182 }
188183 else throw("Strict value is not equal to itself.")
189184 }
190185 else throw("Strict value is not equal to itself.")
191186 }
192187 }
193188 if ((usdnFee == usdnFee))
194189 then {
195190 let referralAddress = if ((refKey == "muna"))
196191 then Address(base58'3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU')
197192 else if ((refKey == "keeper"))
198193 then Address(base58'3PNgw6Db2TGUQbjnV7ekve6q126xBC1e7eM')
199194 else if ((refKey == "tci"))
200195 then Address(base58'3P93R2GBkTGVehRPhytHr7sdxYww93jkbhm')
201196 else Address(base58'3PQxXXiQXpWsjDwQLYxyuoPiaLnVHjJguFo')
202197 let refUsdnShare = if ((refKey == "noref"))
203198 then 0
204199 else fraction(usdnFee, 2, 10)
205200 let topUp = invoke(Address(base58'3PKUxbZaSYfsR7wu2HaAgiirHYwAMupDrYW'), "topUpReward", nil, [AttachedPayment(usdnId, (usdnFee - refUsdnShare))])
206201 if ((topUp == topUp))
207202 then {
208203 let asset0 = i.payments[0].assetId
209204 let amount0 = (getBalance(asset0) - (if ((asset0 == usdnId))
210205 then refUsdnShare
211206 else 0))
212207 let amount1 = (getBalance(asset1) - (if ((asset1 == usdnId))
213208 then refUsdnShare
214209 else 0))
215210 (([ScriptTransfer(i.caller, amount1, asset1)] ++ (if ((refUsdnShare != 0))
216211 then [ScriptTransfer(referralAddress, refUsdnShare, usdnId)]
217212 else nil)) ++ (if ((amount0 != 0))
218213 then [ScriptTransfer(i.caller, amount0, asset0)]
219214 else nil))
220215 }
221216 else throw("Strict value is not equal to itself.")
222217 }
223218 else throw("Strict value is not equal to itself.")
224219 }
225220 }
226221 else throw("Strict value is not equal to itself.")
227222 }
228223
229224
230225 @Callable(i)
231226 func swap (routesStr,minToReceive) = swapInternal(i, routesStr, minToReceive, "noref")
232227
233228
234229
235230 @Callable(i)
236231 func swapWithReferral (routesStr,minToReceive,refKey) = swapInternal(i, routesStr, minToReceive, refKey)
237232
238233
239234
240235 @Callable(i)
241236 func addTokenPuzzlePool (assetIdStr,poolAddressStr) = if ((i.caller != Address(base58'3P8qVX189qpoTJZQQQdKS9endHK5sxWsvrd')))
242237 then throw("admin only")
243238 else [StringEntry((("static_asset_" + assetIdStr) + "_puzzlePool"), poolAddressStr)]
244239
245240
246241 @Verifier(tx)
247242 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
248243

github/deemru/w8io/6500d08 
42.20 ms