Skip to content

Commit 8fbf7c3

Browse files
authored
cow-swap correct revenue and handle eth very high revenue alert (DefiLlama#3985)
1 parent 6a1e490 commit 8fbf7c3

2 files changed

Lines changed: 32 additions & 15 deletions

File tree

fees/cow-protocol.ts

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Adapter, Chain, FetchOptions } from "../adapters/types";
1+
import { Adapter, FetchOptions } from "../adapters/types";
22
import { CHAIN } from "../helpers/chains";
33
import { getSqlFromFile, queryDuneSql } from "../helpers/dune";
44
import { getTimestampAtStartOfDayUTC } from "../utils/date";
@@ -21,16 +21,26 @@ const fetch = async (_a: any, _ts: any, options: FetchOptions) => {
2121

2222
if (data) {
2323
// All values are now in ETH from the new dune query
24-
const protocolFee = data.protocol_fee || 0;
25-
const partnerFee = data.partner_fee || 0;
24+
const protocolFee = data.protocol_fee_revenue || 0;
25+
const partnerFeePartner = data.partner_fee_partner_revenue || 0;
2626
const mevBlockerFee = data.mev_blocker_fee || 0;
27-
28-
const totalFees = protocolFee + partnerFee + mevBlockerFee;
29-
const protocolRevenue = protocolFee + mevBlockerFee; // Excluding partner fees
30-
27+
// const limitFee = data.limit_revenue || 0;
28+
// const marketFee = data.market_revenue || 0;
29+
// const uiFee = data.ui_fee_revenue || 0;
30+
const partnerFeeCow = data.partner_fee_cow_revenue || 0;
31+
32+
let totalFees = protocolFee + partnerFeeCow + partnerFeePartner + (mevBlockerFee * 2); // beaverbuild receive same amount for mevBlockerFee
33+
let protocolRevenue = protocolFee + partnerFeeCow + mevBlockerFee; // Excluding partner fees
34+
3135
// Sanity check for Gnosis chain
3236
if(options.chain === CHAIN.XDAI && totalFees > 5) {
33-
throw new Error(`Total fees ${totalFees} ETH very high for gnosis. Protocol: ${protocolFee}, Partner: ${partnerFee}, MEV: ${mevBlockerFee}`);
37+
throw new Error(`Total fees ${totalFees} ETH very high for gnosis. Protocol: ${protocolFee}, Partner(Partner): ${partnerFeePartner}, Partner(COW): ${partnerFeeCow}, MEV: ${mevBlockerFee}`);
38+
}
39+
40+
if(options.chain === CHAIN.ETHEREUM && totalFees > 1000) {
41+
totalFees = 0;
42+
protocolRevenue = 0;
43+
// throw new Error(`Total fees ${totalFees} ETH very high for ethereum. Protocol: ${protocolFee}, Partner: ${partnerFee}, MEV: ${mevBlockerFee}`);
3444
}
3545

3646
dailyFees.addCGToken('ethereum', totalFees);
@@ -50,8 +60,8 @@ const fetch = async (_a: any, _ts: any, options: FetchOptions) => {
5060
const methodology = {
5161
UserFees: "All trading fees including protocol fees, partner fees, and MEV blocker fees",
5262
Fees: "All trading fees including protocol fees, partner fees, and MEV blocker fees",
53-
Revenue: "Trading fees excluding partner fee share (protocol fees + MEV blocker fees)",
54-
ProtocolRevenue: "Trading fees excluding partner fee share (protocol fees + MEV blocker fees)",
63+
Revenue: "Trading fees (protocol fees + cow's MEV blocker fees + partner fee share)",
64+
ProtocolRevenue: "Trading fees (protocol fees + cow's MEV blocker fees + partner fee share)",
5565
}
5666

5767
const chainConfig = {

helpers/queries/cow-protocol.sql

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,12 @@ mevblocker_eth as (
1313
select
1414
date_trunc('day', block_time) as date
1515
, blockchain as chain
16-
, sum(protocol_fee_revenue_eth) as protocol_fee
17-
, sum(partner_fee_cow_revenue_eth) as partner_fee
18-
16+
, sum(protocol_fee_revenue_eth) as protocol_fee_revenue
17+
, sum(limit_revenue_eth) as limit_revenue
18+
, sum(market_revenue_eth) as market_revenue
19+
, sum(ui_fee_revenue_eth) as ui_fee_revenue
20+
, sum(partner_fee_partner_revenue_eth) as partner_fee_partner_revenue
21+
, sum(partner_fee_cow_revenue_eth) as partner_fee_cow_revenue
1922
from dune.cowprotocol.result_fees_revenue_per_order as rev
2023
where
2124
date_trunc('day', block_time) = from_unixtime({{start}})
@@ -25,8 +28,12 @@ mevblocker_eth as (
2528
select
2629
f.date,
2730
f.chain,
28-
f.protocol_fee,
29-
f.partner_fee,
31+
f.protocol_fee_revenue,
32+
f.limit_revenue,
33+
f.market_revenue,
34+
f.ui_fee_revenue,
35+
f.partner_fee_partner_revenue,
36+
f.partner_fee_cow_revenue,
3037
case
3138
when f.chain = 'ethereum' then coalesce(m.mev_blocker_fee, 0)
3239
else 0

0 commit comments

Comments
 (0)