tx · EQhUzMXhrjAt7XmnhPfK5XQ4Pfad3LL86bF51WAkWaNk

3PK1LcCBwbmBZrcDCJsDkXh4USKPxb68Tcw:  -0.00900000 Waves

2024.01.19 15:09 [4004123] smart account 3PK1LcCBwbmBZrcDCJsDkXh4USKPxb68Tcw > SELF 0.00000000 Waves

{ "type": 13, "id": "EQhUzMXhrjAt7XmnhPfK5XQ4Pfad3LL86bF51WAkWaNk", "fee": 900000, "feeAssetId": null, "timestamp": 1705666143016, "version": 2, "chainId": 87, "sender": "3PK1LcCBwbmBZrcDCJsDkXh4USKPxb68Tcw", "senderPublicKey": "FBgMeRe67JJ64mvtmPU7XWTUsKCrapoe2XSfJwcMqKTx", "proofs": [ "53ye6NyuNfsSy6JnfeJMYuZhxsNkpwNciLzFfosBagqAVuhgEKmjeQfezuZ5cdsmnHinQuS2pPdQFRwbXdFSb8sS" ], "script": "base64:BgIgCAISBAoCCAESBQoDCAEIEgQKAggIEgQKAggIEgMKAQQQAAl1c2RuSWRTdHICLERHMnhGa1BkRHdLVW9Ca3pHQWhRdExwU0d6ZlhMaUNZUEV6ZUtIMkFkMjRwAAZ1c2RuSWQBILYmKcME9c5TkaQOS3UkL2SMUbH6369UKb1I0h0qsqrRAA1saW1pdENvbnRyYWN0AiMzUEZCNkxKeVNoc0NLRUExQVUxVTFXTGJEYXpxeWo2Wkw5YgALdHNuQ29udHJhY3QCIzNQS3o1am5KTG9oRjJHalNoUTdiRzVINEJlYmRvQTk4eloyABFsZW5kUHJveHlDb250cmFjdAIjM1BHeE1adE1uTlQ5cEpDdlh4WFY0THpLcVhzanZROVhwZlIAEHB6UG9vbHNMMldyYXBwZXICIzNQRnRXcW1OOGtVaVlhQWF0YVIxbU1YS05FR29oV2tLQmNCAQx0cnlHZXRTdHJpbmcBA2tleQQHJG1hdGNoMAkAnQgCBQR0aGlzBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFiBQckbWF0Y2gwBQFiAgABEXRyeUdldFN0cmluZ090aGVyAgNrZXkHYWRkcmVzcwQHJG1hdGNoMAkAnQgCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFiBQckbWF0Y2gwBQFiAgABDmdldEFzc2V0U3RyaW5nAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWIFByRtYXRjaDAJANgEAQUBYgIFV0FWRVMBDWdldEFzc2V0Qnl0ZXMBCmFzc2V0SWRTdHIDCQAAAgUKYXNzZXRJZFN0cgIFV0FWRVMFBHVuaXQJANkEAQUKYXNzZXRJZFN0cgEKZ2V0QmFsYW5jZQEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgRVbml0BAF4BQckbWF0Y2gwCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQEFdmFsdWUBBQdhc3NldElkAQZzd2FwV1gDBmFzc2V0MAZhc3NldDEHYW1vdW50MAQTYXNzZXQxQmFsYW5jZUJlZm9yZQkBCmdldEJhbGFuY2UBCQENZ2V0QXNzZXRCeXRlcwEFBmFzc2V0MQMJAAACBRNhc3NldDFCYWxhbmNlQmVmb3JlBRNhc3NldDFCYWxhbmNlQmVmb3JlBARpbnYxCQD8BwQJAQdBZGRyZXNzAQEaAVcuKjU1sQ238Xk+4bdG0J50Uk17MdCDrgYCBHN3YXAJAMwIAgABCQDMCAIFBmFzc2V0MQkAzAgCCQClCAEFBHRoaXMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDWdldEFzc2V0Qnl0ZXMBBQZhc3NldDAFB2Ftb3VudDAFA25pbAMJAAACBQRpbnYxBQRpbnYxBAdhbW91bnQxCQBlAgkBCmdldEJhbGFuY2UBCQENZ2V0QXNzZXRCeXRlcwEFBmFzc2V0MQUTYXNzZXQxQmFsYW5jZUJlZm9yZQMJAAACBQdhbW91bnQxBQdhbW91bnQxBQdhbW91bnQxCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQlzd2FwTGltaXQDBnBhcmFtcwV0MFN0cgV0MVN0cgoBB2RvTGltaXQCBWFzc2V0C29yZGVyUGFyYW1zBANvcmQJALUJAgULb3JkZXJQYXJhbXMCAT4ECyR0MDE3NjQxODA5CQCUCgIJAJEDAgUDb3JkAAAJAJEDAgUDb3JkAAEEB29yZGVySWQIBQskdDAxNzY0MTgwOQJfMQQLb3JkZXJBbW91bnQIBQskdDAxNzY0MTgwOQJfMgQDaW52CQD8BwQJAQdBZGRyZXNzAQkA2QQBBQ1saW1pdENvbnRyYWN0AgxmdWxmaWxsT3JkZXIJAMwIAgUHb3JkZXJJZAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQVhc3NldAkBDXBhcnNlSW50VmFsdWUBBQtvcmRlckFtb3VudAUDbmlsAwkAAAIFA2ludgUDaW52BQVhc3NldAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQIb3JkZXJzTGkJALUJAgUGcGFyYW1zAgE6BAJ0MAkBDWdldEFzc2V0Qnl0ZXMBBQV0MFN0cgQGcmVzdWx0CgACJGwFCG9yZGVyc0xpCgACJHMJAJADAQUCJGwKAAUkYWNjMAUCdDAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2RvTGltaXQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoDCQAAAgUGcmVzdWx0BQZyZXN1bHQAAAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEIc3dhcExlbmQEBnBhcmFtcwV0MFN0cgV0MVN0cgZhbW91bnQEA2FycgkAtQkCBQZwYXJhbXMCAS0ECyR0MDIyMzgyMjk1CQCVCgMJAJEDAgUDYXJyAAAJAJEDAgUDYXJyAAEJAJEDAgUDYXJyAAIEDHBvb2xfYWRkcmVzcwgFCyR0MDIyMzgyMjk1Al8xBAVhc3NldAgFCyR0MDIyMzgyMjk1Al8yBANkaXIIBQskdDAyMjM4MjI5NQJfMwQIcHJveHlBZHIJAQdBZGRyZXNzAQkA2QQBBRFsZW5kUHJveHlDb250cmFjdAQMZnVuY3Rpb25OYW1lAwkAAAIFA2RpcgIBMAIGbWludFBMAghyZWRlZW1QTAkA/AcEBQhwcm94eUFkcgUMZnVuY3Rpb25OYW1lCQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0QXNzZXRCeXRlcwEFBXQwU3RyBQZhbW91bnQFA25pbAEIc3dhcFBlcGUEBnBhcmFtcwV0MFN0cgV0MVN0cgZhbW91bnQEA2FycgkAtQkCBQZwYXJhbXMCAS0ECyR0MDI2NzUyNzI1CQCUCgIJAJEDAgUDYXJyAAAJAJEDAgUDYXJyAAEEDHBvb2xfYWRkcmVzcwgFCyR0MDI2NzUyNzI1Al8xBAtmdW5jdGlvblRhZwgFCyR0MDI2NzUyNzI1Al8yBAtzd2FwQWRkcmVzcwkBB0FkZHJlc3MBCQDZBAEFDHBvb2xfYWRkcmVzcwMJAAACBQtmdW5jdGlvblRhZwIBZAkA/AcEBQtzd2FwQWRkcmVzcwIHZGVwb3NpdAkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDWdldEFzc2V0Qnl0ZXMBBQV0MFN0cgUGYW1vdW50BQNuaWwDCQAAAgULZnVuY3Rpb25UYWcCAXcJAPwHBAULc3dhcEFkZHJlc3MCCHdpdGhkcmF3CQDMCAIFBXQxU3RyCQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0QXNzZXRCeXRlcwEFBXQwU3RyBQZhbW91bnQFA25pbAMJAAACBQtmdW5jdGlvblRhZwIBcwkA/AcEBQtzd2FwQWRkcmVzcwIEc3dhcAkAzAgCBQV0MVN0cgkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDWdldEFzc2V0Qnl0ZXMBBQV0MFN0cgUGYW1vdW50BQNuaWwJAAIBAiJVbmtub3duIGZ1bmN0aW9uIHRhZyBmb3IgcGVwZSBzd2FwAQxzd2FwSW50ZXJuYWwEAWkJcm91dGVzU3RyDG1pblRvUmVjZWl2ZQZyZWZLZXkECHNodXRkb3duCQELdmFsdWVPckVsc2UCCQCgCAECCHNodXRkb3duBwMFCHNodXRkb3duCQACAQIIc2h1dGRvd24KAQZkb1N3YXACBmFtb3VudARzd2FwBAZzd2FwTGkJALUJAgUEc3dhcAIBLAQLJHQwMzU1MDM2MzEJAJYKBAkAkQMCBQZzd2FwTGkAAAkAkQMCBQZzd2FwTGkAAQkAkQMCBQZzd2FwTGkAAgkAkQMCBQZzd2FwTGkAAwQEZEFwcAgFCyR0MDM1NTAzNjMxAl8xBAhkQXBwVHlwZQgFCyR0MDM1NTAzNjMxAl8yBAV0MFN0cggFCyR0MDM1NTAzNjMxAl8zBAV0MVN0cggFCyR0MDM1NTAzNjMxAl80BAJ0MAkBDWdldEFzc2V0Qnl0ZXMBBQV0MFN0cgQHYW1vdW50MAMJAQIhPQIFBmFtb3VudAAABQZhbW91bnQJAQpnZXRCYWxhbmNlAQUCdDAEAmkxAwkAAAIFCGRBcHBUeXBlAgZzd29wZmkJAPwHBAkBB0FkZHJlc3MBCQDZBAEFBGRBcHACCGV4Y2hhbmdlCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJ0MAUHYW1vdW50MAUDbmlsAwkAAAIFCGRBcHBUeXBlAgZwdXp6bGUEBHBvb2wJAQdBZGRyZXNzAQkA2QQBBQRkQXBwBA9pbmRleFRva2VuSWRTdHIJARF0cnlHZXRTdHJpbmdPdGhlcgICE2dsb2JhbF9wb29sVG9rZW5faWQFBHBvb2wDCQAAAgUFdDBTdHIFD2luZGV4VG9rZW5JZFN0cgkA/AcECQEHQWRkcmVzcwEJANkEAQUQcHpQb29sc0wyV3JhcHBlcgIQcmVkZWVtQXNPbmVUb2tlbgkAzAgCBQRkQXBwCQDMCAIFBXQxU3RyBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAnQwBQdhbW91bnQwBQNuaWwDCQAAAgUFdDFTdHIFD2luZGV4VG9rZW5JZFN0cgkA/AcECQEHQWRkcmVzcwEJANkEAQUQcHpQb29sc0wyV3JhcHBlcgIZZ2VuZXJhdGVJbmRleFdpdGhPbmVUb2tlbgkAzAgCBQRkQXBwBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAnQwBQdhbW91bnQwBQNuaWwJAPwHBAUEcG9vbAIEc3dhcAkAzAgCBQV0MVN0cgkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCdDAFB2Ftb3VudDAFA25pbAMJAAACBQhkQXBwVHlwZQICd3gJAQZzd2FwV1gDBQV0MFN0cgUFdDFTdHIFB2Ftb3VudDADCQAAAgUIZEFwcFR5cGUCBWxpbWl0CQEJc3dhcExpbWl0AwUEZEFwcAUFdDBTdHIFBXQxU3RyAwkAAAIFCGRBcHBUeXBlAgd0c3VuYW1pCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQt0c25Db250cmFjdAIEc3dhcAkAzAgCBQV0MVN0cgkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCdDAFB2Ftb3VudDAFA25pbAMJAAACBQhkQXBwVHlwZQIEbGVuZAkBCHN3YXBMZW5kBAUEZEFwcAUFdDBTdHIFBXQxU3RyBQdhbW91bnQwAwkAAAIFCGRBcHBUeXBlAgRwZXBlCQEIc3dhcFBlcGUEBQRkQXBwBQV0MFN0cgUFdDFTdHIFB2Ftb3VudDAJAAIBAitpbnRlcm5hbCBhZ2dyZWdhdG9yIGlzc3VlOiB1bmtub3cgcG9vbCB0eXBlAwkAAAIFAmkxBQJpMQAACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCgEHZG9Sb3V0ZQIFYWNjdW0Fcm91dGUECGFtb3VudEluCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCBQVyb3V0ZQIBLwAABAVzd2FwcwkAtQkCCQCRAwIJALUJAgUFcm91dGUCAS8AAQIBOwQLc3dhcHNSZXN1bHQKAAIkbAUFc3dhcHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQhhbW91bnRJbgoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEGZG9Td2FwAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyAzCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAwkAAAIFC3N3YXBzUmVzdWx0BQtzd2Fwc1Jlc3VsdAkAZAIFBWFjY3VtBQtzd2Fwc1Jlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQNc3BsaXR0ZWRSb3V0ZQkAtQkCCQCyAgIFCXJvdXRlc1N0cgAyAgEsBAlhc3NldDFTdHIJAJEDAgUNc3BsaXR0ZWRSb3V0ZQkAZQIJAJADAQUNc3BsaXR0ZWRSb3V0ZQABBAZhc3NldDEJAQ1nZXRBc3NldEJ5dGVzAQUJYXNzZXQxU3RyBAZyb3V0ZXMJALwJAgUJcm91dGVzU3RyAgF8BAVzd2FwcwoAAiRsBQZyb3V0ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2RvUm91dGUCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDQJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAMJAAACBQVzd2FwcwUFc3dhcHMECHRvdGFsT3V0CQEKZ2V0QmFsYW5jZQEFBmFzc2V0MQQJZmVlQW1vdW50CQBrAwUIdG90YWxPdXQAHQCQTgQQY2xlYW5Ub3RhbEFtb3VudAkAZQIFCHRvdGFsT3V0BQlmZWVBbW91bnQDCQBmAgUMbWluVG9SZWNlaXZlBRBjbGVhblRvdGFsQW1vdW50CQACAQkArAICCQCsAgIJAKwCAgJfYW1vdW50IHRvIHJlY2VpdmUgaXMgdG9vIGxvdy4gcGxlYXNlIHRyeSBhZ2FpbiB3aXRoIGFub3RoZXIgYW1vdW50IG9yIHdhaXQgMSBtaW51dGUuIGV4cGVjdGVkOiAJAKQDAQUMbWluVG9SZWNlaXZlAgcsIHJlYWwgCQCkAwEFEGNsZWFuVG90YWxBbW91bnQEB3VzZG5GZWUDCQAAAgUGYXNzZXQxBQZ1c2RuSWQFCWZlZUFtb3VudAQOcG9vbEFkZHJlc3NTdHIJAQx0cnlHZXRTdHJpbmcBCQCsAgIJAKwCAgINc3RhdGljX2Fzc2V0XwUJYXNzZXQxU3RyAgtfcHV6emxlUG9vbAMJAAACBQ5wb29sQWRkcmVzc1N0cgIAAAAEEXVzZG5CYWxhbmNlQmVmb3JlCQEKZ2V0QmFsYW5jZQEFBnVzZG5JZAMJAAACBRF1c2RuQmFsYW5jZUJlZm9yZQURdXNkbkJhbGFuY2VCZWZvcmUEDGNvbnZlcnRlZEZlZQkA/AcECQERQGV4dHJOYXRpdmUoMTA2MikBBQ5wb29sQWRkcmVzc1N0cgIEc3dhcAkAzAgCBQl1c2RuSWRTdHIJAMwIAgAABQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBmFzc2V0MQUJZmVlQW1vdW50BQNuaWwDCQAAAgUMY29udmVydGVkRmVlBQxjb252ZXJ0ZWRGZWUEEHVzZG5CYWxhbmNlQWZ0ZXIJAQpnZXRCYWxhbmNlAQUGdXNkbklkAwkAAAIFEHVzZG5CYWxhbmNlQWZ0ZXIFEHVzZG5CYWxhbmNlQWZ0ZXIJAGUCBRB1c2RuQmFsYW5jZUFmdGVyBRF1c2RuQmFsYW5jZUJlZm9yZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQd1c2RuRmVlBQd1c2RuRmVlBA9yZWZlcnJhbEFkZHJlc3MDCQAAAgUGcmVmS2V5AgRtdW5hCQEHQWRkcmVzcwEBGgFXnQyqxhNRqW7LgPdjfcFkeOLvck2oDLrTAwkAAAIFBnJlZktleQIGa2VlcGVyCQEHQWRkcmVzcwEBGgFX47bKEjTub0Zv8MqogOOLr3FN8V6ZrDv2AwkAAAIFBnJlZktleQIDdGNpCQEHQWRkcmVzcwEBGgFXTgSp9XKM3uf50lJK3bhrU0WMeqeaOH2cAwkBAiE9AgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQCsAgICBHJlZl8FBnJlZktleQIAAgAJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgIEcmVmXwUGcmVmS2V5CQEHQWRkcmVzcwEBGgFX/JoHcOFv3tGUISFteraNWNJCWHssByYSBAxyZWZVc2RuU2hhcmUDCQAAAgUGcmVmS2V5AgVub3JlZgAACQBrAwUHdXNkbkZlZQACAAoEBXRvcFVwAwkBAiE9AgUHdXNkbkZlZQAACQD8BwQJAQdBZGRyZXNzAQEaAVfAiq1zlCEzvbAYVg8otbk+QXfOv2/y/tcCC3RvcFVwUmV3YXJkBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBnVzZG5JZAkAZQIFB3VzZG5GZWUFDHJlZlVzZG5TaGFyZQUDbmlsBQR1bml0AwkAAAIFBXRvcFVwBQV0b3BVcAQGYXNzZXQwCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQEB2Ftb3VudDAJAGUCCQEKZ2V0QmFsYW5jZQEFBmFzc2V0MAMJAAACBQZhc3NldDAFBnVzZG5JZAUMcmVmVXNkblNoYXJlAAAEB2Ftb3VudDEJAGUCBRBjbGVhblRvdGFsQW1vdW50AwkAAAIFBmFzc2V0MQUGdXNkbklkBQxyZWZVc2RuU2hhcmUAAAkAzggCCQDOCAIJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFB2Ftb3VudDEFBmFzc2V0MQUDbmlsAwkBAiE9AgUMcmVmVXNkblNoYXJlAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUPcmVmZXJyYWxBZGRyZXNzBQxyZWZVc2RuU2hhcmUFBnVzZG5JZAUDbmlsBQNuaWwDCQECIT0CBQdhbW91bnQwAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQdhbW91bnQwBQZhc3NldDAFA25pbAUDbmlsAwkAAAIFB3VzZG5GZWUAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEBGgFXHuH7QDFrgebsS1YbBSxRoZNu3wmxPNLBBQlmZWVBbW91bnQFBmFzc2V0MQUDbmlsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FAWkBBHN3YXACCXJvdXRlc1N0cgxtaW5Ub1JlY2VpdmUJAQxzd2FwSW50ZXJuYWwEBQFpBQlyb3V0ZXNTdHIFDG1pblRvUmVjZWl2ZQIFbm9yZWYBaQEQc3dhcFdpdGhSZWZlcnJhbAMJcm91dGVzU3RyDG1pblRvUmVjZWl2ZQZyZWZLZXkJAQxzd2FwSW50ZXJuYWwEBQFpBQlyb3V0ZXNTdHIFDG1pblRvUmVjZWl2ZQUGcmVmS2V5AWkBEmFkZFRva2VuUHV6emxlUG9vbAIKYXNzZXRJZFN0cg5wb29sQWRkcmVzc1N0cgMJAQIhPQIIBQFpBmNhbGxlcgkBB0FkZHJlc3MBARoBV9fhI1GOfKuIWtXXKJd12Ih104+uIwWm4QkAAgECCmFkbWluIG9ubHkJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgICDXN0YXRpY19hc3NldF8FCmFzc2V0SWRTdHICC19wdXp6bGVQb29sBQ5wb29sQWRkcmVzc1N0cgUDbmlsAWkBDmFkZFJlZmVycmFsS2V5AgZyZWZLZXkKYWRkcmVzc1N0cgMJAQIhPQIIBQFpBmNhbGxlcgkBB0FkZHJlc3MBARoBV9fhI1GOfKuIWtXXKJd12Ih104+uIwWm4QkAAgECCmFkbWluIG9ubHkJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICAgRyZWZfBQZyZWZLZXkFCmFkZHJlc3NTdHIFA25pbAFpAQhzaHV0ZG93bgEDdmFsAwkBAiE9AggFAWkGY2FsbGVyCQEHQWRkcmVzcwEBGgFX1+EjUY58q4ha1dcol3XYiHXTj64jBabhCQACAQIHd2wgb25seQkAzAgCCQEMQm9vbGVhbkVudHJ5AgIIc2h1dGRvd24FA3ZhbAUDbmlsAQJ0eAEGdmVyaWZ5AAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleWZxhbE=", "height": 4004123, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: C4BM4Vy9zFahdRf7NbNC4oeFTuLzdXsy2CDAJbz2gTxd Next: GBER5yJQgqoSJBhehtohmhztkkRRZ6JYJ4dRd7KXCExd Diff:
OldNewDifferences
1111
1212 let lendProxyContract = "3PGxMZtMnNT9pJCvXxXV4LzKqXsjvQ9XpfR"
1313
14+let pzPoolsL2Wrapper = "3PFtWqmN8kUiYaAataR1mMXKNEGohWkKBcB"
15+
1416 func tryGetString (key) = match getString(this, key) {
17+ case b: String =>
18+ b
19+ case _ =>
20+ ""
21+}
22+
23+
24+func tryGetStringOther (key,address) = match getString(address, key) {
1525 case b: String =>
1626 b
1727 case _ =>
4050 }
4151
4252
43-func swapLimit (params,t0Str,t1Str,balanceBefore) = {
53+func swapWX (asset0,asset1,amount0) = {
54+ let asset1BalanceBefore = getBalance(getAssetBytes(asset1))
55+ if ((asset1BalanceBefore == asset1BalanceBefore))
56+ then {
57+ let inv1 = invoke(Address(base58'3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93'), "swap", [1, asset1, toString(this)], [AttachedPayment(getAssetBytes(asset0), amount0)])
58+ if ((inv1 == inv1))
59+ then {
60+ let amount1 = (getBalance(getAssetBytes(asset1)) - asset1BalanceBefore)
61+ if ((amount1 == amount1))
62+ then amount1
63+ else throw("Strict value is not equal to itself.")
64+ }
65+ else throw("Strict value is not equal to itself.")
66+ }
67+ else throw("Strict value is not equal to itself.")
68+ }
69+
70+
71+func swapLimit (params,t0Str,t1Str) = {
4472 func doLimit (asset,orderParams) = {
4573 let ord = split(orderParams, ">")
46- let $t011811226 = $Tuple2(ord[0], ord[1])
47- let orderId = $t011811226._1
48- let orderAmount = $t011811226._2
49- let balanceActual = (getBalance(getAssetBytes(t0Str)) - balanceBefore)
50- if ((balanceActual == balanceActual))
51- then {
52- let inv = invoke(Address(fromBase58String(limitContract)), "fulfillOrder", [orderId], [AttachedPayment(asset, balanceActual)])
53- if ((inv == inv))
54- then asset
55- else throw("Strict value is not equal to itself.")
56- }
74+ let $t017641809 = $Tuple2(ord[0], ord[1])
75+ let orderId = $t017641809._1
76+ let orderAmount = $t017641809._2
77+ let inv = invoke(Address(fromBase58String(limitContract)), "fulfillOrder", [orderId], [AttachedPayment(asset, parseIntValue(orderAmount))])
78+ if ((inv == inv))
79+ then asset
5780 else throw("Strict value is not equal to itself.")
5881 }
5982
81104
82105 func swapLend (params,t0Str,t1Str,amount) = {
83106 let arr = split(params, "-")
84- let $t017231780 = $Tuple3(arr[0], arr[1], arr[2])
85- let pool_address = $t017231780._1
86- let asset = $t017231780._2
87- let dir = $t017231780._3
107+ let $t022382295 = $Tuple3(arr[0], arr[1], arr[2])
108+ let pool_address = $t022382295._1
109+ let asset = $t022382295._2
110+ let dir = $t022382295._3
88111 let proxyAdr = Address(fromBase58String(lendProxyContract))
89112 let functionName = if ((dir == "0"))
90113 then "mintPL"
95118
96119 func swapPepe (params,t0Str,t1Str,amount) = {
97120 let arr = split(params, "-")
98- let $t021602210 = $Tuple2(arr[0], arr[1])
99- let pool_address = $t021602210._1
100- let functionTag = $t021602210._2
121+ let $t026752725 = $Tuple2(arr[0], arr[1])
122+ let pool_address = $t026752725._1
123+ let functionTag = $t026752725._2
101124 let swapAddress = Address(fromBase58String(pool_address))
102125 if ((functionTag == "d"))
103126 then invoke(swapAddress, "deposit", [0], [AttachedPayment(getAssetBytes(t0Str), amount)])
113136 let shutdown = valueOrElse(getBoolean("shutdown"), false)
114137 if (shutdown)
115138 then throw("shutdown")
116- else if ((size(i.payments) > 1))
117- then throw("only one payment should be attached")
118- else {
119- let payAssetStr = getAssetString(i.payments[0].assetId)
120- let payAmount = i.payments[0].amount
121- func f1 (accum2,next) = {
122- let swapElements = split(next, ",")
123- let t1 = if ((indexOf(accum2, swapElements[2]) == unit))
124- then (accum2 :+ swapElements[2])
125- else accum2
126- let t2 = if ((indexOf(accum2, swapElements[3]) == unit))
127- then (t1 :+ swapElements[3])
128- else t1
129- t2
130- }
139+ else {
140+ func doSwap (amount,swap) = {
141+ let swapLi = split(swap, ",")
142+ let $t035503631 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
143+ let dApp = $t035503631._1
144+ let dAppType = $t035503631._2
145+ let t0Str = $t035503631._3
146+ let t1Str = $t035503631._4
147+ let t0 = getAssetBytes(t0Str)
148+ let amount0 = if ((amount != 0))
149+ then amount
150+ else getBalance(t0)
151+ let i1 = if ((dAppType == "swopfi"))
152+ then invoke(Address(fromBase58String(dApp)), "exchange", [1], [AttachedPayment(t0, amount0)])
153+ else if ((dAppType == "puzzle"))
154+ then {
155+ let pool = Address(fromBase58String(dApp))
156+ let indexTokenIdStr = tryGetStringOther("global_poolToken_id", pool)
157+ if ((t0Str == indexTokenIdStr))
158+ then invoke(Address(fromBase58String(pzPoolsL2Wrapper)), "redeemAsOneToken", [dApp, t1Str], [AttachedPayment(t0, amount0)])
159+ else if ((t1Str == indexTokenIdStr))
160+ then invoke(Address(fromBase58String(pzPoolsL2Wrapper)), "generateIndexWithOneToken", [dApp], [AttachedPayment(t0, amount0)])
161+ else invoke(pool, "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
162+ }
163+ else if ((dAppType == "wx"))
164+ then swapWX(t0Str, t1Str, amount0)
165+ else if ((dAppType == "limit"))
166+ then swapLimit(dApp, t0Str, t1Str)
167+ else if ((dAppType == "tsunami"))
168+ then invoke(Address(fromBase58String(tsnContract)), "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
169+ else if ((dAppType == "lend"))
170+ then swapLend(dApp, t0Str, t1Str, amount0)
171+ else if ((dAppType == "pepe"))
172+ then swapPepe(dApp, t0Str, t1Str, amount0)
173+ else throw("internal aggregator issue: unknow pool type")
174+ if ((i1 == i1))
175+ then 0
176+ else throw("Strict value is not equal to itself.")
177+ }
131178
132- func extractAssets (accum,next) = {
133- let r1 = split(next, "/")
134- let data = r1[1]
135- let swaps = split(data, ";")
136- (accum ++ {
137- let $l = swaps
138- let $s = size($l)
139- let $acc0 = accum
140- func $f0_1 ($a,$i) = if (($i >= $s))
141- then $a
142- else f1($a, $l[$i])
143-
144- func $f0_2 ($a,$i) = if (($i >= $s))
145- then $a
146- else throw("List size exceeds 20")
147-
148- $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($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), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
149- })
150- }
151-
152- func getBalances (accum,next) = {
153- let balance = if ((next != payAssetStr))
154- then getBalance(getAssetBytes(next))
155- else (getBalance(getAssetBytes(next)) - payAmount)
156- (accum :+ balance)
157- }
158-
159- let routes = split_4C(routesStr, "|")
160- let affectedAssetsLi = {
161- let $l = routes
179+ func doRoute (accum,route) = {
180+ let amountIn = parseIntValue(split(route, "/")[0])
181+ let swaps = split(split(route, "/")[1], ";")
182+ let swapsResult = {
183+ let $l = swaps
162184 let $s = size($l)
163- let $acc0 = nil
185+ let $acc0 = amountIn
164186 func $f0_1 ($a,$i) = if (($i >= $s))
165187 then $a
166- else extractAssets($a, $l[$i])
188+ else doSwap($a, $l[$i])
167189
168190 func $f0_2 ($a,$i) = if (($i >= $s))
169191 then $a
170- else throw("List size exceeds 10")
192+ else throw("List size exceeds 3")
171193
172- $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)
194+ $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3)
173195 }
174- let balancesBefore = {
175- let $l = affectedAssetsLi
176- let $s = size($l)
177- let $acc0 = nil
178- func $f1_1 ($a,$i) = if (($i >= $s))
179- then $a
180- else getBalances($a, $l[$i])
196+ if ((swapsResult == swapsResult))
197+ then (accum + swapsResult)
198+ else throw("Strict value is not equal to itself.")
199+ }
181200
182- func $f1_2 ($a,$i) = if (($i >= $s))
183- then $a
184- else throw("List size exceeds 20")
201+ let splittedRoute = split(takeRight(routesStr, 50), ",")
202+ let asset1Str = splittedRoute[(size(splittedRoute) - 1)]
203+ let asset1 = getAssetBytes(asset1Str)
204+ let routes = split_4C(routesStr, "|")
205+ let swaps = {
206+ let $l = routes
207+ let $s = size($l)
208+ let $acc0 = 0
209+ func $f0_1 ($a,$i) = if (($i >= $s))
210+ then $a
211+ else doRoute($a, $l[$i])
185212
186- $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($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), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
187- }
188- if ((balancesBefore == balancesBefore))
189- then {
190- func doSwap (amount,swap) = {
191- let swapLi = split(swap, ",")
192- let $t045184599 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
193- let dApp = $t045184599._1
194- let dAppType = $t045184599._2
195- let t0Str = $t045184599._3
196- let t1Str = $t045184599._4
197- let t0 = getAssetBytes(t0Str)
198- let t0Index = valueOrErrorMessage(indexOf(affectedAssetsLi, t0Str), "Invalid asset d0001")
199- let t0BalanceBefore = balancesBefore[t0Index]
200- let amount0 = if ((amount != 0))
201- then amount
202- else (getBalance(t0) - t0BalanceBefore)
203- let i1 = if ((dAppType == "swopfi"))
204- then invoke(Address(fromBase58String(dApp)), "exchange", [1], [AttachedPayment(t0, amount0)])
205- else if ((dAppType == "puzzle"))
206- then invoke(Address(fromBase58String(dApp)), "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
207- else if ((dAppType == "wx"))
208- then invoke(Address(base58'3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93'), "swap", [1, t1Str, toString(this)], [AttachedPayment(t0, amount0)])
209- else if ((dAppType == "limit"))
210- then swapLimit(dApp, t0Str, t1Str, t0BalanceBefore)
211- else if ((dAppType == "tsunami"))
212- then invoke(Address(fromBase58String(tsnContract)), "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
213- else if ((dAppType == "lend"))
214- then swapLend(dApp, t0Str, t1Str, amount0)
215- else if ((dAppType == "pepe"))
216- then swapPepe(dApp, t0Str, t1Str, amount0)
217- else throw("internal aggregator issue: unknow pool type")
218- if ((i1 == i1))
219- then 0
213+ func $f0_2 ($a,$i) = if (($i >= $s))
214+ then $a
215+ else throw("List size exceeds 4")
216+
217+ $f0_2($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4)
218+ }
219+ if ((swaps == swaps))
220+ then {
221+ let totalOut = getBalance(asset1)
222+ let feeAmount = fraction(totalOut, 29, 10000)
223+ let cleanTotalAmount = (totalOut - feeAmount)
224+ if ((minToReceive > cleanTotalAmount))
225+ then throw(((("amount to receive is too low. please try again with another amount or wait 1 minute. expected: " + toString(minToReceive)) + ", real ") + toString(cleanTotalAmount)))
226+ else {
227+ let usdnFee = if ((asset1 == usdnId))
228+ then feeAmount
229+ else {
230+ let poolAddressStr = tryGetString((("static_asset_" + asset1Str) + "_puzzlePool"))
231+ if ((poolAddressStr == ""))
232+ then 0
233+ else {
234+ let usdnBalanceBefore = getBalance(usdnId)
235+ if ((usdnBalanceBefore == usdnBalanceBefore))
236+ then {
237+ let convertedFee = invoke(addressFromStringValue(poolAddressStr), "swap", [usdnIdStr, 0], [AttachedPayment(asset1, feeAmount)])
238+ if ((convertedFee == convertedFee))
239+ then {
240+ let usdnBalanceAfter = getBalance(usdnId)
241+ if ((usdnBalanceAfter == usdnBalanceAfter))
242+ then (usdnBalanceAfter - usdnBalanceBefore)
243+ else throw("Strict value is not equal to itself.")
244+ }
245+ else throw("Strict value is not equal to itself.")
246+ }
247+ else throw("Strict value is not equal to itself.")
248+ }
249+ }
250+ if ((usdnFee == usdnFee))
251+ then {
252+ let referralAddress = if ((refKey == "muna"))
253+ then Address(base58'3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU')
254+ else if ((refKey == "keeper"))
255+ then Address(base58'3PNgw6Db2TGUQbjnV7ekve6q126xBC1e7eM')
256+ else if ((refKey == "tci"))
257+ then Address(base58'3P93R2GBkTGVehRPhytHr7sdxYww93jkbhm')
258+ else if ((valueOrElse(getString(this, ("ref_" + refKey)), "") != ""))
259+ then addressFromStringValue(getStringValue(this, ("ref_" + refKey)))
260+ else Address(base58'3PQxXXiQXpWsjDwQLYxyuoPiaLnVHjJguFo')
261+ let refUsdnShare = if ((refKey == "noref"))
262+ then 0
263+ else fraction(usdnFee, 2, 10)
264+ let topUp = if ((usdnFee != 0))
265+ then invoke(Address(base58'3PKUxbZaSYfsR7wu2HaAgiirHYwAMupDrYW'), "topUpReward", nil, [AttachedPayment(usdnId, (usdnFee - refUsdnShare))])
266+ else unit
267+ if ((topUp == topUp))
268+ then {
269+ let asset0 = i.payments[0].assetId
270+ let amount0 = (getBalance(asset0) - (if ((asset0 == usdnId))
271+ then refUsdnShare
272+ else 0))
273+ let amount1 = (cleanTotalAmount - (if ((asset1 == usdnId))
274+ then refUsdnShare
275+ else 0))
276+ ((([ScriptTransfer(i.caller, amount1, asset1)] ++ (if ((refUsdnShare != 0))
277+ then [ScriptTransfer(referralAddress, refUsdnShare, usdnId)]
278+ else nil)) ++ (if ((amount0 != 0))
279+ then [ScriptTransfer(i.caller, amount0, asset0)]
280+ else nil)) ++ (if ((usdnFee == 0))
281+ then [ScriptTransfer(Address(base58'3P4kBiU4wr2yV1S5gMfu3MdkVvy7kxXHsKe'), feeAmount, asset1)]
282+ else nil))
283+ }
284+ else throw("Strict value is not equal to itself.")
285+ }
220286 else throw("Strict value is not equal to itself.")
221287 }
222-
223- func doRoute (accum,route) = {
224- let amountIn = parseIntValue(split(route, "/")[0])
225- let swaps = split(split(route, "/")[1], ";")
226- let swapsResult = {
227- let $l = swaps
228- let $s = size($l)
229- let $acc0 = amountIn
230- func $f2_1 ($a,$i) = if (($i >= $s))
231- then $a
232- else doSwap($a, $l[$i])
233-
234- func $f2_2 ($a,$i) = if (($i >= $s))
235- then $a
236- else throw("List size exceeds 3")
237-
238- $f2_2($f2_1($f2_1($f2_1($acc0, 0), 1), 2), 3)
239- }
240- if ((swapsResult == swapsResult))
241- then (accum + swapsResult)
242- else throw("Strict value is not equal to itself.")
243- }
244-
245- let splittedRoute = split(takeRight(routesStr, 50), ",")
246- let asset1Str = splittedRoute[(size(splittedRoute) - 1)]
247- let asset1 = getAssetBytes(asset1Str)
248- let swaps = {
249- let $l = routes
250- let $s = size($l)
251- let $acc0 = 0
252- func $f2_1 ($a,$i) = if (($i >= $s))
253- then $a
254- else doRoute($a, $l[$i])
255-
256- func $f2_2 ($a,$i) = if (($i >= $s))
257- then $a
258- else throw("List size exceeds 4")
259-
260- $f2_2($f2_1($f2_1($f2_1($f2_1($acc0, 0), 1), 2), 3), 4)
261- }
262- if ((swaps == swaps))
263- then {
264- let totalOut = (getBalance(asset1) - balancesBefore[valueOrErrorMessage(indexOf(affectedAssetsLi, asset1Str), "Invalid asset d0002")])
265- let feeAmount = fraction(totalOut, 29, 10000)
266- let cleanTotalAmount = (totalOut - feeAmount)
267- if ((minToReceive > cleanTotalAmount))
268- then throw(((("amount to receive is too low. please try again with another amount or wait 1 minute. expected: " + toString(minToReceive)) + ", real ") + toString(cleanTotalAmount)))
269- else {
270- let usdnFee = if ((asset1 == usdnId))
271- then feeAmount
272- else {
273- let poolAddressStr = tryGetString((("static_asset_" + asset1Str) + "_puzzlePool"))
274- if ((poolAddressStr == ""))
275- then 0
276- else {
277- let usdnBalanceBefore = getBalance(usdnId)
278- if ((usdnBalanceBefore == usdnBalanceBefore))
279- then {
280- let convertedFee = invoke(addressFromStringValue(poolAddressStr), "swap", [usdnIdStr, 0], [AttachedPayment(asset1, feeAmount)])
281- if ((convertedFee == convertedFee))
282- then {
283- let usdnBalanceAfter = getBalance(usdnId)
284- if ((usdnBalanceAfter == usdnBalanceAfter))
285- then (usdnBalanceAfter - usdnBalanceBefore)
286- else throw("Strict value is not equal to itself.")
287- }
288- else throw("Strict value is not equal to itself.")
289- }
290- else throw("Strict value is not equal to itself.")
291- }
292- }
293- if ((usdnFee == usdnFee))
294- then {
295- let referralAddress = if ((refKey == "muna"))
296- then Address(base58'3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU')
297- else if ((refKey == "keeper"))
298- then Address(base58'3PNgw6Db2TGUQbjnV7ekve6q126xBC1e7eM')
299- else if ((refKey == "tci"))
300- then Address(base58'3P93R2GBkTGVehRPhytHr7sdxYww93jkbhm')
301- else if ((valueOrElse(getString(this, ("ref_" + refKey)), "") != ""))
302- then addressFromStringValue(getStringValue(this, ("ref_" + refKey)))
303- else Address(base58'3PQxXXiQXpWsjDwQLYxyuoPiaLnVHjJguFo')
304- let refUsdnShare = if ((refKey == "noref"))
305- then 0
306- else fraction(usdnFee, 2, 10)
307- let topUp = if ((usdnFee != 0))
308- then invoke(Address(base58'3PKUxbZaSYfsR7wu2HaAgiirHYwAMupDrYW'), "topUpReward", nil, [AttachedPayment(usdnId, (usdnFee - refUsdnShare))])
309- else unit
310- if ((topUp == topUp))
311- then {
312- let asset0 = i.payments[0].assetId
313- let amount0 = ((getBalance(asset0) - (if ((asset0 == usdnId))
314- then refUsdnShare
315- else 0)) - balancesBefore[valueOrErrorMessage(indexOf(affectedAssetsLi, payAssetStr), "Invalid asset d0003")])
316- let amount1 = (cleanTotalAmount - (if ((asset1 == usdnId))
317- then refUsdnShare
318- else 0))
319- ((([ScriptTransfer(i.caller, amount1, asset1)] ++ (if ((refUsdnShare != 0))
320- then [ScriptTransfer(referralAddress, refUsdnShare, usdnId)]
321- else nil)) ++ (if ((amount0 != 0))
322- then [ScriptTransfer(i.caller, amount0, asset0)]
323- else nil)) ++ (if ((usdnFee == 0))
324- then [ScriptTransfer(Address(base58'3P4kBiU4wr2yV1S5gMfu3MdkVvy7kxXHsKe'), feeAmount, asset1)]
325- else nil))
326- }
327- else throw("Strict value is not equal to itself.")
328- }
329- else throw("Strict value is not equal to itself.")
330- }
331- }
332- else throw("Strict value is not equal to itself.")
333- }
334- else throw("Strict value is not equal to itself.")
335- }
288+ }
289+ else throw("Strict value is not equal to itself.")
290+ }
336291 }
337292
338293
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 let limitContract = "3PFB6LJyShsCKEA1AU1U1WLbDazqyj6ZL9b"
99
1010 let tsnContract = "3PKz5jnJLohF2GjShQ7bG5H4BebdoA98zZ2"
1111
1212 let lendProxyContract = "3PGxMZtMnNT9pJCvXxXV4LzKqXsjvQ9XpfR"
1313
14+let pzPoolsL2Wrapper = "3PFtWqmN8kUiYaAataR1mMXKNEGohWkKBcB"
15+
1416 func tryGetString (key) = match getString(this, key) {
17+ case b: String =>
18+ b
19+ case _ =>
20+ ""
21+}
22+
23+
24+func tryGetStringOther (key,address) = match getString(address, key) {
1525 case b: String =>
1626 b
1727 case _ =>
1828 ""
1929 }
2030
2131
2232 func getAssetString (assetId) = match assetId {
2333 case b: ByteVector =>
2434 toBase58String(b)
2535 case _ =>
2636 "WAVES"
2737 }
2838
2939
3040 func getAssetBytes (assetIdStr) = if ((assetIdStr == "WAVES"))
3141 then unit
3242 else fromBase58String(assetIdStr)
3343
3444
3545 func getBalance (assetId) = match assetId {
3646 case x: Unit =>
3747 wavesBalance(this).available
3848 case _ =>
3949 assetBalance(this, value(assetId))
4050 }
4151
4252
43-func swapLimit (params,t0Str,t1Str,balanceBefore) = {
53+func swapWX (asset0,asset1,amount0) = {
54+ let asset1BalanceBefore = getBalance(getAssetBytes(asset1))
55+ if ((asset1BalanceBefore == asset1BalanceBefore))
56+ then {
57+ let inv1 = invoke(Address(base58'3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93'), "swap", [1, asset1, toString(this)], [AttachedPayment(getAssetBytes(asset0), amount0)])
58+ if ((inv1 == inv1))
59+ then {
60+ let amount1 = (getBalance(getAssetBytes(asset1)) - asset1BalanceBefore)
61+ if ((amount1 == amount1))
62+ then amount1
63+ else throw("Strict value is not equal to itself.")
64+ }
65+ else throw("Strict value is not equal to itself.")
66+ }
67+ else throw("Strict value is not equal to itself.")
68+ }
69+
70+
71+func swapLimit (params,t0Str,t1Str) = {
4472 func doLimit (asset,orderParams) = {
4573 let ord = split(orderParams, ">")
46- let $t011811226 = $Tuple2(ord[0], ord[1])
47- let orderId = $t011811226._1
48- let orderAmount = $t011811226._2
49- let balanceActual = (getBalance(getAssetBytes(t0Str)) - balanceBefore)
50- if ((balanceActual == balanceActual))
51- then {
52- let inv = invoke(Address(fromBase58String(limitContract)), "fulfillOrder", [orderId], [AttachedPayment(asset, balanceActual)])
53- if ((inv == inv))
54- then asset
55- else throw("Strict value is not equal to itself.")
56- }
74+ let $t017641809 = $Tuple2(ord[0], ord[1])
75+ let orderId = $t017641809._1
76+ let orderAmount = $t017641809._2
77+ let inv = invoke(Address(fromBase58String(limitContract)), "fulfillOrder", [orderId], [AttachedPayment(asset, parseIntValue(orderAmount))])
78+ if ((inv == inv))
79+ then asset
5780 else throw("Strict value is not equal to itself.")
5881 }
5982
6083 let ordersLi = split(params, ":")
6184 let t0 = getAssetBytes(t0Str)
6285 let result = {
6386 let $l = ordersLi
6487 let $s = size($l)
6588 let $acc0 = t0
6689 func $f0_1 ($a,$i) = if (($i >= $s))
6790 then $a
6891 else doLimit($a, $l[$i])
6992
7093 func $f0_2 ($a,$i) = if (($i >= $s))
7194 then $a
7295 else throw("List size exceeds 10")
7396
7497 $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)
7598 }
7699 if ((result == result))
77100 then 0
78101 else throw("Strict value is not equal to itself.")
79102 }
80103
81104
82105 func swapLend (params,t0Str,t1Str,amount) = {
83106 let arr = split(params, "-")
84- let $t017231780 = $Tuple3(arr[0], arr[1], arr[2])
85- let pool_address = $t017231780._1
86- let asset = $t017231780._2
87- let dir = $t017231780._3
107+ let $t022382295 = $Tuple3(arr[0], arr[1], arr[2])
108+ let pool_address = $t022382295._1
109+ let asset = $t022382295._2
110+ let dir = $t022382295._3
88111 let proxyAdr = Address(fromBase58String(lendProxyContract))
89112 let functionName = if ((dir == "0"))
90113 then "mintPL"
91114 else "redeemPL"
92115 invoke(proxyAdr, functionName, [0], [AttachedPayment(getAssetBytes(t0Str), amount)])
93116 }
94117
95118
96119 func swapPepe (params,t0Str,t1Str,amount) = {
97120 let arr = split(params, "-")
98- let $t021602210 = $Tuple2(arr[0], arr[1])
99- let pool_address = $t021602210._1
100- let functionTag = $t021602210._2
121+ let $t026752725 = $Tuple2(arr[0], arr[1])
122+ let pool_address = $t026752725._1
123+ let functionTag = $t026752725._2
101124 let swapAddress = Address(fromBase58String(pool_address))
102125 if ((functionTag == "d"))
103126 then invoke(swapAddress, "deposit", [0], [AttachedPayment(getAssetBytes(t0Str), amount)])
104127 else if ((functionTag == "w"))
105128 then invoke(swapAddress, "withdraw", [t1Str, 0], [AttachedPayment(getAssetBytes(t0Str), amount)])
106129 else if ((functionTag == "s"))
107130 then invoke(swapAddress, "swap", [t1Str, 0], [AttachedPayment(getAssetBytes(t0Str), amount)])
108131 else throw("Unknown function tag for pepe swap")
109132 }
110133
111134
112135 func swapInternal (i,routesStr,minToReceive,refKey) = {
113136 let shutdown = valueOrElse(getBoolean("shutdown"), false)
114137 if (shutdown)
115138 then throw("shutdown")
116- else if ((size(i.payments) > 1))
117- then throw("only one payment should be attached")
118- else {
119- let payAssetStr = getAssetString(i.payments[0].assetId)
120- let payAmount = i.payments[0].amount
121- func f1 (accum2,next) = {
122- let swapElements = split(next, ",")
123- let t1 = if ((indexOf(accum2, swapElements[2]) == unit))
124- then (accum2 :+ swapElements[2])
125- else accum2
126- let t2 = if ((indexOf(accum2, swapElements[3]) == unit))
127- then (t1 :+ swapElements[3])
128- else t1
129- t2
130- }
139+ else {
140+ func doSwap (amount,swap) = {
141+ let swapLi = split(swap, ",")
142+ let $t035503631 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
143+ let dApp = $t035503631._1
144+ let dAppType = $t035503631._2
145+ let t0Str = $t035503631._3
146+ let t1Str = $t035503631._4
147+ let t0 = getAssetBytes(t0Str)
148+ let amount0 = if ((amount != 0))
149+ then amount
150+ else getBalance(t0)
151+ let i1 = if ((dAppType == "swopfi"))
152+ then invoke(Address(fromBase58String(dApp)), "exchange", [1], [AttachedPayment(t0, amount0)])
153+ else if ((dAppType == "puzzle"))
154+ then {
155+ let pool = Address(fromBase58String(dApp))
156+ let indexTokenIdStr = tryGetStringOther("global_poolToken_id", pool)
157+ if ((t0Str == indexTokenIdStr))
158+ then invoke(Address(fromBase58String(pzPoolsL2Wrapper)), "redeemAsOneToken", [dApp, t1Str], [AttachedPayment(t0, amount0)])
159+ else if ((t1Str == indexTokenIdStr))
160+ then invoke(Address(fromBase58String(pzPoolsL2Wrapper)), "generateIndexWithOneToken", [dApp], [AttachedPayment(t0, amount0)])
161+ else invoke(pool, "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
162+ }
163+ else if ((dAppType == "wx"))
164+ then swapWX(t0Str, t1Str, amount0)
165+ else if ((dAppType == "limit"))
166+ then swapLimit(dApp, t0Str, t1Str)
167+ else if ((dAppType == "tsunami"))
168+ then invoke(Address(fromBase58String(tsnContract)), "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
169+ else if ((dAppType == "lend"))
170+ then swapLend(dApp, t0Str, t1Str, amount0)
171+ else if ((dAppType == "pepe"))
172+ then swapPepe(dApp, t0Str, t1Str, amount0)
173+ else throw("internal aggregator issue: unknow pool type")
174+ if ((i1 == i1))
175+ then 0
176+ else throw("Strict value is not equal to itself.")
177+ }
131178
132- func extractAssets (accum,next) = {
133- let r1 = split(next, "/")
134- let data = r1[1]
135- let swaps = split(data, ";")
136- (accum ++ {
137- let $l = swaps
138- let $s = size($l)
139- let $acc0 = accum
140- func $f0_1 ($a,$i) = if (($i >= $s))
141- then $a
142- else f1($a, $l[$i])
143-
144- func $f0_2 ($a,$i) = if (($i >= $s))
145- then $a
146- else throw("List size exceeds 20")
147-
148- $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($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), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
149- })
150- }
151-
152- func getBalances (accum,next) = {
153- let balance = if ((next != payAssetStr))
154- then getBalance(getAssetBytes(next))
155- else (getBalance(getAssetBytes(next)) - payAmount)
156- (accum :+ balance)
157- }
158-
159- let routes = split_4C(routesStr, "|")
160- let affectedAssetsLi = {
161- let $l = routes
179+ func doRoute (accum,route) = {
180+ let amountIn = parseIntValue(split(route, "/")[0])
181+ let swaps = split(split(route, "/")[1], ";")
182+ let swapsResult = {
183+ let $l = swaps
162184 let $s = size($l)
163- let $acc0 = nil
185+ let $acc0 = amountIn
164186 func $f0_1 ($a,$i) = if (($i >= $s))
165187 then $a
166- else extractAssets($a, $l[$i])
188+ else doSwap($a, $l[$i])
167189
168190 func $f0_2 ($a,$i) = if (($i >= $s))
169191 then $a
170- else throw("List size exceeds 10")
192+ else throw("List size exceeds 3")
171193
172- $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)
194+ $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3)
173195 }
174- let balancesBefore = {
175- let $l = affectedAssetsLi
176- let $s = size($l)
177- let $acc0 = nil
178- func $f1_1 ($a,$i) = if (($i >= $s))
179- then $a
180- else getBalances($a, $l[$i])
196+ if ((swapsResult == swapsResult))
197+ then (accum + swapsResult)
198+ else throw("Strict value is not equal to itself.")
199+ }
181200
182- func $f1_2 ($a,$i) = if (($i >= $s))
183- then $a
184- else throw("List size exceeds 20")
201+ let splittedRoute = split(takeRight(routesStr, 50), ",")
202+ let asset1Str = splittedRoute[(size(splittedRoute) - 1)]
203+ let asset1 = getAssetBytes(asset1Str)
204+ let routes = split_4C(routesStr, "|")
205+ let swaps = {
206+ let $l = routes
207+ let $s = size($l)
208+ let $acc0 = 0
209+ func $f0_1 ($a,$i) = if (($i >= $s))
210+ then $a
211+ else doRoute($a, $l[$i])
185212
186- $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($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), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
187- }
188- if ((balancesBefore == balancesBefore))
189- then {
190- func doSwap (amount,swap) = {
191- let swapLi = split(swap, ",")
192- let $t045184599 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
193- let dApp = $t045184599._1
194- let dAppType = $t045184599._2
195- let t0Str = $t045184599._3
196- let t1Str = $t045184599._4
197- let t0 = getAssetBytes(t0Str)
198- let t0Index = valueOrErrorMessage(indexOf(affectedAssetsLi, t0Str), "Invalid asset d0001")
199- let t0BalanceBefore = balancesBefore[t0Index]
200- let amount0 = if ((amount != 0))
201- then amount
202- else (getBalance(t0) - t0BalanceBefore)
203- let i1 = if ((dAppType == "swopfi"))
204- then invoke(Address(fromBase58String(dApp)), "exchange", [1], [AttachedPayment(t0, amount0)])
205- else if ((dAppType == "puzzle"))
206- then invoke(Address(fromBase58String(dApp)), "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
207- else if ((dAppType == "wx"))
208- then invoke(Address(base58'3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93'), "swap", [1, t1Str, toString(this)], [AttachedPayment(t0, amount0)])
209- else if ((dAppType == "limit"))
210- then swapLimit(dApp, t0Str, t1Str, t0BalanceBefore)
211- else if ((dAppType == "tsunami"))
212- then invoke(Address(fromBase58String(tsnContract)), "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
213- else if ((dAppType == "lend"))
214- then swapLend(dApp, t0Str, t1Str, amount0)
215- else if ((dAppType == "pepe"))
216- then swapPepe(dApp, t0Str, t1Str, amount0)
217- else throw("internal aggregator issue: unknow pool type")
218- if ((i1 == i1))
219- then 0
213+ func $f0_2 ($a,$i) = if (($i >= $s))
214+ then $a
215+ else throw("List size exceeds 4")
216+
217+ $f0_2($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4)
218+ }
219+ if ((swaps == swaps))
220+ then {
221+ let totalOut = getBalance(asset1)
222+ let feeAmount = fraction(totalOut, 29, 10000)
223+ let cleanTotalAmount = (totalOut - feeAmount)
224+ if ((minToReceive > cleanTotalAmount))
225+ then throw(((("amount to receive is too low. please try again with another amount or wait 1 minute. expected: " + toString(minToReceive)) + ", real ") + toString(cleanTotalAmount)))
226+ else {
227+ let usdnFee = if ((asset1 == usdnId))
228+ then feeAmount
229+ else {
230+ let poolAddressStr = tryGetString((("static_asset_" + asset1Str) + "_puzzlePool"))
231+ if ((poolAddressStr == ""))
232+ then 0
233+ else {
234+ let usdnBalanceBefore = getBalance(usdnId)
235+ if ((usdnBalanceBefore == usdnBalanceBefore))
236+ then {
237+ let convertedFee = invoke(addressFromStringValue(poolAddressStr), "swap", [usdnIdStr, 0], [AttachedPayment(asset1, feeAmount)])
238+ if ((convertedFee == convertedFee))
239+ then {
240+ let usdnBalanceAfter = getBalance(usdnId)
241+ if ((usdnBalanceAfter == usdnBalanceAfter))
242+ then (usdnBalanceAfter - usdnBalanceBefore)
243+ else throw("Strict value is not equal to itself.")
244+ }
245+ else throw("Strict value is not equal to itself.")
246+ }
247+ else throw("Strict value is not equal to itself.")
248+ }
249+ }
250+ if ((usdnFee == usdnFee))
251+ then {
252+ let referralAddress = if ((refKey == "muna"))
253+ then Address(base58'3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU')
254+ else if ((refKey == "keeper"))
255+ then Address(base58'3PNgw6Db2TGUQbjnV7ekve6q126xBC1e7eM')
256+ else if ((refKey == "tci"))
257+ then Address(base58'3P93R2GBkTGVehRPhytHr7sdxYww93jkbhm')
258+ else if ((valueOrElse(getString(this, ("ref_" + refKey)), "") != ""))
259+ then addressFromStringValue(getStringValue(this, ("ref_" + refKey)))
260+ else Address(base58'3PQxXXiQXpWsjDwQLYxyuoPiaLnVHjJguFo')
261+ let refUsdnShare = if ((refKey == "noref"))
262+ then 0
263+ else fraction(usdnFee, 2, 10)
264+ let topUp = if ((usdnFee != 0))
265+ then invoke(Address(base58'3PKUxbZaSYfsR7wu2HaAgiirHYwAMupDrYW'), "topUpReward", nil, [AttachedPayment(usdnId, (usdnFee - refUsdnShare))])
266+ else unit
267+ if ((topUp == topUp))
268+ then {
269+ let asset0 = i.payments[0].assetId
270+ let amount0 = (getBalance(asset0) - (if ((asset0 == usdnId))
271+ then refUsdnShare
272+ else 0))
273+ let amount1 = (cleanTotalAmount - (if ((asset1 == usdnId))
274+ then refUsdnShare
275+ else 0))
276+ ((([ScriptTransfer(i.caller, amount1, asset1)] ++ (if ((refUsdnShare != 0))
277+ then [ScriptTransfer(referralAddress, refUsdnShare, usdnId)]
278+ else nil)) ++ (if ((amount0 != 0))
279+ then [ScriptTransfer(i.caller, amount0, asset0)]
280+ else nil)) ++ (if ((usdnFee == 0))
281+ then [ScriptTransfer(Address(base58'3P4kBiU4wr2yV1S5gMfu3MdkVvy7kxXHsKe'), feeAmount, asset1)]
282+ else nil))
283+ }
284+ else throw("Strict value is not equal to itself.")
285+ }
220286 else throw("Strict value is not equal to itself.")
221287 }
222-
223- func doRoute (accum,route) = {
224- let amountIn = parseIntValue(split(route, "/")[0])
225- let swaps = split(split(route, "/")[1], ";")
226- let swapsResult = {
227- let $l = swaps
228- let $s = size($l)
229- let $acc0 = amountIn
230- func $f2_1 ($a,$i) = if (($i >= $s))
231- then $a
232- else doSwap($a, $l[$i])
233-
234- func $f2_2 ($a,$i) = if (($i >= $s))
235- then $a
236- else throw("List size exceeds 3")
237-
238- $f2_2($f2_1($f2_1($f2_1($acc0, 0), 1), 2), 3)
239- }
240- if ((swapsResult == swapsResult))
241- then (accum + swapsResult)
242- else throw("Strict value is not equal to itself.")
243- }
244-
245- let splittedRoute = split(takeRight(routesStr, 50), ",")
246- let asset1Str = splittedRoute[(size(splittedRoute) - 1)]
247- let asset1 = getAssetBytes(asset1Str)
248- let swaps = {
249- let $l = routes
250- let $s = size($l)
251- let $acc0 = 0
252- func $f2_1 ($a,$i) = if (($i >= $s))
253- then $a
254- else doRoute($a, $l[$i])
255-
256- func $f2_2 ($a,$i) = if (($i >= $s))
257- then $a
258- else throw("List size exceeds 4")
259-
260- $f2_2($f2_1($f2_1($f2_1($f2_1($acc0, 0), 1), 2), 3), 4)
261- }
262- if ((swaps == swaps))
263- then {
264- let totalOut = (getBalance(asset1) - balancesBefore[valueOrErrorMessage(indexOf(affectedAssetsLi, asset1Str), "Invalid asset d0002")])
265- let feeAmount = fraction(totalOut, 29, 10000)
266- let cleanTotalAmount = (totalOut - feeAmount)
267- if ((minToReceive > cleanTotalAmount))
268- then throw(((("amount to receive is too low. please try again with another amount or wait 1 minute. expected: " + toString(minToReceive)) + ", real ") + toString(cleanTotalAmount)))
269- else {
270- let usdnFee = if ((asset1 == usdnId))
271- then feeAmount
272- else {
273- let poolAddressStr = tryGetString((("static_asset_" + asset1Str) + "_puzzlePool"))
274- if ((poolAddressStr == ""))
275- then 0
276- else {
277- let usdnBalanceBefore = getBalance(usdnId)
278- if ((usdnBalanceBefore == usdnBalanceBefore))
279- then {
280- let convertedFee = invoke(addressFromStringValue(poolAddressStr), "swap", [usdnIdStr, 0], [AttachedPayment(asset1, feeAmount)])
281- if ((convertedFee == convertedFee))
282- then {
283- let usdnBalanceAfter = getBalance(usdnId)
284- if ((usdnBalanceAfter == usdnBalanceAfter))
285- then (usdnBalanceAfter - usdnBalanceBefore)
286- else throw("Strict value is not equal to itself.")
287- }
288- else throw("Strict value is not equal to itself.")
289- }
290- else throw("Strict value is not equal to itself.")
291- }
292- }
293- if ((usdnFee == usdnFee))
294- then {
295- let referralAddress = if ((refKey == "muna"))
296- then Address(base58'3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU')
297- else if ((refKey == "keeper"))
298- then Address(base58'3PNgw6Db2TGUQbjnV7ekve6q126xBC1e7eM')
299- else if ((refKey == "tci"))
300- then Address(base58'3P93R2GBkTGVehRPhytHr7sdxYww93jkbhm')
301- else if ((valueOrElse(getString(this, ("ref_" + refKey)), "") != ""))
302- then addressFromStringValue(getStringValue(this, ("ref_" + refKey)))
303- else Address(base58'3PQxXXiQXpWsjDwQLYxyuoPiaLnVHjJguFo')
304- let refUsdnShare = if ((refKey == "noref"))
305- then 0
306- else fraction(usdnFee, 2, 10)
307- let topUp = if ((usdnFee != 0))
308- then invoke(Address(base58'3PKUxbZaSYfsR7wu2HaAgiirHYwAMupDrYW'), "topUpReward", nil, [AttachedPayment(usdnId, (usdnFee - refUsdnShare))])
309- else unit
310- if ((topUp == topUp))
311- then {
312- let asset0 = i.payments[0].assetId
313- let amount0 = ((getBalance(asset0) - (if ((asset0 == usdnId))
314- then refUsdnShare
315- else 0)) - balancesBefore[valueOrErrorMessage(indexOf(affectedAssetsLi, payAssetStr), "Invalid asset d0003")])
316- let amount1 = (cleanTotalAmount - (if ((asset1 == usdnId))
317- then refUsdnShare
318- else 0))
319- ((([ScriptTransfer(i.caller, amount1, asset1)] ++ (if ((refUsdnShare != 0))
320- then [ScriptTransfer(referralAddress, refUsdnShare, usdnId)]
321- else nil)) ++ (if ((amount0 != 0))
322- then [ScriptTransfer(i.caller, amount0, asset0)]
323- else nil)) ++ (if ((usdnFee == 0))
324- then [ScriptTransfer(Address(base58'3P4kBiU4wr2yV1S5gMfu3MdkVvy7kxXHsKe'), feeAmount, asset1)]
325- else nil))
326- }
327- else throw("Strict value is not equal to itself.")
328- }
329- else throw("Strict value is not equal to itself.")
330- }
331- }
332- else throw("Strict value is not equal to itself.")
333- }
334- else throw("Strict value is not equal to itself.")
335- }
288+ }
289+ else throw("Strict value is not equal to itself.")
290+ }
336291 }
337292
338293
339294 @Callable(i)
340295 func swap (routesStr,minToReceive) = swapInternal(i, routesStr, minToReceive, "noref")
341296
342297
343298
344299 @Callable(i)
345300 func swapWithReferral (routesStr,minToReceive,refKey) = swapInternal(i, routesStr, minToReceive, refKey)
346301
347302
348303
349304 @Callable(i)
350305 func addTokenPuzzlePool (assetIdStr,poolAddressStr) = if ((i.caller != Address(base58'3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL')))
351306 then throw("admin only")
352307 else [StringEntry((("static_asset_" + assetIdStr) + "_puzzlePool"), poolAddressStr)]
353308
354309
355310
356311 @Callable(i)
357312 func addReferralKey (refKey,addressStr) = if ((i.caller != Address(base58'3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL')))
358313 then throw("admin only")
359314 else [StringEntry(("ref_" + refKey), addressStr)]
360315
361316
362317
363318 @Callable(i)
364319 func shutdown (val) = if ((i.caller != Address(base58'3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL')))
365320 then throw("wl only")
366321 else [BooleanEntry("shutdown", val)]
367322
368323
369324 @Verifier(tx)
370325 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
371326

github/deemru/w8io/6500d08 
59.65 ms