tx · E58Gnr3i9jcErWRPsZ1hvFzySqDYrn4d9qQ2Ekva4xqd

3N6LHjfGb6Fgcy7YsVcNxGyPTj49XbQAijq:  -0.01300000 Waves

2023.02.09 11:42 [2441870] smart account 3N6LHjfGb6Fgcy7YsVcNxGyPTj49XbQAijq > SELF 0.00000000 Waves

{ "type": 13, "id": "E58Gnr3i9jcErWRPsZ1hvFzySqDYrn4d9qQ2Ekva4xqd", "fee": 1300000, "feeAssetId": null, "timestamp": 1675932208086, "version": 1, "sender": "3N6LHjfGb6Fgcy7YsVcNxGyPTj49XbQAijq", "senderPublicKey": "2u2wYYcVBQv43Cc71zkhHPPitkqgg6dqTZ3nUMvYJ1uq", "proofs": [ "2t17PfizMaYLQBdZqFM8CUwqR5GkzMmPPFAt2YDkSkJYZaYxQgrAESXxLuhrhgYVQYJKJabokwJ7E3wyhZEth1Zz" ], "script": "base64:BgIXCAISBQoDAQgIEgUKAwEICBIDCgEIEgAUAANTRVACAl9fAAhmZWVTY2FsZQkAtgIBAKCNBgEPZ2V0U3RyaW5nT3JGYWlsAQNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQNrZXkJAKwCAgIVTm8gZGF0YSBmb3IgdGhpcy5rZXk9BQNrZXkADHBvb2xEaXNhYmxlZAkAAgECDVBvb2wgZGlzYWJsZWQADHBvb2xOb3RFeGlzdAkAAgECEVBvb2wgaXMgbm90IGV4aXN0AA5zbGlwcGFnZVRvb0JpZwkAAgECE1NsaXBwYWdlIGlzIHRvbyBiaWcBE2tleU1hbmFnZXJQdWJsaWNLZXkAAhQlc19fbWFuYWdlclB1YmxpY0tleQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAmZjAAITJXNfX2ZhY3RvcnlDb250cmFjdAAPZmFjdG9yeUNvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQEPZ2V0U3RyaW5nT3JGYWlsAQkBAmZjAAEaZmVlUHJvdG9jb2xDb250cmFjdEFkZHJlc3MACQC5CQIJAMwIAgICJXMJAMwIAgIaZmVlUHJvdG9jb2xDb250cmFjdEFkZHJlc3MFA25pbAUDU0VQAAtmZWVDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBD2dldFN0cmluZ09yRmFpbAEJARpmZWVQcm90b2NvbENvbnRyYWN0QWRkcmVzcwABC3Byb3RvY29sRmVlAAkAuQkCCQDMCAICAiVzCQDMCAICC3Byb3RvY29sRmVlBQNuaWwFA1NFUAEFYXNJbnQBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACA0ludAQGdmFsSW50BQckbWF0Y2gwBQZ2YWxJbnQJAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBFWRhdGFNYXBwaW5nUG9vbEFzc2V0cwIWaW50ZXJuYWxBbW91bnRBc3NldFN0chVpbnRlcm5hbFByaWNlQXNzZXRTdHIJALkJAgkAzAgCAgQlZCVkCQDMCAIJAKQDAQUWaW50ZXJuYWxBbW91bnRBc3NldFN0cgkAzAgCCQCkAwEFFWludGVybmFsUHJpY2VBc3NldFN0cgUDbmlsBQNTRVABFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQABAckbWF0Y2gwCQCiCAEJARNrZXlNYW5hZ2VyUHVibGljS2V5AAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJANkEAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAQHJG1hdGNoMAkAoggBCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgEJaXNNYW5hZ2VyAQFpBAckbWF0Y2gwCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDAJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkFAnBrAwkAAQIFByRtYXRjaDACBFVuaXQJAAACCAUBaQZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgELbXVzdE1hbmFnZXIBAWkDCQEJaXNNYW5hZ2VyAQUBaQYJAAIBAhFwZXJtaXNzaW9uIGRlbmllZAENZ2V0QWNjQmFsYW5jZQEHYXNzZXRJZAMJAAACBQdhc3NldElkAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQdhc3NldElkBAFpARVzd2FwQ2FsY3VsYXRlUkVBRE9OTFkDCGFtb3VudEluB2Fzc2V0SW4IYXNzZXRPdXQEBXByRmVlCQEFdmFsdWUBCQCfCAEJAQtwcm90b2NvbEZlZQAEEWZlZVByb3RvY29sQW1vdW50CQC8AgMJALYCAQUIYW1vdW50SW4JALYCAQUFcHJGZWUFCGZlZVNjYWxlBA1jbGVhbkFtb3VudEluAwkAAAIJAKADAQURZmVlUHJvdG9jb2xBbW91bnQAAAkAtgIBAAEJALgCAgkAtgIBBQhhbW91bnRJbgURZmVlUHJvdG9jb2xBbW91bnQEDWxwTm9uUmV2ZXJlc2UJAPwHBAUPZmFjdG9yeUNvbnRyYWN0AiBnZXRMcEFzc2V0RnJvbVBvb2xBc3NldHNSRUFET05MWQkAzAgCBQdhc3NldEluCQDMCAIFCGFzc2V0T3V0BQNuaWwFA25pbAQJbHBSZXZlcnNlCQD8BwQFD2ZhY3RvcnlDb250cmFjdAIgZ2V0THBBc3NldEZyb21Qb29sQXNzZXRzUkVBRE9OTFkJAMwIAgUIYXNzZXRPdXQJAMwIAgUHYXNzZXRJbgUDbmlsBQNuaWwECyR0MDI1NjEzMDY2AwkBAiE9AgUNbHBOb25SZXZlcmVzZQUEdW5pdAQJaXNSZXZlcnNlBwQEcG9vbAoAAUAJAPwHBAUPZmFjdG9yeUNvbnRyYWN0AiFnZXRQb29sQWRkcmVzc0Zyb21McEFzc2V0UkVBRE9OTFkJAMwIAgUNbHBOb25SZXZlcmVzZQUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nCQCUCgIFCWlzUmV2ZXJzZQUEcG9vbAMJAQIhPQIFCWxwUmV2ZXJzZQUEdW5pdAQJaXNSZXZlcnNlBgQEcG9vbAoAAUAJAPwHBAUPZmFjdG9yeUNvbnRyYWN0AiFnZXRQb29sQWRkcmVzc0Zyb21McEFzc2V0UkVBRE9OTFkJAMwIAgUJbHBSZXZlcnNlBQNuaWwFA25pbAMJAAECBQFAAgZTdHJpbmcFAUAJAAIBCQCsAgIJAAMBBQFAAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcJAJQKAgUJaXNSZXZlcnNlBQRwb29sBQxwb29sTm90RXhpc3QECWlzUmV2ZXJzZQgFCyR0MDI1NjEzMDY2Al8xBARwb29sCAULJHQwMjU2MTMwNjYCXzIECnBvb2xTdGF0dXMKAAFACQD8BwQFD2ZhY3RvcnlDb250cmFjdAIVZ2V0UG9vbFN0YXR1c1JFQURPTkxZCQDMCAIFBHBvb2wFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQFY2hlY2sDCQAAAgUKcG9vbFN0YXR1cwABBgUMcG9vbERpc2FibGVkAwkAAAIFBWNoZWNrBQVjaGVjawQHcG9vbEFkcgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgUEcG9vbAIABANyZXMKAAFACQD8BwQFB3Bvb2xBZHICIWNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBSRUFET05MWQkAzAgCCQCgAwEFDWNsZWFuQW1vdW50SW4JAMwIAgUJaXNSZXZlcnNlBQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQJAJQKAgUDbmlsBQNyZXMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEEc3dhcAMMYW1vdW50T3V0TWluCGFzc2V0T3V0CWFkZHJlc3NUbwQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SW4DCQAAAggFA3BtdAdhc3NldElkBQR1bml0CQCbAwECBVdBVkVTCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQECGFtb3VudEluCQEFdmFsdWUBCAUDcG10BmFtb3VudAQFcHJGZWUJAQV2YWx1ZQEJAJ8IAQkBC3Byb3RvY29sRmVlAAQRZmVlUHJvdG9jb2xBbW91bnQJALwCAwkAtgIBBQhhbW91bnRJbgkAtgIBBQVwckZlZQUIZmVlU2NhbGUEDWNsZWFuQW1vdW50SW4JALgCAgkAtgIBBQhhbW91bnRJbgURZmVlUHJvdG9jb2xBbW91bnQEBmNoZWNrcwkAzAgCAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQYJAAIBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQNbHBOb25SZXZlcmVzZQkA/AcEBQ9mYWN0b3J5Q29udHJhY3QCIGdldExwQXNzZXRGcm9tUG9vbEFzc2V0c1JFQURPTkxZCQDMCAIJANgEAQUHYXNzZXRJbgkAzAgCBQhhc3NldE91dAUDbmlsBQNuaWwECWxwUmV2ZXJzZQkA/AcEBQ9mYWN0b3J5Q29udHJhY3QCIGdldExwQXNzZXRGcm9tUG9vbEFzc2V0c1JFQURPTkxZCQDMCAIFCGFzc2V0T3V0CQDMCAIJANgEAQUHYXNzZXRJbgUDbmlsBQNuaWwECyR0MDQyODE0Nzg2AwkBAiE9AgUNbHBOb25SZXZlcmVzZQUEdW5pdAQJaXNSZXZlcnNlBwQEcG9vbAoAAUAJAPwHBAUPZmFjdG9yeUNvbnRyYWN0AiFnZXRQb29sQWRkcmVzc0Zyb21McEFzc2V0UkVBRE9OTFkJAMwIAgUNbHBOb25SZXZlcmVzZQUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nCQCUCgIFCWlzUmV2ZXJzZQUEcG9vbAMJAQIhPQIFCWxwUmV2ZXJzZQUEdW5pdAQJaXNSZXZlcnNlBgQEcG9vbAoAAUAJAPwHBAUPZmFjdG9yeUNvbnRyYWN0AiFnZXRQb29sQWRkcmVzc0Zyb21McEFzc2V0UkVBRE9OTFkJAMwIAgUJbHBSZXZlcnNlBQNuaWwFA25pbAMJAAECBQFAAgZTdHJpbmcFAUAJAAIBCQCsAgIJAAMBBQFAAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcJAJQKAgUJaXNSZXZlcnNlBQRwb29sBQxwb29sTm90RXhpc3QECWlzUmV2ZXJzZQgFCyR0MDQyODE0Nzg2Al8xBARwb29sCAULJHQwNDI4MTQ3ODYCXzIEIGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkCgABQAkA/AcEBQ9mYWN0b3J5Q29udHJhY3QCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgUEcG9vbAUDbmlsBQNuaWwDCQABAgUBQAIHQm9vbGVhbgUBQAkAAgEJAKwCAgkAAwEFAUACHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EBWNoZWNrAwUgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQGBQxwb29sRGlzYWJsZWQDCQAAAgUFY2hlY2sFBWNoZWNrBAdwb29sQWRyCQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCBQRwb29sAgAEA3JlcwoAAUAJAPwHBAUHcG9vbEFkcgImY2FsY3VsYXRlQW1vdW50T3V0Rm9yU3dhcEFuZFNlbmRUb2tlbnMJAMwIAgkAoAMBBQ1jbGVhbkFtb3VudEluCQDMCAIFCWlzUmV2ZXJzZQkAzAgCBQxhbW91bnRPdXRNaW4JAMwIAgUJYWRkcmVzc1RvBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFB2Fzc2V0SW4JAKADAQUNY2xlYW5BbW91bnRJbgUDbmlsAwkAAQIFAUACB0Jvb2xlYW4FAUAJAAIBCQCsAgIJAAMBBQFAAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULZmVlQ29udHJhY3QJAKADAQURZmVlUHJvdG9jb2xBbW91bnQFB2Fzc2V0SW4FA25pbAUDcmVzCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCnNldE1hbmFnZXIBF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BAtjaGVja0NhbGxlcgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIEFWNoZWNrTWFuYWdlclB1YmxpY0tleQkA2QQBBRdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQMJAAACBRVjaGVja01hbmFnZXJQdWJsaWNLZXkFFWNoZWNrTWFuYWdlclB1YmxpY0tleQkAzAgCCQELU3RyaW5nRW50cnkCCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkABRdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDmNvbmZpcm1NYW5hZ2VyAAQCcG0JAR1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdAAEBWhhc1BNAwkBCWlzRGVmaW5lZAEFAnBtBgkAAgECEm5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQVoYXNQTQUFaGFzUE0EB2NoZWNrUE0DCQAAAggFAWkPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJwbQYJAAIBAht5b3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUHY2hlY2tQTQUHY2hlY2tQTQkAzAgCCQELU3RyaW5nRW50cnkCCQETa2V5TWFuYWdlclB1YmxpY0tleQAJANgEAQkBBXZhbHVlAQUCcG0JAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQPdGFyZ2V0UHVibGljS2V5BAckbWF0Y2gwCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDAFAnBrAwkAAQIFByRtYXRjaDACBFVuaXQIBQJ0eA9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUPdGFyZ2V0UHVibGljS2V5ahlcKw==", "chainId": 84, "height": 2441870, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4t1pmk28DsRaH8KiUAm274kzrrNJSHucKZ3u7KPK3dWF Next: GjoAa61M4wMsoaaCAQmkJrPFH7jnphpWm2td6uGXJE83 Diff:
OldNewDifferences
160160 then {
161161 let lpNonReverese = invoke(factoryContract, "getLpAssetFromPoolAssetsREADONLY", [toBase58String(assetIn), assetOut], nil)
162162 let lpReverse = invoke(factoryContract, "getLpAssetFromPoolAssetsREADONLY", [assetOut, toBase58String(assetIn)], nil)
163- let $t042814771 = if ((lpNonReverese != unit))
163+ let $t042814786 = if ((lpNonReverese != unit))
164164 then {
165165 let isReverse = false
166166 let pool = {
167167 let @ = invoke(factoryContract, "getPoolAddressFromLpAssetREADONLY", [lpNonReverese], nil)
168- if ($isInstanceOf(@, "Address"))
168+ if ($isInstanceOf(@, "String"))
169169 then @
170- else throw(($getType(@) + " couldn't be cast to Address"))
170+ else throw(($getType(@) + " couldn't be cast to String"))
171171 }
172172 $Tuple2(isReverse, pool)
173173 }
174174 else if ((lpReverse != unit))
175175 then {
176176 let isReverse = true
177- let pool = invoke(factoryContract, "getPoolAddressFromLpAssetREADONLY", [lpReverse], nil)
177+ let pool = {
178+ let @ = invoke(factoryContract, "getPoolAddressFromLpAssetREADONLY", [lpReverse], nil)
179+ if ($isInstanceOf(@, "String"))
180+ then @
181+ else throw(($getType(@) + " couldn't be cast to String"))
182+ }
178183 $Tuple2(isReverse, pool)
179184 }
180185 else poolNotExist
181- let isReverse = $t042814771._1
182- let pool = $t042814771._2
186+ let isReverse = $t042814786._1
187+ let pool = $t042814786._2
183188 let isPoolOneTokenOperationsDisabled = {
184189 let @ = invoke(factoryContract, "isPoolOneTokenOperationsDisabledREADONLY", [pool], nil)
185190 if ($isInstanceOf(@, "Boolean"))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let SEP = "__"
55
66 let feeScale = toBigInt(100000)
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 feeProtocolContractAddress () = makeString(["%s", "feeProtocolContractAddress"], SEP)
2929
3030
3131 let feeContract = addressFromStringValue(getStringOrFail(feeProtocolContractAddress()))
3232
3333 func protocolFee () = makeString(["%s", "protocolFee"], SEP)
3434
3535
3636 func asInt (val) = match val {
3737 case valInt: Int =>
3838 valInt
3939 case _ =>
4040 throw("fail to cast into Int")
4141 }
4242
4343
4444 func dataMappingPoolAssets (internalAmountAssetStr,internalPriceAssetStr) = makeString(["%d%d", toString(internalAmountAssetStr), toString(internalPriceAssetStr)], SEP)
4545
4646
4747 func managerPublicKeyOrUnit () = match getString(keyManagerPublicKey()) {
4848 case s: String =>
4949 fromBase58String(s)
5050 case _: Unit =>
5151 unit
5252 case _ =>
5353 throw("Match error")
5454 }
5555
5656
5757 func pendingManagerPublicKeyOrUnit () = match getString(keyPendingManagerPublicKey()) {
5858 case s: String =>
5959 fromBase58String(s)
6060 case _: Unit =>
6161 unit
6262 case _ =>
6363 throw("Match error")
6464 }
6565
6666
6767 func isManager (i) = match managerPublicKeyOrUnit() {
6868 case pk: ByteVector =>
6969 (i.callerPublicKey == pk)
7070 case _: Unit =>
7171 (i.caller == this)
7272 case _ =>
7373 throw("Match error")
7474 }
7575
7676
7777 func mustManager (i) = if (isManager(i))
7878 then true
7979 else throw("permission denied")
8080
8181
8282 func getAccBalance (assetId) = if ((assetId == "WAVES"))
8383 then wavesBalance(this).available
8484 else assetBalance(this, fromBase58String(assetId))
8585
8686
8787 @Callable(i)
8888 func swapCalculateREADONLY (amountIn,assetIn,assetOut) = {
8989 let prFee = value(getInteger(protocolFee()))
9090 let feeProtocolAmount = fraction(toBigInt(amountIn), toBigInt(prFee), feeScale)
9191 let cleanAmountIn = if ((toInt(feeProtocolAmount) == 0))
9292 then toBigInt(1)
9393 else (toBigInt(amountIn) - feeProtocolAmount)
9494 let lpNonReverese = invoke(factoryContract, "getLpAssetFromPoolAssetsREADONLY", [assetIn, assetOut], nil)
9595 let lpReverse = invoke(factoryContract, "getLpAssetFromPoolAssetsREADONLY", [assetOut, assetIn], nil)
9696 let $t025613066 = if ((lpNonReverese != unit))
9797 then {
9898 let isReverse = false
9999 let pool = {
100100 let @ = invoke(factoryContract, "getPoolAddressFromLpAssetREADONLY", [lpNonReverese], nil)
101101 if ($isInstanceOf(@, "String"))
102102 then @
103103 else throw(($getType(@) + " couldn't be cast to String"))
104104 }
105105 $Tuple2(isReverse, pool)
106106 }
107107 else if ((lpReverse != unit))
108108 then {
109109 let isReverse = true
110110 let pool = {
111111 let @ = invoke(factoryContract, "getPoolAddressFromLpAssetREADONLY", [lpReverse], 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 poolNotExist
119119 let isReverse = $t025613066._1
120120 let pool = $t025613066._2
121121 let poolStatus = {
122122 let @ = invoke(factoryContract, "getPoolStatusREADONLY", [pool], nil)
123123 if ($isInstanceOf(@, "Int"))
124124 then @
125125 else throw(($getType(@) + " couldn't be cast to Int"))
126126 }
127127 let check = if ((poolStatus == 1))
128128 then true
129129 else poolDisabled
130130 if ((check == check))
131131 then {
132132 let poolAdr = addressFromStringValue(valueOrElse(pool, ""))
133133 let res = {
134134 let @ = invoke(poolAdr, "calculateAmountOutForSwapREADONLY", [toInt(cleanAmountIn), isReverse], nil)
135135 if ($isInstanceOf(@, "Int"))
136136 then @
137137 else throw(($getType(@) + " couldn't be cast to Int"))
138138 }
139139 $Tuple2(nil, res)
140140 }
141141 else throw("Strict value is not equal to itself.")
142142 }
143143
144144
145145
146146 @Callable(i)
147147 func swap (amountOutMin,assetOut,addressTo) = {
148148 let pmt = value(i.payments[0])
149149 let assetIn = if ((pmt.assetId == unit))
150150 then toBytes("WAVES")
151151 else value(pmt.assetId)
152152 let amountIn = value(pmt.amount)
153153 let prFee = value(getInteger(protocolFee()))
154154 let feeProtocolAmount = fraction(toBigInt(amountIn), toBigInt(prFee), feeScale)
155155 let cleanAmountIn = (toBigInt(amountIn) - feeProtocolAmount)
156156 let checks = [if ((size(i.payments) == 1))
157157 then true
158158 else throw("exactly 1 payment are expected")]
159159 if ((checks == checks))
160160 then {
161161 let lpNonReverese = invoke(factoryContract, "getLpAssetFromPoolAssetsREADONLY", [toBase58String(assetIn), assetOut], nil)
162162 let lpReverse = invoke(factoryContract, "getLpAssetFromPoolAssetsREADONLY", [assetOut, toBase58String(assetIn)], nil)
163- let $t042814771 = if ((lpNonReverese != unit))
163+ let $t042814786 = if ((lpNonReverese != unit))
164164 then {
165165 let isReverse = false
166166 let pool = {
167167 let @ = invoke(factoryContract, "getPoolAddressFromLpAssetREADONLY", [lpNonReverese], nil)
168- if ($isInstanceOf(@, "Address"))
168+ if ($isInstanceOf(@, "String"))
169169 then @
170- else throw(($getType(@) + " couldn't be cast to Address"))
170+ else throw(($getType(@) + " couldn't be cast to String"))
171171 }
172172 $Tuple2(isReverse, pool)
173173 }
174174 else if ((lpReverse != unit))
175175 then {
176176 let isReverse = true
177- let pool = invoke(factoryContract, "getPoolAddressFromLpAssetREADONLY", [lpReverse], nil)
177+ let pool = {
178+ let @ = invoke(factoryContract, "getPoolAddressFromLpAssetREADONLY", [lpReverse], nil)
179+ if ($isInstanceOf(@, "String"))
180+ then @
181+ else throw(($getType(@) + " couldn't be cast to String"))
182+ }
178183 $Tuple2(isReverse, pool)
179184 }
180185 else poolNotExist
181- let isReverse = $t042814771._1
182- let pool = $t042814771._2
186+ let isReverse = $t042814786._1
187+ let pool = $t042814786._2
183188 let isPoolOneTokenOperationsDisabled = {
184189 let @ = invoke(factoryContract, "isPoolOneTokenOperationsDisabledREADONLY", [pool], nil)
185190 if ($isInstanceOf(@, "Boolean"))
186191 then @
187192 else throw(($getType(@) + " couldn't be cast to Boolean"))
188193 }
189194 let check = if (isPoolOneTokenOperationsDisabled)
190195 then true
191196 else poolDisabled
192197 if ((check == check))
193198 then {
194199 let poolAdr = addressFromStringValue(valueOrElse(pool, ""))
195200 let res = {
196201 let @ = invoke(poolAdr, "calculateAmountOutForSwapAndSendTokens", [toInt(cleanAmountIn), isReverse, amountOutMin, addressTo], [AttachedPayment(assetIn, toInt(cleanAmountIn))])
197202 if ($isInstanceOf(@, "Boolean"))
198203 then @
199204 else throw(($getType(@) + " couldn't be cast to Boolean"))
200205 }
201206 $Tuple2([ScriptTransfer(feeContract, toInt(feeProtocolAmount), assetIn)], res)
202207 }
203208 else throw("Strict value is not equal to itself.")
204209 }
205210 else throw("Strict value is not equal to itself.")
206211 }
207212
208213
209214
210215 @Callable(i)
211216 func setManager (pendingManagerPublicKey) = {
212217 let checkCaller = mustManager(i)
213218 if ((checkCaller == checkCaller))
214219 then {
215220 let checkManagerPublicKey = fromBase58String(pendingManagerPublicKey)
216221 if ((checkManagerPublicKey == checkManagerPublicKey))
217222 then [StringEntry(keyPendingManagerPublicKey(), pendingManagerPublicKey)]
218223 else throw("Strict value is not equal to itself.")
219224 }
220225 else throw("Strict value is not equal to itself.")
221226 }
222227
223228
224229
225230 @Callable(i)
226231 func confirmManager () = {
227232 let pm = pendingManagerPublicKeyOrUnit()
228233 let hasPM = if (isDefined(pm))
229234 then true
230235 else throw("no pending manager")
231236 if ((hasPM == hasPM))
232237 then {
233238 let checkPM = if ((i.callerPublicKey == value(pm)))
234239 then true
235240 else throw("you are not pending manager")
236241 if ((checkPM == checkPM))
237242 then [StringEntry(keyManagerPublicKey(), toBase58String(value(pm))), DeleteEntry(keyPendingManagerPublicKey())]
238243 else throw("Strict value is not equal to itself.")
239244 }
240245 else throw("Strict value is not equal to itself.")
241246 }
242247
243248
244249 @Verifier(tx)
245250 func verify () = {
246251 let targetPublicKey = match managerPublicKeyOrUnit() {
247252 case pk: ByteVector =>
248253 pk
249254 case _: Unit =>
250255 tx.senderPublicKey
251256 case _ =>
252257 throw("Match error")
253258 }
254259 sigVerify(tx.bodyBytes, tx.proofs[0], targetPublicKey)
255260 }
256261

github/deemru/w8io/3ef1775 
544.42 ms