tx · FoSZnYRKBgsHP6hELgLV7b2NtYV84nbUBa3siPcpkXaS

3MvdzbvEZLHEE3EXHXxaRQjgpNqq28733ao:  -0.01000000 Waves

2021.12.22 19:46 [1845722] smart account 3MvdzbvEZLHEE3EXHXxaRQjgpNqq28733ao > SELF 0.00000000 Waves

{ "type": 13, "id": "FoSZnYRKBgsHP6hELgLV7b2NtYV84nbUBa3siPcpkXaS", "fee": 1000000, "feeAssetId": null, "timestamp": 1640191577478, "version": 1, "sender": "3MvdzbvEZLHEE3EXHXxaRQjgpNqq28733ao", "senderPublicKey": "HQmnkZjA2Ehwb2iKXAadqRsrXsHGZChU6WfgmHRsMW8t", "proofs": [ "KxV9Qvn44pb4GbnFNVzd31PPvaXjKvnxqD7J3pKDDxpJ9cKX6zk4e4qYJG1PQvWxKZJYbaLLY2mecLJBjEMCxrS" ], "script": "base64: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", "chainId": 84, "height": 1845722, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FxjNe2pKqF72t9wPXdKqP31ovr2p7hjn4JqkJkMhYyBd Next: EAFn41YHcdH9ZciASRWoGSGcETaejUiRe4v8ArGTEtvb Diff:
OldNewDifferences
6464 else if ((versionMajor == 2))
6565 then deductFlatFee(received)
6666 else throw("")
67- $Tuple3(balanceBefore, received, fee)
67+ if ((0 >= received))
68+ then throw("")
69+ else $Tuple3(balanceBefore, received, fee)
6870 }
6971 else throw("Strict value is not equal to itself.")
7072 }
8486 if ((0 >= minReceived))
8587 then throw("")
8688 else {
87- let $t027783003 = match doSwap(pool, pmt, assetToReceive, minReceived, estReceived) {
89+ let $t028593084 = match doSwap(pool, pmt, assetToReceive, minReceived, estReceived) {
8890 case _ =>
8991 if (if (if ($isInstanceOf($match0._1, "Int"))
9092 then if ($isInstanceOf($match0._2, "Int"))
101103 }
102104 else throw("")
103105 }
104- let balanceBefore = $t027783003._1
105- let received = $t027783003._2
106- let fee = $t027783003._3
107- if ((0 >= received))
108- then throw("")
109- else [ScriptTransfer(inv.caller, (received - fee), assetReceivedId), ScriptTransfer(collector, fee, assetReceivedId)]
106+ let balanceBefore = $t028593084._1
107+ let received = $t028593084._2
108+ let fee = $t028593084._3
109+[ScriptTransfer(inv.caller, (received - fee), assetReceivedId), ScriptTransfer(collector, fee, assetReceivedId)]
110110 }
111111 }
112112
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let collector = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, "collector"), "")), "")
55
66 let oracle = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, "oracle"), "")), "")
77
88 let pools = split(valueOrErrorMessage(getString(oracle, "pools"), ""), ",")
99
1010 func getAssetId (asset) = if ((asset == "WAVES"))
1111 then unit
1212 else fromBase58String(asset)
1313
1414
1515 func getBalance (assetId) = match assetId {
1616 case asset: ByteVector =>
1717 assetBalance(this, asset)
1818 case waves: Unit =>
1919 wavesBalance(this).available
2020 case _ =>
2121 throw("Match error")
2222 }
2323
2424
2525 func deductFee (amount) = fraction(amount, 1, 1000)
2626
2727
2828 func deductFlatFee (amount) = fraction(amount, 1, 10000)
2929
3030
3131 func doSwap (pool,payment,assetReceived,minReceived,estReceived) = {
3232 let poolAddress = valueOrErrorMessage(addressFromString(pool), "")
3333 let assetReceivedId = getAssetId(assetReceived)
3434 if ((0 >= minReceived))
3535 then throw("")
3636 else if ((0 > estReceived))
3737 then throw("")
3838 else {
3939 let balanceBefore = getBalance(assetReceivedId)
4040 if ((balanceBefore == balanceBefore))
4141 then if (!(containsElement(pools, pool)))
4242 then throw("")
4343 else {
4444 let poolAssetA = valueOrErrorMessage(getString(poolAddress, "A_asset_id"), "")
4545 let poolAssetB = valueOrErrorMessage(getString(poolAddress, "B_asset_id"), "")
4646 let poolAssetIdA = getAssetId(poolAssetA)
4747 let poolAssetIdB = getAssetId(poolAssetB)
4848 let versionMajor = valueOrErrorMessage(parseInt(split(valueOrErrorMessage(getString(poolAddress, "version"), ""), ".")[0]), "")
4949 let args = if ((versionMajor == 1))
5050 then [(minReceived + deductFee(minReceived))]
5151 else if ((versionMajor == 2))
5252 then if ((0 >= estReceived))
5353 then throw("")
5454 else [(estReceived + deductFlatFee(estReceived)), (minReceived + deductFee(minReceived))]
5555 else throw("")
5656 let result = invoke(poolAddress, "exchange", args, [payment])
5757 if ((result == result))
5858 then {
5959 let received = (getBalance(assetReceivedId) - balanceBefore)
6060 if ((received == received))
6161 then {
6262 let fee = if ((versionMajor == 1))
6363 then deductFee(received)
6464 else if ((versionMajor == 2))
6565 then deductFlatFee(received)
6666 else throw("")
67- $Tuple3(balanceBefore, received, fee)
67+ if ((0 >= received))
68+ then throw("")
69+ else $Tuple3(balanceBefore, received, fee)
6870 }
6971 else throw("Strict value is not equal to itself.")
7072 }
7173 else throw("Strict value is not equal to itself.")
7274 }
7375 else throw("Strict value is not equal to itself.")
7476 }
7577 }
7678
7779
7880 @Callable(inv)
7981 func swap (pool,assetToReceive,minReceived,estReceived) = {
8082 let pmt = if ((size(inv.payments) > 0))
8183 then inv.payments[0]
8284 else throw("")
8385 let assetReceivedId = getAssetId(assetToReceive)
8486 if ((0 >= minReceived))
8587 then throw("")
8688 else {
87- let $t027783003 = match doSwap(pool, pmt, assetToReceive, minReceived, estReceived) {
89+ let $t028593084 = match doSwap(pool, pmt, assetToReceive, minReceived, estReceived) {
8890 case _ =>
8991 if (if (if ($isInstanceOf($match0._1, "Int"))
9092 then if ($isInstanceOf($match0._2, "Int"))
9193 then $isInstanceOf($match0._3, "Int")
9294 else false
9395 else false)
9496 then $isInstanceOf($match0, "(Int, Int, Int)")
9597 else false)
9698 then {
9799 let before = $match0._1
98100 let income = $match0._2
99101 let fee = $match0._3
100102 $Tuple3(before, income, fee)
101103 }
102104 else throw("")
103105 }
104- let balanceBefore = $t027783003._1
105- let received = $t027783003._2
106- let fee = $t027783003._3
107- if ((0 >= received))
108- then throw("")
109- else [ScriptTransfer(inv.caller, (received - fee), assetReceivedId), ScriptTransfer(collector, fee, assetReceivedId)]
106+ let balanceBefore = $t028593084._1
107+ let received = $t028593084._2
108+ let fee = $t028593084._3
109+[ScriptTransfer(inv.caller, (received - fee), assetReceivedId), ScriptTransfer(collector, fee, assetReceivedId)]
110110 }
111111 }
112112
113113

github/deemru/w8io/873ac7e 
38.91 ms