Skip to content

Commit

Permalink
Merge pull request #62 from lolieatapple/master
Browse files Browse the repository at this point in the history
add functionx chain to wanbridge
  • Loading branch information
vrtnd authored Oct 13, 2023
2 parents 7e94d9f + 1afeba5 commit 73c70e8
Show file tree
Hide file tree
Showing 4 changed files with 214 additions and 2 deletions.
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
"ts-loader": "^9.3.1"
},
"dependencies": {
"@defillama/sdk": "^4.0.43",
"@defillama/sdk": "^4.0.64",
"async-retry": "^1.3.1",
"axios": "^0.21.0",
"axios-rate-limit": "^1.3.0",
Expand All @@ -30,6 +30,7 @@
"graphql-request": "^4.0.0",
"node-fetch": "^2.6.7",
"postgres": "^3.2.4",
"serverless-webpack": "^5.8.0"
"serverless-webpack": "^5.8.0",
"typescript": "^5.2.2"
}
}
2 changes: 2 additions & 0 deletions src/adapters/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import allbridge from "./allbridge";
import ibc from "./ibc";
import meter from "./meter";
// import tronpeg from "./tronpeg"
import wanbridge from './wanbridge';
import beamer from "./beamer";
import zksync from "./zksync";
import polygon_zkevm from "./polygon_zkevm";
Expand Down Expand Up @@ -63,6 +64,7 @@ export default {
allbridge,
ibc,
meter,
wanbridge,
beamer,
zksync,
polygon_zkevm,
Expand Down
175 changes: 175 additions & 0 deletions src/adapters/wanbridge/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,175 @@
import { BridgeAdapter, ContractEventParams } from "../../helpers/bridgeAdapter.type";
import { getTxDataFromEVMEventLogs } from "../../helpers/processTransactions";

enum Chains {
arbitrum = "arbitrum",
wanchain = "wanchain",
ethereum = "ethereum",
avalanche = "avalanche",
moonbeam = "moonbeam",
moonriver = "moonriver",
functionX = "functionX",
telos = "telos",
polygon = "polygon",
okexchain = "okexchain",
optimism = "optimism",
xdc = "xdc",
bsc = "bsc",
astar = "astar",
metis = "metis",
horizen = "horizen",
fantom = "fantom",
clover = "clover",
gather = "gather",
tron = "tron",
vinuchain = "vinuchain",
}


const contractAddresses = {
[Chains.arbitrum]: {
portal: "0xf7ba155556e2cd4dfe3fe26e506a14d2f4b97613"
},
[Chains.wanchain]: {
portal: "0xe85b0d89cbc670733d6a40a9450d8788be13da47"
},
[Chains.ethereum]: {
portal: "0xfceaaaeb8d564a9d0e71ef36f027b9d162bc334e"
},
[Chains.avalanche]: {
portal: "0x74e121a34a66d54c33f3291f2cdf26b1cd037c3a"
},
[Chains.moonbeam]: {
portal: "0x6372aec6263aa93eacedc994d38aa9117b6b95b5"
},
[Chains.moonriver]: {
portal: "0xde1ae3c465354f01189150f3836c7c15a1d6671d"
},
[Chains.functionX]: {
portal: "0xdf935552fac687123c642f589296762b632a9aaf"
},
[Chains.telos]: {
portal: "0x201e5de97dfc46aace142b2009332c524c9d8d82"
},
[Chains.polygon]: {
portal: "0x2216072a246a84f7b9ce0f1415dd239c9bf201ab"
},
[Chains.okexchain]: {
portal: "0xf7ba155556e2cd4dfe3fe26e506a14d2f4b97613"
},
[Chains.optimism]: {
portal: "0xc6ae1db6c66d909f7bfeeeb24f9adb8620bf9dbf"
},
[Chains.xdc]: {
portal: "0xf7ba155556e2cd4dfe3fe26e506a14d2f4b97613"
},
[Chains.bsc]: {
portal: "0xc3711bdbe7e3063bf6c22e7fed42f782ac82baee"
},
[Chains.astar]: {
portal: "0x592de30bebff484b5a43a6e8e3ec1a814902e0b6"
},
[Chains.metis]: {
portal: "0xc6ae1db6c66d909f7bfeeeb24f9adb8620bf9dbf"
},
[Chains.horizen]: {
portal: "0x97e0883493e8bb7a119a1e36e53ee9e7a2d3ca7b"
},
[Chains.fantom]: {
portal: "0xccffe9d337f3c1b16bd271d109e691246fd69ee3"
},
[Chains.clover]: {
portal: "0xf7ba155556e2cd4dfe3fe26e506a14d2f4b97613"
},
[Chains.gather]: {
portal: "0xc6ae1db6c66d909f7bfeeeb24f9adb8620bf9dbf"
},
[Chains.tron]: {
portal: "0xfe464ebd5bb5d95731f90aa7b9e39df920a61c97"
},
[Chains.vinuchain]: {
portal: "0x72ccf64ee5e2c7629ee4eee3e6ad6990289178ae"
},
};

const userLockPortalEventParams: ContractEventParams = {
target: "",
topic: "UserLockLogger(bytes32,uint256,address,uint256,uint256, bytes)",
abi: ["event UserLockLogger(bytes32 indexed smgID, uint indexed tokenPairID, address indexed tokenAccount, uint value, uint serviceFee, bytes userAccount)"],
logKeys: {
blockNumber: "blockNumber",
txHash: "transactionHash",
},
argKeys: {
to: "userAccount",
amount: "value",
token: "tokenAccount",
},
isDeposit: true,
};

const smgReleasePortalEventParams: ContractEventParams = {
target: "",
topic: "SmgReleaseLogger(bytes32,bytes32,uint256,uint256,address,address)",
abi: ["event SmgReleaseLogger(bytes32 indexed uniqueID, bytes32 indexed smgID, uint indexed tokenPairID, uint value, address tokenAccount, address userAccount)"],
logKeys: {
blockNumber: "blockNumber",
txHash: "transactionHash",
},
argKeys: {
to: "userAccount",
amount: "value",
token: "tokenAccount",
},
isDeposit: false,
};

const constructParams = (chain: Chains) => {
const { portal } = contractAddresses[chain];
const eventParams: ContractEventParams[] = [
{
...userLockPortalEventParams,
target: portal,
fixedEventData: {
to: portal,
},
},
{
...smgReleasePortalEventParams,
target: portal,
fixedEventData: {
from: portal,
},
},
];
return async (fromBlock: number, toBlock: number) =>
getTxDataFromEVMEventLogs("wanbridge", chain, fromBlock, toBlock, eventParams);
};

const adapter: BridgeAdapter = {
arbitrum: constructParams(Chains.arbitrum),
polygon: constructParams(Chains.polygon),
bsc: constructParams(Chains.bsc),
ethereum: constructParams(Chains.ethereum),
avalanche: constructParams(Chains.avalanche),
optimism: constructParams(Chains.optimism),
fantom: constructParams(Chains.fantom),
moonbeam: constructParams(Chains.moonbeam),
moonriver: constructParams(Chains.moonriver),
telos: constructParams(Chains.telos),
okexchain: constructParams(Chains.okexchain),
xdc: constructParams(Chains.xdc),
astar: constructParams(Chains.astar),
metis: constructParams(Chains.metis),
wan: constructParams(Chains.wanchain),

vinu: constructParams(Chains.vinuchain),
functionx: constructParams(Chains.functionX),
eon: constructParams(Chains.horizen),
clv: constructParams(Chains.clover),
gth: constructParams(Chains.gather),

// tron: constructParams(Chains.tron),
};

export default adapter;
34 changes: 34 additions & 0 deletions src/data/bridgeNetworkData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -583,4 +583,38 @@ export default [
"polygon zkevm": "polygon_zkevm",
},
},
{
id: 40,
displayName: "WanBridge",
bridgeDbName: "wanbridge",
iconLink: "icons:wanbridge",
largeTxThreshold: 10000,
url: "https://bridge.wanchain.org",
chains: [
"Ethereum",
"Polygon",
"Fantom",
"Avalanche",
"Arbitrum",
"Optimism",
"BSC",
"Moonbeam",
"Moonriver",
"FunctionX",
"Telos",
"Okexchain",
"Horizen",
"Metis",
"Astar",
"Vinuchain",
"Tron",
"Wanchain",
"Clover",
"Gather",
"XDC",
],
chainMapping: {
avalanche: "avax",
},
},
] as BridgeNetwork[];

0 comments on commit 73c70e8

Please sign in to comment.