tx · CmwuR2kWyenmUFDs9cwBVzwkYLEAT532bZ5Rir33Ro38

3N9Fi37D7EoAveMhpdBFPB8NEUn4bwXEV4G:  -0.03700000 Waves

2023.05.27 19:08 [2596590] smart account 3N9Fi37D7EoAveMhpdBFPB8NEUn4bwXEV4G > SELF 0.00000000 Waves

{ "type": 13, "id": "CmwuR2kWyenmUFDs9cwBVzwkYLEAT532bZ5Rir33Ro38", "fee": 3700000, "feeAssetId": null, "timestamp": 1685203690007, "version": 2, "chainId": 84, "sender": "3N9Fi37D7EoAveMhpdBFPB8NEUn4bwXEV4G", "senderPublicKey": "7SdMpYYBFTqnnyr31oEmHeJfFTa3aGnwocRuvfEhpyoh", "proofs": [ "2yEEbgjj6TxtUD8u17Y1KDKWEE2m8J4KJJxK3QecWqMWZi9gEV42WrexVVwtePxkxkdhUNMpCao6qyUBonKATkQZ" ], "script": "base64:BgI7CAISABIAEgUKAwEBARIGCgQICAgIEgMKAQgSBgoECAEBARIECgIIARIECgIIARIECgIIARIFCgMBCAg3AA1rX2luaXRpYWxpemVkAg1rX2luaXRpYWxpemVkAAhrX3BhdXNlZAIIa19wYXVzZWQABWtfZmVlAgVrX2ZlZQAIa19yZWJhdGUCCGtfcmViYXRlABVrX2ZlZVRvU3Rha2Vyc1BlcmNlbnQCFWtfZmVlVG9TdGFrZXJzUGVyY2VudAAUa19jb29yZGluYXRvckFkZHJlc3MCFGtfY29vcmRpbmF0b3JBZGRyZXNzAA5rX3Jld2FyZF9hc3NldAIOa19yZXdhcmRfYXNzZXQADmtfc3dhcF9hZGRyZXNzAg5rX3N3YXBfYWRkcmVzcwARa19zdGFraW5nX2FkZHJlc3MCEWtfc3Rha2luZ19hZGRyZXNzAA9rX2V4Y2Vzc0JhbGFuY2UCD2tfZXhjZXNzQmFsYW5jZQANa19mcmVlQmFsYW5jZQINa19mcmVlQmFsYW5jZQAUa19tYXhTcG90VXRpbGl6YXRpb24CFGtfbWF4U3BvdFV0aWxpemF0aW9uABBrX21heFByaWNlU3ByZWFkAhBrX21heFByaWNlU3ByZWFkABJrX2Jhc2VBc3NldFJlc2VydmUCCGtfYnNBc3RSABJrX3F1b3RlQXNzZXRXZWlnaHQCCGtfcXRBc3RXABNrX3RvdGFsUG9zaXRpb25TaXplAhNrX3RvdGFsUG9zaXRpb25TaXplAAVrX2FtbQIFa19hbW0AB2tfdmF1bHQCB2tfdmF1bHQACmtfYW1tX2RhdGECCmtfYW1tX2RhdGEADWtfYXNzZXRfdmF1bHQCDWtfYXNzZXRfdmF1bHQAC2tfYXNzZXRfYW1tAgtrX2Fzc2V0X2FtbQAPa19hZG1pbl9hZGRyZXNzAg9rX2FkbWluX2FkZHJlc3MBDnRvQ29tcG9zaXRlS2V5AgRfa2V5CF9hZGRyZXNzCQCsAgIJAKwCAgUEX2tleQIBXwUIX2FkZHJlc3MBC2Nvb3JkaW5hdG9yAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFFGtfY29vcmRpbmF0b3JBZGRyZXNzAhNDb29yZGluYXRvciBub3Qgc2V0AQxhZG1pbkFkZHJlc3MACQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFD2tfYWRtaW5fYWRkcmVzcwEOc3Rha2luZ0FkZHJlc3MACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAURa19zdGFraW5nX2FkZHJlc3MCD1N0YWtpbmcgbm90IHNldAELcmV3YXJkQXNzZXQACQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCCQELY29vcmRpbmF0b3IABQ5rX3Jld2FyZF9hc3NldAIUUmV3YXJkIGFzc2V0IG5vdCBzZXQBC3N3YXBBZGRyZXNzAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCCQELY29vcmRpbmF0b3IABQ5rX3N3YXBfYWRkcmVzcwIUU3dhcCBhZGRyZXNzIG5vdCBzZXQCFFN3YXAgYWRkcmVzcyBpbnZhbGlkARFnZXRBZGRyZXNzSWZWYWxpZAEHYWRkcmVzcwkApQgBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUHYWRkcmVzcwkArAICCQCsAgICDUNhbid0IHBhcnNlICIFB2FkZHJlc3MCDCIgYXMgYWRkcmVzcwAPREVDSU1BTF9OVU1CRVJTAAYADERFQ0lNQUxfVU5JVAkAaAIAAQkAaAIJAGgCCQBoAgkAaAIJAGgCAAoACgAKAAoACgAKAQFzAQJfeAkArAICCQCkAwEFAl94AgEsAQRkaXZkAgJfeAJfeQkAbgQFAl94BQxERUNJTUFMX1VOSVQFAl95BQhIQUxGRVZFTgEEbXVsZAICX3gCX3kJAG4EBQJfeAUCX3kFDERFQ0lNQUxfVU5JVAUISEFMRkVWRU4BA2FicwECX3gDCQBmAgUCX3gAAAUCX3gJAQEtAQUCX3gBBHZtYXgCAl94Al95AwkAZwIFAl94BQJfeQUCX3gFAl95AQR2bWluAgJfeAJfeQMJAGcCBQJfeQUCX3gFAl94BQJfeQEDaW50AQFrCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwUBawkArAICAg1ubyB2YWx1ZSBmb3IgBQFrAQNmZWUACQEDaW50AQUFa19mZWUBCWZlZVJlYmF0ZQAJAQNpbnQBBQhrX3JlYmF0ZQETZmVlVG9TdGFrZXJzUGVyY2VudAAJAQNpbnQBBRVrX2ZlZVRvU3Rha2Vyc1BlcmNlbnQBDmdldE1hcmtldE1heWJlAQhfYXNzZXRJZAQKYWRkcmVzc1N0cgkAnQgCBQR0aGlzCQEOdG9Db21wb3NpdGVLZXkCBQtrX2Fzc2V0X2FtbQUIX2Fzc2V0SWQDCQEJaXNEZWZpbmVkAQUKYWRkcmVzc1N0cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAQV2YWx1ZQEFCmFkZHJlc3NTdHIJAKwCAgIbSW52YWxpZCB2YXVsdCBhZGRyZXNzIGZvcjogBQhfYXNzZXRJZAUEdW5pdAENZ2V0VmF1bHRNYXliZQEIX2Fzc2V0SWQECmFkZHJlc3NTdHIJAJ0IAgUEdGhpcwkBDnRvQ29tcG9zaXRlS2V5AgUNa19hc3NldF92YXVsdAUIX2Fzc2V0SWQDCQEJaXNEZWZpbmVkAQUKYWRkcmVzc1N0cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAQV2YWx1ZQEFCmFkZHJlc3NTdHIJAKwCAgIcSW52YWxpZCBtYXJrZXQgYWRkcmVzcyBmb3I6IAUIX2Fzc2V0SWQFBHVuaXQBCWdldE1hcmtldAEIX2Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkBDmdldE1hcmtldE1heWJlAQUIX2Fzc2V0SWQJAKwCAgIPTm8gbWFya2V0IGZvcjogBQhfYXNzZXRJZAEIZ2V0VmF1bHQBCF9hc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAQ1nZXRWYXVsdE1heWJlAQUIX2Fzc2V0SWQJAKwCAgIOTm8gdmF1bHQgZm9yOiAFCF9hc3NldElkARBnZXRFeGNlc3NCYWxhbmNlAQZfdmF1bHQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUGX3ZhdWx0BQ9rX2V4Y2Vzc0JhbGFuY2UAAAEOZ2V0RnJlZUJhbGFuY2UBBl92YXVsdAkBC3ZhbHVlT3JFbHNlAgkAmggCBQZfdmF1bHQFDWtfZnJlZUJhbGFuY2UAAAERZ2V0TWF4VXRpbGl6YXRpb24BBl92YXVsdAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBl92YXVsdAUUa19tYXhTcG90VXRpbGl6YXRpb24JAKwCAgIiTWF4IHNwb3QgdXRpbGl6YXRpb24gbm90IHNldCBmb3I6IAkApQgBBQZfdmF1bHQBEWdldE1heFByaWNlU3ByZWFkAQRfYW1tCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEX2FtbQUQa19tYXhQcmljZVNwcmVhZAkArAICAh5NYXggcHJpY2Ugc3ByZWFkIG5vdCBzZXQgZm9yOiAJAKUIAQUEX2FtbQEoZ2V0T2xkUHJvamVjdGVkTGlxdWlkaXR5QW5kVGVybWluYWxQcmljZQEEX2FtbQQEc3luYwkA/AcEBQRfYW1tAhlzeW5jVGVybWluYWxQcmljZVRvT3JhY2xlBQNuaWwFA25pbAMJAAACBQRzeW5jBQRzeW5jBAZwcmljZVIJAPwHBAUEX2FtbQIXY29tcHV0ZVRlcm1pbmFsQW1tUHJpY2UFA25pbAUDbmlsAwkAAAIFBnByaWNlUgUGcHJpY2VSBAVwcmljZQQHJG1hdGNoMAUGcHJpY2VSAwkAAQIFByRtYXRjaDACA0ludAQBdAUHJG1hdGNoMAUBdAkAAgEJAKwCAgIrSW52YWxpZCBjb21wdXRlVGVybWluYWxBbW1QcmljZSByZXN1bHQgZm9yIAkApQgBBQRfYW1tBBZjdXJyZW50QmFzZUFzc2V0QW1vdW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEX2FtbQUSa19iYXNlQXNzZXRSZXNlcnZlCQCsAgIJAKwCAgkArAICAgRLZXkgBRJrX2Jhc2VBc3NldFJlc2VydmUCDSBub3Qgc2V0IGZvciAJAKUIAQUEX2FtbQMJAAACBRZjdXJyZW50QmFzZUFzc2V0QW1vdW50BRZjdXJyZW50QmFzZUFzc2V0QW1vdW50BBRiYXNlQXNzZXRBbW91bnREZWx0YQkBC3ZhbHVlT3JFbHNlAgkAmggCBQRfYW1tBRNrX3RvdGFsUG9zaXRpb25TaXplAAADCQAAAgUUYmFzZUFzc2V0QW1vdW50RGVsdGEFFGJhc2VBc3NldEFtb3VudERlbHRhBBBxdW90ZUFzc2V0V2VpZ2h0CQELdmFsdWVPckVsc2UCCQCaCAIFBF9hbW0FEmtfcXVvdGVBc3NldFdlaWdodAUMREVDSU1BTF9VTklUAwkAAAIFEHF1b3RlQXNzZXRXZWlnaHQFEHF1b3RlQXNzZXRXZWlnaHQJAJUKAwkAZAIFFmN1cnJlbnRCYXNlQXNzZXRBbW91bnQFFGJhc2VBc3NldEFtb3VudERlbHRhBQVwcmljZQUQcXVvdGVBc3NldFdlaWdodAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgETZ2V0SW1iYWxhbmNlQ29zdFVTRAQGX3ZhdWx0BF9hbW0JX2RlY2ltYWxzB19hbW91bnQEBmFtb3VudAMJAAACBQlfZGVjaW1hbHMACAUHX2Ftb3VudAMJAAACBQlfZGVjaW1hbHMABgkAaAIFB19hbW91bnQAZAkAAgECEEludmFsaWQgZGVjaW1hbHMEDG9sZEltYmFsYW5jZQkBEGdldEV4Y2Vzc0JhbGFuY2UBBQZfdmF1bHQEDG5ld0ltYmFsYW5jZQkAZAIFDG9sZEltYmFsYW5jZQUGYW1vdW50BBtpbWJhbGFuY2VEZWx0YUluQW1tRGVjaW1hbHMJAGkCCQBlAgkBA2FicwEFDG5ld0ltYmFsYW5jZQkBA2FicwEFDG9sZEltYmFsYW5jZQBkBAZwcmljZVIJAPwHBAUEX2FtbQIQY29tcHV0ZVNwb3RQcmljZQUDbmlsBQNuaWwDCQAAAgUGcHJpY2VSBQZwcmljZVIEBXByaWNlBAckbWF0Y2gwBQZwcmljZVIDCQABAgUHJG1hdGNoMAIDSW50BAF0BQckbWF0Y2gwBQF0CQACAQkArAICAiRJbnZhbGlkIGNvbXB1dGVTcG90UHJpY2UgcmVzdWx0IGZvciAJAKUIAQUEX2FtbQQTaW1iYWxhbmNlRGVsdGFJblVTRAkBBG11bGQCBRtpbWJhbGFuY2VEZWx0YUluQW1tRGVjaW1hbHMFBXByaWNlBBdmcmVlQmFsYW5jZUluQW1tRGVjaW1hbAkAaQIJAQ5nZXRGcmVlQmFsYW5jZQEFBl92YXVsdABkBBF2YXVsdEJhbGFuY2VJblVTRAkBBG11bGQCBRdmcmVlQmFsYW5jZUluQW1tRGVjaW1hbAUFcHJpY2UJAJQKAgUTaW1iYWxhbmNlRGVsdGFJblVTRAURdmF1bHRCYWxhbmNlSW5VU0QJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDGVzdGltYXRlU3dhcAMHX2Ftb3VudAhfYXNzZXRJZAxfdGFyZ2V0QXNzZXQEDnNvdXJjZURlY2ltYWxzAwkAAAIFCF9hc3NldElkAgVXQVZFUwAICAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUIX2Fzc2V0SWQJAKwCAgIPSW52YWxpZCBhc3NldDogBQhfYXNzZXRJZAhkZWNpbWFscwQOdGFyZ2V0RGVjaW1hbHMDCQAAAgUMX3RhcmdldEFzc2V0AgVXQVZFUwAICAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUMX3RhcmdldEFzc2V0CQCsAgICD0ludmFsaWQgYXNzZXQ6IAUMX3RhcmdldEFzc2V0CGRlY2ltYWxzBBlzb3VyY2VBbW91bnRJbkFtbURlY2ltYWxzAwkAAAIFDnNvdXJjZURlY2ltYWxzAAgJAGkCBQdfYW1vdW50AGQDCQAAAgUOc291cmNlRGVjaW1hbHMABgUHX2Ftb3VudAkAAgECGUludmFsaWQgZGVjaW1hbHMgKHNvdXJjZSkECnNlbGxNYXJrZXQJAQlnZXRNYXJrZXQBBQhfYXNzZXRJZAQCczEJAPwHBAUKc2VsbE1hcmtldAILc3dhcFRvUXVvdGUJAMwIAgUZc291cmNlQW1vdW50SW5BbW1EZWNpbWFscwkAzAgCAAAFA25pbAUDbmlsAwkAAAIFAnMxBQJzMQQJdXNkQW1vdW50BAckbWF0Y2gwBQJzMQMJAAECBQckbWF0Y2gwAgNJbnQEAXQFByRtYXRjaDAFAXQJAAIBAhpJbnZhbGlkIHN3YXBUb1F1b3RlIHJlc3VsdAQJYnV5TWFya2V0CQEJZ2V0TWFya2V0AQUMX3RhcmdldEFzc2V0BAJzMgkA/AcEBQlidXlNYXJrZXQCCnN3YXBUb0Jhc2UJAMwIAgUJdXNkQW1vdW50CQDMCAIAAAUDbmlsBQNuaWwDCQAAAgUCczIFAnMyBAx0YXJnZXRBbW91bnQEByRtYXRjaDAFAnMyAwkAAQIFByRtYXRjaDACA0ludAQBdAUHJG1hdGNoMAMJAAACBQ50YXJnZXREZWNpbWFscwAICQBoAgUBdABkAwkAAAIFDnRhcmdldERlY2ltYWxzAAYFAXQJAAIBAhlJbnZhbGlkIGRlY2ltYWxzICh0YXJnZXQpCQACAQIZSW52YWxpZCBzd2FwVG9CYXNlIHJlc3VsdAQKdmF1bHRUb0FkZAkBCGdldFZhdWx0AQUIX2Fzc2V0SWQECyR0MDc4NjI4MDI3CQETZ2V0SW1iYWxhbmNlQ29zdFVTRAQFCnZhdWx0VG9BZGQFCnNlbGxNYXJrZXQFDnNvdXJjZURlY2ltYWxzBQdfYW1vdW50BA9hZGRJbWJhbGFuY2VVU0QIBQskdDA3ODYyODAyNwJfMQQSYWRkVmF1bHRCYWxhbmNlVVNECAULJHQwNzg2MjgwMjcCXzIEDXZhdWx0VG9SZW1vdmUJAQhnZXRWYXVsdAEFDF90YXJnZXRBc3NldAQLJHQwODA3NTgzMTEJARNnZXRJbWJhbGFuY2VDb3N0VVNEBAUNdmF1bHRUb1JlbW92ZQUJYnV5TWFya2V0BQ50YXJnZXREZWNpbWFscwkBAS0BBQx0YXJnZXRBbW91bnQEEnJlbW92ZUltYmFsYW5jZVVTRAgFCyR0MDgwNzU4MzExAl8xBBVyZW1vdmVWYXVsdEJhbGFuY2VVU0QIBQskdDA4MDc1ODMxMQJfMgQUcmVzdWx0SW1iYWxhbmNlSW5VU0QJAGQCBQ9hZGRJbWJhbGFuY2VVU0QFEnJlbW92ZUltYmFsYW5jZVVTRAQHYmFzZUZlZQkBA2ZlZQAEC3RvdGFsTGlxdWlkCQBkAgUSYWRkVmF1bHRCYWxhbmNlVVNEBRVyZW1vdmVWYXVsdEJhbGFuY2VVU0QECyR0MDg0NjU4OTQ4AwkAZgIAAAUUcmVzdWx0SW1iYWxhbmNlSW5VU0QECnJlYmF0ZVJhdGUJAQRkaXZkAgkBA2FicwEFFHJlc3VsdEltYmFsYW5jZUluVVNEBQt0b3RhbExpcXVpZAQGcmViYXRlCQEEbXVsZAIJAQlmZWVSZWJhdGUABQpyZWJhdGVSYXRlBAlhY3R1YWxGZWUDCQBmAgUGcmViYXRlBQdiYXNlRmVlAAAJAGUCBQdiYXNlRmVlBQZyZWJhdGUJAJUKAwUJYWN0dWFsRmVlBQZyZWJhdGUAAAQHdGF4UmF0ZQkBBGRpdmQCCQEDYWJzAQUUcmVzdWx0SW1iYWxhbmNlSW5VU0QFC3RvdGFsTGlxdWlkBAN0YXgJAQRtdWxkAgkBCWZlZVJlYmF0ZQAFB3RheFJhdGUECWFjdHVhbEZlZQkAZAIFB2Jhc2VGZWUFA3RheAkAlQoDBQlhY3R1YWxGZWUAAAUDdGF4BAlhY3R1YWxGZWUIBQskdDA4NDY1ODk0OAJfMQQGcmViYXRlCAULJHQwODQ2NTg5NDgCXzIEA3RheAgFCyR0MDg0NjU4OTQ4Al8zBBBmZWVJblRhcmdldFRva2VuCQEEbXVsZAIFDHRhcmdldEFtb3VudAUJYWN0dWFsRmVlBBdyZXN1bHRUYXJnZXRBc3NldEFtb3VudAkAZQIFDHRhcmdldEFtb3VudAUQZmVlSW5UYXJnZXRUb2tlbgkAnwoNBQx0YXJnZXRBbW91bnQFEGZlZUluVGFyZ2V0VG9rZW4FF3Jlc3VsdFRhcmdldEFzc2V0QW1vdW50BQdiYXNlRmVlBQlhY3R1YWxGZWUFBnJlYmF0ZQUDdGF4BQ12YXVsdFRvUmVtb3ZlBQp2YXVsdFRvQWRkBQ9hZGRJbWJhbGFuY2VVU0QFEmFkZFZhdWx0QmFsYW5jZVVTRAUScmVtb3ZlSW1iYWxhbmNlVVNEBRVyZW1vdmVWYXVsdEJhbGFuY2VVU0QJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BGmVzdGltYXRlUHJvamVjdGVkTGlxdWlkaXR5AwZfdmF1bHQEX2FtbQdfY2hhbmdlBAx2YXVsdFJlc2VydmUJAGQCCQBpAgkBDmdldEZyZWVCYWxhbmNlAQUGX3ZhdWx0AGQJAGkCBQdfY2hhbmdlAGQEEHZhdWx0VXRpbGl6YXRpb24JAGkCCQERZ2V0TWF4VXRpbGl6YXRpb24BBQZfdmF1bHQAZAQObWF4UHJpY2VTcHJlYWQJARFnZXRNYXhQcmljZVNwcmVhZAEFBF9hbW0EGmFjdHVhbExpcXVpZGl0eUluQmFzZUFzc2V0CQEEbXVsZAIFDHZhdWx0UmVzZXJ2ZQUQdmF1bHRVdGlsaXphdGlvbgQSbmV3QmFzZUFzc2V0QW1vdW50CQEEZGl2ZAIJAGUCBRphY3R1YWxMaXF1aWRpdHlJbkJhc2VBc3NldAkBBG11bGQCBQ5tYXhQcmljZVNwcmVhZAUaYWN0dWFsTGlxdWlkaXR5SW5CYXNlQXNzZXQFDm1heFByaWNlU3ByZWFkBAskdDA5ODMzOTkxOQkBKGdldE9sZFByb2plY3RlZExpcXVpZGl0eUFuZFRlcm1pbmFsUHJpY2UBBQRfYW1tAwkAAAIFCyR0MDk4MzM5OTE5BQskdDA5ODMzOTkxOQQBcQgFCyR0MDk4MzM5OTE5Al8zBAVwcmljZQgFCyR0MDk4MzM5OTE5Al8yBBJvbGRCYXNlQXNzZXRBbW91bnQIBQskdDA5ODMzOTkxOQJfMQQUYmFzZUFzc2V0QW1vdW50RGVsdGEJAGUCBRJuZXdCYXNlQXNzZXRBbW91bnQFEm9sZEJhc2VBc3NldEFtb3VudAQQcXVvdGVBc3NldENoYW5nZQkBBGRpdmQCCQEEbXVsZAIFFGJhc2VBc3NldEFtb3VudERlbHRhBQVwcmljZQUBcQkAlAoCBRRiYXNlQXNzZXRBbW91bnREZWx0YQUQcXVvdGVBc3NldENoYW5nZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgELaW5pdGlhbGl6ZWQACQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFDWtfaW5pdGlhbGl6ZWQHAQ51cGRhdGVTZXR0aW5ncwMEX2ZlZQdfcmViYXRlFF9mZWVUb1N0YWtlcnNQZXJjZW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQVrX2ZlZQUEX2ZlZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUIa19yZWJhdGUFB19yZWJhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIFFWtfZmVlVG9TdGFrZXJzUGVyY2VudAUUX2ZlZVRvU3Rha2Vyc1BlcmNlbnQFA25pbAoBaQEFcGF1c2UAAwkBAiE9AggFAWkGY2FsbGVyCQEMYWRtaW5BZGRyZXNzAAkAAgECFEludmFsaWQgcGF1c2UgcGFyYW1zCQDMCAIJAQxCb29sZWFuRW50cnkCBQhrX3BhdXNlZAYFA25pbAFpAQd1bnBhdXNlAAMJAQIhPQIIBQFpBmNhbGxlcgkBDGFkbWluQWRkcmVzcwAJAAIBAhZJbnZhbGlkIHVucGF1c2UgcGFyYW1zCQDMCAIJAQxCb29sZWFuRW50cnkCBQhrX3BhdXNlZAcFA25pbAFpAQ5jaGFuZ2VTZXR0aW5ncwMEX2ZlZQdfcmViYXRlFF9mZWVUb1N0YWtlcnNQZXJjZW50AwMDAwMDCQBnAgAABQRfZmVlBgkAZwIAAAUHX3JlYmF0ZQYJAGcCAAAFFF9mZWVUb1N0YWtlcnNQZXJjZW50BgkAZgIFFF9mZWVUb1N0YWtlcnNQZXJjZW50BQxERUNJTUFMX1VOSVQGCQEBIQEJAQtpbml0aWFsaXplZAAGCQECIT0CCAUBaQZjYWxsZXIJAQxhZG1pbkFkZHJlc3MACQACAQIdSW52YWxpZCBjaGFuZ2VTZXR0aW5ncyBwYXJhbXMJAQ51cGRhdGVTZXR0aW5ncwMFBF9mZWUFB19yZWJhdGUFFF9mZWVUb1N0YWtlcnNQZXJjZW50AWkBBmFkZEFtbQQLX2FtbUFkZHJlc3MNX3ZhdWx0QWRkcmVzcwtfdmF1bHRBc3NldAVfZGF0YQMJAQIhPQIIBQFpBmNhbGxlcgkBDGFkbWluQWRkcmVzcwAJAAIBAhVJbnZhbGlkIGFkZEFtbSBwYXJhbXMECmFtbUFkZHJlc3MJARFnZXRBZGRyZXNzSWZWYWxpZAEFC19hbW1BZGRyZXNzAwkAAAIFCmFtbUFkZHJlc3MFCmFtbUFkZHJlc3MEDHZhdWx0QWRkcmVzcwkBEWdldEFkZHJlc3NJZlZhbGlkAQUNX3ZhdWx0QWRkcmVzcwMJAAACBQx2YXVsdEFkZHJlc3MFDHZhdWx0QWRkcmVzcwkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUFa19hbW0FC19hbW1BZGRyZXNzBgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUHa192YXVsdAUNX3ZhdWx0QWRkcmVzcwYJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUNa19hc3NldF92YXVsdAULX3ZhdWx0QXNzZXQFDV92YXVsdEFkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgULa19hc3NldF9hbW0FC192YXVsdEFzc2V0BQtfYW1tQWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBQprX2FtbV9kYXRhBQtfYW1tQWRkcmVzcwUFX2RhdGEFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQlyZW1vdmVBbW0BC19hbW1BZGRyZXNzAwkBAiE9AggFAWkGY2FsbGVyCQEMYWRtaW5BZGRyZXNzAAkAAgECGEludmFsaWQgcmVtb3ZlQW1tIHBhcmFtcwkAzAgCCQELRGVsZXRlRW50cnkBCQEOdG9Db21wb3NpdGVLZXkCBQVrX2FtbQULX2FtbUFkZHJlc3MFA25pbAFpAQppbml0aWFsaXplBAxfY29vcmRpbmF0b3IEX2ZlZQdfcmViYXRlFF9mZWVUb1N0YWtlcnNQZXJjZW50AwMDAwMDCQBnAgAABQRfZmVlBgkAZwIAAAUHX3JlYmF0ZQYJAGcCAAAFFF9mZWVUb1N0YWtlcnNQZXJjZW50BgkAZgIFFF9mZWVUb1N0YWtlcnNQZXJjZW50BQxERUNJTUFMX1VOSVQGCQELaW5pdGlhbGl6ZWQABgkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIdSW52YWxpZCBpbml0aWFsaXplIHBhcmFtZXRlcnMJAM4IAgkBDnVwZGF0ZVNldHRpbmdzAwUEX2ZlZQUHX3JlYmF0ZQUUX2ZlZVRvU3Rha2Vyc1BlcmNlbnQJAMwIAgkBDEJvb2xlYW5FbnRyeQIFDWtfaW5pdGlhbGl6ZWQGCQDMCAIJAQtTdHJpbmdFbnRyeQIFFGtfY29vcmRpbmF0b3JBZGRyZXNzCQClCAEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFDF9jb29yZGluYXRvcgUDbmlsAWkBBHN3YXACDF90YXJnZXRBc3NldBBfbWluVGFyZ2V0QW1vdW50BBFjaGVja1BheW1lbnRDb3VudAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECIkludmFsaWQgc3dhcCBwYXJhbXM6IHBheW1lbnQgY291bnQGAwkAAAIFEWNoZWNrUGF5bWVudENvdW50BRFjaGVja1BheW1lbnRDb3VudAQHX2Ftb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQECF9hc3NldElkCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQEB2Fzc2V0SWQDCQEJaXNEZWZpbmVkAQUIX2Fzc2V0SWQJANgEAQkBBXZhbHVlAQUIX2Fzc2V0SWQCBVdBVkVTBBFjaGVja05vdFNhbWVBc3NldAMJAAACBQxfdGFyZ2V0QXNzZXQFB2Fzc2V0SWQJAAIBAh9JbnZhbGlkIHN3YXAgcGFyYW1zOiBzYW1lIGFzc2V0BgMJAAACBRFjaGVja05vdFNhbWVBc3NldAURY2hlY2tOb3RTYW1lQXNzZXQEDSR0MDEzNjEwMTM5MjkJAQxlc3RpbWF0ZVN3YXADBQdfYW1vdW50BQdhc3NldElkBQxfdGFyZ2V0QXNzZXQDCQAAAgUNJHQwMTM2MTAxMzkyOQUNJHQwMTM2MTAxMzkyOQQKdmF1bHRUb0FkZAgFDSR0MDEzNjEwMTM5MjkCXzkEDXZhdWx0VG9SZW1vdmUIBQ0kdDAxMzYxMDEzOTI5Al84BAN0YXgIBQ0kdDAxMzYxMDEzOTI5Al83BAZyZWJhdGUIBQ0kdDAxMzYxMDEzOTI5Al82BAlhY3R1YWxGZWUIBQ0kdDAxMzYxMDEzOTI5Al81BAdiYXNlRmVlCAUNJHQwMTM2MTAxMzkyOQJfNAQXcmVzdWx0VGFyZ2V0QXNzZXRBbW91bnQIBQ0kdDAxMzYxMDEzOTI5Al8zBBBmZWVJblRhcmdldFRva2VuCAUNJHQwMTM2MTAxMzkyOQJfMgQMdGFyZ2V0QW1vdW50CAUNJHQwMTM2MTAxMzkyOQJfMQQJZG9EZXBvc2l0CQD8BwQFCnZhdWx0VG9BZGQCBXJlcGF5BQNuaWwJAMwIAgkAkQMCCAUBaQhwYXltZW50cwAABQNuaWwDCQAAAgUJZG9EZXBvc2l0BQlkb0RlcG9zaXQECmRvV2l0aGRyYXcJAPwHBAUNdmF1bHRUb1JlbW92ZQIGYm9ycm93CQDMCAIFDHRhcmdldEFtb3VudAUDbmlsBQNuaWwDCQAAAgUKZG9XaXRoZHJhdwUKZG9XaXRoZHJhdwQLdGFyZ2V0QXNzZXQDCQAAAgUMX3RhcmdldEFzc2V0AgVXQVZFUwUEdW5pdAkA2QQBBQxfdGFyZ2V0QXNzZXQEFnN0YWtlckZlZUluVGFyZ2V0VG9rZW4JAQRtdWxkAgUQZmVlSW5UYXJnZXRUb2tlbgkBE2ZlZVRvU3Rha2Vyc1BlcmNlbnQABBJscEZlZUluVGFyZ2V0VG9rZW4JAGUCBRBmZWVJblRhcmdldFRva2VuBRZzdGFrZXJGZWVJblRhcmdldFRva2VuBAxkb0NvbGxlY3RGZWUJAPwHBAUNdmF1bHRUb1JlbW92ZQIHYWRkRnJlZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQt0YXJnZXRBc3NldAUSbHBGZWVJblRhcmdldFRva2VuBQNuaWwDCQAAAgUMZG9Db2xsZWN0RmVlBQxkb0NvbGxlY3RGZWUEB3Jld2FyZHMDAwkAAAIFC3RhcmdldEFzc2V0CQELcmV3YXJkQXNzZXQABgkAAAIFFnN0YWtlckZlZUluVGFyZ2V0VG9rZW4AAAUWc3Rha2VyRmVlSW5UYXJnZXRUb2tlbgQGZG9Td2FwCQD8BwQJAQtzd2FwQWRkcmVzcwACBHN3YXAJAMwIAgkA2AQBCQELcmV3YXJkQXNzZXQACQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQt0YXJnZXRBc3NldAUWc3Rha2VyRmVlSW5UYXJnZXRUb2tlbgUDbmlsAwkAAAIFBmRvU3dhcAUGZG9Td2FwBAdyZXdhcmRzCQDwBwIFBHRoaXMJAQtyZXdhcmRBc3NldAADCQAAAgUHcmV3YXJkcwUHcmV3YXJkcwUHcmV3YXJkcwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQdyZXdhcmRzBQdyZXdhcmRzAwkAZgIFEF9taW5UYXJnZXRBbW91bnQFF3Jlc3VsdFRhcmdldEFzc2V0QW1vdW50CQACAQkArAICCQCsAgIJAKwCAgIeQ2FuIG5vdCBzd2FwIGR1ZSB0byBzbGlwcGFnZTogCQCkAwEFF3Jlc3VsdFRhcmdldEFzc2V0QW1vdW50AgMgPCAJAKQDAQUQX21pblRhcmdldEFtb3VudAkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUXcmVzdWx0VGFyZ2V0QXNzZXRBbW91bnQFC3RhcmdldEFzc2V0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQ5zdGFraW5nQWRkcmVzcwAFB3Jld2FyZHMJAQtyZXdhcmRBc3NldAAFA25pbAkAmAoGBQdfYW1vdW50BRdyZXN1bHRUYXJnZXRBc3NldEFtb3VudAUHYmFzZUZlZQUJYWN0dWFsRmVlBQZyZWJhdGUFA3RheAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARhub3RpZnlWYXVsdEJhbGFuY2VDaGFuZ2UCBl9hc3NldAdfY2hhbmdlBAZtYXJrZXQJAQ5nZXRNYXJrZXRNYXliZQEFBl9hc3NldAQFdmF1bHQJAQ1nZXRWYXVsdE1heWJlAQUGX2Fzc2V0AwMJAQlpc0RlZmluZWQBBQZtYXJrZXQJAQlpc0RlZmluZWQBBQV2YXVsdAcDCQECIT0CCAUBaQZjYWxsZXIFBXZhdWx0CQACAQInSW52YWxpZCBub3RpZnlWYXVsdEJhbGFuY2VDaGFuZ2UgcGFyYW1zBA0kdDAxNTg0NDE1OTYwCQEaZXN0aW1hdGVQcm9qZWN0ZWRMaXF1aWRpdHkDCQEFdmFsdWUBBQV2YXVsdAkBBXZhbHVlAQUGbWFya2V0BQdfY2hhbmdlAwkAAAIFDSR0MDE1ODQ0MTU5NjAFDSR0MDE1ODQ0MTU5NjAEEHF1b3RlQXNzZXRDaGFuZ2UIBQ0kdDAxNTg0NDE1OTYwAl8yBBRiYXNlQXNzZXRBbW91bnREZWx0YQgFDSR0MDE1ODQ0MTU5NjACXzEEBnJlc3VsdAkA/AcECQEFdmFsdWUBBQZtYXJrZXQCD2NoYW5nZUxpcXVpZGl0eQkAzAgCBRBxdW90ZUFzc2V0Q2hhbmdlBQNuaWwFA25pbAMJAAACBQZyZXN1bHQFBnJlc3VsdAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwBaQEfdmlld19lc3RpbWF0ZVByb2plY3RlZExpcXVpZGl0eQIGX2Fzc2V0B19jaGFuZ2UEBm1hcmtldAkBCWdldE1hcmtldAEFBl9hc3NldAQFdmF1bHQJAQhnZXRWYXVsdAEFBl9hc3NldAQNJHQwMTYyNDgxNjM0OAkBGmVzdGltYXRlUHJvamVjdGVkTGlxdWlkaXR5AwUFdmF1bHQFBm1hcmtldAUHX2NoYW5nZQMJAAACBQ0kdDAxNjI0ODE2MzQ4BQ0kdDAxNjI0ODE2MzQ4BBBxdW90ZUFzc2V0Q2hhbmdlCAUNJHQwMTYyNDgxNjM0OAJfMgQUYmFzZUFzc2V0QW1vdW50RGVsdGEIBQ0kdDAxNjI0ODE2MzQ4Al8xBARkYXRhCQC5CQIJAMwIAgkApAMBBRRiYXNlQXNzZXRBbW91bnREZWx0YQkAzAgCCQCkAwEFEHF1b3RlQXNzZXRDaGFuZ2UFA25pbAIBLAkAAgEFBGRhdGEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQERdmlld19lc3RpbWF0ZVN3YXADDV9zb3VyY2VBbW91bnQMX3NvdXJjZUFzc2V0DF90YXJnZXRBc3NldAQNJHQwMTY1OTExNjkxNgkBDGVzdGltYXRlU3dhcAMFDV9zb3VyY2VBbW91bnQFDF9zb3VyY2VBc3NldAUMX3RhcmdldEFzc2V0AwkAAAIFDSR0MDE2NTkxMTY5MTYFDSR0MDE2NTkxMTY5MTYEFXJlbW92ZVZhdWx0QmFsYW5jZVVTRAgFDSR0MDE2NTkxMTY5MTYDXzEzBBJyZW1vdmVJbWJhbGFuY2VVU0QIBQ0kdDAxNjU5MTE2OTE2A18xMgQSYWRkVmF1bHRCYWxhbmNlVVNECAUNJHQwMTY1OTExNjkxNgNfMTEED2FkZEltYmFsYW5jZVVTRAgFDSR0MDE2NTkxMTY5MTYDXzEwBAp2YXVsdFRvQWRkCAUNJHQwMTY1OTExNjkxNgJfOQQNdmF1bHRUb1JlbW92ZQgFDSR0MDE2NTkxMTY5MTYCXzgEA3RheAgFDSR0MDE2NTkxMTY5MTYCXzcEBnJlYmF0ZQgFDSR0MDE2NTkxMTY5MTYCXzYECWFjdHVhbEZlZQgFDSR0MDE2NTkxMTY5MTYCXzUEB2Jhc2VGZWUIBQ0kdDAxNjU5MTE2OTE2Al80BBdyZXN1bHRUYXJnZXRBc3NldEFtb3VudAgFDSR0MDE2NTkxMTY5MTYCXzMEEGZlZUluVGFyZ2V0VG9rZW4IBQ0kdDAxNjU5MTE2OTE2Al8yBAx0YXJnZXRBbW91bnQIBQ0kdDAxNjU5MTE2OTE2Al8xBARkYXRhCQC5CQIJAMwIAgkApAMBBQx0YXJnZXRBbW91bnQJAMwIAgkApAMBBRBmZWVJblRhcmdldFRva2VuCQDMCAIJAKQDAQUXcmVzdWx0VGFyZ2V0QXNzZXRBbW91bnQJAMwIAgkApAMBBQdiYXNlRmVlCQDMCAIJAKQDAQUJYWN0dWFsRmVlCQDMCAIJAKQDAQUGcmViYXRlCQDMCAIJAKQDAQUDdGF4CQDMCAIJAKQDAQUPYWRkSW1iYWxhbmNlVVNECQDMCAIJAKQDAQUSYWRkVmF1bHRCYWxhbmNlVVNECQDMCAIJAKQDAQUScmVtb3ZlSW1iYWxhbmNlVVNECQDMCAIJAKQDAQUVcmVtb3ZlVmF1bHRCYWxhbmNlVVNEBQNuaWwCASwJAAIBBQRkYXRhCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQOY29vcmRpbmF0b3JTdHIJAJ0IAgUEdGhpcwUUa19jb29yZGluYXRvckFkZHJlc3MDCQEJaXNEZWZpbmVkAQUOY29vcmRpbmF0b3JTdHIEBWFkbWluCQCdCAIJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEFDmNvb3JkaW5hdG9yU3RyBQ9rX2FkbWluX2FkZHJlc3MDCQEJaXNEZWZpbmVkAQUFYWRtaW4JAQt2YWx1ZU9yRWxzZQIJAJsIAgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQUFYWRtaW4JAKwCAgkArAICCQCsAgICB3N0YXR1c18JAKUIAQUEdGhpcwIBXwkA2AQBCAUCdHgCaWQHCQACAQIudW5hYmxlIHRvIHZlcmlmeTogYWRtaW4gbm90IHNldCBpbiBjb29yZGluYXRvcgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleQm8RBE=", "height": 2596590, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DAe3Ki5q1Lvd6aA7fg1u9Kcpzzf2F8936MpQ5Ckg72zA Next: GwRSX1SpJmxbDdxkSQkgetXEFHgTYBUUg7ey2P6yPKQ4 Diff:
OldNewDifferences
99
1010 let d = "k_rebate"
1111
12-let e = "k_coordinatorAddress"
12+let e = "k_feeToStakersPercent"
1313
14-let f = "k_excessBalance"
14+let f = "k_coordinatorAddress"
1515
16-let g = "k_freeBalance"
16+let g = "k_reward_asset"
1717
18-let h = "k_maxSpotUtilization"
18+let h = "k_swap_address"
1919
20-let i = "k_maxPriceSpread"
20+let i = "k_staking_address"
2121
22-let j = "k_bsAstR"
22+let j = "k_excessBalance"
2323
24-let k = "k_qtAstW"
24+let k = "k_freeBalance"
2525
26-let l = "k_totalPositionSize"
26+let l = "k_maxSpotUtilization"
2727
28-let m = "k_amm"
28+let m = "k_maxPriceSpread"
2929
30-let n = "k_vault"
30+let n = "k_bsAstR"
3131
32-let o = "k_amm_data"
32+let o = "k_qtAstW"
3333
34-let p = "k_asset_vault"
34+let p = "k_totalPositionSize"
3535
36-let q = "k_asset_amm"
36+let q = "k_amm"
3737
38-let r = "k_admin_address"
38+let r = "k_vault"
3939
40-func s (t,u) = ((t + "_") + u)
40+let s = "k_amm_data"
41+
42+let t = "k_asset_vault"
43+
44+let u = "k_asset_amm"
45+
46+let v = "k_admin_address"
47+
48+func w (x,y) = ((x + "_") + y)
4149
4250
43-func v () = valueOrErrorMessage(addressFromString(getStringValue(this, e)), "Coordinator not set")
51+func z () = valueOrErrorMessage(addressFromString(getStringValue(this, f)), "Coordinator not set")
4452
4553
46-func w () = addressFromString(getStringValue(v(), r))
54+func A () = addressFromString(getStringValue(z(), v))
4755
4856
49-func x (y) = toString(valueOrErrorMessage(addressFromString(y), (("Can't parse \"" + y) + "\" as address")))
57+func B () = valueOrErrorMessage(addressFromString(getStringValue(z(), i)), "Staking not set")
5058
5159
52-let z = 6
53-
54-let A = (1 * (((((10 * 10) * 10) * 10) * 10) * 10))
55-
56-func B (C) = (toString(C) + ",")
60+func C () = fromBase58String(valueOrErrorMessage(getString(z(), g), "Reward asset not set"))
5761
5862
59-func D (C,E) = fraction(C, A, E, HALFEVEN)
63+func D () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(z(), h), "Swap address not set")), "Swap address invalid")
6064
6165
62-func F (C,E) = fraction(C, E, A, HALFEVEN)
66+func E (F) = toString(valueOrErrorMessage(addressFromString(F), (("Can't parse \"" + F) + "\" as address")))
6367
6468
65-func G (C) = if ((C > 0))
66- then C
67- else -(C)
69+let G = 6
70+
71+let H = (1 * (((((10 * 10) * 10) * 10) * 10) * 10))
72+
73+func I (J) = (toString(J) + ",")
6874
6975
70-func H (C,E) = if ((C >= E))
71- then C
72- else E
76+func K (J,L) = fraction(J, H, L, HALFEVEN)
7377
7478
75-func I (C,E) = if ((E >= C))
76- then C
77- else E
79+func M (J,L) = fraction(J, L, H, HALFEVEN)
7880
7981
80-func J (K) = valueOrErrorMessage(getInteger(this, K), ("no value for " + K))
82+func N (J) = if ((J > 0))
83+ then J
84+ else -(J)
8185
8286
83-func L () = J(c)
87+func O (J,L) = if ((J >= L))
88+ then J
89+ else L
8490
8591
86-func M () = J(d)
92+func P (J,L) = if ((L >= J))
93+ then J
94+ else L
8795
8896
89-func N (O) = {
90- let P = getString(this, s(q, O))
91- if (isDefined(P))
92- then valueOrErrorMessage(addressFromString(value(P)), ("Invalid vault address for: " + O))
97+func Q (R) = valueOrErrorMessage(getInteger(this, R), ("no value for " + R))
98+
99+
100+func S () = Q(c)
101+
102+
103+func T () = Q(d)
104+
105+
106+func U () = Q(e)
107+
108+
109+func V (W) = {
110+ let X = getString(this, w(u, W))
111+ if (isDefined(X))
112+ then valueOrErrorMessage(addressFromString(value(X)), ("Invalid vault address for: " + W))
93113 else unit
94114 }
95115
96116
97-func Q (O) = {
98- let P = getString(this, s(p, O))
99- if (isDefined(P))
100- then valueOrErrorMessage(addressFromString(value(P)), ("Invalid market address for: " + O))
117+func Y (W) = {
118+ let X = getString(this, w(t, W))
119+ if (isDefined(X))
120+ then valueOrErrorMessage(addressFromString(value(X)), ("Invalid market address for: " + W))
101121 else unit
102122 }
103123
104124
105-func R (O) = valueOrErrorMessage(N(O), ("No market for: " + O))
125+func Z (W) = valueOrErrorMessage(V(W), ("No market for: " + W))
106126
107127
108-func S (O) = valueOrErrorMessage(Q(O), ("No vault for: " + O))
128+func aa (W) = valueOrErrorMessage(Y(W), ("No vault for: " + W))
109129
110130
111-func T (U) = valueOrElse(getInteger(U, f), 0)
131+func ab (ac) = valueOrElse(getInteger(ac, j), 0)
112132
113133
114-func V (U) = valueOrElse(getInteger(U, g), 0)
134+func ad (ac) = valueOrElse(getInteger(ac, k), 0)
115135
116136
117-func W (U) = valueOrErrorMessage(getInteger(U, h), ("Max spot utilization not set for: " + toString(U)))
137+func ae (ac) = valueOrErrorMessage(getInteger(ac, l), ("Max spot utilization not set for: " + toString(ac)))
118138
119139
120-func X (Y) = valueOrErrorMessage(getInteger(Y, i), ("Max price spread not set for: " + toString(Y)))
140+func af (ag) = valueOrErrorMessage(getInteger(ag, m), ("Max price spread not set for: " + toString(ag)))
121141
122142
123-func Z (Y) = {
124- let aa = invoke(Y, "syncTerminalPriceToOracle", nil, nil)
125- if ((aa == aa))
143+func ah (ag) = {
144+ let ai = invoke(ag, "syncTerminalPriceToOracle", nil, nil)
145+ if ((ai == ai))
126146 then {
127- let ab = invoke(Y, "computeTerminalAmmPrice", nil, nil)
128- if ((ab == ab))
147+ let aj = invoke(ag, "computeTerminalAmmPrice", nil, nil)
148+ if ((aj == aj))
129149 then {
130- let ac = {
131- let ad = ab
132- if ($isInstanceOf(ad, "Int"))
150+ let ak = {
151+ let al = aj
152+ if ($isInstanceOf(al, "Int"))
133153 then {
134- let ae = ad
135- ae
154+ let am = al
155+ am
136156 }
137- else throw(("Invalid computeTerminalAmmPrice result for " + toString(Y)))
157+ else throw(("Invalid computeTerminalAmmPrice result for " + toString(ag)))
138158 }
139- let af = valueOrErrorMessage(getInteger(Y, j), ((("Key " + j) + " not set for ") + toString(Y)))
140- if ((af == af))
159+ let an = valueOrErrorMessage(getInteger(ag, n), ((("Key " + n) + " not set for ") + toString(ag)))
160+ if ((an == an))
141161 then {
142- let ag = valueOrElse(getInteger(Y, l), 0)
143- if ((ag == ag))
162+ let ao = valueOrElse(getInteger(ag, p), 0)
163+ if ((ao == ao))
144164 then {
145- let ah = valueOrElse(getInteger(Y, k), A)
146- if ((ah == ah))
147- then $Tuple3((af + ag), ac, ah)
165+ let ap = valueOrElse(getInteger(ag, o), H)
166+ if ((ap == ap))
167+ then $Tuple3((an + ao), ak, ap)
148168 else throw("Strict value is not equal to itself.")
149169 }
150170 else throw("Strict value is not equal to itself.")
157177 }
158178
159179
160-func ai (U,Y,aj,ak) = {
161- let al = if ((aj == 8))
162- then ak
163- else if ((aj == 6))
164- then (ak * 100)
180+func aq (ac,ag,ar,as) = {
181+ let at = if ((ar == 8))
182+ then as
183+ else if ((ar == 6))
184+ then (as * 100)
165185 else throw("Invalid decimals")
166- let am = T(U)
167- let an = (am + al)
168- let ao = ((G(an) - G(am)) / 100)
169- let ab = invoke(Y, "computeSpotPrice", nil, nil)
170- if ((ab == ab))
186+ let au = ab(ac)
187+ let av = (au + at)
188+ let aw = ((N(av) - N(au)) / 100)
189+ let aj = invoke(ag, "computeSpotPrice", nil, nil)
190+ if ((aj == aj))
171191 then {
172- let ac = {
173- let ad = ab
174- if ($isInstanceOf(ad, "Int"))
192+ let ak = {
193+ let al = aj
194+ if ($isInstanceOf(al, "Int"))
175195 then {
176- let ae = ad
177- ae
196+ let am = al
197+ am
178198 }
179- else throw(("Invalid computeSpotPrice result for " + toString(Y)))
199+ else throw(("Invalid computeSpotPrice result for " + toString(ag)))
180200 }
181- let ap = F(ao, ac)
182- let aq = (V(U) / 100)
183- let ar = F(aq, ac)
184- $Tuple2(ap, ar)
201+ let ax = M(aw, ak)
202+ let ay = (ad(ac) / 100)
203+ let az = M(ay, ak)
204+ $Tuple2(ax, az)
185205 }
186206 else throw("Strict value is not equal to itself.")
187207 }
188208
189209
190-func as (ak,O,at) = {
191- let au = if ((O == "WAVES"))
210+func aA (as,W,aB) = {
211+ let aC = if ((W == "WAVES"))
192212 then 8
193- else valueOrErrorMessage(assetInfo(fromBase58String(O)), ("Invalid asset: " + O)).decimals
194- let av = if ((at == "WAVES"))
213+ else valueOrErrorMessage(assetInfo(fromBase58String(W)), ("Invalid asset: " + W)).decimals
214+ let aD = if ((aB == "WAVES"))
195215 then 8
196- else valueOrErrorMessage(assetInfo(fromBase58String(at)), ("Invalid asset: " + at)).decimals
197- let aw = if ((au == 8))
198- then (ak / 100)
199- else if ((au == 6))
200- then ak
216+ else valueOrErrorMessage(assetInfo(fromBase58String(aB)), ("Invalid asset: " + aB)).decimals
217+ let aE = if ((aC == 8))
218+ then (as / 100)
219+ else if ((aC == 6))
220+ then as
201221 else throw("Invalid decimals (source)")
202- let ax = R(O)
203- let ay = invoke(ax, "swapToQuote", [aw, 0], nil)
204- if ((ay == ay))
222+ let aF = Z(W)
223+ let aG = invoke(aF, "swapToQuote", [aE, 0], nil)
224+ if ((aG == aG))
205225 then {
206- let az = {
207- let ad = ay
208- if ($isInstanceOf(ad, "Int"))
226+ let aH = {
227+ let al = aG
228+ if ($isInstanceOf(al, "Int"))
209229 then {
210- let ae = ad
211- ae
230+ let am = al
231+ am
212232 }
213233 else throw("Invalid swapToQuote result")
214234 }
215- let aA = R(at)
216- let aB = invoke(aA, "swapToBase", [az, 0], nil)
217- if ((aB == aB))
235+ let aI = Z(aB)
236+ let aJ = invoke(aI, "swapToBase", [aH, 0], nil)
237+ if ((aJ == aJ))
218238 then {
219- let aC = {
220- let ad = aB
221- if ($isInstanceOf(ad, "Int"))
239+ let aK = {
240+ let al = aJ
241+ if ($isInstanceOf(al, "Int"))
222242 then {
223- let ae = ad
224- if ((av == 8))
225- then (ae * 100)
226- else if ((av == 6))
227- then ae
243+ let am = al
244+ if ((aD == 8))
245+ then (am * 100)
246+ else if ((aD == 6))
247+ then am
228248 else throw("Invalid decimals (target)")
229249 }
230250 else throw("Invalid swapToBase result")
231251 }
232- let aD = S(O)
233- let aE = ai(aD, ax, au, ak)
234- let aF = aE._1
235- let aG = aE._2
236- let aH = S(at)
237- let aI = ai(aH, aA, av, -(aC))
238- let aJ = aI._1
239- let aK = aI._2
240- let aL = (aF + aJ)
241- let aM = L()
242- let aN = (aG + aK)
243- let aO = if ((0 > aL))
252+ let aL = aa(W)
253+ let aM = aq(aL, aF, aC, as)
254+ let aN = aM._1
255+ let aO = aM._2
256+ let aP = aa(aB)
257+ let aQ = aq(aP, aI, aD, -(aK))
258+ let aR = aQ._1
259+ let aS = aQ._2
260+ let aT = (aN + aR)
261+ let aU = S()
262+ let aV = (aO + aS)
263+ let aW = if ((0 > aT))
244264 then {
245- let aP = D(G(aL), aN)
246- let aQ = F(M(), aP)
247- let aR = if ((aQ > aM))
265+ let aX = K(N(aT), aV)
266+ let aY = M(T(), aX)
267+ let aZ = if ((aY > aU))
248268 then 0
249- else (aM - aQ)
250- $Tuple3(aR, aQ, 0)
269+ else (aU - aY)
270+ $Tuple3(aZ, aY, 0)
251271 }
252272 else {
253- let aS = D(G(aL), aN)
254- let aT = F(M(), aS)
255- let aR = (aM + aT)
256- $Tuple3(aR, 0, aT)
273+ let ba = K(N(aT), aV)
274+ let bb = M(T(), ba)
275+ let aZ = (aU + bb)
276+ $Tuple3(aZ, 0, bb)
257277 }
258- let aR = aO._1
259- let aQ = aO._2
260- let aT = aO._3
261- let aU = F(aC, aR)
262- let aV = (aC - aU)
263- $Tuple13(aC, aU, aV, aM, aR, aQ, aT, aH, aD, aF, aG, aJ, aK)
278+ let aZ = aW._1
279+ let aY = aW._2
280+ let bb = aW._3
281+ let bc = M(aK, aZ)
282+ let bd = (aK - bc)
283+ $Tuple13(aK, bc, bd, aU, aZ, aY, bb, aP, aL, aN, aO, aR, aS)
264284 }
265285 else throw("Strict value is not equal to itself.")
266286 }
268288 }
269289
270290
271-func aW (U,Y,aX) = {
272- let aY = ((V(U) / 100) + (aX / 100))
273- let aZ = (W(U) / 100)
274- let ba = X(Y)
275- let bb = F(aY, aZ)
276- let bc = D((bb - F(ba, bb)), ba)
277- let bd = Z(Y)
278- if ((bd == bd))
291+func be (ac,ag,bf) = {
292+ let bg = ((ad(ac) / 100) + (bf / 100))
293+ let bh = (ae(ac) / 100)
294+ let bi = af(ag)
295+ let bj = M(bg, bh)
296+ let bk = K((bj - M(bi, bj)), bi)
297+ let bl = ah(ag)
298+ if ((bl == bl))
279299 then {
280- let be = bd._3
281- let ac = bd._2
282- let bf = bd._1
283- let ag = (bc - bf)
284- let bg = D(F(ag, ac), be)
285- $Tuple2(ag, bg)
300+ let bm = bl._3
301+ let ak = bl._2
302+ let bn = bl._1
303+ let ao = (bk - bn)
304+ let bo = K(M(ao, ak), bm)
305+ $Tuple2(ao, bo)
286306 }
287307 else throw("Strict value is not equal to itself.")
288308 }
289309
290310
291-func bh () = valueOrElse(getBoolean(this, a), false)
311+func bp () = valueOrElse(getBoolean(this, a), false)
292312
293313
294-func bi (bj,bk) = [IntegerEntry(c, bj), IntegerEntry(d, bk)]
314+func bq (br,bs,bt) = [IntegerEntry(c, br), IntegerEntry(d, bs), IntegerEntry(e, bt)]
295315
296316
297-@Callable(bl)
298-func pause () = if ((bl.caller != w()))
317+@Callable(bu)
318+func pause () = if ((bu.caller != A()))
299319 then throw("Invalid pause params")
300320 else [BooleanEntry(b, true)]
301321
302322
303323
304-@Callable(bl)
305-func unpause () = if ((bl.caller != w()))
324+@Callable(bu)
325+func unpause () = if ((bu.caller != A()))
306326 then throw("Invalid unpause params")
307327 else [BooleanEntry(b, false)]
308328
309329
310330
311-@Callable(bl)
312-func changeSettings (bj,bk) = if (if (if (if ((0 >= bj))
331+@Callable(bu)
332+func changeSettings (br,bs,bt) = if (if (if (if (if (if ((0 >= br))
313333 then true
314- else (0 >= bk))
334+ else (0 >= bs))
315335 then true
316- else !(bh()))
336+ else (0 >= bt))
317337 then true
318- else (bl.caller != w()))
338+ else (bt > H))
339+ then true
340+ else !(bp()))
341+ then true
342+ else (bu.caller != A()))
319343 then throw("Invalid changeSettings params")
320- else bi(bj, bk)
344+ else bq(br, bs, bt)
321345
322346
323347
324-@Callable(bl)
325-func addAmm (bm,bn,bo,bp) = if ((bl.caller != w()))
348+@Callable(bu)
349+func addAmm (bv,bw,bx,by) = if ((bu.caller != A()))
326350 then throw("Invalid addAmm params")
327351 else {
328- let bq = x(bm)
329- if ((bq == bq))
352+ let bz = E(bv)
353+ if ((bz == bz))
330354 then {
331- let br = x(bn)
332- if ((br == br))
333- then [BooleanEntry(s(m, bm), true), BooleanEntry(s(n, bn), true), StringEntry(s(p, bo), bn), StringEntry(s(q, bo), bm), StringEntry(s(o, bm), bp)]
355+ let bA = E(bw)
356+ if ((bA == bA))
357+ then [BooleanEntry(w(q, bv), true), BooleanEntry(w(r, bw), true), StringEntry(w(t, bx), bw), StringEntry(w(u, bx), bv), StringEntry(w(s, bv), by)]
334358 else throw("Strict value is not equal to itself.")
335359 }
336360 else throw("Strict value is not equal to itself.")
338362
339363
340364
341-@Callable(bl)
342-func removeAmm (bm) = if ((bl.caller != w()))
365+@Callable(bu)
366+func removeAmm (bv) = if ((bu.caller != A()))
343367 then throw("Invalid removeAmm params")
344- else [DeleteEntry(s(m, bm))]
368+ else [DeleteEntry(w(q, bv))]
345369
346370
347371
348-@Callable(bl)
349-func initialize (bs,bj,bk) = if (if (if (if ((0 >= bj))
372+@Callable(bu)
373+func initialize (bB,br,bs,bt) = if (if (if (if (if (if ((0 >= br))
350374 then true
351- else (0 >= bk))
375+ else (0 >= bs))
352376 then true
353- else bh())
377+ else (0 >= bt))
354378 then true
355- else (bl.caller != this))
379+ else (bt > H))
380+ then true
381+ else bp())
382+ then true
383+ else (bu.caller != this))
356384 then throw("Invalid initialize parameters")
357- else (bi(bj, bk) ++ [BooleanEntry(a, true), StringEntry(e, toString(addressFromStringValue(bs)))])
385+ else (bq(br, bs, bt) ++ [BooleanEntry(a, true), StringEntry(f, toString(addressFromStringValue(bB)))])
358386
359387
360388
361-@Callable(bl)
362-func swap (at,bt) = {
363- let bu = if ((size(bl.payments) != 1))
389+@Callable(bu)
390+func swap (aB,bC) = {
391+ let bD = if ((size(bu.payments) != 1))
364392 then throw("Invalid swap params: payment count")
365393 else true
366- if ((bu == bu))
394+ if ((bD == bD))
367395 then {
368- let ak = bl.payments[0].amount
369- let O = bl.payments[0].assetId
370- let bv = if (isDefined(O))
371- then toBase58String(value(O))
396+ let as = bu.payments[0].amount
397+ let W = bu.payments[0].assetId
398+ let bE = if (isDefined(W))
399+ then toBase58String(value(W))
372400 else "WAVES"
373- let bw = if ((at == bv))
401+ let bF = if ((aB == bE))
374402 then throw("Invalid swap params: same asset")
375403 else true
376- if ((bw == bw))
404+ if ((bF == bF))
377405 then {
378- let bx = as(ak, bv, at)
379- if ((bx == bx))
406+ let bG = aA(as, bE, aB)
407+ if ((bG == bG))
380408 then {
381- let aD = bx._9
382- let aH = bx._8
383- let aT = bx._7
384- let aQ = bx._6
385- let aR = bx._5
386- let aM = bx._4
387- let aV = bx._3
388- let aU = bx._2
389- let aC = bx._1
390- let by = invoke(aD, "repay", nil, [bl.payments[0]])
391- if ((by == by))
409+ let aL = bG._9
410+ let aP = bG._8
411+ let bb = bG._7
412+ let aY = bG._6
413+ let aZ = bG._5
414+ let aU = bG._4
415+ let bd = bG._3
416+ let bc = bG._2
417+ let aK = bG._1
418+ let bH = invoke(aL, "repay", nil, [bu.payments[0]])
419+ if ((bH == bH))
392420 then {
393- let bz = invoke(aH, "borrow", [aC], nil)
394- if ((bz == bz))
421+ let bI = invoke(aP, "borrow", [aK], nil)
422+ if ((bI == bI))
395423 then {
396- let bA = if ((at == "WAVES"))
424+ let bJ = if ((aB == "WAVES"))
397425 then unit
398- else fromBase58String(at)
399- let bB = invoke(aH, "addFree", nil, [AttachedPayment(bA, aU)])
400- if ((bB == bB))
401- then if ((bt > aV))
402- then throw(((("Can not swap due to slippage: " + toString(aV)) + " < ") + toString(bt)))
403- else $Tuple2([ScriptTransfer(bl.caller, aV, bA)], $Tuple6(ak, aV, aM, aR, aQ, aT))
426+ else fromBase58String(aB)
427+ let bK = M(bc, U())
428+ let bL = (bc - bK)
429+ let bM = invoke(aP, "addFree", nil, [AttachedPayment(bJ, bL)])
430+ if ((bM == bM))
431+ then {
432+ let bN = if (if ((bJ == C()))
433+ then true
434+ else (bK == 0))
435+ then bK
436+ else {
437+ let bO = invoke(D(), "swap", [toBase58String(C()), 0], [AttachedPayment(bJ, bK)])
438+ if ((bO == bO))
439+ then {
440+ let bN = assetBalance(this, C())
441+ if ((bN == bN))
442+ then bN
443+ else throw("Strict value is not equal to itself.")
444+ }
445+ else throw("Strict value is not equal to itself.")
446+ }
447+ if ((bN == bN))
448+ then if ((bC > bd))
449+ then throw(((("Can not swap due to slippage: " + toString(bd)) + " < ") + toString(bC)))
450+ else $Tuple2([ScriptTransfer(bu.caller, bd, bJ), ScriptTransfer(B(), bN, C())], $Tuple6(as, bd, aU, aZ, aY, bb))
451+ else throw("Strict value is not equal to itself.")
452+ }
404453 else throw("Strict value is not equal to itself.")
405454 }
406455 else throw("Strict value is not equal to itself.")
416465
417466
418467
419-@Callable(bl)
420-func notifyVaultBalanceChange (bC,aX) = {
421- let bD = N(bC)
422- let bE = Q(bC)
423- if (if (isDefined(bD))
424- then isDefined(bE)
468+@Callable(bu)
469+func notifyVaultBalanceChange (bP,bf) = {
470+ let bQ = V(bP)
471+ let bR = Y(bP)
472+ if (if (isDefined(bQ))
473+ then isDefined(bR)
425474 else false)
426- then if ((bl.caller != bE))
475+ then if ((bu.caller != bR))
427476 then throw("Invalid notifyVaultBalanceChange params")
428477 else {
429- let bF = aW(value(bE), value(bD), aX)
430- if ((bF == bF))
478+ let bS = be(value(bR), value(bQ), bf)
479+ if ((bS == bS))
431480 then {
432- let bg = bF._2
433- let ag = bF._1
434- let bG = invoke(value(bD), "changeLiquidity", [bg], nil)
435- if ((bG == bG))
481+ let bo = bS._2
482+ let ao = bS._1
483+ let bT = invoke(value(bQ), "changeLiquidity", [bo], nil)
484+ if ((bT == bT))
436485 then nil
437486 else throw("Strict value is not equal to itself.")
438487 }
443492
444493
445494
446-@Callable(bl)
447-func view_estimateProjectedLiquidity (bC,aX) = {
448- let bD = R(bC)
449- let bE = S(bC)
450- let bH = aW(bE, bD, aX)
451- if ((bH == bH))
495+@Callable(bu)
496+func view_estimateProjectedLiquidity (bP,bf) = {
497+ let bQ = Z(bP)
498+ let bR = aa(bP)
499+ let bU = be(bR, bQ, bf)
500+ if ((bU == bU))
452501 then {
453- let bg = bH._2
454- let ag = bH._1
455- let bI = makeString([toString(ag), toString(bg)], ",")
456- throw(bI)
502+ let bo = bU._2
503+ let ao = bU._1
504+ let bV = makeString([toString(ao), toString(bo)], ",")
505+ throw(bV)
457506 }
458507 else throw("Strict value is not equal to itself.")
459508 }
460509
461510
462511
463-@Callable(bl)
464-func view_estimateSwap (bJ,bK,at) = {
465- let bL = as(bJ, bK, at)
466- if ((bL == bL))
512+@Callable(bu)
513+func view_estimateSwap (bW,bX,aB) = {
514+ let bY = aA(bW, bX, aB)
515+ if ((bY == bY))
467516 then {
468- let aK = bL._13
469- let aJ = bL._12
470- let aG = bL._11
471- let aF = bL._10
472- let aD = bL._9
473- let aH = bL._8
474- let aT = bL._7
475- let aQ = bL._6
476- let aR = bL._5
477- let aM = bL._4
478- let aV = bL._3
479- let aU = bL._2
480- let aC = bL._1
481- let bI = makeString([toString(aC), toString(aU), toString(aV), toString(aM), toString(aR), toString(aQ), toString(aT), toString(aF), toString(aG), toString(aJ), toString(aK)], ",")
482- throw(bI)
517+ let aS = bY._13
518+ let aR = bY._12
519+ let aO = bY._11
520+ let aN = bY._10
521+ let aL = bY._9
522+ let aP = bY._8
523+ let bb = bY._7
524+ let aY = bY._6
525+ let aZ = bY._5
526+ let aU = bY._4
527+ let bd = bY._3
528+ let bc = bY._2
529+ let aK = bY._1
530+ let bV = makeString([toString(aK), toString(bc), toString(bd), toString(aU), toString(aZ), toString(aY), toString(bb), toString(aN), toString(aO), toString(aR), toString(aS)], ",")
531+ throw(bV)
483532 }
484533 else throw("Strict value is not equal to itself.")
485534 }
486535
487536
488-@Verifier(bM)
489-func bN () = {
490- let bO = getString(this, e)
491- if (isDefined(bO))
537+@Verifier(bZ)
538+func ca () = {
539+ let cb = getString(this, f)
540+ if (isDefined(cb))
492541 then {
493- let bP = getString(addressFromStringValue(value(bO)), r)
494- if (isDefined(bP))
495- then valueOrElse(getBoolean(addressFromStringValue(value(bP)), ((("status_" + toString(this)) + "_") + toBase58String(bM.id))), false)
542+ let cc = getString(addressFromStringValue(value(cb)), v)
543+ if (isDefined(cc))
544+ then valueOrElse(getBoolean(addressFromStringValue(value(cc)), ((("status_" + toString(this)) + "_") + toBase58String(bZ.id))), false)
496545 else throw("unable to verify: admin not set in coordinator")
497546 }
498- else sigVerify(bM.bodyBytes, bM.proofs[0], bM.senderPublicKey)
547+ else sigVerify(bZ.bodyBytes, bZ.proofs[0], bZ.senderPublicKey)
499548 }
500549
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "k_initialized"
55
66 let b = "k_paused"
77
88 let c = "k_fee"
99
1010 let d = "k_rebate"
1111
12-let e = "k_coordinatorAddress"
12+let e = "k_feeToStakersPercent"
1313
14-let f = "k_excessBalance"
14+let f = "k_coordinatorAddress"
1515
16-let g = "k_freeBalance"
16+let g = "k_reward_asset"
1717
18-let h = "k_maxSpotUtilization"
18+let h = "k_swap_address"
1919
20-let i = "k_maxPriceSpread"
20+let i = "k_staking_address"
2121
22-let j = "k_bsAstR"
22+let j = "k_excessBalance"
2323
24-let k = "k_qtAstW"
24+let k = "k_freeBalance"
2525
26-let l = "k_totalPositionSize"
26+let l = "k_maxSpotUtilization"
2727
28-let m = "k_amm"
28+let m = "k_maxPriceSpread"
2929
30-let n = "k_vault"
30+let n = "k_bsAstR"
3131
32-let o = "k_amm_data"
32+let o = "k_qtAstW"
3333
34-let p = "k_asset_vault"
34+let p = "k_totalPositionSize"
3535
36-let q = "k_asset_amm"
36+let q = "k_amm"
3737
38-let r = "k_admin_address"
38+let r = "k_vault"
3939
40-func s (t,u) = ((t + "_") + u)
40+let s = "k_amm_data"
41+
42+let t = "k_asset_vault"
43+
44+let u = "k_asset_amm"
45+
46+let v = "k_admin_address"
47+
48+func w (x,y) = ((x + "_") + y)
4149
4250
43-func v () = valueOrErrorMessage(addressFromString(getStringValue(this, e)), "Coordinator not set")
51+func z () = valueOrErrorMessage(addressFromString(getStringValue(this, f)), "Coordinator not set")
4452
4553
46-func w () = addressFromString(getStringValue(v(), r))
54+func A () = addressFromString(getStringValue(z(), v))
4755
4856
49-func x (y) = toString(valueOrErrorMessage(addressFromString(y), (("Can't parse \"" + y) + "\" as address")))
57+func B () = valueOrErrorMessage(addressFromString(getStringValue(z(), i)), "Staking not set")
5058
5159
52-let z = 6
53-
54-let A = (1 * (((((10 * 10) * 10) * 10) * 10) * 10))
55-
56-func B (C) = (toString(C) + ",")
60+func C () = fromBase58String(valueOrErrorMessage(getString(z(), g), "Reward asset not set"))
5761
5862
59-func D (C,E) = fraction(C, A, E, HALFEVEN)
63+func D () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(z(), h), "Swap address not set")), "Swap address invalid")
6064
6165
62-func F (C,E) = fraction(C, E, A, HALFEVEN)
66+func E (F) = toString(valueOrErrorMessage(addressFromString(F), (("Can't parse \"" + F) + "\" as address")))
6367
6468
65-func G (C) = if ((C > 0))
66- then C
67- else -(C)
69+let G = 6
70+
71+let H = (1 * (((((10 * 10) * 10) * 10) * 10) * 10))
72+
73+func I (J) = (toString(J) + ",")
6874
6975
70-func H (C,E) = if ((C >= E))
71- then C
72- else E
76+func K (J,L) = fraction(J, H, L, HALFEVEN)
7377
7478
75-func I (C,E) = if ((E >= C))
76- then C
77- else E
79+func M (J,L) = fraction(J, L, H, HALFEVEN)
7880
7981
80-func J (K) = valueOrErrorMessage(getInteger(this, K), ("no value for " + K))
82+func N (J) = if ((J > 0))
83+ then J
84+ else -(J)
8185
8286
83-func L () = J(c)
87+func O (J,L) = if ((J >= L))
88+ then J
89+ else L
8490
8591
86-func M () = J(d)
92+func P (J,L) = if ((L >= J))
93+ then J
94+ else L
8795
8896
89-func N (O) = {
90- let P = getString(this, s(q, O))
91- if (isDefined(P))
92- then valueOrErrorMessage(addressFromString(value(P)), ("Invalid vault address for: " + O))
97+func Q (R) = valueOrErrorMessage(getInteger(this, R), ("no value for " + R))
98+
99+
100+func S () = Q(c)
101+
102+
103+func T () = Q(d)
104+
105+
106+func U () = Q(e)
107+
108+
109+func V (W) = {
110+ let X = getString(this, w(u, W))
111+ if (isDefined(X))
112+ then valueOrErrorMessage(addressFromString(value(X)), ("Invalid vault address for: " + W))
93113 else unit
94114 }
95115
96116
97-func Q (O) = {
98- let P = getString(this, s(p, O))
99- if (isDefined(P))
100- then valueOrErrorMessage(addressFromString(value(P)), ("Invalid market address for: " + O))
117+func Y (W) = {
118+ let X = getString(this, w(t, W))
119+ if (isDefined(X))
120+ then valueOrErrorMessage(addressFromString(value(X)), ("Invalid market address for: " + W))
101121 else unit
102122 }
103123
104124
105-func R (O) = valueOrErrorMessage(N(O), ("No market for: " + O))
125+func Z (W) = valueOrErrorMessage(V(W), ("No market for: " + W))
106126
107127
108-func S (O) = valueOrErrorMessage(Q(O), ("No vault for: " + O))
128+func aa (W) = valueOrErrorMessage(Y(W), ("No vault for: " + W))
109129
110130
111-func T (U) = valueOrElse(getInteger(U, f), 0)
131+func ab (ac) = valueOrElse(getInteger(ac, j), 0)
112132
113133
114-func V (U) = valueOrElse(getInteger(U, g), 0)
134+func ad (ac) = valueOrElse(getInteger(ac, k), 0)
115135
116136
117-func W (U) = valueOrErrorMessage(getInteger(U, h), ("Max spot utilization not set for: " + toString(U)))
137+func ae (ac) = valueOrErrorMessage(getInteger(ac, l), ("Max spot utilization not set for: " + toString(ac)))
118138
119139
120-func X (Y) = valueOrErrorMessage(getInteger(Y, i), ("Max price spread not set for: " + toString(Y)))
140+func af (ag) = valueOrErrorMessage(getInteger(ag, m), ("Max price spread not set for: " + toString(ag)))
121141
122142
123-func Z (Y) = {
124- let aa = invoke(Y, "syncTerminalPriceToOracle", nil, nil)
125- if ((aa == aa))
143+func ah (ag) = {
144+ let ai = invoke(ag, "syncTerminalPriceToOracle", nil, nil)
145+ if ((ai == ai))
126146 then {
127- let ab = invoke(Y, "computeTerminalAmmPrice", nil, nil)
128- if ((ab == ab))
147+ let aj = invoke(ag, "computeTerminalAmmPrice", nil, nil)
148+ if ((aj == aj))
129149 then {
130- let ac = {
131- let ad = ab
132- if ($isInstanceOf(ad, "Int"))
150+ let ak = {
151+ let al = aj
152+ if ($isInstanceOf(al, "Int"))
133153 then {
134- let ae = ad
135- ae
154+ let am = al
155+ am
136156 }
137- else throw(("Invalid computeTerminalAmmPrice result for " + toString(Y)))
157+ else throw(("Invalid computeTerminalAmmPrice result for " + toString(ag)))
138158 }
139- let af = valueOrErrorMessage(getInteger(Y, j), ((("Key " + j) + " not set for ") + toString(Y)))
140- if ((af == af))
159+ let an = valueOrErrorMessage(getInteger(ag, n), ((("Key " + n) + " not set for ") + toString(ag)))
160+ if ((an == an))
141161 then {
142- let ag = valueOrElse(getInteger(Y, l), 0)
143- if ((ag == ag))
162+ let ao = valueOrElse(getInteger(ag, p), 0)
163+ if ((ao == ao))
144164 then {
145- let ah = valueOrElse(getInteger(Y, k), A)
146- if ((ah == ah))
147- then $Tuple3((af + ag), ac, ah)
165+ let ap = valueOrElse(getInteger(ag, o), H)
166+ if ((ap == ap))
167+ then $Tuple3((an + ao), ak, ap)
148168 else throw("Strict value is not equal to itself.")
149169 }
150170 else throw("Strict value is not equal to itself.")
151171 }
152172 else throw("Strict value is not equal to itself.")
153173 }
154174 else throw("Strict value is not equal to itself.")
155175 }
156176 else throw("Strict value is not equal to itself.")
157177 }
158178
159179
160-func ai (U,Y,aj,ak) = {
161- let al = if ((aj == 8))
162- then ak
163- else if ((aj == 6))
164- then (ak * 100)
180+func aq (ac,ag,ar,as) = {
181+ let at = if ((ar == 8))
182+ then as
183+ else if ((ar == 6))
184+ then (as * 100)
165185 else throw("Invalid decimals")
166- let am = T(U)
167- let an = (am + al)
168- let ao = ((G(an) - G(am)) / 100)
169- let ab = invoke(Y, "computeSpotPrice", nil, nil)
170- if ((ab == ab))
186+ let au = ab(ac)
187+ let av = (au + at)
188+ let aw = ((N(av) - N(au)) / 100)
189+ let aj = invoke(ag, "computeSpotPrice", nil, nil)
190+ if ((aj == aj))
171191 then {
172- let ac = {
173- let ad = ab
174- if ($isInstanceOf(ad, "Int"))
192+ let ak = {
193+ let al = aj
194+ if ($isInstanceOf(al, "Int"))
175195 then {
176- let ae = ad
177- ae
196+ let am = al
197+ am
178198 }
179- else throw(("Invalid computeSpotPrice result for " + toString(Y)))
199+ else throw(("Invalid computeSpotPrice result for " + toString(ag)))
180200 }
181- let ap = F(ao, ac)
182- let aq = (V(U) / 100)
183- let ar = F(aq, ac)
184- $Tuple2(ap, ar)
201+ let ax = M(aw, ak)
202+ let ay = (ad(ac) / 100)
203+ let az = M(ay, ak)
204+ $Tuple2(ax, az)
185205 }
186206 else throw("Strict value is not equal to itself.")
187207 }
188208
189209
190-func as (ak,O,at) = {
191- let au = if ((O == "WAVES"))
210+func aA (as,W,aB) = {
211+ let aC = if ((W == "WAVES"))
192212 then 8
193- else valueOrErrorMessage(assetInfo(fromBase58String(O)), ("Invalid asset: " + O)).decimals
194- let av = if ((at == "WAVES"))
213+ else valueOrErrorMessage(assetInfo(fromBase58String(W)), ("Invalid asset: " + W)).decimals
214+ let aD = if ((aB == "WAVES"))
195215 then 8
196- else valueOrErrorMessage(assetInfo(fromBase58String(at)), ("Invalid asset: " + at)).decimals
197- let aw = if ((au == 8))
198- then (ak / 100)
199- else if ((au == 6))
200- then ak
216+ else valueOrErrorMessage(assetInfo(fromBase58String(aB)), ("Invalid asset: " + aB)).decimals
217+ let aE = if ((aC == 8))
218+ then (as / 100)
219+ else if ((aC == 6))
220+ then as
201221 else throw("Invalid decimals (source)")
202- let ax = R(O)
203- let ay = invoke(ax, "swapToQuote", [aw, 0], nil)
204- if ((ay == ay))
222+ let aF = Z(W)
223+ let aG = invoke(aF, "swapToQuote", [aE, 0], nil)
224+ if ((aG == aG))
205225 then {
206- let az = {
207- let ad = ay
208- if ($isInstanceOf(ad, "Int"))
226+ let aH = {
227+ let al = aG
228+ if ($isInstanceOf(al, "Int"))
209229 then {
210- let ae = ad
211- ae
230+ let am = al
231+ am
212232 }
213233 else throw("Invalid swapToQuote result")
214234 }
215- let aA = R(at)
216- let aB = invoke(aA, "swapToBase", [az, 0], nil)
217- if ((aB == aB))
235+ let aI = Z(aB)
236+ let aJ = invoke(aI, "swapToBase", [aH, 0], nil)
237+ if ((aJ == aJ))
218238 then {
219- let aC = {
220- let ad = aB
221- if ($isInstanceOf(ad, "Int"))
239+ let aK = {
240+ let al = aJ
241+ if ($isInstanceOf(al, "Int"))
222242 then {
223- let ae = ad
224- if ((av == 8))
225- then (ae * 100)
226- else if ((av == 6))
227- then ae
243+ let am = al
244+ if ((aD == 8))
245+ then (am * 100)
246+ else if ((aD == 6))
247+ then am
228248 else throw("Invalid decimals (target)")
229249 }
230250 else throw("Invalid swapToBase result")
231251 }
232- let aD = S(O)
233- let aE = ai(aD, ax, au, ak)
234- let aF = aE._1
235- let aG = aE._2
236- let aH = S(at)
237- let aI = ai(aH, aA, av, -(aC))
238- let aJ = aI._1
239- let aK = aI._2
240- let aL = (aF + aJ)
241- let aM = L()
242- let aN = (aG + aK)
243- let aO = if ((0 > aL))
252+ let aL = aa(W)
253+ let aM = aq(aL, aF, aC, as)
254+ let aN = aM._1
255+ let aO = aM._2
256+ let aP = aa(aB)
257+ let aQ = aq(aP, aI, aD, -(aK))
258+ let aR = aQ._1
259+ let aS = aQ._2
260+ let aT = (aN + aR)
261+ let aU = S()
262+ let aV = (aO + aS)
263+ let aW = if ((0 > aT))
244264 then {
245- let aP = D(G(aL), aN)
246- let aQ = F(M(), aP)
247- let aR = if ((aQ > aM))
265+ let aX = K(N(aT), aV)
266+ let aY = M(T(), aX)
267+ let aZ = if ((aY > aU))
248268 then 0
249- else (aM - aQ)
250- $Tuple3(aR, aQ, 0)
269+ else (aU - aY)
270+ $Tuple3(aZ, aY, 0)
251271 }
252272 else {
253- let aS = D(G(aL), aN)
254- let aT = F(M(), aS)
255- let aR = (aM + aT)
256- $Tuple3(aR, 0, aT)
273+ let ba = K(N(aT), aV)
274+ let bb = M(T(), ba)
275+ let aZ = (aU + bb)
276+ $Tuple3(aZ, 0, bb)
257277 }
258- let aR = aO._1
259- let aQ = aO._2
260- let aT = aO._3
261- let aU = F(aC, aR)
262- let aV = (aC - aU)
263- $Tuple13(aC, aU, aV, aM, aR, aQ, aT, aH, aD, aF, aG, aJ, aK)
278+ let aZ = aW._1
279+ let aY = aW._2
280+ let bb = aW._3
281+ let bc = M(aK, aZ)
282+ let bd = (aK - bc)
283+ $Tuple13(aK, bc, bd, aU, aZ, aY, bb, aP, aL, aN, aO, aR, aS)
264284 }
265285 else throw("Strict value is not equal to itself.")
266286 }
267287 else throw("Strict value is not equal to itself.")
268288 }
269289
270290
271-func aW (U,Y,aX) = {
272- let aY = ((V(U) / 100) + (aX / 100))
273- let aZ = (W(U) / 100)
274- let ba = X(Y)
275- let bb = F(aY, aZ)
276- let bc = D((bb - F(ba, bb)), ba)
277- let bd = Z(Y)
278- if ((bd == bd))
291+func be (ac,ag,bf) = {
292+ let bg = ((ad(ac) / 100) + (bf / 100))
293+ let bh = (ae(ac) / 100)
294+ let bi = af(ag)
295+ let bj = M(bg, bh)
296+ let bk = K((bj - M(bi, bj)), bi)
297+ let bl = ah(ag)
298+ if ((bl == bl))
279299 then {
280- let be = bd._3
281- let ac = bd._2
282- let bf = bd._1
283- let ag = (bc - bf)
284- let bg = D(F(ag, ac), be)
285- $Tuple2(ag, bg)
300+ let bm = bl._3
301+ let ak = bl._2
302+ let bn = bl._1
303+ let ao = (bk - bn)
304+ let bo = K(M(ao, ak), bm)
305+ $Tuple2(ao, bo)
286306 }
287307 else throw("Strict value is not equal to itself.")
288308 }
289309
290310
291-func bh () = valueOrElse(getBoolean(this, a), false)
311+func bp () = valueOrElse(getBoolean(this, a), false)
292312
293313
294-func bi (bj,bk) = [IntegerEntry(c, bj), IntegerEntry(d, bk)]
314+func bq (br,bs,bt) = [IntegerEntry(c, br), IntegerEntry(d, bs), IntegerEntry(e, bt)]
295315
296316
297-@Callable(bl)
298-func pause () = if ((bl.caller != w()))
317+@Callable(bu)
318+func pause () = if ((bu.caller != A()))
299319 then throw("Invalid pause params")
300320 else [BooleanEntry(b, true)]
301321
302322
303323
304-@Callable(bl)
305-func unpause () = if ((bl.caller != w()))
324+@Callable(bu)
325+func unpause () = if ((bu.caller != A()))
306326 then throw("Invalid unpause params")
307327 else [BooleanEntry(b, false)]
308328
309329
310330
311-@Callable(bl)
312-func changeSettings (bj,bk) = if (if (if (if ((0 >= bj))
331+@Callable(bu)
332+func changeSettings (br,bs,bt) = if (if (if (if (if (if ((0 >= br))
313333 then true
314- else (0 >= bk))
334+ else (0 >= bs))
315335 then true
316- else !(bh()))
336+ else (0 >= bt))
317337 then true
318- else (bl.caller != w()))
338+ else (bt > H))
339+ then true
340+ else !(bp()))
341+ then true
342+ else (bu.caller != A()))
319343 then throw("Invalid changeSettings params")
320- else bi(bj, bk)
344+ else bq(br, bs, bt)
321345
322346
323347
324-@Callable(bl)
325-func addAmm (bm,bn,bo,bp) = if ((bl.caller != w()))
348+@Callable(bu)
349+func addAmm (bv,bw,bx,by) = if ((bu.caller != A()))
326350 then throw("Invalid addAmm params")
327351 else {
328- let bq = x(bm)
329- if ((bq == bq))
352+ let bz = E(bv)
353+ if ((bz == bz))
330354 then {
331- let br = x(bn)
332- if ((br == br))
333- then [BooleanEntry(s(m, bm), true), BooleanEntry(s(n, bn), true), StringEntry(s(p, bo), bn), StringEntry(s(q, bo), bm), StringEntry(s(o, bm), bp)]
355+ let bA = E(bw)
356+ if ((bA == bA))
357+ then [BooleanEntry(w(q, bv), true), BooleanEntry(w(r, bw), true), StringEntry(w(t, bx), bw), StringEntry(w(u, bx), bv), StringEntry(w(s, bv), by)]
334358 else throw("Strict value is not equal to itself.")
335359 }
336360 else throw("Strict value is not equal to itself.")
337361 }
338362
339363
340364
341-@Callable(bl)
342-func removeAmm (bm) = if ((bl.caller != w()))
365+@Callable(bu)
366+func removeAmm (bv) = if ((bu.caller != A()))
343367 then throw("Invalid removeAmm params")
344- else [DeleteEntry(s(m, bm))]
368+ else [DeleteEntry(w(q, bv))]
345369
346370
347371
348-@Callable(bl)
349-func initialize (bs,bj,bk) = if (if (if (if ((0 >= bj))
372+@Callable(bu)
373+func initialize (bB,br,bs,bt) = if (if (if (if (if (if ((0 >= br))
350374 then true
351- else (0 >= bk))
375+ else (0 >= bs))
352376 then true
353- else bh())
377+ else (0 >= bt))
354378 then true
355- else (bl.caller != this))
379+ else (bt > H))
380+ then true
381+ else bp())
382+ then true
383+ else (bu.caller != this))
356384 then throw("Invalid initialize parameters")
357- else (bi(bj, bk) ++ [BooleanEntry(a, true), StringEntry(e, toString(addressFromStringValue(bs)))])
385+ else (bq(br, bs, bt) ++ [BooleanEntry(a, true), StringEntry(f, toString(addressFromStringValue(bB)))])
358386
359387
360388
361-@Callable(bl)
362-func swap (at,bt) = {
363- let bu = if ((size(bl.payments) != 1))
389+@Callable(bu)
390+func swap (aB,bC) = {
391+ let bD = if ((size(bu.payments) != 1))
364392 then throw("Invalid swap params: payment count")
365393 else true
366- if ((bu == bu))
394+ if ((bD == bD))
367395 then {
368- let ak = bl.payments[0].amount
369- let O = bl.payments[0].assetId
370- let bv = if (isDefined(O))
371- then toBase58String(value(O))
396+ let as = bu.payments[0].amount
397+ let W = bu.payments[0].assetId
398+ let bE = if (isDefined(W))
399+ then toBase58String(value(W))
372400 else "WAVES"
373- let bw = if ((at == bv))
401+ let bF = if ((aB == bE))
374402 then throw("Invalid swap params: same asset")
375403 else true
376- if ((bw == bw))
404+ if ((bF == bF))
377405 then {
378- let bx = as(ak, bv, at)
379- if ((bx == bx))
406+ let bG = aA(as, bE, aB)
407+ if ((bG == bG))
380408 then {
381- let aD = bx._9
382- let aH = bx._8
383- let aT = bx._7
384- let aQ = bx._6
385- let aR = bx._5
386- let aM = bx._4
387- let aV = bx._3
388- let aU = bx._2
389- let aC = bx._1
390- let by = invoke(aD, "repay", nil, [bl.payments[0]])
391- if ((by == by))
409+ let aL = bG._9
410+ let aP = bG._8
411+ let bb = bG._7
412+ let aY = bG._6
413+ let aZ = bG._5
414+ let aU = bG._4
415+ let bd = bG._3
416+ let bc = bG._2
417+ let aK = bG._1
418+ let bH = invoke(aL, "repay", nil, [bu.payments[0]])
419+ if ((bH == bH))
392420 then {
393- let bz = invoke(aH, "borrow", [aC], nil)
394- if ((bz == bz))
421+ let bI = invoke(aP, "borrow", [aK], nil)
422+ if ((bI == bI))
395423 then {
396- let bA = if ((at == "WAVES"))
424+ let bJ = if ((aB == "WAVES"))
397425 then unit
398- else fromBase58String(at)
399- let bB = invoke(aH, "addFree", nil, [AttachedPayment(bA, aU)])
400- if ((bB == bB))
401- then if ((bt > aV))
402- then throw(((("Can not swap due to slippage: " + toString(aV)) + " < ") + toString(bt)))
403- else $Tuple2([ScriptTransfer(bl.caller, aV, bA)], $Tuple6(ak, aV, aM, aR, aQ, aT))
426+ else fromBase58String(aB)
427+ let bK = M(bc, U())
428+ let bL = (bc - bK)
429+ let bM = invoke(aP, "addFree", nil, [AttachedPayment(bJ, bL)])
430+ if ((bM == bM))
431+ then {
432+ let bN = if (if ((bJ == C()))
433+ then true
434+ else (bK == 0))
435+ then bK
436+ else {
437+ let bO = invoke(D(), "swap", [toBase58String(C()), 0], [AttachedPayment(bJ, bK)])
438+ if ((bO == bO))
439+ then {
440+ let bN = assetBalance(this, C())
441+ if ((bN == bN))
442+ then bN
443+ else throw("Strict value is not equal to itself.")
444+ }
445+ else throw("Strict value is not equal to itself.")
446+ }
447+ if ((bN == bN))
448+ then if ((bC > bd))
449+ then throw(((("Can not swap due to slippage: " + toString(bd)) + " < ") + toString(bC)))
450+ else $Tuple2([ScriptTransfer(bu.caller, bd, bJ), ScriptTransfer(B(), bN, C())], $Tuple6(as, bd, aU, aZ, aY, bb))
451+ else throw("Strict value is not equal to itself.")
452+ }
404453 else throw("Strict value is not equal to itself.")
405454 }
406455 else throw("Strict value is not equal to itself.")
407456 }
408457 else throw("Strict value is not equal to itself.")
409458 }
410459 else throw("Strict value is not equal to itself.")
411460 }
412461 else throw("Strict value is not equal to itself.")
413462 }
414463 else throw("Strict value is not equal to itself.")
415464 }
416465
417466
418467
419-@Callable(bl)
420-func notifyVaultBalanceChange (bC,aX) = {
421- let bD = N(bC)
422- let bE = Q(bC)
423- if (if (isDefined(bD))
424- then isDefined(bE)
468+@Callable(bu)
469+func notifyVaultBalanceChange (bP,bf) = {
470+ let bQ = V(bP)
471+ let bR = Y(bP)
472+ if (if (isDefined(bQ))
473+ then isDefined(bR)
425474 else false)
426- then if ((bl.caller != bE))
475+ then if ((bu.caller != bR))
427476 then throw("Invalid notifyVaultBalanceChange params")
428477 else {
429- let bF = aW(value(bE), value(bD), aX)
430- if ((bF == bF))
478+ let bS = be(value(bR), value(bQ), bf)
479+ if ((bS == bS))
431480 then {
432- let bg = bF._2
433- let ag = bF._1
434- let bG = invoke(value(bD), "changeLiquidity", [bg], nil)
435- if ((bG == bG))
481+ let bo = bS._2
482+ let ao = bS._1
483+ let bT = invoke(value(bQ), "changeLiquidity", [bo], nil)
484+ if ((bT == bT))
436485 then nil
437486 else throw("Strict value is not equal to itself.")
438487 }
439488 else throw("Strict value is not equal to itself.")
440489 }
441490 else nil
442491 }
443492
444493
445494
446-@Callable(bl)
447-func view_estimateProjectedLiquidity (bC,aX) = {
448- let bD = R(bC)
449- let bE = S(bC)
450- let bH = aW(bE, bD, aX)
451- if ((bH == bH))
495+@Callable(bu)
496+func view_estimateProjectedLiquidity (bP,bf) = {
497+ let bQ = Z(bP)
498+ let bR = aa(bP)
499+ let bU = be(bR, bQ, bf)
500+ if ((bU == bU))
452501 then {
453- let bg = bH._2
454- let ag = bH._1
455- let bI = makeString([toString(ag), toString(bg)], ",")
456- throw(bI)
502+ let bo = bU._2
503+ let ao = bU._1
504+ let bV = makeString([toString(ao), toString(bo)], ",")
505+ throw(bV)
457506 }
458507 else throw("Strict value is not equal to itself.")
459508 }
460509
461510
462511
463-@Callable(bl)
464-func view_estimateSwap (bJ,bK,at) = {
465- let bL = as(bJ, bK, at)
466- if ((bL == bL))
512+@Callable(bu)
513+func view_estimateSwap (bW,bX,aB) = {
514+ let bY = aA(bW, bX, aB)
515+ if ((bY == bY))
467516 then {
468- let aK = bL._13
469- let aJ = bL._12
470- let aG = bL._11
471- let aF = bL._10
472- let aD = bL._9
473- let aH = bL._8
474- let aT = bL._7
475- let aQ = bL._6
476- let aR = bL._5
477- let aM = bL._4
478- let aV = bL._3
479- let aU = bL._2
480- let aC = bL._1
481- let bI = makeString([toString(aC), toString(aU), toString(aV), toString(aM), toString(aR), toString(aQ), toString(aT), toString(aF), toString(aG), toString(aJ), toString(aK)], ",")
482- throw(bI)
517+ let aS = bY._13
518+ let aR = bY._12
519+ let aO = bY._11
520+ let aN = bY._10
521+ let aL = bY._9
522+ let aP = bY._8
523+ let bb = bY._7
524+ let aY = bY._6
525+ let aZ = bY._5
526+ let aU = bY._4
527+ let bd = bY._3
528+ let bc = bY._2
529+ let aK = bY._1
530+ let bV = makeString([toString(aK), toString(bc), toString(bd), toString(aU), toString(aZ), toString(aY), toString(bb), toString(aN), toString(aO), toString(aR), toString(aS)], ",")
531+ throw(bV)
483532 }
484533 else throw("Strict value is not equal to itself.")
485534 }
486535
487536
488-@Verifier(bM)
489-func bN () = {
490- let bO = getString(this, e)
491- if (isDefined(bO))
537+@Verifier(bZ)
538+func ca () = {
539+ let cb = getString(this, f)
540+ if (isDefined(cb))
492541 then {
493- let bP = getString(addressFromStringValue(value(bO)), r)
494- if (isDefined(bP))
495- then valueOrElse(getBoolean(addressFromStringValue(value(bP)), ((("status_" + toString(this)) + "_") + toBase58String(bM.id))), false)
542+ let cc = getString(addressFromStringValue(value(cb)), v)
543+ if (isDefined(cc))
544+ then valueOrElse(getBoolean(addressFromStringValue(value(cc)), ((("status_" + toString(this)) + "_") + toBase58String(bZ.id))), false)
496545 else throw("unable to verify: admin not set in coordinator")
497546 }
498- else sigVerify(bM.bodyBytes, bM.proofs[0], bM.senderPublicKey)
547+ else sigVerify(bZ.bodyBytes, bZ.proofs[0], bZ.senderPublicKey)
499548 }
500549

github/deemru/w8io/169f3d6 
178.51 ms