From 60171c5bddbed838032a3a255a6f2ee493f31a92 Mon Sep 17 00:00:00 2001 From: vrtnd Date: Fri, 4 Aug 2023 23:11:34 +0300 Subject: [PATCH] add base bridge --- package-lock.json | 14 ++++++------- package.json | 16 +++++++-------- src/adapters/base/index.ts | 38 +++++++++++++++++++++++++++++++++++ src/adapters/index.ts | 2 ++ src/data/bridgeNetworkData.ts | 10 +++++++++ 5 files changed, 65 insertions(+), 15 deletions(-) create mode 100644 src/adapters/base/index.ts diff --git a/package-lock.json b/package-lock.json index b3fee066..dfdfa44d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,7 +5,7 @@ "packages": { "": { "dependencies": { - "@defillama/sdk": "^4.0.32", + "@defillama/sdk": "^4.0.43", "async-retry": "^1.3.1", "axios": "^0.21.0", "axios-rate-limit": "^1.3.0", @@ -468,9 +468,9 @@ } }, "node_modules/@defillama/sdk": { - "version": "4.0.32", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.32.tgz", - "integrity": "sha512-lcscf+uoVEDngIZp+DfUvVK11GLQxNE1iM4P3cr7l4hpYi7ySdbxnRDNLvqc8WAhdGpYmrCaU8FwUN40n6mDbA==", + "version": "4.0.43", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.43.tgz", + "integrity": "sha512-SS311nPgkIOEbqWe3n2kT8n3UKyLQhQmJcEhlMhv6XnPhIBk4l7kLQXQmOYHpetAZmvUxOVnQwZbl75vh2EM5w==", "dependencies": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", @@ -9808,9 +9808,9 @@ } }, "@defillama/sdk": { - "version": "4.0.32", - "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.32.tgz", - "integrity": "sha512-lcscf+uoVEDngIZp+DfUvVK11GLQxNE1iM4P3cr7l4hpYi7ySdbxnRDNLvqc8WAhdGpYmrCaU8FwUN40n6mDbA==", + "version": "4.0.43", + "resolved": "https://registry.npmjs.org/@defillama/sdk/-/sdk-4.0.43.tgz", + "integrity": "sha512-SS311nPgkIOEbqWe3n2kT8n3UKyLQhQmJcEhlMhv6XnPhIBk4l7kLQXQmOYHpetAZmvUxOVnQwZbl75vh2EM5w==", "requires": { "@supercharge/promise-pool": "^2.1.0", "ethers": "^5.4.5", diff --git a/package.json b/package.json index f753eba5..5d683312 100644 --- a/package.json +++ b/package.json @@ -11,24 +11,24 @@ "@types/node": "^18.6.4", "@types/node-fetch": "^2.6.2", "babel-loader": "^8.2.5", + "eslint-config-prettier": "^8.3.0", + "prettier": "^2.5.1", "serverless": "^3.21.0", "serverless-offline": "^9.1.6", "serverless-prune-plugin": "^2.0.1", - "eslint-config-prettier": "^8.3.0", - "prettier": "^2.5.1", "ts-loader": "^9.3.1" }, "dependencies": { - "@defillama/sdk": "^4.0.32", - "node-fetch": "^2.6.7", - "postgres": "^3.2.4", - "bignumber.js": "^9.0.1", + "@defillama/sdk": "^4.0.43", "async-retry": "^1.3.1", "axios": "^0.21.0", "axios-rate-limit": "^1.3.0", + "bignumber.js": "^9.0.1", "dotenv": "^8.2.0", - "serverless-webpack": "^5.8.0", "graphql": "^16.0.0", - "graphql-request": "^4.0.0" + "graphql-request": "^4.0.0", + "node-fetch": "^2.6.7", + "postgres": "^3.2.4", + "serverless-webpack": "^5.8.0" } } diff --git a/src/adapters/base/index.ts b/src/adapters/base/index.ts new file mode 100644 index 00000000..53dab4a0 --- /dev/null +++ b/src/adapters/base/index.ts @@ -0,0 +1,38 @@ +import { BridgeAdapter, PartialContractEventParams } from "../../helpers/bridgeAdapter.type"; +import { getTxDataFromEVMEventLogs } from "../../helpers/processTransactions"; +import { constructTransferParams } from "../../helpers/eventParams"; + +const WETH = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"; + +const ethDepositParams: PartialContractEventParams = { + target: "0x49048044D57e1C92A77f79988d21Fa8fAF74E97e", + topic: "TransactionDeposited(address,address,uint256,bytes)", + abi: [ + "event TransactionDeposited(address indexed from,address indexed to, uint256 indexed version, bytes opaqueData)", + ], + logKeys: { + blockNumber: "blockNumber", + txHash: "transactionHash", + }, + txKeys: { + from: "from", + amount: "value", + }, + fixedEventData: { + token: WETH, + to: "0x49048044D57e1C92A77f79988d21Fa8fAF74E97e", + }, + isDeposit: true, +}; + +const constructParams = () => { + const eventParams = [ethDepositParams]; + return async (fromBlock: number, toBlock: number) => + getTxDataFromEVMEventLogs("base", "ethereum", fromBlock, toBlock, eventParams); +}; + +const adapter: BridgeAdapter = { + ethereum: constructParams(), +}; + +export default adapter; diff --git a/src/adapters/index.ts b/src/adapters/index.ts index 886f697c..ab9753be 100644 --- a/src/adapters/index.ts +++ b/src/adapters/index.ts @@ -29,6 +29,7 @@ import zksync from "./zksync"; import polygon_zkevm from "./polygon_zkevm"; import symbiosis from "./symbiosis"; import meson from "./meson"; +import base from "./base"; export default { polygon, @@ -60,6 +61,7 @@ export default { polygon_zkevm, symbiosis, meson, + base, } as { [bridge: string]: BridgeAdapter; }; diff --git a/src/data/bridgeNetworkData.ts b/src/data/bridgeNetworkData.ts index a9364355..1c02418b 100644 --- a/src/data/bridgeNetworkData.ts +++ b/src/data/bridgeNetworkData.ts @@ -442,4 +442,14 @@ export default [ avalanche: "avax", }, }, + { + id: 29, + displayName: "Base Bridge", + bridgeDbName: "base", + iconLink: "chain:base", + largeTxThreshold: 10000, + url: "", + chains: ["Ethereum", "Base"], + destinationChain: "Base", + }, ] as BridgeNetwork[];