tx · 8vn7jQm3xrr5emPUkFcVhBFSghRNd1VwaTFoh145uxMB

3NCWFHDzdPHZC6636ZkMLNDup9mjpbTLs7h:  -0.05000000 Waves

2023.03.28 14:00 [2509724] smart account 3NCWFHDzdPHZC6636ZkMLNDup9mjpbTLs7h > SELF 0.00000000 Waves

{ "type": 13, "id": "8vn7jQm3xrr5emPUkFcVhBFSghRNd1VwaTFoh145uxMB", "fee": 5000000, "feeAssetId": null, "timestamp": 1680001278221, "version": 2, "chainId": 84, "sender": "3NCWFHDzdPHZC6636ZkMLNDup9mjpbTLs7h", "senderPublicKey": "3z8Q6Zu3KppVmn6fJJvrLc1Wo3krVHSvfaNcerm82md2", "proofs": [ "35RdgFnvDh4jkR2DDXywVf9b6jDhcvJwADjSzu9Eevx4xJpQvj73t5XeP9rD9XJB6H3a7KLkcfNAHiKsk9EQcTBT" ], "script": "base64:BgIQCAISABIFCgMBAQESAwoBAQ4ADGNvbnRyYWN0RmlsZQIJcmViYWxhbmNlAA9rZXlzVGFyZ2V0UmF0aW8CDyVzX190YXJnZXRSYXRpbwAUa2V5QWRkaXRpb25hbEJhbGFuY2UCGiVzX19hZGRpdGlvbmFsV2F2ZXNCYWxhbmNlABprZXlTV2F2ZXNBZGRpdGlvbmFsQmFsYW5jZQIRJXNfX3NXYXZlc0JhbGFuY2UAEGtleVNXYXZlc0Fzc2V0SWQCESVzX19zV2F2ZXNBc3NldElkAA9rZXlQcm94eUFkZHJlc3MCECVzX19wcm94eUFkZHJlc3MBEGdldEludGVnZXJPclplcm8BCmludGVnZXJLZXkEByRtYXRjaDAJAJoIAgUEdGhpcwUKaW50ZWdlcktleQMJAAECBQckbWF0Y2gwAgNJbnQEA3ZhbAUHJG1hdGNoMAUDdmFsAAABEGdldFN0cmluZ09yVGhyb3cBCXN0cmluZ0tleQQHJG1hdGNoMAkAnQgCBQR0aGlzBQlzdHJpbmdLZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQkArAICCQCsAgICAVsFCXN0cmluZ0tleQIKXSBpcyBlbXB0eQEOZ2V0VGFyZ2V0UmF0aW8ABAckbWF0Y2gwCQCfCAEFD2tleXNUYXJnZXRSYXRpbwMJAAECBQckbWF0Y2gwAgNJbnQEAXMFByRtYXRjaDAFAXMAUAEUaW50ZXJuYWxXYXZlc0JhbGFuY2UACQBkAggJAO8HAQUEdGhpcwdyZWd1bGFyCQEQZ2V0SW50ZWdlck9yWmVybwEFFGtleUFkZGl0aW9uYWxCYWxhbmNlAQxpbnRlcm5hbFJhdGUABBFhZGRpdGlvbmFsQmFsYW5jZQkBEGdldEludGVnZXJPclplcm8BBRRrZXlBZGRpdGlvbmFsQmFsYW5jZQQNc1dhdmVzQmFsYW5jZQkBEGdldEludGVnZXJPclplcm8BBRprZXlTV2F2ZXNBZGRpdGlvbmFsQmFsYW5jZQMJAAACBRFhZGRpdGlvbmFsQmFsYW5jZQAAAAAJAGsDAIDQ28P0AgURYWRkaXRpb25hbEJhbGFuY2UFDXNXYXZlc0JhbGFuY2UBB2dldFJhdGUABAVwcm94eQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEGdldFN0cmluZ09yVGhyb3cBBQ9rZXlQcm94eUFkZHJlc3MEA2ludgkA/AcEBQVwcm94eQIHZ2V0UmF0ZQUDbmlsBQNuaWwDCQAAAgUDaW52BQNpbnYEByRtYXRjaDAFA2ludgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAQ1wYXJzZUludFZhbHVlAQUBcwkAAgECCVpFUk8gcmF0ZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEHZGVwb3NpdAELd2F2ZXNBbW91bnQEBXByb3h5CQERQGV4dHJOYXRpdmUoMTA2MikBCQEQZ2V0U3RyaW5nT3JUaHJvdwEFD2tleVByb3h5QWRkcmVzcwQYY3VycmVudEFkZGl0aW9uYWxCYWxhbmNlCQEQZ2V0SW50ZWdlck9yWmVybwEFFGtleUFkZGl0aW9uYWxCYWxhbmNlAwkAAAIFGGN1cnJlbnRBZGRpdGlvbmFsQmFsYW5jZQUYY3VycmVudEFkZGl0aW9uYWxCYWxhbmNlBBRjdXJyZW50U1dhdmVzQmFsYW5jZQkBEGdldEludGVnZXJPclplcm8BBRprZXlTV2F2ZXNBZGRpdGlvbmFsQmFsYW5jZQMJAAACBRRjdXJyZW50U1dhdmVzQmFsYW5jZQUUY3VycmVudFNXYXZlc0JhbGFuY2UDCQBmAgULd2F2ZXNBbW91bnQAAAQNZGVwb3NpdEludm9rZQkA/AcEBQVwcm94eQIHZGVwb3NpdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQR1bml0BQt3YXZlc0Ftb3VudAUDbmlsAwkAAAIFDWRlcG9zaXRJbnZva2UFDWRlcG9zaXRJbnZva2UEByRtYXRjaDAFDWRlcG9zaXRJbnZva2UDCQABAgUHJG1hdGNoMAIDSW50BA5yZWNlaXZlZFNXYXZlcwUHJG1hdGNoMAQUbmV3QWRkaXRpb25hbEJhbGFuY2UJAGQCBRhjdXJyZW50QWRkaXRpb25hbEJhbGFuY2UFC3dhdmVzQW1vdW50BBBuZXdTV2F2ZXNCYWxhbmNlCQBkAgUUY3VycmVudFNXYXZlc0JhbGFuY2UFDnJlY2VpdmVkU1dhdmVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRRrZXlBZGRpdGlvbmFsQmFsYW5jZQUUbmV3QWRkaXRpb25hbEJhbGFuY2UJAMwIAgkBDEludGVnZXJFbnRyeQIFGmtleVNXYXZlc0FkZGl0aW9uYWxCYWxhbmNlBRBuZXdTV2F2ZXNCYWxhbmNlBQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQh3aXRoZHJhdwELd2F2ZXNBbW91bnQEBXByb3h5CQERQGV4dHJOYXRpdmUoMTA2MikBCQEQZ2V0U3RyaW5nT3JUaHJvdwEFD2tleVByb3h5QWRkcmVzcwQIc1dhdmVzSWQJANkEAQkBEGdldFN0cmluZ09yVGhyb3cBBRBrZXlTV2F2ZXNBc3NldElkAwkAAAIFCHNXYXZlc0lkBQhzV2F2ZXNJZAQYY3VycmVudEFkZGl0aW9uYWxCYWxhbmNlCQEQZ2V0SW50ZWdlck9yWmVybwEFFGtleUFkZGl0aW9uYWxCYWxhbmNlAwkAAAIFGGN1cnJlbnRBZGRpdGlvbmFsQmFsYW5jZQUYY3VycmVudEFkZGl0aW9uYWxCYWxhbmNlBBRjdXJyZW50U1dhdmVzQmFsYW5jZQkBEGdldEludGVnZXJPclplcm8BBRprZXlTV2F2ZXNBZGRpdGlvbmFsQmFsYW5jZQMJAAACBRRjdXJyZW50U1dhdmVzQmFsYW5jZQUUY3VycmVudFNXYXZlc0JhbGFuY2UEEGN1cnJlbnRQcm94eVJhdGUJAQdnZXRSYXRlAAMJAAACBRBjdXJyZW50UHJveHlSYXRlBRBjdXJyZW50UHJveHlSYXRlBBBzZW5kU1dhdmVzQW1vdW50CQBrAwCAoJSljR0FC3dhdmVzQW1vdW50BRBjdXJyZW50UHJveHlSYXRlAwkAZgIFEHNlbmRTV2F2ZXNBbW91bnQAAAQNZGVwb3NpdEludm9rZQkA/AcEBQVwcm94eQIId2l0aGRyYXcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUIc1dhdmVzSWQFEHNlbmRTV2F2ZXNBbW91bnQFA25pbAMJAAACBQ1kZXBvc2l0SW52b2tlBQ1kZXBvc2l0SW52b2tlBAckbWF0Y2gwBQ1kZXBvc2l0SW52b2tlAwkAAQIFByRtYXRjaDACA0ludAQNcmVjZWl2ZWRXYXZlcwUHJG1hdGNoMAQUbmV3QWRkaXRpb25hbEJhbGFuY2UJAGUCBRhjdXJyZW50QWRkaXRpb25hbEJhbGFuY2UFDXJlY2VpdmVkV2F2ZXMEEG5ld1NXYXZlc0JhbGFuY2UJAGUCBRRjdXJyZW50U1dhdmVzQmFsYW5jZQUQc2VuZFNXYXZlc0Ftb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUUa2V5QWRkaXRpb25hbEJhbGFuY2UFFG5ld0FkZGl0aW9uYWxCYWxhbmNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRprZXlTV2F2ZXNBZGRpdGlvbmFsQmFsYW5jZQUQbmV3U1dhdmVzQmFsYW5jZQUDbmlsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMBaQEJY2FsY1JhdGlvAAQTcmVndWxhcldhdmVzQmFsYW5jZQgJAO8HAQUEdGhpcwdyZWd1bGFyBAphZGRpdGlvbmFsCQEQZ2V0SW50ZWdlck9yWmVybwEFFGtleUFkZGl0aW9uYWxCYWxhbmNlBAVyYXRpbwkAawMAZAUKYWRkaXRpb25hbAkAZAIFCmFkZGl0aW9uYWwFE3JlZ3VsYXJXYXZlc0JhbGFuY2UJAJQKAgUDbmlsBQVyYXRpbwFpAQ1jYWxjUmF0aW9UZXN0Aw5yZWd1bGFyQmFsYW5jZQphZGRpdGlvbmFsC3RhcmdldFJhdGlvBANzdW0JAGQCBQ5yZWd1bGFyQmFsYW5jZQUKYWRkaXRpb25hbAQXdGFyZ2V0QWRkaXRpb25hbEJhbGFuY2UJAGsDBQt0YXJnZXRSYXRpbwUDc3VtAGQEBmNoYW5nZQkAZQIFCmFkZGl0aW9uYWwFF3RhcmdldEFkZGl0aW9uYWxCYWxhbmNlBAZuZXdSZWcJAGQCBQ5yZWd1bGFyQmFsYW5jZQUGY2hhbmdlAwkAZgIAAAUGY2hhbmdlBApzZW5kQW1vdW50CQBoAgUGY2hhbmdlAP///////////wEJAJQKAgUDbmlsCQDMCAIFBm5ld1JlZwkAzAgCBRd0YXJnZXRBZGRpdGlvbmFsQmFsYW5jZQkAzAgCBQZjaGFuZ2UJAMwIAgkArAICAglkZXBvc2l0OiAJAKQDAQUKc2VuZEFtb3VudAUDbmlsBApzZW5kQW1vdW50BQZjaGFuZ2UJAJQKAgUDbmlsCQDMCAIFBm5ld1JlZwkAzAgCBRd0YXJnZXRBZGRpdGlvbmFsQmFsYW5jZQkAzAgCBQZjaGFuZ2UJAMwIAgkArAICAgp3aXRoZHJhdzogCQCkAwEFCnNlbmRBbW91bnQFA25pbAFpAQ5yZWJhbGFuY2VSYXRpbwELdGFyZ2V0UmF0aW8EDnJlZ3VsYXJCYWxhbmNlCAkA7wcBBQR0aGlzB3JlZ3VsYXIDCQAAAgUOcmVndWxhckJhbGFuY2UFDnJlZ3VsYXJCYWxhbmNlBBFhZGRpdGlvbmFsQmFsYW5jZQkBEGdldEludGVnZXJPclplcm8BBRRrZXlBZGRpdGlvbmFsQmFsYW5jZQMJAAACBRFhZGRpdGlvbmFsQmFsYW5jZQURYWRkaXRpb25hbEJhbGFuY2UEDXdob2xlQmxhbGFuY2UJAGQCBQ5yZWd1bGFyQmFsYW5jZQURYWRkaXRpb25hbEJhbGFuY2UEF3RhcmdldEFkZGl0aW9uYWxCYWxhbmNlCQBrAwULdGFyZ2V0UmF0aW8FDXdob2xlQmxhbGFuY2UAZAQGY2hhbmdlCQBlAgURYWRkaXRpb25hbEJhbGFuY2UFF3RhcmdldEFkZGl0aW9uYWxCYWxhbmNlBAZuZXdSZWcJAGQCBQ5yZWd1bGFyQmFsYW5jZQUGY2hhbmdlAwkAAAIFBmNoYW5nZQAABQNuaWwDCQBmAgAABQZjaGFuZ2UED3NlbmRXYXZlc0Ftb3VudAkAaAIFBmNoYW5nZQD///////////8BCQEHZGVwb3NpdAEFD3NlbmRXYXZlc0Ftb3VudAQOZ2V0V2F2ZXNBbW91bnQFBmNoYW5nZQkBCHdpdGhkcmF3AQUOZ2V0V2F2ZXNBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4Am9325A==", "height": 2509724, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 44fuU8CAFGwn9pdreeYxTFyZjNNnccaCtuD5AzgdAjR2 Next: A2saRMNi6Am5rvtqqKKFHBnS3rYLnNEtJS9CaAVKVhb2 Diff:
OldNewDifferences
7070 then {
7171 let currentSWavesBalance = getIntegerOrZero(keySWavesAdditionalBalance)
7272 if ((currentSWavesBalance == currentSWavesBalance))
73- then {
74- let depositInvoke = invoke(proxy, "deposit", nil, [AttachedPayment(unit, wavesAmount)])
75- if ((depositInvoke == depositInvoke))
76- then match depositInvoke {
77- case receivedSWaves: Int =>
78- let newAdditionalBalance = (currentAdditionalBalance + wavesAmount)
79- let newSWavesBalance = (currentSWavesBalance + receivedSWaves)
73+ then if ((wavesAmount > 0))
74+ then {
75+ let depositInvoke = invoke(proxy, "deposit", nil, [AttachedPayment(unit, wavesAmount)])
76+ if ((depositInvoke == depositInvoke))
77+ then match depositInvoke {
78+ case receivedSWaves: Int =>
79+ let newAdditionalBalance = (currentAdditionalBalance + wavesAmount)
80+ let newSWavesBalance = (currentSWavesBalance + receivedSWaves)
8081 [IntegerEntry(keyAdditionalBalance, newAdditionalBalance), IntegerEntry(keySWavesAdditionalBalance, newSWavesBalance)]
81- case _ =>
82- nil
82+ case _ =>
83+ nil
84+ }
85+ else throw("Strict value is not equal to itself.")
8386 }
84- else throw("Strict value is not equal to itself.")
85- }
87+ else nil
8688 else throw("Strict value is not equal to itself.")
8789 }
8890 else throw("Strict value is not equal to itself.")
104106 if ((currentProxyRate == currentProxyRate))
105107 then {
106108 let sendSWavesAmount = fraction(1000000000000, wavesAmount, currentProxyRate)
107- let depositInvoke = invoke(proxy, "withdraw", nil, [AttachedPayment(sWavesId, sendSWavesAmount)])
108- if ((depositInvoke == depositInvoke))
109- then match depositInvoke {
110- case receivedWaves: Int =>
111- let newAdditionalBalance = (currentAdditionalBalance - receivedWaves)
112- let newSWavesBalance = (currentSWavesBalance - sendSWavesAmount)
109+ if ((sendSWavesAmount > 0))
110+ then {
111+ let depositInvoke = invoke(proxy, "withdraw", nil, [AttachedPayment(sWavesId, sendSWavesAmount)])
112+ if ((depositInvoke == depositInvoke))
113+ then match depositInvoke {
114+ case receivedWaves: Int =>
115+ let newAdditionalBalance = (currentAdditionalBalance - receivedWaves)
116+ let newSWavesBalance = (currentSWavesBalance - sendSWavesAmount)
113117 [IntegerEntry(keyAdditionalBalance, newAdditionalBalance), IntegerEntry(keySWavesAdditionalBalance, newSWavesBalance)]
114- case _ =>
115- nil
116- }
117- else throw("Strict value is not equal to itself.")
118+ case _ =>
119+ nil
120+ }
121+ else throw("Strict value is not equal to itself.")
122+ }
123+ else nil
118124 }
119125 else throw("Strict value is not equal to itself.")
120126 }
124130 }
125131 else throw("Strict value is not equal to itself.")
126132 }
127-
128-
129-@Callable(i)
130-func returnWavesBalance () = $Tuple2(nil, internalWavesBalance())
131-
132-
133-
134-@Callable(i)
135-func returnSWavesBalance () = $Tuple2(nil, getIntegerOrZero(keySWavesAdditionalBalance))
136-
137133
138134
139135 @Callable(i)
161157 let sendAmount = change
162158 $Tuple2(nil, [newReg, targetAdditionalBalance, change, ("withdraw: " + toString(sendAmount))])
163159 }
164- }
165-
166-
167-
168-@Callable(i)
169-func rebalance () = {
170- let regularBalance = wavesBalance(this).regular
171- if ((regularBalance == regularBalance))
172- then {
173- let additionalBalance = getIntegerOrZero(keyAdditionalBalance)
174- if ((additionalBalance == additionalBalance))
175- then {
176- let targetRatio = getTargetRatio()
177- if ((targetRatio == targetRatio))
178- then {
179- let wholeBlalance = (regularBalance + additionalBalance)
180- let targetAdditionalBalance = fraction(targetRatio, wholeBlalance, 100)
181- let change = (additionalBalance - targetAdditionalBalance)
182- let newReg = (regularBalance + change)
183- if ((change == 0))
184- then nil
185- else if ((0 > change))
186- then {
187- let sendWavesAmount = (change * -1)
188- deposit(sendWavesAmount)
189- }
190- else {
191- let getWavesAmount = change
192- withdraw(getWavesAmount)
193- }
194- }
195- else throw("Strict value is not equal to itself.")
196- }
197- else throw("Strict value is not equal to itself.")
198- }
199- else throw("Strict value is not equal to itself.")
200160 }
201161
202162
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let contractFile = "rebalance"
55
66 let keysTargetRatio = "%s__targetRatio"
77
88 let keyAdditionalBalance = "%s__additionalWavesBalance"
99
1010 let keySWavesAdditionalBalance = "%s__sWavesBalance"
1111
1212 let keySWavesAssetId = "%s__sWavesAssetId"
1313
1414 let keyProxyAddress = "%s__proxyAddress"
1515
1616 func getIntegerOrZero (integerKey) = match getInteger(this, integerKey) {
1717 case val: Int =>
1818 val
1919 case _ =>
2020 0
2121 }
2222
2323
2424 func getStringOrThrow (stringKey) = match getString(this, stringKey) {
2525 case s: String =>
2626 s
2727 case _ =>
2828 throw((("[" + stringKey) + "] is empty"))
2929 }
3030
3131
3232 func getTargetRatio () = match getInteger(keysTargetRatio) {
3333 case s: Int =>
3434 s
3535 case _ =>
3636 80
3737 }
3838
3939
4040 func internalWavesBalance () = (wavesBalance(this).regular + getIntegerOrZero(keyAdditionalBalance))
4141
4242
4343 func internalRate () = {
4444 let additionalBalance = getIntegerOrZero(keyAdditionalBalance)
4545 let sWavesBalance = getIntegerOrZero(keySWavesAdditionalBalance)
4646 if ((additionalBalance == 0))
4747 then 0
4848 else fraction(100000000000, additionalBalance, sWavesBalance)
4949 }
5050
5151
5252 func getRate () = {
5353 let proxy = addressFromStringValue(getStringOrThrow(keyProxyAddress))
5454 let inv = invoke(proxy, "getRate", nil, nil)
5555 if ((inv == inv))
5656 then match inv {
5757 case s: String =>
5858 parseIntValue(s)
5959 case _ =>
6060 throw("ZERO rate")
6161 }
6262 else throw("Strict value is not equal to itself.")
6363 }
6464
6565
6666 func deposit (wavesAmount) = {
6767 let proxy = addressFromStringValue(getStringOrThrow(keyProxyAddress))
6868 let currentAdditionalBalance = getIntegerOrZero(keyAdditionalBalance)
6969 if ((currentAdditionalBalance == currentAdditionalBalance))
7070 then {
7171 let currentSWavesBalance = getIntegerOrZero(keySWavesAdditionalBalance)
7272 if ((currentSWavesBalance == currentSWavesBalance))
73- then {
74- let depositInvoke = invoke(proxy, "deposit", nil, [AttachedPayment(unit, wavesAmount)])
75- if ((depositInvoke == depositInvoke))
76- then match depositInvoke {
77- case receivedSWaves: Int =>
78- let newAdditionalBalance = (currentAdditionalBalance + wavesAmount)
79- let newSWavesBalance = (currentSWavesBalance + receivedSWaves)
73+ then if ((wavesAmount > 0))
74+ then {
75+ let depositInvoke = invoke(proxy, "deposit", nil, [AttachedPayment(unit, wavesAmount)])
76+ if ((depositInvoke == depositInvoke))
77+ then match depositInvoke {
78+ case receivedSWaves: Int =>
79+ let newAdditionalBalance = (currentAdditionalBalance + wavesAmount)
80+ let newSWavesBalance = (currentSWavesBalance + receivedSWaves)
8081 [IntegerEntry(keyAdditionalBalance, newAdditionalBalance), IntegerEntry(keySWavesAdditionalBalance, newSWavesBalance)]
81- case _ =>
82- nil
82+ case _ =>
83+ nil
84+ }
85+ else throw("Strict value is not equal to itself.")
8386 }
84- else throw("Strict value is not equal to itself.")
85- }
87+ else nil
8688 else throw("Strict value is not equal to itself.")
8789 }
8890 else throw("Strict value is not equal to itself.")
8991 }
9092
9193
9294 func withdraw (wavesAmount) = {
9395 let proxy = addressFromStringValue(getStringOrThrow(keyProxyAddress))
9496 let sWavesId = fromBase58String(getStringOrThrow(keySWavesAssetId))
9597 if ((sWavesId == sWavesId))
9698 then {
9799 let currentAdditionalBalance = getIntegerOrZero(keyAdditionalBalance)
98100 if ((currentAdditionalBalance == currentAdditionalBalance))
99101 then {
100102 let currentSWavesBalance = getIntegerOrZero(keySWavesAdditionalBalance)
101103 if ((currentSWavesBalance == currentSWavesBalance))
102104 then {
103105 let currentProxyRate = getRate()
104106 if ((currentProxyRate == currentProxyRate))
105107 then {
106108 let sendSWavesAmount = fraction(1000000000000, wavesAmount, currentProxyRate)
107- let depositInvoke = invoke(proxy, "withdraw", nil, [AttachedPayment(sWavesId, sendSWavesAmount)])
108- if ((depositInvoke == depositInvoke))
109- then match depositInvoke {
110- case receivedWaves: Int =>
111- let newAdditionalBalance = (currentAdditionalBalance - receivedWaves)
112- let newSWavesBalance = (currentSWavesBalance - sendSWavesAmount)
109+ if ((sendSWavesAmount > 0))
110+ then {
111+ let depositInvoke = invoke(proxy, "withdraw", nil, [AttachedPayment(sWavesId, sendSWavesAmount)])
112+ if ((depositInvoke == depositInvoke))
113+ then match depositInvoke {
114+ case receivedWaves: Int =>
115+ let newAdditionalBalance = (currentAdditionalBalance - receivedWaves)
116+ let newSWavesBalance = (currentSWavesBalance - sendSWavesAmount)
113117 [IntegerEntry(keyAdditionalBalance, newAdditionalBalance), IntegerEntry(keySWavesAdditionalBalance, newSWavesBalance)]
114- case _ =>
115- nil
116- }
117- else throw("Strict value is not equal to itself.")
118+ case _ =>
119+ nil
120+ }
121+ else throw("Strict value is not equal to itself.")
122+ }
123+ else nil
118124 }
119125 else throw("Strict value is not equal to itself.")
120126 }
121127 else throw("Strict value is not equal to itself.")
122128 }
123129 else throw("Strict value is not equal to itself.")
124130 }
125131 else throw("Strict value is not equal to itself.")
126132 }
127-
128-
129-@Callable(i)
130-func returnWavesBalance () = $Tuple2(nil, internalWavesBalance())
131-
132-
133-
134-@Callable(i)
135-func returnSWavesBalance () = $Tuple2(nil, getIntegerOrZero(keySWavesAdditionalBalance))
136-
137133
138134
139135 @Callable(i)
140136 func calcRatio () = {
141137 let regularWavesBalance = wavesBalance(this).regular
142138 let additional = getIntegerOrZero(keyAdditionalBalance)
143139 let ratio = fraction(100, additional, (additional + regularWavesBalance))
144140 $Tuple2(nil, ratio)
145141 }
146142
147143
148144
149145 @Callable(i)
150146 func calcRatioTest (regularBalance,additional,targetRatio) = {
151147 let sum = (regularBalance + additional)
152148 let targetAdditionalBalance = fraction(targetRatio, sum, 100)
153149 let change = (additional - targetAdditionalBalance)
154150 let newReg = (regularBalance + change)
155151 if ((0 > change))
156152 then {
157153 let sendAmount = (change * -1)
158154 $Tuple2(nil, [newReg, targetAdditionalBalance, change, ("deposit: " + toString(sendAmount))])
159155 }
160156 else {
161157 let sendAmount = change
162158 $Tuple2(nil, [newReg, targetAdditionalBalance, change, ("withdraw: " + toString(sendAmount))])
163159 }
164- }
165-
166-
167-
168-@Callable(i)
169-func rebalance () = {
170- let regularBalance = wavesBalance(this).regular
171- if ((regularBalance == regularBalance))
172- then {
173- let additionalBalance = getIntegerOrZero(keyAdditionalBalance)
174- if ((additionalBalance == additionalBalance))
175- then {
176- let targetRatio = getTargetRatio()
177- if ((targetRatio == targetRatio))
178- then {
179- let wholeBlalance = (regularBalance + additionalBalance)
180- let targetAdditionalBalance = fraction(targetRatio, wholeBlalance, 100)
181- let change = (additionalBalance - targetAdditionalBalance)
182- let newReg = (regularBalance + change)
183- if ((change == 0))
184- then nil
185- else if ((0 > change))
186- then {
187- let sendWavesAmount = (change * -1)
188- deposit(sendWavesAmount)
189- }
190- else {
191- let getWavesAmount = change
192- withdraw(getWavesAmount)
193- }
194- }
195- else throw("Strict value is not equal to itself.")
196- }
197- else throw("Strict value is not equal to itself.")
198- }
199- else throw("Strict value is not equal to itself.")
200160 }
201161
202162
203163
204164 @Callable(i)
205165 func rebalanceRatio (targetRatio) = {
206166 let regularBalance = wavesBalance(this).regular
207167 if ((regularBalance == regularBalance))
208168 then {
209169 let additionalBalance = getIntegerOrZero(keyAdditionalBalance)
210170 if ((additionalBalance == additionalBalance))
211171 then {
212172 let wholeBlalance = (regularBalance + additionalBalance)
213173 let targetAdditionalBalance = fraction(targetRatio, wholeBlalance, 100)
214174 let change = (additionalBalance - targetAdditionalBalance)
215175 let newReg = (regularBalance + change)
216176 if ((change == 0))
217177 then nil
218178 else if ((0 > change))
219179 then {
220180 let sendWavesAmount = (change * -1)
221181 deposit(sendWavesAmount)
222182 }
223183 else {
224184 let getWavesAmount = change
225185 withdraw(getWavesAmount)
226186 }
227187 }
228188 else throw("Strict value is not equal to itself.")
229189 }
230190 else throw("Strict value is not equal to itself.")
231191 }
232192
233193

github/deemru/w8io/873ac7e 
36.11 ms