tx · C4BM4Vy9zFahdRf7NbNC4oeFTuLzdXsy2CDAJbz2gTxd

3PK1LcCBwbmBZrcDCJsDkXh4USKPxb68Tcw:  -0.01000000 Waves

2024.01.01 14:58 [3978205] smart account 3PK1LcCBwbmBZrcDCJsDkXh4USKPxb68Tcw > SELF 0.00000000 Waves

{ "type": 13, "id": "C4BM4Vy9zFahdRf7NbNC4oeFTuLzdXsy2CDAJbz2gTxd", "fee": 1000000, "feeAssetId": null, "timestamp": 1704110323203, "version": 2, "chainId": 87, "sender": "3PK1LcCBwbmBZrcDCJsDkXh4USKPxb68Tcw", "senderPublicKey": "FBgMeRe67JJ64mvtmPU7XWTUsKCrapoe2XSfJwcMqKTx", "proofs": [ "4X6Wwwux7n8Sr1XsAJKKsb6bvSzQetbLzrEcHSBCoYoJLvkjR4DoY2fAAA2vMT8C9mLetgnK7XV2Rm9FyyYCBqH3" ], "script": "base64:BgIgCAISBAoCCAESBQoDCAEIEgQKAggIEgQKAggIEgMKAQQNAAl1c2RuSWRTdHICLERHMnhGa1BkRHdLVW9Ca3pHQWhRdExwU0d6ZlhMaUNZUEV6ZUtIMkFkMjRwAAZ1c2RuSWQBILYmKcME9c5TkaQOS3UkL2SMUbH6369UKb1I0h0qsqrRAA1saW1pdENvbnRyYWN0AiMzUEZCNkxKeVNoc0NLRUExQVUxVTFXTGJEYXpxeWo2Wkw5YgALdHNuQ29udHJhY3QCIzNQS3o1am5KTG9oRjJHalNoUTdiRzVINEJlYmRvQTk4eloyABFsZW5kUHJveHlDb250cmFjdAIjM1BHeE1adE1uTlQ5cEpDdlh4WFY0THpLcVhzanZROVhwZlIBDHRyeUdldFN0cmluZwEDa2V5BAckbWF0Y2gwCQCdCAIFBHRoaXMFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWIFByRtYXRjaDAFAWICAAEOZ2V0QXNzZXRTdHJpbmcBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYgUHJG1hdGNoMAkA2AQBBQFiAgVXQVZFUwENZ2V0QXNzZXRCeXRlcwEKYXNzZXRJZFN0cgMJAAACBQphc3NldElkU3RyAgVXQVZFUwUEdW5pdAkA2QQBBQphc3NldElkU3RyAQpnZXRCYWxhbmNlAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACBFVuaXQEAXgFByRtYXRjaDAICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJAQV2YWx1ZQEFB2Fzc2V0SWQBCXN3YXBMaW1pdAQGcGFyYW1zBXQwU3RyBXQxU3RyDWJhbGFuY2VCZWZvcmUKAQdkb0xpbWl0AgVhc3NldAtvcmRlclBhcmFtcwQDb3JkCQC1CQIFC29yZGVyUGFyYW1zAgE+BAskdDAxMTgxMTIyNgkAlAoCCQCRAwIFA29yZAAACQCRAwIFA29yZAABBAdvcmRlcklkCAULJHQwMTE4MTEyMjYCXzEEC29yZGVyQW1vdW50CAULJHQwMTE4MTEyMjYCXzIEDWJhbGFuY2VBY3R1YWwJAGUCCQEKZ2V0QmFsYW5jZQEJAQ1nZXRBc3NldEJ5dGVzAQUFdDBTdHIFDWJhbGFuY2VCZWZvcmUDCQAAAgUNYmFsYW5jZUFjdHVhbAUNYmFsYW5jZUFjdHVhbAQDaW52CQD8BwQJAQdBZGRyZXNzAQkA2QQBBQ1saW1pdENvbnRyYWN0AgxmdWxmaWxsT3JkZXIJAMwIAgUHb3JkZXJJZAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQVhc3NldAUNYmFsYW5jZUFjdHVhbAUDbmlsAwkAAAIFA2ludgUDaW52BQVhc3NldAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQIb3JkZXJzTGkJALUJAgUGcGFyYW1zAgE6BAJ0MAkBDWdldEFzc2V0Qnl0ZXMBBQV0MFN0cgQGcmVzdWx0CgACJGwFCG9yZGVyc0xpCgACJHMJAJADAQUCJGwKAAUkYWNjMAUCdDAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2RvTGltaXQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoDCQAAAgUGcmVzdWx0BQZyZXN1bHQAAAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEIc3dhcExlbmQEBnBhcmFtcwV0MFN0cgV0MVN0cgZhbW91bnQEA2FycgkAtQkCBQZwYXJhbXMCAS0ECyR0MDE3MjMxNzgwCQCVCgMJAJEDAgUDYXJyAAAJAJEDAgUDYXJyAAEJAJEDAgUDYXJyAAIEDHBvb2xfYWRkcmVzcwgFCyR0MDE3MjMxNzgwAl8xBAVhc3NldAgFCyR0MDE3MjMxNzgwAl8yBANkaXIIBQskdDAxNzIzMTc4MAJfMwQIcHJveHlBZHIJAQdBZGRyZXNzAQkA2QQBBRFsZW5kUHJveHlDb250cmFjdAQMZnVuY3Rpb25OYW1lAwkAAAIFA2RpcgIBMAIGbWludFBMAghyZWRlZW1QTAkA/AcEBQhwcm94eUFkcgUMZnVuY3Rpb25OYW1lCQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0QXNzZXRCeXRlcwEFBXQwU3RyBQZhbW91bnQFA25pbAEIc3dhcFBlcGUEBnBhcmFtcwV0MFN0cgV0MVN0cgZhbW91bnQEA2FycgkAtQkCBQZwYXJhbXMCAS0ECyR0MDIxNjAyMjEwCQCUCgIJAJEDAgUDYXJyAAAJAJEDAgUDYXJyAAEEDHBvb2xfYWRkcmVzcwgFCyR0MDIxNjAyMjEwAl8xBAtmdW5jdGlvblRhZwgFCyR0MDIxNjAyMjEwAl8yBAtzd2FwQWRkcmVzcwkBB0FkZHJlc3MBCQDZBAEFDHBvb2xfYWRkcmVzcwMJAAACBQtmdW5jdGlvblRhZwIBZAkA/AcEBQtzd2FwQWRkcmVzcwIHZGVwb3NpdAkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDWdldEFzc2V0Qnl0ZXMBBQV0MFN0cgUGYW1vdW50BQNuaWwDCQAAAgULZnVuY3Rpb25UYWcCAXcJAPwHBAULc3dhcEFkZHJlc3MCCHdpdGhkcmF3CQDMCAIFBXQxU3RyCQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0QXNzZXRCeXRlcwEFBXQwU3RyBQZhbW91bnQFA25pbAMJAAACBQtmdW5jdGlvblRhZwIBcwkA/AcEBQtzd2FwQWRkcmVzcwIEc3dhcAkAzAgCBQV0MVN0cgkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDWdldEFzc2V0Qnl0ZXMBBQV0MFN0cgUGYW1vdW50BQNuaWwJAAIBAiJVbmtub3duIGZ1bmN0aW9uIHRhZyBmb3IgcGVwZSBzd2FwAQxzd2FwSW50ZXJuYWwEAWkJcm91dGVzU3RyDG1pblRvUmVjZWl2ZQZyZWZLZXkECHNodXRkb3duCQELdmFsdWVPckVsc2UC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XzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAMJAAACBQ5iYWxhbmNlc0JlZm9yZQUOYmFsYW5jZXNCZWZvcmUKAQZkb1N3YXACBmFtb3VudARzd2FwBAZzd2FwTGkJALUJAgUEc3dhcAIBLAQLJHQwNDUxODQ1OTkJAJYKBAkAkQMCBQZzd2FwTGkAAAkAkQMCBQZzd2FwTGkAAQkAkQMCBQZzd2FwTGkAAgkAkQMCBQZzd2FwTGkAAwQEZEFwcAgFCyR0MDQ1MTg0NTk5Al8xBAhkQXBwVHlwZQgFCyR0MDQ1MTg0NTk5Al8yBAV0MFN0cggFCyR0MDQ1MTg0NTk5Al8zBAV0MVN0cggFCyR0MDQ1MTg0NTk5Al80BAJ0MAkBDWdldEFzc2V0Qnl0ZXMBBQV0MFN0cgQHdDBJbmRleAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDPCAIFEGFmZmVjdGVkQXNzZXRzTGkFBXQwU3RyAhNJbnZhbGlkIGFzc2V0IGQwMDAxBA90MEJhbGFuY2VCZWZvcmUJAJEDAgUOYmFsYW5jZXNCZWZvcmUFB3QwSW5kZXgEB2Ftb3VudDADCQECIT0CBQZhbW91bnQAAAUGYW1vdW50CQBlAgkBCmdldEJhbGFuY2UBBQJ0MAUPdDBCYWxhbmNlQmVmb3JlBAJpMQMJAAACBQhkQXBwVHlwZQIGc3dvcGZpCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQRkQXBwAghleGNoYW5nZQkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCdDAFB2Ftb3VudDAFA25pbAMJAAACBQhkQXBwVHlwZQIGcHV6emxlCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQRkQXBwAgRzd2FwCQDMCAIFBXQxU3RyCQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJ0MAUHYW1vdW50MAUDbmlsAwkAAAIFCGRBcHBUeXBlAgJ3eAkA/AcECQEHQWRkcmVzcwEBGgFXLio1NbENt/F5PuG3RtCedFJNezHQg64GAgRzd2FwCQDMCAIAAQkAzAgCBQV0MVN0cgkAzAgCCQClCAEFBHRoaXMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCdDAFB2Ftb3VudDAFA25pbAMJAAACBQhkQXBwVHlwZQIFbGltaXQJAQlzd2FwTGltaXQEBQRkQXBwBQV0MFN0cgUFdDFTdHIFD3QwQmFsYW5jZUJlZm9yZQMJAAACBQhkQXBwVHlwZQIHdHN1bmFtaQkA/AcECQEHQWRkcmVzcwEJANkEAQULdHNuQ29udHJhY3QCBHN3YXAJAMwIAgUFdDFTdHIJAMwIAgAABQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAnQwBQdhbW91bnQwBQNuaWwDCQAAAgUIZEFwcFR5cGUCBGxlbmQJAQhzd2FwTGVuZAQFBGRBcHAFBXQwU3RyBQV0MVN0cgUHYW1vdW50MAMJAAACBQhkQXBwVHlwZQIEcGVwZQkBCHN3YXBQZXBlBAUEZEFwcAUFdDBTdHIFBXQxU3RyBQdhbW91bnQwCQACAQIraW50ZXJuYWwgYWdncmVnYXRvciBpc3N1ZTogdW5rbm93IHBvb2wgdHlwZQMJAAACBQJpMQUCaTEAAAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgoBB2RvUm91dGUCBWFjY3VtBXJvdXRlBAhhbW91bnRJbgkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgUFcm91dGUCAS8AAAQFc3dhcHMJALUJAgkAkQMCCQC1CQIFBXJvdXRlAgEvAAECATsEC3N3YXBzUmVzdWx0CgACJGwFBXN3YXBzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUIYW1vdW50SW4KAQUkZjJfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBmRvU3dhcAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMl8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgMwkBBSRmMl8yAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgUFJGFjYzAAAAABAAIAAwMJAAACBQtzd2Fwc1Jlc3VsdAULc3dhcHNSZXN1bHQJAGQCBQVhY2N1bQULc3dhcHNSZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EDXNwbGl0dGVkUm91dGUJALUJAgkAsgICBQlyb3V0ZXNTdHIAMgIBLAQJYXNzZXQxU3RyCQCRAwIFDXNwbGl0dGVkUm91dGUJAGUCCQCQAwEFDXNwbGl0dGVkUm91dGUAAQQGYXNzZXQxCQENZ2V0QXNzZXRCeXRlcwEFCWFzc2V0MVN0cgQFc3dhcHMKAAIkbAUGcm91dGVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYyXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdkb1JvdXRlAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYyXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA0CQEFJGYyXzICCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECBQUkYWNjMAAAAAEAAgADAAQDCQAAAgUFc3dhcHMFBXN3YXBzBAh0b3RhbE91dAkAZQIJAQpnZXRCYWxhbmNlAQUGYXNzZXQxCQCRAwIFDmJhbGFuY2VzQmVmb3JlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAM8IAgUQYWZmZWN0ZWRBc3NldHNMaQUJYXNzZXQxU3RyAhNJbnZhbGlkIGFzc2V0IGQwMDAyBAlmZWVBbW91bnQJAGsDBQh0b3RhbE91dAAdAJBOBBBjbGVhblRvdGFsQW1vdW50CQBlAgUIdG90YWxPdXQFCWZlZUFtb3VudAMJAGYCBQxtaW5Ub1JlY2VpdmUFEGNsZWFuVG90YWxBbW91bnQJAAIBCQCsAgIJAKwCAgkArAICAl9hbW91bnQgdG8gcmVjZWl2ZSBpcyB0b28gbG93LiBwbGVhc2UgdHJ5IGFnYWluIHdpdGggYW5vdGhlciBhbW91bnQgb3Igd2FpdCAxIG1pbnV0ZS4gZXhwZWN0ZWQ6IAkApAMBBQxtaW5Ub1JlY2VpdmUCBywgcmVhbCAJAKQDAQUQY2xlYW5Ub3RhbEFtb3VudAQHdXNkbkZlZQMJAAACBQZhc3NldDEFBnVzZG5JZAUJZmVlQW1vdW50BA5wb29sQWRkcmVzc1N0cgkBDHRyeUdldFN0cmluZwEJAKwCAgkArAICAg1zdGF0aWNfYXNzZXRfBQlhc3NldDFTdHICC19wdXp6bGVQb29sAwkAAAIFDnBvb2xBZGRyZXNzU3RyAgAAAAQRdXNkbkJhbGFuY2VCZWZvcmUJAQpnZXRCYWxhbmNlAQUGdXNkbklkAwkAAAIFEXVzZG5CYWxhbmNlQmVmb3JlBRF1c2RuQmFsYW5jZUJlZm9yZQQMY29udmVydGVkRmVlCQD8BwQJARFAZXh0ck5hdGl2ZSgxMDYyKQEFDnBvb2xBZGRyZXNzU3RyAgRzd2FwCQDMCAIFCXVzZG5JZFN0cgkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUGYXNzZXQxBQlmZWVBbW91bnQFA25pbAMJAAACBQxjb252ZXJ0ZWRGZWUFDGNvbnZlcnRlZEZlZQQQdXNkbkJhbGFuY2VBZnRlcgkBCmdldEJhbGFuY2UBBQZ1c2RuSWQDCQAAAgUQdXNkbkJhbGFuY2VBZnRlcgUQdXNkbkJhbGFuY2VBZnRlcgkAZQIFEHVzZG5CYWxhbmNlQWZ0ZXIFEXVzZG5CYWxhbmNlQmVmb3JlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFB3VzZG5GZWUFB3VzZG5GZWUED3JlZmVycmFsQWRkcmVzcwMJAAACBQZyZWZLZXkCBG11bmEJAQdBZGRyZXNzAQEaAVedDKrGE1GpbsuA92N9wWR44u9yTagMutMDCQAAAgUGcmVmS2V5AgZrZWVwZXIJAQdBZGRyZXNzAQEaAVfjtsoSNO5vRm/wyqiA44uvcU3xXpmsO/YDCQAAAgUGcmVmS2V5AgN0Y2kJAQdBZGRyZXNzAQEaAVdOBKn1coze5/nSUkrduGtTRYx6p5o4fZwDCQECIT0CCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAKwCAgIEcmVmXwUGcmVmS2V5AgACAAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICAgRyZWZfBQZyZWZLZXkJAQdBZGRyZXNzAQEaAVf8mgdw4W/e0ZQhIW16to1Y0kJYeywHJhIEDHJlZlVzZG5TaGFyZQMJAAACBQZyZWZLZXkCBW5vcmVmAAAJAGsDBQd1c2RuRmVlAAIACgQFdG9wVXADCQECIT0CBQd1c2RuRmVlAAAJAPwHBAkBB0FkZHJlc3MBARoBV8CKrXOUITO9sBhWDyi1uT5Bd86/b/L+1wILdG9wVXBSZXdhcmQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUGdXNkbklkCQBlAgUHdXNkbkZlZQUMcmVmVXNkblNoYXJlBQNuaWwFBHVuaXQDCQAAAgUFdG9wVXAFBXRvcFVwBAZhc3NldDAICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQHYW1vdW50MAkAZQIJAGUCCQEKZ2V0QmFsYW5jZQEFBmFzc2V0MAMJAAACBQZhc3NldDAFBnVzZG5JZAUMcmVmVXNkblNoYXJlAAAJAJEDAgUOYmFsYW5jZXNCZWZvcmUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAzwgCBRBhZmZlY3RlZEFzc2V0c0xpBQtwYXlBc3NldFN0cgITSW52YWxpZCBhc3NldCBkMDAwMwQHYW1vdW50MQkAZQIFEGNsZWFuVG90YWxBbW91bnQDCQAAAgUGYXNzZXQxBQZ1c2RuSWQFDHJlZlVzZG5TaGFyZQAACQDOCAIJAM4IAgkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUHYW1vdW50MQUGYXNzZXQxBQNuaWwDCQECIT0CBQxyZWZVc2RuU2hhcmUAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ9yZWZlcnJhbEFkZHJlc3MFDHJlZlVzZG5TaGFyZQUGdXNkbklkBQNuaWwFA25pbAMJAQIhPQIFB2Ftb3VudDAAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFB2Ftb3VudDAFBmFzc2V0MAUDbmlsBQNuaWwDCQAAAgUHdXNkbkZlZQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQEaAVce4ftAMWuB5uxLVhsFLFGhk27fCbE80sEFCWZlZUFtb3VudAUGYXNzZXQxBQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUBaQEEc3dhcAIJcm91dGVzU3RyDG1pblRvUmVjZWl2ZQkBDHN3YXBJbnRlcm5hbAQFAWkFCXJvdXRlc1N0cgUMbWluVG9SZWNlaXZlAgVub3JlZgFpARBzd2FwV2l0aFJlZmVycmFsAwlyb3V0ZXNTdHIMbWluVG9SZWNlaXZlBnJlZktleQkBDHN3YXBJbnRlcm5hbAQFAWkFCXJvdXRlc1N0cgUMbWluVG9SZWNlaXZlBQZyZWZLZXkBaQESYWRkVG9rZW5QdXp6bGVQb29sAgphc3NldElkU3RyDnBvb2xBZGRyZXNzU3RyAwkBAiE9AggFAWkGY2FsbGVyCQEHQWRkcmVzcwEBGgFX1+EjUY58q4ha1dcol3XYiHXTj64jBabhCQACAQIKYWRtaW4gb25seQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgINc3RhdGljX2Fzc2V0XwUKYXNzZXRJZFN0cgILX3B1enpsZVBvb2wFDnBvb2xBZGRyZXNzU3RyBQNuaWwBaQEOYWRkUmVmZXJyYWxLZXkCBnJlZktleQphZGRyZXNzU3RyAwkBAiE9AggFAWkGY2FsbGVyCQEHQWRkcmVzcwEBGgFX1+EjUY58q4ha1dcol3XYiHXTj64jBabhCQACAQIKYWRtaW4gb25seQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgICBHJlZl8FBnJlZktleQUKYWRkcmVzc1N0cgUDbmlsAWkBCHNodXRkb3duAQN2YWwDCQECIT0CCAUBaQZjYWxsZXIJAQdBZGRyZXNzAQEaAVfX4SNRjnyriFrV1yiXddiIddOPriMFpuEJAAIBAgd3bCBvbmx5CQDMCAIJAQxCb29sZWFuRW50cnkCAghzaHV0ZG93bgUDdmFsBQNuaWwBAnR4AQZ2ZXJpZnkACQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5le0RsQ==", "height": 3978205, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5oCxPsffhLg1xNPijioSy9emPzGfphpjhU9WMZNDYfRc Next: EQhUzMXhrjAt7XmnhPfK5XQ4Pfad3LL86bF51WAkWaNk Diff:
OldNewDifferences
4343 func swapLimit (params,t0Str,t1Str,balanceBefore) = {
4444 func doLimit (asset,orderParams) = {
4545 let ord = split(orderParams, ">")
46- let $t011831228 = $Tuple2(ord[0], ord[1])
47- let orderId = $t011831228._1
48- let orderAmount = $t011831228._2
46+ let $t011811226 = $Tuple2(ord[0], ord[1])
47+ let orderId = $t011811226._1
48+ let orderAmount = $t011811226._2
4949 let balanceActual = (getBalance(getAssetBytes(t0Str)) - balanceBefore)
5050 if ((balanceActual == balanceActual))
5151 then {
8181
8282 func swapLend (params,t0Str,t1Str,amount) = {
8383 let arr = split(params, "-")
84- let $t017251782 = $Tuple3(arr[0], arr[1], arr[2])
85- let pool_address = $t017251782._1
86- let asset = $t017251782._2
87- let dir = $t017251782._3
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
8888 let proxyAdr = Address(fromBase58String(lendProxyContract))
8989 let functionName = if ((dir == "0"))
9090 then "mintPL"
9595
9696 func swapPepe (params,t0Str,t1Str,amount) = {
9797 let arr = split(params, "-")
98- let $t021622212 = $Tuple2(arr[0], arr[1])
99- let pool_address = $t021622212._1
100- let functionTag = $t021622212._2
98+ let $t021602210 = $Tuple2(arr[0], arr[1])
99+ let pool_address = $t021602210._1
100+ let functionTag = $t021602210._2
101101 let swapAddress = Address(fromBase58String(pool_address))
102102 if ((functionTag == "d"))
103103 then invoke(swapAddress, "deposit", [0], [AttachedPayment(getAssetBytes(t0Str), amount)])
189189 then {
190190 func doSwap (amount,swap) = {
191191 let swapLi = split(swap, ",")
192- let $t045204601 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
193- let dApp = $t045204601._1
194- let dAppType = $t045204601._2
195- let t0Str = $t045204601._3
196- let t1Str = $t045204601._4
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
197197 let t0 = getAssetBytes(t0Str)
198198 let t0Index = valueOrErrorMessage(indexOf(affectedAssetsLi, t0Str), "Invalid asset d0001")
199199 let t0BalanceBefore = balancesBefore[t0Index]
310310 if ((topUp == topUp))
311311 then {
312312 let asset0 = i.payments[0].assetId
313- let amount0 = (getBalance(asset0) - (if ((asset0 == usdnId))
313+ let amount0 = ((getBalance(asset0) - (if ((asset0 == usdnId))
314314 then refUsdnShare
315- else (0 - balancesBefore[valueOrErrorMessage(indexOf(affectedAssetsLi, payAssetStr), "Invalid asset d0003")])))
315+ else 0)) - balancesBefore[valueOrErrorMessage(indexOf(affectedAssetsLi, payAssetStr), "Invalid asset d0003")])
316316 let amount1 = (cleanTotalAmount - (if ((asset1 == usdnId))
317317 then refUsdnShare
318318 else 0))
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
1414 func tryGetString (key) = match getString(this, key) {
1515 case b: String =>
1616 b
1717 case _ =>
1818 ""
1919 }
2020
2121
2222 func getAssetString (assetId) = match assetId {
2323 case b: ByteVector =>
2424 toBase58String(b)
2525 case _ =>
2626 "WAVES"
2727 }
2828
2929
3030 func getAssetBytes (assetIdStr) = if ((assetIdStr == "WAVES"))
3131 then unit
3232 else fromBase58String(assetIdStr)
3333
3434
3535 func getBalance (assetId) = match assetId {
3636 case x: Unit =>
3737 wavesBalance(this).available
3838 case _ =>
3939 assetBalance(this, value(assetId))
4040 }
4141
4242
4343 func swapLimit (params,t0Str,t1Str,balanceBefore) = {
4444 func doLimit (asset,orderParams) = {
4545 let ord = split(orderParams, ">")
46- let $t011831228 = $Tuple2(ord[0], ord[1])
47- let orderId = $t011831228._1
48- let orderAmount = $t011831228._2
46+ let $t011811226 = $Tuple2(ord[0], ord[1])
47+ let orderId = $t011811226._1
48+ let orderAmount = $t011811226._2
4949 let balanceActual = (getBalance(getAssetBytes(t0Str)) - balanceBefore)
5050 if ((balanceActual == balanceActual))
5151 then {
5252 let inv = invoke(Address(fromBase58String(limitContract)), "fulfillOrder", [orderId], [AttachedPayment(asset, balanceActual)])
5353 if ((inv == inv))
5454 then asset
5555 else throw("Strict value is not equal to itself.")
5656 }
5757 else throw("Strict value is not equal to itself.")
5858 }
5959
6060 let ordersLi = split(params, ":")
6161 let t0 = getAssetBytes(t0Str)
6262 let result = {
6363 let $l = ordersLi
6464 let $s = size($l)
6565 let $acc0 = t0
6666 func $f0_1 ($a,$i) = if (($i >= $s))
6767 then $a
6868 else doLimit($a, $l[$i])
6969
7070 func $f0_2 ($a,$i) = if (($i >= $s))
7171 then $a
7272 else throw("List size exceeds 10")
7373
7474 $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)
7575 }
7676 if ((result == result))
7777 then 0
7878 else throw("Strict value is not equal to itself.")
7979 }
8080
8181
8282 func swapLend (params,t0Str,t1Str,amount) = {
8383 let arr = split(params, "-")
84- let $t017251782 = $Tuple3(arr[0], arr[1], arr[2])
85- let pool_address = $t017251782._1
86- let asset = $t017251782._2
87- let dir = $t017251782._3
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
8888 let proxyAdr = Address(fromBase58String(lendProxyContract))
8989 let functionName = if ((dir == "0"))
9090 then "mintPL"
9191 else "redeemPL"
9292 invoke(proxyAdr, functionName, [0], [AttachedPayment(getAssetBytes(t0Str), amount)])
9393 }
9494
9595
9696 func swapPepe (params,t0Str,t1Str,amount) = {
9797 let arr = split(params, "-")
98- let $t021622212 = $Tuple2(arr[0], arr[1])
99- let pool_address = $t021622212._1
100- let functionTag = $t021622212._2
98+ let $t021602210 = $Tuple2(arr[0], arr[1])
99+ let pool_address = $t021602210._1
100+ let functionTag = $t021602210._2
101101 let swapAddress = Address(fromBase58String(pool_address))
102102 if ((functionTag == "d"))
103103 then invoke(swapAddress, "deposit", [0], [AttachedPayment(getAssetBytes(t0Str), amount)])
104104 else if ((functionTag == "w"))
105105 then invoke(swapAddress, "withdraw", [t1Str, 0], [AttachedPayment(getAssetBytes(t0Str), amount)])
106106 else if ((functionTag == "s"))
107107 then invoke(swapAddress, "swap", [t1Str, 0], [AttachedPayment(getAssetBytes(t0Str), amount)])
108108 else throw("Unknown function tag for pepe swap")
109109 }
110110
111111
112112 func swapInternal (i,routesStr,minToReceive,refKey) = {
113113 let shutdown = valueOrElse(getBoolean("shutdown"), false)
114114 if (shutdown)
115115 then throw("shutdown")
116116 else if ((size(i.payments) > 1))
117117 then throw("only one payment should be attached")
118118 else {
119119 let payAssetStr = getAssetString(i.payments[0].assetId)
120120 let payAmount = i.payments[0].amount
121121 func f1 (accum2,next) = {
122122 let swapElements = split(next, ",")
123123 let t1 = if ((indexOf(accum2, swapElements[2]) == unit))
124124 then (accum2 :+ swapElements[2])
125125 else accum2
126126 let t2 = if ((indexOf(accum2, swapElements[3]) == unit))
127127 then (t1 :+ swapElements[3])
128128 else t1
129129 t2
130130 }
131131
132132 func extractAssets (accum,next) = {
133133 let r1 = split(next, "/")
134134 let data = r1[1]
135135 let swaps = split(data, ";")
136136 (accum ++ {
137137 let $l = swaps
138138 let $s = size($l)
139139 let $acc0 = accum
140140 func $f0_1 ($a,$i) = if (($i >= $s))
141141 then $a
142142 else f1($a, $l[$i])
143143
144144 func $f0_2 ($a,$i) = if (($i >= $s))
145145 then $a
146146 else throw("List size exceeds 20")
147147
148148 $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)
149149 })
150150 }
151151
152152 func getBalances (accum,next) = {
153153 let balance = if ((next != payAssetStr))
154154 then getBalance(getAssetBytes(next))
155155 else (getBalance(getAssetBytes(next)) - payAmount)
156156 (accum :+ balance)
157157 }
158158
159159 let routes = split_4C(routesStr, "|")
160160 let affectedAssetsLi = {
161161 let $l = routes
162162 let $s = size($l)
163163 let $acc0 = nil
164164 func $f0_1 ($a,$i) = if (($i >= $s))
165165 then $a
166166 else extractAssets($a, $l[$i])
167167
168168 func $f0_2 ($a,$i) = if (($i >= $s))
169169 then $a
170170 else throw("List size exceeds 10")
171171
172172 $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)
173173 }
174174 let balancesBefore = {
175175 let $l = affectedAssetsLi
176176 let $s = size($l)
177177 let $acc0 = nil
178178 func $f1_1 ($a,$i) = if (($i >= $s))
179179 then $a
180180 else getBalances($a, $l[$i])
181181
182182 func $f1_2 ($a,$i) = if (($i >= $s))
183183 then $a
184184 else throw("List size exceeds 20")
185185
186186 $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)
187187 }
188188 if ((balancesBefore == balancesBefore))
189189 then {
190190 func doSwap (amount,swap) = {
191191 let swapLi = split(swap, ",")
192- let $t045204601 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
193- let dApp = $t045204601._1
194- let dAppType = $t045204601._2
195- let t0Str = $t045204601._3
196- let t1Str = $t045204601._4
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
197197 let t0 = getAssetBytes(t0Str)
198198 let t0Index = valueOrErrorMessage(indexOf(affectedAssetsLi, t0Str), "Invalid asset d0001")
199199 let t0BalanceBefore = balancesBefore[t0Index]
200200 let amount0 = if ((amount != 0))
201201 then amount
202202 else (getBalance(t0) - t0BalanceBefore)
203203 let i1 = if ((dAppType == "swopfi"))
204204 then invoke(Address(fromBase58String(dApp)), "exchange", [1], [AttachedPayment(t0, amount0)])
205205 else if ((dAppType == "puzzle"))
206206 then invoke(Address(fromBase58String(dApp)), "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
207207 else if ((dAppType == "wx"))
208208 then invoke(Address(base58'3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93'), "swap", [1, t1Str, toString(this)], [AttachedPayment(t0, amount0)])
209209 else if ((dAppType == "limit"))
210210 then swapLimit(dApp, t0Str, t1Str, t0BalanceBefore)
211211 else if ((dAppType == "tsunami"))
212212 then invoke(Address(fromBase58String(tsnContract)), "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
213213 else if ((dAppType == "lend"))
214214 then swapLend(dApp, t0Str, t1Str, amount0)
215215 else if ((dAppType == "pepe"))
216216 then swapPepe(dApp, t0Str, t1Str, amount0)
217217 else throw("internal aggregator issue: unknow pool type")
218218 if ((i1 == i1))
219219 then 0
220220 else throw("Strict value is not equal to itself.")
221221 }
222222
223223 func doRoute (accum,route) = {
224224 let amountIn = parseIntValue(split(route, "/")[0])
225225 let swaps = split(split(route, "/")[1], ";")
226226 let swapsResult = {
227227 let $l = swaps
228228 let $s = size($l)
229229 let $acc0 = amountIn
230230 func $f2_1 ($a,$i) = if (($i >= $s))
231231 then $a
232232 else doSwap($a, $l[$i])
233233
234234 func $f2_2 ($a,$i) = if (($i >= $s))
235235 then $a
236236 else throw("List size exceeds 3")
237237
238238 $f2_2($f2_1($f2_1($f2_1($acc0, 0), 1), 2), 3)
239239 }
240240 if ((swapsResult == swapsResult))
241241 then (accum + swapsResult)
242242 else throw("Strict value is not equal to itself.")
243243 }
244244
245245 let splittedRoute = split(takeRight(routesStr, 50), ",")
246246 let asset1Str = splittedRoute[(size(splittedRoute) - 1)]
247247 let asset1 = getAssetBytes(asset1Str)
248248 let swaps = {
249249 let $l = routes
250250 let $s = size($l)
251251 let $acc0 = 0
252252 func $f2_1 ($a,$i) = if (($i >= $s))
253253 then $a
254254 else doRoute($a, $l[$i])
255255
256256 func $f2_2 ($a,$i) = if (($i >= $s))
257257 then $a
258258 else throw("List size exceeds 4")
259259
260260 $f2_2($f2_1($f2_1($f2_1($f2_1($acc0, 0), 1), 2), 3), 4)
261261 }
262262 if ((swaps == swaps))
263263 then {
264264 let totalOut = (getBalance(asset1) - balancesBefore[valueOrErrorMessage(indexOf(affectedAssetsLi, asset1Str), "Invalid asset d0002")])
265265 let feeAmount = fraction(totalOut, 29, 10000)
266266 let cleanTotalAmount = (totalOut - feeAmount)
267267 if ((minToReceive > cleanTotalAmount))
268268 then throw(((("amount to receive is too low. please try again with another amount or wait 1 minute. expected: " + toString(minToReceive)) + ", real ") + toString(cleanTotalAmount)))
269269 else {
270270 let usdnFee = if ((asset1 == usdnId))
271271 then feeAmount
272272 else {
273273 let poolAddressStr = tryGetString((("static_asset_" + asset1Str) + "_puzzlePool"))
274274 if ((poolAddressStr == ""))
275275 then 0
276276 else {
277277 let usdnBalanceBefore = getBalance(usdnId)
278278 if ((usdnBalanceBefore == usdnBalanceBefore))
279279 then {
280280 let convertedFee = invoke(addressFromStringValue(poolAddressStr), "swap", [usdnIdStr, 0], [AttachedPayment(asset1, feeAmount)])
281281 if ((convertedFee == convertedFee))
282282 then {
283283 let usdnBalanceAfter = getBalance(usdnId)
284284 if ((usdnBalanceAfter == usdnBalanceAfter))
285285 then (usdnBalanceAfter - usdnBalanceBefore)
286286 else throw("Strict value is not equal to itself.")
287287 }
288288 else throw("Strict value is not equal to itself.")
289289 }
290290 else throw("Strict value is not equal to itself.")
291291 }
292292 }
293293 if ((usdnFee == usdnFee))
294294 then {
295295 let referralAddress = if ((refKey == "muna"))
296296 then Address(base58'3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU')
297297 else if ((refKey == "keeper"))
298298 then Address(base58'3PNgw6Db2TGUQbjnV7ekve6q126xBC1e7eM')
299299 else if ((refKey == "tci"))
300300 then Address(base58'3P93R2GBkTGVehRPhytHr7sdxYww93jkbhm')
301301 else if ((valueOrElse(getString(this, ("ref_" + refKey)), "") != ""))
302302 then addressFromStringValue(getStringValue(this, ("ref_" + refKey)))
303303 else Address(base58'3PQxXXiQXpWsjDwQLYxyuoPiaLnVHjJguFo')
304304 let refUsdnShare = if ((refKey == "noref"))
305305 then 0
306306 else fraction(usdnFee, 2, 10)
307307 let topUp = if ((usdnFee != 0))
308308 then invoke(Address(base58'3PKUxbZaSYfsR7wu2HaAgiirHYwAMupDrYW'), "topUpReward", nil, [AttachedPayment(usdnId, (usdnFee - refUsdnShare))])
309309 else unit
310310 if ((topUp == topUp))
311311 then {
312312 let asset0 = i.payments[0].assetId
313- let amount0 = (getBalance(asset0) - (if ((asset0 == usdnId))
313+ let amount0 = ((getBalance(asset0) - (if ((asset0 == usdnId))
314314 then refUsdnShare
315- else (0 - balancesBefore[valueOrErrorMessage(indexOf(affectedAssetsLi, payAssetStr), "Invalid asset d0003")])))
315+ else 0)) - balancesBefore[valueOrErrorMessage(indexOf(affectedAssetsLi, payAssetStr), "Invalid asset d0003")])
316316 let amount1 = (cleanTotalAmount - (if ((asset1 == usdnId))
317317 then refUsdnShare
318318 else 0))
319319 ((([ScriptTransfer(i.caller, amount1, asset1)] ++ (if ((refUsdnShare != 0))
320320 then [ScriptTransfer(referralAddress, refUsdnShare, usdnId)]
321321 else nil)) ++ (if ((amount0 != 0))
322322 then [ScriptTransfer(i.caller, amount0, asset0)]
323323 else nil)) ++ (if ((usdnFee == 0))
324324 then [ScriptTransfer(Address(base58'3P4kBiU4wr2yV1S5gMfu3MdkVvy7kxXHsKe'), feeAmount, asset1)]
325325 else nil))
326326 }
327327 else throw("Strict value is not equal to itself.")
328328 }
329329 else throw("Strict value is not equal to itself.")
330330 }
331331 }
332332 else throw("Strict value is not equal to itself.")
333333 }
334334 else throw("Strict value is not equal to itself.")
335335 }
336336 }
337337
338338
339339 @Callable(i)
340340 func swap (routesStr,minToReceive) = swapInternal(i, routesStr, minToReceive, "noref")
341341
342342
343343
344344 @Callable(i)
345345 func swapWithReferral (routesStr,minToReceive,refKey) = swapInternal(i, routesStr, minToReceive, refKey)
346346
347347
348348
349349 @Callable(i)
350350 func addTokenPuzzlePool (assetIdStr,poolAddressStr) = if ((i.caller != Address(base58'3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL')))
351351 then throw("admin only")
352352 else [StringEntry((("static_asset_" + assetIdStr) + "_puzzlePool"), poolAddressStr)]
353353
354354
355355
356356 @Callable(i)
357357 func addReferralKey (refKey,addressStr) = if ((i.caller != Address(base58'3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL')))
358358 then throw("admin only")
359359 else [StringEntry(("ref_" + refKey), addressStr)]
360360
361361
362362
363363 @Callable(i)
364364 func shutdown (val) = if ((i.caller != Address(base58'3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL')))
365365 then throw("wl only")
366366 else [BooleanEntry("shutdown", val)]
367367
368368
369369 @Verifier(tx)
370370 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
371371

github/deemru/w8io/3ef1775 
72.39 ms