tx · Fu5xRrsrNyKZp4HjU3yNx828rpTJK2Wqjanbs53BbuiS

3P3qCUfvbDUjRnjrfM5XFMrXrzxxiad94Ez:  -0.01000000 Waves

2023.04.17 07:14 [3603640] smart account 3P3qCUfvbDUjRnjrfM5XFMrXrzxxiad94Ez > SELF 0.00000000 Waves

{ "type": 13, "id": "Fu5xRrsrNyKZp4HjU3yNx828rpTJK2Wqjanbs53BbuiS", "fee": 1000000, "feeAssetId": null, "timestamp": 1681704954595, "version": 2, "chainId": 87, "sender": "3P3qCUfvbDUjRnjrfM5XFMrXrzxxiad94Ez", "senderPublicKey": "3zaQerEjh4SK1xhin9zzs5qr337aLRFhz7z1ckjFGhMz", "proofs": [ "s5Wan12LuNXRmHUE1dVc7YY2F2FMoqU3bc7iNe7Ts8JkuFpvuwKmJzTkGarCysxgTE3JXJqmfqPxu3Svnh17vJJ" ], "script": "base64:BgKeBAgCEgMKAQESAwoBARIDCgEIIg5mcmVlX3RvX2JvcnJvbSINVVNETl9BU1NFVF9JRCIEYm9zcyIOYWRtaW5QdWJsaWNLZXkiDFdYX1NXQVBfREFQUCIJYXNzZXRzX2luIgpnZXRCYWxhbmNlIgdhc3NldElkIgckbWF0Y2gwIgFiIghnZXRCYXNlMSIEZGF0YSIGcF9kYXRhIgFhIgJhMiIHYXNzZXRJbiIIYW1vdW50SW4iCGdldEJhc2UyIgJwMSIBdCINZ2V0QXNzZXRCeXRlcyIHc3dhcF93eCIBcCIFYXNzZXQiACIGYW1vdW50IgRjYWxsIglzd2FwX3N3b3AiBHN3YXAiC3N3YXBfcHV6emxlIghhc3NldE91dCIBaSIEYW1udCIKY3VycmVudEJhbCIKZGF0YV9hcnJheSILJHQwMjYzNDI2OTAiCyR0MDI2OTUyNzMzIgJ0MSILJHQwMjczODI3NzYiAnAyIgJ0MiILJHQwMjc4MTI4MTkiAnAzIgJ0MyISYW1vdW50X2JlZl9hc3NldEluIgxuZXdfYW1vdW50SW4iEWFtb3VudF9iZWZfYXNzZXQxIgVzd2FwMSICbmIiEWFtb3VudF9iZWZfYXNzZXQyIgVzd2FwMiIDbmIyIhVhbW91bnRfYmVmX2Jhc2VfYXNzZXQiBXN3YXAzIgNuYjMiCHRyZXNob2xkIgJ0eCIGdmVyaWZ5DQABYQkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BHN0NIdkJhdEhwQ2h3bThyZUg3NHdmRXdrMVBIYzhScXkAAWIBILYmKcME9c5TkaQOS3UkL2SMUbH6369UKb1I0h0qsqrRAAFjCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUFJFNUtIOW9QR2ZGUHM3ZkduUWNKNHdOc2hFRFVQR2oxdAABZAEgr/8efHaHn138Hq+fsexc54494j5bIbLgBnFNFv+bFW0AAWUJAQdBZGRyZXNzAQEaAVcuKjU1sQ238Xk+4bdG0J50Uk17MdCDrgYAAWYJAMwIAgIsREcyeEZrUGREd0tVb0JrekdBaFF0THBTR3pmWExpQ1lQRXplS0gyQWQyNHAFA25pbAEBZwEBaAQBaQUBaAMJAAECBQFpAgpCeXRlVmVjdG9yBAFqBQFpCQDwBwIFBHRoaXMFAWoICQDvBwEFBHRoaXMJYXZhaWxhYmxlAQFrAQFsBAFtCQC1CQIFAWwCAV8EAW4JAJEDAgUBbQAABAFvCQCRAwIFAW0AAQQBcAkAkQMCBQFmCQEFdmFsdWUBCQC2CQEJAJEDAgUBbQACBAFxCQCRAwIFAW0AAwkAlgoEBQFuBQFvBQFwBQFxAQFyAQFsBAFtCQC1CQIFAWwCAV8EAXMJAJEDAgUBbQAABAF0CQCRAwIFAW0AAQkAlAoCBQFzBQF0AQF1AQFoAwkAAAIFAWgCBVdBVkVTBQR1bml0CQDZBAEFAWgBAXYEAXcBeAF6AW4EAUEJAPwHBAUBZQIEc3dhcAkAzAgCAAEJAMwIAgUBbgkAzAgCCQClCAEFBHRoaXMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBAXUBBQF4BQF6BQNuaWwDCQAAAgUBQQUBQQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQFCAwF3AXgBegQBQwkA/AcECQEHQWRkcmVzcwEJANkEAQUBdwIIZXhjaGFuZ2UJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQF1AQUBeAUBegUDbmlsAwkAAAIFAUMFAUMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEBRAQBdwF4AXoBRQQBQwkA/AcECQEHQWRkcmVzcwEJANkEAQUBdwIEc3dhcAkAzAgCBQFFCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEBdQEFAXgFAXoFA25pbAMJAAACBQFDBQFDBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DAUYBBmJvcnJvdwEBRwMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUBYQkAzAgCBQFjCQDMCAIFBHRoaXMFA25pbAgFAUYGY2FsbGVyCQACAQIeeW91IGFyZSBub3QgYWxsb3dlZCB0byBib3Jyb3chBAFICQEBZwEFAWIDCQBmAgUBRwUBSAkAAgECHFlvdSBjYW5ubm90IGJvcnJvdyB0aGF0IG11Y2gJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAUYGY2FsbGVyBQFHBQFiBQNuaWwBRgELc2V0VHJlc2hvbGQBAUcDCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFAWEJAMwIAgUBYwkAzAgCBQR0aGlzBQNuaWwIBQFGBmNhbGxlcgkAAgECH3lvdSBhcmUgbm90IGFsbG93ZWQgdG8gZG8gdGhhdCEJAMwIAgkBDEludGVnZXJFbnRyeQICCHRyZXNob2xkBQFHBQNuaWwBRgEBeQEBbAMDCQECIT0CCAUBRgZjYWxsZXIFBHRoaXMJAQIhPQIIBQFGBmNhbGxlcgUBYwcJAAIBAht5b3UgYXJlIG5vdCBhbGxvd2VkIHRvIGFyYiEEAUkJALwJAgUBbAIBfAQBSgkBAWsBCQCRAwIFAUkAAAQBbggFAUoCXzEEAW8IBQFKAl8yBAFwCAUBSgJfMwQBcQgFAUoCXzQEAUsJAQFyAQkAkQMCBQFJAAEEAXMIBQFLAl8xBAFMCAUBSwJfMgQBTQkBAXIBCQCRAwIFAUkAAgQBTggFAU0CXzEEAU8IBQFNAl8yBAFQCQEBcgEJAJEDAgUBSQADBAFRCAUBUAJfMQQBUggFAVACXzIEAVMJAQFnAQkBAXUBBQFwAwkAAAIFAVMFAVMEAVQDCQBmAgkBBXZhbHVlAQkAtgkBBQFxBQFTBQFTCQEFdmFsdWUBCQC2CQEFAXEDCQAAAgUBVAUBVAQBVQkBAWcBCQEBdQEFAW4DCQAAAgUBVQUBVQQBVgMJAAACBQFMAgFXCQEBdgQFAXMFAXAFAVQFAW4DCQAAAgUBTAIBUwkBAUIDBQFzBQFwBQFUCQEBRAQFAXMFAXAFAVQFAW4DCQAAAgUBVgUBVgQBVwkAZQIJAQFnAQkBAXUBBQFuBQFVAwkAAAIFAVcFAVcEAVgJAQFnAQkBAXUBBQFvAwkAAAIFAVgFAVgEAVkDCQAAAgUBTwIBVwkBAXYEBQFOBQFuBQFXBQFvAwkAAAIFAU8CAVMJAQFCAwUBTgUBbgUBVwkBAUQEBQFOBQFuBQFXBQFvAwkAAAIFAVkFAVkEAVoJAGUCCQEBZwEJAQF1AQUBbwUBWAMJAAACBQFaBQFaBAJhYQkBAWcBCQEBdQEFAXADCQAAAgUCYWEFAmFhBAJhYgMJAAACBQFSAgFXCQEBdgQFAVEFAW8FAVoFAXADCQAAAgUBUgIBUwkBAUIDBQFRBQFvBQFaCQEBRAQFAVEFAW8FAVoFAXADCQAAAgUCYWIFAmFiBAJhYwkAZQIJAQFnAQkBAXUBBQFwBQJhYQMJAAACBQJhYwUCYWMEAmFkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMCCHRyZXNob2xkAPCTCQMJAGYCBQJhYwkAZAIFAVQFAmFkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFGBmNhbGxlcgkAZQIFAmFjBQFUCQEBdQEFAXAFA25pbAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICEm9yaWdpbiBhbW91bnRJbiA9IAUBcQIRLCBuZXdfYW1vdW50SW4gPSAJAKQDAQUBVAIMLCBuZXdCYWxfMTogCQCkAwEFAVcCDCwgbmV3QmFsXzI6IAkApAMBBQFaAgwsIG5ld0JhbF8zOiAJAKQDAQUCYWMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmFlAQJhZgADCQDIEwMIBQJhZQlib2R5Qnl0ZXMJAJEDAggFAmFlBnByb29mcwAACAUCYWUPc2VuZGVyUHVibGljS2V5BgkAyBMDCAUCYWUJYm9keUJ5dGVzCQCRAwIIBQJhZQZwcm9vZnMAAAUBZGQeylk=", "height": 3603640, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BNRbu57NZDhYvStwy8kZGKj72nxZpVMgScEaiTRdAUPN Next: DEiuRZw7n5D9U8xLDY2UVkobL3krLL7Xm8SKRdt34rDu Diff:
OldNewDifferences
1111
1212 let WX_SWAP_DAPP = Address(base58'3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93')
1313
14+let assets_in = ["DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p"]
15+
1416 func getBalance (assetId) = match assetId {
1517 case b: ByteVector =>
1618 assetBalance(this, b)
2325 let p_data = split(data, "_")
2426 let a = p_data[0]
2527 let a2 = p_data[1]
26- let assetIn = p_data[2]
28+ let assetIn = assets_in[value(parseInt(p_data[2]))]
2729 let amountIn = p_data[3]
2830 $Tuple4(a, a2, assetIn, amountIn)
2931 }
9294 then throw("you are not allowed to arb!")
9395 else {
9496 let data_array = split_4C(data, "|")
95- let $t024622518 = getBase1(data_array[0])
96- let a = $t024622518._1
97- let a2 = $t024622518._2
98- let assetIn = $t024622518._3
99- let amountIn = $t024622518._4
100- let $t025232561 = getBase2(data_array[1])
101- let p1 = $t025232561._1
102- let t1 = $t025232561._2
103- let $t025662604 = getBase2(data_array[2])
104- let p2 = $t025662604._1
105- let t2 = $t025662604._2
106- let $t026092647 = getBase2(data_array[3])
107- let p3 = $t026092647._1
108- let t3 = $t026092647._2
97+ let $t026342690 = getBase1(data_array[0])
98+ let a = $t026342690._1
99+ let a2 = $t026342690._2
100+ let assetIn = $t026342690._3
101+ let amountIn = $t026342690._4
102+ let $t026952733 = getBase2(data_array[1])
103+ let p1 = $t026952733._1
104+ let t1 = $t026952733._2
105+ let $t027382776 = getBase2(data_array[2])
106+ let p2 = $t027382776._1
107+ let t2 = $t027382776._2
108+ let $t027812819 = getBase2(data_array[3])
109+ let p3 = $t027812819._1
110+ let t3 = $t027812819._2
109111 let amount_bef_assetIn = getBalance(getAssetBytes(assetIn))
110112 if ((amount_bef_assetIn == amount_bef_assetIn))
111113 then {
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
14+let assets_in = ["DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p"]
15+
1416 func getBalance (assetId) = match assetId {
1517 case b: ByteVector =>
1618 assetBalance(this, b)
1719 case _ =>
1820 wavesBalance(this).available
1921 }
2022
2123
2224 func getBase1 (data) = {
2325 let p_data = split(data, "_")
2426 let a = p_data[0]
2527 let a2 = p_data[1]
26- let assetIn = p_data[2]
28+ let assetIn = assets_in[value(parseInt(p_data[2]))]
2729 let amountIn = p_data[3]
2830 $Tuple4(a, a2, assetIn, amountIn)
2931 }
3032
3133
3234 func getBase2 (data) = {
3335 let p_data = split(data, "_")
3436 let p1 = p_data[0]
3537 let t = p_data[1]
3638 $Tuple2(p1, t)
3739 }
3840
3941
4042 func getAssetBytes (assetId) = if ((assetId == "WAVES"))
4143 then unit
4244 else fromBase58String(assetId)
4345
4446
4547 func swap_wx (p,asset,amount,a) = {
4648 let call = invoke(WX_SWAP_DAPP, "swap", [1, a, toString(this)], [AttachedPayment(getAssetBytes(asset), amount)])
4749 if ((call == call))
4850 then nil
4951 else throw("Strict value is not equal to itself.")
5052 }
5153
5254
5355 func swap_swop (p,asset,amount) = {
5456 let swap = invoke(Address(fromBase58String(p)), "exchange", [1], [AttachedPayment(getAssetBytes(asset), amount)])
5557 if ((swap == swap))
5658 then nil
5759 else throw("Strict value is not equal to itself.")
5860 }
5961
6062
6163 func swap_puzzle (p,asset,amount,assetOut) = {
6264 let swap = invoke(Address(fromBase58String(p)), "swap", [assetOut, 1], [AttachedPayment(getAssetBytes(asset), amount)])
6365 if ((swap == swap))
6466 then nil
6567 else throw("Strict value is not equal to itself.")
6668 }
6769
6870
6971 @Callable(i)
7072 func borrow (amnt) = if (!(containsElement([free_to_borrom, boss, this], i.caller)))
7173 then throw("you are not allowed to borrow!")
7274 else {
7375 let currentBal = getBalance(USDN_ASSET_ID)
7476 if ((amnt > currentBal))
7577 then throw("You cannnot borrow that much")
7678 else [ScriptTransfer(i.caller, amnt, USDN_ASSET_ID)]
7779 }
7880
7981
8082
8183 @Callable(i)
8284 func setTreshold (amnt) = if (!(containsElement([free_to_borrom, boss, this], i.caller)))
8385 then throw("you are not allowed to do that!")
8486 else [IntegerEntry("treshold", amnt)]
8587
8688
8789
8890 @Callable(i)
8991 func y (data) = if (if ((i.caller != this))
9092 then (i.caller != boss)
9193 else false)
9294 then throw("you are not allowed to arb!")
9395 else {
9496 let data_array = split_4C(data, "|")
95- let $t024622518 = getBase1(data_array[0])
96- let a = $t024622518._1
97- let a2 = $t024622518._2
98- let assetIn = $t024622518._3
99- let amountIn = $t024622518._4
100- let $t025232561 = getBase2(data_array[1])
101- let p1 = $t025232561._1
102- let t1 = $t025232561._2
103- let $t025662604 = getBase2(data_array[2])
104- let p2 = $t025662604._1
105- let t2 = $t025662604._2
106- let $t026092647 = getBase2(data_array[3])
107- let p3 = $t026092647._1
108- let t3 = $t026092647._2
97+ let $t026342690 = getBase1(data_array[0])
98+ let a = $t026342690._1
99+ let a2 = $t026342690._2
100+ let assetIn = $t026342690._3
101+ let amountIn = $t026342690._4
102+ let $t026952733 = getBase2(data_array[1])
103+ let p1 = $t026952733._1
104+ let t1 = $t026952733._2
105+ let $t027382776 = getBase2(data_array[2])
106+ let p2 = $t027382776._1
107+ let t2 = $t027382776._2
108+ let $t027812819 = getBase2(data_array[3])
109+ let p3 = $t027812819._1
110+ let t3 = $t027812819._2
109111 let amount_bef_assetIn = getBalance(getAssetBytes(assetIn))
110112 if ((amount_bef_assetIn == amount_bef_assetIn))
111113 then {
112114 let new_amountIn = if ((value(parseInt(amountIn)) > amount_bef_assetIn))
113115 then amount_bef_assetIn
114116 else value(parseInt(amountIn))
115117 if ((new_amountIn == new_amountIn))
116118 then {
117119 let amount_bef_asset1 = getBalance(getAssetBytes(a))
118120 if ((amount_bef_asset1 == amount_bef_asset1))
119121 then {
120122 let swap1 = if ((t1 == "W"))
121123 then swap_wx(p1, assetIn, new_amountIn, a)
122124 else if ((t1 == "S"))
123125 then swap_swop(p1, assetIn, new_amountIn)
124126 else swap_puzzle(p1, assetIn, new_amountIn, a)
125127 if ((swap1 == swap1))
126128 then {
127129 let nb = (getBalance(getAssetBytes(a)) - amount_bef_asset1)
128130 if ((nb == nb))
129131 then {
130132 let amount_bef_asset2 = getBalance(getAssetBytes(a2))
131133 if ((amount_bef_asset2 == amount_bef_asset2))
132134 then {
133135 let swap2 = if ((t2 == "W"))
134136 then swap_wx(p2, a, nb, a2)
135137 else if ((t2 == "S"))
136138 then swap_swop(p2, a, nb)
137139 else swap_puzzle(p2, a, nb, a2)
138140 if ((swap2 == swap2))
139141 then {
140142 let nb2 = (getBalance(getAssetBytes(a2)) - amount_bef_asset2)
141143 if ((nb2 == nb2))
142144 then {
143145 let amount_bef_base_asset = getBalance(getAssetBytes(assetIn))
144146 if ((amount_bef_base_asset == amount_bef_base_asset))
145147 then {
146148 let swap3 = if ((t3 == "W"))
147149 then swap_wx(p3, a2, nb2, assetIn)
148150 else if ((t3 == "S"))
149151 then swap_swop(p3, a2, nb2)
150152 else swap_puzzle(p3, a2, nb2, assetIn)
151153 if ((swap3 == swap3))
152154 then {
153155 let nb3 = (getBalance(getAssetBytes(assetIn)) - amount_bef_base_asset)
154156 if ((nb3 == nb3))
155157 then {
156158 let treshold = valueOrElse(getInteger(this, "treshold"), 150000)
157159 if ((nb3 > (new_amountIn + treshold)))
158160 then [ScriptTransfer(i.caller, (nb3 - new_amountIn), getAssetBytes(assetIn))]
159161 else throw(((((((((("origin amountIn = " + amountIn) + ", new_amountIn = ") + toString(new_amountIn)) + ", newBal_1: ") + toString(nb)) + ", newBal_2: ") + toString(nb2)) + ", newBal_3: ") + toString(nb3)))
160162 }
161163 else throw("Strict value is not equal to itself.")
162164 }
163165 else throw("Strict value is not equal to itself.")
164166 }
165167 else throw("Strict value is not equal to itself.")
166168 }
167169 else throw("Strict value is not equal to itself.")
168170 }
169171 else throw("Strict value is not equal to itself.")
170172 }
171173 else throw("Strict value is not equal to itself.")
172174 }
173175 else throw("Strict value is not equal to itself.")
174176 }
175177 else throw("Strict value is not equal to itself.")
176178 }
177179 else throw("Strict value is not equal to itself.")
178180 }
179181 else throw("Strict value is not equal to itself.")
180182 }
181183 else throw("Strict value is not equal to itself.")
182184 }
183185
184186
185187 @Verifier(tx)
186188 func verify () = if (sigVerify_128Kb(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
187189 then true
188190 else sigVerify_128Kb(tx.bodyBytes, tx.proofs[0], adminPublicKey)
189191

github/deemru/w8io/6500d08 
60.01 ms