tx · Aih1LhYGq68JX9RdPJKvVgKfELsrNEUXsDNyR1HsT9zb

3N1ytAUyhtig9X6F2hHHs1jbzYxr47Yp8Fr:  -0.01800000 Waves

2024.12.20 18:22 [3423028] smart account 3N1ytAUyhtig9X6F2hHHs1jbzYxr47Yp8Fr > SELF 0.00000000 Waves

{ "type": 13, "id": "Aih1LhYGq68JX9RdPJKvVgKfELsrNEUXsDNyR1HsT9zb", "fee": 1800000, "feeAssetId": null, "timestamp": 1734708233124, "version": 2, "chainId": 84, "sender": "3N1ytAUyhtig9X6F2hHHs1jbzYxr47Yp8Fr", "senderPublicKey": "jXCTQV8PjX2uC9UHBFveupYy9cjhY7stHbzE9cptymw", "proofs": [ "2pkxXj4uPDipVvDBky6AeME6zkRDSDPT5UgcpFEMz7fZK4vTVQgGs7LX7mPdYTgGME8qy68ZpXhDbynKHouS29Pm" ], "script": "base64:BwIxCAISAwoBCBIECgICGBIECgICGBIECgICGBIECgICGBIECgICGBIECgICGBIECgICGDoACXNlcGFyYXRvcgICX18AC3dhdmVzU3RyaW5nAgVXQVZFUwAQY29udHJhY3RGaWxlbmFtZQIXbWVtZV9pbV9jYWxjdWxhdG9yLnJpZGUABW11bHQ4AIDC1y8BB3dyYXBFcnIBAXMJAKwCAgkArAICBRBjb250cmFjdEZpbGVuYW1lAgI6IAUBcwEIdGhyb3dFcnIBAXMJAAIBCQEHd3JhcEVycgEFAXMBD3ZhbGlkYXRlQWRkcmVzcwEHYWRkcmVzcwkBCWlzRGVmaW5lZAEJAKYIAQUHYWRkcmVzcwAMU1RBVFVTX0VNUFRZAAAADFNUQVRVU19SRUFEWQABABVTVEFUVVNfVEFSR0VUX1JFQUNIRUQAAgASU1RBVFVTX1RSQU5TRkVSUkVEAAMACWtTaHV0ZG93bgIOc2h1dGRvd25fX2ZsYWcAC2tQcmljZUFzc2V0AgxwcmljZV9fYXNzZXQADmtMaXN0aW5nVm9sdW1lAg9saXN0aW5nX192b2x1bWUADGtDcmVhdGlvbkZlZQISc2V0dXBfX2NyZWF0aW9uRmVlAAxrQ3VydmVUYXJnZXQCEnNldHVwX19jdXJ2ZVRhcmdldAARa1ZpcnR1YWxMaXF1aWRpdHkCF3NldHVwX192aXJ0dWFsTGlxdWlkaXR5AA9rUG9vbFRva2Vuc0xpc3QCD3N0YXRpY190b2tlbklkcwARa1Bvb2xDb250cmFjdEhhc2gCFHBvb2xfX2NvbnRyYWN0X19oYXNoABNrTGFzdEVtcHR5UG9vbEluZGV4AhdsYXN0X19lbXB0eV9wb29sX19pbmRleAAUa0ZpcnN0RW1wdHlQb29sSW5kZXgCGWZpcnN0X19lbXB0eV9fcG9vbF9faW5kZXgBFWtQb29sQWRkcmVzc0Zyb21JbmRleAEFaW5kZXgJALkJAgkAzAgCAgRwb29sCQDMCAIJAKQDAQUFaW5kZXgFA25pbAUJc2VwYXJhdG9yARVrUG9vbEluZGV4RnJvbUFkZHJlc3MBB2FkZHJlc3MJALkJAgkAzAgCAgRwb29sCQDMCAIJAKUIAQUHYWRkcmVzcwUDbmlsBQlzZXBhcmF0b3IBCmtQb29sQXNzZXQBB2FkZHJlc3MJALkJAgkAzAgCAgVhc3NldAkAzAgCCQClCAEFB2FkZHJlc3MFA25pbAUJc2VwYXJhdG9yAQtrUG9vbFN0YXR1cwEFaW5kZXgJALkJAgkAzAgCAgRwb29sCQDMCAICBnN0YXR1cwkAzAgCCQCkAwEFBWluZGV4BQNuaWwFCXNlcGFyYXRvcgAPa0ZhY3RvcnlBZGRyZXNzAhBmYWN0b3J5X19hZGRyZXNzABRmYWN0b3J5QWRkcmVzc09wdGlvbgQHJG1hdGNoMAkAnQgCBQR0aGlzBQ9rRmFjdG9yeUFkZHJlc3MDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQCmCAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAA5mYWN0b3J5QWRkcmVzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBRRmYWN0b3J5QWRkcmVzc09wdGlvbgkBB3dyYXBFcnIBAhdpbnZhbGlkIGZhY3RvcnkgYWRkcmVzcwAOa1d4U3dhcEFkZHJlc3MCD3d4c3dhcF9fYWRkcmVzcwATd3hTd2FwQWRkcmVzc09wdGlvbgQHJG1hdGNoMAkAnQgCBQ5mYWN0b3J5QWRkcmVzcwUOa1d4U3dhcEFkZHJlc3MDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQCmCAEFAXMFBHVuaXQADXd4U3dhcEFkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgUTd3hTd2FwQWRkcmVzc09wdGlvbgkBB3dyYXBFcnIBAhdpbnZhbGlkIHd4IHN3YXAgYWRkcmVzcwAUa0ZlZUNvbGxlY3RvckFkZHJlc3MCDXd4ZmVlX2FkZHJlc3MAGWZlZUNvbGxlY3RvckFkZHJlc3NPcHRpb24EByRtYXRjaDAJAJ0IAgUOZmFjdG9yeUFkZHJlc3MFFGtGZWVDb2xsZWN0b3JBZGRyZXNzAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkApggBBQFzBQR1bml0ABNmZWVDb2xsZWN0b3JBZGRyZXNzCQETdmFsdWVPckVycm9yTWVzc2FnZQIFGWZlZUNvbGxlY3RvckFkZHJlc3NPcHRpb24JAQd3cmFwRXJyAQIdaW52YWxpZCBmZWUgY29sbGVjdG9yIGFkZHJlc3MAEWtVc2VyUG9vbHNBZGRyZXNzAhF1c2VycG9vbHNfYWRkcmVzcwAWdXNlclBvb2xzQWRkcmVzc09wdGlvbgQHJG1hdGNoMAkAnQgCBQ5mYWN0b3J5QWRkcmVzcwURa1VzZXJQb29sc0FkZHJlc3MDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQCmCAEFAXMFBHVuaXQAEHVzZXJQb29sc0FkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgUWdXNlclBvb2xzQWRkcmVzc09wdGlvbgkBB3dyYXBFcnIBAh9pbnZhbGlkIHVzZXJfcG9vbHMgZGFwcCBhZGRyZXNzABJrQXNzZXRTdG9yZUFkZHJlc3MCEmFzc2V0c3RvcmVfYWRkcmVzcwAXYXNzZXRTdG9yZUFkZHJlc3NPcHRpb24EByRtYXRjaDAJAJ0IAgUOZmFjdG9yeUFkZHJlc3MFEmtBc3NldFN0b3JlQWRkcmVzcwMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAKYIAQUBcwUEdW5pdAARYXNzZXRTdG9yZUFkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgUXYXNzZXRTdG9yZUFkZHJlc3NPcHRpb24JAQd3cmFwRXJyAQIgaW52YWxpZCBhc3NldF9zdG9yZSBkYXBwIGFkZHJlc3MACHNodXRkb3duCQELdmFsdWVPckVsc2UCCQCbCAIFDmZhY3RvcnlBZGRyZXNzBQlrU2h1dGRvd24HAA5sYXN0RW1wdHlJbmRleAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ5mYWN0b3J5QWRkcmVzcwUTa0xhc3RFbXB0eVBvb2xJbmRleAAAAA9maXJzdEVtcHR5SW5kZXgJAQt2YWx1ZU9yRWxzZQIJAJoIAgUOZmFjdG9yeUFkZHJlc3MFFGtGaXJzdEVtcHR5UG9vbEluZGV4AAAADWxpc3RpbmdWb2x1bWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUOZmFjdG9yeUFkZHJlc3MFDmtMaXN0aW5nVm9sdW1lAAAAC2NyZWF0aW9uRmVlCQELdmFsdWVPckVsc2UCCQCaCAIFDmZhY3RvcnlBZGRyZXNzBQxrQ3JlYXRpb25GZWUAAAAQcG9vbENvbnRyYWN0SGFzaAkAnAgCBQ5mYWN0b3J5QWRkcmVzcwURa1Bvb2xDb250cmFjdEhhc2gBDHBhcnNlQXNzZXRJZAEFaW5wdXQDCQAAAgUFaW5wdXQFC3dhdmVzU3RyaW5nBQR1bml0CQDZBAEFBWlucHV0AQ9hc3NldElkVG9TdHJpbmcBBWlucHV0AwkAAAIFBWlucHV0BQR1bml0BQt3YXZlc1N0cmluZwkA2AQBCQEFdmFsdWUBBQVpbnB1dAELbXVzdEFkZHJlc3MCBmNhbGxlcgdhZGRyZXNzAwkAAAIFBmNhbGxlcgUHYWRkcmVzcwYJAQh0aHJvd0VycgECEXBlcm1pc3Npb24gZGVuaWVkAQhtdXN0VGhpcwEGY2FsbGVyCQELbXVzdEFkZHJlc3MCBQZjYWxsZXIFBHRoaXMBC211c3RGYWN0b3J5AQZjYWxsZXIJAQttdXN0QWRkcmVzcwIFBmNhbGxlcgUOZmFjdG9yeUFkZHJlc3MBE2NoZWNrQ29udHJhY3RTY3JpcHQBB2FkZHJlc3MEByRtYXRjaDAFEHBvb2xDb250cmFjdEhhc2gDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQEaGFzaAUHJG1hdGNoMAkAAAIJAPEHAQUHYWRkcmVzcwUEaGFzaAYBDGlzUG9vbEV4aXN0cwELcG9vbEFkZHJlc3MJAQlpc0RlZmluZWQBCQCaCAIFDmZhY3RvcnlBZGRyZXNzCQEVa1Bvb2xJbmRleEZyb21BZGRyZXNzAQULcG9vbEFkZHJlc3MBCWdldFBvb2xJZAELcG9vbEFkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQ5mYWN0b3J5QWRkcmVzcwkBFWtQb29sSW5kZXhGcm9tQWRkcmVzcwEFC3Bvb2xBZGRyZXNzAhNwb29sIGRvZXNuJ3QgZXhpc3RzARNpc1Bvb2xUYXJnZXRSZWFjaGVkAQtwb29sQWRkcmVzcwQKcG9vbFN0YXR1cwkBC3ZhbHVlT3JFbHNlAgkAmggCBQ5mYWN0b3J5QWRkcmVzcwkBC2tQb29sU3RhdHVzAQkBCWdldFBvb2xJZAEFC3Bvb2xBZGRyZXNzAP///////////wEJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFFVNUQVRVU19UQVJHRVRfUkVBQ0hFRAkAzAgCBRJTVEFUVVNfVFJBTlNGRVJSRUQFA25pbAUKcG9vbFN0YXR1cwEKZ2V0QmFsYW5jZQIHYWRkcmVzcwdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAmlkBQckbWF0Y2gwCQDwBwIFB2FkZHJlc3MFAmlkCAkA7wcBBQdhZGRyZXNzCWF2YWlsYWJsZQEOaXNXeFN3YXBBY3RpdmUCEWFtb3VudEFzc2V0U3RyaW5nEHByaWNlQXNzZXRTdHJpbmcECXN0YXR1c0tleQkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgZzdGF0dXMJAMwIAgURYW1vdW50QXNzZXRTdHJpbmcJAMwIAgUQcHJpY2VBc3NldFN0cmluZwUDbmlsBQlzZXBhcmF0b3IEEHN0YXR1c0tleVJldmVyc2UJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIGc3RhdHVzCQDMCAIFEHByaWNlQXNzZXRTdHJpbmcJAMwIAgURYW1vdW50QXNzZXRTdHJpbmcFA25pbAUJc2VwYXJhdG9yBApwYWlyU3RhdHVzCQELdmFsdWVPckVsc2UCCQCdCAIFEHVzZXJQb29sc0FkZHJlc3MFCXN0YXR1c0tleQIABBFyZXZlcnNlUGFpclN0YXR1cwkBC3ZhbHVlT3JFbHNlAgkAnQgCBRB1c2VyUG9vbHNBZGRyZXNzBRBzdGF0dXNLZXlSZXZlcnNlAgADCQAAAgUKcGFpclN0YXR1cwIGYWN0aXZlBgkAAAIFEXJldmVyc2VQYWlyU3RhdHVzAgZhY3RpdmUBB2dlbkxvZ28BB2Fzc2V0SWQECyR0MDU0Mjk1NzEyBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWIFByRtYXRjaDAEBG5hbWUEByRtYXRjaDEJAOwHAQUBYgMJAAECBQckbWF0Y2gxAgVBc3NldAQBYQUHJG1hdGNoMQgFAWEEbmFtZQIBJQkAlAoCCQCkAwEJAGoCCQCxCQEFAWIA6AIFBG5hbWUJAJQKAgIDMjAwAgVXQVZFUwQFY29sb3IIBQskdDA1NDI5NTcxMgJfMQQJYXNzZXROYW1lCAULJHQwNTQyOTU3MTICXzIEBGxvZ28JAKwCAgkArAICCQCsAgIJAKwCAgJhPHN2ZyB3aWR0aD0nMzAnIGhlaWdodD0nMzAnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+PGNpcmNsZSBjeD0nMTUnIGN5PScxNScgZmlsbD0naHNsKAUFY29sb3ICaiwgNzAlLCA3MCUpJyByPScxNScvPjx0ZXh0IHg9JzUwJScgeT0nNTAlJyB0ZXh0LWFuY2hvcj0nbWlkZGxlJyBkb21pbmFudC1iYXNlbGluZT0nbWlkZGxlJyBmb250LXNpemU9JzE4Jz4JAK8CAgUJYXNzZXROYW1lAAECDTwvdGV4dD48L3N2Zz4FBGxvZ28IAWkBBGluaXQBEWZhY3RvcnlBZGRyZXNzU3RyBAtjaGVja0NhbGxlcgkBCG11c3RUaGlzAQgFAWkGY2FsbGVyAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgkAzAgCCQELU3RyaW5nRW50cnkCBQ9rRmFjdG9yeUFkZHJlc3MFEWZhY3RvcnlBZGRyZXNzU3RyBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEMYWRkRW1wdHlQb29sAg9jYWxsZXJQdWJsaWNLZXkEYXJncwQObmV3UG9vbEFkZHJlc3MJAKcIAQUPY2FsbGVyUHVibGljS2V5BAxuZXdQb29sSW5kZXgJAGQCBQ5sYXN0RW1wdHlJbmRleAABBAZjaGVja3MJAMwIAgMJAQEhAQUIc2h1dGRvd24GCQEIdGhyb3dFcnIBAhZub3QgYWxsb3dlZCAoc2h1dGRvd24pCQDMCAIDCQETY2hlY2tDb250cmFjdFNjcmlwdAEFDm5ld1Bvb2xBZGRyZXNzBgkBCHRocm93RXJyAQIacG9vbCBzY3JpcHQgaXMgbm90IGFsbG93ZWQJAMwIAgMJAQEhAQkBDGlzUG9vbEV4aXN0cwEFDm5ld1Bvb2xBZGRyZXNzBgkBCHRocm93RXJyAQIicG9vbCBhZGRyZXNzIGlzIGFscmVhZHkgcmVnaXN0ZXJlZAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBA5mYWN0b3J5QWN0aW9ucwkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgxpbnRlZ2VyRW50cnkJAMwIAgUTa0xhc3RFbXB0eVBvb2xJbmRleAkAzAgCBQxuZXdQb29sSW5kZXgFA25pbAUDbmlsCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCC3N0cmluZ0VudHJ5CQDMCAIJARVrUG9vbEFkZHJlc3NGcm9tSW5kZXgBBQxuZXdQb29sSW5kZXgJAMwIAgkApQgBBQ5uZXdQb29sQWRkcmVzcwUDbmlsBQNuaWwJAMwIAgkA/AcEBQ5mYWN0b3J5QWRkcmVzcwIMaW50ZWdlckVudHJ5CQDMCAIJARVrUG9vbEluZGV4RnJvbUFkZHJlc3MBBQ5uZXdQb29sQWRkcmVzcwkAzAgCBQxuZXdQb29sSW5kZXgFA25pbAUDbmlsCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCDGludGVnZXJFbnRyeQkAzAgCCQELa1Bvb2xTdGF0dXMBBQxuZXdQb29sSW5kZXgJAMwIAgUMU1RBVFVTX0VNUFRZBQNuaWwFA25pbAUDbmlsCQCUCgIFA25pbAUOZmFjdG9yeUFjdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKY3JlYXRlUG9vbAIPY2FsbGVyUHVibGljS2V5BGFyZ3MECm1pblBheW1lbnQJAGQCBQ1saXN0aW5nVm9sdW1lBQtjcmVhdGlvbkZlZQQGY2hlY2tzCQDMCAIDCQEBIQEFCHNodXRkb3duBgkBCHRocm93RXJyAQISVGVtcG9yYXJ5IHNodXRkb3duCQDMCAIJAQttdXN0RmFjdG9yeQEIBQFpBmNhbGxlcgkAzAgCAwkAZgIJAGUCBQ5sYXN0RW1wdHlJbmRleAUPZmlyc3RFbXB0eUluZGV4AAAGCQEIdGhyb3dFcnIBAhdObyBlbXB0eSBwb29sIGF2YWlsYWJsZQkAzAgCAwkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUEdW5pdAYJAQh0aHJvd0VycgECGlBheW1lbnQgc2hvdWxkIGJlIGluIFdBVkVTCQDMCAIDCQBnAggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFCm1pblBheW1lbnQGCQEIdGhyb3dFcnIBCQCsAgIJAKwCAgIjUGF5bWVudCBzaG91bGQgYmUgZ3JlYXRlciBvciBlcXVhbCAJAKQDAQUKbWluUGF5bWVudAIIIFdBVkVMRVQJAMwIAgMJAQlpc0RlZmluZWQBCQCRAwIFBGFyZ3MAAAYJAQh0aHJvd0VycgECGlRva2VuIG5hbWUgaXMgbm90IHByb3ZpZGVkCQDMCAIDCQEJaXNEZWZpbmVkAQkAkQMCBQRhcmdzAAEGCQEIdGhyb3dFcnIBAiFUb2tlbiBkZXNjcmlwdGlvbiBpcyBub3QgcHJvdmlkZWQJAMwIAgMJAQlpc0RlZmluZWQBCQCRAwIFBGFyZ3MAAgYJAQh0aHJvd0VycgECHlRva2VuIHF1YW50aXR5IGlzIG5vdCBwcm92aWRlZAkAzAgCAwkBAiE9AgkAtgkBCQCRAwIFBGFyZ3MAAgUEdW5pdAYJAQh0aHJvd0VycgECIVRva2VuIHF1YW50aXR5IHNob3VsZCBiZSBhIG51bWJlcgUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBAlwb29sSW5kZXgJAGQCBQ9maXJzdEVtcHR5SW5kZXgAAQQRcG9vbEFkZHJlc3NTdHJpbmcJARFAZXh0ck5hdGl2ZSgxMDUzKQIFDmZhY3RvcnlBZGRyZXNzCQEVa1Bvb2xBZGRyZXNzRnJvbUluZGV4AQUJcG9vbEluZGV4BAtwb29sQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQURcG9vbEFkZHJlc3NTdHJpbmcEDWNhbGxlckFkZHJlc3MJAKcIAQUPY2FsbGVyUHVibGljS2V5BApwb29sRG9tYWluCQCvAgIFEXBvb2xBZGRyZXNzU3RyaW5nAAgECXBvb2xPd25lcgkApQgBBQ1jYWxsZXJBZGRyZXNzBAl0b2tlbk5hbWUJAJEDAgUEYXJncwAABAl0b2tlbkRlc2MJAJEDAgUEYXJncwABBA10b2tlblF1YW50aXR5CQCRAwIFBGFyZ3MAAgQOaW5pdFBvb2xJbnZva2UJAPwHBAUOZmFjdG9yeUFkZHJlc3MCDmluaXRQb29sSW52b2tlCQDMCAIFEXBvb2xBZGRyZXNzU3RyaW5nCQDMCAIJAMwIAgUKcG9vbERvbWFpbgkAzAgCBQlwb29sT3duZXIJAMwIAgUJdG9rZW5OYW1lCQDMCAIFCXRva2VuRGVzYwkAzAgCBQ10b2tlblF1YW50aXR5BQNuaWwFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUDbmlsAwkAAAIFDmluaXRQb29sSW52b2tlBQ5pbml0UG9vbEludm9rZQQOZmFjdG9yeUFjdGlvbnMJAMwIAgkA/AcEBQ5mYWN0b3J5QWRkcmVzcwIMaW50ZWdlckVudHJ5CQDMCAIFFGtGaXJzdEVtcHR5UG9vbEluZGV4CQDMCAIFCXBvb2xJbmRleAUDbmlsBQNuaWwJAMwIAgkA/AcEBQ5mYWN0b3J5QWRkcmVzcwIMaW50ZWdlckVudHJ5CQDMCAIJAQtrUG9vbFN0YXR1cwEFCXBvb2xJbmRleAkAzAgCBQxTVEFUVVNfUkVBRFkFA25pbAUDbmlsBQNuaWwJAJQKAgUDbmlsBQ5mYWN0b3J5QWN0aW9ucwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARJub3RpZnlTdGF0dXNVcGRhdGUCD2NhbGxlclB1YmxpY0tleQRhcmdzBAtwb29sQWRkcmVzcwkApwgBBQ9jYWxsZXJQdWJsaWNLZXkEBmNoZWNrcwkAzAgCAwkBDGlzUG9vbEV4aXN0cwEFC3Bvb2xBZGRyZXNzBgkBCHRocm93RXJyAQIOcG9vbCBub3QgZm91bmQJAMwIAgkBC211c3RGYWN0b3J5AQgFAWkGY2FsbGVyBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MECXBvb2xJbmRleAkBEUBleHRyTmF0aXZlKDEwNTApAgUOZmFjdG9yeUFkZHJlc3MJARVrUG9vbEluZGV4RnJvbUFkZHJlc3MBBQtwb29sQWRkcmVzcwQJbmV3U3RhdHVzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEYXJncwAABA5mYWN0b3J5QWN0aW9ucwkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgxpbnRlZ2VyRW50cnkJAMwIAgkBC2tQb29sU3RhdHVzAQUJcG9vbEluZGV4CQDMCAIFCW5ld1N0YXR1cwUDbmlsBQNuaWwFA25pbAkAlAoCBQNuaWwFDmZhY3RvcnlBY3Rpb25zCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFmlzV3hTd2FwQWN0aXZlUkVBRE9OTFkCD2NhbGxlclB1YmxpY0tleQRhcmdzBBNhbW91bnRBc3NldElkU3RyaW5nCQCRAwIFBGFyZ3MAAAQScHJpY2VBc3NldElkU3RyaW5nCQCRAwIFBGFyZ3MAAQQGY2hlY2tzCQDMCAIJAQttdXN0RmFjdG9yeQEIBQFpBmNhbGxlcgUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzCQCUCgIFA25pbAkBDmlzV3hTd2FwQWN0aXZlAgUTYW1vdW50QXNzZXRJZFN0cmluZwUScHJpY2VBc3NldElkU3RyaW5nCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDHN3YXBSRUFET05MWQIPY2FsbGVyUHVibGljS2V5BGFyZ3MEC3Bvb2xBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFBGFyZ3MAAAQTYW1vdW50QXNzZXRJZFN0cmluZwkAkQMCBQRhcmdzAAEEEnByaWNlQXNzZXRJZFN0cmluZwkAkQMCBQRhcmdzAAIEBmFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGFyZ3MAAwQGY2hlY2tzCQDMCAIDCQEBIQEFCHNodXRkb3duBgkBCHRocm93RXJyAQISVGVtcG9yYXJ5IHNodXRkb3duCQDMCAIJAQttdXN0RmFjdG9yeQEIBQFpBmNhbGxlcgUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzAwkBE2lzUG9vbFRhcmdldFJlYWNoZWQBBQtwb29sQWRkcmVzcwQMd3hTd2FwUmVzdWx0CgABQAkA/AcEBQ13eFN3YXBBZGRyZXNzAhVzd2FwQ2FsY3VsYXRlUkVBRE9OTFkJAMwIAgUGYW1vdW50CQDMCAIFE2Ftb3VudEFzc2V0SWRTdHJpbmcJAMwIAgUScHJpY2VBc3NldElkU3RyaW5nBQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQJAJQKAgUDbmlsCQCUCgIFDHd4U3dhcFJlc3VsdAIGV3hTd2FwBA5wb29sU3dhcFJlc3VsdAoAAUAJAPwHBAULcG9vbEFkZHJlc3MCDHN3YXBSZWFkT25seQkAzAgCBRNhbW91bnRBc3NldElkU3RyaW5nCQDMCAIFEnByaWNlQXNzZXRJZFN0cmluZwkAzAgCBQZhbW91bnQFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAkAlAoCBQNuaWwJAJQKAgUOcG9vbFN3YXBSZXN1bHQCCWlNZW1lUG9vbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQRzd2FwAg9jYWxsZXJQdWJsaWNLZXkEYXJncwQNY2FsbGVyQWRkcmVzcwkApwgBBQ9jYWxsZXJQdWJsaWNLZXkEC3Bvb2xBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFBGFyZ3MAAAQScHJpY2VBc3NldElkU3RyaW5nCQCRAwIFBGFyZ3MAAQQMcHJpY2VBc3NldElkCQEMcGFyc2VBc3NldElkAQUScHJpY2VBc3NldElkU3RyaW5nBA1taW5pbXVtQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEYXJncwACBA1hc3NldEluQW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQOYXNzZXRJbkFzc2V0SWQICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQGY2hlY2tzCQDMCAIDCQEBIQEFCHNodXRkb3duBgkBCHRocm93RXJyAQISVGVtcG9yYXJ5IHNodXRkb3duCQDMCAIJAQttdXN0RmFjdG9yeQEIBQFpBmNhbGxlcgkAzAgCAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQYJAQh0aHJvd0VycgECH2V4YWN0bHkgb25lIHBheW1lbnQgaXMgZXhwZWN0ZWQFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQVb3V0QXNzZXRCYWxhbmNlQmVmb3JlCQEKZ2V0QmFsYW5jZQIFBHRoaXMFDHByaWNlQXNzZXRJZAMJAAACBRVvdXRBc3NldEJhbGFuY2VCZWZvcmUFFW91dEFzc2V0QmFsYW5jZUJlZm9yZQQKc3dhcEFjdGlvbgMJARNpc1Bvb2xUYXJnZXRSZWFjaGVkAQULcG9vbEFkZHJlc3MJAP0HBAUNd3hTd2FwQWRkcmVzcwIEc3dhcAkAzAgCBQ1taW5pbXVtQW1vdW50CQDMCAIFEnByaWNlQXNzZXRJZFN0cmluZwkAzAgCCQClCAEFBHRoaXMFA25pbAgFAWkIcGF5bWVudHMJAPwHBAULcG9vbEFkZHJlc3MCBHN3YXAJAMwIAgUScHJpY2VBc3NldElkU3RyaW5nCQDMCAIFDW1pbmltdW1BbW91bnQFA25pbAgFAWkIcGF5bWVudHMDCQAAAgUKc3dhcEFjdGlvbgUKc3dhcEFjdGlvbgQUb3V0QXNzZXRCYWxhbmNlQWZ0ZXIJAQpnZXRCYWxhbmNlAgUEdGhpcwUMcHJpY2VBc3NldElkAwkAAAIFFG91dEFzc2V0QmFsYW5jZUFmdGVyBRRvdXRBc3NldEJhbGFuY2VBZnRlcgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ1jYWxsZXJBZGRyZXNzCQBlAgUUb3V0QXNzZXRCYWxhbmNlQWZ0ZXIFFW91dEFzc2V0QmFsYW5jZUJlZm9yZQUMcHJpY2VBc3NldElkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEMdHJhbnNmZXJQb29sAg9jYWxsZXJQdWJsaWNLZXkEYXJncwQNY2FsbGVyQWRkcmVzcwkApwgBBQ9jYWxsZXJQdWJsaWNLZXkEC3Bvb2xBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFBGFyZ3MAAAQUcG9vbFRva2Vuc1N0cmluZ0xpc3QJALUJAgkBEUBleHRyTmF0aXZlKDEwNTMpAgULcG9vbEFkZHJlc3MFD2tQb29sVG9rZW5zTGlzdAIBLAQGYXNzZXQxCQEMcGFyc2VBc3NldElkAQkAkQMCBRRwb29sVG9rZW5zU3RyaW5nTGlzdAAABAZhc3NldDIJAQxwYXJzZUFzc2V0SWQBCQCRAwIFFHBvb2xUb2tlbnNTdHJpbmdMaXN0AAEEDSR0MDEyNDg1MTI1NzcDCQAAAgUGYXNzZXQxBQR1bml0CQCUCgIFBmFzc2V0MgUGYXNzZXQxCQCUCgIFBmFzc2V0MQUGYXNzZXQyBAlwb29sQXNzZXQIBQ0kdDAxMjQ4NTEyNTc3Al8xBAp3YXZlc0Fzc2V0CAUNJHQwMTI0ODUxMjU3NwJfMgQWcG9vbEFzc2V0QmFsYW5jZUJlZm9yZQkBCmdldEJhbGFuY2UCBQ5mYWN0b3J5QWRkcmVzcwUJcG9vbEFzc2V0AwkAAAIFFnBvb2xBc3NldEJhbGFuY2VCZWZvcmUFFnBvb2xBc3NldEJhbGFuY2VCZWZvcmUEF3dhdmVzQXNzZXRCYWxhbmNlQmVmb3JlCQEKZ2V0QmFsYW5jZQIFDmZhY3RvcnlBZGRyZXNzBQp3YXZlc0Fzc2V0AwkAAAIFF3dhdmVzQXNzZXRCYWxhbmNlQmVmb3JlBRd3YXZlc0Fzc2V0QmFsYW5jZUJlZm9yZQQOd2l0aGRyYXdJbnZva2UJAPwHBAUOZmFjdG9yeUFkZHJlc3MCGXdpdGhkcmF3TGlxdWlkaXR5RnJvbVBvb2wJAMwIAggFC3Bvb2xBZGRyZXNzBWJ5dGVzBQNuaWwFA25pbAMJAAACBQ53aXRoZHJhd0ludm9rZQUOd2l0aGRyYXdJbnZva2UEFXBvb2xBc3NldEJhbGFuY2VBZnRlcgkBCmdldEJhbGFuY2UCBQ5mYWN0b3J5QWRkcmVzcwUJcG9vbEFzc2V0AwkAAAIFFXBvb2xBc3NldEJhbGFuY2VBZnRlcgUVcG9vbEFzc2V0QmFsYW5jZUFmdGVyBBZ3YXZlc0Fzc2V0QmFsYW5jZUFmdGVyCQEKZ2V0QmFsYW5jZQIFDmZhY3RvcnlBZGRyZXNzBQp3YXZlc0Fzc2V0AwkAAAIFFndhdmVzQXNzZXRCYWxhbmNlQWZ0ZXIFFndhdmVzQXNzZXRCYWxhbmNlQWZ0ZXIED3Bvb2xBc3NldEFtb3VudAkAZQIFFXBvb2xBc3NldEJhbGFuY2VBZnRlcgUWcG9vbEFzc2V0QmFsYW5jZUJlZm9yZQQLd2F2ZXNBbW91bnQJAGUCBRZ3YXZlc0Fzc2V0QmFsYW5jZUFmdGVyBRd3YXZlc0Fzc2V0QmFsYW5jZUJlZm9yZQQEbG9nbwkBB2dlbkxvZ28BBQlwb29sQXNzZXQDAwkAZgIFD3Bvb2xBc3NldEFtb3VudAAACQBmAgULd2F2ZXNBbW91bnQAAAcECmJ1cm5BbW91bnQJAGsDBQ9wb29sQXNzZXRBbW91bnQAFABkBApidXJuQWN0aW9uCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgRidXJuCQDMCAIFCXBvb2xBc3NldAkAzAgCBQpidXJuQW1vdW50BQNuaWwFA25pbAMJAAACBQpidXJuQWN0aW9uBQpidXJuQWN0aW9uBA5mZWVXYXZlc0Ftb3VudAkAawMFC3dhdmVzQW1vdW50ABQAZAQJZmVlQWN0aW9uCQD8BwQFDmZhY3RvcnlBZGRyZXNzAg10cmFuc2ZlcldhdmVzCQDMCAIIBRNmZWVDb2xsZWN0b3JBZGRyZXNzBWJ5dGVzCQDMCAIFDmZlZVdhdmVzQW1vdW50BQNuaWwFA25pbAMJAAACBQlmZWVBY3Rpb24FCWZlZUFjdGlvbgQTcmVnaXN0ZXJBc3NldEFjdGlvbgkA/AcEBQ5mYWN0b3J5QWRkcmVzcwINcmVnaXN0ZXJBc3NldAkAzAgCCAURYXNzZXRTdG9yZUFkZHJlc3MFYnl0ZXMJAMwIAgkBD2Fzc2V0SWRUb1N0cmluZwEFCXBvb2xBc3NldAkAzAgCBQRsb2dvCQDMCAIGBQNuaWwFA25pbAMJAAACBRNyZWdpc3RlckFzc2V0QWN0aW9uBRNyZWdpc3RlckFzc2V0QWN0aW9uBBJjcmVhdGVXeFBvb2xBY3Rpb24JAPwHBAUOZmFjdG9yeUFkZHJlc3MCDGNyZWF0ZVd4UG9vbAkAzAgCCAUQdXNlclBvb2xzQWRkcmVzcwVieXRlcwkAzAgCCQEPYXNzZXRJZFRvU3RyaW5nAQUJcG9vbEFzc2V0CQDMCAIJAGUCBQ9wb29sQXNzZXRBbW91bnQFCmJ1cm5BbW91bnQJAMwIAgkBD2Fzc2V0SWRUb1N0cmluZwEFCndhdmVzQXNzZXQJAMwIAgkAZQIFC3dhdmVzQW1vdW50BQ5mZWVXYXZlc0Ftb3VudAUDbmlsBQNuaWwDCQAAAgUSY3JlYXRlV3hQb29sQWN0aW9uBRJjcmVhdGVXeFBvb2xBY3Rpb24EDGNoYW5nZVN0YXR1cwkA/AcEBQ5mYWN0b3J5QWRkcmVzcwIMaW50ZWdlckVudHJ5CQDMCAIJAQtrUG9vbFN0YXR1cwEJAQlnZXRQb29sSWQBBQtwb29sQWRkcmVzcwkAzAgCBRJTVEFUVVNfVFJBTlNGRVJSRUQFA25pbAUDbmlsAwkAAAIFDGNoYW5nZVN0YXR1cwUMY2hhbmdlU3RhdHVzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAQh0aHJvd0VycgECJXdpdGhkcmF3biBhbW91bnQgZnJvbSBwb29sIGlzIHRvbyBsb3cJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkABBNrZXlBZG1pbkFkZHJlc3NMaXN0AhQlc19fYWRtaW5BZGRyZXNzTGlzdAQOa2V5QWxsb3dlZFR4SWQCCCVzX190eElkBAlhZG1pbkxpc3QJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ5mYWN0b3J5QWRkcmVzcwUTa2V5QWRtaW5BZGRyZXNzTGlzdAIAAgJfXwQHYnlPd25lcgMJAGcCCQCQAwEFCWFkbWluTGlzdAADBwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleQQIYnlBZG1pbnMJAAACCAUCdHgCaWQJANkEAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ5mYWN0b3J5QWRkcmVzcwUOa2V5QWxsb3dlZFR4SWQCAAMFCGJ5QWRtaW5zBgUHYnlPd25lcvovWms=", "height": 3423028, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 36eQMJnqu2CeK2W9DQP5LGNxFxz69LQqPuB5SauwJwiD Next: 5y9zXER3ZSysS1Y88jSMq5m9CApPAEAecdscJPtxKFDC Diff:
OldNewDifferences
393393 if ((bj == bj))
394394 then {
395395 let bk = if (ak(ai))
396- then invoke(I, "swap", [bg, ba, toString(this)], aF.payments)
396+ then reentrantInvoke(I, "swap", [bg, ba, toString(this)], aF.payments)
397397 else invoke(ai, "swap", [ba, bg], aF.payments)
398398 if ((bk == bk))
399399 then {
429429 let bt = am(F, br)
430430 if ((bt == bt))
431431 then {
432- let bu = reentrantInvoke(F, "withdrawLiquidityFromPool", [ai.bytes], nil)
432+ let bu = invoke(F, "withdrawLiquidityFromPool", [ai.bytes], nil)
433433 if ((bu == bu))
434434 then {
435435 let bv = am(F, bq)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 7 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = "WAVES"
77
88 let c = "meme_im_calculator.ride"
99
1010 let d = 100000000
1111
1212 func e (f) = ((c + ": ") + f)
1313
1414
1515 func g (f) = throw(e(f))
1616
1717
1818 func h (i) = isDefined(addressFromString(i))
1919
2020
2121 let j = 0
2222
2323 let k = 1
2424
2525 let l = 2
2626
2727 let m = 3
2828
2929 let n = "shutdown__flag"
3030
3131 let o = "price__asset"
3232
3333 let p = "listing__volume"
3434
3535 let q = "setup__creationFee"
3636
3737 let r = "setup__curveTarget"
3838
3939 let s = "setup__virtualLiquidity"
4040
4141 let t = "static_tokenIds"
4242
4343 let u = "pool__contract__hash"
4444
4545 let v = "last__empty_pool__index"
4646
4747 let w = "first__empty__pool__index"
4848
4949 func x (y) = makeString(["pool", toString(y)], a)
5050
5151
5252 func z (i) = makeString(["pool", toString(i)], a)
5353
5454
5555 func A (i) = makeString(["asset", toString(i)], a)
5656
5757
5858 func B (y) = makeString(["pool", "status", toString(y)], a)
5959
6060
6161 let C = "factory__address"
6262
6363 let D = {
6464 let E = getString(this, C)
6565 if ($isInstanceOf(E, "String"))
6666 then {
6767 let f = E
6868 addressFromString(f)
6969 }
7070 else if ($isInstanceOf(E, "Unit"))
7171 then unit
7272 else throw("Match error")
7373 }
7474
7575 let F = valueOrErrorMessage(D, e("invalid factory address"))
7676
7777 let G = "wxswap__address"
7878
7979 let H = {
8080 let E = getString(F, G)
8181 if ($isInstanceOf(E, "String"))
8282 then {
8383 let f = E
8484 addressFromString(f)
8585 }
8686 else unit
8787 }
8888
8989 let I = valueOrErrorMessage(H, e("invalid wx swap address"))
9090
9191 let J = "wxfee_address"
9292
9393 let K = {
9494 let E = getString(F, J)
9595 if ($isInstanceOf(E, "String"))
9696 then {
9797 let f = E
9898 addressFromString(f)
9999 }
100100 else unit
101101 }
102102
103103 let L = valueOrErrorMessage(K, e("invalid fee collector address"))
104104
105105 let M = "userpools_address"
106106
107107 let N = {
108108 let E = getString(F, M)
109109 if ($isInstanceOf(E, "String"))
110110 then {
111111 let f = E
112112 addressFromString(f)
113113 }
114114 else unit
115115 }
116116
117117 let O = valueOrErrorMessage(N, e("invalid user_pools dapp address"))
118118
119119 let P = "assetstore_address"
120120
121121 let Q = {
122122 let E = getString(F, P)
123123 if ($isInstanceOf(E, "String"))
124124 then {
125125 let f = E
126126 addressFromString(f)
127127 }
128128 else unit
129129 }
130130
131131 let R = valueOrErrorMessage(Q, e("invalid asset_store dapp address"))
132132
133133 let S = valueOrElse(getBoolean(F, n), false)
134134
135135 let T = valueOrElse(getInteger(F, v), 0)
136136
137137 let U = valueOrElse(getInteger(F, w), 0)
138138
139139 let V = valueOrElse(getInteger(F, p), 0)
140140
141141 let W = valueOrElse(getInteger(F, q), 0)
142142
143143 let X = getBinary(F, u)
144144
145145 func Y (Z) = if ((Z == b))
146146 then unit
147147 else fromBase58String(Z)
148148
149149
150150 func aa (Z) = if ((Z == unit))
151151 then b
152152 else toBase58String(value(Z))
153153
154154
155155 func ab (ac,i) = if ((ac == i))
156156 then true
157157 else g("permission denied")
158158
159159
160160 func ad (ac) = ab(ac, this)
161161
162162
163163 func ae (ac) = ab(ac, F)
164164
165165
166166 func af (i) = {
167167 let E = X
168168 if ($isInstanceOf(E, "ByteVector"))
169169 then {
170170 let ag = E
171171 (scriptHash(i) == ag)
172172 }
173173 else true
174174 }
175175
176176
177177 func ah (ai) = isDefined(getInteger(F, z(ai)))
178178
179179
180180 func aj (ai) = valueOrErrorMessage(getInteger(F, z(ai)), "pool doesn't exists")
181181
182182
183183 func ak (ai) = {
184184 let al = valueOrElse(getInteger(F, B(aj(ai))), -1)
185185 containsElement([l, m], al)
186186 }
187187
188188
189189 func am (i,an) = {
190190 let E = an
191191 if ($isInstanceOf(E, "ByteVector"))
192192 then {
193193 let ao = E
194194 assetBalance(i, ao)
195195 }
196196 else wavesBalance(i).available
197197 }
198198
199199
200200 func ap (aq,ar) = {
201201 let as = makeString(["%s%s%s", "status", aq, ar], a)
202202 let at = makeString(["%s%s%s", "status", ar, aq], a)
203203 let au = valueOrElse(getString(O, as), "")
204204 let av = valueOrElse(getString(O, at), "")
205205 if ((au == "active"))
206206 then true
207207 else (av == "active")
208208 }
209209
210210
211211 func aw (an) = {
212212 let ax = {
213213 let E = an
214214 if ($isInstanceOf(E, "ByteVector"))
215215 then {
216216 let ay = E
217217 let az = {
218218 let aA = assetInfo(ay)
219219 if ($isInstanceOf(aA, "Asset"))
220220 then {
221221 let aB = aA
222222 aB.name
223223 }
224224 else "%"
225225 }
226226 $Tuple2(toString((toInt(ay) % 360)), az)
227227 }
228228 else $Tuple2("200", "WAVES")
229229 }
230230 let aC = ax._1
231231 let aD = ax._2
232232 let aE = (((("<svg width='30' height='30' xmlns='http://www.w3.org/2000/svg'><circle cx='15' cy='15' fill='hsl(" + aC) + ", 70%, 70%)' r='15'/><text x='50%' y='50%' text-anchor='middle' dominant-baseline='middle' font-size='18'>") + take(aD, 1)) + "</text></svg>")
233233 aE
234234 }
235235
236236
237237 @Callable(aF)
238238 func init (aG) = {
239239 let aH = ad(aF.caller)
240240 if ((aH == aH))
241241 then [StringEntry(C, aG)]
242242 else throw("Strict value is not equal to itself.")
243243 }
244244
245245
246246
247247 @Callable(aF)
248248 func addEmptyPool (aI,aJ) = {
249249 let aK = addressFromPublicKey(aI)
250250 let aL = (T + 1)
251251 let aM = [if (!(S))
252252 then true
253253 else g("not allowed (shutdown)"), if (af(aK))
254254 then true
255255 else g("pool script is not allowed"), if (!(ah(aK)))
256256 then true
257257 else g("pool address is already registered")]
258258 if ((aM == aM))
259259 then {
260260 let aN = [invoke(F, "integerEntry", [v, aL], nil), invoke(F, "stringEntry", [x(aL), toString(aK)], nil), invoke(F, "integerEntry", [z(aK), aL], nil), invoke(F, "integerEntry", [B(aL), j], nil)]
261261 $Tuple2(nil, aN)
262262 }
263263 else throw("Strict value is not equal to itself.")
264264 }
265265
266266
267267
268268 @Callable(aF)
269269 func createPool (aI,aJ) = {
270270 let aO = (V + W)
271271 let aM = [if (!(S))
272272 then true
273273 else g("Temporary shutdown"), ae(aF.caller), if (((T - U) > 0))
274274 then true
275275 else g("No empty pool available"), if ((aF.payments[0].assetId == unit))
276276 then true
277277 else g("Payment should be in WAVES"), if ((aF.payments[0].amount >= aO))
278278 then true
279279 else g((("Payment should be greater or equal " + toString(aO)) + " WAVELET")), if (isDefined(aJ[0]))
280280 then true
281281 else g("Token name is not provided"), if (isDefined(aJ[1]))
282282 then true
283283 else g("Token description is not provided"), if (isDefined(aJ[2]))
284284 then true
285285 else g("Token quantity is not provided"), if ((parseInt(aJ[2]) != unit))
286286 then true
287287 else g("Token quantity should be a number")]
288288 if ((aM == aM))
289289 then {
290290 let aP = (U + 1)
291291 let aQ = getStringValue(F, x(aP))
292292 let ai = addressFromStringValue(aQ)
293293 let aR = addressFromPublicKey(aI)
294294 let aS = take(aQ, 8)
295295 let aT = toString(aR)
296296 let aU = aJ[0]
297297 let aV = aJ[1]
298298 let aW = aJ[2]
299299 let aX = invoke(F, "initPoolInvoke", [aQ, [aS, aT, aU, aV, aW]], [AttachedPayment(aF.payments[0].assetId, aF.payments[0].amount)])
300300 if ((aX == aX))
301301 then {
302302 let aN = [invoke(F, "integerEntry", [w, aP], nil), invoke(F, "integerEntry", [B(aP), k], nil)]
303303 $Tuple2(nil, aN)
304304 }
305305 else throw("Strict value is not equal to itself.")
306306 }
307307 else throw("Strict value is not equal to itself.")
308308 }
309309
310310
311311
312312 @Callable(aF)
313313 func notifyStatusUpdate (aI,aJ) = {
314314 let ai = addressFromPublicKey(aI)
315315 let aM = [if (ah(ai))
316316 then true
317317 else g("pool not found"), ae(aF.caller)]
318318 if ((aM == aM))
319319 then {
320320 let aP = getIntegerValue(F, z(ai))
321321 let aY = parseIntValue(aJ[0])
322322 let aN = [invoke(F, "integerEntry", [B(aP), aY], nil)]
323323 $Tuple2(nil, aN)
324324 }
325325 else throw("Strict value is not equal to itself.")
326326 }
327327
328328
329329
330330 @Callable(aF)
331331 func isWxSwapActiveREADONLY (aI,aJ) = {
332332 let aZ = aJ[0]
333333 let ba = aJ[1]
334334 let aM = [ae(aF.caller)]
335335 if ((aM == aM))
336336 then $Tuple2(nil, ap(aZ, ba))
337337 else throw("Strict value is not equal to itself.")
338338 }
339339
340340
341341
342342 @Callable(aF)
343343 func swapREADONLY (aI,aJ) = {
344344 let ai = addressFromStringValue(aJ[0])
345345 let aZ = aJ[1]
346346 let ba = aJ[2]
347347 let bb = parseIntValue(aJ[3])
348348 let aM = [if (!(S))
349349 then true
350350 else g("Temporary shutdown"), ae(aF.caller)]
351351 if ((aM == aM))
352352 then if (ak(ai))
353353 then {
354354 let bc = {
355355 let bd = invoke(I, "swapCalculateREADONLY", [bb, aZ, ba], nil)
356356 if ($isInstanceOf(bd, "Int"))
357357 then bd
358358 else throw(($getType(bd) + " couldn't be cast to Int"))
359359 }
360360 $Tuple2(nil, $Tuple2(bc, "WxSwap"))
361361 }
362362 else {
363363 let be = {
364364 let bd = invoke(ai, "swapReadOnly", [aZ, ba, bb], nil)
365365 if ($isInstanceOf(bd, "Int"))
366366 then bd
367367 else throw(($getType(bd) + " couldn't be cast to Int"))
368368 }
369369 $Tuple2(nil, $Tuple2(be, "iMemePool"))
370370 }
371371 else throw("Strict value is not equal to itself.")
372372 }
373373
374374
375375
376376 @Callable(aF)
377377 func swap (aI,aJ) = {
378378 let aR = addressFromPublicKey(aI)
379379 let ai = addressFromStringValue(aJ[0])
380380 let ba = aJ[1]
381381 let bf = Y(ba)
382382 let bg = parseIntValue(aJ[2])
383383 let bh = aF.payments[0].amount
384384 let bi = aF.payments[0].assetId
385385 let aM = [if (!(S))
386386 then true
387387 else g("Temporary shutdown"), ae(aF.caller), if ((size(aF.payments) == 1))
388388 then true
389389 else g("exactly one payment is expected")]
390390 if ((aM == aM))
391391 then {
392392 let bj = am(this, bf)
393393 if ((bj == bj))
394394 then {
395395 let bk = if (ak(ai))
396- then invoke(I, "swap", [bg, ba, toString(this)], aF.payments)
396+ then reentrantInvoke(I, "swap", [bg, ba, toString(this)], aF.payments)
397397 else invoke(ai, "swap", [ba, bg], aF.payments)
398398 if ((bk == bk))
399399 then {
400400 let bl = am(this, bf)
401401 if ((bl == bl))
402402 then [ScriptTransfer(aR, (bl - bj), bf)]
403403 else throw("Strict value is not equal to itself.")
404404 }
405405 else throw("Strict value is not equal to itself.")
406406 }
407407 else throw("Strict value is not equal to itself.")
408408 }
409409 else throw("Strict value is not equal to itself.")
410410 }
411411
412412
413413
414414 @Callable(aF)
415415 func transferPool (aI,aJ) = {
416416 let aR = addressFromPublicKey(aI)
417417 let ai = addressFromStringValue(aJ[0])
418418 let bm = split(getStringValue(ai, t), ",")
419419 let bn = Y(bm[0])
420420 let bo = Y(bm[1])
421421 let bp = if ((bn == unit))
422422 then $Tuple2(bo, bn)
423423 else $Tuple2(bn, bo)
424424 let bq = bp._1
425425 let br = bp._2
426426 let bs = am(F, bq)
427427 if ((bs == bs))
428428 then {
429429 let bt = am(F, br)
430430 if ((bt == bt))
431431 then {
432- let bu = reentrantInvoke(F, "withdrawLiquidityFromPool", [ai.bytes], nil)
432+ let bu = invoke(F, "withdrawLiquidityFromPool", [ai.bytes], nil)
433433 if ((bu == bu))
434434 then {
435435 let bv = am(F, bq)
436436 if ((bv == bv))
437437 then {
438438 let bw = am(F, br)
439439 if ((bw == bw))
440440 then {
441441 let bx = (bv - bs)
442442 let by = (bw - bt)
443443 let aE = aw(bq)
444444 if (if ((bx > 0))
445445 then (by > 0)
446446 else false)
447447 then {
448448 let bz = fraction(bx, 20, 100)
449449 let bA = invoke(F, "burn", [bq, bz], nil)
450450 if ((bA == bA))
451451 then {
452452 let bB = fraction(by, 20, 100)
453453 let bC = invoke(F, "transferWaves", [L.bytes, bB], nil)
454454 if ((bC == bC))
455455 then {
456456 let bD = invoke(F, "registerAsset", [R.bytes, aa(bq), aE, true], nil)
457457 if ((bD == bD))
458458 then {
459459 let bE = invoke(F, "createWxPool", [O.bytes, aa(bq), (bx - bz), aa(br), (by - bB)], nil)
460460 if ((bE == bE))
461461 then {
462462 let bF = invoke(F, "integerEntry", [B(aj(ai)), m], nil)
463463 if ((bF == bF))
464464 then nil
465465 else throw("Strict value is not equal to itself.")
466466 }
467467 else throw("Strict value is not equal to itself.")
468468 }
469469 else throw("Strict value is not equal to itself.")
470470 }
471471 else throw("Strict value is not equal to itself.")
472472 }
473473 else throw("Strict value is not equal to itself.")
474474 }
475475 else g("withdrawn amount from pool is too low")
476476 }
477477 else throw("Strict value is not equal to itself.")
478478 }
479479 else throw("Strict value is not equal to itself.")
480480 }
481481 else throw("Strict value is not equal to itself.")
482482 }
483483 else throw("Strict value is not equal to itself.")
484484 }
485485 else throw("Strict value is not equal to itself.")
486486 }
487487
488488
489489 @Verifier(bG)
490490 func bH () = {
491491 let bI = "%s__adminAddressList"
492492 let bJ = "%s__txId"
493493 let bK = split(valueOrElse(getString(F, bI), ""), "__")
494494 let bL = if ((size(bK) >= 3))
495495 then false
496496 else sigVerify(bG.bodyBytes, bG.proofs[0], bG.senderPublicKey)
497497 let bM = (bG.id == fromBase58String(valueOrElse(getString(F, bJ), "")))
498498 if (bM)
499499 then true
500500 else bL
501501 }
502502

github/deemru/w8io/169f3d6 
47.11 ms