Skip to content

Commit

Permalink
Merge pull request #275 from CrowdSwap/Crowdswap
Browse files Browse the repository at this point in the history
add a new adapter for Crowdswap
  • Loading branch information
vrtnd authored Sep 12, 2024
2 parents 22a80e8 + 7f0e737 commit fe57df4
Show file tree
Hide file tree
Showing 4 changed files with 112 additions and 2 deletions.
88 changes: 88 additions & 0 deletions src/adapters/crowdswap/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
import { Chain } from "@defillama/sdk/build/general";
import { BridgeAdapter, PartialContractEventParams } from "../../helpers/bridgeAdapter.type";
import { getTxDataFromEVMEventLogs } from "../../helpers/processTransactions";


const gatewayAddresses = {
ethereum: "0x22715dfF101D33B2a14a4834f7C527902Bc42899",
bsc: "0x587AaA2150AD416bAD6b9919FDfF2D78BE11383B",
polygon: "0x9092fCF5Ea1E22f2922eEa132D2931CDd795ab53",
optimism: "0x1B3aE33ff0241999854C05B0CdF821DE55A4404A",
arbitrum: "0x99a68649E927774680e9D3387BF8cCbF93B45230",
} as {
[chain: string]: string;
};


let routerAddresses = {} as {
[chain: string]: string[];
};

const activeChains = ["ethereum", "bsc", "polygon", "optimism", "arbitrum"];

for(const chain of activeChains){
if(!routerAddresses[chain]){
routerAddresses[chain] = ["0x549D287218E5fc9D07A91Fe2e1337D5c21B808B2","0x30462a4863a3db9233006a87320a8e07c4a71a36"]
}
}


const constructParams = (chain: string) => {
let eventParams = [] as PartialContractEventParams[];
const routers = routerAddresses[chain];

for (const router of Object.values(routers)) {
const deposit :PartialContractEventParams = {
target: router,
topic: "MessageSent(bytes32,uint256,uint256,uint256,address,address,uint64)",
abi: ["event MessageSent(bytes32 indexed messageId, uint256 sourceAmount, uint256 destinationAmount, uint256 destinationMinAmount, address sourceTokenAddress, address destinationTokenAddress, uint64 indexed destinationChainId)"],
isDeposit: true,
logKeys: {
blockNumber: "blockNumber",
txHash: "transactionHash",
},
argKeys: {
amount: "sourceAmount",
token: "sourceTokenAddress"
},
fixedEventData: {
to: gatewayAddresses[chain],
from: router,
},
};

const withdraw :PartialContractEventParams = {
target: router,
topic: "Sold(bytes32,address,uint256,uint256,address,uint256,uint256,address,uint256,uint256)",
abi: ["event Sold(bytes32 indexed messageId, address sourceTokenAddress, uint256 sourceAmount, uint256 usdValue, address crowdAddress, uint256 crowdAmount, uint256 crowdPrice, address tokenXAddress, uint256 tokenXAmount, uint256 tokenXPrice)"],
isDeposit: false, // event type
logKeys: {
blockNumber: "blockNumber",
txHash: "transactionHash",
},
argKeys: {
amount: "tokenXAmount",
token: "tokenXAddress",

},
fixedEventData: {
from: router,
to: gatewayAddresses[chain],
},
};

eventParams.push(deposit, withdraw);
}
return async (fromBlock: number, toBlock: number) =>
await getTxDataFromEVMEventLogs("crowdswap", chain as Chain, fromBlock, toBlock, eventParams);
};

const adapter: BridgeAdapter = {
polygon: constructParams("polygon"),
bsc: constructParams("bsc"),
ethereum: constructParams("ethereum"),
arbitrum: constructParams("arbitrum"),
optimism: constructParams("optimism"),
};

export default adapter;
4 changes: 3 additions & 1 deletion src/adapters/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ import bunnyfi from "./bunnyfi";
import minibridge from "./minibridge";
import cometbridge from "./cometbridge";
import fastbtc from "./rootstock-fastbtc-bridge"
import crowdswap from "./crowdswap"

export default {
polygon,
Expand Down Expand Up @@ -134,7 +135,8 @@ export default {
bunnyfi,
minibridge,
cometbridge,
fastbtc
fastbtc,
crowdswap,
} as {
[bridge: string]: BridgeAdapter;
};
15 changes: 15 additions & 0 deletions src/data/bridgeNetworkData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1470,4 +1470,19 @@ export default [
},
destinationChain: "Bitcoin",
},
{
id: 71,
displayName: "Crowdswap",
bridgeDbName: "crowdswap",
iconLink: "icons:crowdswap",
largeTxThreshold: 10000,
url: "https://scanner.crowdswap.org/",
chains: [
"Ethereum",
"Arbitrum",
"Optimism",
"BSC",
"Polygon"
]
},
] as BridgeNetwork[];
7 changes: 6 additions & 1 deletion src/utils/recordedBlocks.json
Original file line number Diff line number Diff line change
Expand Up @@ -72,5 +72,10 @@
"chainport:aurora": { "startBlock": 73145592, "endBlock": 77620017 },
"rootstock:rsk": { "startBlock": 3616337, "endBlock": 3616337 },
"tokenbrige:rsk": { "startBlock": 4089976, "endBlock": 6088951 },
"fastbtc:rsk": { "startBlock": 4089976, "endBlock": 6088951 }
"fastbtc:rsk": { "startBlock": 4089976, "endBlock": 6088951 },
"crowdswap:ethereum": { "startBlock": 20407899, "endBlock": 20720738 },
"crowdswap:polygon": { "startBlock": 56713222, "endBlock": 61657366 },
"crowdswap:bsc": { "startBlock": 40878700, "endBlock": 42133978 },
"crowdswap:arbitrum": { "startBlock": 237073033, "endBlock": 252086093 },
"crowdswap:optimism": { "startBlock": 123302167, "endBlock": 125190128 }
}

0 comments on commit fe57df4

Please sign in to comment.