tx · 9XfY5HBmozGAMw2TN2Pty11z8nv8LAi3yD5uprRQZmrA

3P3qCUfvbDUjRnjrfM5XFMrXrzxxiad94Ez:  -0.01000000 Waves

2023.05.17 16:41 [3647457] smart account 3P3qCUfvbDUjRnjrfM5XFMrXrzxxiad94Ez > SELF 0.00000000 Waves

{ "type": 13, "id": "9XfY5HBmozGAMw2TN2Pty11z8nv8LAi3yD5uprRQZmrA", "fee": 1000000, "feeAssetId": null, "timestamp": 1684330877441, "version": 2, "chainId": 87, "sender": "3P3qCUfvbDUjRnjrfM5XFMrXrzxxiad94Ez", "senderPublicKey": "3zaQerEjh4SK1xhin9zzs5qr337aLRFhz7z1ckjFGhMz", "proofs": [ "4kgsCmTBt92rLS99pHhFWUB5eBiyoGaG4TNVzjrdsSAtwanQYyF1na9nkZLxj1RavEkhLKjHvi7tFcd161WiYSsp" ], "script": "base64:BgKyBAgCEgMKAQESAwoBARIDCgEIIg5mcmVlX3RvX2JvcnJvbSINVVNETl9BU1NFVF9JRCIEYm9zcyIOYWRtaW5QdWJsaWNLZXkiDFdYX1NXQVBfREFQUCIJYXNzZXRzX2luIgpnZXRCYWxhbmNlIgdhc3NldElkIgckbWF0Y2gwIgFiIghnZXRCYXNlMSIEZGF0YSIGcF9kYXRhIgFhIgJhMiIHYXNzZXRJbiIIYW1vdW50SW4iCGdldEJhc2UyIgJwMSIBdCINZ2V0QXNzZXRCeXRlcyIHc3dhcF93eCIBcCIFYXNzZXQiACIGYW1vdW50IgRjYWxsIglzd2FwX3N3b3AiBHN3YXAiC3N3YXBfcHV6emxlIghhc3NldE91dCIGdWNoZWNrIgJpZCIBaCIBaSIEYW1udCIKY3VycmVudEJhbCIKZGF0YV9hcnJheSILJHQwMzQzMzM0ODkiCyR0MDM0OTQzNTMyIgJ0MSILJHQwMzUzNzM1NzUiAnAyIgJ0MiILJHQwMzU4MDM2MTgiAnAzIgJ0MyIDaWR1IhJhbW91bnRfYmVmX2Fzc2V0SW4iDG5ld19hbW91bnRJbiIRYW1vdW50X2JlZl9hc3NldDEiBXN3YXAxIgJuYiIRYW1vdW50X2JlZl9hc3NldDIiBXN3YXAyIgNuYjIiFWFtb3VudF9iZWZfYmFzZV9hc3NldCIFc3dhcDMiA25iMyIIdHJlc2hvbGQiAnR4IgZ2ZXJpZnkOAAFhCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUEc3Q0h2QmF0SHBDaHdtOHJlSDc0d2ZFd2sxUEhjOFJxeQABYgEgtiYpwwT1zlORpA5LdSQvZIxRsfrfr1QpvUjSHSqyqtEAAWMJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQUkU1S0g5b1BHZkZQczdmR25RY0o0d05zaEVEVVBHajF0AAFkASCv/x58doefXfwer5+x7Fznjj3iPlshsuAGcU0W/5sVbQABZQkBB0FkZHJlc3MBARoBVy4qNTWxDbfxeT7ht0bQnnRSTXsx0IOuBgABZgkAzAgCAixERzJ4RmtQZER3S1VvQmt6R0FoUXRMcFNHemZYTGlDWVBFemVLSDJBZDI0cAUDbmlsAQFnAQFoBAFpBQFoAwkAAQIFAWkCCkJ5dGVWZWN0b3IEAWoFAWkJAPAHAgUEdGhpcwUBaggJAO8HAQUEdGhpcwlhdmFpbGFibGUBAWsBAWwEAW0JALwJAgUBbAIBXwQBbgkAkQMCBQFtAAAEAW8JAJEDAgUBbQABBAFwCQCRAwIFAWYJAQV2YWx1ZQEJALYJAQkAkQMCBQFtAAIEAXEJAJEDAgUBbQADCQCWCgQFAW4FAW8FAXAFAXEBAXIBAWwEAW0JALUJAgUBbAIBXwQBcwkAkQMCBQFtAAAEAXQJAJEDAgUBbQABCQCUCgIFAXMFAXQBAXUBAWgDCQAAAgUBaAIFV0FWRVMFBHVuaXQJANkEAQUBaAEBdgQBdwF4AXoBbgQBQQkA/AcEBQFlAgRzd2FwCQDMCAIAAQkAzAgCBQFuCQDMCAIJAKUIAQUEdGhpcwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEBdQEFAXgFAXoFA25pbAMJAAACBQFBBQFBBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAUIDAXcBeAF6BAFDCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQF3AghleGNoYW5nZQkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBAXUBBQF4BQF6BQNuaWwDCQAAAgUBQwUBQwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQFEBAF3AXgBegFFBAFDCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQF3AgRzd2FwCQDMCAIFAUUJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQF1AQUBeAUBegUDbmlsAwkAAAIFAUMFAUMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEBRgEBRwQBaQkA6QcBBQFHAwkAAQIFAWkCA0ludAQBSAUBaQUBSAAAAwFJAQZib3Jyb3cBAUoDCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFAWEJAMwIAgUBYwkAzAgCBQR0aGlzBQNuaWwIBQFJBmNhbGxlcgkAAgECHnlvdSBhcmUgbm90IGFsbG93ZWQgdG8gYm9ycm93IQQBSwkBAWcBBQFiAwkAZgIFAUoFAUsJAAIBAhxZb3UgY2Fubm5vdCBib3Jyb3cgdGhhdCBtdWNoCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFJBmNhbGxlcgUBSgUBYgUDbmlsAUkBC3NldFRyZXNob2xkAQFKAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQFhCQDMCAIFAWMJAMwIAgUEdGhpcwUDbmlsCAUBSQZjYWxsZXIJAAIBAh95b3UgYXJlIG5vdCBhbGxvd2VkIHRvIGRvIHRoYXQhCQDMCAIJAQxJbnRlZ2VyRW50cnkCAgh0cmVzaG9sZAUBSgUDbmlsAUkBAXkBAWwDAwkBAiE9AggFAUkGY2FsbGVyBQR0aGlzCQECIT0CCAUBSQZjYWxsZXIFAWMHCQACAQIbeW91IGFyZSBub3QgYWxsb3dlZCB0byBhcmIhBAFMCQC8CQIFAWwCAXwEAU0JAQFrAQkAkQMCBQFMAAAEAW4IBQFNAl8xBAFvCAUBTQJfMgQBcAgFAU0CXzMEAXEIBQFNAl80BAFOCQEBcgEJAJEDAgUBTAABBAFzCAUBTgJfMQQBTwgFAU4CXzIEAVAJAQFyAQkAkQMCBQFMAAIEAVEIBQFQAl8xBAFSCAUBUAJfMgQBUwkBAXIBCQCRAwIFAUwAAwQBVAgFAVMCXzEEAVUIBQFTAl8yBAFWAwkAZgIJALECAQkAkQMCBQFMAAQAAQkAvAkCCQCRAwIFAUwABAIBLQUDbmlsAwMDCQBmAgkAkAMBBQFWAAAJAGYCCQEBRgEJANkEAQkAkQMCBQFWAAAAAAcGCQBnAgABCQCxAgEJAJEDAgUBTAAEBAFXCQEBZwEJAQF1AQUBcAMJAAACBQFXBQFXBAFYAwkAZgIJAQV2YWx1ZQEJALYJAQUBcQUBVwUBVwkBBXZhbHVlAQkAtgkBBQFxAwkAAAIFAVgFAVgEAVkJAQFnAQkBAXUBBQFuAwkAAAIFAVkFAVkEAVoDCQAAAgUBTwIBVwkBAXYEBQFzBQFwBQFYBQFuAwkAAAIFAU8CAVMJAQFCAwUBcwUBcAUBWAkBAUQEBQFzBQFwBQFYBQFuAwkAAAIFAVoFAVoEAmFhCQBlAgkBAWcBCQEBdQEFAW4FAVkDCQAAAgUCYWEFAmFhBAJhYgkBAWcBCQEBdQEFAW8DCQAAAgUCYWIFAmFiBAJhYwMJAAACBQFSAgFXCQEBdgQFAVEFAW4FAmFhBQFvAwkAAAIFAVICAVMJAQFCAwUBUQUBbgUCYWEJAQFEBAUBUQUBbgUCYWEFAW8DCQAAAgUCYWMFAmFjBAJhZAkAZQIJAQFnAQkBAXUBBQFvBQJhYgMJAAACBQJhZAUCYWQEAmFlCQEBZwEJAQF1AQUBcAMJAAACBQJhZQUCYWUEAmFmAwkAAAIFAVUCAVcJAQF2BAUBVAUBbwUCYWQFAXADCQAAAgUBVQIBUwkBAUIDBQFUBQFvBQJhZAkBAUQEBQFUBQFvBQJhZAUBcAMJAAACBQJhZgUCYWYEAmFnCQBlAgkBAWcBCQEBdQEFAXAFAmFlAwkAAAIFAmFnBQJhZwQCYWgJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwIIdHJlc2hvbGQA8JMJAwkAZgIFAmFnCQBkAgUBWAUCYWgJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAUkGY2FsbGVyCQBlAgUCYWcFAVgJAQF1AQUBcAUDbmlsCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgISb3JpZ2luIGFtb3VudEluID0gBQFxAhEsIG5ld19hbW91bnRJbiA9IAkApAMBBQFYAgwsIG5ld0JhbF8xOiAJAKQDAQUCYWECDCwgbmV3QmFsXzI6IAkApAMBBQJhZAIMLCBuZXdCYWxfMzogCQCkAwEFAmFnCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwBAmFpAQJhagADCQDIEwMIBQJhaQlib2R5Qnl0ZXMJAJEDAggFAmFpBnByb29mcwAACAUCYWkPc2VuZGVyUHVibGljS2V5BgkAyBMDCAUCYWkJYm9keUJ5dGVzCQCRAwIIBQJhaQZwcm9vZnMAAAUBZO7XlTU=", "height": 3647457, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: H8HH31pmcwgAD87pa5sTUBqBmoYc6U3oyxL1UZ7bngGJ Next: GWVK25QaqWovGAgHhDoZqrdTC149bXD18DPKAascV4zf Diff:
OldNewDifferences
1212 let WX_SWAP_DAPP = Address(base58'3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93')
1313
1414 let assets_in = ["DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p"]
15-
16-let blacklisted_generators = ["3PA1KvFfq9VuJjg45p2ytGgaNjrgnLSgf4r", "3P23fi1qfVw6RVDn4CH2a5nNouEtWNQ4THs"]
17-
18-func check_generator (h) = match blockInfoByHeight(h) {
19- case block: BlockInfo =>
20- toString(block.generator)
21- case _ =>
22- throw("Can't find block")
23-}
24-
2515
2616 func getBalance (assetId) = match assetId {
2717 case b: ByteVector =>
111101 else false)
112102 then throw("you are not allowed to arb!")
113103 else {
114- let current_generator = check_generator(height)
115- if (containsElement(blacklisted_generators, current_generator))
116- then throw("..I..")
117- else {
118- let data_array = split_4C(data, "|")
119- let $t034303486 = getBase1(data_array[0])
120- let a = $t034303486._1
121- let a2 = $t034303486._2
122- let assetIn = $t034303486._3
123- let amountIn = $t034303486._4
124- let $t034913529 = getBase2(data_array[1])
125- let p1 = $t034913529._1
126- let t1 = $t034913529._2
127- let $t035343572 = getBase2(data_array[2])
128- let p2 = $t035343572._1
129- let t2 = $t035343572._2
130- let $t035773615 = getBase2(data_array[3])
131- let p3 = $t035773615._1
132- let t3 = $t035773615._2
133- let idu = if ((size(data_array[4]) > 1))
134- then split_4C(data_array[4], "-")
135- else nil
136- if (if (if ((size(idu) > 0))
137- then (ucheck(fromBase58String(idu[0])) > 0)
138- else false)
139- then true
140- else (1 >= size(data_array[4])))
104+ let data_array = split_4C(data, "|")
105+ let $t034333489 = getBase1(data_array[0])
106+ let a = $t034333489._1
107+ let a2 = $t034333489._2
108+ let assetIn = $t034333489._3
109+ let amountIn = $t034333489._4
110+ let $t034943532 = getBase2(data_array[1])
111+ let p1 = $t034943532._1
112+ let t1 = $t034943532._2
113+ let $t035373575 = getBase2(data_array[2])
114+ let p2 = $t035373575._1
115+ let t2 = $t035373575._2
116+ let $t035803618 = getBase2(data_array[3])
117+ let p3 = $t035803618._1
118+ let t3 = $t035803618._2
119+ let idu = if ((size(data_array[4]) > 1))
120+ then split_4C(data_array[4], "-")
121+ else nil
122+ if (if (if ((size(idu) > 0))
123+ then (ucheck(fromBase58String(idu[0])) > 0)
124+ else false)
125+ then true
126+ else (1 >= size(data_array[4])))
127+ then {
128+ let amount_bef_assetIn = getBalance(getAssetBytes(assetIn))
129+ if ((amount_bef_assetIn == amount_bef_assetIn))
141130 then {
142- let amount_bef_assetIn = getBalance(getAssetBytes(assetIn))
143- if ((amount_bef_assetIn == amount_bef_assetIn))
131+ let new_amountIn = if ((value(parseInt(amountIn)) > amount_bef_assetIn))
132+ then amount_bef_assetIn
133+ else value(parseInt(amountIn))
134+ if ((new_amountIn == new_amountIn))
144135 then {
145- let new_amountIn = if ((value(parseInt(amountIn)) > amount_bef_assetIn))
146- then amount_bef_assetIn
147- else value(parseInt(amountIn))
148- if ((new_amountIn == new_amountIn))
136+ let amount_bef_asset1 = getBalance(getAssetBytes(a))
137+ if ((amount_bef_asset1 == amount_bef_asset1))
149138 then {
150- let amount_bef_asset1 = getBalance(getAssetBytes(a))
151- if ((amount_bef_asset1 == amount_bef_asset1))
139+ let swap1 = if ((t1 == "W"))
140+ then swap_wx(p1, assetIn, new_amountIn, a)
141+ else if ((t1 == "S"))
142+ then swap_swop(p1, assetIn, new_amountIn)
143+ else swap_puzzle(p1, assetIn, new_amountIn, a)
144+ if ((swap1 == swap1))
152145 then {
153- let swap1 = if ((t1 == "W"))
154- then swap_wx(p1, assetIn, new_amountIn, a)
155- else if ((t1 == "S"))
156- then swap_swop(p1, assetIn, new_amountIn)
157- else swap_puzzle(p1, assetIn, new_amountIn, a)
158- if ((swap1 == swap1))
146+ let nb = (getBalance(getAssetBytes(a)) - amount_bef_asset1)
147+ if ((nb == nb))
159148 then {
160- let nb = (getBalance(getAssetBytes(a)) - amount_bef_asset1)
161- if ((nb == nb))
149+ let amount_bef_asset2 = getBalance(getAssetBytes(a2))
150+ if ((amount_bef_asset2 == amount_bef_asset2))
162151 then {
163- let amount_bef_asset2 = getBalance(getAssetBytes(a2))
164- if ((amount_bef_asset2 == amount_bef_asset2))
152+ let swap2 = if ((t2 == "W"))
153+ then swap_wx(p2, a, nb, a2)
154+ else if ((t2 == "S"))
155+ then swap_swop(p2, a, nb)
156+ else swap_puzzle(p2, a, nb, a2)
157+ if ((swap2 == swap2))
165158 then {
166- let swap2 = if ((t2 == "W"))
167- then swap_wx(p2, a, nb, a2)
168- else if ((t2 == "S"))
169- then swap_swop(p2, a, nb)
170- else swap_puzzle(p2, a, nb, a2)
171- if ((swap2 == swap2))
159+ let nb2 = (getBalance(getAssetBytes(a2)) - amount_bef_asset2)
160+ if ((nb2 == nb2))
172161 then {
173- let nb2 = (getBalance(getAssetBytes(a2)) - amount_bef_asset2)
174- if ((nb2 == nb2))
162+ let amount_bef_base_asset = getBalance(getAssetBytes(assetIn))
163+ if ((amount_bef_base_asset == amount_bef_base_asset))
175164 then {
176- let amount_bef_base_asset = getBalance(getAssetBytes(assetIn))
177- if ((amount_bef_base_asset == amount_bef_base_asset))
165+ let swap3 = if ((t3 == "W"))
166+ then swap_wx(p3, a2, nb2, assetIn)
167+ else if ((t3 == "S"))
168+ then swap_swop(p3, a2, nb2)
169+ else swap_puzzle(p3, a2, nb2, assetIn)
170+ if ((swap3 == swap3))
178171 then {
179- let swap3 = if ((t3 == "W"))
180- then swap_wx(p3, a2, nb2, assetIn)
181- else if ((t3 == "S"))
182- then swap_swop(p3, a2, nb2)
183- else swap_puzzle(p3, a2, nb2, assetIn)
184- if ((swap3 == swap3))
172+ let nb3 = (getBalance(getAssetBytes(assetIn)) - amount_bef_base_asset)
173+ if ((nb3 == nb3))
185174 then {
186- let nb3 = (getBalance(getAssetBytes(assetIn)) - amount_bef_base_asset)
187- if ((nb3 == nb3))
188- then {
189- let treshold = valueOrElse(getInteger(this, "treshold"), 150000)
190- if ((nb3 > (new_amountIn + treshold)))
191- then [ScriptTransfer(i.caller, (nb3 - new_amountIn), getAssetBytes(assetIn))]
192- else throw(((((((((("origin amountIn = " + amountIn) + ", new_amountIn = ") + toString(new_amountIn)) + ", newBal_1: ") + toString(nb)) + ", newBal_2: ") + toString(nb2)) + ", newBal_3: ") + toString(nb3)))
193- }
194- else throw("Strict value is not equal to itself.")
175+ let treshold = valueOrElse(getInteger(this, "treshold"), 150000)
176+ if ((nb3 > (new_amountIn + treshold)))
177+ then [ScriptTransfer(i.caller, (nb3 - new_amountIn), getAssetBytes(assetIn))]
178+ else throw(((((((((("origin amountIn = " + amountIn) + ", new_amountIn = ") + toString(new_amountIn)) + ", newBal_1: ") + toString(nb)) + ", newBal_2: ") + toString(nb2)) + ", newBal_3: ") + toString(nb3)))
195179 }
196180 else throw("Strict value is not equal to itself.")
197181 }
213197 }
214198 else throw("Strict value is not equal to itself.")
215199 }
216- else nil
200+ else throw("Strict value is not equal to itself.")
217201 }
202+ else nil
218203 }
219204
220205
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let free_to_borrom = addressFromStringValue("3PG7CHvBatHpChwm8reH74wfEwk1PHc8Rqy")
55
66 let USDN_ASSET_ID = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
77
88 let boss = addressFromStringValue("3PRE5KH9oPGfFPs7fGnQcJ4wNshEDUPGj1t")
99
1010 let adminPublicKey = base58'Cr1ybL2JGg9GwJHA2JwqxBPfSW6Q7Jg4HvNrsEiCsHu6'
1111
1212 let WX_SWAP_DAPP = Address(base58'3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93')
1313
1414 let assets_in = ["DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p"]
15-
16-let blacklisted_generators = ["3PA1KvFfq9VuJjg45p2ytGgaNjrgnLSgf4r", "3P23fi1qfVw6RVDn4CH2a5nNouEtWNQ4THs"]
17-
18-func check_generator (h) = match blockInfoByHeight(h) {
19- case block: BlockInfo =>
20- toString(block.generator)
21- case _ =>
22- throw("Can't find block")
23-}
24-
2515
2616 func getBalance (assetId) = match assetId {
2717 case b: ByteVector =>
2818 assetBalance(this, b)
2919 case _ =>
3020 wavesBalance(this).available
3121 }
3222
3323
3424 func getBase1 (data) = {
3525 let p_data = split_4C(data, "_")
3626 let a = p_data[0]
3727 let a2 = p_data[1]
3828 let assetIn = assets_in[value(parseInt(p_data[2]))]
3929 let amountIn = p_data[3]
4030 $Tuple4(a, a2, assetIn, amountIn)
4131 }
4232
4333
4434 func getBase2 (data) = {
4535 let p_data = split(data, "_")
4636 let p1 = p_data[0]
4737 let t = p_data[1]
4838 $Tuple2(p1, t)
4939 }
5040
5141
5242 func getAssetBytes (assetId) = if ((assetId == "WAVES"))
5343 then unit
5444 else fromBase58String(assetId)
5545
5646
5747 func swap_wx (p,asset,amount,a) = {
5848 let call = invoke(WX_SWAP_DAPP, "swap", [1, a, toString(this)], [AttachedPayment(getAssetBytes(asset), amount)])
5949 if ((call == call))
6050 then nil
6151 else throw("Strict value is not equal to itself.")
6252 }
6353
6454
6555 func swap_swop (p,asset,amount) = {
6656 let swap = invoke(Address(fromBase58String(p)), "exchange", [1], [AttachedPayment(getAssetBytes(asset), amount)])
6757 if ((swap == swap))
6858 then nil
6959 else throw("Strict value is not equal to itself.")
7060 }
7161
7262
7363 func swap_puzzle (p,asset,amount,assetOut) = {
7464 let swap = invoke(Address(fromBase58String(p)), "swap", [assetOut, 1], [AttachedPayment(getAssetBytes(asset), amount)])
7565 if ((swap == swap))
7666 then nil
7767 else throw("Strict value is not equal to itself.")
7868 }
7969
8070
8171 func ucheck (id) = match transactionHeightById(id) {
8272 case h: Int =>
8373 h
8474 case _ =>
8575 0
8676 }
8777
8878
8979 @Callable(i)
9080 func borrow (amnt) = if (!(containsElement([free_to_borrom, boss, this], i.caller)))
9181 then throw("you are not allowed to borrow!")
9282 else {
9383 let currentBal = getBalance(USDN_ASSET_ID)
9484 if ((amnt > currentBal))
9585 then throw("You cannnot borrow that much")
9686 else [ScriptTransfer(i.caller, amnt, USDN_ASSET_ID)]
9787 }
9888
9989
10090
10191 @Callable(i)
10292 func setTreshold (amnt) = if (!(containsElement([free_to_borrom, boss, this], i.caller)))
10393 then throw("you are not allowed to do that!")
10494 else [IntegerEntry("treshold", amnt)]
10595
10696
10797
10898 @Callable(i)
10999 func y (data) = if (if ((i.caller != this))
110100 then (i.caller != boss)
111101 else false)
112102 then throw("you are not allowed to arb!")
113103 else {
114- let current_generator = check_generator(height)
115- if (containsElement(blacklisted_generators, current_generator))
116- then throw("..I..")
117- else {
118- let data_array = split_4C(data, "|")
119- let $t034303486 = getBase1(data_array[0])
120- let a = $t034303486._1
121- let a2 = $t034303486._2
122- let assetIn = $t034303486._3
123- let amountIn = $t034303486._4
124- let $t034913529 = getBase2(data_array[1])
125- let p1 = $t034913529._1
126- let t1 = $t034913529._2
127- let $t035343572 = getBase2(data_array[2])
128- let p2 = $t035343572._1
129- let t2 = $t035343572._2
130- let $t035773615 = getBase2(data_array[3])
131- let p3 = $t035773615._1
132- let t3 = $t035773615._2
133- let idu = if ((size(data_array[4]) > 1))
134- then split_4C(data_array[4], "-")
135- else nil
136- if (if (if ((size(idu) > 0))
137- then (ucheck(fromBase58String(idu[0])) > 0)
138- else false)
139- then true
140- else (1 >= size(data_array[4])))
104+ let data_array = split_4C(data, "|")
105+ let $t034333489 = getBase1(data_array[0])
106+ let a = $t034333489._1
107+ let a2 = $t034333489._2
108+ let assetIn = $t034333489._3
109+ let amountIn = $t034333489._4
110+ let $t034943532 = getBase2(data_array[1])
111+ let p1 = $t034943532._1
112+ let t1 = $t034943532._2
113+ let $t035373575 = getBase2(data_array[2])
114+ let p2 = $t035373575._1
115+ let t2 = $t035373575._2
116+ let $t035803618 = getBase2(data_array[3])
117+ let p3 = $t035803618._1
118+ let t3 = $t035803618._2
119+ let idu = if ((size(data_array[4]) > 1))
120+ then split_4C(data_array[4], "-")
121+ else nil
122+ if (if (if ((size(idu) > 0))
123+ then (ucheck(fromBase58String(idu[0])) > 0)
124+ else false)
125+ then true
126+ else (1 >= size(data_array[4])))
127+ then {
128+ let amount_bef_assetIn = getBalance(getAssetBytes(assetIn))
129+ if ((amount_bef_assetIn == amount_bef_assetIn))
141130 then {
142- let amount_bef_assetIn = getBalance(getAssetBytes(assetIn))
143- if ((amount_bef_assetIn == amount_bef_assetIn))
131+ let new_amountIn = if ((value(parseInt(amountIn)) > amount_bef_assetIn))
132+ then amount_bef_assetIn
133+ else value(parseInt(amountIn))
134+ if ((new_amountIn == new_amountIn))
144135 then {
145- let new_amountIn = if ((value(parseInt(amountIn)) > amount_bef_assetIn))
146- then amount_bef_assetIn
147- else value(parseInt(amountIn))
148- if ((new_amountIn == new_amountIn))
136+ let amount_bef_asset1 = getBalance(getAssetBytes(a))
137+ if ((amount_bef_asset1 == amount_bef_asset1))
149138 then {
150- let amount_bef_asset1 = getBalance(getAssetBytes(a))
151- if ((amount_bef_asset1 == amount_bef_asset1))
139+ let swap1 = if ((t1 == "W"))
140+ then swap_wx(p1, assetIn, new_amountIn, a)
141+ else if ((t1 == "S"))
142+ then swap_swop(p1, assetIn, new_amountIn)
143+ else swap_puzzle(p1, assetIn, new_amountIn, a)
144+ if ((swap1 == swap1))
152145 then {
153- let swap1 = if ((t1 == "W"))
154- then swap_wx(p1, assetIn, new_amountIn, a)
155- else if ((t1 == "S"))
156- then swap_swop(p1, assetIn, new_amountIn)
157- else swap_puzzle(p1, assetIn, new_amountIn, a)
158- if ((swap1 == swap1))
146+ let nb = (getBalance(getAssetBytes(a)) - amount_bef_asset1)
147+ if ((nb == nb))
159148 then {
160- let nb = (getBalance(getAssetBytes(a)) - amount_bef_asset1)
161- if ((nb == nb))
149+ let amount_bef_asset2 = getBalance(getAssetBytes(a2))
150+ if ((amount_bef_asset2 == amount_bef_asset2))
162151 then {
163- let amount_bef_asset2 = getBalance(getAssetBytes(a2))
164- if ((amount_bef_asset2 == amount_bef_asset2))
152+ let swap2 = if ((t2 == "W"))
153+ then swap_wx(p2, a, nb, a2)
154+ else if ((t2 == "S"))
155+ then swap_swop(p2, a, nb)
156+ else swap_puzzle(p2, a, nb, a2)
157+ if ((swap2 == swap2))
165158 then {
166- let swap2 = if ((t2 == "W"))
167- then swap_wx(p2, a, nb, a2)
168- else if ((t2 == "S"))
169- then swap_swop(p2, a, nb)
170- else swap_puzzle(p2, a, nb, a2)
171- if ((swap2 == swap2))
159+ let nb2 = (getBalance(getAssetBytes(a2)) - amount_bef_asset2)
160+ if ((nb2 == nb2))
172161 then {
173- let nb2 = (getBalance(getAssetBytes(a2)) - amount_bef_asset2)
174- if ((nb2 == nb2))
162+ let amount_bef_base_asset = getBalance(getAssetBytes(assetIn))
163+ if ((amount_bef_base_asset == amount_bef_base_asset))
175164 then {
176- let amount_bef_base_asset = getBalance(getAssetBytes(assetIn))
177- if ((amount_bef_base_asset == amount_bef_base_asset))
165+ let swap3 = if ((t3 == "W"))
166+ then swap_wx(p3, a2, nb2, assetIn)
167+ else if ((t3 == "S"))
168+ then swap_swop(p3, a2, nb2)
169+ else swap_puzzle(p3, a2, nb2, assetIn)
170+ if ((swap3 == swap3))
178171 then {
179- let swap3 = if ((t3 == "W"))
180- then swap_wx(p3, a2, nb2, assetIn)
181- else if ((t3 == "S"))
182- then swap_swop(p3, a2, nb2)
183- else swap_puzzle(p3, a2, nb2, assetIn)
184- if ((swap3 == swap3))
172+ let nb3 = (getBalance(getAssetBytes(assetIn)) - amount_bef_base_asset)
173+ if ((nb3 == nb3))
185174 then {
186- let nb3 = (getBalance(getAssetBytes(assetIn)) - amount_bef_base_asset)
187- if ((nb3 == nb3))
188- then {
189- let treshold = valueOrElse(getInteger(this, "treshold"), 150000)
190- if ((nb3 > (new_amountIn + treshold)))
191- then [ScriptTransfer(i.caller, (nb3 - new_amountIn), getAssetBytes(assetIn))]
192- else throw(((((((((("origin amountIn = " + amountIn) + ", new_amountIn = ") + toString(new_amountIn)) + ", newBal_1: ") + toString(nb)) + ", newBal_2: ") + toString(nb2)) + ", newBal_3: ") + toString(nb3)))
193- }
194- else throw("Strict value is not equal to itself.")
175+ let treshold = valueOrElse(getInteger(this, "treshold"), 150000)
176+ if ((nb3 > (new_amountIn + treshold)))
177+ then [ScriptTransfer(i.caller, (nb3 - new_amountIn), getAssetBytes(assetIn))]
178+ else throw(((((((((("origin amountIn = " + amountIn) + ", new_amountIn = ") + toString(new_amountIn)) + ", newBal_1: ") + toString(nb)) + ", newBal_2: ") + toString(nb2)) + ", newBal_3: ") + toString(nb3)))
195179 }
196180 else throw("Strict value is not equal to itself.")
197181 }
198182 else throw("Strict value is not equal to itself.")
199183 }
200184 else throw("Strict value is not equal to itself.")
201185 }
202186 else throw("Strict value is not equal to itself.")
203187 }
204188 else throw("Strict value is not equal to itself.")
205189 }
206190 else throw("Strict value is not equal to itself.")
207191 }
208192 else throw("Strict value is not equal to itself.")
209193 }
210194 else throw("Strict value is not equal to itself.")
211195 }
212196 else throw("Strict value is not equal to itself.")
213197 }
214198 else throw("Strict value is not equal to itself.")
215199 }
216- else nil
200+ else throw("Strict value is not equal to itself.")
217201 }
202+ else nil
218203 }
219204
220205
221206 @Verifier(tx)
222207 func verify () = if (sigVerify_128Kb(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
223208 then true
224209 else sigVerify_128Kb(tx.bodyBytes, tx.proofs[0], adminPublicKey)
225210

github/deemru/w8io/3ef1775 
50.28 ms