tx · 2Bvah6diXXU6RTY8Xkg92gBZFT8CZZfnjKTmvFoqGka2 3P7fBcGmUn3KCUhJSwvPd1yTsZhzEECbTPJ: -0.01000000 Waves 2022.02.13 16:17 [2986979] smart account 3P7fBcGmUn3KCUhJSwvPd1yTsZhzEECbTPJ > SELF 0.00000000 Waves
{ "type": 13, "id": "2Bvah6diXXU6RTY8Xkg92gBZFT8CZZfnjKTmvFoqGka2", "fee": 1000000, "feeAssetId": null, "timestamp": 1644758292276, "version": 1, "sender": "3P7fBcGmUn3KCUhJSwvPd1yTsZhzEECbTPJ", "senderPublicKey": "551sV9g8bMqcZf5x5yYqTinrYLLmDPrU73idSuksZKwg", "proofs": [ "4zq12PWawJ54tCu45v8SEJR6puSURi6TwzRe9CucM8urqCtm5eJ5q5Ynm6Rd3wUg88uWWi9EeH3ZV5XKfUEQGjwz" ], "script": "base64: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", "chainId": 87, "height": 2986979, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DkKKgbk8iNLaN39ZxYaKKTuytqYxvgZJ7sqLNFBdio6x Next: none Diff:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let FLATAPP = addressFromStringValue("3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1") | |
5 | - | ||
6 | - | let kBalanceA = "A_asset_balance" | |
7 | - | ||
8 | - | let kBalanceB = "B_asset_balance" | |
9 | - | ||
10 | - | let kInvariant = "invariant" | |
11 | - | ||
12 | 4 | let scale8 = 100000000 | |
13 | 5 | ||
14 | 6 | let scale12 = 1000000000000 | |
51 | 43 | if ((F == 0)) | |
52 | 44 | then $Tuple6(0, D, 0, 0, 0, 0) | |
53 | 45 | else { | |
54 | - | let $ | |
46 | + | let $t022252353 = if (if ((F > 0)) | |
55 | 47 | then (Flastvalid > F) | |
56 | 48 | else false) | |
57 | 49 | then $Tuple2(F, D) | |
58 | 50 | else $Tuple2(Flastvalid, Dlastvalid) | |
59 | - | let Fvalid = $ | |
60 | - | let Dvalid = $ | |
51 | + | let Fvalid = $t022252353._1 | |
52 | + | let Dvalid = $t022252353._2 | |
61 | 53 | if (((F - Fprev) == 0)) | |
62 | 54 | then $Tuple6(1, (D + 1), Fvalid, Dvalid, F, D) | |
63 | 55 | else { |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let FLATAPP = addressFromStringValue("3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1") | |
5 | - | ||
6 | - | let kBalanceA = "A_asset_balance" | |
7 | - | ||
8 | - | let kBalanceB = "B_asset_balance" | |
9 | - | ||
10 | - | let kInvariant = "invariant" | |
11 | - | ||
12 | 4 | let scale8 = 100000000 | |
13 | 5 | ||
14 | 6 | let scale12 = 1000000000000 | |
15 | 7 | ||
16 | 8 | let digits8 = 8 | |
17 | 9 | ||
18 | 10 | let exchangeRatioLimitMin = 90000000 | |
19 | 11 | ||
20 | 12 | let exchangeRatioLimitMax = 110000000 | |
21 | 13 | ||
22 | 14 | let alpha = 50 | |
23 | 15 | ||
24 | 16 | let alphaDigits = 2 | |
25 | 17 | ||
26 | 18 | let beta = 46000000 | |
27 | 19 | ||
28 | 20 | func skewness (x,y) = (((fraction(scale12, x, y) + fraction(scale12, y, x)) / 2) / 10000) | |
29 | 21 | ||
30 | 22 | ||
31 | 23 | func invariantCalc (x,y) = { | |
32 | 24 | let sk = skewness(x, y) | |
33 | 25 | (fraction((x + y), scale8, pow(sk, digits8, alpha, alphaDigits, digits8, CEILING)) + (2 * fraction(pow(fraction(x, y, scale8), 0, 5, 1, (digits8 / 2), DOWN), pow((sk - beta), digits8, alpha, alphaDigits, digits8, DOWN), scale8))) | |
34 | 26 | } | |
35 | 27 | ||
36 | 28 | ||
37 | 29 | func d (A,B,invariant,amount) = { | |
38 | 30 | let Dmin = (B - fraction(amount, exchangeRatioLimitMax, scale8)) | |
39 | 31 | let Dmax = (B - fraction(amount, exchangeRatioLimitMin, scale8)) | |
40 | 32 | let A_new = (A + amount) | |
41 | 33 | let Fmin = (invariantCalc(A_new, Dmin) - invariant) | |
42 | 34 | func DF (a,u) = if ((a._1 == 0)) | |
43 | 35 | then a | |
44 | 36 | else { | |
45 | 37 | let D = a._2 | |
46 | 38 | let Flastvalid = a._3 | |
47 | 39 | let Dlastvalid = a._4 | |
48 | 40 | let Fprev = a._5 | |
49 | 41 | let Dprev = a._6 | |
50 | 42 | let F = (invariantCalc(A_new, D) - invariant) | |
51 | 43 | if ((F == 0)) | |
52 | 44 | then $Tuple6(0, D, 0, 0, 0, 0) | |
53 | 45 | else { | |
54 | - | let $ | |
46 | + | let $t022252353 = if (if ((F > 0)) | |
55 | 47 | then (Flastvalid > F) | |
56 | 48 | else false) | |
57 | 49 | then $Tuple2(F, D) | |
58 | 50 | else $Tuple2(Flastvalid, Dlastvalid) | |
59 | - | let Fvalid = $ | |
60 | - | let Dvalid = $ | |
51 | + | let Fvalid = $t022252353._1 | |
52 | + | let Dvalid = $t022252353._2 | |
61 | 53 | if (((F - Fprev) == 0)) | |
62 | 54 | then $Tuple6(1, (D + 1), Fvalid, Dvalid, F, D) | |
63 | 55 | else { | |
64 | 56 | let Dnext = (D - fraction(F, (D - Dprev), (F - Fprev))) | |
65 | 57 | if (((D - Dnext) != 0)) | |
66 | 58 | then $Tuple6(1, Dnext, Fvalid, Dvalid, F, D) | |
67 | 59 | else if ((0 > F)) | |
68 | 60 | then $Tuple6(1, (D + 1), Fvalid, Dvalid, F, D) | |
69 | 61 | else $Tuple6(0, D, 0, 0, 0, 0) | |
70 | 62 | } | |
71 | 63 | } | |
72 | 64 | } | |
73 | 65 | ||
74 | 66 | let a = { | |
75 | 67 | let $l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] | |
76 | 68 | let $s = size($l) | |
77 | 69 | let $acc0 = $Tuple6(1, Dmax, 9223372036854775807, B, Fmin, Dmin) | |
78 | 70 | func $f0_1 ($a,$i) = if (($i >= $s)) | |
79 | 71 | then $a | |
80 | 72 | else DF($a, $l[$i]) | |
81 | 73 | ||
82 | 74 | func $f0_2 ($a,$i) = if (($i >= $s)) | |
83 | 75 | then $a | |
84 | 76 | else throw("List size exceeds 12") | |
85 | 77 | ||
86 | 78 | $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($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12) | |
87 | 79 | } | |
88 | 80 | if ((a._1 == 0)) | |
89 | 81 | then (B - a._2) | |
90 | 82 | else (B - a._4) | |
91 | 83 | } | |
92 | 84 | ||
93 | 85 | ||
94 | 86 | @Callable(i) | |
95 | 87 | func D (A,B,invariant,amount) = $Tuple2(nil, d(A, B, invariant, amount)) | |
96 | 88 | ||
97 | 89 |
github/deemru/w8io/3ef1775 39.16 ms ◑