tx · 8RskADFKd1rom1ZhBPsKSy7n9YFc7cwcJZ3eDwcEtnbE

3NCWFHDzdPHZC6636ZkMLNDup9mjpbTLs7h:  -0.01000000 Waves

2023.04.04 10:26 [2519525] smart account 3NCWFHDzdPHZC6636ZkMLNDup9mjpbTLs7h > SELF 0.00000000 Waves

{ "type": 13, "id": "8RskADFKd1rom1ZhBPsKSy7n9YFc7cwcJZ3eDwcEtnbE", "fee": 1000000, "feeAssetId": null, "timestamp": 1680593263935, "version": 2, "chainId": 84, "sender": "3NCWFHDzdPHZC6636ZkMLNDup9mjpbTLs7h", "senderPublicKey": "3z8Q6Zu3KppVmn6fJJvrLc1Wo3krVHSvfaNcerm82md2", "proofs": [ "7AwqtHsUxb7x6BYcvc5UeQmKrKPHzQqfzXBWbWJF3tW4GiBYnyw5wsvW2VXn8oQ3gQG4eskCNMDWgzfLMJ69pw8" ], "script": "base64:BgIJCAISABIDCgEBEgADU0VQAgJfXwAMY29udHJhY3RGaWxlAg5yZWJhbGFuY2UucmlkZQARa2V5RmFjdG9yeUFkZHJlc3MCCyVzX19mYWN0b3J5ARRrZXlBZGRpdGlvbmFsQmFsYW5jZQEHYXNzZXRJZAkAuQkCCQDMCAICBCVzJXMJAMwIAgIRYWRkaXRpb25hbEJhbGFuY2UJAMwIAgUHYXNzZXRJZAUDbmlsBQNTRVABHGtleUludGVybmFsQWRkaXRpb25hbEJhbGFuY2UBB2Fzc2V0SWQJALkJAgkAzAgCAgQlcyVzCQDMCAICGWludGVybmFsQWRkaXRpb25hbEJhbGFuY2UJAMwIAgUHYXNzZXRJZAUDbmlsBQNTRVABFmtleVN0YWtpbmdBc3NldEJhbGFuY2UBB2Fzc2V0SWQJALkJAgkAzAgCAgQlcyVzCQDMCAICE3N0YWtpbmdBc3NldEJhbGFuY2UJAMwIAgUHYXNzZXRJZAUDbmlsBQNTRVABFGdldEFkZGl0aW9uYWxCYWxhbmNlAQdhc3NldElkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARRrZXlBZGRpdGlvbmFsQmFsYW5jZQEFB2Fzc2V0SWQAAAEcZ2V0SW50ZXJuYWxBZGRpdGlvbmFsQmFsYW5jZQEHYXNzZXRJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEca2V5SW50ZXJuYWxBZGRpdGlvbmFsQmFsYW5jZQEFB2Fzc2V0SWQAAAEWZ2V0U3Rha2luZ0Fzc2V0QmFsYW5jZQEHYXNzZXRJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEWa2V5U3Rha2luZ0Fzc2V0QmFsYW5jZQEFB2Fzc2V0SWQAAAEKdGhyb3dFcnJvcgEIZXJyb3JNc2cJAAIBCQCsAgIJAKwCAgUMY29udHJhY3RGaWxlAgI6IAUIZXJyb3JNc2cBDHBhcnNlQXNzZXRJZAEFaW5wdXQDCQAAAgUFaW5wdXQCBVdBVkVTBQR1bml0CQDZBAEFBWlucHV0AQdnZXRSYXRlAQVwcm94eQQDaW52CQD8BwQFBXByb3h5AgdnZXRSYXRlBQNuaWwFA25pbAMJAAACBQNpbnYFA2ludgQHJG1hdGNoMAUDaW52AwkAAQIFByRtYXRjaDACA0ludAQBcwUHJG1hdGNoMAUBcwkBCnRocm93RXJyb3IBAhlnZXRSYXRlKCkgdW5leHBlY3RlZCB0eXBlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARNnZXRMZWFzZVByb3h5Q29uZmlnAQdhc3NldElkBAdmYWN0b3J5CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCiCAEFEWtleUZhY3RvcnlBZGRyZXNzAgAED215QWRkcmVzc1N0cmluZwkApQgBBQR0aGlzCQD8BwQFB2ZhY3RvcnkCGmdldFBvb2xMZWFzZUNvbmZpZ1JFQURPTkxZCQDMCAIFD215QWRkcmVzc1N0cmluZwkAzAgCBQdhc3NldElkBQNuaWwFA25pbAEHZGVwb3NpdAQHYXNzZXRJZAZhbW91bnQOc3Rha2luZ0Fzc2V0SWQFcHJveHkEGGN1cnJlbnRBZGRpdGlvbmFsQmFsYW5jZQkBFGdldEFkZGl0aW9uYWxCYWxhbmNlAQUHYXNzZXRJZAMJAAACBRhjdXJyZW50QWRkaXRpb25hbEJhbGFuY2UFGGN1cnJlbnRBZGRpdGlvbmFsQmFsYW5jZQQaY3VycmVudFN0YWtpbmdBc3NldEJhbGFuY2UJARZnZXRTdGFraW5nQXNzZXRCYWxhbmNlAQUOc3Rha2luZ0Fzc2V0SWQDCQAAAgUaY3VycmVudFN0YWtpbmdBc3NldEJhbGFuY2UFGmN1cnJlbnRTdGFraW5nQXNzZXRCYWxhbmNlBAVhc3NldAkBDHBhcnNlQXNzZXRJZAEFB2Fzc2V0SWQDCQBmAgUGYW1vdW50AAAEDWRlcG9zaXRJbnZva2UJAPwHBAUFcHJveHkCB2RlcG9zaXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUFYXNzZXQFBmFtb3VudAUDbmlsAwkAAAIFDWRlcG9zaXRJbnZva2UFDWRlcG9zaXRJbnZva2UEByRtYXRjaDAFDWRlcG9zaXRJbnZva2UDCQABAgUHJG1hdGNoMAIDSW50BBRyZWNlaXZlZFN0YWtpbmdBc3NldAUHJG1hdGNoMAQUbmV3QWRkaXRpb25hbEJhbGFuY2UJAGQCBRhjdXJyZW50QWRkaXRpb25hbEJhbGFuY2UFBmFtb3VudAQWbmV3U3Rha2luZ0Fzc2V0QmFsYW5jZQkAZAIFGmN1cnJlbnRTdGFraW5nQXNzZXRCYWxhbmNlBRRyZWNlaXZlZFN0YWtpbmdBc3NldAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFGtleUFkZGl0aW9uYWxCYWxhbmNlAQUHYXNzZXRJZAUUbmV3QWRkaXRpb25hbEJhbGFuY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlTdGFraW5nQXNzZXRCYWxhbmNlAQUOc3Rha2luZ0Fzc2V0SWQFFm5ld1N0YWtpbmdBc3NldEJhbGFuY2UFA25pbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BCHdpdGhkcmF3Bgdhc3NldElkBmFtb3VudA5zdGFraW5nQXNzZXRJZAVwcm94eQxwcm94eVJhdGVNdWwNcHJvZml0QWRkcmVzcwQYY3VycmVudEFkZGl0aW9uYWxCYWxhbmNlCQEUZ2V0QWRkaXRpb25hbEJhbGFuY2UBBQdhc3NldElkAwkAAAIFGGN1cnJlbnRBZGRpdGlvbmFsQmFsYW5jZQUYY3VycmVudEFkZGl0aW9uYWxCYWxhbmNlBBpjdXJyZW50U3Rha2luZ0Fzc2V0QmFsYW5jZQkBFmdldFN0YWtpbmdBc3NldEJhbGFuY2UBBQ5zdGFraW5nQXNzZXRJZAMJAAACBRpjdXJyZW50U3Rha2luZ0Fzc2V0QmFsYW5jZQUaY3VycmVudFN0YWtpbmdBc3NldEJhbGFuY2UEEGN1cnJlbnRQcm94eVJhdGUJAQdnZXRSYXRlAQUFcHJveHkDCQAAAgUQY3VycmVudFByb3h5UmF0ZQUQY3VycmVudFByb3h5UmF0ZQQHb2xkUmF0ZQkAawMFDHByb3h5UmF0ZU11bAUYY3VycmVudEFkZGl0aW9uYWxCYWxhbmNlBRpjdXJyZW50U3Rha2luZ0Fzc2V0QmFsYW5jZQQMc3Rha2luZ0Fzc2V0CQEMcGFyc2VBc3NldElkAQUOc3Rha2luZ0Fzc2V0SWQEFG9sZFNlbmRTdGFraW5nQW1vdW50CQBrAwUMcHJveHlSYXRlTXVsBQZhbW91bnQFB29sZFJhdGUEFnNlbmRTdGFraW5nQXNzZXRBbW91bnQJAGsDBQxwcm94eVJhdGVNdWwFBmFtb3VudAUQY3VycmVudFByb3h5UmF0ZQQMcHJvZml0QW1vdW50CQCWAwEJAMwIAgAACQDMCAIJAGUCBRRvbGRTZW5kU3Rha2luZ0Ftb3VudAUWc2VuZFN0YWtpbmdBc3NldEFtb3VudAUDbmlsAwkAZgIFFnNlbmRTdGFraW5nQXNzZXRBbW91bnQAAAQOd2l0aGRyYXdJbnZva2UJAPwHBAUFcHJveHkCCHdpdGhkcmF3BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFDHN0YWtpbmdBc3NldAUWc2VuZFN0YWtpbmdBc3NldEFtb3VudAUDbmlsAwkAAAIFDndpdGhkcmF3SW52b2tlBQ53aXRoZHJhd0ludm9rZQQHJG1hdGNoMAUOd2l0aGRyYXdJbnZva2UDCQABAgUHJG1hdGNoMAIDSW50BA5yZWNlaXZlZEFzc2V0cwUHJG1hdGNoMAQUbmV3QWRkaXRpb25hbEJhbGFuY2UJAGUCBRhjdXJyZW50QWRkaXRpb25hbEJhbGFuY2UFDnJlY2VpdmVkQXNzZXRzBBZuZXdTdGFraW5nQXNzZXRCYWxhbmNlCQBlAgkAZQIFGmN1cnJlbnRTdGFraW5nQXNzZXRCYWxhbmNlBRZzZW5kU3Rha2luZ0Fzc2V0QW1vdW50BQxwcm9maXRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJARRrZXlBZGRpdGlvbmFsQmFsYW5jZQEFB2Fzc2V0SWQFFG5ld0FkZGl0aW9uYWxCYWxhbmNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5U3Rha2luZ0Fzc2V0QmFsYW5jZQEFDnN0YWtpbmdBc3NldElkBRZuZXdTdGFraW5nQXNzZXRCYWxhbmNlBQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARFyZWJhbGFuY2VJbnRlcm5hbAcLdGFyZ2V0UmF0aW8HYXNzZXRJZA5zdGFraW5nQXNzZXRJZAptaW5CYWxhbmNlBXByb3h5DHByb3h5UmF0ZU11bA1wcm9maXRBZGRyZXNzBBhjdXJyZW50QWRkaXRpb25hbEJhbGFuY2UJARRnZXRBZGRpdGlvbmFsQmFsYW5jZQEFB2Fzc2V0SWQDCQAAAgUYY3VycmVudEFkZGl0aW9uYWxCYWxhbmNlBRhjdXJyZW50QWRkaXRpb25hbEJhbGFuY2UEGmN1cnJlbnRTdGFraW5nQXNzZXRCYWxhbmNlCQEWZ2V0U3Rha2luZ0Fzc2V0QmFsYW5jZQEFDnN0YWtpbmdBc3NldElkAwkAAAIFGmN1cnJlbnRTdGFraW5nQXNzZXRCYWxhbmNlBRpjdXJyZW50U3Rha2luZ0Fzc2V0QmFsYW5jZQQQYXZhaWxhYmxlQmFsYW5jZQMJAAACBQdhc3NldElkAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQdhc3NldElkAwkAAAIFEGF2YWlsYWJsZUJhbGFuY2UFEGF2YWlsYWJsZUJhbGFuY2UEDHdob2xlQmFsYW5jZQkAlgMBCQDMCAIAAAkAzAgCCQBlAgkAZAIFEGF2YWlsYWJsZUJhbGFuY2UFGGN1cnJlbnRBZGRpdGlvbmFsQmFsYW5jZQUKbWluQmFsYW5jZQUDbmlsBBd0YXJnZXRBZGRpdGlvbmFsQmFsYW5jZQkAawMFC3RhcmdldFJhdGlvBQx3aG9sZUJhbGFuY2UAZAQEZGlmZgkAZQIFGGN1cnJlbnRBZGRpdGlvbmFsQmFsYW5jZQUXdGFyZ2V0QWRkaXRpb25hbEJhbGFuY2UDCQAAAgUEZGlmZgAABQNuaWwDCQBmAgAABQRkaWZmBA9zZW5kQXNzZXRBbW91bnQJAQEtAQUEZGlmZgkBB2RlcG9zaXQEBQdhc3NldElkBQ9zZW5kQXNzZXRBbW91bnQFDnN0YWtpbmdBc3NldElkBQVwcm94eQQOZ2V0QXNzZXRBbW91bnQFBGRpZmYJAQh3aXRoZHJhdwYFB2Fzc2V0SWQFDmdldEFzc2V0QW1vdW50BQ5zdGFraW5nQXNzZXRJZAUFcHJveHkFDHByb3h5UmF0ZU11bAUNcHJvZml0QWRkcmVzcwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEOcmViYWxhbmNlQXNzZXQBB2Fzc2V0SWQEByRtYXRjaDAJARNnZXRMZWFzZVByb3h5Q29uZmlnAQUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAjAoQm9vbGVhbiwgSW50LCBJbnQsIFN0cmluZywgU3RyaW5nLCBJbnQsIFN0cmluZykEAWEFByRtYXRjaDAECyR0MDQ3OTU0OTA0BQFhBAppc0xlYXNhYmxlCAULJHQwNDc5NTQ5MDQCXzEEC2xlYXNlZFJhdGlvCAULJHQwNDc5NTQ5MDQCXzIECm1pbkJhbGFuY2UIBQskdDA0Nzk1NDkwNAJfMwQMcHJveHlBZGRyZXNzCAULJHQwNDc5NTQ5MDQCXzQEDHByb3h5QXNzZXRJZAgFCyR0MDQ3OTU0OTA0Al81BAxwcm94eVJhdGVNdWwIBQskdDA0Nzk1NDkwNAJfNgQUc3Rha2luZ1Byb2ZpdEFkZHJlc3MIBQskdDA0Nzk1NDkwNAJfNwMFCmlzTGVhc2FibGUJARFyZWJhbGFuY2VJbnRlcm5hbAcFC2xlYXNlZFJhdGlvBQdhc3NldElkBQxwcm94eUFzc2V0SWQFCm1pbkJhbGFuY2UJARFAZXh0ck5hdGl2ZSgxMDYyKQEFDHByb3h5QWRkcmVzcwUMcHJveHlSYXRlTXVsCQERQGV4dHJOYXRpdmUoMTA2MikBBRRzdGFraW5nUHJvZml0QWRkcmVzcwUDbmlsCQEKdGhyb3dFcnJvcgEJAKwCAgkArAICAgFbBQdhc3NldElkAhFdIFJlYmFsYW5jZSBlcnJvcgEPcmViYWxhbmNlQXNzZXQyAgdhc3NldElkBXJhdGlvBAckbWF0Y2gwCQETZ2V0TGVhc2VQcm94eUNvbmZpZwEFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIwKEJvb2xlYW4sIEludCwgSW50LCBTdHJpbmcsIFN0cmluZywgSW50LCBTdHJpbmcpBAFhBQckbWF0Y2gwBAskdDA1MzgwNTQ4OQUBYQQKaXNMZWFzYWJsZQgFCyR0MDUzODA1NDg5Al8xBAtsZWFzZWRSYXRpbwgFCyR0MDUzODA1NDg5Al8yBAptaW5CYWxhbmNlCAULJHQwNTM4MDU0ODkCXzMEDHByb3h5QWRkcmVzcwgFCyR0MDUzODA1NDg5Al80BAxwcm94eUFzc2V0SWQIBQskdDA1MzgwNTQ4OQJfNQQMcHJveHlSYXRlTXVsCAULJHQwNTM4MDU0ODkCXzYEFHN0YWtpbmdQcm9maXRBZGRyZXNzCAULJHQwNTM4MDU0ODkCXzcDBQppc0xlYXNhYmxlCQERcmViYWxhbmNlSW50ZXJuYWwHBQVyYXRpbwUHYXNzZXRJZAUMcHJveHlBc3NldElkBQptaW5CYWxhbmNlCQERQGV4dHJOYXRpdmUoMTA2MikBBQxwcm94eUFkZHJlc3MFDHByb3h5UmF0ZU11bAkBEUBleHRyTmF0aXZlKDEwNjIpAQUUc3Rha2luZ1Byb2ZpdEFkZHJlc3MFA25pbAkBCnRocm93RXJyb3IBCQCsAgIJAKwCAgIBWwUHYXNzZXRJZAIRXSBSZWJhbGFuY2UgZXJyb3ICAWkBCXJlYmFsYW5jZQAJAQ5yZWJhbGFuY2VBc3NldAECBVdBVkVTAWkBCnJlYmFsYW5jZTIBBXJhdGlvCQEPcmViYWxhbmNlQXNzZXQyAgIFV0FWRVMFBXJhdGlvADLFBJ4=", "height": 2519525, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: ATWBUALNB8NX7CB4WWbq32im7GoaRPNNJPrsrXm78aHG Next: C4pidBn2THUPQiWpVEDVqT7iWH8MAHcaxCrk9jYPPg7n Diff:
OldNewDifferences
3737 let inv = invoke(proxy, "getRate", nil, nil)
3838 if ((inv == inv))
3939 then match inv {
40- case s: String =>
41- parseIntValue(s)
40+ case s: Int =>
41+ s
4242 case _ =>
43- throwError("getRate() returned zero")
43+ throwError("getRate() unexpected type")
4444 }
4545 else throw("Strict value is not equal to itself.")
4646 }
159159
160160 func rebalanceAsset (assetId) = match getLeaseProxyConfig(assetId) {
161161 case a: (Boolean, Int, Int, String, String, Int, String) =>
162- let $t048124921 = a
163- let isLeasable = $t048124921._1
164- let leasedRatio = $t048124921._2
165- let minBalance = $t048124921._3
166- let proxyAddress = $t048124921._4
167- let proxyAssetId = $t048124921._5
168- let proxyRateMul = $t048124921._6
169- let stakingProfitAddress = $t048124921._7
162+ let $t047954904 = a
163+ let isLeasable = $t047954904._1
164+ let leasedRatio = $t047954904._2
165+ let minBalance = $t047954904._3
166+ let proxyAddress = $t047954904._4
167+ let proxyAssetId = $t047954904._5
168+ let proxyRateMul = $t047954904._6
169+ let stakingProfitAddress = $t047954904._7
170170 if (isLeasable)
171171 then rebalanceInternal(leasedRatio, assetId, proxyAssetId, minBalance, addressFromStringValue(proxyAddress), proxyRateMul, addressFromStringValue(stakingProfitAddress))
172172 else nil
177177
178178 func rebalanceAsset2 (assetId,ratio) = match getLeaseProxyConfig(assetId) {
179179 case a: (Boolean, Int, Int, String, String, Int, String) =>
180- let $t053975506 = a
181- let isLeasable = $t053975506._1
182- let leasedRatio = $t053975506._2
183- let minBalance = $t053975506._3
184- let proxyAddress = $t053975506._4
185- let proxyAssetId = $t053975506._5
186- let proxyRateMul = $t053975506._6
187- let stakingProfitAddress = $t053975506._7
180+ let $t053805489 = a
181+ let isLeasable = $t053805489._1
182+ let leasedRatio = $t053805489._2
183+ let minBalance = $t053805489._3
184+ let proxyAddress = $t053805489._4
185+ let proxyAssetId = $t053805489._5
186+ let proxyRateMul = $t053805489._6
187+ let stakingProfitAddress = $t053805489._7
188188 if (isLeasable)
189189 then rebalanceInternal(ratio, assetId, proxyAssetId, minBalance, addressFromStringValue(proxyAddress), proxyRateMul, addressFromStringValue(stakingProfitAddress))
190190 else nil
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let SEP = "__"
55
66 let contractFile = "rebalance.ride"
77
88 let keyFactoryAddress = "%s__factory"
99
1010 func keyAdditionalBalance (assetId) = makeString(["%s%s", "additionalBalance", assetId], SEP)
1111
1212
1313 func keyInternalAdditionalBalance (assetId) = makeString(["%s%s", "internalAdditionalBalance", assetId], SEP)
1414
1515
1616 func keyStakingAssetBalance (assetId) = makeString(["%s%s", "stakingAssetBalance", assetId], SEP)
1717
1818
1919 func getAdditionalBalance (assetId) = valueOrElse(getInteger(this, keyAdditionalBalance(assetId)), 0)
2020
2121
2222 func getInternalAdditionalBalance (assetId) = valueOrElse(getInteger(this, keyInternalAdditionalBalance(assetId)), 0)
2323
2424
2525 func getStakingAssetBalance (assetId) = valueOrElse(getInteger(this, keyStakingAssetBalance(assetId)), 0)
2626
2727
2828 func throwError (errorMsg) = throw(((contractFile + ": ") + errorMsg))
2929
3030
3131 func parseAssetId (input) = if ((input == "WAVES"))
3232 then unit
3333 else fromBase58String(input)
3434
3535
3636 func getRate (proxy) = {
3737 let inv = invoke(proxy, "getRate", nil, nil)
3838 if ((inv == inv))
3939 then match inv {
40- case s: String =>
41- parseIntValue(s)
40+ case s: Int =>
41+ s
4242 case _ =>
43- throwError("getRate() returned zero")
43+ throwError("getRate() unexpected type")
4444 }
4545 else throw("Strict value is not equal to itself.")
4646 }
4747
4848
4949 func getLeaseProxyConfig (assetId) = {
5050 let factory = addressFromStringValue(valueOrElse(getString(keyFactoryAddress), ""))
5151 let myAddressString = toString(this)
5252 invoke(factory, "getPoolLeaseConfigREADONLY", [myAddressString, assetId], nil)
5353 }
5454
5555
5656 func deposit (assetId,amount,stakingAssetId,proxy) = {
5757 let currentAdditionalBalance = getAdditionalBalance(assetId)
5858 if ((currentAdditionalBalance == currentAdditionalBalance))
5959 then {
6060 let currentStakingAssetBalance = getStakingAssetBalance(stakingAssetId)
6161 if ((currentStakingAssetBalance == currentStakingAssetBalance))
6262 then {
6363 let asset = parseAssetId(assetId)
6464 if ((amount > 0))
6565 then {
6666 let depositInvoke = invoke(proxy, "deposit", nil, [AttachedPayment(asset, amount)])
6767 if ((depositInvoke == depositInvoke))
6868 then match depositInvoke {
6969 case receivedStakingAsset: Int =>
7070 let newAdditionalBalance = (currentAdditionalBalance + amount)
7171 let newStakingAssetBalance = (currentStakingAssetBalance + receivedStakingAsset)
7272 [IntegerEntry(keyAdditionalBalance(assetId), newAdditionalBalance), IntegerEntry(keyStakingAssetBalance(stakingAssetId), newStakingAssetBalance)]
7373 case _ =>
7474 nil
7575 }
7676 else throw("Strict value is not equal to itself.")
7777 }
7878 else nil
7979 }
8080 else throw("Strict value is not equal to itself.")
8181 }
8282 else throw("Strict value is not equal to itself.")
8383 }
8484
8585
8686 func withdraw (assetId,amount,stakingAssetId,proxy,proxyRateMul,profitAddress) = {
8787 let currentAdditionalBalance = getAdditionalBalance(assetId)
8888 if ((currentAdditionalBalance == currentAdditionalBalance))
8989 then {
9090 let currentStakingAssetBalance = getStakingAssetBalance(stakingAssetId)
9191 if ((currentStakingAssetBalance == currentStakingAssetBalance))
9292 then {
9393 let currentProxyRate = getRate(proxy)
9494 if ((currentProxyRate == currentProxyRate))
9595 then {
9696 let oldRate = fraction(proxyRateMul, currentAdditionalBalance, currentStakingAssetBalance)
9797 let stakingAsset = parseAssetId(stakingAssetId)
9898 let oldSendStakingAmount = fraction(proxyRateMul, amount, oldRate)
9999 let sendStakingAssetAmount = fraction(proxyRateMul, amount, currentProxyRate)
100100 let profitAmount = max([0, (oldSendStakingAmount - sendStakingAssetAmount)])
101101 if ((sendStakingAssetAmount > 0))
102102 then {
103103 let withdrawInvoke = invoke(proxy, "withdraw", nil, [AttachedPayment(stakingAsset, sendStakingAssetAmount)])
104104 if ((withdrawInvoke == withdrawInvoke))
105105 then match withdrawInvoke {
106106 case receivedAssets: Int =>
107107 let newAdditionalBalance = (currentAdditionalBalance - receivedAssets)
108108 let newStakingAssetBalance = ((currentStakingAssetBalance - sendStakingAssetAmount) - profitAmount)
109109 [IntegerEntry(keyAdditionalBalance(assetId), newAdditionalBalance), IntegerEntry(keyStakingAssetBalance(stakingAssetId), newStakingAssetBalance)]
110110 case _ =>
111111 nil
112112 }
113113 else throw("Strict value is not equal to itself.")
114114 }
115115 else nil
116116 }
117117 else throw("Strict value is not equal to itself.")
118118 }
119119 else throw("Strict value is not equal to itself.")
120120 }
121121 else throw("Strict value is not equal to itself.")
122122 }
123123
124124
125125 func rebalanceInternal (targetRatio,assetId,stakingAssetId,minBalance,proxy,proxyRateMul,profitAddress) = {
126126 let currentAdditionalBalance = getAdditionalBalance(assetId)
127127 if ((currentAdditionalBalance == currentAdditionalBalance))
128128 then {
129129 let currentStakingAssetBalance = getStakingAssetBalance(stakingAssetId)
130130 if ((currentStakingAssetBalance == currentStakingAssetBalance))
131131 then {
132132 let availableBalance = if ((assetId == "WAVES"))
133133 then wavesBalance(this).available
134134 else assetBalance(this, fromBase58String(assetId))
135135 if ((availableBalance == availableBalance))
136136 then {
137137 let wholeBalance = max([0, ((availableBalance + currentAdditionalBalance) - minBalance)])
138138 let targetAdditionalBalance = fraction(targetRatio, wholeBalance, 100)
139139 let diff = (currentAdditionalBalance - targetAdditionalBalance)
140140 if ((diff == 0))
141141 then nil
142142 else if ((0 > diff))
143143 then {
144144 let sendAssetAmount = -(diff)
145145 deposit(assetId, sendAssetAmount, stakingAssetId, proxy)
146146 }
147147 else {
148148 let getAssetAmount = diff
149149 withdraw(assetId, getAssetAmount, stakingAssetId, proxy, proxyRateMul, profitAddress)
150150 }
151151 }
152152 else throw("Strict value is not equal to itself.")
153153 }
154154 else throw("Strict value is not equal to itself.")
155155 }
156156 else throw("Strict value is not equal to itself.")
157157 }
158158
159159
160160 func rebalanceAsset (assetId) = match getLeaseProxyConfig(assetId) {
161161 case a: (Boolean, Int, Int, String, String, Int, String) =>
162- let $t048124921 = a
163- let isLeasable = $t048124921._1
164- let leasedRatio = $t048124921._2
165- let minBalance = $t048124921._3
166- let proxyAddress = $t048124921._4
167- let proxyAssetId = $t048124921._5
168- let proxyRateMul = $t048124921._6
169- let stakingProfitAddress = $t048124921._7
162+ let $t047954904 = a
163+ let isLeasable = $t047954904._1
164+ let leasedRatio = $t047954904._2
165+ let minBalance = $t047954904._3
166+ let proxyAddress = $t047954904._4
167+ let proxyAssetId = $t047954904._5
168+ let proxyRateMul = $t047954904._6
169+ let stakingProfitAddress = $t047954904._7
170170 if (isLeasable)
171171 then rebalanceInternal(leasedRatio, assetId, proxyAssetId, minBalance, addressFromStringValue(proxyAddress), proxyRateMul, addressFromStringValue(stakingProfitAddress))
172172 else nil
173173 case _ =>
174174 throwError((("[" + assetId) + "] Rebalance error"))
175175 }
176176
177177
178178 func rebalanceAsset2 (assetId,ratio) = match getLeaseProxyConfig(assetId) {
179179 case a: (Boolean, Int, Int, String, String, Int, String) =>
180- let $t053975506 = a
181- let isLeasable = $t053975506._1
182- let leasedRatio = $t053975506._2
183- let minBalance = $t053975506._3
184- let proxyAddress = $t053975506._4
185- let proxyAssetId = $t053975506._5
186- let proxyRateMul = $t053975506._6
187- let stakingProfitAddress = $t053975506._7
180+ let $t053805489 = a
181+ let isLeasable = $t053805489._1
182+ let leasedRatio = $t053805489._2
183+ let minBalance = $t053805489._3
184+ let proxyAddress = $t053805489._4
185+ let proxyAssetId = $t053805489._5
186+ let proxyRateMul = $t053805489._6
187+ let stakingProfitAddress = $t053805489._7
188188 if (isLeasable)
189189 then rebalanceInternal(ratio, assetId, proxyAssetId, minBalance, addressFromStringValue(proxyAddress), proxyRateMul, addressFromStringValue(stakingProfitAddress))
190190 else nil
191191 case _ =>
192192 throwError((("[" + assetId) + "] Rebalance error"))
193193 }
194194
195195
196196 @Callable(i)
197197 func rebalance () = rebalanceAsset("WAVES")
198198
199199
200200
201201 @Callable(i)
202202 func rebalance2 (ratio) = rebalanceAsset2("WAVES", ratio)
203203
204204

github/deemru/w8io/873ac7e 
52.06 ms