tx · Axt3vMFRdzviRxpA7T8R7iVYYvXWHCAvjsXT6dHPghkg 3PPKvu6x52MFaMGfw3i2byPVXXBuH7FTNMU: -0.01400000 Waves 2022.09.01 12:59 [3275393] smart account 3PPKvu6x52MFaMGfw3i2byPVXXBuH7FTNMU > SELF 0.00000000 Waves
{ "type": 13, "id": "Axt3vMFRdzviRxpA7T8R7iVYYvXWHCAvjsXT6dHPghkg", "fee": 1400000, "feeAssetId": null, "timestamp": 1662026467839, "version": 2, "chainId": 87, "sender": "3PPKvu6x52MFaMGfw3i2byPVXXBuH7FTNMU", "senderPublicKey": "2EkX192CHj7Ut47LgFMd3Pg7U7rhQFJhKgcr3rD5Dtig", "proofs": [ "4mLTvo4Q6huHZQQ6azwDKJeBc5iFTUBjeoAHqdmLGNdiQuoa48GagADGZVQC5UiiC6BzWcX24mtLLWM17oMhKxJW" ], "script": "base64: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", "height": 3275393, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DCMaP7KEhdZ5QaVpv8nJTDEUdWjJE6dEFjaTPAmjq5tN Next: HyNkifGquo2YqFfDCEytfxFVsYD1BGx7RJAktYKaDvSM Diff:
Old | New | Differences | |
---|---|---|---|
209 | 209 | let result = calculateIssuePluto(assetId, value(i.payments[0].amount), false) | |
210 | 210 | if ((result == result)) | |
211 | 211 | then { | |
212 | - | let lockup = invoke(stakingAddress, "startOnboarding", [toString(i.caller), (result[0] + result[1]), result[2], result[6], result[5], getAssetString( | |
212 | + | let lockup = invoke(stakingAddress, "startOnboarding", [toString(i.caller), (result[0] + result[1]), result[2], result[6], result[5], getAssetString(i.payments[0].assetId)], [AttachedPayment(plutoId, ((result[0] + result[1]) + result[2]))]) | |
213 | 213 | if ((lockup == lockup)) | |
214 | 214 | then if (debug) | |
215 | 215 | then throw(((((((("issued: " + toString(result[0])) + "; bought: ") + toString(result[1])) + "; premium: ") + toString(result[2])) + "; team: ") + toString(result[3]))) |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let plutoId = base58'Ajso6nTTjptu2UHLx6hfSXVtHFtRBJCkKYd5SAyj7zf5' | |
5 | 5 | ||
6 | 6 | let plutoIdStr = "Ajso6nTTjptu2UHLx6hfSXVtHFtRBJCkKYd5SAyj7zf5" | |
7 | 7 | ||
8 | 8 | let parametersAddress = Address(base58'3P3a1jssxc2CGdyC7SGbTJc9ZvTjZ5jBMLZ') | |
9 | 9 | ||
10 | 10 | let stakingAddress = Address(base58'3P7dGTVZp8VLDYy3XEaUQbiqfi9cMK1Ly5q') | |
11 | 11 | ||
12 | 12 | let issuerAddress = Address(base58'3PCRXK4q3SWK3TfjTgYc88x3jr8semrHLJs') | |
13 | 13 | ||
14 | 14 | let treasuryAddress = Address(base58'3PKFFFsiKR7rgaeoLQZj6jLsxteZigccN8h') | |
15 | 15 | ||
16 | 16 | let teamAddress = Address(base58'3P8XyUj7seSjJc6gqDgM9MxAfmnmcDAE6gj') | |
17 | 17 | ||
18 | 18 | let poolAddress = Address(base58'3P93Kqz8PUbCudvMyjbci54WxQrtBtw4dbZ') | |
19 | 19 | ||
20 | 20 | let parentLpIdStr = "BNXTKjftTy5zZEozFdkqDTTiru7guvunLiCpZuTAaC4h" | |
21 | 21 | ||
22 | 22 | let parentLpId = base58'BNXTKjftTy5zZEozFdkqDTTiru7guvunLiCpZuTAaC4h' | |
23 | 23 | ||
24 | 24 | let usdnIdStr = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p" | |
25 | 25 | ||
26 | 26 | let wavesusdnPool = Address(base58'3PHaNgomBkrvEL2QnuJarQVJa71wjw9qiqG') | |
27 | 27 | ||
28 | 28 | let treasuryAssets = ["WAVES", usdnIdStr, "6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ", "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"] | |
29 | 29 | ||
30 | 30 | let Scale8 = 100000000 | |
31 | 31 | ||
32 | 32 | func tryGetInteger (key) = match getInteger(this, key) { | |
33 | 33 | case x: Int => | |
34 | 34 | x | |
35 | 35 | case _ => | |
36 | 36 | 0 | |
37 | 37 | } | |
38 | 38 | ||
39 | 39 | ||
40 | 40 | func tryGetIntParameter (key) = match getInteger(parametersAddress, key) { | |
41 | 41 | case x: Int => | |
42 | 42 | x | |
43 | 43 | case _ => | |
44 | 44 | 0 | |
45 | 45 | } | |
46 | 46 | ||
47 | 47 | ||
48 | 48 | func tryGetStrParameter (key) = match getString(parametersAddress, key) { | |
49 | 49 | case x: String => | |
50 | 50 | x | |
51 | 51 | case _ => | |
52 | 52 | "" | |
53 | 53 | } | |
54 | 54 | ||
55 | 55 | ||
56 | 56 | func getAssetString (assetId) = match assetId { | |
57 | 57 | case b: ByteVector => | |
58 | 58 | toBase58String(b) | |
59 | 59 | case _ => | |
60 | 60 | "WAVES" | |
61 | 61 | } | |
62 | 62 | ||
63 | 63 | ||
64 | 64 | func getAssetBytes (assetIdStr) = if ((assetIdStr == "WAVES")) | |
65 | 65 | then unit | |
66 | 66 | else fromBase58String(assetIdStr) | |
67 | 67 | ||
68 | 68 | ||
69 | 69 | func calculatePoolPrice (poolAddress,assetStr) = { | |
70 | 70 | let a0Weight = getIntegerValue(poolAddress, (("static_" + assetStr) + "_weight")) | |
71 | 71 | let a1Weight = getIntegerValue(poolAddress, (("static_" + plutoIdStr) + "_weight")) | |
72 | 72 | let a0Balance = getIntegerValue(poolAddress, (("global_" + assetStr) + "_balance")) | |
73 | 73 | let a1Balance = getIntegerValue(poolAddress, (("global_" + plutoIdStr) + "_balance")) | |
74 | 74 | fraction(Scale8, (a1Balance * a0Weight), (a0Balance * a1Weight)) | |
75 | 75 | } | |
76 | 76 | ||
77 | 77 | ||
78 | 78 | func calcPuzzleSwap (assetStr,amount) = { | |
79 | 79 | let a0Weight = getIntegerValue(poolAddress, (("static_" + assetStr) + "_weight")) | |
80 | 80 | let a1Weight = getIntegerValue(poolAddress, (("static_" + plutoIdStr) + "_weight")) | |
81 | 81 | let a0Balance = getIntegerValue(poolAddress, (("global_" + assetStr) + "_balance")) | |
82 | 82 | let a1Balance = getIntegerValue(poolAddress, (("global_" + plutoIdStr) + "_balance")) | |
83 | 83 | let amount1 = fraction(a1Balance, ((Scale8 * Scale8) - toInt(pow(fraction(toBigInt(a0Balance), toBigInt((Scale8 * Scale8)), toBigInt((a0Balance + amount)), HALFUP), 16, toBigInt(fraction(a0Weight, 10000, a1Weight)), 4, 16, CEILING))), (Scale8 * Scale8), DOWN) | |
84 | 84 | fraction(amount1, 98, 100) | |
85 | 85 | } | |
86 | 86 | ||
87 | 87 | ||
88 | 88 | func calcBuyback (assetStr,amount) = if ((assetStr != "WAVES")) | |
89 | 89 | then calcPuzzleSwap(assetStr, amount) | |
90 | 90 | else { | |
91 | 91 | let usdnAmount = fraction(getIntegerValue(wavesusdnPool, "B_asset_balance"), amount, (amount + getIntegerValue(wavesusdnPool, "A_asset_balance"))) | |
92 | 92 | let usdnAmountAfterFee = fraction(usdnAmount, 994, 1000) | |
93 | 93 | calcPuzzleSwap(usdnIdStr, usdnAmount) | |
94 | 94 | } | |
95 | 95 | ||
96 | 96 | ||
97 | 97 | func calculateIssuePluto (assetId,amount,evaluation) = { | |
98 | 98 | let assetIdStr = getAssetString(assetId) | |
99 | 99 | if ((indexOf(treasuryAssets, assetIdStr) == unit)) | |
100 | 100 | then throw("asset not supported") | |
101 | 101 | else { | |
102 | 102 | let onboardingParameters = match invoke(parametersAddress, "getOnboardingParameters", [false], nil) { | |
103 | 103 | case in: List[Any] => | |
104 | 104 | in | |
105 | 105 | case _ => | |
106 | 106 | throw("cannot load parameters") | |
107 | 107 | } | |
108 | 108 | if ((onboardingParameters == onboardingParameters)) | |
109 | 109 | then { | |
110 | 110 | let buybackRatio = match onboardingParameters[4] { | |
111 | 111 | case x: Int => | |
112 | 112 | x | |
113 | 113 | case _ => | |
114 | 114 | throw("cannot parse parameters") | |
115 | 115 | } | |
116 | 116 | let premium = match onboardingParameters[1] { | |
117 | 117 | case x: Int => | |
118 | 118 | x | |
119 | 119 | case _ => | |
120 | 120 | throw("cannot parse parameters") | |
121 | 121 | } | |
122 | 122 | let teamPremium = match onboardingParameters[3] { | |
123 | 123 | case x: Int => | |
124 | 124 | x | |
125 | 125 | case _ => | |
126 | 126 | throw("cannot parse parameters") | |
127 | 127 | } | |
128 | 128 | let period = match onboardingParameters[2] { | |
129 | 129 | case x: Int => | |
130 | 130 | x | |
131 | 131 | case _ => | |
132 | 132 | throw("cannot parse parameters") | |
133 | 133 | } | |
134 | 134 | let amountToBuyback = if ((assetIdStr != parentLpIdStr)) | |
135 | 135 | then fraction(amount, buybackRatio, 10000) | |
136 | 136 | else 0 | |
137 | 137 | let amountToIssue = (amount - amountToBuyback) | |
138 | 138 | let assetPriceToPluto = if ((assetIdStr != parentLpIdStr)) | |
139 | 139 | then if ((assetIdStr == "WAVES")) | |
140 | 140 | then fraction(calculatePoolPrice(poolAddress, usdnIdStr), getIntegerValue(addressFromStringValue("3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP"), "price"), Scale8) | |
141 | 141 | else calculatePoolPrice(poolAddress, assetIdStr) | |
142 | 142 | else { | |
143 | 143 | let parentLpPrice = match invoke(parametersAddress, "getParentLpPrice", [false, true], nil) { | |
144 | 144 | case in: Int => | |
145 | 145 | in | |
146 | 146 | case _ => | |
147 | 147 | throw("cannot load parent lp price") | |
148 | 148 | } | |
149 | 149 | if ((parentLpPrice == parentLpPrice)) | |
150 | 150 | then parentLpPrice | |
151 | 151 | else throw("Strict value is not equal to itself.") | |
152 | 152 | } | |
153 | 153 | if ((assetPriceToPluto == assetPriceToPluto)) | |
154 | 154 | then { | |
155 | 155 | let inv = if ((assetIdStr == parentLpIdStr)) | |
156 | 156 | then unit | |
157 | 157 | else if (evaluation) | |
158 | 158 | then calcBuyback(assetIdStr, amountToBuyback) | |
159 | 159 | else if ((assetIdStr == "WAVES")) | |
160 | 160 | then { | |
161 | 161 | let swap1 = invoke(wavesusdnPool, "exchange", [1], [AttachedPayment(assetId, amountToBuyback)]) | |
162 | 162 | if ((swap1 == swap1)) | |
163 | 163 | then { | |
164 | 164 | let usdnAmount = match swap1 { | |
165 | 165 | case x: (Int, ByteVector) => | |
166 | 166 | x._1 | |
167 | 167 | case _ => | |
168 | 168 | throw("no usdn purchased") | |
169 | 169 | } | |
170 | 170 | invoke(poolAddress, "swap", [plutoIdStr, 0], [AttachedPayment(assetId, usdnAmount)]) | |
171 | 171 | } | |
172 | 172 | else throw("Strict value is not equal to itself.") | |
173 | 173 | } | |
174 | 174 | else invoke(poolAddress, "swap", [plutoIdStr, 0], [AttachedPayment(assetId, amountToBuyback)]) | |
175 | 175 | if ((inv == inv)) | |
176 | 176 | then { | |
177 | 177 | let plutoBought = match inv { | |
178 | 178 | case x: Int => | |
179 | 179 | x | |
180 | 180 | case _ => | |
181 | 181 | 0 | |
182 | 182 | } | |
183 | 183 | let plutoIssued = fraction(amountToIssue, assetPriceToPluto, Scale8) | |
184 | 184 | let totalPluto = (plutoBought + plutoIssued) | |
185 | 185 | let premiumPlutoIssued = fraction(totalPluto, premium, 10000) | |
186 | 186 | let teamPlutoIssued = fraction(totalPluto, teamPremium, 10000) | |
187 | 187 | let inv2 = invoke(issuerAddress, "requestIssue", [((plutoIssued + premiumPlutoIssued) + teamPlutoIssued)], nil) | |
188 | 188 | if ((inv2 == inv2)) | |
189 | 189 | then [plutoIssued, plutoBought, premiumPlutoIssued, teamPlutoIssued, amountToIssue, premium, period] | |
190 | 190 | else throw("Strict value is not equal to itself.") | |
191 | 191 | } | |
192 | 192 | else throw("Strict value is not equal to itself.") | |
193 | 193 | } | |
194 | 194 | else throw("Strict value is not equal to itself.") | |
195 | 195 | } | |
196 | 196 | else throw("Strict value is not equal to itself.") | |
197 | 197 | } | |
198 | 198 | } | |
199 | 199 | ||
200 | 200 | ||
201 | 201 | @Callable(i) | |
202 | 202 | func issuePluto (debug) = { | |
203 | 203 | let assetId = i.payments[0].assetId | |
204 | 204 | if (if ((assetId == unit)) | |
205 | 205 | then (toString(i.caller) != "3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL") | |
206 | 206 | else false) | |
207 | 207 | then throw("please wait for the official release!") | |
208 | 208 | else { | |
209 | 209 | let result = calculateIssuePluto(assetId, value(i.payments[0].amount), false) | |
210 | 210 | if ((result == result)) | |
211 | 211 | then { | |
212 | - | let lockup = invoke(stakingAddress, "startOnboarding", [toString(i.caller), (result[0] + result[1]), result[2], result[6], result[5], getAssetString( | |
212 | + | let lockup = invoke(stakingAddress, "startOnboarding", [toString(i.caller), (result[0] + result[1]), result[2], result[6], result[5], getAssetString(i.payments[0].assetId)], [AttachedPayment(plutoId, ((result[0] + result[1]) + result[2]))]) | |
213 | 213 | if ((lockup == lockup)) | |
214 | 214 | then if (debug) | |
215 | 215 | then throw(((((((("issued: " + toString(result[0])) + "; bought: ") + toString(result[1])) + "; premium: ") + toString(result[2])) + "; team: ") + toString(result[3]))) | |
216 | 216 | else [ScriptTransfer(treasuryAddress, result[4], assetId), ScriptTransfer(teamAddress, result[3], plutoId)] | |
217 | 217 | else throw("Strict value is not equal to itself.") | |
218 | 218 | } | |
219 | 219 | else throw("Strict value is not equal to itself.") | |
220 | 220 | } | |
221 | 221 | } | |
222 | 222 | ||
223 | 223 | ||
224 | 224 | ||
225 | 225 | @Callable(i) | |
226 | 226 | func evaluateIssuePluto (debug,assetIdStr,amount) = { | |
227 | 227 | let assetId = getAssetBytes(assetIdStr) | |
228 | 228 | let result = calculateIssuePluto(assetId, amount, true) | |
229 | 229 | if ((result == result)) | |
230 | 230 | then if (debug) | |
231 | 231 | then throw(((((((("issued: " + toString(result[0])) + "; bought: ") + toString(result[1])) + "; premium: ") + toString(result[2])) + "; team: ") + toString(result[3]))) | |
232 | 232 | else $Tuple2(nil, (result[0] + result[1])) | |
233 | 233 | else throw("Strict value is not equal to itself.") | |
234 | 234 | } | |
235 | 235 | ||
236 | 236 | ||
237 | 237 | @Verifier(tx) | |
238 | 238 | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
239 | 239 |
github/deemru/w8io/6500d08 55.42 ms ◑