Skip to content

Commit 65a0d7a

Browse files
authored
track opinion PM fees and volume (#4559)
1 parent 7594c05 commit 65a0d7a

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

dexs/opinion/index.ts

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import { FetchOptions, FetchResult, SimpleAdapter } from "../../adapters/types";
2+
import { CHAIN } from "../../helpers/chains";
3+
4+
const OPINION_CONTRACT = "0x5F45344126D6488025B0b84A3A8189F2487a7246";
5+
const ORDER_FILLED_EVENT = "event OrderFilled (bytes32 indexed orderHash, address indexed maker,address indexed taker, uint256 makerAssetId, uint256 takerAssetId, uint256 makerAmountFilled, uint256 takerAmountFilled, uint256 fee)";
6+
7+
async function fetch(options: FetchOptions): Promise<FetchResult> {
8+
const dailyVolume = options.createBalances();
9+
const dailyFees = options.createBalances();
10+
11+
const orderFilledLogs = await options.getLogs({
12+
eventAbi: ORDER_FILLED_EVENT,
13+
target: OPINION_CONTRACT
14+
});
15+
16+
orderFilledLogs.forEach((order: any) => {
17+
const tradeVolume = Number(order.makerAssetId == 0 ? order.makerAmountFilled : order.takerAmountFilled) / 1e18;
18+
dailyVolume.addUSDValue(tradeVolume);
19+
dailyFees.addUSDValue(Number(order.fee) / 1e18);
20+
});
21+
22+
return {
23+
dailyVolume,
24+
dailyFees,
25+
dailyRevenue: dailyFees,
26+
dailyProtocolRevenue: dailyFees,
27+
}
28+
29+
}
30+
31+
const methodology = {
32+
Volume: "Opinion prediction market trading volume",
33+
Fees: "Taker fees collected by opinion",
34+
Revenue: "All the fees are revenue",
35+
ProtocolRevenue: "All the revenue goes to protocol",
36+
};
37+
38+
const adapter: SimpleAdapter = {
39+
version: 2,
40+
fetch,
41+
methodology,
42+
chains: [CHAIN.BSC],
43+
start: '2025-10-22',
44+
}
45+
46+
export default adapter;

0 commit comments

Comments
 (0)