tx · FxjNe2pKqF72t9wPXdKqP31ovr2p7hjn4JqkJkMhYyBd

3MvdzbvEZLHEE3EXHXxaRQjgpNqq28733ao:  -0.01000000 Waves

2021.12.22 19:43 [1845719] smart account 3MvdzbvEZLHEE3EXHXxaRQjgpNqq28733ao > SELF 0.00000000 Waves

{ "type": 13, "id": "FxjNe2pKqF72t9wPXdKqP31ovr2p7hjn4JqkJkMhYyBd", "fee": 1000000, "feeAssetId": null, "timestamp": 1640191486271, "version": 1, "sender": "3MvdzbvEZLHEE3EXHXxaRQjgpNqq28733ao", "senderPublicKey": "HQmnkZjA2Ehwb2iKXAadqRsrXsHGZChU6WfgmHRsMW8t", "proofs": [ "4oMEDNPyxNctGRhfCZEMqkdvqHw1dH36MFumUQWEoEpsNb3XHJcd4PaRBK9AKZmshvZTF9sbGZTV7c1m3YWA8iFL" ], "script": "base64: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", "chainId": 84, "height": 1845719, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: E5mCvSeSZrZS7Giay7LM2G19PqQdGWpovMSdCzJcbVs8 Next: FoSZnYRKBgsHP6hELgLV7b2NtYV84nbUBa3siPcpkXaS Diff:
OldNewDifferences
3838 else {
3939 let balanceBefore = getBalance(assetReceivedId)
4040 if ((balanceBefore == balanceBefore))
41- then {
42- let result = if (!(containsElement(pools, pool)))
43- then throw("")
44- else {
45- let poolAssetA = valueOrErrorMessage(getString(poolAddress, "A_asset_id"), "")
46- let poolAssetB = valueOrErrorMessage(getString(poolAddress, "B_asset_id"), "")
47- let poolAssetIdA = getAssetId(poolAssetA)
48- let poolAssetIdB = getAssetId(poolAssetB)
49- let versionMajor = valueOrErrorMessage(parseInt(split(valueOrErrorMessage(getString(poolAddress, "version"), ""), ".")[0]), "")
50- let args = if ((versionMajor == 1))
51- then [(minReceived + deductFee(minReceived))]
52- else if ((versionMajor == 2))
53- then if ((0 >= estReceived))
54- then throw("")
55- else [(estReceived + deductFlatFee(estReceived)), (minReceived + deductFlatFee(minReceived))]
56- else throw("")
57- invoke(poolAddress, "exchange", args, [payment])
58- }
59- if ((result == result))
60- then {
61- let received = (getBalance(assetReceivedId) - balanceBefore)
62- if ((received == received))
63- then $Tuple2(balanceBefore, received)
64- else throw("Strict value is not equal to itself.")
65- }
66- else throw("Strict value is not equal to itself.")
67- }
41+ then if (!(containsElement(pools, pool)))
42+ then throw("")
43+ else {
44+ let poolAssetA = valueOrErrorMessage(getString(poolAddress, "A_asset_id"), "")
45+ let poolAssetB = valueOrErrorMessage(getString(poolAddress, "B_asset_id"), "")
46+ let poolAssetIdA = getAssetId(poolAssetA)
47+ let poolAssetIdB = getAssetId(poolAssetB)
48+ let versionMajor = valueOrErrorMessage(parseInt(split(valueOrErrorMessage(getString(poolAddress, "version"), ""), ".")[0]), "")
49+ let args = if ((versionMajor == 1))
50+ then [(minReceived + deductFee(minReceived))]
51+ else if ((versionMajor == 2))
52+ then if ((0 >= estReceived))
53+ then throw("")
54+ else [(estReceived + deductFlatFee(estReceived)), (minReceived + deductFee(minReceived))]
55+ else throw("")
56+ let result = invoke(poolAddress, "exchange", args, [payment])
57+ if ((result == result))
58+ then {
59+ let received = (getBalance(assetReceivedId) - balanceBefore)
60+ if ((received == received))
61+ then {
62+ let fee = if ((versionMajor == 1))
63+ then deductFee(received)
64+ else if ((versionMajor == 2))
65+ then deductFlatFee(received)
66+ else throw("")
67+ $Tuple3(balanceBefore, received, fee)
68+ }
69+ else throw("Strict value is not equal to itself.")
70+ }
71+ else throw("Strict value is not equal to itself.")
72+ }
6873 else throw("Strict value is not equal to itself.")
6974 }
7075 }
7984 if ((0 >= minReceived))
8085 then throw("")
8186 else {
82- let $t027162921 = match doSwap(pool, pmt, assetToReceive, minReceived, estReceived) {
87+ let $t027783003 = match doSwap(pool, pmt, assetToReceive, minReceived, estReceived) {
8388 case _ =>
8489 if (if (if ($isInstanceOf($match0._1, "Int"))
85- then $isInstanceOf($match0._2, "Int")
90+ then if ($isInstanceOf($match0._2, "Int"))
91+ then $isInstanceOf($match0._3, "Int")
92+ else false
8693 else false)
87- then $isInstanceOf($match0, "(Int, Int)")
94+ then $isInstanceOf($match0, "(Int, Int, Int)")
8895 else false)
8996 then {
9097 let before = $match0._1
9198 let income = $match0._2
92- $Tuple2(before, income)
99+ let fee = $match0._3
100+ $Tuple3(before, income, fee)
93101 }
94102 else throw("")
95103 }
96- let balanceBefore = $t027162921._1
97- let received = $t027162921._2
104+ let balanceBefore = $t027783003._1
105+ let received = $t027783003._2
106+ let fee = $t027783003._3
98107 if ((0 >= received))
99108 then throw("")
100- else {
101- let fee = deductFee(received)
102-[ScriptTransfer(inv.caller, (received - fee), assetReceivedId), ScriptTransfer(collector, fee, assetReceivedId)]
103- }
109+ else [ScriptTransfer(inv.caller, (received - fee), assetReceivedId), ScriptTransfer(collector, fee, assetReceivedId)]
104110 }
105111 }
106112
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))
41- then {
42- let result = if (!(containsElement(pools, pool)))
43- then throw("")
44- else {
45- let poolAssetA = valueOrErrorMessage(getString(poolAddress, "A_asset_id"), "")
46- let poolAssetB = valueOrErrorMessage(getString(poolAddress, "B_asset_id"), "")
47- let poolAssetIdA = getAssetId(poolAssetA)
48- let poolAssetIdB = getAssetId(poolAssetB)
49- let versionMajor = valueOrErrorMessage(parseInt(split(valueOrErrorMessage(getString(poolAddress, "version"), ""), ".")[0]), "")
50- let args = if ((versionMajor == 1))
51- then [(minReceived + deductFee(minReceived))]
52- else if ((versionMajor == 2))
53- then if ((0 >= estReceived))
54- then throw("")
55- else [(estReceived + deductFlatFee(estReceived)), (minReceived + deductFlatFee(minReceived))]
56- else throw("")
57- invoke(poolAddress, "exchange", args, [payment])
58- }
59- if ((result == result))
60- then {
61- let received = (getBalance(assetReceivedId) - balanceBefore)
62- if ((received == received))
63- then $Tuple2(balanceBefore, received)
64- else throw("Strict value is not equal to itself.")
65- }
66- else throw("Strict value is not equal to itself.")
67- }
41+ then if (!(containsElement(pools, pool)))
42+ then throw("")
43+ else {
44+ let poolAssetA = valueOrErrorMessage(getString(poolAddress, "A_asset_id"), "")
45+ let poolAssetB = valueOrErrorMessage(getString(poolAddress, "B_asset_id"), "")
46+ let poolAssetIdA = getAssetId(poolAssetA)
47+ let poolAssetIdB = getAssetId(poolAssetB)
48+ let versionMajor = valueOrErrorMessage(parseInt(split(valueOrErrorMessage(getString(poolAddress, "version"), ""), ".")[0]), "")
49+ let args = if ((versionMajor == 1))
50+ then [(minReceived + deductFee(minReceived))]
51+ else if ((versionMajor == 2))
52+ then if ((0 >= estReceived))
53+ then throw("")
54+ else [(estReceived + deductFlatFee(estReceived)), (minReceived + deductFee(minReceived))]
55+ else throw("")
56+ let result = invoke(poolAddress, "exchange", args, [payment])
57+ if ((result == result))
58+ then {
59+ let received = (getBalance(assetReceivedId) - balanceBefore)
60+ if ((received == received))
61+ then {
62+ let fee = if ((versionMajor == 1))
63+ then deductFee(received)
64+ else if ((versionMajor == 2))
65+ then deductFlatFee(received)
66+ else throw("")
67+ $Tuple3(balanceBefore, received, fee)
68+ }
69+ else throw("Strict value is not equal to itself.")
70+ }
71+ else throw("Strict value is not equal to itself.")
72+ }
6873 else throw("Strict value is not equal to itself.")
6974 }
7075 }
7176
7277
7378 @Callable(inv)
7479 func swap (pool,assetToReceive,minReceived,estReceived) = {
7580 let pmt = if ((size(inv.payments) > 0))
7681 then inv.payments[0]
7782 else throw("")
7883 let assetReceivedId = getAssetId(assetToReceive)
7984 if ((0 >= minReceived))
8085 then throw("")
8186 else {
82- let $t027162921 = match doSwap(pool, pmt, assetToReceive, minReceived, estReceived) {
87+ let $t027783003 = match doSwap(pool, pmt, assetToReceive, minReceived, estReceived) {
8388 case _ =>
8489 if (if (if ($isInstanceOf($match0._1, "Int"))
85- then $isInstanceOf($match0._2, "Int")
90+ then if ($isInstanceOf($match0._2, "Int"))
91+ then $isInstanceOf($match0._3, "Int")
92+ else false
8693 else false)
87- then $isInstanceOf($match0, "(Int, Int)")
94+ then $isInstanceOf($match0, "(Int, Int, Int)")
8895 else false)
8996 then {
9097 let before = $match0._1
9198 let income = $match0._2
92- $Tuple2(before, income)
99+ let fee = $match0._3
100+ $Tuple3(before, income, fee)
93101 }
94102 else throw("")
95103 }
96- let balanceBefore = $t027162921._1
97- let received = $t027162921._2
104+ let balanceBefore = $t027783003._1
105+ let received = $t027783003._2
106+ let fee = $t027783003._3
98107 if ((0 >= received))
99108 then throw("")
100- else {
101- let fee = deductFee(received)
102-[ScriptTransfer(inv.caller, (received - fee), assetReceivedId), ScriptTransfer(collector, fee, assetReceivedId)]
103- }
109+ else [ScriptTransfer(inv.caller, (received - fee), assetReceivedId), ScriptTransfer(collector, fee, assetReceivedId)]
104110 }
105111 }
106112
107113

github/deemru/w8io/3ef1775 
41.41 ms