Skip to content

Commit f6213a6

Browse files
authored
Merge pull request #322 from gemeniteg/master
add contracts event for owlto
2 parents 895ca70 + 0bff1b6 commit f6213a6

File tree

1 file changed

+76
-114
lines changed

1 file changed

+76
-114
lines changed

src/adapters/owlto/index.ts

Lines changed: 76 additions & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ import { EventData } from "../../utils/types";
66
import { getTxsBlockRangeEtherscan, wait } from "../../helpers/etherscan";
77
import { getTxsBlockRangeMerlinScan } from "../../helpers/merlin";
88
import { getTxsBlockRangeBtrScan } from "../../helpers/btr";
9+
import { BigNumber } from "ethers";
910

1011
const retry = require("async-retry");
1112

12-
1313
export const contractsAddress = {
1414
arbitrum: ["0x0e83DEd9f80e1C92549615D96842F5cB64A08762"],
1515
arbitrum_nova: ["0x0e83DEd9f80e1C92549615D96842F5cB64A08762"],
@@ -49,24 +49,24 @@ export const contractsAddress = {
4949
zircuit: ["0x7CFE8Aa0d8E92CCbBDfB12b95AEB7a54ec40f0F5"],
5050
lisk: ["0x3F0F0E6411F859Da1A1BbF8bD6217cA93820Bb98"],
5151
cyeth: ["0xC626845BF4E6a5802Ef774dA0B3DfC6707F015F7"],
52-
fantom:["0x7CFE8Aa0d8E92CCbBDfB12b95AEB7a54ec40f0F5"],
53-
fuse:["0x7CFE8Aa0d8E92CCbBDfB12b95AEB7a54ec40f0F5"],
54-
klaytn:["0x7CFE8Aa0d8E92CCbBDfB12b95AEB7a54ec40f0F5"],
55-
cronos_zkevm:["0x7CFE8Aa0d8E92CCbBDfB12b95AEB7a54ec40f0F5"],
52+
fantom: ["0x7CFE8Aa0d8E92CCbBDfB12b95AEB7a54ec40f0F5"],
53+
fuse: ["0x7CFE8Aa0d8E92CCbBDfB12b95AEB7a54ec40f0F5"],
54+
klaytn: ["0x7CFE8Aa0d8E92CCbBDfB12b95AEB7a54ec40f0F5"],
55+
cronos_zkevm: ["0x7CFE8Aa0d8E92CCbBDfB12b95AEB7a54ec40f0F5"],
5656
wc: ["0x5b9d8AdCf93557E95902D1d91Bf73d12Becd2cC9"],
57-
rari:["0xC626845BF4E6a5802Ef774dA0B3DfC6707F015F7"],
58-
ink:["0x7CFE8Aa0d8E92CCbBDfB12b95AEB7a54ec40f0F5"],
59-
matchain:["0x3F0F0E6411F859Da1A1BbF8bD6217cA93820Bb98"],
60-
fraxtal:["0xC626845BF4E6a5802Ef774dA0B3DfC6707F015F7"],
61-
shape:["0x7CFE8Aa0d8E92CCbBDfB12b95AEB7a54ec40f0F5"],
57+
rari: ["0xC626845BF4E6a5802Ef774dA0B3DfC6707F015F7"],
58+
ink: ["0x7CFE8Aa0d8E92CCbBDfB12b95AEB7a54ec40f0F5"],
59+
matchain: ["0x3F0F0E6411F859Da1A1BbF8bD6217cA93820Bb98"],
60+
fraxtal: ["0xC626845BF4E6a5802Ef774dA0B3DfC6707F015F7"],
61+
shape: ["0x7CFE8Aa0d8E92CCbBDfB12b95AEB7a54ec40f0F5"],
6262
} as const;
6363

6464
const nativeTokens: Record<string, string> = {
6565
ethereum: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
6666
polygon: "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270",
6767
bsc: "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",
68-
avax:"0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7",
69-
fantom:"0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83",
68+
avax: "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7",
69+
fantom: "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83",
7070
arbitrum: "0x82af49447d8a07e3bd95bd0d56f35241523fbab1",
7171
optimism: "0x4200000000000000000000000000000000000006",
7272
base: "0x4200000000000000000000000000000000000006",
@@ -78,7 +78,7 @@ const nativeTokens: Record<string, string> = {
7878
era: "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91",
7979
zklink: "0x8280a4e7D5B3B658ec4580d3Bc30f5e50454F169",
8080
taiko: "0xA51894664A773981C6C112C43ce576f315d5b1B6",
81-
mantle:"0x78c1b0C915c4FAA5FffA6CAbf0219DA63d7f4cb8",
81+
mantle: "0x78c1b0C915c4FAA5FffA6CAbf0219DA63d7f4cb8",
8282
merlin: "0xF6D226f9Dc15d9bB51182815b320D3fBE324e1bA",
8383
btr: "0xff204e2681a6fa0e2c3fade68a1b28fb90e4fc5f",
8484
};
@@ -87,111 +87,73 @@ const depositParams: PartialContractEventParams = {
8787
target: "",
8888
topic: "Deposit(address,address,address,string,uint256,uint256,uint256,uint256)",
8989
abi: [
90-
"event Deposit(address user, address token, address maker, string target, uint256 amount, uint256 destination, uint256 channel, uint256 timestamp)",
90+
"event Deposit(address indexed user, address indexed token, address indexed maker, string target, uint256 amount, uint256 destination, uint256 channel, uint256 timestamp)",
9191
],
9292
logKeys: {
93-
blockNumber: "blockNumber",
94-
txHash: "transactionHash",
93+
blockNumber: "blockNumber",
94+
txHash: "transactionHash",
9595
},
9696
argKeys: {
97-
amount: "amount",
98-
to: "maker",
99-
from: "user",
100-
token: "token",
97+
amount: "amount",
98+
to: "maker",
99+
from: "user",
100+
token: "token",
101101
},
102102
isDeposit: true,
103-
};
103+
};
104104

105-
106105
type SupportedChains = keyof typeof contractsAddress;
107106

108107
const constructParams = (chain: SupportedChains) => {
109-
const bridgeAddress = ["0x5e809A85Aa182A9921EDD10a4163745bb3e36284"]
110-
const contractAddress = contractsAddress[chain];
111-
112-
let eventParams = [] as any;
113-
bridgeAddress.map((address: string) => {
114-
const transferWithdrawalParams: PartialContractEventParams = constructTransferParams(address, false);
115-
const transferDepositParams: PartialContractEventParams = constructTransferParams(address, true);
116-
eventParams.push(transferWithdrawalParams, transferDepositParams, depositParams);
117-
});
118-
119-
if (nativeTokens.hasOwnProperty(chain)) {
120-
return async (fromBlock: number, toBlock: number) => {
121-
const eventLogData = await getTxDataFromEVMEventLogs("owlto", chain as Chain, fromBlock, toBlock, eventParams);
108+
const address = "0x5e809A85Aa182A9921EDD10a4163745bb3e36284";
109+
const chainContracts = contractsAddress[chain];
110+
let eventParams: PartialContractEventParams[] = [];
122111

123-
const nativeEvents = await Promise.all([
124-
...bridgeAddress.map(async (address: string, i: number) => {
125-
await wait(300 * i); // for etherscan
126-
let txs: any[] = [];
127-
if (chain === "merlin") {
128-
txs = await getTxsBlockRangeMerlinScan(address, fromBlock, toBlock, {
129-
includeSignatures: ["0x"],
130-
});
131-
} else if (chain === "btr") {
132-
txs = await getTxsBlockRangeBtrScan(address, fromBlock, toBlock, {
133-
includeSignatures: ["0x"],
134-
});
135-
} else {
136-
txs = await getTxsBlockRangeEtherscan(chain, address, fromBlock, toBlock, {
137-
includeSignatures: ["0x"],
138-
});
139-
}
140-
const eventsRes: EventData[] = txs.map((tx: any) => {
141-
const event: EventData = {
142-
txHash: tx.hash,
143-
blockNumber: +tx.blockNumber,
144-
from: tx.from,
145-
to: tx.to,
146-
token: nativeTokens[chain],
147-
amount: tx.value,
148-
isDeposit: address.toLowerCase() === tx.to,
149-
};
150-
return event;
151-
});
152-
153-
return eventsRes;
154-
}),
155-
...contractAddress.map(async (address: string, i: number) => {
156-
await wait(300 * i); // for etherscan
157-
let txs: any[] = [];
158-
if (chain === "merlin") {
159-
txs = await getTxsBlockRangeMerlinScan(address, fromBlock, toBlock, {
160-
includeSignatures: ["0xfc180638"],
161-
});
162-
} else if (chain === "btr") {
163-
txs = await getTxsBlockRangeBtrScan(address, fromBlock, toBlock, {
164-
includeSignatures: ["0xfc180638"],
165-
});
166-
} else {
167-
txs = await getTxsBlockRangeEtherscan(chain, address, fromBlock, toBlock, {
168-
includeSignatures: ["0xfc180638"],
169-
});
170-
}
171-
const eventsRes: EventData[] = txs.filter((tx: any) => String(tx.value) != "0").map((tx: any) => {
172-
const event: EventData = {
173-
txHash: tx.hash,
174-
blockNumber: +tx.blockNumber,
175-
from: tx.from,
176-
to: tx.to,
177-
token: nativeTokens[chain],
178-
amount: tx.value,
179-
isDeposit: address.toLowerCase() === tx.to,
180-
};
181-
return event;
182-
});
183-
184-
return eventsRes;
185-
})
186-
]
187-
);
188-
const allEvents = [...eventLogData, ...nativeEvents.flat()];
189-
return allEvents;
112+
const transferWithdrawalParams: PartialContractEventParams = constructTransferParams(address, false);
113+
eventParams.push(transferWithdrawalParams);
114+
const transferDepositParams: PartialContractEventParams = constructTransferParams(address, true);
115+
eventParams.push(transferDepositParams);
116+
for (const cc of chainContracts) {
117+
const dp = {
118+
...depositParams,
119+
target: cc,
190120
};
191-
} else {
192-
return async (fromBlock: number, toBlock: number) =>
193-
getTxDataFromEVMEventLogs("owlto", chain as Chain, fromBlock, toBlock, eventParams);
121+
eventParams.push(dp);
194122
}
123+
124+
return async (fromBlock: number, toBlock: number) => {
125+
const eventLogData = await getTxDataFromEVMEventLogs("owlto", chain as Chain, fromBlock, toBlock, eventParams);
126+
let eventsRes: EventData[] = [];
127+
if (nativeTokens.hasOwnProperty(chain)) {
128+
let txs: any[] = [];
129+
if (chain === "merlin") {
130+
txs = await getTxsBlockRangeMerlinScan(address, fromBlock, toBlock, {
131+
includeSignatures: ["0x"],
132+
});
133+
} else if (chain === "btr") {
134+
txs = await getTxsBlockRangeBtrScan(address, fromBlock, toBlock, {
135+
includeSignatures: ["0x"],
136+
});
137+
} else {
138+
txs = await getTxsBlockRangeEtherscan(chain, address, fromBlock, toBlock, {
139+
includeSignatures: ["0x"],
140+
});
141+
}
142+
eventsRes = txs.map((tx: any) => {
143+
const event: EventData = {
144+
txHash: tx.hash,
145+
blockNumber: +tx.blockNumber,
146+
from: tx.from,
147+
to: tx.to,
148+
token: nativeTokens[chain],
149+
amount: BigNumber.from(tx.value),
150+
isDeposit: address.toLowerCase() === tx.to.toLowerCase(),
151+
};
152+
return event;
153+
});
154+
}
155+
return [...eventLogData, ...eventsRes];
156+
};
195157
}
196158

197159

@@ -228,22 +190,22 @@ const adapter: BridgeAdapter = {
228190
zircuit: constructParams("zircuit"),
229191
lisk: constructParams("lisk"),
230192
cyber: constructParams("cyeth"),
231-
fantom:constructParams("fantom"),
232-
fuse:constructParams("fuse"),
233-
kaia:constructParams("klaytn"),
234-
rari:constructParams("rari"),
235-
ink:constructParams("ink"),
236-
matchain:constructParams("matchain"),
237-
shape:constructParams("shape"),
238-
fraxtal:constructParams("fraxtal"),
193+
fantom: constructParams("fantom"),
194+
fuse: constructParams("fuse"),
195+
kaia: constructParams("klaytn"),
196+
rari: constructParams("rari"),
197+
ink: constructParams("ink"),
198+
matchain: constructParams("matchain"),
199+
shape: constructParams("shape"),
200+
fraxtal: constructParams("fraxtal"),
239201
"cronos zkevm": constructParams("cronos_zkevm"),
240202
'x layer': constructParams("xlayer"),
241203
"arbitrum nova": constructParams("arbitrum_nova"),
242204
"polygon zkevm": constructParams("polygon_zkevm"),
243205
"zksync era": constructParams("era"),
244206
"astar zkevm": constructParams("astrzk"),
245207
"zklink nova": constructParams("zklink"),
246-
"world chain":constructParams("wc"),
208+
"world chain": constructParams("wc"),
247209
};
248210

249211
export default adapter;

0 commit comments

Comments
 (0)