tx · E6iBUxgTFDn4pvKiQwFYd84xPjxLXVWX819eU47XUrkn

3PMqKakbsELgTxiAHNzm4ryEJBLKJcLetyj:  -0.01000000 Waves

2023.10.09 01:30 [3856106] smart account 3PMqKakbsELgTxiAHNzm4ryEJBLKJcLetyj > SELF 0.00000000 Waves

{ "type": 13, "id": "E6iBUxgTFDn4pvKiQwFYd84xPjxLXVWX819eU47XUrkn", "fee": 1000000, "feeAssetId": null, "timestamp": 1696804338868, "version": 2, "chainId": 87, "sender": "3PMqKakbsELgTxiAHNzm4ryEJBLKJcLetyj", "senderPublicKey": "y6K4a5SRZdvLzRWHrhjBuh5BQqujMD5sLnAocMyZ3P3", "proofs": [ "5Wgf8eUt8i264oin74vdgW8TRhQm8vQrwEsJ5K6HxNYyG8PLcpyCvgb6V1DCCsDSMdBvvw6FHgxSaysfH9cT8wP" ], "script": "base64:BgKaCggCEgASCAoGAQEICBgYEgQKAggIEgQKAggBEgMKAQgiDGFkbWluQWRkcmVzcyINd3hTd2FwQWRkcmVzcyILd3JpdGVTdHJpbmciA2tleSILc3RyaW5nVmFsdWUiDHdyaXRlSW50ZWdlciIMaW50ZWdlclZhbHVlIgdpc0FkbWluIg1jYWxsZXJBZGRyZXNzIg1zcGxpdENmbW1Kc29uIgVlbnRyeSIKaW52b2tlU3dvcCILcG9vbEFkZHJlc3MiB3Rva2VuSWQiC2lucHV0QW1vdW50IgZyZXN1bHQiByRtYXRjaDAiByRtYXRjaDEiAWEiCGludm9rZVd4Igl0b2tlbklkSW4iCnRva2VuSWRPdXQiDGludm9rZVB1enpsZSIRZGV0ZXJtaW5lUGxhdGZvcm0iBGNmbW0iBGl0ZW0iBWlucHV0Igxwcm9jZXNzQ2ZtbXMiBXN3YXBzIgppbnZva2VTd2FwIgVhY2N1bSIEbmV4dCILJHQwNjQ4MzY1MTAiBWluZGV4IgtyZXN1bHRUdXBsZSICJGwiAiRzIgUkYWNjMCIFJGYwXzEiAiRhIgIkaSIFJGYwXzIiH2NhbGNFeGNlc3NBbW91bnRQZXJDZm1tUG9zaXRpdmUiCmRpZmZlcmVuY2UiC251bWJlckNmbW1zIghxdW90aWVudCIWdG90YWxEaXN0cmlidXRlZEFtb3VudCIPcmVtYWluaW5nQW1vdW50Ih9jYWxjRXhjZXNzQW1vdW50UGVyQ2ZtbU5lZ2F0aXZlIhpkaXN0cmlidXRlQWRkaXRpb25hbFRva2VucyIEZGlmZiIKdG90YWxTd2FwcyILJHQwNzUyMTc2MDQiDWFkanVzdEFtb3VudHMiCyR0MDc2Nzc3NzE5Ig1hZGp1c3RlZFN3YXBzIg1yZW1haW5pbmdEaWZmIg5hbW91bnRUb0FkanVzdCIHbmV3SXRlbSIQbmV3UmVtYWluaW5nRGlmZiIYZGlzdHJpYnV0ZVJlbWFpbmluZ0RpZmZzIhZkaXN0cmlidXRlUHJvcG9ydGlvbmFsIgskdDA4NTk1ODYzNCIKcmVtYWluRGlmZiIQaW5wdXRBbW91bnRDaGVjayIPbWF4U3VidHJhY3RhYmxlIgskdDA5MDMyOTY0NiIVcmVtYWluaW5nU3VidHJhY3RhYmxlIhJzdWJ0cmFjdGFibGVBbW91bnQiGGRpc3RyaWJ1dGVOZWdhdGl2ZVRva2VucyINJHQwMTAwMTExMDA5NCINJHQwMTAxNjcxMDIwOSINJHQwMTAzNDYxMDY5NiINJHQwMTA4OTUxMDk4NiIOcmVtYWluaW5nRGlmZnMiDSR0MDEwOTkwMTEwNzAiCmZpbmFsU3dhcHMiBWRpZmZzIhdoYW5kbGVTZWNvbmRJbnB1dEFtb3VudCITcHJlZGV0ZXJtaW5lZEFtb3VudCIPYXZhaWxhYmxlQW1vdW50IgFpIgtzdGFydEFtb3VudCIOc2Vjb25kQW1vdW50SW4iCmZpcnN0VG9rZW4iC3NlY29uZFRva2VuIglmaXJzdFN3YXAiCnNlY29uZFN3YXAiDGZpcnN0VG9rZW5JZCIDdElkIg1zZWNvbmRUb2tlbklkIgJpZCIZYXZhaWxhYmxlQW1vdW50Rmlyc3RUb2tlbiILZmlyc3RSZXN1bHQiC3NlY29uZFN3YXBzIgxzZWNvbmRSZXN1bHQiAnR4IgZ2ZXJpZnkRAAFhCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMCBWFkbWluAgAAAWICIzNQNjh6Tml1ZnN1MXZpWnB1MWFZM2NkYWhSUktjdlY1TjkzAQFjAgFkAWUJAQtTdHJpbmdFbnRyeQIFAWQFAWUBAWYCAWQBZwkBDEludGVnZXJFbnRyeQIFAWQFAWcBAWgBAWkDCQAAAgUBaQkA2QQBBQFhBgcBAWoBAWsJALUJAgUBawIBLwEBbAMBbQFuAW8EAXAJAPwHBAkBEUBleHRyTmF0aXZlKDEwNjIpAQUBbQIIZXhjaGFuZ2UJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUBbgUBbwUDbmlsAwkAAAIFAXAFAXAEAXEFAXADCQABAgUBcQIJTGlzdFtBbnldBAFwBQFxBAFyCQCRAwIFAXAAAAMJAAECBQFyAgNJbnQEAXMFAXIFAXMJAAIBAhhMaXN0IGl0ZW0gaXMgbm90IGFuIGludCEJAAIBAilSZXN1bHQgb2Ygc3dvcCBpbnZva2F0aW9uIGRvZXMgbm90IG1hdGNoIQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEBdAMBdQF2AW8EAXAJAPwHBAkBEUBleHRyTmF0aXZlKDEwNjIpAQUBYgIEc3dhcAkAzAgCAAEJAMwIAgUBdgkAzAgCBQFhBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUBdQUBbwUDbmlsAwkAAAIFAXAFAXAEAXEFAXADCQABAgUBcQIDSW50BAFwBQFxBQFwCQACAQIpUmVzdWx0IG9mIHN3b3AgaW52b2thdGlvbiBkb2VzIG5vdCBtYXRjaCEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAXcEAW0BdQF2AW8EAXAJAPwHBAkBEUBleHRyTmF0aXZlKDEwNjIpAQUBbQIEc3dhcAkAzAgCBQF2CQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAXUFAW8FA25pbAMJAAACBQFwBQFwBAFxBQFwAwkAAQIFAXECA0ludAQBcAUBcQUBcAkAAgECKVJlc3VsdCBvZiBzd29wIGludm9rYXRpb24gZG9lcyBub3QgbWF0Y2ghCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQF4AwF5AXUBdgQBegkBAWoBBQF5BAFvCQC2CQEJAJEDAgUBegACBAFBBAFxBQFvAwkAAQIFAXECA0ludAQBbwUBcQUBbwkAAgECKERhdGF0eXBlIG9mIGlucHV0IGFtb3VudCBkb2VzIG5vdCBtYXRjaCEEAXADCQAAAgkAkQMCBQF6AAACBFNXT1AJAQFsAwkAkQMCBQF6AAEFAXUFAUEDCQAAAgkAkQMCBQF6AAACDldhdmVzIEV4Y2hhbmdlCQEBdAMFAXUFAXYFAUEDCQAAAgkAkQMCBQF6AAACC1B1enpsZSBTd2FwCQEBdwQJAJEDAgUBegABBQF1BQF2BQFBCQACAQIbUGxhdGZvcm0gaWQgZG9lcyBub3QgbWF0Y2ghBQFwAQFCAwFDAXUBdgoBAUQCAUUBRgQBRwUBRQQBcAgFAUcCXzEEAUgIBQFHAl8yAwkAZgIJAJADAQUBQwUBSAkAlAoCCQBkAgUBcAkBAXgDBQFGBQF1BQF2CQBkAgUBSAABCQCUCgIFAXAFAUgEAUkKAAFKBQFDCgABSwkAkAMBBQFKCgABTAkA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BQJhSgQCYVIJAQFCAwUCYVEFAmFIBQJhRwQBcQUCYVIDCQABAgUBcQIDSW50BAJhUgUBcQMJAGYCBQJhUgUCYUUFA25pbAkAAgECFVRyYWRlIG5vdCBwcm9maXRhYmxlIQkAAgECGlJlc3VsdCBoYXMgd3JvbmcgZGF0YXR5cGUhCQACAQIpQXZhaWxhYmxlIGlucHV0IGFtb3VudCBpcyBub3Qgc3VmZmljaWVudCEJAAIBAipBZGRyZXNzIGRvZXMgbm90IG1hdGNoIHdpdGggYWRtaW4gYWRkcmVzcyECYUQBEXVwZGF0ZVN0cmluZ0VudHJ5AgFkAWUDCQEBaAEICAUCYUQGY2FsbGVyBWJ5dGVzCQDMCAIJAQFjAgUBZAUBZQUDbmlsCQACAQIqQWRkcmVzcyBkb2VzIG5vdCBtYXRjaCB3aXRoIGFkbWluIGFkZHJlc3MhAmFEARJ1cGRhdGVJbnRlZ2VyRW50cnkCAWQBZwMJAQFoAQgIBQJhRAZjYWxsZXIFYnl0ZXMJAMwIAgkBAWYCBQFkBQFnBQNuaWwJAAIBAipBZGRyZXNzIGRvZXMgbm90IG1hdGNoIHdpdGggYWRtaW4gYWRkcmVzcyECYUQBEmRlbGV0ZVN0b3JhZ2VFbnRyeQEBZAMJAQFoAQgIBQJhRAZjYWxsZXIFYnl0ZXMJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBZAUDbmlsCQACAQIqQWRkcmVzcyBkb2VzIG5vdCBtYXRjaCB3aXRoIGFkbWluIGFkZHJlc3MhAQJhUwECYVQACQD0AwMIBQJhUwlib2R5Qnl0ZXMJAJEDAggFAmFTBnByb29mcwAACAUCYVMPc2VuZGVyUHVibGljS2V5xDSXiQ==", "height": 3856106, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Hb4LkxJQBfjq4HempHXm2QKoRdgyXk5L4RGXtBGbYvUX Next: 8SHCWPPJS8kACjvF2HGVByyprYHsmMdwfCDD8KZJnNXu Diff:
OldNewDifferences
324324 then secondSwap
325325 else handleSecondInputAmount(secondAmountIn, firstResult, secondSwap)
326326 let secondResult = processCfmms(secondSwaps, secondToken, firstToken)
327- if ((secondResult > startAmount))
328- then nil
329- else throw("Trade not profitable!")
327+ match secondResult {
328+ case secondResult: Int =>
329+ if ((secondResult > startAmount))
330+ then nil
331+ else throw("Trade not profitable!")
332+ case _ =>
333+ throw("Result has wrong datatype!")
334+ }
330335 }
331336 else throw("Available input amount is not sufficient!")
332337 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let adminAddress = valueOrElse(getString(this, "admin"), "")
55
66 let wxSwapAddress = "3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93"
77
88 func writeString (key,stringValue) = StringEntry(key, stringValue)
99
1010
1111 func writeInteger (key,integerValue) = IntegerEntry(key, integerValue)
1212
1313
1414 func isAdmin (callerAddress) = if ((callerAddress == fromBase58String(adminAddress)))
1515 then true
1616 else false
1717
1818
1919 func splitCfmmJson (entry) = split(entry, "/")
2020
2121
2222 func invokeSwop (poolAddress,tokenId,inputAmount) = {
2323 let result = invoke(addressFromStringValue(poolAddress), "exchange", [1], [AttachedPayment(fromBase58String(tokenId), inputAmount)])
2424 if ((result == result))
2525 then match result {
2626 case result: List[Any] =>
2727 match result[0] {
2828 case a: Int =>
2929 a
3030 case _ =>
3131 throw("List item is not an int!")
3232 }
3333 case _ =>
3434 throw("Result of swop invokation does not match!")
3535 }
3636 else throw("Strict value is not equal to itself.")
3737 }
3838
3939
4040 func invokeWx (tokenIdIn,tokenIdOut,inputAmount) = {
4141 let result = invoke(addressFromStringValue(wxSwapAddress), "swap", [1, tokenIdOut, adminAddress], [AttachedPayment(fromBase58String(tokenIdIn), inputAmount)])
4242 if ((result == result))
4343 then match result {
4444 case result: Int =>
4545 result
4646 case _ =>
4747 throw("Result of swop invokation does not match!")
4848 }
4949 else throw("Strict value is not equal to itself.")
5050 }
5151
5252
5353 func invokePuzzle (poolAddress,tokenIdIn,tokenIdOut,inputAmount) = {
5454 let result = invoke(addressFromStringValue(poolAddress), "swap", [tokenIdOut, 1], [AttachedPayment(fromBase58String(tokenIdIn), inputAmount)])
5555 if ((result == result))
5656 then match result {
5757 case result: Int =>
5858 result
5959 case _ =>
6060 throw("Result of swop invokation does not match!")
6161 }
6262 else throw("Strict value is not equal to itself.")
6363 }
6464
6565
6666 func determinePlatform (cfmm,tokenIdIn,tokenIdOut) = {
6767 let item = splitCfmmJson(cfmm)
6868 let inputAmount = parseInt(item[2])
6969 let input = match inputAmount {
7070 case inputAmount: Int =>
7171 inputAmount
7272 case _ =>
7373 throw("Datatype of input amount does not match!")
7474 }
7575 let result = if ((item[0] == "SWOP"))
7676 then invokeSwop(item[1], tokenIdIn, input)
7777 else if ((item[0] == "Waves Exchange"))
7878 then invokeWx(tokenIdIn, tokenIdOut, input)
7979 else if ((item[0] == "Puzzle Swap"))
8080 then invokePuzzle(item[1], tokenIdIn, tokenIdOut, input)
8181 else throw("Platform id does not match!")
8282 result
8383 }
8484
8585
8686 func processCfmms (swaps,tokenIdIn,tokenIdOut) = {
8787 func invokeSwap (accum,next) = {
8888 let $t064836510 = accum
8989 let result = $t064836510._1
9090 let index = $t064836510._2
9191 if ((size(swaps) > index))
9292 then $Tuple2((result + determinePlatform(next, tokenIdIn, tokenIdOut)), (index + 1))
9393 else $Tuple2(result, index)
9494 }
9595
9696 let resultTuple = {
9797 let $l = swaps
9898 let $s = size($l)
9999 let $acc0 = $Tuple2(0, 0)
100100 func $f0_1 ($a,$i) = if (($i >= $s))
101101 then $a
102102 else invokeSwap($a, $l[$i])
103103
104104 func $f0_2 ($a,$i) = if (($i >= $s))
105105 then $a
106106 else throw("List size exceeds 40")
107107
108108 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40)
109109 }
110110 resultTuple._1
111111 }
112112
113113
114114 func calcExcessAmountPerCfmmPositive (difference,numberCfmms) = {
115115 let quotient = fraction(difference, 1, numberCfmms, DOWN)
116116 let totalDistributedAmount = (quotient * numberCfmms)
117117 let remainingAmount = (difference - totalDistributedAmount)
118118 if ((remainingAmount > 0))
119119 then $Tuple2(quotient, remainingAmount)
120120 else $Tuple2(quotient, 0)
121121 }
122122
123123
124124 func calcExcessAmountPerCfmmNegative (difference,numberCfmms) = {
125125 let quotient = fraction(difference, 1, numberCfmms, DOWN)
126126 let totalDistributedAmount = (quotient * numberCfmms)
127127 let remainingAmount = (difference - totalDistributedAmount)
128128 if ((0 > remainingAmount))
129129 then $Tuple2(quotient, remainingAmount)
130130 else $Tuple2(quotient, 0)
131131 }
132132
133133
134134 func distributeAdditionalTokens (swaps,diff) = {
135135 let totalSwaps = size(swaps)
136136 let $t075217604 = calcExcessAmountPerCfmmPositive(diff, totalSwaps)
137137 let quotient = $t075217604._1
138138 let remainingAmount = $t075217604._2
139139 func adjustAmounts (accum,next) = {
140140 let $t076777719 = accum
141141 let adjustedSwaps = $t076777719._1
142142 let remainingDiff = $t076777719._2
143143 let item = splitCfmmJson(next)
144144 let inputAmount = parseInt(item[2])
145145 match inputAmount {
146146 case input: Int =>
147147 let amountToAdjust = if ((remainingDiff > 0))
148148 then ((input + quotient) + 1)
149149 else (input + quotient)
150150 let newItem = ((((item[0] + "/") + item[1]) + "/") + toString(amountToAdjust))
151151 let newRemainingDiff = if ((remainingDiff > 0))
152152 then (remainingDiff - 1)
153153 else remainingDiff
154154 $Tuple2((adjustedSwaps :+ newItem), newRemainingDiff)
155155 case _ =>
156156 throw("Input has wrong datatype!")
157157 }
158158 }
159159
160160 let result = {
161161 let $l = swaps
162162 let $s = size($l)
163163 let $acc0 = $Tuple2(nil, remainingAmount)
164164 func $f0_1 ($a,$i) = if (($i >= $s))
165165 then $a
166166 else adjustAmounts($a, $l[$i])
167167
168168 func $f0_2 ($a,$i) = if (($i >= $s))
169169 then $a
170170 else throw("List size exceeds 40")
171171
172172 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40)
173173 }
174174 result._1
175175 }
176176
177177
178178 func distributeRemainingDiffs (remainingDiff,swaps) = {
179179 func distributeProportional (accum,next) = {
180180 let $t085958634 = accum
181181 let adjustedSwaps = $t085958634._1
182182 let remainDiff = $t085958634._2
183183 let item = splitCfmmJson(next)
184184 let inputAmount = parseInt(item[2])
185185 let inputAmountCheck = match inputAmount {
186186 case input: Int =>
187187 input
188188 case _ =>
189189 throw("Input amount has the wrong data type")
190190 }
191191 let maxSubtractable = if ((inputAmountCheck > 4))
192192 then fraction(inputAmountCheck, 3, 4)
193193 else 0
194194 let $t090329646 = if (if ((remainDiff == 0))
195195 then true
196196 else (maxSubtractable == 0))
197197 then $Tuple2(remainDiff, 0)
198198 else if (((remainDiff + maxSubtractable) > 0))
199199 then {
200200 let remainingSubtractable = (remainDiff + maxSubtractable)
201201 $Tuple2(0, (maxSubtractable - remainingSubtractable))
202202 }
203203 else if ((0 > (remainDiff + maxSubtractable)))
204204 then $Tuple2((remainDiff + maxSubtractable), maxSubtractable)
205205 else $Tuple2(0, maxSubtractable)
206206 let newRemainingDiff = $t090329646._1
207207 let subtractableAmount = $t090329646._2
208208 let amountToAdjust = (inputAmountCheck - subtractableAmount)
209209 let newItem = ((((item[0] + "/") + item[1]) + "/") + toString(amountToAdjust))
210210 $Tuple2((adjustedSwaps :+ newItem), newRemainingDiff)
211211 }
212212
213213 let $l = swaps
214214 let $s = size($l)
215215 let $acc0 = $Tuple2(nil, remainingDiff)
216216 func $f0_1 ($a,$i) = if (($i >= $s))
217217 then $a
218218 else distributeProportional($a, $l[$i])
219219
220220 func $f0_2 ($a,$i) = if (($i >= $s))
221221 then $a
222222 else throw("List size exceeds 40")
223223
224224 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40)
225225 }
226226
227227
228228 func distributeNegativeTokens (swaps,diff) = {
229229 let totalSwaps = size(swaps)
230230 let $t01001110094 = calcExcessAmountPerCfmmNegative(diff, totalSwaps)
231231 let quotient = $t01001110094._1
232232 let remainingAmount = $t01001110094._2
233233 func adjustAmounts (accum,next) = {
234234 let $t01016710209 = accum
235235 let adjustedSwaps = $t01016710209._1
236236 let remainingDiff = $t01016710209._2
237237 let item = splitCfmmJson(next)
238238 let inputAmount = parseInt(item[2])
239239 match inputAmount {
240240 case input: Int =>
241241 let $t01034610696 = if (((input + quotient) >= 1))
242242 then if (if ((remainingDiff > 0))
243243 then (((input + quotient) - 1) >= 1)
244244 else false)
245245 then $Tuple2(((input + quotient) - 1), (remainingDiff - 1))
246246 else $Tuple2((input + quotient), remainingDiff)
247247 else $Tuple2(input, (remainingDiff + quotient))
248248 let amountToAdjust = $t01034610696._1
249249 let newRemainingDiff = $t01034610696._2
250250 let newItem = ((((item[0] + "/") + item[1]) + "/") + toString(amountToAdjust))
251251 $Tuple2((adjustedSwaps :+ newItem), newRemainingDiff)
252252 case _ =>
253253 throw("Input has wrong datatype!")
254254 }
255255 }
256256
257257 let $t01089510986 = {
258258 let $l = swaps
259259 let $s = size($l)
260260 let $acc0 = $Tuple2(nil, remainingAmount)
261261 func $f0_1 ($a,$i) = if (($i >= $s))
262262 then $a
263263 else adjustAmounts($a, $l[$i])
264264
265265 func $f0_2 ($a,$i) = if (($i >= $s))
266266 then $a
267267 else throw("List size exceeds 40")
268268
269269 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40)
270270 }
271271 let adjustedSwaps = $t01089510986._1
272272 let remainingDiffs = $t01089510986._2
273273 let $t01099011070 = distributeRemainingDiffs(remainingDiffs, adjustedSwaps)
274274 let finalSwaps = $t01099011070._1
275275 let diffs = $t01099011070._2
276276 finalSwaps
277277 }
278278
279279
280280 func handleSecondInputAmount (predeterminedAmount,availableAmount,swaps) = {
281281 let diff = (availableAmount - predeterminedAmount)
282282 let adjustedSwaps = if ((diff > 0))
283283 then distributeAdditionalTokens(swaps, diff)
284284 else if ((0 > diff))
285285 then distributeNegativeTokens(swaps, diff)
286286 else swaps
287287 adjustedSwaps
288288 }
289289
290290
291291 @Callable(i)
292292 func setup () = if (!(isDefined(getString(this, "admin"))))
293293 then [writeString("admin", toBase58String(i.caller.bytes))]
294294 else throw("Dapp already setup!")
295295
296296
297297
298298 @Callable(i)
299299 func basicArb (startAmount,secondAmountIn,firstToken,secondToken,firstSwap,secondSwap) = if (isAdmin(i.caller.bytes))
300300 then {
301301 let firstTokenId = {
302302 let tId = fromBase58String(firstToken)
303303 match tId {
304304 case tId: ByteVector =>
305305 tId
306306 case _ =>
307307 throw("Invalid datatype")
308308 }
309309 }
310310 let secondTokenId = {
311311 let id = fromBase58String(secondToken)
312312 match id {
313313 case id: ByteVector =>
314314 id
315315 case _ =>
316316 throw("Invalid datatype")
317317 }
318318 }
319319 let availableAmountFirstToken = assetBalance(this, firstTokenId)
320320 if ((availableAmountFirstToken >= startAmount))
321321 then {
322322 let firstResult = processCfmms(firstSwap, firstToken, secondToken)
323323 let secondSwaps = if ((firstResult == secondAmountIn))
324324 then secondSwap
325325 else handleSecondInputAmount(secondAmountIn, firstResult, secondSwap)
326326 let secondResult = processCfmms(secondSwaps, secondToken, firstToken)
327- if ((secondResult > startAmount))
328- then nil
329- else throw("Trade not profitable!")
327+ match secondResult {
328+ case secondResult: Int =>
329+ if ((secondResult > startAmount))
330+ then nil
331+ else throw("Trade not profitable!")
332+ case _ =>
333+ throw("Result has wrong datatype!")
334+ }
330335 }
331336 else throw("Available input amount is not sufficient!")
332337 }
333338 else throw("Address does not match with admin address!")
334339
335340
336341
337342 @Callable(i)
338343 func updateStringEntry (key,stringValue) = if (isAdmin(i.caller.bytes))
339344 then [writeString(key, stringValue)]
340345 else throw("Address does not match with admin address!")
341346
342347
343348
344349 @Callable(i)
345350 func updateIntegerEntry (key,integerValue) = if (isAdmin(i.caller.bytes))
346351 then [writeInteger(key, integerValue)]
347352 else throw("Address does not match with admin address!")
348353
349354
350355
351356 @Callable(i)
352357 func deleteStorageEntry (key) = if (isAdmin(i.caller.bytes))
353358 then [DeleteEntry(key)]
354359 else throw("Address does not match with admin address!")
355360
356361
357362 @Verifier(tx)
358363 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
359364

github/deemru/w8io/3ef1775 
72.08 ms