tx · hJc2yCLUiTiqXXmM6Yfdxcx3mkVCU52bBFs721pry4S

3MvdzbvEZLHEE3EXHXxaRQjgpNqq28733ao:  -0.01000000 Waves

2021.12.22 17:30 [1845590] smart account 3MvdzbvEZLHEE3EXHXxaRQjgpNqq28733ao > SELF 0.00000000 Waves

{ "type": 13, "id": "hJc2yCLUiTiqXXmM6Yfdxcx3mkVCU52bBFs721pry4S", "fee": 1000000, "feeAssetId": null, "timestamp": 1640183415693, "version": 1, "sender": "3MvdzbvEZLHEE3EXHXxaRQjgpNqq28733ao", "senderPublicKey": "HQmnkZjA2Ehwb2iKXAadqRsrXsHGZChU6WfgmHRsMW8t", "proofs": [ "3NftwZr5wAeuDHSdiep2rtz2TKkghvhivh5Taf8rCWGdnKnst17uAimjPfSb2v8g2EBJj9dcGsoRSk32FAhXdQGb" ], "script": "base64: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", "chainId": 84, "height": 1845590, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9fj3ZmTGFxyvvQvRMp6zCJbStp2HExHRHauZGsuUG2MT Next: Fx4EaN274qJ7Y6v7kuJArMNcuzi1y1kfouCQeq7MzKCa Diff:
OldNewDifferences
8888 then inv.payments[0]
8989 else throw("")
9090 let assetReceivedId = getAssetId(assetToReceive)
91- let isFeeFromPayment = {
92- let indexAssetFrom = valueOrElse(indexOf(feeAssets, pmt.assetId), -1)
93- let indexAssetTo = valueOrElse(indexOf(feeAssets, assetReceivedId), -1)
94- (indexAssetTo > indexAssetFrom)
95- }
9691 func deductFee (amount) = fraction(amount, 1, 1000)
9792
9893 if ((0 >= minReceived))
9994 then throw("")
10095 else {
101- let from = if (isFeeFromPayment)
102- then AttachedPayment(pmt.assetId, deductFee(pmt.amount))
103- else pmt
104- let $t031513356 = match doSwap(pool, pmt, assetToReceive, minReceived, estReceived) {
96+ let $t028163021 = match doSwap(pool, pmt, assetToReceive, minReceived, estReceived) {
10597 case _ =>
10698 if (if (if ($isInstanceOf($match0._1, "Int"))
10799 then $isInstanceOf($match0._2, "Int")
115107 }
116108 else throw("")
117109 }
118- let balanceBefore = $t031513356._1
119- let received = $t031513356._2
110+ let balanceBefore = $t028163021._1
111+ let received = $t028163021._2
120112 if ((0 >= received))
121113 then throw("")
122- else if (isFeeFromPayment)
123- then [ScriptTransfer(inv.caller, received, assetReceivedId), ScriptTransfer(collector, (pmt.amount - from.amount), from.assetId)]
124- else {
125- let fee = deductFee(received)
114+ else {
115+ let fee = deductFee(received)
126116 [ScriptTransfer(inv.caller, (received - fee), assetReceivedId), ScriptTransfer(collector, fee, assetReceivedId)]
127- }
117+ }
128118 }
129119 }
130120
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let collector = Address(base58'')
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 let feeAssets = {
2626 let assets = split(valueOrErrorMessage(getString(this, "fee-assets"), ""), ",")
2727 func toAssetIds (acc,assetStr) = (acc :+ getAssetId(assetStr))
2828
2929 let $l = assets
3030 let $s = size($l)
3131 let $acc0 = nil
3232 func 1 ($a,$i) = if (($i >= $s))
3333 then $a
3434 else toAssetIds($a, $l[$i])
3535
3636 func 2 ($a,$i) = if (($i >= $s))
3737 then $a
3838 else throw("List size exceeds 10")
3939
4040 2(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
4141 }
4242
4343 func doSwap (pool,payment,assetReceived,minReceived,estReceived) = {
4444 let poolAddress = valueOrErrorMessage(addressFromString(pool), "")
4545 let assetReceivedId = getAssetId(assetReceived)
4646 if ((0 >= minReceived))
4747 then throw("")
4848 else if ((0 > estReceived))
4949 then throw("")
5050 else {
5151 let balanceBefore = getBalance(assetReceivedId)
5252 if ((balanceBefore == balanceBefore))
5353 then {
5454 let result = if (!(containsElement(pools, pool)))
5555 then throw("")
5656 else {
5757 let poolAssetA = valueOrErrorMessage(getString(poolAddress, "A_asset_id"), "")
5858 let poolAssetB = valueOrErrorMessage(getString(poolAddress, "B_asset_id"), "")
5959 let poolAssetIdA = getAssetId(poolAssetA)
6060 let poolAssetIdB = getAssetId(poolAssetB)
6161 let versionMajor = valueOrErrorMessage(parseInt(split(valueOrErrorMessage(getString(poolAddress, "version"), ""), ".")[0]), "")
6262 let args = if ((versionMajor == 1))
6363 then [minReceived]
6464 else if ((versionMajor == 2))
6565 then if ((0 >= estReceived))
6666 then throw("")
6767 else [estReceived, minReceived]
6868 else throw("")
6969 invoke(poolAddress, "exchange", args, [payment])
7070 }
7171 if ((result == result))
7272 then {
7373 let received = (getBalance(assetReceivedId) - balanceBefore)
7474 if ((received == received))
7575 then $Tuple2(balanceBefore, received)
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 }
8383
8484
8585 @Callable(inv)
8686 func swap (pool,assetToReceive,minReceived,estReceived) = {
8787 let pmt = if ((size(inv.payments) > 0))
8888 then inv.payments[0]
8989 else throw("")
9090 let assetReceivedId = getAssetId(assetToReceive)
91- let isFeeFromPayment = {
92- let indexAssetFrom = valueOrElse(indexOf(feeAssets, pmt.assetId), -1)
93- let indexAssetTo = valueOrElse(indexOf(feeAssets, assetReceivedId), -1)
94- (indexAssetTo > indexAssetFrom)
95- }
9691 func deductFee (amount) = fraction(amount, 1, 1000)
9792
9893 if ((0 >= minReceived))
9994 then throw("")
10095 else {
101- let from = if (isFeeFromPayment)
102- then AttachedPayment(pmt.assetId, deductFee(pmt.amount))
103- else pmt
104- let $t031513356 = match doSwap(pool, pmt, assetToReceive, minReceived, estReceived) {
96+ let $t028163021 = match doSwap(pool, pmt, assetToReceive, minReceived, estReceived) {
10597 case _ =>
10698 if (if (if ($isInstanceOf($match0._1, "Int"))
10799 then $isInstanceOf($match0._2, "Int")
108100 else false)
109101 then $isInstanceOf($match0, "(Int, Int)")
110102 else false)
111103 then {
112104 let before = $match0._1
113105 let income = $match0._2
114106 $Tuple2(before, income)
115107 }
116108 else throw("")
117109 }
118- let balanceBefore = $t031513356._1
119- let received = $t031513356._2
110+ let balanceBefore = $t028163021._1
111+ let received = $t028163021._2
120112 if ((0 >= received))
121113 then throw("")
122- else if (isFeeFromPayment)
123- then [ScriptTransfer(inv.caller, received, assetReceivedId), ScriptTransfer(collector, (pmt.amount - from.amount), from.assetId)]
124- else {
125- let fee = deductFee(received)
114+ else {
115+ let fee = deductFee(received)
126116 [ScriptTransfer(inv.caller, (received - fee), assetReceivedId), ScriptTransfer(collector, fee, assetReceivedId)]
127- }
117+ }
128118 }
129119 }
130120
131121

github/deemru/w8io/873ac7e 
64.66 ms