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:
Old | New | Differences | |
---|---|---|---|
9 | 9 | ||
10 | 10 | let d = "k_rebate" | |
11 | 11 | ||
12 | - | let e = "k_ | |
12 | + | let e = "k_feeToStakersPercent" | |
13 | 13 | ||
14 | - | let f = "k_ | |
14 | + | let f = "k_coordinatorAddress" | |
15 | 15 | ||
16 | - | let g = "k_ | |
16 | + | let g = "k_reward_asset" | |
17 | 17 | ||
18 | - | let h = "k_ | |
18 | + | let h = "k_swap_address" | |
19 | 19 | ||
20 | - | let i = "k_ | |
20 | + | let i = "k_staking_address" | |
21 | 21 | ||
22 | - | let j = "k_ | |
22 | + | let j = "k_excessBalance" | |
23 | 23 | ||
24 | - | let k = "k_ | |
24 | + | let k = "k_freeBalance" | |
25 | 25 | ||
26 | - | let l = "k_ | |
26 | + | let l = "k_maxSpotUtilization" | |
27 | 27 | ||
28 | - | let m = "k_ | |
28 | + | let m = "k_maxPriceSpread" | |
29 | 29 | ||
30 | - | let n = "k_ | |
30 | + | let n = "k_bsAstR" | |
31 | 31 | ||
32 | - | let o = "k_ | |
32 | + | let o = "k_qtAstW" | |
33 | 33 | ||
34 | - | let p = "k_ | |
34 | + | let p = "k_totalPositionSize" | |
35 | 35 | ||
36 | - | let q = "k_ | |
36 | + | let q = "k_amm" | |
37 | 37 | ||
38 | - | let r = "k_ | |
38 | + | let r = "k_vault" | |
39 | 39 | ||
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) | |
41 | 49 | ||
42 | 50 | ||
43 | - | func | |
51 | + | func z () = valueOrErrorMessage(addressFromString(getStringValue(this, f)), "Coordinator not set") | |
44 | 52 | ||
45 | 53 | ||
46 | - | func | |
54 | + | func A () = addressFromString(getStringValue(z(), v)) | |
47 | 55 | ||
48 | 56 | ||
49 | - | func | |
57 | + | func B () = valueOrErrorMessage(addressFromString(getStringValue(z(), i)), "Staking not set") | |
50 | 58 | ||
51 | 59 | ||
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")) | |
57 | 61 | ||
58 | 62 | ||
59 | - | func D ( | |
63 | + | func D () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(z(), h), "Swap address not set")), "Swap address invalid") | |
60 | 64 | ||
61 | 65 | ||
62 | - | func | |
66 | + | func E (F) = toString(valueOrErrorMessage(addressFromString(F), (("Can't parse \"" + F) + "\" as address"))) | |
63 | 67 | ||
64 | 68 | ||
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) + ",") | |
68 | 74 | ||
69 | 75 | ||
70 | - | func H (C,E) = if ((C >= E)) | |
71 | - | then C | |
72 | - | else E | |
76 | + | func K (J,L) = fraction(J, H, L, HALFEVEN) | |
73 | 77 | ||
74 | 78 | ||
75 | - | func I (C,E) = if ((E >= C)) | |
76 | - | then C | |
77 | - | else E | |
79 | + | func M (J,L) = fraction(J, L, H, HALFEVEN) | |
78 | 80 | ||
79 | 81 | ||
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) | |
81 | 85 | ||
82 | 86 | ||
83 | - | func L () = J(c) | |
87 | + | func O (J,L) = if ((J >= L)) | |
88 | + | then J | |
89 | + | else L | |
84 | 90 | ||
85 | 91 | ||
86 | - | func M () = J(d) | |
92 | + | func P (J,L) = if ((L >= J)) | |
93 | + | then J | |
94 | + | else L | |
87 | 95 | ||
88 | 96 | ||
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)) | |
93 | 113 | else unit | |
94 | 114 | } | |
95 | 115 | ||
96 | 116 | ||
97 | - | func | |
98 | - | let | |
99 | - | if (isDefined( | |
100 | - | then valueOrErrorMessage(addressFromString(value( | |
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)) | |
101 | 121 | else unit | |
102 | 122 | } | |
103 | 123 | ||
104 | 124 | ||
105 | - | func | |
125 | + | func Z (W) = valueOrErrorMessage(V(W), ("No market for: " + W)) | |
106 | 126 | ||
107 | 127 | ||
108 | - | func | |
128 | + | func aa (W) = valueOrErrorMessage(Y(W), ("No vault for: " + W)) | |
109 | 129 | ||
110 | 130 | ||
111 | - | func | |
131 | + | func ab (ac) = valueOrElse(getInteger(ac, j), 0) | |
112 | 132 | ||
113 | 133 | ||
114 | - | func | |
134 | + | func ad (ac) = valueOrElse(getInteger(ac, k), 0) | |
115 | 135 | ||
116 | 136 | ||
117 | - | func | |
137 | + | func ae (ac) = valueOrErrorMessage(getInteger(ac, l), ("Max spot utilization not set for: " + toString(ac))) | |
118 | 138 | ||
119 | 139 | ||
120 | - | func | |
140 | + | func af (ag) = valueOrErrorMessage(getInteger(ag, m), ("Max price spread not set for: " + toString(ag))) | |
121 | 141 | ||
122 | 142 | ||
123 | - | func | |
124 | - | let | |
125 | - | if (( | |
143 | + | func ah (ag) = { | |
144 | + | let ai = invoke(ag, "syncTerminalPriceToOracle", nil, nil) | |
145 | + | if ((ai == ai)) | |
126 | 146 | then { | |
127 | - | let | |
128 | - | if (( | |
147 | + | let aj = invoke(ag, "computeTerminalAmmPrice", nil, nil) | |
148 | + | if ((aj == aj)) | |
129 | 149 | then { | |
130 | - | let | |
131 | - | let | |
132 | - | if ($isInstanceOf( | |
150 | + | let ak = { | |
151 | + | let al = aj | |
152 | + | if ($isInstanceOf(al, "Int")) | |
133 | 153 | then { | |
134 | - | let | |
135 | - | | |
154 | + | let am = al | |
155 | + | am | |
136 | 156 | } | |
137 | - | else throw(("Invalid computeTerminalAmmPrice result for " + toString( | |
157 | + | else throw(("Invalid computeTerminalAmmPrice result for " + toString(ag))) | |
138 | 158 | } | |
139 | - | let | |
140 | - | if (( | |
159 | + | let an = valueOrErrorMessage(getInteger(ag, n), ((("Key " + n) + " not set for ") + toString(ag))) | |
160 | + | if ((an == an)) | |
141 | 161 | then { | |
142 | - | let | |
143 | - | if (( | |
162 | + | let ao = valueOrElse(getInteger(ag, p), 0) | |
163 | + | if ((ao == ao)) | |
144 | 164 | then { | |
145 | - | let | |
146 | - | if (( | |
147 | - | then $Tuple3(( | |
165 | + | let ap = valueOrElse(getInteger(ag, o), H) | |
166 | + | if ((ap == ap)) | |
167 | + | then $Tuple3((an + ao), ak, ap) | |
148 | 168 | else throw("Strict value is not equal to itself.") | |
149 | 169 | } | |
150 | 170 | else throw("Strict value is not equal to itself.") | |
157 | 177 | } | |
158 | 178 | ||
159 | 179 | ||
160 | - | func | |
161 | - | let | |
162 | - | then | |
163 | - | else if (( | |
164 | - | then ( | |
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) | |
165 | 185 | else throw("Invalid decimals") | |
166 | - | let | |
167 | - | let | |
168 | - | let | |
169 | - | let | |
170 | - | if (( | |
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)) | |
171 | 191 | then { | |
172 | - | let | |
173 | - | let | |
174 | - | if ($isInstanceOf( | |
192 | + | let ak = { | |
193 | + | let al = aj | |
194 | + | if ($isInstanceOf(al, "Int")) | |
175 | 195 | then { | |
176 | - | let | |
177 | - | | |
196 | + | let am = al | |
197 | + | am | |
178 | 198 | } | |
179 | - | else throw(("Invalid computeSpotPrice result for " + toString( | |
199 | + | else throw(("Invalid computeSpotPrice result for " + toString(ag))) | |
180 | 200 | } | |
181 | - | let | |
182 | - | let | |
183 | - | let | |
184 | - | $Tuple2( | |
201 | + | let ax = M(aw, ak) | |
202 | + | let ay = (ad(ac) / 100) | |
203 | + | let az = M(ay, ak) | |
204 | + | $Tuple2(ax, az) | |
185 | 205 | } | |
186 | 206 | else throw("Strict value is not equal to itself.") | |
187 | 207 | } | |
188 | 208 | ||
189 | 209 | ||
190 | - | func | |
191 | - | let | |
210 | + | func aA (as,W,aB) = { | |
211 | + | let aC = if ((W == "WAVES")) | |
192 | 212 | then 8 | |
193 | - | else valueOrErrorMessage(assetInfo(fromBase58String( | |
194 | - | let | |
213 | + | else valueOrErrorMessage(assetInfo(fromBase58String(W)), ("Invalid asset: " + W)).decimals | |
214 | + | let aD = if ((aB == "WAVES")) | |
195 | 215 | then 8 | |
196 | - | else valueOrErrorMessage(assetInfo(fromBase58String( | |
197 | - | let | |
198 | - | then ( | |
199 | - | else if (( | |
200 | - | then | |
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 | |
201 | 221 | else throw("Invalid decimals (source)") | |
202 | - | let | |
203 | - | let | |
204 | - | if (( | |
222 | + | let aF = Z(W) | |
223 | + | let aG = invoke(aF, "swapToQuote", [aE, 0], nil) | |
224 | + | if ((aG == aG)) | |
205 | 225 | then { | |
206 | - | let | |
207 | - | let | |
208 | - | if ($isInstanceOf( | |
226 | + | let aH = { | |
227 | + | let al = aG | |
228 | + | if ($isInstanceOf(al, "Int")) | |
209 | 229 | then { | |
210 | - | let | |
211 | - | | |
230 | + | let am = al | |
231 | + | am | |
212 | 232 | } | |
213 | 233 | else throw("Invalid swapToQuote result") | |
214 | 234 | } | |
215 | - | let | |
216 | - | let | |
217 | - | if (( | |
235 | + | let aI = Z(aB) | |
236 | + | let aJ = invoke(aI, "swapToBase", [aH, 0], nil) | |
237 | + | if ((aJ == aJ)) | |
218 | 238 | then { | |
219 | - | let | |
220 | - | let | |
221 | - | if ($isInstanceOf( | |
239 | + | let aK = { | |
240 | + | let al = aJ | |
241 | + | if ($isInstanceOf(al, "Int")) | |
222 | 242 | then { | |
223 | - | let | |
224 | - | if (( | |
225 | - | then ( | |
226 | - | else if (( | |
227 | - | then | |
243 | + | let am = al | |
244 | + | if ((aD == 8)) | |
245 | + | then (am * 100) | |
246 | + | else if ((aD == 6)) | |
247 | + | then am | |
228 | 248 | else throw("Invalid decimals (target)") | |
229 | 249 | } | |
230 | 250 | else throw("Invalid swapToBase result") | |
231 | 251 | } | |
232 | - | let | |
233 | - | let | |
234 | - | let | |
235 | - | let | |
236 | - | let | |
237 | - | let | |
238 | - | let | |
239 | - | let | |
240 | - | let | |
241 | - | let | |
242 | - | let | |
243 | - | let | |
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)) | |
244 | 264 | then { | |
245 | - | let | |
246 | - | let | |
247 | - | let | |
265 | + | let aX = K(N(aT), aV) | |
266 | + | let aY = M(T(), aX) | |
267 | + | let aZ = if ((aY > aU)) | |
248 | 268 | then 0 | |
249 | - | else ( | |
250 | - | $Tuple3( | |
269 | + | else (aU - aY) | |
270 | + | $Tuple3(aZ, aY, 0) | |
251 | 271 | } | |
252 | 272 | else { | |
253 | - | let | |
254 | - | let | |
255 | - | let | |
256 | - | $Tuple3( | |
273 | + | let ba = K(N(aT), aV) | |
274 | + | let bb = M(T(), ba) | |
275 | + | let aZ = (aU + bb) | |
276 | + | $Tuple3(aZ, 0, bb) | |
257 | 277 | } | |
258 | - | let | |
259 | - | let | |
260 | - | let | |
261 | - | let | |
262 | - | let | |
263 | - | $Tuple13( | |
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) | |
264 | 284 | } | |
265 | 285 | else throw("Strict value is not equal to itself.") | |
266 | 286 | } | |
268 | 288 | } | |
269 | 289 | ||
270 | 290 | ||
271 | - | func | |
272 | - | let | |
273 | - | let | |
274 | - | let | |
275 | - | let | |
276 | - | let | |
277 | - | let | |
278 | - | if (( | |
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)) | |
279 | 299 | then { | |
280 | - | let | |
281 | - | let | |
282 | - | let | |
283 | - | let | |
284 | - | let | |
285 | - | $Tuple2( | |
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) | |
286 | 306 | } | |
287 | 307 | else throw("Strict value is not equal to itself.") | |
288 | 308 | } | |
289 | 309 | ||
290 | 310 | ||
291 | - | func | |
311 | + | func bp () = valueOrElse(getBoolean(this, a), false) | |
292 | 312 | ||
293 | 313 | ||
294 | - | func | |
314 | + | func bq (br,bs,bt) = [IntegerEntry(c, br), IntegerEntry(d, bs), IntegerEntry(e, bt)] | |
295 | 315 | ||
296 | 316 | ||
297 | - | @Callable( | |
298 | - | func pause () = if (( | |
317 | + | @Callable(bu) | |
318 | + | func pause () = if ((bu.caller != A())) | |
299 | 319 | then throw("Invalid pause params") | |
300 | 320 | else [BooleanEntry(b, true)] | |
301 | 321 | ||
302 | 322 | ||
303 | 323 | ||
304 | - | @Callable( | |
305 | - | func unpause () = if (( | |
324 | + | @Callable(bu) | |
325 | + | func unpause () = if ((bu.caller != A())) | |
306 | 326 | then throw("Invalid unpause params") | |
307 | 327 | else [BooleanEntry(b, false)] | |
308 | 328 | ||
309 | 329 | ||
310 | 330 | ||
311 | - | @Callable( | |
312 | - | func changeSettings ( | |
331 | + | @Callable(bu) | |
332 | + | func changeSettings (br,bs,bt) = if (if (if (if (if (if ((0 >= br)) | |
313 | 333 | then true | |
314 | - | else (0 >= | |
334 | + | else (0 >= bs)) | |
315 | 335 | then true | |
316 | - | else | |
336 | + | else (0 >= bt)) | |
317 | 337 | 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())) | |
319 | 343 | then throw("Invalid changeSettings params") | |
320 | - | else | |
344 | + | else bq(br, bs, bt) | |
321 | 345 | ||
322 | 346 | ||
323 | 347 | ||
324 | - | @Callable( | |
325 | - | func addAmm ( | |
348 | + | @Callable(bu) | |
349 | + | func addAmm (bv,bw,bx,by) = if ((bu.caller != A())) | |
326 | 350 | then throw("Invalid addAmm params") | |
327 | 351 | else { | |
328 | - | let | |
329 | - | if (( | |
352 | + | let bz = E(bv) | |
353 | + | if ((bz == bz)) | |
330 | 354 | then { | |
331 | - | let | |
332 | - | if (( | |
333 | - | then [BooleanEntry( | |
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)] | |
334 | 358 | else throw("Strict value is not equal to itself.") | |
335 | 359 | } | |
336 | 360 | else throw("Strict value is not equal to itself.") | |
338 | 362 | ||
339 | 363 | ||
340 | 364 | ||
341 | - | @Callable( | |
342 | - | func removeAmm ( | |
365 | + | @Callable(bu) | |
366 | + | func removeAmm (bv) = if ((bu.caller != A())) | |
343 | 367 | then throw("Invalid removeAmm params") | |
344 | - | else [DeleteEntry( | |
368 | + | else [DeleteEntry(w(q, bv))] | |
345 | 369 | ||
346 | 370 | ||
347 | 371 | ||
348 | - | @Callable( | |
349 | - | func initialize (bs, | |
372 | + | @Callable(bu) | |
373 | + | func initialize (bB,br,bs,bt) = if (if (if (if (if (if ((0 >= br)) | |
350 | 374 | then true | |
351 | - | else (0 >= | |
375 | + | else (0 >= bs)) | |
352 | 376 | then true | |
353 | - | else | |
377 | + | else (0 >= bt)) | |
354 | 378 | 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)) | |
356 | 384 | then throw("Invalid initialize parameters") | |
357 | - | else ( | |
385 | + | else (bq(br, bs, bt) ++ [BooleanEntry(a, true), StringEntry(f, toString(addressFromStringValue(bB)))]) | |
358 | 386 | ||
359 | 387 | ||
360 | 388 | ||
361 | - | @Callable( | |
362 | - | func swap ( | |
363 | - | let | |
389 | + | @Callable(bu) | |
390 | + | func swap (aB,bC) = { | |
391 | + | let bD = if ((size(bu.payments) != 1)) | |
364 | 392 | then throw("Invalid swap params: payment count") | |
365 | 393 | else true | |
366 | - | if (( | |
394 | + | if ((bD == bD)) | |
367 | 395 | then { | |
368 | - | let | |
369 | - | let | |
370 | - | let | |
371 | - | then toBase58String(value( | |
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)) | |
372 | 400 | else "WAVES" | |
373 | - | let | |
401 | + | let bF = if ((aB == bE)) | |
374 | 402 | then throw("Invalid swap params: same asset") | |
375 | 403 | else true | |
376 | - | if (( | |
404 | + | if ((bF == bF)) | |
377 | 405 | then { | |
378 | - | let | |
379 | - | if (( | |
406 | + | let bG = aA(as, bE, aB) | |
407 | + | if ((bG == bG)) | |
380 | 408 | then { | |
381 | - | let | |
382 | - | let | |
383 | - | let | |
384 | - | let | |
385 | - | let | |
386 | - | let | |
387 | - | let | |
388 | - | let | |
389 | - | let | |
390 | - | let | |
391 | - | if (( | |
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)) | |
392 | 420 | then { | |
393 | - | let | |
394 | - | if (( | |
421 | + | let bI = invoke(aP, "borrow", [aK], nil) | |
422 | + | if ((bI == bI)) | |
395 | 423 | then { | |
396 | - | let | |
424 | + | let bJ = if ((aB == "WAVES")) | |
397 | 425 | 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 | + | } | |
404 | 453 | else throw("Strict value is not equal to itself.") | |
405 | 454 | } | |
406 | 455 | else throw("Strict value is not equal to itself.") | |
416 | 465 | ||
417 | 466 | ||
418 | 467 | ||
419 | - | @Callable( | |
420 | - | func notifyVaultBalanceChange ( | |
421 | - | let | |
422 | - | let | |
423 | - | if (if (isDefined( | |
424 | - | then isDefined( | |
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) | |
425 | 474 | else false) | |
426 | - | then if (( | |
475 | + | then if ((bu.caller != bR)) | |
427 | 476 | then throw("Invalid notifyVaultBalanceChange params") | |
428 | 477 | else { | |
429 | - | let | |
430 | - | if (( | |
478 | + | let bS = be(value(bR), value(bQ), bf) | |
479 | + | if ((bS == bS)) | |
431 | 480 | then { | |
432 | - | let | |
433 | - | let | |
434 | - | let | |
435 | - | if (( | |
481 | + | let bo = bS._2 | |
482 | + | let ao = bS._1 | |
483 | + | let bT = invoke(value(bQ), "changeLiquidity", [bo], nil) | |
484 | + | if ((bT == bT)) | |
436 | 485 | then nil | |
437 | 486 | else throw("Strict value is not equal to itself.") | |
438 | 487 | } | |
443 | 492 | ||
444 | 493 | ||
445 | 494 | ||
446 | - | @Callable( | |
447 | - | func view_estimateProjectedLiquidity ( | |
448 | - | let | |
449 | - | let | |
450 | - | let | |
451 | - | if (( | |
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)) | |
452 | 501 | then { | |
453 | - | let | |
454 | - | let | |
455 | - | let | |
456 | - | throw( | |
502 | + | let bo = bU._2 | |
503 | + | let ao = bU._1 | |
504 | + | let bV = makeString([toString(ao), toString(bo)], ",") | |
505 | + | throw(bV) | |
457 | 506 | } | |
458 | 507 | else throw("Strict value is not equal to itself.") | |
459 | 508 | } | |
460 | 509 | ||
461 | 510 | ||
462 | 511 | ||
463 | - | @Callable( | |
464 | - | func view_estimateSwap ( | |
465 | - | let | |
466 | - | if (( | |
512 | + | @Callable(bu) | |
513 | + | func view_estimateSwap (bW,bX,aB) = { | |
514 | + | let bY = aA(bW, bX, aB) | |
515 | + | if ((bY == bY)) | |
467 | 516 | then { | |
468 | - | let | |
469 | - | let | |
470 | - | let | |
471 | - | let | |
472 | - | let | |
473 | - | let | |
474 | - | let | |
475 | - | let | |
476 | - | let | |
477 | - | let | |
478 | - | let | |
479 | - | let | |
480 | - | let | |
481 | - | let | |
482 | - | throw( | |
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) | |
483 | 532 | } | |
484 | 533 | else throw("Strict value is not equal to itself.") | |
485 | 534 | } | |
486 | 535 | ||
487 | 536 | ||
488 | - | @Verifier( | |
489 | - | func | |
490 | - | let | |
491 | - | if (isDefined( | |
537 | + | @Verifier(bZ) | |
538 | + | func ca () = { | |
539 | + | let cb = getString(this, f) | |
540 | + | if (isDefined(cb)) | |
492 | 541 | then { | |
493 | - | let | |
494 | - | if (isDefined( | |
495 | - | then valueOrElse(getBoolean(addressFromStringValue(value( | |
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) | |
496 | 545 | else throw("unable to verify: admin not set in coordinator") | |
497 | 546 | } | |
498 | - | else sigVerify( | |
547 | + | else sigVerify(bZ.bodyBytes, bZ.proofs[0], bZ.senderPublicKey) | |
499 | 548 | } | |
500 | 549 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "k_initialized" | |
5 | 5 | ||
6 | 6 | let b = "k_paused" | |
7 | 7 | ||
8 | 8 | let c = "k_fee" | |
9 | 9 | ||
10 | 10 | let d = "k_rebate" | |
11 | 11 | ||
12 | - | let e = "k_ | |
12 | + | let e = "k_feeToStakersPercent" | |
13 | 13 | ||
14 | - | let f = "k_ | |
14 | + | let f = "k_coordinatorAddress" | |
15 | 15 | ||
16 | - | let g = "k_ | |
16 | + | let g = "k_reward_asset" | |
17 | 17 | ||
18 | - | let h = "k_ | |
18 | + | let h = "k_swap_address" | |
19 | 19 | ||
20 | - | let i = "k_ | |
20 | + | let i = "k_staking_address" | |
21 | 21 | ||
22 | - | let j = "k_ | |
22 | + | let j = "k_excessBalance" | |
23 | 23 | ||
24 | - | let k = "k_ | |
24 | + | let k = "k_freeBalance" | |
25 | 25 | ||
26 | - | let l = "k_ | |
26 | + | let l = "k_maxSpotUtilization" | |
27 | 27 | ||
28 | - | let m = "k_ | |
28 | + | let m = "k_maxPriceSpread" | |
29 | 29 | ||
30 | - | let n = "k_ | |
30 | + | let n = "k_bsAstR" | |
31 | 31 | ||
32 | - | let o = "k_ | |
32 | + | let o = "k_qtAstW" | |
33 | 33 | ||
34 | - | let p = "k_ | |
34 | + | let p = "k_totalPositionSize" | |
35 | 35 | ||
36 | - | let q = "k_ | |
36 | + | let q = "k_amm" | |
37 | 37 | ||
38 | - | let r = "k_ | |
38 | + | let r = "k_vault" | |
39 | 39 | ||
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) | |
41 | 49 | ||
42 | 50 | ||
43 | - | func | |
51 | + | func z () = valueOrErrorMessage(addressFromString(getStringValue(this, f)), "Coordinator not set") | |
44 | 52 | ||
45 | 53 | ||
46 | - | func | |
54 | + | func A () = addressFromString(getStringValue(z(), v)) | |
47 | 55 | ||
48 | 56 | ||
49 | - | func | |
57 | + | func B () = valueOrErrorMessage(addressFromString(getStringValue(z(), i)), "Staking not set") | |
50 | 58 | ||
51 | 59 | ||
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")) | |
57 | 61 | ||
58 | 62 | ||
59 | - | func D ( | |
63 | + | func D () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(z(), h), "Swap address not set")), "Swap address invalid") | |
60 | 64 | ||
61 | 65 | ||
62 | - | func | |
66 | + | func E (F) = toString(valueOrErrorMessage(addressFromString(F), (("Can't parse \"" + F) + "\" as address"))) | |
63 | 67 | ||
64 | 68 | ||
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) + ",") | |
68 | 74 | ||
69 | 75 | ||
70 | - | func H (C,E) = if ((C >= E)) | |
71 | - | then C | |
72 | - | else E | |
76 | + | func K (J,L) = fraction(J, H, L, HALFEVEN) | |
73 | 77 | ||
74 | 78 | ||
75 | - | func I (C,E) = if ((E >= C)) | |
76 | - | then C | |
77 | - | else E | |
79 | + | func M (J,L) = fraction(J, L, H, HALFEVEN) | |
78 | 80 | ||
79 | 81 | ||
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) | |
81 | 85 | ||
82 | 86 | ||
83 | - | func L () = J(c) | |
87 | + | func O (J,L) = if ((J >= L)) | |
88 | + | then J | |
89 | + | else L | |
84 | 90 | ||
85 | 91 | ||
86 | - | func M () = J(d) | |
92 | + | func P (J,L) = if ((L >= J)) | |
93 | + | then J | |
94 | + | else L | |
87 | 95 | ||
88 | 96 | ||
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)) | |
93 | 113 | else unit | |
94 | 114 | } | |
95 | 115 | ||
96 | 116 | ||
97 | - | func | |
98 | - | let | |
99 | - | if (isDefined( | |
100 | - | then valueOrErrorMessage(addressFromString(value( | |
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)) | |
101 | 121 | else unit | |
102 | 122 | } | |
103 | 123 | ||
104 | 124 | ||
105 | - | func | |
125 | + | func Z (W) = valueOrErrorMessage(V(W), ("No market for: " + W)) | |
106 | 126 | ||
107 | 127 | ||
108 | - | func | |
128 | + | func aa (W) = valueOrErrorMessage(Y(W), ("No vault for: " + W)) | |
109 | 129 | ||
110 | 130 | ||
111 | - | func | |
131 | + | func ab (ac) = valueOrElse(getInteger(ac, j), 0) | |
112 | 132 | ||
113 | 133 | ||
114 | - | func | |
134 | + | func ad (ac) = valueOrElse(getInteger(ac, k), 0) | |
115 | 135 | ||
116 | 136 | ||
117 | - | func | |
137 | + | func ae (ac) = valueOrErrorMessage(getInteger(ac, l), ("Max spot utilization not set for: " + toString(ac))) | |
118 | 138 | ||
119 | 139 | ||
120 | - | func | |
140 | + | func af (ag) = valueOrErrorMessage(getInteger(ag, m), ("Max price spread not set for: " + toString(ag))) | |
121 | 141 | ||
122 | 142 | ||
123 | - | func | |
124 | - | let | |
125 | - | if (( | |
143 | + | func ah (ag) = { | |
144 | + | let ai = invoke(ag, "syncTerminalPriceToOracle", nil, nil) | |
145 | + | if ((ai == ai)) | |
126 | 146 | then { | |
127 | - | let | |
128 | - | if (( | |
147 | + | let aj = invoke(ag, "computeTerminalAmmPrice", nil, nil) | |
148 | + | if ((aj == aj)) | |
129 | 149 | then { | |
130 | - | let | |
131 | - | let | |
132 | - | if ($isInstanceOf( | |
150 | + | let ak = { | |
151 | + | let al = aj | |
152 | + | if ($isInstanceOf(al, "Int")) | |
133 | 153 | then { | |
134 | - | let | |
135 | - | | |
154 | + | let am = al | |
155 | + | am | |
136 | 156 | } | |
137 | - | else throw(("Invalid computeTerminalAmmPrice result for " + toString( | |
157 | + | else throw(("Invalid computeTerminalAmmPrice result for " + toString(ag))) | |
138 | 158 | } | |
139 | - | let | |
140 | - | if (( | |
159 | + | let an = valueOrErrorMessage(getInteger(ag, n), ((("Key " + n) + " not set for ") + toString(ag))) | |
160 | + | if ((an == an)) | |
141 | 161 | then { | |
142 | - | let | |
143 | - | if (( | |
162 | + | let ao = valueOrElse(getInteger(ag, p), 0) | |
163 | + | if ((ao == ao)) | |
144 | 164 | then { | |
145 | - | let | |
146 | - | if (( | |
147 | - | then $Tuple3(( | |
165 | + | let ap = valueOrElse(getInteger(ag, o), H) | |
166 | + | if ((ap == ap)) | |
167 | + | then $Tuple3((an + ao), ak, ap) | |
148 | 168 | else throw("Strict value is not equal to itself.") | |
149 | 169 | } | |
150 | 170 | else throw("Strict value is not equal to itself.") | |
151 | 171 | } | |
152 | 172 | else throw("Strict value is not equal to itself.") | |
153 | 173 | } | |
154 | 174 | else throw("Strict value is not equal to itself.") | |
155 | 175 | } | |
156 | 176 | else throw("Strict value is not equal to itself.") | |
157 | 177 | } | |
158 | 178 | ||
159 | 179 | ||
160 | - | func | |
161 | - | let | |
162 | - | then | |
163 | - | else if (( | |
164 | - | then ( | |
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) | |
165 | 185 | else throw("Invalid decimals") | |
166 | - | let | |
167 | - | let | |
168 | - | let | |
169 | - | let | |
170 | - | if (( | |
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)) | |
171 | 191 | then { | |
172 | - | let | |
173 | - | let | |
174 | - | if ($isInstanceOf( | |
192 | + | let ak = { | |
193 | + | let al = aj | |
194 | + | if ($isInstanceOf(al, "Int")) | |
175 | 195 | then { | |
176 | - | let | |
177 | - | | |
196 | + | let am = al | |
197 | + | am | |
178 | 198 | } | |
179 | - | else throw(("Invalid computeSpotPrice result for " + toString( | |
199 | + | else throw(("Invalid computeSpotPrice result for " + toString(ag))) | |
180 | 200 | } | |
181 | - | let | |
182 | - | let | |
183 | - | let | |
184 | - | $Tuple2( | |
201 | + | let ax = M(aw, ak) | |
202 | + | let ay = (ad(ac) / 100) | |
203 | + | let az = M(ay, ak) | |
204 | + | $Tuple2(ax, az) | |
185 | 205 | } | |
186 | 206 | else throw("Strict value is not equal to itself.") | |
187 | 207 | } | |
188 | 208 | ||
189 | 209 | ||
190 | - | func | |
191 | - | let | |
210 | + | func aA (as,W,aB) = { | |
211 | + | let aC = if ((W == "WAVES")) | |
192 | 212 | then 8 | |
193 | - | else valueOrErrorMessage(assetInfo(fromBase58String( | |
194 | - | let | |
213 | + | else valueOrErrorMessage(assetInfo(fromBase58String(W)), ("Invalid asset: " + W)).decimals | |
214 | + | let aD = if ((aB == "WAVES")) | |
195 | 215 | then 8 | |
196 | - | else valueOrErrorMessage(assetInfo(fromBase58String( | |
197 | - | let | |
198 | - | then ( | |
199 | - | else if (( | |
200 | - | then | |
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 | |
201 | 221 | else throw("Invalid decimals (source)") | |
202 | - | let | |
203 | - | let | |
204 | - | if (( | |
222 | + | let aF = Z(W) | |
223 | + | let aG = invoke(aF, "swapToQuote", [aE, 0], nil) | |
224 | + | if ((aG == aG)) | |
205 | 225 | then { | |
206 | - | let | |
207 | - | let | |
208 | - | if ($isInstanceOf( | |
226 | + | let aH = { | |
227 | + | let al = aG | |
228 | + | if ($isInstanceOf(al, "Int")) | |
209 | 229 | then { | |
210 | - | let | |
211 | - | | |
230 | + | let am = al | |
231 | + | am | |
212 | 232 | } | |
213 | 233 | else throw("Invalid swapToQuote result") | |
214 | 234 | } | |
215 | - | let | |
216 | - | let | |
217 | - | if (( | |
235 | + | let aI = Z(aB) | |
236 | + | let aJ = invoke(aI, "swapToBase", [aH, 0], nil) | |
237 | + | if ((aJ == aJ)) | |
218 | 238 | then { | |
219 | - | let | |
220 | - | let | |
221 | - | if ($isInstanceOf( | |
239 | + | let aK = { | |
240 | + | let al = aJ | |
241 | + | if ($isInstanceOf(al, "Int")) | |
222 | 242 | then { | |
223 | - | let | |
224 | - | if (( | |
225 | - | then ( | |
226 | - | else if (( | |
227 | - | then | |
243 | + | let am = al | |
244 | + | if ((aD == 8)) | |
245 | + | then (am * 100) | |
246 | + | else if ((aD == 6)) | |
247 | + | then am | |
228 | 248 | else throw("Invalid decimals (target)") | |
229 | 249 | } | |
230 | 250 | else throw("Invalid swapToBase result") | |
231 | 251 | } | |
232 | - | let | |
233 | - | let | |
234 | - | let | |
235 | - | let | |
236 | - | let | |
237 | - | let | |
238 | - | let | |
239 | - | let | |
240 | - | let | |
241 | - | let | |
242 | - | let | |
243 | - | let | |
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)) | |
244 | 264 | then { | |
245 | - | let | |
246 | - | let | |
247 | - | let | |
265 | + | let aX = K(N(aT), aV) | |
266 | + | let aY = M(T(), aX) | |
267 | + | let aZ = if ((aY > aU)) | |
248 | 268 | then 0 | |
249 | - | else ( | |
250 | - | $Tuple3( | |
269 | + | else (aU - aY) | |
270 | + | $Tuple3(aZ, aY, 0) | |
251 | 271 | } | |
252 | 272 | else { | |
253 | - | let | |
254 | - | let | |
255 | - | let | |
256 | - | $Tuple3( | |
273 | + | let ba = K(N(aT), aV) | |
274 | + | let bb = M(T(), ba) | |
275 | + | let aZ = (aU + bb) | |
276 | + | $Tuple3(aZ, 0, bb) | |
257 | 277 | } | |
258 | - | let | |
259 | - | let | |
260 | - | let | |
261 | - | let | |
262 | - | let | |
263 | - | $Tuple13( | |
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) | |
264 | 284 | } | |
265 | 285 | else throw("Strict value is not equal to itself.") | |
266 | 286 | } | |
267 | 287 | else throw("Strict value is not equal to itself.") | |
268 | 288 | } | |
269 | 289 | ||
270 | 290 | ||
271 | - | func | |
272 | - | let | |
273 | - | let | |
274 | - | let | |
275 | - | let | |
276 | - | let | |
277 | - | let | |
278 | - | if (( | |
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)) | |
279 | 299 | then { | |
280 | - | let | |
281 | - | let | |
282 | - | let | |
283 | - | let | |
284 | - | let | |
285 | - | $Tuple2( | |
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) | |
286 | 306 | } | |
287 | 307 | else throw("Strict value is not equal to itself.") | |
288 | 308 | } | |
289 | 309 | ||
290 | 310 | ||
291 | - | func | |
311 | + | func bp () = valueOrElse(getBoolean(this, a), false) | |
292 | 312 | ||
293 | 313 | ||
294 | - | func | |
314 | + | func bq (br,bs,bt) = [IntegerEntry(c, br), IntegerEntry(d, bs), IntegerEntry(e, bt)] | |
295 | 315 | ||
296 | 316 | ||
297 | - | @Callable( | |
298 | - | func pause () = if (( | |
317 | + | @Callable(bu) | |
318 | + | func pause () = if ((bu.caller != A())) | |
299 | 319 | then throw("Invalid pause params") | |
300 | 320 | else [BooleanEntry(b, true)] | |
301 | 321 | ||
302 | 322 | ||
303 | 323 | ||
304 | - | @Callable( | |
305 | - | func unpause () = if (( | |
324 | + | @Callable(bu) | |
325 | + | func unpause () = if ((bu.caller != A())) | |
306 | 326 | then throw("Invalid unpause params") | |
307 | 327 | else [BooleanEntry(b, false)] | |
308 | 328 | ||
309 | 329 | ||
310 | 330 | ||
311 | - | @Callable( | |
312 | - | func changeSettings ( | |
331 | + | @Callable(bu) | |
332 | + | func changeSettings (br,bs,bt) = if (if (if (if (if (if ((0 >= br)) | |
313 | 333 | then true | |
314 | - | else (0 >= | |
334 | + | else (0 >= bs)) | |
315 | 335 | then true | |
316 | - | else | |
336 | + | else (0 >= bt)) | |
317 | 337 | 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())) | |
319 | 343 | then throw("Invalid changeSettings params") | |
320 | - | else | |
344 | + | else bq(br, bs, bt) | |
321 | 345 | ||
322 | 346 | ||
323 | 347 | ||
324 | - | @Callable( | |
325 | - | func addAmm ( | |
348 | + | @Callable(bu) | |
349 | + | func addAmm (bv,bw,bx,by) = if ((bu.caller != A())) | |
326 | 350 | then throw("Invalid addAmm params") | |
327 | 351 | else { | |
328 | - | let | |
329 | - | if (( | |
352 | + | let bz = E(bv) | |
353 | + | if ((bz == bz)) | |
330 | 354 | then { | |
331 | - | let | |
332 | - | if (( | |
333 | - | then [BooleanEntry( | |
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)] | |
334 | 358 | else throw("Strict value is not equal to itself.") | |
335 | 359 | } | |
336 | 360 | else throw("Strict value is not equal to itself.") | |
337 | 361 | } | |
338 | 362 | ||
339 | 363 | ||
340 | 364 | ||
341 | - | @Callable( | |
342 | - | func removeAmm ( | |
365 | + | @Callable(bu) | |
366 | + | func removeAmm (bv) = if ((bu.caller != A())) | |
343 | 367 | then throw("Invalid removeAmm params") | |
344 | - | else [DeleteEntry( | |
368 | + | else [DeleteEntry(w(q, bv))] | |
345 | 369 | ||
346 | 370 | ||
347 | 371 | ||
348 | - | @Callable( | |
349 | - | func initialize (bs, | |
372 | + | @Callable(bu) | |
373 | + | func initialize (bB,br,bs,bt) = if (if (if (if (if (if ((0 >= br)) | |
350 | 374 | then true | |
351 | - | else (0 >= | |
375 | + | else (0 >= bs)) | |
352 | 376 | then true | |
353 | - | else | |
377 | + | else (0 >= bt)) | |
354 | 378 | 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)) | |
356 | 384 | then throw("Invalid initialize parameters") | |
357 | - | else ( | |
385 | + | else (bq(br, bs, bt) ++ [BooleanEntry(a, true), StringEntry(f, toString(addressFromStringValue(bB)))]) | |
358 | 386 | ||
359 | 387 | ||
360 | 388 | ||
361 | - | @Callable( | |
362 | - | func swap ( | |
363 | - | let | |
389 | + | @Callable(bu) | |
390 | + | func swap (aB,bC) = { | |
391 | + | let bD = if ((size(bu.payments) != 1)) | |
364 | 392 | then throw("Invalid swap params: payment count") | |
365 | 393 | else true | |
366 | - | if (( | |
394 | + | if ((bD == bD)) | |
367 | 395 | then { | |
368 | - | let | |
369 | - | let | |
370 | - | let | |
371 | - | then toBase58String(value( | |
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)) | |
372 | 400 | else "WAVES" | |
373 | - | let | |
401 | + | let bF = if ((aB == bE)) | |
374 | 402 | then throw("Invalid swap params: same asset") | |
375 | 403 | else true | |
376 | - | if (( | |
404 | + | if ((bF == bF)) | |
377 | 405 | then { | |
378 | - | let | |
379 | - | if (( | |
406 | + | let bG = aA(as, bE, aB) | |
407 | + | if ((bG == bG)) | |
380 | 408 | then { | |
381 | - | let | |
382 | - | let | |
383 | - | let | |
384 | - | let | |
385 | - | let | |
386 | - | let | |
387 | - | let | |
388 | - | let | |
389 | - | let | |
390 | - | let | |
391 | - | if (( | |
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)) | |
392 | 420 | then { | |
393 | - | let | |
394 | - | if (( | |
421 | + | let bI = invoke(aP, "borrow", [aK], nil) | |
422 | + | if ((bI == bI)) | |
395 | 423 | then { | |
396 | - | let | |
424 | + | let bJ = if ((aB == "WAVES")) | |
397 | 425 | 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 | + | } | |
404 | 453 | else throw("Strict value is not equal to itself.") | |
405 | 454 | } | |
406 | 455 | else throw("Strict value is not equal to itself.") | |
407 | 456 | } | |
408 | 457 | else throw("Strict value is not equal to itself.") | |
409 | 458 | } | |
410 | 459 | else throw("Strict value is not equal to itself.") | |
411 | 460 | } | |
412 | 461 | else throw("Strict value is not equal to itself.") | |
413 | 462 | } | |
414 | 463 | else throw("Strict value is not equal to itself.") | |
415 | 464 | } | |
416 | 465 | ||
417 | 466 | ||
418 | 467 | ||
419 | - | @Callable( | |
420 | - | func notifyVaultBalanceChange ( | |
421 | - | let | |
422 | - | let | |
423 | - | if (if (isDefined( | |
424 | - | then isDefined( | |
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) | |
425 | 474 | else false) | |
426 | - | then if (( | |
475 | + | then if ((bu.caller != bR)) | |
427 | 476 | then throw("Invalid notifyVaultBalanceChange params") | |
428 | 477 | else { | |
429 | - | let | |
430 | - | if (( | |
478 | + | let bS = be(value(bR), value(bQ), bf) | |
479 | + | if ((bS == bS)) | |
431 | 480 | then { | |
432 | - | let | |
433 | - | let | |
434 | - | let | |
435 | - | if (( | |
481 | + | let bo = bS._2 | |
482 | + | let ao = bS._1 | |
483 | + | let bT = invoke(value(bQ), "changeLiquidity", [bo], nil) | |
484 | + | if ((bT == bT)) | |
436 | 485 | then nil | |
437 | 486 | else throw("Strict value is not equal to itself.") | |
438 | 487 | } | |
439 | 488 | else throw("Strict value is not equal to itself.") | |
440 | 489 | } | |
441 | 490 | else nil | |
442 | 491 | } | |
443 | 492 | ||
444 | 493 | ||
445 | 494 | ||
446 | - | @Callable( | |
447 | - | func view_estimateProjectedLiquidity ( | |
448 | - | let | |
449 | - | let | |
450 | - | let | |
451 | - | if (( | |
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)) | |
452 | 501 | then { | |
453 | - | let | |
454 | - | let | |
455 | - | let | |
456 | - | throw( | |
502 | + | let bo = bU._2 | |
503 | + | let ao = bU._1 | |
504 | + | let bV = makeString([toString(ao), toString(bo)], ",") | |
505 | + | throw(bV) | |
457 | 506 | } | |
458 | 507 | else throw("Strict value is not equal to itself.") | |
459 | 508 | } | |
460 | 509 | ||
461 | 510 | ||
462 | 511 | ||
463 | - | @Callable( | |
464 | - | func view_estimateSwap ( | |
465 | - | let | |
466 | - | if (( | |
512 | + | @Callable(bu) | |
513 | + | func view_estimateSwap (bW,bX,aB) = { | |
514 | + | let bY = aA(bW, bX, aB) | |
515 | + | if ((bY == bY)) | |
467 | 516 | then { | |
468 | - | let | |
469 | - | let | |
470 | - | let | |
471 | - | let | |
472 | - | let | |
473 | - | let | |
474 | - | let | |
475 | - | let | |
476 | - | let | |
477 | - | let | |
478 | - | let | |
479 | - | let | |
480 | - | let | |
481 | - | let | |
482 | - | throw( | |
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) | |
483 | 532 | } | |
484 | 533 | else throw("Strict value is not equal to itself.") | |
485 | 534 | } | |
486 | 535 | ||
487 | 536 | ||
488 | - | @Verifier( | |
489 | - | func | |
490 | - | let | |
491 | - | if (isDefined( | |
537 | + | @Verifier(bZ) | |
538 | + | func ca () = { | |
539 | + | let cb = getString(this, f) | |
540 | + | if (isDefined(cb)) | |
492 | 541 | then { | |
493 | - | let | |
494 | - | if (isDefined( | |
495 | - | then valueOrElse(getBoolean(addressFromStringValue(value( | |
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) | |
496 | 545 | else throw("unable to verify: admin not set in coordinator") | |
497 | 546 | } | |
498 | - | else sigVerify( | |
547 | + | else sigVerify(bZ.bodyBytes, bZ.proofs[0], bZ.senderPublicKey) | |
499 | 548 | } | |
500 | 549 |
github/deemru/w8io/169f3d6 178.51 ms ◑![]()