tx · qgSu8ANW3gbCXjv4afS8rANZuuo8FGs4BJid83TaieB

3N8pVPvAfr79Ysbb4MEwi2Ks7d6LKUXG1iU:  -0.03400000 Waves

2022.07.16 00:15 [2141381] smart account 3N8pVPvAfr79Ysbb4MEwi2Ks7d6LKUXG1iU > SELF 0.00000000 Waves

{ "type": 13, "id": "qgSu8ANW3gbCXjv4afS8rANZuuo8FGs4BJid83TaieB", "fee": 3400000, "feeAssetId": null, "timestamp": 1657919665188, "version": 2, "chainId": 84, "sender": "3N8pVPvAfr79Ysbb4MEwi2Ks7d6LKUXG1iU", "senderPublicKey": "GDio3pYFUMSWQ3yen7TJP79nTPaGuPbxjKixvKLuYS8E", "proofs": [ "3UaxAe38WaNt2bwShM7vSqMx3La8WdMVXByLQyhbZifi2u3k6E4RiwBq9ERNqiJiTdt77YZk5jbKKrZhfq2pGrfe", "4xDnYyYPhi3j1dQ9kJYM1Nr8tecBErfvMx6nfi4d4UudaaNSRUwzJzwK6biS14DMVXCUkoHgTBYaCKVyxFMJkaaU" ], "script": "base64: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CQEAAAACa3AAAAACBQAAAAtVc2RuQXNzZXRJZAUAAAALTmdubkFzc2V0SWQEAAAAEGtleVBvb2xVc2RuV2F2ZXMJAQAAAAJrcAAAAAIFAAAAC1VzZG5Bc3NldElkBQAAAAV3YXZlcwQAAAAUa2V5UG9vbFVzZG5NYWluQXNzZXQJAQAAAAJrcAAAAAIFAAAAC1VzZG5Bc3NldElkBQAAAAtNYWluQXNzZXRJZAQAAAAPa2V5UG9vbFVzZG5FdXJuCQEAAAACa3AAAAACBQAAAAtVc2RuQXNzZXRJZAUAAAALRXVybkFzc2V0SWQEAAAAD2tleVBvb2xVc2RjVXNkdAkBAAAAAmtwAAAAAgUAAAALVXNkY0Fzc2V0SWQFAAAAC1VzZHRBc3NldElkBAAAAA9rZXlQb29sVXNkY05nbm4JAQAAAAJrcAAAAAIFAAAAC1VzZGNBc3NldElkBQAAAAtOZ25uQXNzZXRJZAQAAAAQa2V5UG9vbFVzZGNXYXZlcwkBAAAAAmtwAAAAAgUAAAALVXNkY0Fzc2V0SWQFAAAABXdhdmVzBAAAABRrZXlQb29sVXNkY01haW5Bc3NldAkBAAAAAmtwAAAAAgUAAAALVXNkY0Fzc2V0SWQFAAAAC01haW5Bc3NldElkBAAAAA9rZXlQb29sVXNkY0V1cm4JAQAAAAJrcAAAAAIFAAAAC1VzZGNBc3NldElkBQAAAAtFdXJuQXNzZXRJZAQAAAAPa2V5UG9vbFVzZHROZ25uCQEAAAACa3AAAAACBQAAAAtVc2R0QXNzZXRJZAUAAAALTmdubkFzc2V0SWQEAAAAFGtleVBvb2xVc2R0TWFpbkFzc2V0CQEAAAACa3AAAAACBQAAAAtVc2R0QXNzZXRJZAUAAAALTWFpbkFzc2V0SWQEAAAAD2tleVBvb2xVc2R0RXVybgkBAAAAAmtwAAAAAgUAAAALVXNkdEFzc2V0SWQFAAAAC0V1cm5Bc3NldElkBAAAABBrZXlQb29sTmdubldhdmVzCQEAAAACa3AAAAACBQAAAAtOZ25uQXNzZXRJZAUAAAAFd2F2ZXMEAAAAFGtleVBvb2xOZ25uTWFpbkFzc2V0CQEAAAACa3AAAAACBQAAAAtOZ25uQXNzZXRJZAUAAAALTWFpbkFzc2V0SWQEAAAAD2tleVBvb2xOZ25uRXVy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", "height": 2141381, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FgT4AWgnrr4Yt28oq27acx8iWF38UsAv5QdRB4JpjPLo Next: HQW4vHYKpdyhR8DECMn17Kmt89TxY57ZZvfvLMtZZitz Diff:
OldNewDifferences
149149
150150
151151 @Callable(i)
152-func constructor (MainAssetId,UsdnAssetId,UsdtAssetId,UsdcAssetId,NgnnAssetId,EurnAssetId,percentageRateSwap,blockDistribution,acceptWaves) = if (if ((i.caller == this))
153- then true
154- else (i.caller == adminVerification()))
155- then if ((valueOrElse(getInteger(this, "keyPoolUsdtWaves"), 0) == 0))
156- then {
157- let keyPoolUsdnUsdt = kp(UsdnAssetId, UsdtAssetId)
158- let keyPoolUsdnUsdc = kp(UsdnAssetId, UsdcAssetId)
159- let keyPoolUsdnNgnn = kp(UsdnAssetId, NgnnAssetId)
160- let keyPoolUsdnWaves = kp(UsdnAssetId, waves)
161- let keyPoolUsdnMainAsset = kp(UsdnAssetId, MainAssetId)
162- let keyPoolUsdnEurn = kp(UsdnAssetId, EurnAssetId)
163- let keyPoolUsdcUsdt = kp(UsdcAssetId, UsdtAssetId)
164- let keyPoolUsdcNgnn = kp(UsdcAssetId, NgnnAssetId)
165- let keyPoolUsdcWaves = kp(UsdcAssetId, waves)
166- let keyPoolUsdcMainAsset = kp(UsdcAssetId, MainAssetId)
167- let keyPoolUsdcEurn = kp(UsdcAssetId, EurnAssetId)
168- let keyPoolUsdtNgnn = kp(UsdtAssetId, NgnnAssetId)
169- let keyPoolUsdtWaves = kp(UsdtAssetId, waves)
170- let keyPoolUsdtMainAsset = kp(UsdtAssetId, MainAssetId)
171- let keyPoolUsdtEurn = kp(UsdtAssetId, EurnAssetId)
172- let keyPoolNgnnWaves = kp(NgnnAssetId, waves)
173- let keyPoolNgnnMainAsset = kp(NgnnAssetId, MainAssetId)
174- let keyPoolNgnnEurn = kp(NgnnAssetId, EurnAssetId)
175- let keyPoolMainWaves = kp(MainAssetId, waves)
176- let keyPoolMainEurn = kp(MainAssetId, EurnAssetId)
177- let keyPoolEurnWaves = kp(EurnAssetId, waves)
152+func constructor (MainAssetId,UsdnAssetId,UsdtAssetId,UsdcAssetId,NgnnAssetId,EurnAssetId,percentageRateSwap,blockDistribution,acceptWaves) = {
153+ let keyPoolUsdtWaves = kp(UsdtAssetId, waves)
154+ if (if ((i.caller == this))
155+ then true
156+ else (i.caller == adminVerification()))
157+ then if ((valueOrElse(getInteger(this, keyPoolUsdtWaves), 0) == 0))
158+ then {
159+ let keyPoolUsdnUsdt = kp(UsdnAssetId, UsdtAssetId)
160+ let keyPoolUsdnUsdc = kp(UsdnAssetId, UsdcAssetId)
161+ let keyPoolUsdnNgnn = kp(UsdnAssetId, NgnnAssetId)
162+ let keyPoolUsdnWaves = kp(UsdnAssetId, waves)
163+ let keyPoolUsdnMainAsset = kp(UsdnAssetId, MainAssetId)
164+ let keyPoolUsdnEurn = kp(UsdnAssetId, EurnAssetId)
165+ let keyPoolUsdcUsdt = kp(UsdcAssetId, UsdtAssetId)
166+ let keyPoolUsdcNgnn = kp(UsdcAssetId, NgnnAssetId)
167+ let keyPoolUsdcWaves = kp(UsdcAssetId, waves)
168+ let keyPoolUsdcMainAsset = kp(UsdcAssetId, MainAssetId)
169+ let keyPoolUsdcEurn = kp(UsdcAssetId, EurnAssetId)
170+ let keyPoolUsdtNgnn = kp(UsdtAssetId, NgnnAssetId)
171+ let keyPoolUsdtMainAsset = kp(UsdtAssetId, MainAssetId)
172+ let keyPoolUsdtEurn = kp(UsdtAssetId, EurnAssetId)
173+ let keyPoolNgnnWaves = kp(NgnnAssetId, waves)
174+ let keyPoolNgnnMainAsset = kp(NgnnAssetId, MainAssetId)
175+ let keyPoolNgnnEurn = kp(NgnnAssetId, EurnAssetId)
176+ let keyPoolMainWaves = kp(MainAssetId, waves)
177+ let keyPoolMainEurn = kp(MainAssetId, EurnAssetId)
178+ let keyPoolEurnWaves = kp(EurnAssetId, waves)
178179 [StringEntry(main, MainAssetId), StringEntry(usdn, UsdnAssetId), StringEntry(usdc, UsdcAssetId), StringEntry(usdt, UsdtAssetId), StringEntry(ngnn, NgnnAssetId), BooleanEntry(aWaves, acceptWaves), IntegerEntry(rateFee, percentageRateSwap), BooleanEntry(ac, true), BooleanEntry(swapAc, false), BooleanEntry(poolAc, false), BooleanEntry(liquidityAc, false), IntegerEntry(bcD, blockDistribution), IntegerEntry(keyPoolUsdnUsdt, 1), IntegerEntry(keyPoolUsdnWaves, 1), IntegerEntry(keyPoolUsdnUsdc, 1), IntegerEntry(keyPoolUsdnNgnn, 1), IntegerEntry(keyPoolUsdnMainAsset, 1), IntegerEntry(keyPoolUsdcUsdt, 1), IntegerEntry(keyPoolUsdcNgnn, 1), IntegerEntry(keyPoolUsdcWaves, 1), IntegerEntry(keyPoolUsdtMainAsset, 1), IntegerEntry(keyPoolUsdtNgnn, 1), IntegerEntry(keyPoolUsdtWaves, 1), IntegerEntry(keyPoolNgnnWaves, 1), IntegerEntry(keyPoolNgnnMainAsset, 1), IntegerEntry(keyPoolMainWaves, 1), IntegerEntry(keyPoolEurnWaves, 1), IntegerEntry(keyPoolMainEurn, 1), IntegerEntry(keyPoolNgnnEurn, 1), IntegerEntry(keyPoolUsdcEurn, 1), IntegerEntry(keyPoolUsdnEurn, 1), IntegerEntry(keyPoolUsdtEurn, 1), IntegerEntry(keyPoolUsdcMainAsset, 1), StringEntry(eurn, EurnAssetId)]
179- }
180- else throw("Smart Contract has been started")
181- else throw("Only the Admin itself can invoke this function")
180+ }
181+ else throw("Smart Contract has been started")
182+ else throw("Only the Admin itself can invoke this function")
183+ }
182184
183185
184186
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let main = "main_asset"
55
66 let l = "lp_asset_"
77
88 let aa1 = "pool__"
99
1010 let sa = "STAKING_AMOUNT_"
1111
1212 let la = "LEASE_AMOUNT_"
1313
1414 let ix = "ID_"
1515
1616 let rateFee = "percentage_rate_fee"
1717
1818 let deposit_height = "Deposit_Height_Of_"
1919
2020 let D8 = 100000000
2121
2222 let D6 = 1000000
2323
2424 let D10 = 10000000000
2525
2626 func getAddressIfValid (address) = toString(valueOrErrorMessage(addressFromString(address), (("Can't parse " + address) + " as address")))
2727
2828
2929 func getAssetIfValid (assetId) = toBase58String(valueOrErrorMessage(value(assetInfo(fromBase58String(assetId))).id, (("Asset Id: " + assetId) + " is invalid.")))
3030
3131
3232 func getAmountBlockAsset (assetId) = match getInteger(this, assetId) {
3333 case i: Int =>
3434 i
3535 case _ =>
3636 0
3737 }
3838
3939
4040 func getAssetName (assetId) = match assetInfo(assetId) {
4141 case asset: Asset =>
4242 asset.name
4343 case _ =>
4444 throw("Can't find asset")
4545 }
4646
4747
4848 let ac = "activate"
4949
5050 let poolAc = "activate_pools"
5151
5252 let swapAc = "activate_swap"
5353
5454 let liquidityAc = "activate_liquidity"
5555
5656 let bcD = "block_distribuition"
5757
5858 let total_locked = "Total_Tokens_Locked_"
5959
6060 let usdn = "usdn_asset"
6161
6262 let usdt = "usdt_asset"
6363
6464 let usdc = "usdc_asset"
6565
6666 let ngnn = "ngnn_asset"
6767
6868 let eurn = "eurn_asset"
6969
7070 let waves = "WAVES"
7171
7272 let aWaves = "accept_waves"
7373
7474 let WAVES = unit
7575
7676 func kp (asset1,asset2) = (((aa1 + asset1) + "_") + asset2)
7777
7878
7979 func validPoolK (key) = match getInteger(this, key) {
8080 case i: Int =>
8181 i
8282 case _ =>
8383 false
8484 }
8585
8686
8787 func kpAddress (address,key) = match getInteger(this, ((key + "_") + address)) {
8888 case t: Int =>
8989 t
9090 case _ =>
9191 0
9292 }
9393
9494
9595 func poolAA (address,key,asset) = match getInteger(this, ((((address + "_") + key) + "_") + asset)) {
9696 case a: Int =>
9797 a
9898 case _ =>
9999 0
100100 }
101101
102102
103103 func assetP (key,asset) = match getInteger(this, ((key + "_") + asset)) {
104104 case a: Int =>
105105 a
106106 case _ =>
107107 1
108108 }
109109
110110
111111 func pkey (Asset1,Asset2,address) = (((deposit_height + kp(Asset1, Asset2)) + "_") + address)
112112
113113
114114 func lpBlocked (address,key) = match getInteger(this, ((("STAKE_LP_" + address) + "_") + key)) {
115115 case a: Int =>
116116 a
117117 case _ =>
118118 0
119119 }
120120
121121
122122 func adminVerification () = match getString(this, "admin") {
123123 case t: String =>
124124 Address(fromBase58String(t))
125125 case _ =>
126126 this
127127 }
128128
129129
130130 func validateAsset (assetS,stringAsset,acWaves) = if (if ((assetS == WAVES))
131131 then (stringAsset == "WAVES")
132132 else false)
133133 then if (acWaves)
134134 then true
135135 else throw("The smart contract does not currently support Waves.")
136136 else if ((assetS == fromBase58String(stringAsset)))
137137 then true
138138 else false
139139
140140
141141 func totalAssetPool (key,assetLp) = match getInteger(this, key) {
142142 case a: Int =>
143143 a
144144 case _ =>
145145 if (assetLp)
146146 then (1 * D8)
147147 else 1
148148 }
149149
150150
151151 @Callable(i)
152-func constructor (MainAssetId,UsdnAssetId,UsdtAssetId,UsdcAssetId,NgnnAssetId,EurnAssetId,percentageRateSwap,blockDistribution,acceptWaves) = if (if ((i.caller == this))
153- then true
154- else (i.caller == adminVerification()))
155- then if ((valueOrElse(getInteger(this, "keyPoolUsdtWaves"), 0) == 0))
156- then {
157- let keyPoolUsdnUsdt = kp(UsdnAssetId, UsdtAssetId)
158- let keyPoolUsdnUsdc = kp(UsdnAssetId, UsdcAssetId)
159- let keyPoolUsdnNgnn = kp(UsdnAssetId, NgnnAssetId)
160- let keyPoolUsdnWaves = kp(UsdnAssetId, waves)
161- let keyPoolUsdnMainAsset = kp(UsdnAssetId, MainAssetId)
162- let keyPoolUsdnEurn = kp(UsdnAssetId, EurnAssetId)
163- let keyPoolUsdcUsdt = kp(UsdcAssetId, UsdtAssetId)
164- let keyPoolUsdcNgnn = kp(UsdcAssetId, NgnnAssetId)
165- let keyPoolUsdcWaves = kp(UsdcAssetId, waves)
166- let keyPoolUsdcMainAsset = kp(UsdcAssetId, MainAssetId)
167- let keyPoolUsdcEurn = kp(UsdcAssetId, EurnAssetId)
168- let keyPoolUsdtNgnn = kp(UsdtAssetId, NgnnAssetId)
169- let keyPoolUsdtWaves = kp(UsdtAssetId, waves)
170- let keyPoolUsdtMainAsset = kp(UsdtAssetId, MainAssetId)
171- let keyPoolUsdtEurn = kp(UsdtAssetId, EurnAssetId)
172- let keyPoolNgnnWaves = kp(NgnnAssetId, waves)
173- let keyPoolNgnnMainAsset = kp(NgnnAssetId, MainAssetId)
174- let keyPoolNgnnEurn = kp(NgnnAssetId, EurnAssetId)
175- let keyPoolMainWaves = kp(MainAssetId, waves)
176- let keyPoolMainEurn = kp(MainAssetId, EurnAssetId)
177- let keyPoolEurnWaves = kp(EurnAssetId, waves)
152+func constructor (MainAssetId,UsdnAssetId,UsdtAssetId,UsdcAssetId,NgnnAssetId,EurnAssetId,percentageRateSwap,blockDistribution,acceptWaves) = {
153+ let keyPoolUsdtWaves = kp(UsdtAssetId, waves)
154+ if (if ((i.caller == this))
155+ then true
156+ else (i.caller == adminVerification()))
157+ then if ((valueOrElse(getInteger(this, keyPoolUsdtWaves), 0) == 0))
158+ then {
159+ let keyPoolUsdnUsdt = kp(UsdnAssetId, UsdtAssetId)
160+ let keyPoolUsdnUsdc = kp(UsdnAssetId, UsdcAssetId)
161+ let keyPoolUsdnNgnn = kp(UsdnAssetId, NgnnAssetId)
162+ let keyPoolUsdnWaves = kp(UsdnAssetId, waves)
163+ let keyPoolUsdnMainAsset = kp(UsdnAssetId, MainAssetId)
164+ let keyPoolUsdnEurn = kp(UsdnAssetId, EurnAssetId)
165+ let keyPoolUsdcUsdt = kp(UsdcAssetId, UsdtAssetId)
166+ let keyPoolUsdcNgnn = kp(UsdcAssetId, NgnnAssetId)
167+ let keyPoolUsdcWaves = kp(UsdcAssetId, waves)
168+ let keyPoolUsdcMainAsset = kp(UsdcAssetId, MainAssetId)
169+ let keyPoolUsdcEurn = kp(UsdcAssetId, EurnAssetId)
170+ let keyPoolUsdtNgnn = kp(UsdtAssetId, NgnnAssetId)
171+ let keyPoolUsdtMainAsset = kp(UsdtAssetId, MainAssetId)
172+ let keyPoolUsdtEurn = kp(UsdtAssetId, EurnAssetId)
173+ let keyPoolNgnnWaves = kp(NgnnAssetId, waves)
174+ let keyPoolNgnnMainAsset = kp(NgnnAssetId, MainAssetId)
175+ let keyPoolNgnnEurn = kp(NgnnAssetId, EurnAssetId)
176+ let keyPoolMainWaves = kp(MainAssetId, waves)
177+ let keyPoolMainEurn = kp(MainAssetId, EurnAssetId)
178+ let keyPoolEurnWaves = kp(EurnAssetId, waves)
178179 [StringEntry(main, MainAssetId), StringEntry(usdn, UsdnAssetId), StringEntry(usdc, UsdcAssetId), StringEntry(usdt, UsdtAssetId), StringEntry(ngnn, NgnnAssetId), BooleanEntry(aWaves, acceptWaves), IntegerEntry(rateFee, percentageRateSwap), BooleanEntry(ac, true), BooleanEntry(swapAc, false), BooleanEntry(poolAc, false), BooleanEntry(liquidityAc, false), IntegerEntry(bcD, blockDistribution), IntegerEntry(keyPoolUsdnUsdt, 1), IntegerEntry(keyPoolUsdnWaves, 1), IntegerEntry(keyPoolUsdnUsdc, 1), IntegerEntry(keyPoolUsdnNgnn, 1), IntegerEntry(keyPoolUsdnMainAsset, 1), IntegerEntry(keyPoolUsdcUsdt, 1), IntegerEntry(keyPoolUsdcNgnn, 1), IntegerEntry(keyPoolUsdcWaves, 1), IntegerEntry(keyPoolUsdtMainAsset, 1), IntegerEntry(keyPoolUsdtNgnn, 1), IntegerEntry(keyPoolUsdtWaves, 1), IntegerEntry(keyPoolNgnnWaves, 1), IntegerEntry(keyPoolNgnnMainAsset, 1), IntegerEntry(keyPoolMainWaves, 1), IntegerEntry(keyPoolEurnWaves, 1), IntegerEntry(keyPoolMainEurn, 1), IntegerEntry(keyPoolNgnnEurn, 1), IntegerEntry(keyPoolUsdcEurn, 1), IntegerEntry(keyPoolUsdnEurn, 1), IntegerEntry(keyPoolUsdtEurn, 1), IntegerEntry(keyPoolUsdcMainAsset, 1), StringEntry(eurn, EurnAssetId)]
179- }
180- else throw("Smart Contract has been started")
181- else throw("Only the Admin itself can invoke this function")
180+ }
181+ else throw("Smart Contract has been started")
182+ else throw("Only the Admin itself can invoke this function")
183+ }
182184
183185
184186
185187 @Callable(i)
186188 func activate (v) = if (if ((i.caller == this))
187189 then true
188190 else (i.caller == adminVerification()))
189191 then [BooleanEntry(ac, v)]
190192 else throw("Only the Admin itself can invoke this function")
191193
192194
193195
194196 @Callable(i)
195197 func maintenance (pools,swap,stake) = if (if ((i.caller == this))
196198 then true
197199 else (i.caller == adminVerification()))
198200 then [BooleanEntry(poolAc, pools), BooleanEntry(swapAc, swap), BooleanEntry(liquidityAc, stake)]
199201 else throw("Only the Admin itself can invoke this function")
200202
201203
202204
203205 @Callable(i)
204206 func percentualRateFeeSwapEdit (rate) = if (if ((i.caller == this))
205207 then true
206208 else (i.caller == adminVerification()))
207209 then [IntegerEntry(rateFee, rate)]
208210 else throw("Only the Admin itself can invoke this function")
209211
210212
211213
212214 @Callable(i)
213215 func acceptWaves (activate) = if (if ((i.caller == this))
214216 then true
215217 else (i.caller == adminVerification()))
216218 then [BooleanEntry(aWaves, activate)]
217219 else throw("Only the Admin itself can invoke this function")
218220
219221
220222
221223 @Callable(i)
222224 func blockDistribution (newValue) = if (if ((i.caller == this))
223225 then true
224226 else (i.caller == adminVerification()))
225227 then [IntegerEntry(bcD, newValue)]
226228 else throw("Only the Admin itself can invoke this function")
227229
228230
229231
230232 @Callable(i)
231233 func addAdmin (address) = if (if ((i.caller == this))
232234 then true
233235 else (i.caller == adminVerification()))
234236 then [StringEntry("admin", address)]
235237 else throw("Only the Admin itself can invoke this function")
236238
237239
238240
239241 @Callable(i)
240242 func lpAssetCreateForPairPool (asset1,asset2,Name,customName) = {
241243 let nameAsset1 = if ((asset1 == waves))
242244 then waves
243245 else getAssetName(fromBase58String(asset1))
244246 let nameAsset2 = if ((asset2 == waves))
245247 then waves
246248 else getAssetName(fromBase58String(asset2))
247249 let name = if (customName)
248250 then Name
249251 else ((nameAsset1 + "_") + nameAsset2)
250252 let key = validPoolK(kp(asset1, asset2))
251253 if (if ((i.caller == this))
252254 then true
253255 else (i.caller == adminVerification()))
254256 then if ((key != false))
255257 then {
256258 let assetLpCreate = Issue(name, ((("LP asset for pool liquidity in AxAi Swap pair " + asset1) + "_") + asset2), (1 * D8), 8, true)
257259 let idAssetLp = calculateAssetId(assetLpCreate)
258260 [StringEntry((l + kp(asset1, asset2)), toBase58String(idAssetLp)), assetLpCreate]
259261 }
260262 else throw("Invalid Pool Key. Try inverting the assets")
261263 else throw("Only the Admin itself can invoke this function")
262264 }
263265
264266
265267
266268 @Callable(i)
267269 func deposit (pool,Asset1,Asset2) = {
268270 let power = getBooleanValue(this, ac)
269271 let liquidityPower = getBooleanValue(this, liquidityAc)
270272 let MainAsset = getStringValue(this, main)
271273 let lpAssetId = if (pool)
272274 then getStringValue(this, (l + kp(Asset1, Asset2)))
273275 else MainAsset
274276 if (power)
275277 then if (!(liquidityPower))
276278 then if ((i.payments[0].assetId != fromBase58String(lpAssetId)))
277279 then throw((("Invalid asset! Kindly Deposit Only " + MainAsset) + " or valid asset lp"))
278280 else if (!(pool))
279281 then {
280282 let currentKey = toBase58String(i.caller.bytes)
281283 let currentAmount = match getInteger(this, currentKey) {
282284 case a: Int =>
283285 a
284286 case _ =>
285287 0
286288 }
287289 let newAmount = (currentAmount + i.payments[0].amount)
288290 let useramount = IntegerEntry(currentKey, newAmount)
289291 let userdepositheight = IntegerEntry((deposit_height + currentKey), height)
290292 let previouslockbalance = match getInteger(this, "Total_Tokens_Locked:") {
291293 case a: Int =>
292294 a
293295 case _ =>
294296 0
295297 }
296298 let totaltoken = (previouslockbalance + i.payments[0].amount)
297299 let TLV = IntegerEntry("Total_Tokens_Locked:", totaltoken)
298300 [useramount, userdepositheight, TLV]
299301 }
300302 else {
301303 let poolKey = kp(Asset1, Asset2)
302304 let key = validPoolK(poolKey)
303305 if ((key != false))
304306 then {
305307 let currentKey = toBase58String(i.caller.bytes)
306308 let currentAmount = match getInteger(this, ((("STAKE_LP_" + currentKey) + "_") + poolKey)) {
307309 case a: Int =>
308310 a
309311 case _ =>
310312 0
311313 }
312314 let newAmount = (currentAmount + i.payments[0].amount)
313315 let useramount = IntegerEntry(((("STAKE_LP_" + currentKey) + "_") + poolKey), newAmount)
314316 let userdepositheight = IntegerEntry(((((deposit_height + "_") + currentKey) + "_") + poolKey), height)
315317 let previouslockbalance = match getInteger(this, ("Total_Tokens_LP_Locked_" + poolKey)) {
316318 case a: Int =>
317319 a
318320 case _ =>
319321 0
320322 }
321323 let totaltoken = (previouslockbalance + i.payments[0].amount)
322324 let TLV = IntegerEntry(("Total_Tokens_LP_Locked_" + poolKey), totaltoken)
323325 [useramount, userdepositheight, TLV]
324326 }
325327 else throw("Invalid Pool key.")
326328 }
327329 else throw("liquidity is currently under maintenance.")
328330 else throw("dApp is currently under maintenance.")
329331 }
330332
331333
332334
333335 @Callable(i)
334336 func remove (pool,Asset1,Asset2,amount) = {
335337 let power = getBooleanValue(this, ac)
336338 let liquidityPower = getBooleanValue(this, liquidityAc)
337339 let pmt = i.payments[0]
338340 let MainAsset = fromBase58String(getStringValue(this, main))
339341 if (power)
340342 then if (!(liquidityPower))
341343 then {
342344 let currentKey = toBase58String(i.caller.bytes)
343345 let currentAmount = match if (pool)
344346 then getIntegerValue(this, ((("STAKE_LP_" + currentKey) + "_") + kp(Asset1, Asset2)))
345347 else getIntegerValue(this, currentKey) {
346348 case a: Int =>
347349 a
348350 case _ =>
349351 0
350352 }
351353 let swapheightkeyname = if (pool)
352354 then ((((deposit_height + "_") + currentKey) + "_") + kp(Asset1, Asset2))
353355 else (deposit_height + currentKey)
354356 let previouslockbalance = if (pool)
355357 then getIntegerValue(this, ("Total_Tokens_LP_Locked_" + kp(Asset1, Asset2)))
356358 else getIntegerValue(this, "Total_Tokens_Locked:")
357359 let totaltoken = (previouslockbalance - amount)
358360 let diff = (height - getIntegerValue(this, swapheightkeyname))
359361 let bcd = getIntegerValue(this, bcD)
360362 let reward = ((diff * bcd) * D8)
361363 let feeCalc = (reward / (previouslockbalance / amount))
362364 if ((0 > amount))
363365 then throw(if (pool)
364366 then (((("Can't withdraw negative " + Asset1) + "/") + Asset2) + " amount")
365367 else "Can't withdraw negative AxAi amount")
366368 else {
367369 let newAmount = (currentAmount - amount)
368370 if ((0 > newAmount))
369371 then throw(if (pool)
370372 then (((("Not enough Asset Lp " + Asset1) + "/") + Asset2) + " balance")
371373 else "Not enough AxAi balance")
372374 else [IntegerEntry(if (pool)
373375 then ((("STAKE_LP_" + currentKey) + "_") + kp(Asset1, Asset2))
374376 else currentKey, newAmount), IntegerEntry(if (pool)
375377 then ("Total_Tokens_LP_Locked_" + kp(Asset1, Asset2))
376378 else "Total_Tokens_Locked:", totaltoken), ScriptTransfer(i.caller, amount, if (pool)
377379 then fromBase58String(getStringValue(this, (l + kp(Asset1, Asset2))))
378380 else MainAsset), ScriptTransfer(i.caller, feeCalc, MainAsset)]
379381 }
380382 }
381383 else throw("liquidity is currently under maintenance.")
382384 else throw("dApp is currently under maintenance.")
383385 }
384386
385387
386388
387389 @Callable(i)
388390 func addLiquidity (Asset1,Asset2) = {
389391 let power = getBooleanValue(this, ac)
390392 let poolActivate = getBooleanValue(this, poolAc)
391393 let acWaves = getBooleanValue(this, aWaves)
392394 let key = validPoolK(kp(Asset1, Asset2))
393395 let asset1 = i.payments[0].assetId
394396 let asset2 = i.payments[1].assetId
395397 let USDN = fromBase58String(getStringValue(this, usdn))
396398 let USDC = fromBase58String(getStringValue(this, usdc))
397399 let USDT = fromBase58String(getStringValue(this, usdt))
398400 let NGNN = fromBase58String(getStringValue(this, ngnn))
399401 let EURN = fromBase58String(getStringValue(this, eurn))
400402 let MainAsset = fromBase58String(getStringValue(this, main))
401403 let lpAssetId = getStringValue(this, (l + kp(Asset1, Asset2)))
402404 let totalAsset1Pool = if ((2 > totalAssetPool(((kp(Asset1, Asset2) + "_") + Asset1), false)))
403405 then i.payments[0].amount
404406 else totalAssetPool(((kp(Asset1, Asset2) + "_") + Asset1), false)
405407 let totalAsset2Pool = if ((2 > totalAssetPool(((kp(Asset1, Asset2) + "_") + Asset1), false)))
406408 then i.payments[1].amount
407409 else totalAssetPool(((kp(Asset1, Asset2) + "_") + Asset2), false)
408410 let totalLp = totalAssetPool(lpAssetId, true)
409411 let priceLpAsset = ((totalAsset1Pool + totalAsset2Pool) / totalLp)
410412 let quantityAsset2 = (i.payments[0].amount * (totalAsset2Pool / totalAsset1Pool))
411413 let Validate = if ((i.payments[1].amount == quantityAsset2))
412414 then true
413415 else false
414416 if (power)
415417 then if (!(poolActivate))
416418 then if (if (if (!((asset1 == asset2)))
417419 then validateAsset(asset1, Asset1, acWaves)
418420 else false)
419421 then validateAsset(asset2, Asset2, acWaves)
420422 else false)
421423 then if (if (if (if (if (if (if (if ((asset1 == USDN))
422424 then true
423425 else (asset1 == USDC))
424426 then true
425427 else (asset1 == USDT))
426428 then true
427429 else (asset1 == NGNN))
428430 then true
429431 else (asset1 == MainAsset))
430432 then true
431433 else (asset1 == WAVES))
432434 then true
433435 else (asset1 == EURN))
434436 then if (if (if (if (if (if ((asset2 == USDN))
435437 then true
436438 else (asset2 == USDC))
437439 then true
438440 else (asset2 == USDT))
439441 then true
440442 else (asset2 == NGNN))
441443 then true
442444 else (asset2 == MainAsset))
443445 then true
444446 else (asset2 == WAVES))
445447 then true
446448 else (asset2 == EURN)
447449 else false)
448450 then if ((key != false))
449451 then if (Validate)
450452 then {
451453 let currentKey = toBase58String(i.caller.bytes)
452454 let currentAmount = kpAddress(currentKey, kp(Asset1, Asset2))
453455 let currentAmountAsset1 = poolAA(currentKey, kp(Asset1, Asset2), Asset1)
454456 let currentAmountAsset2 = poolAA(currentKey, kp(Asset1, Asset2), Asset2)
455457 let asset1pool = assetP(kp(Asset1, Asset2), Asset1)
456458 let asset2pool = assetP(kp(Asset1, Asset2), Asset2)
457459 let receiveLp = if ((totalAsset1Pool == i.payments[0].amount))
458460 then (1 * D8)
459461 else ((i.payments[0].amount + i.payments[1].amount) / ((totalAsset1Pool + totalAsset2Pool) / totalLp))
460462 let newcurrentAmountAsset1 = (currentAmountAsset1 + i.payments[0].amount)
461463 let newcurrentAmountAsset2 = (currentAmountAsset2 + i.payments[1].amount)
462464 let newcurrentAmount = (currentAmount + receiveLp)
463465 let newasset1pool = (asset1pool + i.payments[0].amount)
464466 let newasset2pool = (asset2pool + i.payments[1].amount)
465467 [Reissue(fromBase58String(lpAssetId), receiveLp, true), ScriptTransfer(Address(i.caller.bytes), receiveLp, fromBase58String(lpAssetId)), IntegerEntry(pkey(Asset1, Asset2, currentKey), height), IntegerEntry(((((currentKey + "_") + kp(Asset1, Asset2)) + "_") + Asset1), newcurrentAmountAsset1), IntegerEntry(((((currentKey + "_") + kp(Asset1, Asset2)) + "_") + Asset2), newcurrentAmountAsset2), IntegerEntry(((kp(Asset1, Asset2) + "_") + currentKey), newcurrentAmount), IntegerEntry(((kp(Asset1, Asset2) + "_") + Asset1), newasset1pool), IntegerEntry(((kp(Asset1, Asset2) + "_") + Asset2), newasset2pool), IntegerEntry(Asset1, (getAmountBlockAsset(Asset1) + i.payments[0].amount)), IntegerEntry(Asset2, (getAmountBlockAsset(Asset2) + i.payments[1].amount)), IntegerEntry(lpAssetId, (getAmountBlockAsset(lpAssetId) + receiveLp))]
466468 }
467469 else throw(((((("Payment of invalid 1/1 amounts to the Pool. Try Asset2: {value:" + toString((i.payments[0].amount * (totalAsset2Pool / totalAsset1Pool)))) + "} Received: ") + toString(i.payments[1].amount)) + " Validate: ") + toString(Validate)))
468470 else throw("Invalid Pool Key.")
469471 else throw("Invalid Asset1 or Asset2!")
470472 else throw("Asset1 cannot be equal to Asset2")
471473 else throw("liquidity is currently under maintenance.")
472474 else throw("dApp is currently under maintenance.")
473475 }
474476
475477
476478
477479 @Callable(i)
478480 func removeLiquidity (Asset1,Asset2,Amount) = {
479481 let currentKey = toBase58String(i.caller.bytes)
480482 let power = getBooleanValue(this, ac)
481483 let poolActivate = getBooleanValue(this, poolAc)
482484 let acWaves = getBooleanValue(this, aWaves)
483485 let poolKey = kp(Asset1, Asset2)
484486 let key = validPoolK(poolKey)
485487 let asset1 = if ((Asset1 == waves))
486488 then if (acWaves)
487489 then WAVES
488490 else throw("The smart contract does not currently support Waves.")
489491 else fromBase58String(Asset1)
490492 let asset2 = if ((Asset2 == waves))
491493 then if (acWaves)
492494 then WAVES
493495 else throw("The smart contract does not currently support Waves.")
494496 else fromBase58String(Asset2)
495497 let USDN = fromBase58String(getStringValue(this, usdn))
496498 let USDC = fromBase58String(getStringValue(this, usdc))
497499 let USDT = fromBase58String(getStringValue(this, usdt))
498500 let NGNN = fromBase58String(getStringValue(this, ngnn))
499501 let MainAsset = fromBase58String(getStringValue(this, main))
500502 let EURN = fromBase58String(getStringValue(this, eurn))
501503 let lpAssetId = getStringValue(this, (l + kp(Asset1, Asset2)))
502504 let currentAmount = kpAddress(currentKey, kp(Asset1, Asset2))
503505 let amountLpBlocked = lpBlocked(currentKey, poolKey)
504506 let totalLP = totalAssetPool(lpAssetId, true)
505507 let totalAsset1Pool = totalAssetPool(((kp(Asset1, Asset2) + "_") + Asset1), false)
506508 let totalAsset2Pool = totalAssetPool(((kp(Asset1, Asset2) + "_") + Asset2), false)
507509 if (power)
508510 then if (!(poolActivate))
509511 then if (!((Asset1 == Asset2)))
510512 then if (if (if (if (if (if (if (if ((asset1 == USDN))
511513 then true
512514 else (asset1 == USDC))
513515 then true
514516 else (asset1 == USDT))
515517 then true
516518 else (asset1 == NGNN))
517519 then true
518520 else (asset1 == MainAsset))
519521 then true
520522 else (asset1 == WAVES))
521523 then true
522524 else (asset1 == EURN))
523525 then if (if (if (if (if (if ((asset2 == USDN))
524526 then true
525527 else (asset2 == USDC))
526528 then true
527529 else (asset2 == USDT))
528530 then true
529531 else (asset2 == NGNN))
530532 then true
531533 else (asset2 == MainAsset))
532534 then true
533535 else (asset2 == WAVES))
534536 then true
535537 else (asset2 == EURN)
536538 else false)
537539 then if ((key != false))
538540 then if (!((currentAmount == 0)))
539541 then if (((currentAmount - amountLpBlocked) >= Amount))
540542 then if (if ((totalAsset1Pool > 2))
541543 then true
542544 else (totalAsset2Pool > 2))
543545 then {
544546 let receiveAsset1 = toInt(((fraction(toBigInt(i.payments[0].amount), toBigInt(D8), toBigInt(totalLP)) * toBigInt(totalAsset1Pool)) / toBigInt(D8)))
545547 let receiveAsset2 = toInt(((fraction(toBigInt(i.payments[0].amount), toBigInt(D8), toBigInt(totalLP)) * toBigInt(totalAsset2Pool)) / toBigInt(D8)))
546548 let asset1pool = assetP(kp(Asset1, Asset2), Asset1)
547549 let asset2pool = assetP(kp(Asset1, Asset2), Asset2)
548550 let currentAmountAsset1 = poolAA(currentKey, kp(Asset1, Asset2), Asset1)
549551 let currentAmountAsset2 = poolAA(currentKey, kp(Asset1, Asset2), Asset2)
550552 let newcurrentAmountAsset1 = (currentAmountAsset1 - receiveAsset1)
551553 let newcurrentAmountAsset2 = (currentAmountAsset2 - receiveAsset2)
552554 let newcurrentAmount = (currentAmount - Amount)
553555 let newasset1pool = (asset1pool - receiveAsset1)
554556 let newasset2pool = (asset2pool - receiveAsset2)
555557 if ((i.payments[0].assetId == fromBase58String(lpAssetId)))
556558 then if ((Amount == i.payments[0].amount))
557559 then [Burn(fromBase58String(lpAssetId), Amount), ScriptTransfer(Address(i.caller.bytes), receiveAsset1, asset1), ScriptTransfer(Address(i.caller.bytes), receiveAsset2, asset2), IntegerEntry(pkey(Asset1, Asset2, currentKey), height), IntegerEntry(((((currentKey + "_") + kp(Asset1, Asset2)) + "_") + Asset1), newcurrentAmountAsset1), IntegerEntry(((((currentKey + "_") + kp(Asset1, Asset2)) + "_") + Asset2), newcurrentAmountAsset2), IntegerEntry(((kp(Asset1, Asset2) + "_") + currentKey), newcurrentAmount), IntegerEntry(((kp(Asset1, Asset2) + "_") + Asset1), newasset1pool), IntegerEntry(((kp(Asset1, Asset2) + "_") + Asset2), newasset2pool), IntegerEntry(Asset1, (getAmountBlockAsset(Asset1) - receiveAsset1)), IntegerEntry(Asset2, (getAmountBlockAsset(Asset2) - receiveAsset2)), IntegerEntry(lpAssetId, (getAmountBlockAsset(lpAssetId) - Amount))]
558560 else throw(("Withdrawal amount lower than asset lp amount. Your Lp amount available: " + toString(Amount)))
559561 else throw("Requires an lp asset as payment to remove locked amounts.")
560562 }
561563 else throw("Pool has no liquidity.")
562564 else throw(("Amount to be withdrawn greater than the amount available for withdrawal. Available: " + toString(Amount)))
563565 else throw("You have no locked values ​​in the pool")
564566 else throw("Invalid Pool Key.")
565567 else throw("Invalid Asset1 or Asset2!")
566568 else throw("Asset1 cannot be equal to Asset2")
567569 else throw("liquidity is currently under maintenance.")
568570 else throw("dApp is currently under maintenance.")
569571 }
570572
571573
572574
573575 @Callable(i)
574576 func swap (Asset1,Asset2) = {
575577 let currentKey = toBase58String(i.caller.bytes)
576578 let acWaves = getBooleanValue(this, aWaves)
577579 let power = getBooleanValue(this, ac)
578580 let swapActivate = getBooleanValue(this, swapAc)
579581 let poolKey = kp(Asset1, Asset2)
580582 let key = validPoolK(poolKey)
581583 let asset1 = i.payments[0].assetId
582584 let USDN = fromBase58String(getStringValue(this, usdn))
583585 let USDC = fromBase58String(getStringValue(this, usdc))
584586 let USDT = fromBase58String(getStringValue(this, usdt))
585587 let NGNN = fromBase58String(getStringValue(this, ngnn))
586588 let MainAsset = fromBase58String(getStringValue(this, main))
587589 let EURN = fromBase58String(getStringValue(this, eurn))
588590 let lpAssetId = getStringValue(this, (l + kp(Asset1, Asset2)))
589591 let totalAsset1 = totalAssetPool(((kp(Asset1, Asset2) + "_") + Asset1), false)
590592 let totalAsset2 = totalAssetPool(((kp(Asset1, Asset2) + "_") + Asset2), false)
591593 let feeRatePercentual = getIntegerValue(this, rateFee)
592594 let prAsset1 = (toBigInt(i.payments[0].amount) * fraction(toBigInt(D8), toBigInt(totalAsset2), toBigInt(totalAsset1)))
593595 let priceAsset1 = toInt(((prAsset1 - ((prAsset1 / toBigInt(feeRatePercentual)) * toBigInt(100))) / toBigInt(D8)))
594596 let prAsset2 = (toBigInt(i.payments[0].amount) * fraction(toBigInt(D8), toBigInt(totalAsset1), toBigInt(totalAsset2)))
595597 let priceAsset2 = toInt(((prAsset2 - ((prAsset2 / toBigInt(feeRatePercentual)) * toBigInt(100))) / toBigInt(D8)))
596598 let sendValue = if (if ((asset1 == unit))
597599 then (Asset1 == waves)
598600 else false)
599601 then priceAsset1
600602 else if ((asset1 == fromBase58String(Asset1)))
601603 then priceAsset1
602604 else priceAsset2
603605 let assetUpdatePay = if ((asset1 == unit))
604606 then waves
605607 else if ((asset1 == fromBase58String(Asset1)))
606608 then Asset1
607609 else Asset2
608610 let assetUpdateSwap = if ((asset1 == unit))
609611 then waves
610612 else if ((asset1 == fromBase58String(Asset1)))
611613 then Asset2
612614 else Asset1
613615 let assetSendSwap = if ((asset1 == unit))
614616 then WAVES
615617 else if ((asset1 == fromBase58String(Asset1)))
616618 then fromBase58String(Asset2)
617619 else fromBase58String(Asset1)
618620 if (power)
619621 then if (!(swapActivate))
620622 then if (if (!((Asset1 == Asset2)))
621623 then if (validateAsset(asset1, Asset1, acWaves))
622624 then true
623625 else validateAsset(asset1, Asset2, acWaves)
624626 else false)
625627 then if (if (if (if (if (if (if ((asset1 == USDN))
626628 then true
627629 else (asset1 == USDC))
628630 then true
629631 else (asset1 == USDT))
630632 then true
631633 else (asset1 == NGNN))
632634 then true
633635 else (asset1 == MainAsset))
634636 then true
635637 else (asset1 == EURN))
636638 then true
637639 else (asset1 == WAVES))
638640 then if ((key != false))
639641 then if ((i.payments[1].assetId == MainAsset))
640642 then if ((i.payments[1].amount == 300000))
641643 then if (if ((totalAsset1 > 2))
642644 then true
643645 else (totalAsset2 > 2))
644646 then [ScriptTransfer(Address(i.caller.bytes), sendValue, assetSendSwap), IntegerEntry(assetUpdateSwap, (getAmountBlockAsset(assetUpdateSwap) - sendValue)), IntegerEntry(((kp(Asset1, Asset2) + "_") + assetUpdateSwap), (assetP(kp(Asset1, Asset2), assetUpdateSwap) - sendValue)), IntegerEntry(((kp(Asset1, Asset2) + "_") + assetUpdatePay), (assetP(kp(Asset1, Asset2), assetUpdatePay) + i.payments[0].amount)), IntegerEntry(assetUpdatePay, (getAmountBlockAsset(assetUpdatePay) + i.payments[0].amount)), IntegerEntry(toBase58String(MainAsset), (getAmountBlockAsset(toBase58String(MainAsset)) + i.payments[1].amount))]
645647 else throw("Pool has no liquidity.")
646648 else throw("Swap denied! 0.003 AxAi is required for the swap fee.")
647649 else throw("Invalid rate asset")
648650 else throw("Invalid Swap Key.")
649651 else throw("Invalid Asset1 or Asset2!")
650652 else throw("Asset1 cannot be equal to Asset2")
651653 else throw("Swap is currently under maintenance.")
652654 else throw("dApp is currently under maintenance.")
653655 }
654656
655657
656658 @Verifier(tx)
657659 func verify () = match tx {
658660 case order: Order =>
659661 true
660662 case e: ExchangeTransaction =>
661663 true
662664 case tt: TransferTransaction =>
663665 (tt.recipient == Address(fromBase58String(getStringValue(this, "admin"))))
664666 case _ =>
665667 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
666668 }
667669

github/deemru/w8io/169f3d6 
99.29 ms