tx · 2DkgJ864MNwhv9gUx2U2h1j2HZ8GzjLYnH8SFAPvsc3M

3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU:  -0.01000000 Waves

2023.06.07 18:04 [3677980] smart account 3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU > SELF 0.00000000 Waves

{ "type": 13, "id": "2DkgJ864MNwhv9gUx2U2h1j2HZ8GzjLYnH8SFAPvsc3M", "fee": 1000000, "feeAssetId": null, "timestamp": 1686150348901, "version": 2, "chainId": 87, "sender": "3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU", "senderPublicKey": "Dmn1fWHxpwN789LPfoMHFj7uSYKSsb5VFfyNQyQ629f9", "proofs": [ "5Le8dfj5BAxHY4dg1XBVoHr3ZNrGtcMAh942AiGEbmecU6xCFvQaYnbbgHRvkwa7HkvPiNuVt8n2avCW7v6fTs8W" ], "script": "base64:BgIaCAISBAoCCAESBQoDCAEIEgQKAggIEgMKAQQKAAl1c2RuSWRTdHICLERHMnhGa1BkRHdLVW9Ca3pHQWhRdExwU0d6ZlhMaUNZUEV6ZUtIMkFkMjRwAAZ1c2RuSWQBILYmKcME9c5TkaQOS3UkL2SMUbH6369UKb1I0h0qsqrRAA1saW1pdENvbnRyYWN0AiMzUEZCNkxKeVNoc0NLRUExQVUxVTFXTGJEYXpxeWo2Wkw5YgEMdHJ5R2V0U3RyaW5nAQNrZXkEByRtYXRjaDAJAJ0IAgUEdGhpcwUDa2V5AwkAAQIFByRtYXRjaDACBlN0cmluZwQBYgUHJG1hdGNoMAUBYgIAAQ5nZXRBc3NldFN0cmluZwEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwCQDYBAEFAWICBVdBVkVTAQ1nZXRBc3NldEJ5dGVzAQphc3NldElkU3RyAwkAAAIFCmFzc2V0SWRTdHICBVdBVkVTBQR1bml0CQDZBAEFCmFzc2V0SWRTdHIBCmdldEJhbGFuY2UBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIEVW5pdAQBeAUHJG1hdGNoMAgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkBBXZhbHVlAQUHYXNzZXRJZAEGc3dhcFdYAwZhc3NldDAGYXNzZXQxB2Ftb3VudDAEE2Fzc2V0MUJhbGFuY2VCZWZvcmUJAQpnZXRCYWxhbmNlAQkBDWdldEFzc2V0Qnl0ZXMBBQZhc3NldDEDCQAAAgUTYXNzZXQxQmFsYW5jZUJlZm9yZQUTYXNzZXQxQmFsYW5jZUJlZm9yZQQEaW52MQkA/AcECQEHQWRkcmVzcwEBGgFXLio1NbENt/F5PuG3RtCedFJNezHQg64GAgRzd2FwCQDMCAIAAQkAzAgCBQZhc3NldDEJAMwIAgkApQgBBQR0aGlzBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ1nZXRBc3NldEJ5dGVzAQUGYXNzZXQwBQdhbW91bnQwBQNuaWwDCQAAAgUEaW52MQUEaW52MQQHYW1vdW50MQkAZQIJAQpnZXRCYWxhbmNlAQkBDWdldEFzc2V0Qnl0ZXMBBQZhc3NldDEFE2Fzc2V0MUJhbGFuY2VCZWZvcmUDCQAAAgUHYW1vdW50MQUHYW1vdW50MQUHYW1vdW50MQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEJc3dhcExpbWl0AwZwYXJhbXMFdDBTdHIFdDFTdHIKAQdkb0xpbWl0AgVhc3NldAtvcmRlclBhcmFtcwQDb3JkCQC1CQIFC29yZGVyUGFyYW1zAgE+BAskdDAzMTg0MzIyOQkAlAoCCQCRAwIFA29yZAAACQCRAwIFA29yZAABBAdvcmRlcklkCAULJHQwMzE4NDMyMjkCXzEEC29yZGVyQW1vdW50CAULJHQwMzE4NDMyMjkCXzIEA2ludgkA/AcECQEHQWRkcmVzcwEJANkEAQUNbGltaXRDb250cmFjdAIMZnVsZmlsbE9yZGVyCQDMCAIFB29yZGVySWQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUFYXNzZXQJAQ1wYXJzZUludFZhbHVlAQULb3JkZXJBbW91bnQFA25pbAMJAAACBQNpbnYFA2ludgUFYXNzZXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4ECG9yZGVyc0xpCQC1CQIFBnBhcmFtcwIBOgQCdDAJAQ1nZXRBc3NldEJ5dGVzAQUFdDBTdHIEBnJlc3VsdAoAAiRsBQhvcmRlcnNMaQoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFAnQwCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdkb0xpbWl0AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAwkAAAIFBnJlc3VsdAUGcmVzdWx0AAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDHN3YXBJbnRlcm5hbAQBaQlyb3V0ZXNTdHIMbWluVG9SZWNlaXZlBnJlZktleQQIc2h1dGRvd24JAQt2YWx1ZU9yRWxzZQIJAKAIAQIIc2h1dGRvd24HAwUIc2h1dGRvd24JAAIBAghzaHV0ZG93bgoBBmRvU3dhcAIGYW1vdW50BHN3YXAEBnN3YXBMaQkAtQkCBQRzd2FwAgEsBAskdDAzODE3Mzg5OAkAlgoECQCRAwIFBnN3YXBMaQAACQCRAwIFBnN3YXBMaQABCQCRAwIFBnN3YXBMaQACCQCRAwIFBnN3YXBMaQADBARkQXBwCAULJHQwMzgxNzM4OTgCXzEECGRBcHBUeXBlCAULJHQwMzgxNzM4OTgCXzIEBXQwU3RyCAULJHQwMzgxNzM4OTgCXzMEBXQxU3RyCAULJHQwMzgxNzM4OTgCXzQEAnQwCQENZ2V0QXNzZXRCeXRlcwEFBXQwU3RyBAdhbW91bnQwAwkBAiE9AgUGYW1vdW50AAAFBmFtb3VudAkBCmdldEJhbGFuY2UBBQJ0MAQCaTEDCQAAAgUIZEFwcFR5cGUCBnN3b3BmaQkA/AcECQEHQWRkcmVzcwEJANkEAQUEZEFwcAIIZXhjaGFuZ2UJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAnQwBQdhbW91bnQwBQNuaWwDCQAAAgUIZEFwcFR5cGUCBnB1enpsZQkA/AcECQEHQWRkcmVzcwEJANkEAQUEZEFwcAIEc3dhcAkAzAgCBQV0MVN0cgkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCdDAFB2Ftb3VudDAFA25pbAMJAAACBQhkQXBwVHlwZQICd3gJAQZzd2FwV1gDBQV0MFN0cgUFdDFTdHIFB2Ftb3VudDADCQAAAgUIZEFwcFR5cGUCBWxpbWl0CQEJc3dhcExpbWl0AwUEZEFwcAUFdDBTdHIFBXQxU3RyCQACAQIraW50ZXJuYWwgYWdncmVnYXRvciBpc3N1ZTogdW5rbm93IHBvb2wgdHlwZQMJAAACBQJpMQUCaTEAAAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgoBB2RvUm91dGUCBWFjY3VtBXJvdXRlBAhhbW91bnRJbgkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgUFcm91dGUCAS8AAAQFc3dhcHMJALUJAgkAkQMCCQC1CQIFBXJvdXRlAgEvAAECATsEC3N3YXBzUmVzdWx0CgACJGwFBXN3YXBzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUIYW1vdW50SW4KAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBmRvU3dhcAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgMwkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwMJAAACBQtzd2Fwc1Jlc3VsdAULc3dhcHNSZXN1bHQJAGQCBQVhY2N1bQULc3dhcHNSZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EDXNwbGl0dGVkUm91dGUJALUJAgkAsgICBQlyb3V0ZXNTdHIAMgIBLAQJYXNzZXQxU3RyCQCRAwIFDXNwbGl0dGVkUm91dGUJAGUCCQCQAwEFDXNwbGl0dGVkUm91dGUAAQQGYXNzZXQxCQENZ2V0QXNzZXRCeXRlcwEFCWFzc2V0MVN0cgQGcm91dGVzCQC8CQIFCXJvdXRlc1N0cgIBfAQFc3dhcHMKAAIkbAUGcm91dGVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdkb1JvdXRlAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA0CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQDCQAAAgUFc3dhcHMFBXN3YXBzBAh0b3RhbE91dAkBCmdldEJhbGFuY2UBBQZhc3NldDEECWZlZUFtb3VudAkAawMFCHRvdGFsT3V0AB0AkE4EEGNsZWFuVG90YWxBbW91bnQJAGUCBQh0b3RhbE91dAUJZmVlQW1vdW50AwkAZgIFDG1pblRvUmVjZWl2ZQUQY2xlYW5Ub3RhbEFtb3VudAkAAgEJAKwCAgkArAICCQCsAgICX2Ftb3VudCB0byByZWNlaXZlIGlzIHRvbyBsb3cuIHBsZWFzZSB0cnkgYWdhaW4gd2l0aCBhbm90aGVyIGFtb3VudCBvciB3YWl0IDEgbWludXRlLiBleHBlY3RlZDogCQCkAwEFDG1pblRvUmVjZWl2ZQIHLCByZWFsIAkApAMBBRBjbGVhblRvdGFsQW1vdW50BAd1c2RuRmVlAwkAAAIFBmFzc2V0MQUGdXNkbklkBQlmZWVBbW91bnQEDnBvb2xBZGRyZXNzU3RyCQEMdHJ5R2V0U3RyaW5nAQkArAICCQCsAgICDXN0YXRpY19hc3NldF8FCWFzc2V0MVN0cgILX3B1enpsZVBvb2wDCQAAAgUOcG9vbEFkZHJlc3NTdHICAAAABBF1c2RuQmFsYW5jZUJlZm9yZQkBCmdldEJhbGFuY2UBBQZ1c2RuSWQDCQAAAgURdXNkbkJhbGFuY2VCZWZvcmUFEXVzZG5CYWxhbmNlQmVmb3JlBAxjb252ZXJ0ZWRGZWUJAPwHBAkBEUBleHRyTmF0aXZlKDEwNjIpAQUOcG9vbEFkZHJlc3NTdHICBHN3YXAJAMwIAgUJdXNkbklkU3RyCQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQZhc3NldDEFCWZlZUFtb3VudAUDbmlsAwkAAAIFDGNvbnZlcnRlZEZlZQUMY29udmVydGVkRmVlBBB1c2RuQmFsYW5jZUFmdGVyCQEKZ2V0QmFsYW5jZQEFBnVzZG5JZAMJAAACBRB1c2RuQmFsYW5jZUFmdGVyBRB1c2RuQmFsYW5jZUFmdGVyCQBlAgUQdXNkbkJhbGFuY2VBZnRlcgURdXNkbkJhbGFuY2VCZWZvcmUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUHdXNkbkZlZQUHdXNkbkZlZQQPcmVmZXJyYWxBZGRyZXNzAwkAAAIFBnJlZktleQIEbXVuYQkBB0FkZHJlc3MBARoBV50MqsYTUaluy4D3Y33BZHji73JNqAy60wMJAAACBQZyZWZLZXkCBmtlZXBlcgkBB0FkZHJlc3MBARoBV+O2yhI07m9Gb/DKqIDji69xTfFemaw79gMJAAACBQZyZWZLZXkCA3RjaQkBB0FkZHJlc3MBARoBV04EqfVyjN7n+dJSSt24a1NFjHqnmjh9nAkBB0FkZHJlc3MBARoBV/yaB3Dhb97RlCEhbXq2jVjSQlh7LAcmEgQMcmVmVXNkblNoYXJlAwkAAAIFBnJlZktleQIFbm9yZWYAAAkAawMFB3VzZG5GZWUAAgAKBAV0b3BVcAMJAQIhPQIFB3VzZG5GZWUAAAkA/AcECQEHQWRkcmVzcwEBGgFXwIqtc5QhM72wGFYPKLW5PkF3zr9v8v7XAgt0b3BVcFJld2FyZAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQZ1c2RuSWQJAGUCBQd1c2RuRmVlBQxyZWZVc2RuU2hhcmUFA25pbAUEdW5pdAMJAAACBQV0b3BVcAUFdG9wVXAEBmFzc2V0MAgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBAdhbW91bnQwCQBlAgkBCmdldEJhbGFuY2UBBQZhc3NldDADCQAAAgUGYXNzZXQwBQZ1c2RuSWQFDHJlZlVzZG5TaGFyZQAABAdhbW91bnQxCQBlAgUQY2xlYW5Ub3RhbEFtb3VudAMJAAACBQZhc3NldDEFBnVzZG5JZAUMcmVmVXNkblNoYXJlAAAJAM4IAgkAzggCCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQdhbW91bnQxBQZhc3NldDEFA25pbAMJAQIhPQIFDHJlZlVzZG5TaGFyZQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFD3JlZmVycmFsQWRkcmVzcwUMcmVmVXNkblNoYXJlBQZ1c2RuSWQFA25pbAUDbmlsAwkBAiE9AgUHYW1vdW50MAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUHYW1vdW50MAUGYXNzZXQwBQNuaWwFA25pbAMJAAACBQd1c2RuRmVlAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBARoBVx7h+0Axa4Hm7EtWGwUsUaGTbt8JsTzSwQUJZmVlQW1vdW50BQZhc3NldDEFA25pbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAFpAQRzd2FwAglyb3V0ZXNTdHIMbWluVG9SZWNlaXZlCQEMc3dhcEludGVybmFsBAUBaQUJcm91dGVzU3RyBQxtaW5Ub1JlY2VpdmUCBW5vcmVmAWkBEHN3YXBXaXRoUmVmZXJyYWwDCXJvdXRlc1N0cgxtaW5Ub1JlY2VpdmUGcmVmS2V5CQEMc3dhcEludGVybmFsBAUBaQUJcm91dGVzU3RyBQxtaW5Ub1JlY2VpdmUFBnJlZktleQFpARJhZGRUb2tlblB1enpsZVBvb2wCCmFzc2V0SWRTdHIOcG9vbEFkZHJlc3NTdHIDCQECIT0CCAUBaQZjYWxsZXIJAQdBZGRyZXNzAQEaAVfX4SNRjnyriFrV1yiXddiIddOPriMFpuEJAAIBAgphZG1pbiBvbmx5CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICAg1zdGF0aWNfYXNzZXRfBQphc3NldElkU3RyAgtfcHV6emxlUG9vbAUOcG9vbEFkZHJlc3NTdHIFA25pbAFpAQhzaHV0ZG93bgEDdmFsAwkBAiE9AggFAWkGY2FsbGVyCQEHQWRkcmVzcwEBGgFX1+EjUY58q4ha1dcol3XYiHXTj64jBabhCQACAQIHd2wgb25seQkAzAgCCQEMQm9vbGVhbkVudHJ5AgIIc2h1dGRvd24FA3ZhbAUDbmlsAQJ0eAEGdmVyaWZ5AAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tledHhDxo=", "height": 3677980, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: ExGqdZ9fP481SHbytbrhA6Canu8ePm2ig8hJASRPeKud Next: AY2vwMdQqi5qqhZMeV6nFoNmmG2hxDHkg1y7SLaXE163 Diff:
OldNewDifferences
44 let usdnIdStr = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p"
55
66 let usdnId = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
7+
8+let limitContract = "3PFB6LJyShsCKEA1AU1U1WLbDazqyj6ZL9b"
79
810 func tryGetString (key) = match getString(this, key) {
911 case b: String =>
5254 }
5355
5456
57+func swapLimit (params,t0Str,t1Str) = {
58+ func doLimit (asset,orderParams) = {
59+ let ord = split(orderParams, ">")
60+ let $t031843229 = $Tuple2(ord[0], ord[1])
61+ let orderId = $t031843229._1
62+ let orderAmount = $t031843229._2
63+ let inv = invoke(Address(fromBase58String(limitContract)), "fulfillOrder", [orderId], [AttachedPayment(asset, parseIntValue(orderAmount))])
64+ if ((inv == inv))
65+ then asset
66+ else throw("Strict value is not equal to itself.")
67+ }
68+
69+ let ordersLi = split(params, ":")
70+ let t0 = getAssetBytes(t0Str)
71+ let result = {
72+ let $l = ordersLi
73+ let $s = size($l)
74+ let $acc0 = t0
75+ func $f0_1 ($a,$i) = if (($i >= $s))
76+ then $a
77+ else doLimit($a, $l[$i])
78+
79+ func $f0_2 ($a,$i) = if (($i >= $s))
80+ then $a
81+ else throw("List size exceeds 10")
82+
83+ $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)
84+ }
85+ if ((result == result))
86+ then 0
87+ else throw("Strict value is not equal to itself.")
88+ }
89+
90+
5591 func swapInternal (i,routesStr,minToReceive,refKey) = {
5692 let shutdown = valueOrElse(getBoolean("shutdown"), false)
5793 if (shutdown)
5995 else {
6096 func doSwap (amount,swap) = {
6197 let swapLi = split(swap, ",")
62- let $t032293310 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
63- let dApp = $t032293310._1
64- let dAppType = $t032293310._2
65- let t0Str = $t032293310._3
66- let t1Str = $t032293310._4
98+ let $t038173898 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
99+ let dApp = $t038173898._1
100+ let dAppType = $t038173898._2
101+ let t0Str = $t038173898._3
102+ let t1Str = $t038173898._4
67103 let t0 = getAssetBytes(t0Str)
68104 let amount0 = if ((amount != 0))
69105 then amount
72108 then invoke(Address(fromBase58String(dApp)), "exchange", [1], [AttachedPayment(t0, amount0)])
73109 else if ((dAppType == "puzzle"))
74110 then invoke(Address(fromBase58String(dApp)), "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
75- else if ((dAppType == "pstable"))
76- then invoke(Address(fromBase58String(dApp)), "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
77- else if ((dAppType == "wx"))
78- then swapWX(t0Str, t1Str, amount0)
111+ else if ((dAppType == "wx"))
112+ then swapWX(t0Str, t1Str, amount0)
113+ else if ((dAppType == "limit"))
114+ then swapLimit(dApp, t0Str, t1Str)
79115 else throw("internal aggregator issue: unknow pool type")
80116 if ((i1 == i1))
81117 then 0
196232
197233
198234 @Callable(i)
199-func shutdown (val) = if ((i.caller == Address(base58'3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL')))
200- then throw("wl only")
201- else [BooleanEntry("shutdown", val)]
202-
203-
204-
205-@Callable(i)
206235 func swap (routesStr,minToReceive) = swapInternal(i, routesStr, minToReceive, "noref")
207236
208237
213242
214243
215244 @Callable(i)
216-func addTokenPuzzlePool (assetIdStr,poolAddressStr) = if ((i.caller != Address(base58'3PLjwHcz9NEuaTo63NZR9B9okQiKQxZSbmf')))
245+func addTokenPuzzlePool (assetIdStr,poolAddressStr) = if ((i.caller != Address(base58'3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL')))
217246 then throw("admin only")
218247 else [StringEntry((("static_asset_" + assetIdStr) + "_puzzlePool"), poolAddressStr)]
248+
249+
250+
251+@Callable(i)
252+func shutdown (val) = if ((i.caller != Address(base58'3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL')))
253+ then throw("wl only")
254+ else [BooleanEntry("shutdown", val)]
219255
220256
221257 @Verifier(tx)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let usdnIdStr = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p"
55
66 let usdnId = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
7+
8+let limitContract = "3PFB6LJyShsCKEA1AU1U1WLbDazqyj6ZL9b"
79
810 func tryGetString (key) = match getString(this, key) {
911 case b: String =>
1012 b
1113 case _ =>
1214 ""
1315 }
1416
1517
1618 func getAssetString (assetId) = match assetId {
1719 case b: ByteVector =>
1820 toBase58String(b)
1921 case _ =>
2022 "WAVES"
2123 }
2224
2325
2426 func getAssetBytes (assetIdStr) = if ((assetIdStr == "WAVES"))
2527 then unit
2628 else fromBase58String(assetIdStr)
2729
2830
2931 func getBalance (assetId) = match assetId {
3032 case x: Unit =>
3133 wavesBalance(this).available
3234 case _ =>
3335 assetBalance(this, value(assetId))
3436 }
3537
3638
3739 func swapWX (asset0,asset1,amount0) = {
3840 let asset1BalanceBefore = getBalance(getAssetBytes(asset1))
3941 if ((asset1BalanceBefore == asset1BalanceBefore))
4042 then {
4143 let inv1 = invoke(Address(base58'3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93'), "swap", [1, asset1, toString(this)], [AttachedPayment(getAssetBytes(asset0), amount0)])
4244 if ((inv1 == inv1))
4345 then {
4446 let amount1 = (getBalance(getAssetBytes(asset1)) - asset1BalanceBefore)
4547 if ((amount1 == amount1))
4648 then amount1
4749 else throw("Strict value is not equal to itself.")
4850 }
4951 else throw("Strict value is not equal to itself.")
5052 }
5153 else throw("Strict value is not equal to itself.")
5254 }
5355
5456
57+func swapLimit (params,t0Str,t1Str) = {
58+ func doLimit (asset,orderParams) = {
59+ let ord = split(orderParams, ">")
60+ let $t031843229 = $Tuple2(ord[0], ord[1])
61+ let orderId = $t031843229._1
62+ let orderAmount = $t031843229._2
63+ let inv = invoke(Address(fromBase58String(limitContract)), "fulfillOrder", [orderId], [AttachedPayment(asset, parseIntValue(orderAmount))])
64+ if ((inv == inv))
65+ then asset
66+ else throw("Strict value is not equal to itself.")
67+ }
68+
69+ let ordersLi = split(params, ":")
70+ let t0 = getAssetBytes(t0Str)
71+ let result = {
72+ let $l = ordersLi
73+ let $s = size($l)
74+ let $acc0 = t0
75+ func $f0_1 ($a,$i) = if (($i >= $s))
76+ then $a
77+ else doLimit($a, $l[$i])
78+
79+ func $f0_2 ($a,$i) = if (($i >= $s))
80+ then $a
81+ else throw("List size exceeds 10")
82+
83+ $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)
84+ }
85+ if ((result == result))
86+ then 0
87+ else throw("Strict value is not equal to itself.")
88+ }
89+
90+
5591 func swapInternal (i,routesStr,minToReceive,refKey) = {
5692 let shutdown = valueOrElse(getBoolean("shutdown"), false)
5793 if (shutdown)
5894 then throw("shutdown")
5995 else {
6096 func doSwap (amount,swap) = {
6197 let swapLi = split(swap, ",")
62- let $t032293310 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
63- let dApp = $t032293310._1
64- let dAppType = $t032293310._2
65- let t0Str = $t032293310._3
66- let t1Str = $t032293310._4
98+ let $t038173898 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
99+ let dApp = $t038173898._1
100+ let dAppType = $t038173898._2
101+ let t0Str = $t038173898._3
102+ let t1Str = $t038173898._4
67103 let t0 = getAssetBytes(t0Str)
68104 let amount0 = if ((amount != 0))
69105 then amount
70106 else getBalance(t0)
71107 let i1 = if ((dAppType == "swopfi"))
72108 then invoke(Address(fromBase58String(dApp)), "exchange", [1], [AttachedPayment(t0, amount0)])
73109 else if ((dAppType == "puzzle"))
74110 then invoke(Address(fromBase58String(dApp)), "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
75- else if ((dAppType == "pstable"))
76- then invoke(Address(fromBase58String(dApp)), "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
77- else if ((dAppType == "wx"))
78- then swapWX(t0Str, t1Str, amount0)
111+ else if ((dAppType == "wx"))
112+ then swapWX(t0Str, t1Str, amount0)
113+ else if ((dAppType == "limit"))
114+ then swapLimit(dApp, t0Str, t1Str)
79115 else throw("internal aggregator issue: unknow pool type")
80116 if ((i1 == i1))
81117 then 0
82118 else throw("Strict value is not equal to itself.")
83119 }
84120
85121 func doRoute (accum,route) = {
86122 let amountIn = parseIntValue(split(route, "/")[0])
87123 let swaps = split(split(route, "/")[1], ";")
88124 let swapsResult = {
89125 let $l = swaps
90126 let $s = size($l)
91127 let $acc0 = amountIn
92128 func $f0_1 ($a,$i) = if (($i >= $s))
93129 then $a
94130 else doSwap($a, $l[$i])
95131
96132 func $f0_2 ($a,$i) = if (($i >= $s))
97133 then $a
98134 else throw("List size exceeds 3")
99135
100136 $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3)
101137 }
102138 if ((swapsResult == swapsResult))
103139 then (accum + swapsResult)
104140 else throw("Strict value is not equal to itself.")
105141 }
106142
107143 let splittedRoute = split(takeRight(routesStr, 50), ",")
108144 let asset1Str = splittedRoute[(size(splittedRoute) - 1)]
109145 let asset1 = getAssetBytes(asset1Str)
110146 let routes = split_4C(routesStr, "|")
111147 let swaps = {
112148 let $l = routes
113149 let $s = size($l)
114150 let $acc0 = 0
115151 func $f0_1 ($a,$i) = if (($i >= $s))
116152 then $a
117153 else doRoute($a, $l[$i])
118154
119155 func $f0_2 ($a,$i) = if (($i >= $s))
120156 then $a
121157 else throw("List size exceeds 4")
122158
123159 $f0_2($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4)
124160 }
125161 if ((swaps == swaps))
126162 then {
127163 let totalOut = getBalance(asset1)
128164 let feeAmount = fraction(totalOut, 29, 10000)
129165 let cleanTotalAmount = (totalOut - feeAmount)
130166 if ((minToReceive > cleanTotalAmount))
131167 then throw(((("amount to receive is too low. please try again with another amount or wait 1 minute. expected: " + toString(minToReceive)) + ", real ") + toString(cleanTotalAmount)))
132168 else {
133169 let usdnFee = if ((asset1 == usdnId))
134170 then feeAmount
135171 else {
136172 let poolAddressStr = tryGetString((("static_asset_" + asset1Str) + "_puzzlePool"))
137173 if ((poolAddressStr == ""))
138174 then 0
139175 else {
140176 let usdnBalanceBefore = getBalance(usdnId)
141177 if ((usdnBalanceBefore == usdnBalanceBefore))
142178 then {
143179 let convertedFee = invoke(addressFromStringValue(poolAddressStr), "swap", [usdnIdStr, 0], [AttachedPayment(asset1, feeAmount)])
144180 if ((convertedFee == convertedFee))
145181 then {
146182 let usdnBalanceAfter = getBalance(usdnId)
147183 if ((usdnBalanceAfter == usdnBalanceAfter))
148184 then (usdnBalanceAfter - usdnBalanceBefore)
149185 else throw("Strict value is not equal to itself.")
150186 }
151187 else throw("Strict value is not equal to itself.")
152188 }
153189 else throw("Strict value is not equal to itself.")
154190 }
155191 }
156192 if ((usdnFee == usdnFee))
157193 then {
158194 let referralAddress = if ((refKey == "muna"))
159195 then Address(base58'3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU')
160196 else if ((refKey == "keeper"))
161197 then Address(base58'3PNgw6Db2TGUQbjnV7ekve6q126xBC1e7eM')
162198 else if ((refKey == "tci"))
163199 then Address(base58'3P93R2GBkTGVehRPhytHr7sdxYww93jkbhm')
164200 else Address(base58'3PQxXXiQXpWsjDwQLYxyuoPiaLnVHjJguFo')
165201 let refUsdnShare = if ((refKey == "noref"))
166202 then 0
167203 else fraction(usdnFee, 2, 10)
168204 let topUp = if ((usdnFee != 0))
169205 then invoke(Address(base58'3PKUxbZaSYfsR7wu2HaAgiirHYwAMupDrYW'), "topUpReward", nil, [AttachedPayment(usdnId, (usdnFee - refUsdnShare))])
170206 else unit
171207 if ((topUp == topUp))
172208 then {
173209 let asset0 = i.payments[0].assetId
174210 let amount0 = (getBalance(asset0) - (if ((asset0 == usdnId))
175211 then refUsdnShare
176212 else 0))
177213 let amount1 = (cleanTotalAmount - (if ((asset1 == usdnId))
178214 then refUsdnShare
179215 else 0))
180216 ((([ScriptTransfer(i.caller, amount1, asset1)] ++ (if ((refUsdnShare != 0))
181217 then [ScriptTransfer(referralAddress, refUsdnShare, usdnId)]
182218 else nil)) ++ (if ((amount0 != 0))
183219 then [ScriptTransfer(i.caller, amount0, asset0)]
184220 else nil)) ++ (if ((usdnFee == 0))
185221 then [ScriptTransfer(Address(base58'3P4kBiU4wr2yV1S5gMfu3MdkVvy7kxXHsKe'), feeAmount, asset1)]
186222 else nil))
187223 }
188224 else throw("Strict value is not equal to itself.")
189225 }
190226 else throw("Strict value is not equal to itself.")
191227 }
192228 }
193229 else throw("Strict value is not equal to itself.")
194230 }
195231 }
196232
197233
198234 @Callable(i)
199-func shutdown (val) = if ((i.caller == Address(base58'3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL')))
200- then throw("wl only")
201- else [BooleanEntry("shutdown", val)]
202-
203-
204-
205-@Callable(i)
206235 func swap (routesStr,minToReceive) = swapInternal(i, routesStr, minToReceive, "noref")
207236
208237
209238
210239 @Callable(i)
211240 func swapWithReferral (routesStr,minToReceive,refKey) = swapInternal(i, routesStr, minToReceive, refKey)
212241
213242
214243
215244 @Callable(i)
216-func addTokenPuzzlePool (assetIdStr,poolAddressStr) = if ((i.caller != Address(base58'3PLjwHcz9NEuaTo63NZR9B9okQiKQxZSbmf')))
245+func addTokenPuzzlePool (assetIdStr,poolAddressStr) = if ((i.caller != Address(base58'3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL')))
217246 then throw("admin only")
218247 else [StringEntry((("static_asset_" + assetIdStr) + "_puzzlePool"), poolAddressStr)]
248+
249+
250+
251+@Callable(i)
252+func shutdown (val) = if ((i.caller != Address(base58'3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL')))
253+ then throw("wl only")
254+ else [BooleanEntry("shutdown", val)]
219255
220256
221257 @Verifier(tx)
222258 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
223259

github/deemru/w8io/6500d08 
37.09 ms