tx · A28DexY1VQiARddEDy6kapdVZ9x2RhvnzGoFdbx4AUNP

3P3qCUfvbDUjRnjrfM5XFMrXrzxxiad94Ez:  -0.01000000 Waves

2023.02.09 08:16 [3507207] smart account 3P3qCUfvbDUjRnjrfM5XFMrXrzxxiad94Ez > SELF 0.00000000 Waves

{ "type": 13, "id": "A28DexY1VQiARddEDy6kapdVZ9x2RhvnzGoFdbx4AUNP", "fee": 1000000, "feeAssetId": null, "timestamp": 1675919847064, "version": 2, "chainId": 87, "sender": "3P3qCUfvbDUjRnjrfM5XFMrXrzxxiad94Ez", "senderPublicKey": "3zaQerEjh4SK1xhin9zzs5qr337aLRFhz7z1ckjFGhMz", "proofs": [ "5q7WHZs4yC9eGJtzLe4RczeF6EMa8jjktAcPqauxPjurpiGn3zytphk6D9R7j7J7HJVdpSDc21XEf14UNPbGDbKU" ], "script": "base64:BgLEBQgCEgMKAQESAwoBCCIOZnJlZV90b19ib3Jyb20iDVVTRE5fQVNTRVRfSUQiBGJvc3MiDmFkbWluUHVibGljS2V5IglnZXRQdXRHZXQiCWlzX3N0YWJsZSIHcHV0RnVuYyIHZ2V0RnVuYyIKZ2V0QmFsYW5jZSIHYXNzZXRJZCIHJG1hdGNoMCIBYiIIZ2V0QmFzZTEiBGRhdGEiBnBfZGF0YSIBYSICYTIiB2Fzc2V0SW4iCGFtb3VudEluIghnZXRCYXNlMiICcDEiA2xwMSILaXNfc3RhYmxlXzEiAXQiACINZ2V0QXNzZXRCeXRlcyIHc3dhcF93eCIBcCICbHAiBWFzc2V0IgZhbW91bnQiCHB1dEZ1bmMxIghnZXRGdW5jMSIEcHV0MSILbHAxX2Fzc2V0aWQiC2xwQmFsYW5jZV8xIgRnZXQxIglzd2FwX3N3b3AiBHN3YXAiAWkiBGFtbnQiCmN1cnJlbnRCYWwiCmRhdGFfYXJyYXkiCyR0MDI1OTQyNjUwIgskdDAyNjU1MjcxMSICdDEiCyR0MDI3MTYyNzcyIgJwMiIDbHAyIgtpc19zdGFibGVfMiICdDIiCyR0MDI3NzcyODMzIgJwMyIDbHAzIgtpc19zdGFibGVfMyICdDMiCyR0MDI4MzkyOTA1IgskdDAyOTEwMjk3NiIIcHV0RnVuYzIiCGdldEZ1bmMyIgskdDAyOTgxMzA0NyIIcHV0RnVuYzMiCGdldEZ1bmMzIhJhbW91bnRfYmVmX2Fzc2V0SW4iDG5ld19hbW91bnRJbiIRYW1vdW50X2JlZl9hc3NldDEiBXN3YXAxIgJuYiIRYW1vdW50X2JlZl9hc3NldDIiBXN3YXAyIgNuYjIiFWFtb3VudF9iZWZfYmFzZV9hc3NldCIFc3dhcDMiA25iMyICdHgiBnZlcmlmeQsAAWEJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQRzdDSHZCYXRIcENod204cmVINzR3ZkV3azFQSGM4UnF5AAFiASC2JinDBPXOU5GkDkt1JC9kjFGx+t+vVCm9SNIdKrKq0QABYwkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BSRTVLSDlvUEdmRlBzN2ZHblFjSjR3TnNoRURVUEdqMXQAAWQBIK//Hnx2h59d/B6vn7HsXOeOPeI+WyGy4AZxTRb/mxVtAQFlAQFmBAFnAwkAAAIFAWYAAQILcHV0T25lVGtuVjICCXB1dE9uZVRrbgQBaAMJAAACBQFmAAECC2dldE9uZVRrblYyAglnZXRPbmVUa24JAJQKAgUBZwUBaAEBaQEBagQBawUBagMJAAECBQFrAgpCeXRlVmVjdG9yBAFsBQFrCQDwBwIFBHRoaXMFAWwICQDvBwEFBHRoaXMJYXZhaWxhYmxlAQFtAQFuBAFvCQC1CQIFAW4CAV8EAXAJAJEDAgUBbwAABAFxCQCRAwIFAW8AAQQBcgkAkQMCBQFvAAIEAXMJAJEDAgUBbwADCQCWCgQFAXAFAXEFAXIFAXMBAXQBAW4EAW8JALUJAgUBbgIBXwQBdQkAkQMCBQFvAAAEAXYJAJEDAgUBbwABBAF3CQCRAwIFAW8AAgQBeAkAkQMCBQFvAAMJAJYKBAUBdQUBdgUBdwUBeAEBegEBagMJAAACBQFqAgVXQVZFUwUEdW5pdAkA2QQBBQFqAQFBBwFCAUMBRAFFAUYBRwFwBAFICQD8BwQJAQdBZGRyZXNzAQkA2QQBBQFCBQFGCQDMCAIAAQkAzAgCBwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEBegEFAUQFAUUFA25pbAMJAAACBQFIBQFIBAFJCQDZBAEFAUMEAUoJAQFpAQUBSQMJAAACBQFKBQFKBAFLCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQFCBQFHCQDMCAIFAXAJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAUkFAUoFA25pbAMJAAACBQFLBQFLBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAUwDAUIBRAFFBAFNCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQFCAghleGNoYW5nZQkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBAXoBBQFEBQFFBQNuaWwDCQAAAgUBTQUBTQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAgFOAQZib3Jyb3cBAU8DAwkBAiE9AggFAU4GY2FsbGVyBQFjCQECIT0CCAUBTgZjYWxsZXIFAWEHCQACAQIeeW91IGFyZSBub3QgYWxsb3dlZCB0byBib3Jyb3chBAFQCQEBaQEFAWIDCQBmAgUBTwUBUAkAAgECHFlvdSBjYW5ubm90IGJvcnJvdyB0aGF0IG11Y2gJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAU4GY2FsbGVyBQFPBQFiBQNuaWwBTgEBeQEBbgMDCQECIT0CCAUBTgZjYWxsZXIFBHRoaXMJAQIhPQIIBQFOBmNhbGxlcgUBYwcJAAIBAht5b3UgYXJlIG5vdCBhbGxvd2VkIHRvIGFyYiEEAVEJALwJAgUBbgIBfAQBUgkBAW0BCQCRAwIFAVEAAAQBcAgFAVICXzEEAXEIBQFSAl8yBAFyCAUBUgJfMwQBcwgFAVICXzQEAVMJAQF0AQkAkQMCBQFRAAEEAXUIBQFTAl8xBAF2CAUBUwJfMgQBdwgFAVMCXzMEAVQIBQFTAl80BAFVCQEBdAEJAJEDAgUBUQACBAFWCAUBVQJfMQQBVwgFAVUCXzIEAVgIBQFVAl8zBAFZCAUBVQJfNAQBWgkBAXQBCQCRAwIFAVEAAwQCYWEIBQFaAl8xBAJhYggFAVoCXzIEAmFjCAUBWgJfMwQCYWQIBQFaAl80BAJhZQkBAWUBCQEFdmFsdWUBCQC2CQEFAXcEAUYIBQJhZQJfMQQBRwgFAmFlAl8yBAJhZgkBAWUBCQEFdmFsdWUBCQC2CQEFAVgEAmFnCAUCYWYCXzEEAmFoCAUCYWYCXzIEAmFpCQEBZQEJAQV2YWx1ZQEJALYJAQUCYWMEAmFqCAUCYWkCXzEEAmFrCAUCYWkCXzIEAmFsCQEBaQEJAQF6AQUBcgMJAAACBQJhbAUCYWwEAmFtAwkAZgIJAQV2YWx1ZQEJALYJAQUBcwUCYWwFAmFsCQEFdmFsdWUBCQC2CQEFAXMDCQAAAgUCYW0FAmFtBAJhbgkBAWkBCQEBegEFAXADCQAAAgUCYW4FAmFuBAJhbwMJAAACBQFUAgFXCQEBQQcFAXUFAXYFAXIFAmFtBQFGBQFHBQFwAwkAAAIFAVQCAVMJAQFMAwUBdQUBcgUCYW0FA25pbAMJAAACBQJhbwUCYW8EAmFwCQBlAgkBAWkBCQEBegEFAXAFAmFuAwkAAAIFAmFwBQJhcAQCYXEJAQFpAQkBAXoBBQFxAwkAAAIFAmFxBQJhcQQCYXIDCQAAAgUBWQIBVwkBAUEHBQFWBQFXBQFwBQJhcAUCYWcFAmFoBQFxAwkAAAIFAVkCAVMJAQFMAwUBVgUBcAUCYXAFA25pbAMJAAACBQJhcgUCYXIEAmFzCQBlAgkBAWkBCQEBegEFAXEFAmFxAwkAAAIFAmFzBQJhcwQCYXQJAQFpAQkBAXoBBQFyAwkAAAIFAmF0BQJhdAQCYXUDCQAAAgUCYWQCAVcJAQFBBwUCYWEFAmFiBQFxBQJhcwUCYWoFAmFrBQFyAwkAAAIFAmFkAgFTCQEBTAMFAmFhBQFxBQJhcwUDbmlsAwkAAAIFAmF1BQJhdQQCYXYJAGUCCQEBaQEJAQF6AQUBcgUCYXQDCQAAAgUCYXYFAmF2AwkAZgIFAmF2CQBkAgUCYW0AkE4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAU4GY2FsbGVyCQBlAgUCYXYFAmFtCQEBegEFAXIFA25pbAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICEm9yaWdpbiBhbW91bnRJbiA9IAUBcwIRLCBuZXdfYW1vdW50SW4gPSAJAKQDAQUCYW0CDCwgbmV3QmFsXzE6IAkApAMBBQJhcAIMLCBuZXdCYWxfMjogCQCkAwEFAmFzAgwsIG5ld0JhbF8zOiAJAKQDAQUCYXYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmF3AQJheAADCQDIEwMIBQJhdwlib2R5Qnl0ZXMJAJEDAggFAmF3BnByb29mcwAACAUCYXcPc2VuZGVyUHVibGljS2V5BgkAyBMDCAUCYXcJYm9keUJ5dGVzCQCRAwIIBQJhdwZwcm9vZnMAAAUBZFAqqh4=", "height": 3507207, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GnQk7SzkeqyzuyVYj8gfqwtRFeZY1MYUJJCRdsyuE8YV Next: 6vqQrcMk8yUPbYgTADVUtY9EVfD5LhErSPTuStuKENoh Diff:
OldNewDifferences
4343 let p1 = p_data[0]
4444 let lp1 = p_data[1]
4545 let is_stable_1 = p_data[2]
46- $Tuple3(p1, lp1, is_stable_1)
46+ let t = p_data[3]
47+ $Tuple4(p1, lp1, is_stable_1, t)
4748 }
4849
4950
5253 else fromBase58String(assetId)
5354
5455
55-@Callable(i)
56-func setAmout (a) = if ((i.caller != this))
57- then throw("you are not allowed to set!")
58- else [IntegerEntry("montant", a)]
56+func swap_wx (p,lp,asset,amount,putFunc1,getFunc1,a) = {
57+ let put1 = invoke(Address(fromBase58String(p)), putFunc1, [1, false], [AttachedPayment(getAssetBytes(asset), amount)])
58+ if ((put1 == put1))
59+ then {
60+ let lp1_assetid = fromBase58String(lp)
61+ let lpBalance_1 = getBalance(lp1_assetid)
62+ if ((lpBalance_1 == lpBalance_1))
63+ then {
64+ let get1 = invoke(Address(fromBase58String(p)), getFunc1, [a, 1], [AttachedPayment(lp1_assetid, lpBalance_1)])
65+ if ((get1 == get1))
66+ then nil
67+ else throw("Strict value is not equal to itself.")
68+ }
69+ else throw("Strict value is not equal to itself.")
70+ }
71+ else throw("Strict value is not equal to itself.")
72+ }
5973
6074
61-
62-@Callable(i)
63-func setKeyValString (key,val) = if ((i.caller != this))
64- then throw("you are not allowed to set!")
65- else [StringEntry(key, val)]
66-
75+func swap_swop (p,asset,amount) = {
76+ let swap = invoke(Address(fromBase58String(p)), "exchange", [1], [AttachedPayment(getAssetBytes(asset), amount)])
77+ if ((swap == swap))
78+ then nil
79+ else throw("Strict value is not equal to itself.")
80+ }
6781
6882
6983 @Callable(i)
87101 then throw("you are not allowed to arb!")
88102 else {
89103 let data_array = split_4C(data, "|")
90- let $t020812137 = getBase1(data_array[0])
91- let a = $t020812137._1
92- let a2 = $t020812137._2
93- let assetIn = $t020812137._3
94- let amountIn = $t020812137._4
95- let $t021422194 = getBase2(data_array[1])
96- let p1 = $t021422194._1
97- let lp1 = $t021422194._2
98- let is_stable_1 = $t021422194._3
99- let $t021992251 = getBase2(data_array[2])
100- let p2 = $t021992251._1
101- let lp2 = $t021992251._2
102- let is_stable_2 = $t021992251._3
103- let $t022562308 = getBase2(data_array[3])
104- let p3 = $t022562308._1
105- let lp3 = $t022562308._2
106- let is_stable_3 = $t022562308._3
107- let $t023142380 = getPutGet(value(parseInt(is_stable_1)))
108- let putFunc1 = $t023142380._1
109- let getFunc1 = $t023142380._2
110- let $t023852451 = getPutGet(value(parseInt(is_stable_2)))
111- let putFunc2 = $t023852451._1
112- let getFunc2 = $t023852451._2
113- let $t024562522 = getPutGet(value(parseInt(is_stable_3)))
114- let putFunc3 = $t024562522._1
115- let getFunc3 = $t024562522._2
104+ let $t025942650 = getBase1(data_array[0])
105+ let a = $t025942650._1
106+ let a2 = $t025942650._2
107+ let assetIn = $t025942650._3
108+ let amountIn = $t025942650._4
109+ let $t026552711 = getBase2(data_array[1])
110+ let p1 = $t026552711._1
111+ let lp1 = $t026552711._2
112+ let is_stable_1 = $t026552711._3
113+ let t1 = $t026552711._4
114+ let $t027162772 = getBase2(data_array[2])
115+ let p2 = $t027162772._1
116+ let lp2 = $t027162772._2
117+ let is_stable_2 = $t027162772._3
118+ let t2 = $t027162772._4
119+ let $t027772833 = getBase2(data_array[3])
120+ let p3 = $t027772833._1
121+ let lp3 = $t027772833._2
122+ let is_stable_3 = $t027772833._3
123+ let t3 = $t027772833._4
124+ let $t028392905 = getPutGet(value(parseInt(is_stable_1)))
125+ let putFunc1 = $t028392905._1
126+ let getFunc1 = $t028392905._2
127+ let $t029102976 = getPutGet(value(parseInt(is_stable_2)))
128+ let putFunc2 = $t029102976._1
129+ let getFunc2 = $t029102976._2
130+ let $t029813047 = getPutGet(value(parseInt(is_stable_3)))
131+ let putFunc3 = $t029813047._1
132+ let getFunc3 = $t029813047._2
116133 let amount_bef_assetIn = getBalance(getAssetBytes(assetIn))
117134 if ((amount_bef_assetIn == amount_bef_assetIn))
118135 then {
124141 let amount_bef_asset1 = getBalance(getAssetBytes(a))
125142 if ((amount_bef_asset1 == amount_bef_asset1))
126143 then {
127- let put1 = invoke(Address(fromBase58String(p1)), putFunc1, [1, false], [AttachedPayment(getAssetBytes(assetIn), new_amountIn)])
128- if ((put1 == put1))
144+ let swap1 = if ((t1 == "W"))
145+ then swap_wx(p1, lp1, assetIn, new_amountIn, putFunc1, getFunc1, a)
146+ else if ((t1 == "S"))
147+ then swap_swop(p1, assetIn, new_amountIn)
148+ else nil
149+ if ((swap1 == swap1))
129150 then {
130- let lp1_assetid = fromBase58String(lp1)
131- let lpBalance_1 = getBalance(lp1_assetid)
132- if ((lpBalance_1 == lpBalance_1))
151+ let nb = (getBalance(getAssetBytes(a)) - amount_bef_asset1)
152+ if ((nb == nb))
133153 then {
134- let get1 = invoke(Address(fromBase58String(p1)), getFunc1, [a, 1], [AttachedPayment(lp1_assetid, lpBalance_1)])
135- if ((get1 == get1))
154+ let amount_bef_asset2 = getBalance(getAssetBytes(a2))
155+ if ((amount_bef_asset2 == amount_bef_asset2))
136156 then {
137- let nb = (getBalance(getAssetBytes(a)) - amount_bef_asset1)
138- if ((nb == nb))
157+ let swap2 = if ((t2 == "W"))
158+ then swap_wx(p2, lp2, a, nb, putFunc2, getFunc2, a2)
159+ else if ((t2 == "S"))
160+ then swap_swop(p2, a, nb)
161+ else nil
162+ if ((swap2 == swap2))
139163 then {
140- let amount_bef_asset2 = getBalance(getAssetBytes(a2))
141- if ((amount_bef_asset2 == amount_bef_asset2))
164+ let nb2 = (getBalance(getAssetBytes(a2)) - amount_bef_asset2)
165+ if ((nb2 == nb2))
142166 then {
143- let put2 = invoke(Address(fromBase58String(p2)), putFunc2, [1, false], [AttachedPayment(getAssetBytes(a), nb)])
144- if ((put2 == put2))
167+ let amount_bef_base_asset = getBalance(getAssetBytes(assetIn))
168+ if ((amount_bef_base_asset == amount_bef_base_asset))
145169 then {
146- let lp2_assetid = fromBase58String(lp2)
147- let lpBalance_2 = getBalance(lp2_assetid)
148- if ((lpBalance_2 == lpBalance_2))
170+ let swap3 = if ((t3 == "W"))
171+ then swap_wx(p3, lp3, a2, nb2, putFunc3, getFunc3, assetIn)
172+ else if ((t3 == "S"))
173+ then swap_swop(p3, a2, nb2)
174+ else nil
175+ if ((swap3 == swap3))
149176 then {
150- let get2 = invoke(Address(fromBase58String(p2)), getFunc2, [a2, 1], [AttachedPayment(lp2_assetid, lpBalance_2)])
151- if ((get2 == get2))
152- then {
153- let nb2 = (getBalance(getAssetBytes(a2)) - amount_bef_asset2)
154- if ((nb2 == nb2))
155- then {
156- let amount_bef_base_asset = getBalance(getAssetBytes(assetIn))
157- if ((amount_bef_base_asset == amount_bef_base_asset))
158- then {
159- let put3 = invoke(Address(fromBase58String(p3)), putFunc3, [1, false], [AttachedPayment(getAssetBytes(a2), nb2)])
160- if ((put3 == put3))
161- then {
162- let lp3_assetid = fromBase58String(lp3)
163- let lpBalance_3 = getBalance(lp3_assetid)
164- if ((lpBalance_3 == lpBalance_3))
165- then {
166- let get3 = invoke(Address(fromBase58String(p3)), getFunc3, [assetIn, 1], [AttachedPayment(lp3_assetid, lpBalance_3)])
167- if ((get3 == get3))
168- then {
169- let nb3 = (getBalance(getAssetBytes(assetIn)) - amount_bef_base_asset)
170- if ((nb3 == nb3))
171- then if ((nb3 > (new_amountIn + 100)))
172- then [ScriptTransfer(i.caller, (nb3 - new_amountIn), getAssetBytes(assetIn))]
173- else throw(((((((((("origin amountIn = " + amountIn) + ", new_amountIn = ") + toString(new_amountIn)) + ", newBal_1: ") + toString(nb)) + ", newBal_2: ") + toString(nb2)) + ", newBal_3: ") + toString(nb3)))
174- else throw("Strict value is not equal to itself.")
175- }
176- else throw("Strict value is not equal to itself.")
177- }
178- else throw("Strict value is not equal to itself.")
179- }
180- else throw("Strict value is not equal to itself.")
181- }
182- else throw("Strict value is not equal to itself.")
183- }
184- else throw("Strict value is not equal to itself.")
185- }
177+ let nb3 = (getBalance(getAssetBytes(assetIn)) - amount_bef_base_asset)
178+ if ((nb3 == nb3))
179+ then if ((nb3 > (new_amountIn + 10000)))
180+ then [ScriptTransfer(i.caller, (nb3 - new_amountIn), getAssetBytes(assetIn))]
181+ else throw(((((((((("origin amountIn = " + amountIn) + ", new_amountIn = ") + toString(new_amountIn)) + ", newBal_1: ") + toString(nb)) + ", newBal_2: ") + toString(nb2)) + ", newBal_3: ") + toString(nb3)))
186182 else throw("Strict value is not equal to itself.")
187183 }
188184 else throw("Strict value is not equal to itself.")
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 func getPutGet (is_stable) = {
1313 let putFunc = if ((is_stable == 1))
1414 then "putOneTknV2"
1515 else "putOneTkn"
1616 let getFunc = if ((is_stable == 1))
1717 then "getOneTknV2"
1818 else "getOneTkn"
1919 $Tuple2(putFunc, getFunc)
2020 }
2121
2222
2323 func getBalance (assetId) = match assetId {
2424 case b: ByteVector =>
2525 assetBalance(this, b)
2626 case _ =>
2727 wavesBalance(this).available
2828 }
2929
3030
3131 func getBase1 (data) = {
3232 let p_data = split(data, "_")
3333 let a = p_data[0]
3434 let a2 = p_data[1]
3535 let assetIn = p_data[2]
3636 let amountIn = p_data[3]
3737 $Tuple4(a, a2, assetIn, amountIn)
3838 }
3939
4040
4141 func getBase2 (data) = {
4242 let p_data = split(data, "_")
4343 let p1 = p_data[0]
4444 let lp1 = p_data[1]
4545 let is_stable_1 = p_data[2]
46- $Tuple3(p1, lp1, is_stable_1)
46+ let t = p_data[3]
47+ $Tuple4(p1, lp1, is_stable_1, t)
4748 }
4849
4950
5051 func getAssetBytes (assetId) = if ((assetId == "WAVES"))
5152 then unit
5253 else fromBase58String(assetId)
5354
5455
55-@Callable(i)
56-func setAmout (a) = if ((i.caller != this))
57- then throw("you are not allowed to set!")
58- else [IntegerEntry("montant", a)]
56+func swap_wx (p,lp,asset,amount,putFunc1,getFunc1,a) = {
57+ let put1 = invoke(Address(fromBase58String(p)), putFunc1, [1, false], [AttachedPayment(getAssetBytes(asset), amount)])
58+ if ((put1 == put1))
59+ then {
60+ let lp1_assetid = fromBase58String(lp)
61+ let lpBalance_1 = getBalance(lp1_assetid)
62+ if ((lpBalance_1 == lpBalance_1))
63+ then {
64+ let get1 = invoke(Address(fromBase58String(p)), getFunc1, [a, 1], [AttachedPayment(lp1_assetid, lpBalance_1)])
65+ if ((get1 == get1))
66+ then nil
67+ else throw("Strict value is not equal to itself.")
68+ }
69+ else throw("Strict value is not equal to itself.")
70+ }
71+ else throw("Strict value is not equal to itself.")
72+ }
5973
6074
61-
62-@Callable(i)
63-func setKeyValString (key,val) = if ((i.caller != this))
64- then throw("you are not allowed to set!")
65- else [StringEntry(key, val)]
66-
75+func swap_swop (p,asset,amount) = {
76+ let swap = invoke(Address(fromBase58String(p)), "exchange", [1], [AttachedPayment(getAssetBytes(asset), amount)])
77+ if ((swap == swap))
78+ then nil
79+ else throw("Strict value is not equal to itself.")
80+ }
6781
6882
6983 @Callable(i)
7084 func borrow (amnt) = if (if ((i.caller != boss))
7185 then (i.caller != free_to_borrom)
7286 else false)
7387 then throw("you are not allowed to borrow!")
7488 else {
7589 let currentBal = getBalance(USDN_ASSET_ID)
7690 if ((amnt > currentBal))
7791 then throw("You cannnot borrow that much")
7892 else [ScriptTransfer(i.caller, amnt, USDN_ASSET_ID)]
7993 }
8094
8195
8296
8397 @Callable(i)
8498 func y (data) = if (if ((i.caller != this))
8599 then (i.caller != boss)
86100 else false)
87101 then throw("you are not allowed to arb!")
88102 else {
89103 let data_array = split_4C(data, "|")
90- let $t020812137 = getBase1(data_array[0])
91- let a = $t020812137._1
92- let a2 = $t020812137._2
93- let assetIn = $t020812137._3
94- let amountIn = $t020812137._4
95- let $t021422194 = getBase2(data_array[1])
96- let p1 = $t021422194._1
97- let lp1 = $t021422194._2
98- let is_stable_1 = $t021422194._3
99- let $t021992251 = getBase2(data_array[2])
100- let p2 = $t021992251._1
101- let lp2 = $t021992251._2
102- let is_stable_2 = $t021992251._3
103- let $t022562308 = getBase2(data_array[3])
104- let p3 = $t022562308._1
105- let lp3 = $t022562308._2
106- let is_stable_3 = $t022562308._3
107- let $t023142380 = getPutGet(value(parseInt(is_stable_1)))
108- let putFunc1 = $t023142380._1
109- let getFunc1 = $t023142380._2
110- let $t023852451 = getPutGet(value(parseInt(is_stable_2)))
111- let putFunc2 = $t023852451._1
112- let getFunc2 = $t023852451._2
113- let $t024562522 = getPutGet(value(parseInt(is_stable_3)))
114- let putFunc3 = $t024562522._1
115- let getFunc3 = $t024562522._2
104+ let $t025942650 = getBase1(data_array[0])
105+ let a = $t025942650._1
106+ let a2 = $t025942650._2
107+ let assetIn = $t025942650._3
108+ let amountIn = $t025942650._4
109+ let $t026552711 = getBase2(data_array[1])
110+ let p1 = $t026552711._1
111+ let lp1 = $t026552711._2
112+ let is_stable_1 = $t026552711._3
113+ let t1 = $t026552711._4
114+ let $t027162772 = getBase2(data_array[2])
115+ let p2 = $t027162772._1
116+ let lp2 = $t027162772._2
117+ let is_stable_2 = $t027162772._3
118+ let t2 = $t027162772._4
119+ let $t027772833 = getBase2(data_array[3])
120+ let p3 = $t027772833._1
121+ let lp3 = $t027772833._2
122+ let is_stable_3 = $t027772833._3
123+ let t3 = $t027772833._4
124+ let $t028392905 = getPutGet(value(parseInt(is_stable_1)))
125+ let putFunc1 = $t028392905._1
126+ let getFunc1 = $t028392905._2
127+ let $t029102976 = getPutGet(value(parseInt(is_stable_2)))
128+ let putFunc2 = $t029102976._1
129+ let getFunc2 = $t029102976._2
130+ let $t029813047 = getPutGet(value(parseInt(is_stable_3)))
131+ let putFunc3 = $t029813047._1
132+ let getFunc3 = $t029813047._2
116133 let amount_bef_assetIn = getBalance(getAssetBytes(assetIn))
117134 if ((amount_bef_assetIn == amount_bef_assetIn))
118135 then {
119136 let new_amountIn = if ((value(parseInt(amountIn)) > amount_bef_assetIn))
120137 then amount_bef_assetIn
121138 else value(parseInt(amountIn))
122139 if ((new_amountIn == new_amountIn))
123140 then {
124141 let amount_bef_asset1 = getBalance(getAssetBytes(a))
125142 if ((amount_bef_asset1 == amount_bef_asset1))
126143 then {
127- let put1 = invoke(Address(fromBase58String(p1)), putFunc1, [1, false], [AttachedPayment(getAssetBytes(assetIn), new_amountIn)])
128- if ((put1 == put1))
144+ let swap1 = if ((t1 == "W"))
145+ then swap_wx(p1, lp1, assetIn, new_amountIn, putFunc1, getFunc1, a)
146+ else if ((t1 == "S"))
147+ then swap_swop(p1, assetIn, new_amountIn)
148+ else nil
149+ if ((swap1 == swap1))
129150 then {
130- let lp1_assetid = fromBase58String(lp1)
131- let lpBalance_1 = getBalance(lp1_assetid)
132- if ((lpBalance_1 == lpBalance_1))
151+ let nb = (getBalance(getAssetBytes(a)) - amount_bef_asset1)
152+ if ((nb == nb))
133153 then {
134- let get1 = invoke(Address(fromBase58String(p1)), getFunc1, [a, 1], [AttachedPayment(lp1_assetid, lpBalance_1)])
135- if ((get1 == get1))
154+ let amount_bef_asset2 = getBalance(getAssetBytes(a2))
155+ if ((amount_bef_asset2 == amount_bef_asset2))
136156 then {
137- let nb = (getBalance(getAssetBytes(a)) - amount_bef_asset1)
138- if ((nb == nb))
157+ let swap2 = if ((t2 == "W"))
158+ then swap_wx(p2, lp2, a, nb, putFunc2, getFunc2, a2)
159+ else if ((t2 == "S"))
160+ then swap_swop(p2, a, nb)
161+ else nil
162+ if ((swap2 == swap2))
139163 then {
140- let amount_bef_asset2 = getBalance(getAssetBytes(a2))
141- if ((amount_bef_asset2 == amount_bef_asset2))
164+ let nb2 = (getBalance(getAssetBytes(a2)) - amount_bef_asset2)
165+ if ((nb2 == nb2))
142166 then {
143- let put2 = invoke(Address(fromBase58String(p2)), putFunc2, [1, false], [AttachedPayment(getAssetBytes(a), nb)])
144- if ((put2 == put2))
167+ let amount_bef_base_asset = getBalance(getAssetBytes(assetIn))
168+ if ((amount_bef_base_asset == amount_bef_base_asset))
145169 then {
146- let lp2_assetid = fromBase58String(lp2)
147- let lpBalance_2 = getBalance(lp2_assetid)
148- if ((lpBalance_2 == lpBalance_2))
170+ let swap3 = if ((t3 == "W"))
171+ then swap_wx(p3, lp3, a2, nb2, putFunc3, getFunc3, assetIn)
172+ else if ((t3 == "S"))
173+ then swap_swop(p3, a2, nb2)
174+ else nil
175+ if ((swap3 == swap3))
149176 then {
150- let get2 = invoke(Address(fromBase58String(p2)), getFunc2, [a2, 1], [AttachedPayment(lp2_assetid, lpBalance_2)])
151- if ((get2 == get2))
152- then {
153- let nb2 = (getBalance(getAssetBytes(a2)) - amount_bef_asset2)
154- if ((nb2 == nb2))
155- then {
156- let amount_bef_base_asset = getBalance(getAssetBytes(assetIn))
157- if ((amount_bef_base_asset == amount_bef_base_asset))
158- then {
159- let put3 = invoke(Address(fromBase58String(p3)), putFunc3, [1, false], [AttachedPayment(getAssetBytes(a2), nb2)])
160- if ((put3 == put3))
161- then {
162- let lp3_assetid = fromBase58String(lp3)
163- let lpBalance_3 = getBalance(lp3_assetid)
164- if ((lpBalance_3 == lpBalance_3))
165- then {
166- let get3 = invoke(Address(fromBase58String(p3)), getFunc3, [assetIn, 1], [AttachedPayment(lp3_assetid, lpBalance_3)])
167- if ((get3 == get3))
168- then {
169- let nb3 = (getBalance(getAssetBytes(assetIn)) - amount_bef_base_asset)
170- if ((nb3 == nb3))
171- then if ((nb3 > (new_amountIn + 100)))
172- then [ScriptTransfer(i.caller, (nb3 - new_amountIn), getAssetBytes(assetIn))]
173- else throw(((((((((("origin amountIn = " + amountIn) + ", new_amountIn = ") + toString(new_amountIn)) + ", newBal_1: ") + toString(nb)) + ", newBal_2: ") + toString(nb2)) + ", newBal_3: ") + toString(nb3)))
174- else throw("Strict value is not equal to itself.")
175- }
176- else throw("Strict value is not equal to itself.")
177- }
178- else throw("Strict value is not equal to itself.")
179- }
180- else throw("Strict value is not equal to itself.")
181- }
182- else throw("Strict value is not equal to itself.")
183- }
184- else throw("Strict value is not equal to itself.")
185- }
177+ let nb3 = (getBalance(getAssetBytes(assetIn)) - amount_bef_base_asset)
178+ if ((nb3 == nb3))
179+ then if ((nb3 > (new_amountIn + 10000)))
180+ then [ScriptTransfer(i.caller, (nb3 - new_amountIn), getAssetBytes(assetIn))]
181+ else throw(((((((((("origin amountIn = " + amountIn) + ", new_amountIn = ") + toString(new_amountIn)) + ", newBal_1: ") + toString(nb)) + ", newBal_2: ") + toString(nb2)) + ", newBal_3: ") + toString(nb3)))
186182 else throw("Strict value is not equal to itself.")
187183 }
188184 else throw("Strict value is not equal to itself.")
189185 }
190186 else throw("Strict value is not equal to itself.")
191187 }
192188 else throw("Strict value is not equal to itself.")
193189 }
194190 else throw("Strict value is not equal to itself.")
195191 }
196192 else throw("Strict value is not equal to itself.")
197193 }
198194 else throw("Strict value is not equal to itself.")
199195 }
200196 else throw("Strict value is not equal to itself.")
201197 }
202198 else throw("Strict value is not equal to itself.")
203199 }
204200 else throw("Strict value is not equal to itself.")
205201 }
206202 else throw("Strict value is not equal to itself.")
207203 }
208204
209205
210206 @Verifier(tx)
211207 func verify () = if (sigVerify_128Kb(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
212208 then true
213209 else sigVerify_128Kb(tx.bodyBytes, tx.proofs[0], adminPublicKey)
214210

github/deemru/w8io/3ef1775 
67.63 ms