tx · 9t6j2cB5ADnDPrG7c9inXbhHWD2n4EKGKUjAcWxTAFAP

3PG9zikvUuEPfKAtTpDSkVyiSifN5jNikWV:  -0.01000000 Waves

2024.03.12 23:18 [4081124] smart account 3PG9zikvUuEPfKAtTpDSkVyiSifN5jNikWV > SELF 0.00000000 Waves

{ "type": 13, "id": "9t6j2cB5ADnDPrG7c9inXbhHWD2n4EKGKUjAcWxTAFAP", "fee": 1000000, "feeAssetId": null, "timestamp": 1710274784760, "version": 2, "chainId": 87, "sender": "3PG9zikvUuEPfKAtTpDSkVyiSifN5jNikWV", "senderPublicKey": "C3EYvacxuKxmaVQR986ogUBpELa9JRsoqBPobmDF7ori", "proofs": [ "4HRab9CdZk3gt1ySq2GtnxcMqRUGjJmdZryFNHLSHHPneTqLvX1zYxsJKunXeuJDPKHBzBdaUPhxkLyXxVCuPKNt" ], "script": "base64:BgIUCAISBAoCAQESBAoCAQESBAoCAQEIAA13eFBvb2xBZGRyZXNzCQEHQWRkcmVzcwEBGgFX7jnQlQHOgHn8g3t2wRfy1m7iBadoSBR2ABBzaW1wbGVBbW1BZGRyZXNzCQEHQWRkcmVzcwEBGgFX8TVzade+uoR7uZWuq4RsHviU5ek6RsEUAAV3YXZlcwUEdW5pdAAEdXNkdAEghNp6sggDP07Ru8qO7ouTvMmC3Qtd+geWqNQj+agP/7kAAmxwASBPCJx7eu0YvnfLmHhu4b6v2hMqGHco2fEU/TBvwXS/sgEKZ2V0QmFsYW5jZQECaWQEByRtYXRjaDAFAmlkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWIFByRtYXRjaDAJAPAHAgUEdGhpcwUBYggJAO8HAQUEdGhpcwlhdmFpbGFibGUBBnN3YXBXeAIFYXNzZXQGYW1vdW50BBJyZWNlaXZlQXNzZXRTdHJpbmcDCQAAAgUFYXNzZXQFBHVuaXQJANgEAQUEdXNkdAIFV0FWRVMEDWluaXRMUEJhbGFuY2UJAQpnZXRCYWxhbmNlAQUCbHADCQAAAgUNaW5pdExQQmFsYW5jZQUNaW5pdExQQmFsYW5jZQQEaW52MQkA/AcEBQ13eFBvb2xBZGRyZXNzAglwdXRPbmVUa24JAMwIAgABCQDMCAIHBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBWFzc2V0BQZhbW91bnQFA25pbAMJAAACBQRpbnYxBQRpbnYxBApscFJlY2VpdmVkCQBlAgkBCmdldEJhbGFuY2UBBQJscAUNaW5pdExQQmFsYW5jZQMJAAACBQpscFJlY2VpdmVkBQpscFJlY2VpdmVkBARpbnYyCQD8BwQFDXd4UG9vbEFkZHJlc3MCCWdldE9uZVRrbgkAzAgCBRJyZWNlaXZlQXNzZXRTdHJpbmcJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmxwBQpscFJlY2VpdmVkBQNuaWwDCQAAAgUEaW52MgUEaW52MgUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEJYXJiaXRyYWdlAwlzZW5kQXNzZXQGYW1vdW50CW1pblByb2ZpdAQMcmVjZWl2ZUFzc2V0AwkAAAIFCXNlbmRBc3NldAUEdW5pdAUEdXNkdAUEdW5pdAQPaW5pdFNlbmRCYWxhbmNlCQEKZ2V0QmFsYW5jZQEFCXNlbmRBc3NldAMJAAACBQ9pbml0U2VuZEJhbGFuY2UFD2luaXRTZW5kQmFsYW5jZQQSaW5pdFJlY2VpdmVCYWxhbmNlCQEKZ2V0QmFsYW5jZQEFDHJlY2VpdmVBc3NldAMJAAACBRJpbml0UmVjZWl2ZUJhbGFuY2UFEmluaXRSZWNlaXZlQmFsYW5jZQQEaW52MQkA/AcEBRBzaW1wbGVBbW1BZGRyZXNzAgRzd2FwBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCXNlbmRBc3NldAUGYW1vdW50BQNuaWwDCQAAAgUEaW52MQUEaW52MQQIcmVjZWl2ZWQJAGUCCQEKZ2V0QmFsYW5jZQEFDHJlY2VpdmVBc3NldAUSaW5pdFJlY2VpdmVCYWxhbmNlAwkAAAIFCHJlY2VpdmVkBQhyZWNlaXZlZAQEaW52MgkBBnN3YXBXeAIFDHJlY2VpdmVBc3NldAUIcmVjZWl2ZWQDCQAAAgUEaW52MgUEaW52MgQGcHJvZml0CQBlAgkBCmdldEJhbGFuY2UBBQlzZW5kQXNzZXQFD2luaXRTZW5kQmFsYW5jZQMJAAACBQZwcm9maXQFBnByb2ZpdAMJAGYCBQZwcm9maXQFCW1pblByb2ZpdAUDbmlsCQACAQIJbm8gcHJvZml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwFpAQJzdwIGYW1vdW50CW1pblByb2ZpdAQFY2hlY2sDCQAAAggFAWkGY2FsbGVyBQR0aGlzBgkAAgECEXBlcm1pc3Npb24gZGVuaWVkAwkAAAIFBWNoZWNrBQVjaGVjawkBCWFyYml0cmFnZQMFBXdhdmVzBQZhbW91bnQFCW1pblByb2ZpdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQJzdQIGYW1vdW50CW1pblByb2ZpdAQFY2hlY2sDCQAAAggFAWkGY2FsbGVyBQR0aGlzBgkAAgECEXBlcm1pc3Npb24gZGVuaWVkAwkAAAIFBWNoZWNrBQVjaGVjawkBCWFyYml0cmFnZQMFBHVzZHQFBmFtb3VudAUJbWluUHJvZml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBA3N1dQIGYW1vdW50CW1pblByb2ZpdAQFY2hlY2sDCQAAAggFAWkGY2FsbGVyBQR0aGlzBgkAAgECEXBlcm1pc3Npb24gZGVuaWVkAwkAAAIFBWNoZWNrBQVjaGVjawQDcmVzCQD8BwQFEHNpbXBsZUFtbUFkZHJlc3MCDHN3YXBSRUFET05MWQkAzAgCAgVXQVZFUwkAzAgCBQZhbW91bnQFA25pbAUDbmlsBAluZXdBbW91bnQEByRtYXRjaDAFA3JlcwMJAAECBQckbWF0Y2gwAg8oSW50LCBJbnQsIEludCkEAXIFByRtYXRjaDAIBQFyAl8xCQACAQIPc29tZXRoaW5nIHdyb25nBAxuZXdNaW5Qcm9maXQJAGsDBQltaW5Qcm9maXQFCW5ld0Ftb3VudAUGYW1vdW50CQEJYXJiaXRyYWdlAwUEdXNkdAUJbmV3QW1vdW50BQxuZXdNaW5Qcm9maXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4A02LAYA==", "height": 4081124, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: C7D5UHyVSGritL36dE7TQUd4ak8KwHfQAUJPvxgdUNbJ Next: Ap1Mb5fZHxsL99KJSLPY4ZRy9DFLSUwcsDoCJBvrzcC Diff:
OldNewDifferences
106106 }
107107
108108
109+
110+@Callable(i)
111+func suu (amount,minProfit) = {
112+ let check = if ((i.caller == this))
113+ then true
114+ else throw("permission denied")
115+ if ((check == check))
116+ then {
117+ let res = invoke(simpleAmmAddress, "swapREADONLY", ["WAVES", amount], nil)
118+ let newAmount = match res {
119+ case r: (Int, Int, Int) =>
120+ r._1
121+ case _ =>
122+ throw("something wrong")
123+ }
124+ let newMinProfit = fraction(minProfit, newAmount, amount)
125+ arbitrage(usdt, newAmount, newMinProfit)
126+ }
127+ else throw("Strict value is not equal to itself.")
128+ }
129+
130+
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let wxPoolAddress = Address(base58'3PPeWowdyQLKwW9AExN5CgFa7X9ts7D4LkM')
55
66 let simpleAmmAddress = Address(base58'3PPvHcJjESoUbf9LDpAxEhQKUnpqH1Ea29h')
77
88 let waves = unit
99
1010 let usdt = base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
1111
1212 let lp = base58'6KWpnpLk6GNh5HG9ct9pNDCYFWJBoAAshZsp4D8jcFpV'
1313
1414 func getBalance (id) = match id {
1515 case b: ByteVector =>
1616 assetBalance(this, b)
1717 case _ =>
1818 wavesBalance(this).available
1919 }
2020
2121
2222 func swapWx (asset,amount) = {
2323 let receiveAssetString = if ((asset == unit))
2424 then toBase58String(usdt)
2525 else "WAVES"
2626 let initLPBalance = getBalance(lp)
2727 if ((initLPBalance == initLPBalance))
2828 then {
2929 let inv1 = invoke(wxPoolAddress, "putOneTkn", [1, false], [AttachedPayment(asset, amount)])
3030 if ((inv1 == inv1))
3131 then {
3232 let lpReceived = (getBalance(lp) - initLPBalance)
3333 if ((lpReceived == lpReceived))
3434 then {
3535 let inv2 = invoke(wxPoolAddress, "getOneTkn", [receiveAssetString, 1], [AttachedPayment(lp, lpReceived)])
3636 if ((inv2 == inv2))
3737 then unit
3838 else throw("Strict value is not equal to itself.")
3939 }
4040 else throw("Strict value is not equal to itself.")
4141 }
4242 else throw("Strict value is not equal to itself.")
4343 }
4444 else throw("Strict value is not equal to itself.")
4545 }
4646
4747
4848 func arbitrage (sendAsset,amount,minProfit) = {
4949 let receiveAsset = if ((sendAsset == unit))
5050 then usdt
5151 else unit
5252 let initSendBalance = getBalance(sendAsset)
5353 if ((initSendBalance == initSendBalance))
5454 then {
5555 let initReceiveBalance = getBalance(receiveAsset)
5656 if ((initReceiveBalance == initReceiveBalance))
5757 then {
5858 let inv1 = invoke(simpleAmmAddress, "swap", nil, [AttachedPayment(sendAsset, amount)])
5959 if ((inv1 == inv1))
6060 then {
6161 let received = (getBalance(receiveAsset) - initReceiveBalance)
6262 if ((received == received))
6363 then {
6464 let inv2 = swapWx(receiveAsset, received)
6565 if ((inv2 == inv2))
6666 then {
6767 let profit = (getBalance(sendAsset) - initSendBalance)
6868 if ((profit == profit))
6969 then if ((profit > minProfit))
7070 then nil
7171 else throw("no profit")
7272 else throw("Strict value is not equal to itself.")
7373 }
7474 else throw("Strict value is not equal to itself.")
7575 }
7676 else throw("Strict value is not equal to itself.")
7777 }
7878 else throw("Strict value is not equal to itself.")
7979 }
8080 else throw("Strict value is not equal to itself.")
8181 }
8282 else throw("Strict value is not equal to itself.")
8383 }
8484
8585
8686 @Callable(i)
8787 func sw (amount,minProfit) = {
8888 let check = if ((i.caller == this))
8989 then true
9090 else throw("permission denied")
9191 if ((check == check))
9292 then arbitrage(waves, amount, minProfit)
9393 else throw("Strict value is not equal to itself.")
9494 }
9595
9696
9797
9898 @Callable(i)
9999 func su (amount,minProfit) = {
100100 let check = if ((i.caller == this))
101101 then true
102102 else throw("permission denied")
103103 if ((check == check))
104104 then arbitrage(usdt, amount, minProfit)
105105 else throw("Strict value is not equal to itself.")
106106 }
107107
108108
109+
110+@Callable(i)
111+func suu (amount,minProfit) = {
112+ let check = if ((i.caller == this))
113+ then true
114+ else throw("permission denied")
115+ if ((check == check))
116+ then {
117+ let res = invoke(simpleAmmAddress, "swapREADONLY", ["WAVES", amount], nil)
118+ let newAmount = match res {
119+ case r: (Int, Int, Int) =>
120+ r._1
121+ case _ =>
122+ throw("something wrong")
123+ }
124+ let newMinProfit = fraction(minProfit, newAmount, amount)
125+ arbitrage(usdt, newAmount, newMinProfit)
126+ }
127+ else throw("Strict value is not equal to itself.")
128+ }
129+
130+

github/deemru/w8io/3ef1775 
32.81 ms