diff --git a/coins/src/adapters/bridges/index.ts b/coins/src/adapters/bridges/index.ts index f73b500699..ee211edf26 100644 --- a/coins/src/adapters/bridges/index.ts +++ b/coins/src/adapters/bridges/index.ts @@ -40,6 +40,7 @@ import fuel from "./fuel"; import zircuit from "./zircuit"; import morph from "./morph"; import aptos from "./aptosFa"; +import sophon from './sophon'; export type Token = | { @@ -77,37 +78,38 @@ function normalizeBridgeResults(bridge: Bridge) { }; } export const bridges = [ - optimism, - // anyswap, - arbitrum, - avax, - // brc20, - //bsc, - fantom, - era, - gasTokens, - //harmony, - polygon, - // solana - //xdai - cosmos, - synapse, - base, - neon_evm, - arbitrum_nova, - mantle, - axelar, - linea, - manta, - astrzk, - zklink, - celer, - fraxtal, - symbiosis, - fuel, - zircuit, - morph, - aptos, + // optimism, + // // anyswap, + // arbitrum, + // avax, + // // brc20, + // //bsc, + // fantom, + // era, + // gasTokens, + // //harmony, + // polygon, + // // solana + // //xdai + // cosmos, + // synapse, + // base, + // neon_evm, + // arbitrum_nova, + // mantle, + // axelar, + // linea, + // manta, + // astrzk, + // zklink, + // celer, + // fraxtal, + // symbiosis, + // fuel, + // zircuit, + // morph, + // aptos, + sophon ].map(normalizeBridgeResults) as Bridge[]; import { batchGet, batchWrite } from "../../utils/shared/dynamodb"; diff --git a/coins/src/adapters/bridges/sophon.ts b/coins/src/adapters/bridges/sophon.ts new file mode 100644 index 0000000000..a8e1a94aa0 --- /dev/null +++ b/coins/src/adapters/bridges/sophon.ts @@ -0,0 +1,40 @@ +import fetch from "node-fetch"; +import { multiCall } from "@defillama/sdk/build/abi/abi2"; +import { Token } from "./index"; +import { nullAddress } from "../../utils/shared/constants"; + +const chain = "sophon"; + +export default async function (): Promise { + const { + data: { items }, + } = await fetch( + `https://api.covalenthq.com/v1/1/address/0xD7f9f54194C633F36CCD5F3da84ad4a1c38cB2cB/balances_v2/?&key=${process.env.COVALENT_KEY}`, + ).then((r) => r.json()); + + let l1Assets: Token[] = items.map((i: any) => ({ + to: `ethereum:${i.contract_address}`, + decimals: i.contract_decimals, + symbol: i.contract_ticker_symbol, + })); + + const l2Assets = await multiCall({ + calls: l1Assets.map(({ to }) => ({ + target: "0x954ba8223a6BFEC1Cc3867139243A02BA0Bc66e4", + params: to.substring(to.indexOf(":") + 1), + })), + abi: "function l2TokenAddress(address _l1Token) external view returns (address)", + chain, + permitFailure: true, + }); + + l2Assets.map((a: any, i: number) => { + if (a == nullAddress) { + l1Assets.splice(i, 1); + return; + } + l1Assets[i].from = `sophon:${a}`; + }); + + return l1Assets; +} diff --git a/coins/src/adapters/markets/balancer/balancer.ts b/coins/src/adapters/markets/balancer/balancer.ts index 12bbb132fa..ab2e59c6a2 100644 --- a/coins/src/adapters/markets/balancer/balancer.ts +++ b/coins/src/adapters/markets/balancer/balancer.ts @@ -11,9 +11,9 @@ import abi from "./abi.json"; import { getTokenInfo } from "../../utils/erc20"; import { Result } from "../../utils/sdkInterfaces"; import { DbTokenInfos } from "../../utils/dbInterfaces"; +import { nullAddress } from "../../../utils/shared/constants"; const vault: string = "0xBA12222222228d8Ba445958a75a0704d566BF2C8"; -const nullAddress: string = "0x0000000000000000000000000000000000000000"; const subgraphNames: { [chain: string]: string } = { ethereum: sdk.graph.modifyEndpoint("C4ayEZP2yTXRAB8vSaTrgN4m9anTe9Mdm2ViyiAuV9TV",), xdai: sdk.graph.modifyEndpoint("EJezH1Cp31QkKPaBDerhVPRWsKVZLrDfzjrLqpmv6cGg",), diff --git a/coins/src/adapters/markets/balancer/balancerV2.ts b/coins/src/adapters/markets/balancer/balancerV2.ts index a52f362e0f..eb8fead4e4 100644 --- a/coins/src/adapters/markets/balancer/balancerV2.ts +++ b/coins/src/adapters/markets/balancer/balancerV2.ts @@ -9,9 +9,9 @@ import { getApi } from "../../utils/sdk"; import { getPoolValues } from "../../utils"; import getWrites from "../../utils/getWrites"; import { getLogs } from "../../../utils/cache/getLogs"; +import { nullAddress } from "../../../utils/shared/constants"; const vault: string = "0xBA12222222228d8Ba445958a75a0704d566BF2C8"; -const nullAddress: string = "0x0000000000000000000000000000000000000000"; const gaugeFactories: { [chain: string]: string } = { ethereum: "0x4e7bbd911cf1efa442bc1b2e9ea01ffe785412ec", diff --git a/coins/src/adapters/markets/curve/curve2.ts b/coins/src/adapters/markets/curve/curve2.ts index 487f9786d1..ab5f94e8eb 100644 --- a/coins/src/adapters/markets/curve/curve2.ts +++ b/coins/src/adapters/markets/curve/curve2.ts @@ -10,8 +10,7 @@ import { ChainApi } from "@defillama/sdk"; import { getCache, setCache } from "../../../utils/cache"; import { PromisePool } from "@supercharge/promise-pool"; import * as sdk from '@defillama/sdk' - -const nullAddress = "0x0000000000000000000000000000000000000000" +import { nullAddress } from "../../../utils/shared/constants"; async function getPools( api: ChainApi, diff --git a/coins/src/adapters/markets/pancakeStable.ts b/coins/src/adapters/markets/pancakeStable.ts index f01ecd2504..3946a27c82 100644 --- a/coins/src/adapters/markets/pancakeStable.ts +++ b/coins/src/adapters/markets/pancakeStable.ts @@ -5,8 +5,7 @@ import { } from "../utils/database"; import { Write } from "../utils/dbInterfaces"; import { getApi } from "../utils/sdk"; - -const nullAddress = "0x0000000000000000000000000000000000000000"; +import { nullAddress } from '../../utils/shared/constants' const factories: { [chain: string]: { diff --git a/coins/src/adapters/markets/phux/phux.ts b/coins/src/adapters/markets/phux/phux.ts index a903445217..fbac656287 100644 --- a/coins/src/adapters/markets/phux/phux.ts +++ b/coins/src/adapters/markets/phux/phux.ts @@ -10,9 +10,9 @@ import abi from "./abi.json"; import { getTokenInfo } from "../../utils/erc20"; import { Result } from "../../utils/sdkInterfaces"; import { DbTokenInfos } from "../../utils/dbInterfaces"; +import { nullAddress } from "../../../utils/shared/constants"; const vault: string = "0x7F51AC3df6A034273FB09BB29e383FCF655e473c"; -const nullAddress: string = "0x0000000000000000000000000000000000000000"; type GqlResult = { id: string; diff --git a/coins/src/adapters/other/others2.ts b/coins/src/adapters/other/others2.ts index 33868ad801..ffa683f17d 100644 --- a/coins/src/adapters/other/others2.ts +++ b/coins/src/adapters/other/others2.ts @@ -2,6 +2,7 @@ import getWrites from "../utils/getWrites"; import { getTokenSupplies, getTokenAccountBalances, } from "../solana/utils"; import { getApi } from "../utils/sdk"; +import { nullAddress } from "../../utils/shared/constants"; async function solanaAVS(timestamp: number = 0) { @@ -29,7 +30,6 @@ async function wstBFC(timestamp: number = 0) { const chain = "bfc"; const api = await getApi(chain, timestamp); const pricesObject: any = {}; - const nullAddress = "0x0000000000000000000000000000000000000000"; const wstBFC = "0x386f2F5d9A97659C86f3cA9B8B11fc3F76eFDdaE"; const bal = await api.call({ abi: "erc20:balanceOf", target: '0xEff8378C6419b50C9D87f749f6852d96D4Cc5aE4', params: wstBFC, }); const supply = await api.call({ abi: "erc20:totalSupply", target: wstBFC }); diff --git a/coins/src/adapters/yield/pendle/pendle.ts b/coins/src/adapters/yield/pendle/pendle.ts index 5e8f30a654..71a50909f3 100644 --- a/coins/src/adapters/yield/pendle/pendle.ts +++ b/coins/src/adapters/yield/pendle/pendle.ts @@ -8,6 +8,7 @@ import { } from "../../utils/database"; import PromisePool from "@supercharge/promise-pool"; import { wrappedGasTokens } from "../../utils/gasTokens"; +import { nullAddress } from "../../../utils/shared/constants"; const customMapping: { [chain: string]: { [from: string]: string } } = { arbitrum: { @@ -73,7 +74,6 @@ const gasMapping: { [chain: string]: string[] } = { }; const blacklist = ["0x1d83fdf6f019d0a6b2babc3c6c208224952e42fc"]; -const nullAddress = "0x0000000000000000000000000000000000000000"; export default async function getTokenPrices( timestamp: number, diff --git a/defi/src/utils/shared/constants.ts b/defi/src/utils/shared/constants.ts index 515e71a4f3..57648db14a 100644 --- a/defi/src/utils/shared/constants.ts +++ b/defi/src/utils/shared/constants.ts @@ -5,3 +5,5 @@ export const searchWidth = DAY; export const chainsThatShouldNotBeLowerCased = ["solana", "bitcoin", "eclipse"]; export const bridgedTvlMixedCaseChains: string[] = ["solana", "tron", "sui", "aptos", "eclipse"]; + +export const nullAddress = "0x0000000000000000000000000000000000000000";