tx · HneYaxY5kQ5AcxHTqRmfH1avhNSsPk7m2sr4Hn7GFYiW

3N6LHjfGb6Fgcy7YsVcNxGyPTj49XbQAijq:  -0.01300000 Waves

2023.02.10 18:09 [2443699] smart account 3N6LHjfGb6Fgcy7YsVcNxGyPTj49XbQAijq > SELF 0.00000000 Waves

{ "type": 13, "id": "HneYaxY5kQ5AcxHTqRmfH1avhNSsPk7m2sr4Hn7GFYiW", "fee": 1300000, "feeAssetId": null, "timestamp": 1676041823163, "version": 2, "chainId": 84, "sender": "3N6LHjfGb6Fgcy7YsVcNxGyPTj49XbQAijq", "senderPublicKey": "2u2wYYcVBQv43Cc71zkhHPPitkqgg6dqTZ3nUMvYJ1uq", "proofs": [ "3pvzyDNzXAES7h3bSPmF3iLAEsyzxFDzbwiYzGrbf7JCT8BMBv53w1MZw5EJUGEkDGJA4DLdn5FfQqUUgkmgyxiM" ], "script": "base64:BgIXCAISBQoDAQgIEgUKAwEICBIDCgEIEgAWAANTRVACAl9fAAhmZWVTY2FsZQkAtgIBAIDC1y8BD2dldFN0cmluZ09yRmFpbAEDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUDa2V5CQCsAgICFU5vIGRhdGEgZm9yIHRoaXMua2V5PQUDa2V5AAxwb29sRGlzYWJsZWQJAAIBAg1Qb29sIGRpc2FibGVkAAxwb29sTm90RXhpc3QJAAIBAhFQb29sIGlzIG5vdCBleGlzdAAOc2xpcHBhZ2VUb29CaWcJAAIBAhNTbGlwcGFnZSBpcyB0b28gYmlnARNrZXlNYW5hZ2VyUHVibGljS2V5AAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQJmYwACEyVzX19mYWN0b3J5Q29udHJhY3QAD2ZhY3RvcnlDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBD2dldFN0cmluZ09yRmFpbAEJAQJmYwABC3Byb3RvY29sRmVlAAkAuQkCCQDMCAICAiVzCQDMCAICC3Byb3RvY29sRmVlBQNuaWwFA1NFUAEHcG9vbEZlZQAJALkJAgkAzAgCAgIlcwkAzAgCAgdwb29sRmVlBQNuaWwFA1NFUAEaZ2V0U3RyaW5nT3JGYWlsRnJvbUFkZHJlc3MCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAAWa2V5RmVlQ29sbGVjdG9yQWRkcmVzcwIXJXNfX2ZlZUNvbGxlY3RvckFkZHJlc3MAE2ZlZUNvbGxlY3RvckFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARpnZXRTdHJpbmdPckZhaWxGcm9tQWRkcmVzcwIFD2ZhY3RvcnlDb250cmFjdAUWa2V5RmVlQ29sbGVjdG9yQWRkcmVzcwEFYXNJbnQBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACA0ludAQGdmFsSW50BQckbWF0Y2gwBQZ2YWxJbnQJAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBFWRhdGFNYXBwaW5nUG9vbEFzc2V0cwIWaW50ZXJuYWxBbW91bnRBc3NldFN0chVpbnRlcm5hbFByaWNlQXNzZXRTdHIJALkJAgkAzAgCAgQlZCVkCQDMCAIJAKQDAQUWaW50ZXJuYWxBbW91bnRBc3NldFN0cgkAzAgCCQCkAwEFFWludGVybmFsUHJpY2VBc3NldFN0cgUDbmlsBQNTRVABFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQABAckbWF0Y2gwCQCiCAEJARNrZXlNYW5hZ2VyUHVibGljS2V5AAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJANkEAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAQHJG1hdGNoMAkAoggBCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgEJaXNNYW5hZ2VyAQFpBAckbWF0Y2gwCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDAJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkFAnBrAwkAAQIFByRtYXRjaDACBFVuaXQJAAACCAUBaQZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgELbXVzdE1hbmFnZXIBAWkDCQEJaXNNYW5hZ2VyAQUBaQYJAAIBAhFwZXJtaXNzaW9uIGRlbmllZAENZ2V0QWNjQmFsYW5jZQEHYXNzZXRJZAMJAAACBQdhc3NldElkAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQdhc3NldElkBAFpARVzd2FwQ2FsY3VsYXRlUkVBRE9OTFkDCGFtb3VudEluB2Fzc2V0SW4IYXNzZXRPdXQEBXByRmVlCQEFdmFsdWUBCQCfCAEJAQtwcm90b2NvbEZlZQAEFWZlZVByb3RvY29sQW1vdW50Q2FsYwkAvAIDCQC2AgEFCGFtb3VudEluCQC2AgEFBXByRmVlBQhmZWVTY2FsZQQFcGxGZWUJAQV2YWx1ZQEJAJ8IAQkBB3Bvb2xGZWUABBFmZWVQb29sQW1vdW50Q2FsYwkAvAIDCQC2AgEFCGFtb3VudEluCQC2AgEFBXBsRmVlBQhmZWVTY2FsZQQRZmVlUHJvdG9jb2xBbW91bnQDCQAAAgkAoAMBBRVmZWVQcm90b2NvbEFtb3VudENhbGMAAAkAtgIBAAEFFWZlZVByb3RvY29sQW1vdW50Q2FsYwQNZmVlUG9vbEFtb3VudAMJAAACCQCgAwEFEWZlZVBvb2xBbW91bnRDYWxjAAAJALYCAQABBRFmZWVQb29sQW1vdW50Q2FsYwQNY2xlYW5BbW91bnRJbgkAuAICCQC4AgIJALYCAQUIYW1vdW50SW4FEWZlZVByb3RvY29sQW1vdW50BRFmZWVQb29sQW1vdW50Q2FsYwQMbHBOb25SZXZlcnNlCQD8BwQFD2ZhY3RvcnlDb250cmFjdAIgZ2V0THBBc3NldEZyb21Qb29sQXNzZXRzUkVBRE9OTFkJAMwIAgUHYXNzZXRJbgkAzAgCBQhhc3NldE91dAUDbmlsBQNuaWwECWxwUmV2ZXJzZQkA/AcEBQ9mYWN0b3J5Q29udHJhY3QCIGdldExwQXNzZXRGcm9tUG9vbEFzc2V0c1JFQURPTkxZCQDMCAIFCGFzc2V0T3V0CQDMCAIFB2Fzc2V0SW4FA25pbAUDbmlsBAskdDAzMTI2MzYyOQMJAQIhPQIFDGxwTm9uUmV2ZXJzZQUEdW5pdAQJaXNSZXZlcnNlBwQEcG9vbAoAAUAJAPwHBAUPZmFjdG9yeUNvbnRyYWN0AiFnZXRQb29sQWRkcmVzc0Zyb21McEFzc2V0UkVBRE9OTFkJAMwIAgUMbHBOb25SZXZlcnNlBQNuaWwFA25pbAMJAAECBQFAAgZTdHJpbmcFAUAJAAIBCQCsAgIJAAMBBQFAAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcJAJQKAgUJaXNSZXZlcnNlBQRwb29sAwkBAiE9AgUJbHBSZXZlcnNlBQR1bml0BAlpc1JldmVyc2UGBARwb29sCgABQAkA/AcEBQ9mYWN0b3J5Q29udHJhY3QCIWdldFBvb2xBZGRyZXNzRnJvbUxwQXNzZXRSRUFET05MWQkAzAgCBQlscFJldmVyc2UFA25pbAUDbmlsAwkAAQIFAUACBlN0cmluZwUBQAkAAgEJAKwCAgkAAwEFAUACGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwkAlAoCBQlpc1JldmVyc2UFBHBvb2wFDHBvb2xOb3RFeGlzdAQJaXNSZXZlcnNlCAULJHQwMzEyNjM2MjkCXzEEBHBvb2wIBQskdDAzMTI2MzYyOQJfMgQKcG9vbFN0YXR1cwoAAUAJAPwHBAUPZmFjdG9yeUNvbnRyYWN0AhVnZXRQb29sU3RhdHVzUkVBRE9OTFkJAMwIAgUEcG9vbAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BAVjaGVjawMJAAACBQpwb29sU3RhdHVzAAEGBQxwb29sRGlzYWJsZWQDCQAAAgUFY2hlY2sFBWNoZWNrBAdwb29sQWRyCQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCBQRwb29sAgAEA3JlcwoAAUAJAPwHBAUHcG9vbEFkcgIhY2FsY3VsYXRlQW1vdW50T3V0Rm9yU3dhcFJFQURPTkxZCQDMCAIJAKADAQUNY2xlYW5BbW91bnRJbgkAzAgCBQlpc1JldmVyc2UFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAkAlAoCBQNuaWwFA3JlcwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQRzd2FwAwxhbW91bnRPdXRNaW4IYXNzZXRPdXQJYWRkcmVzc1RvBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQHYXNzZXRJbgMJAAACCAUDcG10B2Fzc2V0SWQFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQIYW1vdW50SW4JAQV2YWx1ZQEIBQNwbXQGYW1vdW50BAVwckZlZQkBBXZhbHVlAQkAnwgBCQELcHJvdG9jb2xGZWUABBVmZWVQcm90b2NvbEFtb3VudENhbGMJALwCAwkAtgIBBQhhbW91bnRJbgkAtgIBBQVwckZlZQUIZmVlU2NhbGUEBXBsRmVlCQEFdmFsdWUBCQCfCAEJAQdwb29sRmVlAAQRZmVlUG9vbEFtb3VudENhbGMJALwCAwkAtgIBBQhhbW91bnRJbgkAtgIBBQVwbEZlZQUIZmVlU2NhbGUEEWZlZVByb3RvY29sQW1vdW50AwkAAAIJAKADAQUVZmVlUHJvdG9jb2xBbW91bnRDYWxjAAAJALYCAQABBRVmZWVQcm90b2NvbEFtb3VudENhbGMEDWZlZVBvb2xBbW91bnQDCQAAAgkAoAMBBRFmZWVQb29sQW1vdW50Q2FsYwAACQC2AgEAAQURZmVlUG9vbEFtb3VudENhbGMEDWNsZWFuQW1vdW50SW4JALgCAgkAuAICCQC2AgEFCGFtb3VudEluBRFmZWVQcm90b2NvbEFtb3VudAURZmVlUG9vbEFtb3VudENhbGMEBmNoZWNrcwkAzAgCAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQYJAAIBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQMbHBOb25SZXZlcnNlCgABQAkA/AcEBQ9mYWN0b3J5Q29udHJhY3QCIGdldExwQXNzZXRGcm9tUG9vbEFzc2V0c1JFQURPTkxZCQDMCAIFB2Fzc2V0SW4JAMwIAgUIYXNzZXRPdXQFA25pbAUDbmlsAwkAAQIFAUACBlN0cmluZwUBQAUEdW5pdAQJbHBSZXZlcnNlCgABQAkA/AcEBQ9mYWN0b3J5Q29udHJhY3QCIGdldExwQXNzZXRGcm9tUG9vbEFzc2V0c1JFQURPTkxZCQDMCAIFCGFzc2V0T3V0CQDMCAIFB2Fzc2V0SW4FA25pbAUDbmlsAwkAAQIFAUACBlN0cmluZwUBQAUEdW5pdAQLJHQwNTIzODU3NTcDCQECIT0CBQxscE5vblJldmVyc2UFBHVuaXQECWlzUmV2ZXJzZQcEBHBvb2wKAAFACQD8BwQFD2ZhY3RvcnlDb250cmFjdAIhZ2V0UG9vbEFkZHJlc3NGcm9tTHBBc3NldFJFQURPTkxZCQDMCAIJAQV2YWx1ZQEFDGxwTm9uUmV2ZXJzZQUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nCQCUCgIFCWlzUmV2ZXJzZQUEcG9vbAMJAQIhPQIFCWxwUmV2ZXJzZQUEdW5pdAQJaXNSZXZlcnNlBgQEcG9vbAoAAUAJAPwHBAUPZmFjdG9yeUNvbnRyYWN0AiFnZXRQb29sQWRkcmVzc0Zyb21McEFzc2V0UkVBRE9OTFkJAMwIAgkBBXZhbHVlAQUJbHBSZXZlcnNlBQNuaWwFA25pbAMJAAECBQFAAgZTdHJpbmcFAUAJAAIBCQCsAgIJAAMBBQFAAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcJAJQKAgUJaXNSZXZlcnNlBQRwb29sBQxwb29sTm90RXhpc3QECWlzUmV2ZXJzZQgFCyR0MDUyMzg1NzU3Al8xBARwb29sCAULJHQwNTIzODU3NTcCXzIECnBvb2xTdGF0dXMKAAFACQD8BwQFD2ZhY3RvcnlDb250cmFjdAIVZ2V0UG9vbFN0YXR1c1JFQURPTkxZCQDMCAIFBHBvb2wFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQFY2hlY2sDCQAAAgUKcG9vbFN0YXR1cwABBgUMcG9vbERpc2FibGVkAwkAAAIFBWNoZWNrBQVjaGVjawQHcG9vbEFkcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUEcG9vbAQWYXNzZXRJbkF0dGFjaGVkUGF5bWVudAMJAAACBQdhc3NldEluAgVXQVZFUwUEdW5pdAkA2QQBBQdhc3NldEluBAt0b3RhbEdldFJhdwoAAUAJAPwHBAUHcG9vbEFkcgImY2FsY3VsYXRlQW1vdW50T3V0Rm9yU3dhcEFuZFNlbmRUb2tlbnMJAMwIAgkAoAMBBQ1jbGVhbkFtb3VudEluCQDMCAIFCWlzUmV2ZXJzZQkAzAgCBQxhbW91bnRPdXRNaW4JAMwIAgUJYWRkcmVzc1RvBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFFmFzc2V0SW5BdHRhY2hlZFBheW1lbnQJAKADAQUNY2xlYW5BbW91bnRJbgUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFE2ZlZUNvbGxlY3RvckFkZHJlc3MJAKADAQURZmVlUHJvdG9jb2xBbW91bnQFFmFzc2V0SW5BdHRhY2hlZFBheW1lbnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUHcG9vbEFkcgkAoAMBBQ1mZWVQb29sQW1vdW50BRZhc3NldEluQXR0YWNoZWRQYXltZW50BQNuaWwFC3RvdGFsR2V0UmF3CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCnNldE1hbmFnZXIBF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BAtjaGVja0NhbGxlcgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIEFWNoZWNrTWFuYWdlclB1YmxpY0tleQkA2QQBBRdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQMJAAACBRVjaGVja01hbmFnZXJQdWJsaWNLZXkFFWNoZWNrTWFuYWdlclB1YmxpY0tleQkAzAgCCQELU3RyaW5nRW50cnkCCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkABRdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDmNvbmZpcm1NYW5hZ2VyAAQCcG0JAR1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdAAEBWhhc1BNAwkBCWlzRGVmaW5lZAEFAnBtBgkAAgECEm5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQVoYXNQTQUFaGFzUE0EB2NoZWNrUE0DCQAAAggFAWkPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJwbQYJAAIBAht5b3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUHY2hlY2tQTQUHY2hlY2tQTQkAzAgCCQELU3RyaW5nRW50cnkCCQETa2V5TWFuYWdlclB1YmxpY0tleQAJANgEAQkBBXZhbHVlAQUCcG0JAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQPdGFyZ2V0UHVibGljS2V5BAckbWF0Y2gwCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDAFAnBrAwkAAQIFByRtYXRjaDACBFVuaXQIBQJ0eA9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUPdGFyZ2V0UHVibGljS2V5C1hT6A==", "height": 2443699, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9vnSnznJu69UUXtsX2NnvoyBFyoFBCVV8ctQMf9STgLm Next: Ex3yP4fpy6K8gL1QAdsxKbXPJ9BvbET2VWDKGewvBKrA Diff:
OldNewDifferences
158158 func swap (amountOutMin,assetOut,addressTo) = {
159159 let pmt = value(i.payments[0])
160160 let assetIn = if ((pmt.assetId == unit))
161- then toBytes("WAVES")
162- else value(pmt.assetId)
161+ then "WAVES"
162+ else toBase58String(value(pmt.assetId))
163163 let amountIn = value(pmt.amount)
164164 let prFee = value(getInteger(protocolFee()))
165165 let feeProtocolAmountCalc = fraction(toBigInt(amountIn), toBigInt(prFee), feeScale)
178178 if ((checks == checks))
179179 then {
180180 let lpNonReverse = {
181- let @ = invoke(factoryContract, "getLpAssetFromPoolAssetsREADONLY", [toBase58String(assetIn), assetOut], nil)
181+ let @ = invoke(factoryContract, "getLpAssetFromPoolAssetsREADONLY", [assetIn, assetOut], nil)
182182 if ($isInstanceOf(@, "String"))
183183 then @
184184 else unit
185185 }
186186 let lpReverse = {
187- let @ = invoke(factoryContract, "getLpAssetFromPoolAssetsREADONLY", [assetOut, toBase58String(assetIn)], nil)
187+ let @ = invoke(factoryContract, "getLpAssetFromPoolAssetsREADONLY", [assetOut, assetIn], nil)
188188 if ($isInstanceOf(@, "String"))
189189 then @
190190 else unit
191191 }
192- let $t052655784 = if ((lpNonReverse != unit))
192+ let $t052385757 = if ((lpNonReverse != unit))
193193 then {
194194 let isReverse = false
195195 let pool = {
212212 $Tuple2(isReverse, pool)
213213 }
214214 else poolNotExist
215- let isReverse = $t052655784._1
216- let pool = $t052655784._2
215+ let isReverse = $t052385757._1
216+ let pool = $t052385757._2
217217 let poolStatus = {
218218 let @ = invoke(factoryContract, "getPoolStatusREADONLY", [pool], nil)
219219 if ($isInstanceOf(@, "Int"))
226226 if ((check == check))
227227 then {
228228 let poolAdr = addressFromStringValue(pool)
229+ let assetInAttachedPayment = if ((assetIn == "WAVES"))
230+ then unit
231+ else fromBase58String(assetIn)
229232 let totalGetRaw = {
230- let @ = invoke(poolAdr, "calculateAmountOutForSwapAndSendTokens", [toInt(cleanAmountIn), isReverse, amountOutMin, addressTo], [AttachedPayment(assetIn, toInt(cleanAmountIn))])
233+ let @ = invoke(poolAdr, "calculateAmountOutForSwapAndSendTokens", [toInt(cleanAmountIn), isReverse, amountOutMin, addressTo], [AttachedPayment(assetInAttachedPayment, toInt(cleanAmountIn))])
231234 if ($isInstanceOf(@, "Int"))
232235 then @
233236 else throw(($getType(@) + " couldn't be cast to Int"))
234237 }
235- $Tuple2([ScriptTransfer(feeCollectorAddress, toInt(feeProtocolAmount), assetIn), ScriptTransfer(poolAdr, toInt(feePoolAmount), assetIn)], totalGetRaw)
238+ $Tuple2([ScriptTransfer(feeCollectorAddress, toInt(feeProtocolAmount), assetInAttachedPayment), ScriptTransfer(poolAdr, toInt(feePoolAmount), assetInAttachedPayment)], totalGetRaw)
236239 }
237240 else throw("Strict value is not equal to itself.")
238241 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let SEP = "__"
55
66 let feeScale = toBigInt(100000000)
77
88 func getStringOrFail (key) = valueOrErrorMessage(getString(this, key), ("No data for this.key=" + key))
99
1010
1111 let poolDisabled = throw("Pool disabled")
1212
1313 let poolNotExist = throw("Pool is not exist")
1414
1515 let slippageTooBig = throw("Slippage is too big")
1616
1717 func keyManagerPublicKey () = "%s__managerPublicKey"
1818
1919
2020 func keyPendingManagerPublicKey () = "%s__pendingManagerPublicKey"
2121
2222
2323 func fc () = "%s__factoryContract"
2424
2525
2626 let factoryContract = addressFromStringValue(getStringOrFail(fc()))
2727
2828 func protocolFee () = makeString(["%s", "protocolFee"], SEP)
2929
3030
3131 func poolFee () = makeString(["%s", "poolFee"], SEP)
3232
3333
3434 func getStringOrFailFromAddress (address,key) = valueOrErrorMessage(getString(address, key), makeString(["mandatory ", toString(address), ".", key, " is not defined"], ""))
3535
3636
3737 let keyFeeCollectorAddress = "%s__feeCollectorAddress"
3838
3939 let feeCollectorAddress = addressFromStringValue(getStringOrFailFromAddress(factoryContract, keyFeeCollectorAddress))
4040
4141 func asInt (val) = match val {
4242 case valInt: Int =>
4343 valInt
4444 case _ =>
4545 throw("fail to cast into Int")
4646 }
4747
4848
4949 func dataMappingPoolAssets (internalAmountAssetStr,internalPriceAssetStr) = makeString(["%d%d", toString(internalAmountAssetStr), toString(internalPriceAssetStr)], SEP)
5050
5151
5252 func managerPublicKeyOrUnit () = match getString(keyManagerPublicKey()) {
5353 case s: String =>
5454 fromBase58String(s)
5555 case _: Unit =>
5656 unit
5757 case _ =>
5858 throw("Match error")
5959 }
6060
6161
6262 func pendingManagerPublicKeyOrUnit () = match getString(keyPendingManagerPublicKey()) {
6363 case s: String =>
6464 fromBase58String(s)
6565 case _: Unit =>
6666 unit
6767 case _ =>
6868 throw("Match error")
6969 }
7070
7171
7272 func isManager (i) = match managerPublicKeyOrUnit() {
7373 case pk: ByteVector =>
7474 (i.callerPublicKey == pk)
7575 case _: Unit =>
7676 (i.caller == this)
7777 case _ =>
7878 throw("Match error")
7979 }
8080
8181
8282 func mustManager (i) = if (isManager(i))
8383 then true
8484 else throw("permission denied")
8585
8686
8787 func getAccBalance (assetId) = if ((assetId == "WAVES"))
8888 then wavesBalance(this).available
8989 else assetBalance(this, fromBase58String(assetId))
9090
9191
9292 @Callable(i)
9393 func swapCalculateREADONLY (amountIn,assetIn,assetOut) = {
9494 let prFee = value(getInteger(protocolFee()))
9595 let feeProtocolAmountCalc = fraction(toBigInt(amountIn), toBigInt(prFee), feeScale)
9696 let plFee = value(getInteger(poolFee()))
9797 let feePoolAmountCalc = fraction(toBigInt(amountIn), toBigInt(plFee), feeScale)
9898 let feeProtocolAmount = if ((toInt(feeProtocolAmountCalc) == 0))
9999 then toBigInt(1)
100100 else feeProtocolAmountCalc
101101 let feePoolAmount = if ((toInt(feePoolAmountCalc) == 0))
102102 then toBigInt(1)
103103 else feePoolAmountCalc
104104 let cleanAmountIn = ((toBigInt(amountIn) - feeProtocolAmount) - feePoolAmountCalc)
105105 let lpNonReverse = invoke(factoryContract, "getLpAssetFromPoolAssetsREADONLY", [assetIn, assetOut], nil)
106106 let lpReverse = invoke(factoryContract, "getLpAssetFromPoolAssetsREADONLY", [assetOut, assetIn], nil)
107107 let $t031263629 = if ((lpNonReverse != unit))
108108 then {
109109 let isReverse = false
110110 let pool = {
111111 let @ = invoke(factoryContract, "getPoolAddressFromLpAssetREADONLY", [lpNonReverse], nil)
112112 if ($isInstanceOf(@, "String"))
113113 then @
114114 else throw(($getType(@) + " couldn't be cast to String"))
115115 }
116116 $Tuple2(isReverse, pool)
117117 }
118118 else if ((lpReverse != unit))
119119 then {
120120 let isReverse = true
121121 let pool = {
122122 let @ = invoke(factoryContract, "getPoolAddressFromLpAssetREADONLY", [lpReverse], nil)
123123 if ($isInstanceOf(@, "String"))
124124 then @
125125 else throw(($getType(@) + " couldn't be cast to String"))
126126 }
127127 $Tuple2(isReverse, pool)
128128 }
129129 else poolNotExist
130130 let isReverse = $t031263629._1
131131 let pool = $t031263629._2
132132 let poolStatus = {
133133 let @ = invoke(factoryContract, "getPoolStatusREADONLY", [pool], nil)
134134 if ($isInstanceOf(@, "Int"))
135135 then @
136136 else throw(($getType(@) + " couldn't be cast to Int"))
137137 }
138138 let check = if ((poolStatus == 1))
139139 then true
140140 else poolDisabled
141141 if ((check == check))
142142 then {
143143 let poolAdr = addressFromStringValue(valueOrElse(pool, ""))
144144 let res = {
145145 let @ = invoke(poolAdr, "calculateAmountOutForSwapREADONLY", [toInt(cleanAmountIn), isReverse], nil)
146146 if ($isInstanceOf(@, "Int"))
147147 then @
148148 else throw(($getType(@) + " couldn't be cast to Int"))
149149 }
150150 $Tuple2(nil, res)
151151 }
152152 else throw("Strict value is not equal to itself.")
153153 }
154154
155155
156156
157157 @Callable(i)
158158 func swap (amountOutMin,assetOut,addressTo) = {
159159 let pmt = value(i.payments[0])
160160 let assetIn = if ((pmt.assetId == unit))
161- then toBytes("WAVES")
162- else value(pmt.assetId)
161+ then "WAVES"
162+ else toBase58String(value(pmt.assetId))
163163 let amountIn = value(pmt.amount)
164164 let prFee = value(getInteger(protocolFee()))
165165 let feeProtocolAmountCalc = fraction(toBigInt(amountIn), toBigInt(prFee), feeScale)
166166 let plFee = value(getInteger(poolFee()))
167167 let feePoolAmountCalc = fraction(toBigInt(amountIn), toBigInt(plFee), feeScale)
168168 let feeProtocolAmount = if ((toInt(feeProtocolAmountCalc) == 0))
169169 then toBigInt(1)
170170 else feeProtocolAmountCalc
171171 let feePoolAmount = if ((toInt(feePoolAmountCalc) == 0))
172172 then toBigInt(1)
173173 else feePoolAmountCalc
174174 let cleanAmountIn = ((toBigInt(amountIn) - feeProtocolAmount) - feePoolAmountCalc)
175175 let checks = [if ((size(i.payments) == 1))
176176 then true
177177 else throw("exactly 1 payment are expected")]
178178 if ((checks == checks))
179179 then {
180180 let lpNonReverse = {
181- let @ = invoke(factoryContract, "getLpAssetFromPoolAssetsREADONLY", [toBase58String(assetIn), assetOut], nil)
181+ let @ = invoke(factoryContract, "getLpAssetFromPoolAssetsREADONLY", [assetIn, assetOut], nil)
182182 if ($isInstanceOf(@, "String"))
183183 then @
184184 else unit
185185 }
186186 let lpReverse = {
187- let @ = invoke(factoryContract, "getLpAssetFromPoolAssetsREADONLY", [assetOut, toBase58String(assetIn)], nil)
187+ let @ = invoke(factoryContract, "getLpAssetFromPoolAssetsREADONLY", [assetOut, assetIn], nil)
188188 if ($isInstanceOf(@, "String"))
189189 then @
190190 else unit
191191 }
192- let $t052655784 = if ((lpNonReverse != unit))
192+ let $t052385757 = if ((lpNonReverse != unit))
193193 then {
194194 let isReverse = false
195195 let pool = {
196196 let @ = invoke(factoryContract, "getPoolAddressFromLpAssetREADONLY", [value(lpNonReverse)], nil)
197197 if ($isInstanceOf(@, "String"))
198198 then @
199199 else throw(($getType(@) + " couldn't be cast to String"))
200200 }
201201 $Tuple2(isReverse, pool)
202202 }
203203 else if ((lpReverse != unit))
204204 then {
205205 let isReverse = true
206206 let pool = {
207207 let @ = invoke(factoryContract, "getPoolAddressFromLpAssetREADONLY", [value(lpReverse)], nil)
208208 if ($isInstanceOf(@, "String"))
209209 then @
210210 else throw(($getType(@) + " couldn't be cast to String"))
211211 }
212212 $Tuple2(isReverse, pool)
213213 }
214214 else poolNotExist
215- let isReverse = $t052655784._1
216- let pool = $t052655784._2
215+ let isReverse = $t052385757._1
216+ let pool = $t052385757._2
217217 let poolStatus = {
218218 let @ = invoke(factoryContract, "getPoolStatusREADONLY", [pool], nil)
219219 if ($isInstanceOf(@, "Int"))
220220 then @
221221 else throw(($getType(@) + " couldn't be cast to Int"))
222222 }
223223 let check = if ((poolStatus == 1))
224224 then true
225225 else poolDisabled
226226 if ((check == check))
227227 then {
228228 let poolAdr = addressFromStringValue(pool)
229+ let assetInAttachedPayment = if ((assetIn == "WAVES"))
230+ then unit
231+ else fromBase58String(assetIn)
229232 let totalGetRaw = {
230- let @ = invoke(poolAdr, "calculateAmountOutForSwapAndSendTokens", [toInt(cleanAmountIn), isReverse, amountOutMin, addressTo], [AttachedPayment(assetIn, toInt(cleanAmountIn))])
233+ let @ = invoke(poolAdr, "calculateAmountOutForSwapAndSendTokens", [toInt(cleanAmountIn), isReverse, amountOutMin, addressTo], [AttachedPayment(assetInAttachedPayment, toInt(cleanAmountIn))])
231234 if ($isInstanceOf(@, "Int"))
232235 then @
233236 else throw(($getType(@) + " couldn't be cast to Int"))
234237 }
235- $Tuple2([ScriptTransfer(feeCollectorAddress, toInt(feeProtocolAmount), assetIn), ScriptTransfer(poolAdr, toInt(feePoolAmount), assetIn)], totalGetRaw)
238+ $Tuple2([ScriptTransfer(feeCollectorAddress, toInt(feeProtocolAmount), assetInAttachedPayment), ScriptTransfer(poolAdr, toInt(feePoolAmount), assetInAttachedPayment)], totalGetRaw)
236239 }
237240 else throw("Strict value is not equal to itself.")
238241 }
239242 else throw("Strict value is not equal to itself.")
240243 }
241244
242245
243246
244247 @Callable(i)
245248 func setManager (pendingManagerPublicKey) = {
246249 let checkCaller = mustManager(i)
247250 if ((checkCaller == checkCaller))
248251 then {
249252 let checkManagerPublicKey = fromBase58String(pendingManagerPublicKey)
250253 if ((checkManagerPublicKey == checkManagerPublicKey))
251254 then [StringEntry(keyPendingManagerPublicKey(), pendingManagerPublicKey)]
252255 else throw("Strict value is not equal to itself.")
253256 }
254257 else throw("Strict value is not equal to itself.")
255258 }
256259
257260
258261
259262 @Callable(i)
260263 func confirmManager () = {
261264 let pm = pendingManagerPublicKeyOrUnit()
262265 let hasPM = if (isDefined(pm))
263266 then true
264267 else throw("no pending manager")
265268 if ((hasPM == hasPM))
266269 then {
267270 let checkPM = if ((i.callerPublicKey == value(pm)))
268271 then true
269272 else throw("you are not pending manager")
270273 if ((checkPM == checkPM))
271274 then [StringEntry(keyManagerPublicKey(), toBase58String(value(pm))), DeleteEntry(keyPendingManagerPublicKey())]
272275 else throw("Strict value is not equal to itself.")
273276 }
274277 else throw("Strict value is not equal to itself.")
275278 }
276279
277280
278281 @Verifier(tx)
279282 func verify () = {
280283 let targetPublicKey = match managerPublicKeyOrUnit() {
281284 case pk: ByteVector =>
282285 pk
283286 case _: Unit =>
284287 tx.senderPublicKey
285288 case _ =>
286289 throw("Match error")
287290 }
288291 sigVerify(tx.bodyBytes, tx.proofs[0], targetPublicKey)
289292 }
290293

github/deemru/w8io/3ef1775 
170.27 ms