Skip to content

Commit

Permalink
Merge pull request #27 from DefiLlama/feature/chainport-adapter
Browse files Browse the repository at this point in the history
Feature/chainport adapter
  • Loading branch information
vrtnd authored Aug 4, 2023
2 parents 36657b7 + 505b544 commit 7b43ed1
Show file tree
Hide file tree
Showing 4 changed files with 202 additions and 57 deletions.
227 changes: 185 additions & 42 deletions src/adapters/chainport/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { BridgeAdapter, PartialContractEventParams } from "../../helpers/bridgeAdapter.type";
import { Chain } from "@defillama/sdk/build/general";
import { getTxDataFromEVMEventLogs } from "../../helpers/processTransactions";
import { constructTransferParams } from "../../helpers/eventParams";

/*
Appears that native tokens cannot be bridged.
Expand All @@ -13,15 +12,80 @@ this function called in any other contracts. It's only called by 'Gameverse', ig
*/

const contractAddresses = {
ethereum: "0x763A0CA93AF05adE98A52dc1E5B936b89bF8b89a",
polygon: "0xF9ac9365A23D837F97078DaD50638a12c9E256C8",
fantom: "0x241663B6Ae912f2A5dFFDCb7a3550Bf60c0A5df5",
avax: "0x241663B6Ae912f2A5dFFDCb7a3550Bf60c0A5df5",
bsc: "0x5C80AE9c3396CA4394F9D8E6786Ed9aa74489afE",
aurora: "0xFB19ADD1db30A140915Da55222Ab5f968b32B900"
ethereum: {
"main_chain": "0x763a0ca93af05ade98a52dc1e5b936b89bf8b89a",
"side_chain": "0xd02c8a355599fee7e4f1d1d71f7a01c0108e353c"
},
polygon: {
"main_chain": "0xc07cd7fcda887119bff8e1eed2256ad433bee125",
"side_chain": "0xf9ac9365a23d837f97078dad50638a12c9e256c8"
},
fantom: {
"main_chain": "0xc30da5144d1b9f47ff86345fee14fe2da94c7203",
"side_chain": "0x241663b6ae912f2a5dffdcb7a3550bf60c0a5df5"
},
avax: {
"main_chain": "0x927f5f422bafd00df2ae817945b6e8694ad2f852",
"side_chain": "0x241663b6ae912f2a5dffdcb7a3550bf60c0a5df5"
},
bsc: {
"main_chain": "0x2cd90158baae285010a5ed7c549c2e5b4c0715f4",
"side_chain": "0x5c80ae9c3396ca4394f9d8e6786ed9aa74489afe"
},
aurora: {
"main_chain": null,
"side_chain": "0xfb19add1db30a140915da55222ab5f968b32b900"
}
} as { [chain: string]: any };

const burnDepositParams: PartialContractEventParams = {

const depositParams: PartialContractEventParams = {
target: "",
topic: "TokensDeposited(address,address,uint256, uint256)",
abi: ["event TokensDeposited(address tokenAddress, address issuer, uint256 amount, uint256 networkId)"],
logKeys: {
blockNumber: "blockNumber",
txHash: "transactionHash",
},
argKeys: {
token: "tokenAddress",
from: "issuer",
to: "issuer",
amount: "amount"
},
txKeys: {
from: "from",
},
fixedEventData: {
to: "",
},
isDeposit: true,
};

const claimParams: PartialContractEventParams = {
target: "",
topic: "TokensDeposited(address,address, uint256)",
abi: ["event TokensClaimed(address tokenAddress, address issuer, uint256 amount)"],
logKeys: {
blockNumber: "blockNumber",
txHash: "transactionHash",
},
argKeys: {
token: "tokenAddress",
from: "issuer",
to: "issuer",
amount: "amount"
},
txKeys: {
from: "from",
},
fixedEventData: {
to: "",
},
isDeposit: false,
};

const burnParams: PartialContractEventParams = {
target: "",
topic: "TokensBurned(address,address,uint256)",
abi: ["event TokensBurned(address tokenAddress, address issuer, uint256 amount)"],
Expand All @@ -31,18 +95,20 @@ const burnDepositParams: PartialContractEventParams = {
},
argKeys: {
token: "tokenAddress",
amount: "amount",
from: "issuer",
to: "issuer",
amount: "amount"
},
txKeys: {
from: "from",
},
fixedEventData: {
to: "",
},
isDeposit: true,
isDeposit: false,
};

const transferDepositParams: PartialContractEventParams = {
const transferParams: PartialContractEventParams = {
target: "",
topic: "TokensTransferred(address,address,uint256,uint256)",
abi: ["event TokensTransferred(address bridgeTokenAddress, address issuer, uint256 amount, uint256 networkId)"],
Expand All @@ -52,7 +118,56 @@ const transferDepositParams: PartialContractEventParams = {
},
argKeys: {
token: "bridgeTokenAddress",
amount: "amount",
from: "issuer",
to: "issuer",
amount: "amount"
},
txKeys: {
from: "from",
},
fixedEventData: {
to: "",
},
isDeposit: false,
};

const nonEvmTransferParams: PartialContractEventParams = {
target: "",
topic: "NonEVMTokensTransferred(address,address,string,uint256,uint256)",
abi: ["event NonEVMTokensTransferred(address bridgeTokenAddress, address issuer, string receiverAddress, uint256 amount, uint256 networkId)"],
logKeys: {
blockNumber: "blockNumber",
txHash: "transactionHash",
},
argKeys: {
token: "tokenAddress",
from: "issuer",
to: "receiverAddress",
amount: "amount"
},
txKeys: {
from: "from",
},
fixedEventData: {
to: "",
},
isDeposit: false,
};


const nonEvmDepositParams: PartialContractEventParams = {
target: "",
topic: "NonEVMTokensDeposited(address,address,string,uint256,uint256)",
abi: ["event NonEVMTokensDeposited(address bridgeTokenAddress, address issuer, string receiverAddress, uint256 amount, uint256 networkId)"],
logKeys: {
blockNumber: "blockNumber",
txHash: "transactionHash",
},
argKeys: {
token: "tokenAddress",
from: "issuer",
to: "receiverAddress",
amount: "amount"
},
txKeys: {
from: "from",
Expand All @@ -63,7 +178,8 @@ const transferDepositParams: PartialContractEventParams = {
isDeposit: true,
};

const withdrawalParams: PartialContractEventParams = {

const tokensMintedParams: PartialContractEventParams = {
target: "",
topic: "TokensMinted(address,address,uint256)",
abi: ["event TokensMinted(address tokenAddress, address issuer, uint256 amount)"],
Expand All @@ -73,7 +189,9 @@ const withdrawalParams: PartialContractEventParams = {
},
argKeys: {
token: "tokenAddress",
amount: "amount",
from: "issuer",
to: "issuer",
amount: "amount"
},
inputDataExtraction: {
inputDataABI: ["address", "address", "uint256", "uint256"],
Expand All @@ -90,35 +208,60 @@ const withdrawalParams: PartialContractEventParams = {

const constructParams = (chain: string) => {
let eventParams = [] as any;
const chainAddress = contractAddresses[chain];
if (chain === "ethereum") {
const finalDepositParams = constructTransferParams(chainAddress, true);
const finalWithdrawalParams = constructTransferParams(chainAddress, false);
eventParams.push(finalDepositParams, finalWithdrawalParams);
} else {
const finalBurnDepositParams = {
...burnDepositParams,
target: chainAddress,
fixedEventData: {
to: chainAddress,
},
};
const finalTransferDepositParams = {
...transferDepositParams,
target: chainAddress,
fixedEventData: {
to: chainAddress,
},
};
const finalWithdrawalParams = {
...withdrawalParams,
target: chainAddress,
fixedEventData: {
from: chainAddress,
},
};
eventParams.push(finalBurnDepositParams, finalTransferDepositParams, finalWithdrawalParams);
const main_chain_address = contractAddresses[chain]["main_chain"];
const side_chain_address = contractAddresses[chain]["side_chain"];

const finalClaimParams = {
...claimParams,
target: main_chain_address,
fixedEventData: {
to: main_chain_address,
},
};
const finalDepositParams = {
...depositParams,
target: main_chain_address,
fixedEventData: {
to: main_chain_address,
},
};
const finalBurnParams = {
...burnParams,
target: side_chain_address,
fixedEventData: {
to: side_chain_address,
},
};
const finalTransferParams = {
...transferParams,
target: side_chain_address,
fixedEventData: {
to: side_chain_address,
},
};
const finalNonEvmTransferParams = {
...nonEvmTransferParams,
target: side_chain_address,
fixedEventData: {
to: side_chain_address,
},
}
const finalNonEvmDepositParams = {
...nonEvmDepositParams,
target: main_chain_address,
fixedEventData: {
to: main_chain_address,
},
}
const finalTokensMintedParams = {
...tokensMintedParams,
target: side_chain_address,
fixedEventData: {
from: side_chain_address,
},
};
eventParams.push(finalDepositParams, finalClaimParams, finalBurnParams, finalTransferParams, finalTokensMintedParams, finalNonEvmTransferParams, finalNonEvmDepositParams);

return async (fromBlock: number, toBlock: number) =>
getTxDataFromEVMEventLogs("chainport", chain as Chain, fromBlock, toBlock, eventParams);
};
Expand Down
3 changes: 2 additions & 1 deletion src/adapters/symbiosis/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { Chain } from "@defillama/sdk/build/general";
import { BridgeAdapter, PartialContractEventParams } from "../../helpers/bridgeAdapter.type";
import { getTxDataFromEVMEventLogs } from "../../helpers/processTransactions";
import { events } from "./events";
Expand Down Expand Up @@ -31,7 +32,7 @@ const constructParams = (chain: SupportedChains) => {
}

return async (fromBlock: number, toBlock: number) =>
getTxDataFromEVMEventLogs("symbiosis", chain, fromBlock, toBlock, eventParams);
getTxDataFromEVMEventLogs("symbiosis", chain as Chain, fromBlock, toBlock, eventParams);
};

const adapter: BridgeAdapter = {
Expand Down
24 changes: 12 additions & 12 deletions src/data/bridgeNetworkData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -108,18 +108,18 @@ export default [
// gnosis: "xdai",
// },
// },
// {
// id: 8,
// displayName: "ChainPort",
// bridgeDbName: "chainport",
// iconLink: "icons:chainport",
// largeTxThreshold: 10000,
// url: "",
// chains: ["Ethereum", "Polygon", "Fantom", "Avalanche", "Aurora", "BSC"],
// chainMapping: {
// avalanche: "avax",
// },
// },
{
id: 8,
displayName: "ChainPort",
bridgeDbName: "chainport",
iconLink: "icons:chainport",
largeTxThreshold: 10000,
url: "",
chains: ["Ethereum", "Polygon", "Fantom", "Avalanche", "Aurora", "BSC"],
chainMapping: {
avalanche: "avax",
},
},
{
id: 9,
displayName: "Portal by Wormhole",
Expand Down
5 changes: 3 additions & 2 deletions src/utils/adapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -492,9 +492,10 @@ export const runAdapterHistorical = async (
}
}
}
if (!from || !to) return;
if (
from.toLowerCase() === "0x0000000000000000000000000000000000000000" ||
to.toLowerCase() === "0x0000000000000000000000000000000000000000"
from?.toLowerCase() === "0x0000000000000000000000000000000000000000" ||
to?.toLowerCase() === "0x0000000000000000000000000000000000000000"
)
return;

Expand Down

0 comments on commit 7b43ed1

Please sign in to comment.