diff --git a/packages/builder/.env.example b/packages/builder/.env.example index b45fb7b90b..1e4272a457 100644 --- a/packages/builder/.env.example +++ b/packages/builder/.env.example @@ -44,6 +44,8 @@ REACT_APP_SUBGRAPH_PGN_API="https://graph-gitcoin-mainnet.hirenodes.io/subgraphs REACT_APP_SUBGRAPH_PGN_TESTNET_API="https://graph-gitcoin-testnet.hirenodes.io/subgraphs/name/gitcoin/allo" REACT_APP_SUBGRAPH_POLYGON_API="https://api.thegraph.com/subgraphs/name/allo-protocol/grants-round-polygon" REACT_APP_SUBGRAPH_POLYGON_MUMBAI_API="https://api.thegraph.com/subgraphs/name/allo-protocol/grants-round-mumbai" +REACT_APP_SUBGRAPH_ZKSYNC_TESTNET_API="https://api.thegraph.com/subgraphs/name/gitcoinco/grants-round-zkync-era-testnet" +REACT_APP_SUBGRAPH_ZKSYNC_MAINNET_API="https://api.studio.thegraph.com/query/45391/grants-round-zkera/v0.0.2" # Variables below are optional for local development REACT_APP_DATADOG_APPLICATION_ID= diff --git a/packages/builder/.env.test b/packages/builder/.env.test index ee361ebd1c..9c00bdbcd8 100644 --- a/packages/builder/.env.test +++ b/packages/builder/.env.test @@ -13,6 +13,8 @@ REACT_APP_SUBGRAPH_PGN_API="https://graph-gitcoin-mainnet.hirenodes.io/subgraphs REACT_APP_SUBGRAPH_PGN_TESTNET_API="https://graph-gitcoin-testnet.hirenodes.io/subgraphs/name/gitcoin/allo" REACT_APP_SUBGRAPH_POLYGON_API="https://api.thegraph.com/subgraphs/name/allo-protocol/grants-round-polygon" REACT_APP_SUBGRAPH_POLYGON_MUMBAI_API="https://api.thegraph.com/subgraphs/name/allo-protocol/grants-round-mumbai" +REACT_APP_SUBGRAPH_ZKSYNC_TESTNET_API="https://api.thegraph.com/subgraphs/name/gitcoinco/grants-round-zkync-era-testnet" +REACT_APP_SUBGRAPH_ZKSYNC_MAINNET_API="https://api.studio.thegraph.com/query/45391/grants-round-zkera/v0.0.2" REACT_APP_GRANTS_STACK_SEARCH_API_BASE_URL="https://gitcoin-search-dev.fly.dev" REACT_APP_PINATA_GATEWAY="https://pinata-gateway.com" diff --git a/packages/builder/package.json b/packages/builder/package.json index 57695619f9..84b0c7108c 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -49,7 +49,7 @@ "dompurify": "^2.4.3", "ethers": "^5.7.2", "framer-motion": "^6", - "gitcoin-lit-js-sdk": "^1.2.2", + "gitcoin-lit-js-sdk": "^1.2.6", "history": "^5.3.0", "https-browserify": "^1.0.0", "jest": "^27.0", diff --git a/packages/builder/src/actions/roundApplication.ts b/packages/builder/src/actions/roundApplication.ts index 0d9bc68620..a36b37b926 100644 --- a/packages/builder/src/actions/roundApplication.ts +++ b/packages/builder/src/actions/roundApplication.ts @@ -1,11 +1,10 @@ import { datadogLogs } from "@datadog/browser-logs"; import { datadogRum } from "@datadog/browser-rum"; -import { ChainId } from "common"; +import { ChainId, isJestRunning } from "common"; import { ethers } from "ethers"; import { Dispatch } from "redux"; import { getConfig } from "common/src/config"; import RoundABI from "../contracts/abis/RoundImplementation.json"; -import { chains } from "../contracts/deployments"; import { global } from "../global"; import { RootState } from "../reducers"; import { Status } from "../reducers/roundApplication"; @@ -19,6 +18,8 @@ import { getProjectURIComponents, metadataToProject } from "../utils/utils"; import { fetchProjectApplications } from "./projects"; import { graphqlFetch } from "../utils/graphql"; +const LitJsSdk = isJestRunning() ? null : require("gitcoin-lit-js-sdk"); + // FIXME: rename to ROUND_APPLICATION_APPLYING export const ROUND_APPLICATION_LOADING = "ROUND_APPLICATION_LOADING"; interface RoundApplicationLoadingAction { @@ -132,6 +133,17 @@ const dispatchAndLogApplicationError = ( dispatch(applicationError(roundAddress, error, step)); }; +export function chainIdToChainName(chainId: number): string { + // eslint-disable-next-line no-restricted-syntax + for (const name in LitJsSdk.LIT_CHAINS) { + if (LitJsSdk.LIT_CHAINS[name].chainId === chainId) { + return name; + } + } + + throw new Error(`couldn't find LIT chain name for chainId ${chainId}`); +} + export const submitApplication = (roundAddress: string, formInputs: RoundApplicationAnswers) => async (dispatch: Dispatch, getState: () => RootState) => { @@ -211,7 +223,7 @@ export const submitApplication = ); return; } - const chainName = chains[chainID]; + const chainName = chainIdToChainName(chainID); dispatch({ type: ROUND_APPLICATION_LOADING, @@ -222,23 +234,13 @@ export const submitApplication = let application: RoundApplication; let deterministicApplication: string; - let chain: string = ""; - - if (chainName === "mainnet") { - chain = "ethereum"; - } else if (chainName === "pgn") { - chain = "publicGoodsNetwork"; - } else { - chain = chainName; - } - try { const builder = new RoundApplicationBuilder( true, project, roundApplicationMetadata, roundAddress, - chain + chainName ); application = await builder.build(roundAddress, formInputs); diff --git a/packages/builder/src/contracts/deployments.ts b/packages/builder/src/contracts/deployments.ts index 5eebc70e46..accded3e6a 100644 --- a/packages/builder/src/contracts/deployments.ts +++ b/packages/builder/src/contracts/deployments.ts @@ -4,6 +4,8 @@ export const chains = { 1: "mainnet", 10: "optimism", 250: "fantom", + 280: "zkSyncEraTestnet", + 324: "zkSyncEraMainnet", 424: "pgn", 4002: "fantomTestnet", 31337: "localhost", @@ -80,6 +82,12 @@ export const addresses: DeploymentAddressesMap = { polygonMumbai: { projectRegistry: "0x545B282A50EaeA01A619914d44105437036CbB36", }, + zkSyncEraMainnet: { + projectRegistry: "0xe6CCEe93c97E20644431647B306F48e278aFFdb9", + }, + zkSyncEraTestnet: { + projectRegistry: "0xb0F4882184EB6e3ed120c5181651D50719329788", + }, }; export const addressesByChainID = (chainId: ChainId): DeploymentAddresses => { diff --git a/packages/builder/src/utils/chains.ts b/packages/builder/src/utils/chains.ts index 8ac5d0418e..730a26da5f 100644 --- a/packages/builder/src/utils/chains.ts +++ b/packages/builder/src/utils/chains.ts @@ -6,6 +6,8 @@ import { publicProvider } from "wagmi/providers/public"; import { pgn, pgnTestnet, + zkSyncEraMainnet, + zkSyncEraTestnet, devChain1, devChain2, avalanche, @@ -34,6 +36,8 @@ const availableChains: { [key: string]: Chain } = { arbitrumGoerli, polygonMumbai, avalancheFuji, + zkSyncEraMainnet, + zkSyncEraTestnet, }; const stagingChains = [ @@ -51,6 +55,8 @@ const stagingChains = [ polygonMumbai, avalanche, avalancheFuji, + zkSyncEraMainnet, + zkSyncEraTestnet, ]; const productionChains = [ @@ -61,6 +67,7 @@ const productionChains = [ arbitrum, avalanche, customPolygon, + zkSyncEraMainnet, ]; export function getEnabledChainsAndProviders() { diff --git a/packages/builder/src/utils/wallet.ts b/packages/builder/src/utils/wallet.ts index 1b57f959fc..d4a38c6ed7 100644 --- a/packages/builder/src/utils/wallet.ts +++ b/packages/builder/src/utils/wallet.ts @@ -5,6 +5,7 @@ import { ethers } from "ethers"; import PGNIcon from "common/src/icons/PublicGoodsNetwork.svg"; import AVAXIcon from "common/src/icons/AVAX.svg"; import POLIcon from "common/src/icons/pol-logo.svg"; +import ZkSyncIcon from "common/src/icons/zksync-logo.svg"; import FantomFTMLogo from "common/src/assets/fantom-ftm-logo.png"; import { EthDiamondGlyph, @@ -44,6 +45,8 @@ export const networkPrettyNames: { [key in ChainName]: string } = { fuji: "Fuji (Avalanche Testnet)", polygon: "Polygon PoS", polygonMumbai: "Polygon Mumbai", + zkSyncEraMainnet: "zkSync Era Mainnet", + zkSyncEraTestnet: "zkSync Era Testnet", }; export const networkIcon: { [key in ChainName]: string } = { @@ -62,6 +65,8 @@ export const networkIcon: { [key in ChainName]: string } = { fuji: AVAXIcon, polygon: POLIcon, polygonMumbai: POLIcon, + zkSyncEraMainnet: ZkSyncIcon, + zkSyncEraTestnet: ZkSyncIcon, }; export const payoutIcon: { [key in ChainName]: string } = { @@ -80,6 +85,8 @@ export const payoutIcon: { [key in ChainName]: string } = { polygonMumbai: POLIcon, avalanche: AVAXIcon, fuji: AVAXIcon, + zkSyncEraMainnet: ZkSyncIcon, + zkSyncEraTestnet: ZkSyncIcon, }; export function getNetworkIcon(chainId: ChainId): string { diff --git a/packages/common/.env.test b/packages/common/.env.test index 34b1f34d79..d6042ba854 100644 --- a/packages/common/.env.test +++ b/packages/common/.env.test @@ -13,4 +13,6 @@ REACT_APP_SUBGRAPH_PGN_API="https://graph-gitcoin-mainnet.hirenodes.io/subgraphs REACT_APP_SUBGRAPH_PGN_TESTNET_API="https://graph-gitcoin-testnet.hirenodes.io/subgraphs/name/gitcoin/allo" REACT_APP_SUBGRAPH_POLYGON_API="https://api.thegraph.com/subgraphs/name/allo-protocol/grants-round-polygon" REACT_APP_SUBGRAPH_POLYGON_MUMBAI_API="https://api.thegraph.com/subgraphs/name/allo-protocol/grants-round-mumbai" +REACT_APP_SUBGRAPH_ZKSYNC_TESTNET_API="https://api.thegraph.com/subgraphs/name/gitcoinco/grants-round-zkync-era-testnet" +REACT_APP_SUBGRAPH_ZKSYNC_MAINNET_API="https://api.studio.thegraph.com/query/45391/grants-round-zkera/v0.0.2" REACT_APP_GRANTS_STACK_SEARCH_API_BASE_URL="https://gitcoin-search-dev.fly.dev" \ No newline at end of file diff --git a/packages/common/src/chain-ids.ts b/packages/common/src/chain-ids.ts index 2222d3ac58..955ca651c6 100644 --- a/packages/common/src/chain-ids.ts +++ b/packages/common/src/chain-ids.ts @@ -3,6 +3,8 @@ export enum ChainId { OPTIMISM_MAINNET_CHAIN_ID = 10, FANTOM_MAINNET_CHAIN_ID = 250, FANTOM_TESTNET_CHAIN_ID = 4002, + ZKSYNC_ERA_TESTNET_CHAIN_ID = 280, + ZKSYNC_ERA_MAINNET_CHAIN_ID = 324, PGN = 424, PGN_TESTNET = 58008, ARBITRUM = 42161, diff --git a/packages/common/src/chains.ts b/packages/common/src/chains.ts index cf61d265dd..a168b87932 100644 --- a/packages/common/src/chains.ts +++ b/packages/common/src/chains.ts @@ -1,10 +1,13 @@ import { Chain } from "@rainbow-me/rainbowkit"; import PublicGoodsNetworkIcon from "./icons/PublicGoodsNetwork.svg"; +import zkSyncIcon from "./icons/zksync-logo.svg"; import { avalanche as avalancheOriginal, avalancheFuji as avalancheFujiOriginal, fantom as fantomOriginal, fantomTestnet as fantomTestnetOriginal, + zkSyncTestnet as zkSyncTestnetOriginal, + zkSync as zkSyncOriginal, } from "wagmi/chains"; import FantomFTMLogo from "./assets/fantom-ftm-logo.png"; import { ChainId } from "./chain-ids"; @@ -64,6 +67,32 @@ export const avalanche: Chain = { }, }; +export const zkSyncEraTestnet: Chain = { + ...zkSyncTestnetOriginal, + iconUrl: zkSyncIcon, + rpcUrls: { + default: { + http: ["https://testnet.era.zksync.dev"], + }, + public: { + http: ["https://testnet.era.zksync.dev"], + }, + }, +}; + +export const zkSyncEraMainnet: Chain = { + ...zkSyncOriginal, + iconUrl: zkSyncIcon, + rpcUrls: { + default: { + http: ["https://mainnet.era.zksync.io"], + }, + public: { + http: ["https://mainnet.era.zksync.io"], + }, + }, +}; + export const pgnTestnet: Chain = { id: 58008, name: "PGN Testnet", diff --git a/packages/common/src/config.ts b/packages/common/src/config.ts index 9e46af4448..e3a57efe3d 100644 --- a/packages/common/src/config.ts +++ b/packages/common/src/config.ts @@ -100,6 +100,12 @@ export function getConfig(): Config { [ChainId.POLYGON_MUMBAI]: z .string() .parse(process.env.REACT_APP_SUBGRAPH_POLYGON_MUMBAI_API), + [ChainId.ZKSYNC_ERA_TESTNET_CHAIN_ID]: z + .string() + .parse(process.env.REACT_APP_SUBGRAPH_ZKSYNC_TESTNET_API), + [ChainId.ZKSYNC_ERA_MAINNET_CHAIN_ID]: z + .string() + .parse(process.env.REACT_APP_SUBGRAPH_ZKSYNC_MAINNET_API), }, }, pinata: { diff --git a/packages/common/src/icons/zksync-logo.svg b/packages/common/src/icons/zksync-logo.svg new file mode 100644 index 0000000000..99d01a05c4 --- /dev/null +++ b/packages/common/src/icons/zksync-logo.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/packages/common/src/index.ts b/packages/common/src/index.ts index df4b61d979..70f516fedc 100644 --- a/packages/common/src/index.ts +++ b/packages/common/src/index.ts @@ -117,6 +117,10 @@ export const graphQlEndpoints: Record = { [ChainId.AVALANCHE]: process.env.REACT_APP_SUBGRAPH_AVALANCHE_API!, [ChainId.POLYGON]: process.env.REACT_APP_SUBGRAPH_POLYGON_API!, [ChainId.POLYGON_MUMBAI]: process.env.REACT_APP_SUBGRAPH_POLYGON_MUMBAI_API!, + [ChainId.ZKSYNC_ERA_TESTNET_CHAIN_ID]: + process.env.REACT_APP_SUBGRAPH_ZKSYNC_TESTNET_API!, + [ChainId.ZKSYNC_ERA_MAINNET_CHAIN_ID]: + process.env.REACT_APP_SUBGRAPH_ZKSYNC_MAINNET_API!, }; /** @@ -323,6 +327,9 @@ export const RedstoneTokenIds = { MATIC: "MATIC", AVAX: "AVAX", CVP: "CVP", + USDT: "USDT", + LUSD: "LUSD", + MUTE: "MUTE", } as const; export const useTokenPrice = (tokenId: string | undefined) => { diff --git a/packages/grant-explorer/.env.example b/packages/grant-explorer/.env.example index 20200bd073..740f1ac899 100644 --- a/packages/grant-explorer/.env.example +++ b/packages/grant-explorer/.env.example @@ -41,6 +41,8 @@ REACT_APP_SUBGRAPH_PGN_API="https://graph-gitcoin-mainnet.hirenodes.io/subgraphs REACT_APP_SUBGRAPH_PGN_TESTNET_API="https://graph-gitcoin-testnet.hirenodes.io/subgraphs/name/gitcoin/allo" REACT_APP_SUBGRAPH_POLYGON_API="https://api.thegraph.com/subgraphs/name/allo-protocol/grants-round-polygon" REACT_APP_SUBGRAPH_POLYGON_MUMBAI_API="https://api.thegraph.com/subgraphs/name/allo-protocol/grants-round-mumbai" +REACT_APP_SUBGRAPH_ZKSYNC_TESTNET_API="https://api.thegraph.com/subgraphs/name/gitcoinco/grants-round-zkync-era-testnet" +REACT_APP_SUBGRAPH_ZKSYNC_MAINNET_API="https://api.thegraph.com/subgraphs/name/gitcoinco/grants-round-zkync-era-mainnet" # Variables below are optional for local development REACT_APP_DATADOG_APPLICATION_ID= diff --git a/packages/grant-explorer/.env.test b/packages/grant-explorer/.env.test index 7688312592..042c28dbe6 100644 --- a/packages/grant-explorer/.env.test +++ b/packages/grant-explorer/.env.test @@ -13,5 +13,7 @@ REACT_APP_SUBGRAPH_PGN_API="https://graph-gitcoin-mainnet.hirenodes.io/subgraphs REACT_APP_SUBGRAPH_PGN_TESTNET_API="https://graph-gitcoin-testnet.hirenodes.io/subgraphs/name/gitcoin/allo" REACT_APP_SUBGRAPH_POLYGON_API="https://api.thegraph.com/subgraphs/name/allo-protocol/grants-round-polygon" REACT_APP_SUBGRAPH_POLYGON_MUMBAI_API="https://api.thegraph.com/subgraphs/name/allo-protocol/grants-round-mumbai" +REACT_APP_SUBGRAPH_ZKSYNC_TESTNET_API="https://api.thegraph.com/subgraphs/name/gitcoinco/grants-round-zkync-era-testnet" +REACT_APP_SUBGRAPH_ZKSYNC_MAINNET_API="https://api.studio.thegraph.com/query/45391/grants-round-zkera/v0.0.2" REACT_APP_GRANTS_STACK_SEARCH_API_BASE_URL="https://gitcoin-search-dev.fly.dev" REACT_APP_ENV="test" diff --git a/packages/grant-explorer/public/logos/lusd-logo.svg b/packages/grant-explorer/public/logos/lusd-logo.svg new file mode 100644 index 0000000000..d9b5ee8482 --- /dev/null +++ b/packages/grant-explorer/public/logos/lusd-logo.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/packages/grant-explorer/public/logos/mute-logo.svg b/packages/grant-explorer/public/logos/mute-logo.svg new file mode 100644 index 0000000000..573b50b9ec --- /dev/null +++ b/packages/grant-explorer/public/logos/mute-logo.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/packages/grant-explorer/public/logos/usdt-logo.svg b/packages/grant-explorer/public/logos/usdt-logo.svg new file mode 100644 index 0000000000..161ecd051e --- /dev/null +++ b/packages/grant-explorer/public/logos/usdt-logo.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/grant-explorer/public/logos/zksync-logo.svg b/packages/grant-explorer/public/logos/zksync-logo.svg new file mode 100644 index 0000000000..99d01a05c4 --- /dev/null +++ b/packages/grant-explorer/public/logos/zksync-logo.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/packages/grant-explorer/src/app/chainConfig.ts b/packages/grant-explorer/src/app/chainConfig.ts index e2b14600d8..493c826ff1 100644 --- a/packages/grant-explorer/src/app/chainConfig.ts +++ b/packages/grant-explorer/src/app/chainConfig.ts @@ -10,7 +10,12 @@ import { polygonMumbai, } from "wagmi/chains"; import { arbitrum, arbitrumGoerli } from "viem/chains"; -import { pgnTestnet, pgn } from "common/src/chains"; +import { + pgnTestnet, + pgn, + zkSyncEraMainnet, + zkSyncEraTestnet, +} from "common/src/chains"; import { ChainId } from "common/src/chain-ids"; const ensureValidChainId = (chain: Chain) => { @@ -27,6 +32,7 @@ const TESTNET_CHAINS = [ arbitrumGoerli, avalancheFuji, polygonMumbai, + zkSyncEraTestnet, ].map(ensureValidChainId); const MAINNET_CHAINS = [ @@ -36,6 +42,7 @@ const MAINNET_CHAINS = [ arbitrum, avalanche, polygon, + zkSyncEraMainnet, { ...fantom, iconUrl: "/logos/fantom-logo.svg" }, ].map(ensureValidChainId); diff --git a/packages/grant-explorer/src/features/api/contracts.ts b/packages/grant-explorer/src/features/api/contracts.ts index 6380c0d540..d5bfa42ff4 100644 --- a/packages/grant-explorer/src/features/api/contracts.ts +++ b/packages/grant-explorer/src/features/api/contracts.ts @@ -20,4 +20,8 @@ export const MRC_CONTRACTS: Record = { [ChainId.AVALANCHE]: "0xe04d9e9CcDf65EB1Db51E56C04beE4c8582edB73", [ChainId.POLYGON]: "0xe04d9e9CcDf65EB1Db51E56C04beE4c8582edB73", [ChainId.POLYGON_MUMBAI]: "0x8e1bD5Da87C14dd8e08F7ecc2aBf9D1d558ea174", + [ChainId.ZKSYNC_ERA_TESTNET_CHAIN_ID]: + "0x7468C30eC48066cea6666D12F10230d118792eD5", + [ChainId.ZKSYNC_ERA_MAINNET_CHAIN_ID]: + "0x88e91283d97A482A9e0851dE335d58D97dCfF7b0", }; diff --git a/packages/grant-explorer/src/features/api/utils.ts b/packages/grant-explorer/src/features/api/utils.ts index 057da0d948..53ffd39088 100644 --- a/packages/grant-explorer/src/features/api/utils.ts +++ b/packages/grant-explorer/src/features/api/utils.ts @@ -99,6 +99,16 @@ export const CHAINS: Record< name: "Polygon Mumbai", logo: "./logos/pol-logo.svg", }, + [ChainId.ZKSYNC_ERA_TESTNET_CHAIN_ID]: { + id: ChainId.ZKSYNC_ERA_TESTNET_CHAIN_ID, + name: "zkSync Era Testnet", + logo: "./logos/zksync-logo.svg", + }, + [ChainId.ZKSYNC_ERA_MAINNET_CHAIN_ID]: { + id: ChainId.ZKSYNC_ERA_MAINNET_CHAIN_ID, + name: "zkSync Era", + logo: "./logos/zksync-logo.svg", + }, }; export const TokenNamesAndLogos = { @@ -113,6 +123,10 @@ export const TokenNamesAndLogos = { ARB: "./logos/arb-logo.svg", AVAX: "./logos/avax-logo.svg", MATIC: "./logos/pol-logo.svg", + TEST: "./logos/dai-logo.svg", + USDT: "./logos/usdt-logo.svg", + LUSD: "./logos/lusd-logo.svg", + MUTE: "./logos/mute-logo.svg", } as const; export const MAINNET_TOKENS: VotingToken[] = [ @@ -228,6 +242,92 @@ const FANTOM_TESTNET_TOKENS: VotingToken[] = [ }, ]; +const ZKSYNC_ERA_TESTNET_TOKENS: VotingToken[] = [ + { + name: "ETH", + chainId: ChainId.ZKSYNC_ERA_TESTNET_CHAIN_ID, + address: zeroAddress, + decimal: 18, + logo: TokenNamesAndLogos["ETH"], + redstoneTokenId: RedstoneTokenIds["ETH"], + defaultForVoting: true, + canVote: true, + }, + { + name: "TEST", + chainId: ChainId.ZKSYNC_ERA_TESTNET_CHAIN_ID, + address: "0x8fd03Cd97Da068CC242Ab7551Dc4100DD405E8c7", + decimal: 18, + logo: TokenNamesAndLogos["DAI"], + redstoneTokenId: RedstoneTokenIds["DAI"], + defaultForVoting: false, + canVote: true, + }, +]; + +const ZKSYNC_ERA_MAINNET_TOKENS: VotingToken[] = [ + { + name: "ETH", + chainId: ChainId.ZKSYNC_ERA_MAINNET_CHAIN_ID, + address: zeroAddress, + decimal: 18, + logo: TokenNamesAndLogos["ETH"], + redstoneTokenId: RedstoneTokenIds["ETH"], + defaultForVoting: true, + canVote: true, + }, + { + name: "DAI", + chainId: ChainId.ZKSYNC_ERA_MAINNET_CHAIN_ID, + address: "0x4B9eb6c0b6ea15176BBF62841C6B2A8a398cb656", + decimal: 18, + logo: TokenNamesAndLogos["DAI"], + redstoneTokenId: RedstoneTokenIds["DAI"], + defaultForVoting: false, + canVote: true, + }, + { + name: "USDC", + chainId: ChainId.ZKSYNC_ERA_MAINNET_CHAIN_ID, + address: "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4", + decimal: 6, + logo: TokenNamesAndLogos["USDC"], + redstoneTokenId: RedstoneTokenIds["USDC"], + defaultForVoting: false, + canVote: true, + }, + { + name: "USDT", + chainId: ChainId.ZKSYNC_ERA_MAINNET_CHAIN_ID, + address: "0x493257fD37EDB34451f62EDf8D2a0C418852bA4C", + decimal: 6, + logo: TokenNamesAndLogos["USDT"], + redstoneTokenId: RedstoneTokenIds["USDT"], + defaultForVoting: false, + canVote: true, + }, + { + name: "LUSD", + chainId: ChainId.ZKSYNC_ERA_MAINNET_CHAIN_ID, + address: "0x503234F203fC7Eb888EEC8513210612a43Cf6115", + decimal: 18, + logo: TokenNamesAndLogos["LUSD"], + redstoneTokenId: RedstoneTokenIds["LUSD"], + defaultForVoting: false, + canVote: true, + }, + { + name: "MUTE", + chainId: ChainId.ZKSYNC_ERA_MAINNET_CHAIN_ID, + address: "0x0e97C7a0F8B2C9885C8ac9fC6136e829CbC21d42", + decimal: 18, + logo: TokenNamesAndLogos["MUTE"], + redstoneTokenId: RedstoneTokenIds["MUTE"], + defaultForVoting: false, + canVote: true, + }, +]; + const PGN_TESTNET_TOKENS: VotingToken[] = [ { name: "TEST", @@ -430,6 +530,8 @@ export const votingTokens = [ ...FUJI_TOKENS, ...POLYGON_TOKENS, ...POLYGON_MUMBAI_TOKENS, + ...ZKSYNC_ERA_TESTNET_TOKENS, + ...ZKSYNC_ERA_MAINNET_TOKENS, ]; type VotingTokensMap = Record; @@ -450,6 +552,8 @@ export const votingTokensMap: VotingTokensMap = { [ChainId.FUJI]: FUJI_TOKENS, [ChainId.POLYGON]: POLYGON_TOKENS, [ChainId.POLYGON_MUMBAI]: POLYGON_MUMBAI_TOKENS, + [ChainId.ZKSYNC_ERA_TESTNET_CHAIN_ID]: ZKSYNC_ERA_TESTNET_TOKENS, + [ChainId.ZKSYNC_ERA_MAINNET_CHAIN_ID]: ZKSYNC_ERA_MAINNET_TOKENS, }; export const getVotingTokenOptions = (chainId: ChainId): VotingToken[] => @@ -480,6 +584,9 @@ export const txExplorerLinks: Record = { [ChainId.POLYGON_MUMBAI]: "https://mumbai.polygonscan.com/tx/", [ChainId.FUJI]: "https://snowtrace.io/tx/", [ChainId.AVALANCHE]: "https://testnet.snowtrace.io/txt/", + [ChainId.ZKSYNC_ERA_TESTNET_CHAIN_ID]: + "https://goerli.explorer.zksync.io/tx/", + [ChainId.ZKSYNC_ERA_MAINNET_CHAIN_ID]: "https://explorer.zksync.io/tx/", }; /** @@ -636,6 +743,7 @@ export function getChainIds(): number[] { Number(ChainId.ARBITRUM), Number(ChainId.AVALANCHE), Number(ChainId.POLYGON), + Number(ChainId.ZKSYNC_ERA_MAINNET_CHAIN_ID), ]; } else { return Object.values(ChainId) diff --git a/packages/round-manager/.env.example b/packages/round-manager/.env.example index b2380c572a..e29de8b492 100644 --- a/packages/round-manager/.env.example +++ b/packages/round-manager/.env.example @@ -49,6 +49,8 @@ REACT_APP_SUBGRAPH_PGN_API="https://graph-gitcoin-mainnet.hirenodes.io/subgraphs REACT_APP_SUBGRAPH_PGN_TESTNET_API="https://graph-gitcoin-testnet.hirenodes.io/subgraphs/name/gitcoin/allo" REACT_APP_SUBGRAPH_POLYGON_API="https://api.thegraph.com/subgraphs/name/allo-protocol/grants-round-polygon" REACT_APP_SUBGRAPH_POLYGON_MUMBAI_API="https://api.thegraph.com/subgraphs/name/allo-protocol/grants-round-mumbai" +REACT_APP_SUBGRAPH_ZKSYNC_TESTNET_API="https://api.thegraph.com/subgraphs/name/gitcoinco/grants-round-zkync-era-testnet" +REACT_APP_SUBGRAPH_ZKSYNC_MAINNET_API="https://api.studio.thegraph.com/query/45391/grants-round-zkera/v0.0.2" # Variables below are optional for local development REACT_APP_DATADOG_APPLICATION_ID= diff --git a/packages/round-manager/.env.test b/packages/round-manager/.env.test index 34b1f34d79..d6042ba854 100644 --- a/packages/round-manager/.env.test +++ b/packages/round-manager/.env.test @@ -13,4 +13,6 @@ REACT_APP_SUBGRAPH_PGN_API="https://graph-gitcoin-mainnet.hirenodes.io/subgraphs REACT_APP_SUBGRAPH_PGN_TESTNET_API="https://graph-gitcoin-testnet.hirenodes.io/subgraphs/name/gitcoin/allo" REACT_APP_SUBGRAPH_POLYGON_API="https://api.thegraph.com/subgraphs/name/allo-protocol/grants-round-polygon" REACT_APP_SUBGRAPH_POLYGON_MUMBAI_API="https://api.thegraph.com/subgraphs/name/allo-protocol/grants-round-mumbai" +REACT_APP_SUBGRAPH_ZKSYNC_TESTNET_API="https://api.thegraph.com/subgraphs/name/gitcoinco/grants-round-zkync-era-testnet" +REACT_APP_SUBGRAPH_ZKSYNC_MAINNET_API="https://api.studio.thegraph.com/query/45391/grants-round-zkera/v0.0.2" REACT_APP_GRANTS_STACK_SEARCH_API_BASE_URL="https://gitcoin-search-dev.fly.dev" \ No newline at end of file diff --git a/packages/round-manager/package.json b/packages/round-manager/package.json index 405e08f5da..9fdc2963c2 100644 --- a/packages/round-manager/package.json +++ b/packages/round-manager/package.json @@ -64,7 +64,7 @@ "html-react-parser": "^3.0.7", "https-browserify": "^1.0.0", "jest-fetch-mock": "^3.0.3", - "lit-js-sdk-old-w-pgn": "^1.1.251", + "lit-js-sdk-old-w-pgn": "^1.1.254", "lodash": "^4.17.21", "moment": "^2.29.3", "os-browserify": "^0.3.0", diff --git a/packages/round-manager/public/logos/lusd-logo.svg b/packages/round-manager/public/logos/lusd-logo.svg new file mode 100644 index 0000000000..d9b5ee8482 --- /dev/null +++ b/packages/round-manager/public/logos/lusd-logo.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/packages/round-manager/public/logos/mute-logo.svg b/packages/round-manager/public/logos/mute-logo.svg new file mode 100644 index 0000000000..573b50b9ec --- /dev/null +++ b/packages/round-manager/public/logos/mute-logo.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/packages/round-manager/public/logos/usdt-logo.svg b/packages/round-manager/public/logos/usdt-logo.svg new file mode 100644 index 0000000000..161ecd051e --- /dev/null +++ b/packages/round-manager/public/logos/usdt-logo.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/round-manager/public/logos/zksync-logo.svg b/packages/round-manager/public/logos/zksync-logo.svg new file mode 100644 index 0000000000..5a4cffb213 --- /dev/null +++ b/packages/round-manager/public/logos/zksync-logo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/round-manager/src/app/wagmi.ts b/packages/round-manager/src/app/wagmi.ts index e12e711a80..d5e66d56d5 100644 --- a/packages/round-manager/src/app/wagmi.ts +++ b/packages/round-manager/src/app/wagmi.ts @@ -22,7 +22,12 @@ import { polygonMumbai, } from "wagmi/chains"; -import { pgn, pgnTestnet } from "common/src/chains"; +import { + pgn, + pgnTestnet, + zkSyncEraMainnet, + zkSyncEraTestnet, +} from "common/src/chains"; import { publicProvider } from "wagmi/providers/public"; import { infuraProvider } from "wagmi/providers/infura"; import { alchemyProvider } from "wagmi/providers/alchemy"; @@ -30,6 +35,7 @@ import { alchemyProvider } from "wagmi/providers/alchemy"; const testnetChains = () => { return [ { ...fantomTestnet, iconUrl: "/logos/fantom-logo.svg" }, + zkSyncEraTestnet, pgnTestnet, arbitrumGoerli, polygonMumbai, @@ -45,6 +51,7 @@ const mainnetChains = () => { arbitrum, avalanche, polygon, + zkSyncEraMainnet, { ...fantom, iconUrl: "/logos/fantom-logo.svg" }, ]; }; diff --git a/packages/round-manager/src/features/api/contracts.ts b/packages/round-manager/src/features/api/contracts.ts index ddf2bd5840..7429546379 100644 --- a/packages/round-manager/src/features/api/contracts.ts +++ b/packages/round-manager/src/features/api/contracts.ts @@ -30,6 +30,10 @@ const projectRegistryMap: ChainIdToStringMap = { [ChainId.AVALANCHE]: "0xDF9BF58Aa1A1B73F0e214d79C652a7dd37a6074e", [ChainId.POLYGON]: "0x5C5E2D94b107C7691B08E43169fDe76EAAB6D48b", [ChainId.POLYGON_MUMBAI]: "0x545B282A50EaeA01A619914d44105437036CbB36", + [ChainId.ZKSYNC_ERA_MAINNET_CHAIN_ID]: + "0xe6CCEe93c97E20644431647B306F48e278aFFdb9", + [ChainId.ZKSYNC_ERA_TESTNET_CHAIN_ID]: + "0xb0F4882184EB6e3ed120c5181651D50719329788", }; /* GrantHub's ProjectRegistry */ @@ -66,6 +70,10 @@ const programFactoryMap: ChainIdToStringMap = { [ChainId.AVALANCHE]: "0xd07D54b0231088Ca9BF7DA6291c911B885cBC140", [ChainId.POLYGON]: "0xF7c101A95Ea4cBD5DA0Ab9827D7B2C9857440143", [ChainId.POLYGON_MUMBAI]: "0xDF9BF58Aa1A1B73F0e214d79C652a7dd37a6074e", + [ChainId.ZKSYNC_ERA_MAINNET_CHAIN_ID]: + "0x68a14AF71BFa0FE09fC937033f6Ea5153c0e75e4", + [ChainId.ZKSYNC_ERA_TESTNET_CHAIN_ID]: + "0x6D341814Be4E2316142D9190E390b494F1dECFAf", }; /* ProgramFactory */ export const programFactoryContract = (chainId: ChainId): Contract => { @@ -96,6 +104,10 @@ const roundFactoryMap: ChainIdToStringMap = { [ChainId.AVALANCHE]: "0x8eC471f30cA797FD52F9D37A47Be2517a7BD6912", [ChainId.POLYGON]: "0x5ab68dCdcA37A1C2b09c5218e28eB0d9cc3FEb03", [ChainId.POLYGON_MUMBAI]: "0xE1c5812e9831bc1d5BDcF50AAEc1a47C4508F3fA", + [ChainId.ZKSYNC_ERA_MAINNET_CHAIN_ID]: + "0xF3B5a0d59C6292BD0e4f8Cf735EEF52b98f428E6", + [ChainId.ZKSYNC_ERA_TESTNET_CHAIN_ID]: + "0x0Bb6e2dfEaef0Db5809B3979717E99e053Cbae72", }; /* RoundFactory */ export const roundFactoryContract = ( @@ -133,6 +145,10 @@ const qfVotingStrategyFactoryMap: ChainIdToStringMap = { [ChainId.AVALANCHE]: "0x2AFA4bE0f2468347A2F086c2167630fb1E58b725", [ChainId.POLYGON]: "0xc1a26b0789C3E93b07713e90596Cad8d0442C826", [ChainId.POLYGON_MUMBAI]: "0xF7c101A95Ea4cBD5DA0Ab9827D7B2C9857440143", + [ChainId.ZKSYNC_ERA_MAINNET_CHAIN_ID]: + "0x94cB638556d3991363102431d8cE9e839C734677", + [ChainId.ZKSYNC_ERA_TESTNET_CHAIN_ID]: + "0x8c28F21D2d8C53eedC58bF9cdCfb7DCF7d809d97", }; /* QuadraticFundingVotingStrategy */ export const qfVotingStrategyFactoryContract = ( @@ -206,6 +222,14 @@ export const dgVotingStrategyDummyContract = (chainId: ChainId): string => { address = "0xA78Daa89fE9C1eC66c5cB1c5833bC8C6Cb307918"; break; } + case ChainId.ZKSYNC_ERA_MAINNET_CHAIN_ID: { + address = "0x787D662D19C9528EB33FdaBb3cBEcBeAb2a7F15a"; + break; + } + case ChainId.ZKSYNC_ERA_TESTNET_CHAIN_ID: { + address = "0x0c0B71BA1427cb46424d38133E8187365Cc5466b"; + break; + } default: { address = "0x717A2cCDD81944e64c8BD9BB1D179A241dE14B46"; break; @@ -236,6 +260,10 @@ const merklePayoutStrategyFactoryMap: ChainIdToStringMap = { [ChainId.AVALANCHE]: "0x27efa1C90e097c980c669AB1a6e326AD4164f1Cb", [ChainId.POLYGON]: "0xD0e19DBF9b896199F35Df255A1bf8dB3C787531c", [ChainId.POLYGON_MUMBAI]: "0xc1a26b0789C3E93b07713e90596Cad8d0442C826", + [ChainId.ZKSYNC_ERA_MAINNET_CHAIN_ID]: + "0x41A8F19C6CB88C9Cc98d29Cb7A4015629910fFc0", + [ChainId.ZKSYNC_ERA_TESTNET_CHAIN_ID]: + "0xbA160C13F8F626e3232078aDFD6eD2f2B2289563", }; export const merklePayoutStrategyFactoryContract = ( chainId: ChainId @@ -268,6 +296,9 @@ const alloSettingsContractMap: ChainIdToStringMap = { [ChainId.AVALANCHE]: "", [ChainId.POLYGON]: "", [ChainId.POLYGON_MUMBAI]: "", + [ChainId.ZKSYNC_ERA_MAINNET_CHAIN_ID]: "", + [ChainId.ZKSYNC_ERA_TESTNET_CHAIN_ID]: + "0x0FD600678475C03f28baE59A2d55f7a911383e2B", }; /* AlloSettingsContract */ @@ -301,6 +332,10 @@ const directPayoutStrategyFactoryContractMap: ChainIdToStringMap = { [ChainId.AVALANCHE]: "0x8AdFcF226dfb2fA73788Ad711C958Ba251369cb3", [ChainId.POLYGON]: "0xF2a07728107B04266015E67b1468cA0a536956C8", [ChainId.POLYGON_MUMBAI]: "0xD9B7Ce1F68A93dF783A8519ed52b74f5DcF5AFE1", + [ChainId.ZKSYNC_ERA_MAINNET_CHAIN_ID]: + "0x0ccdfCB7e5DB60AAE5667d1680B490F7830c49C8", + [ChainId.ZKSYNC_ERA_TESTNET_CHAIN_ID]: + "0x4170665B31bC10009f8a69CeaACf3265C3d66797", }; /* DirectPayoutStrategyFactoryContract */ diff --git a/packages/round-manager/src/features/api/payoutTokens.ts b/packages/round-manager/src/features/api/payoutTokens.ts index bee2d86cbb..9b5c855c7d 100644 --- a/packages/round-manager/src/features/api/payoutTokens.ts +++ b/packages/round-manager/src/features/api/payoutTokens.ts @@ -23,6 +23,10 @@ export const TokenNamesAndLogos = { AVAX: "/logos/avax-logo.svg", MATIC: "/logos/pol-logo.svg", CVP: "/logos/power-pool.png", // PowerPool + TEST: "/logos/dai-logo.svg", + USDT: "/logos/usdt-logo.svg", + LUSD: "/logos/lusd-logo.svg", + MUTE: "/logos/mute-logo.svg", } as const; const MAINNET_TOKENS: PayoutToken[] = [ { @@ -128,6 +132,77 @@ const FANTOM_TESTNET_TOKENS: PayoutToken[] = [ redstoneTokenId: RedstoneTokenIds["FTM"], }, ]; + +const ZKSYNC_ERA_TESTNET_TOKENS: PayoutToken[] = [ + { + name: "ETH", + chainId: ChainId.ZKSYNC_ERA_TESTNET_CHAIN_ID, + address: ethers.constants.AddressZero, + decimal: 18, + logo: TokenNamesAndLogos["ETH"], + redstoneTokenId: RedstoneTokenIds["ETH"], + }, + { + name: "TEST", + chainId: ChainId.ZKSYNC_ERA_TESTNET_CHAIN_ID, + address: "0x8fd03Cd97Da068CC242Ab7551Dc4100DD405E8c7", + decimal: 18, + logo: TokenNamesAndLogos["DAI"], + redstoneTokenId: RedstoneTokenIds["DAI"], + }, +]; + +const ZKSYNC_ERA_MAINNET_TOKENS: PayoutToken[] = [ + { + name: "ETH", + chainId: ChainId.ZKSYNC_ERA_MAINNET_CHAIN_ID, + address: ethers.constants.AddressZero, + decimal: 18, + logo: TokenNamesAndLogos["ETH"], + redstoneTokenId: RedstoneTokenIds["ETH"], + }, + { + name: "DAI", + chainId: ChainId.ZKSYNC_ERA_MAINNET_CHAIN_ID, + address: "0x4B9eb6c0b6ea15176BBF62841C6B2A8a398cb656", + decimal: 18, + logo: TokenNamesAndLogos["DAI"], + redstoneTokenId: RedstoneTokenIds["DAI"], + }, + { + name: "USDC", + chainId: ChainId.ZKSYNC_ERA_MAINNET_CHAIN_ID, + address: "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4", + decimal: 6, + logo: TokenNamesAndLogos["USDC"], + redstoneTokenId: RedstoneTokenIds["USDC"], + }, + { + name: "USDT", + chainId: ChainId.ZKSYNC_ERA_MAINNET_CHAIN_ID, + address: "0x493257fD37EDB34451f62EDf8D2a0C418852bA4C", + decimal: 6, + logo: TokenNamesAndLogos["USDT"], + redstoneTokenId: RedstoneTokenIds["USDT"], + }, + { + name: "LUSD", + chainId: ChainId.ZKSYNC_ERA_MAINNET_CHAIN_ID, + address: "0x503234F203fC7Eb888EEC8513210612a43Cf6115", + decimal: 18, + logo: TokenNamesAndLogos["LUSD"], + redstoneTokenId: RedstoneTokenIds["LUSD"], + }, + { + name: "MUTE", + chainId: ChainId.ZKSYNC_ERA_MAINNET_CHAIN_ID, + address: "0x0e97C7a0F8B2C9885C8ac9fC6136e829CbC21d42", + decimal: 18, + logo: TokenNamesAndLogos["MUTE"], + redstoneTokenId: RedstoneTokenIds["MUTE"], + }, +]; + const PGN_TESTNET_TOKENS: PayoutToken[] = [ { name: "TEST", @@ -291,6 +366,8 @@ export const payoutTokens = [ ...FUJI_TOKENS, ...POLYGON_TOKENS, ...POLYGON_MUMBAI_TOKENS, + ...ZKSYNC_ERA_MAINNET_TOKENS, + ...ZKSYNC_ERA_TESTNET_TOKENS, ]; export const getPayoutTokenOptions = (chainId: ChainId): PayoutToken[] => { diff --git a/packages/round-manager/src/features/api/utils.ts b/packages/round-manager/src/features/api/utils.ts index cb7780716a..fb1c74bf3b 100644 --- a/packages/round-manager/src/features/api/utils.ts +++ b/packages/round-manager/src/features/api/utils.ts @@ -81,6 +81,16 @@ export const CHAINS: Record = { name: "Polygon Mumbai", logo: "./logos/pol-logo.svg", }, + [ChainId.ZKSYNC_ERA_MAINNET_CHAIN_ID]: { + id: ChainId.ZKSYNC_ERA_MAINNET_CHAIN_ID, + name: "zkSync Era", + logo: "/logos/zksync-logo.svg", + }, + [ChainId.ZKSYNC_ERA_TESTNET_CHAIN_ID]: { + id: ChainId.ZKSYNC_ERA_TESTNET_CHAIN_ID, + name: "zkSync Era Testnet", + logo: "/logos/zksync-logo.svg", + }, }; export type SupportType = { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 35a346f284..0f09174987 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -166,8 +166,8 @@ importers: specifier: ^6 version: 6.5.1(react-dom@18.2.0)(react@18.2.0) gitcoin-lit-js-sdk: - specifier: ^1.2.2 - version: 1.2.3 + specifier: ^1.2.6 + version: 1.2.6 history: specifier: ^5.3.0 version: 5.3.0 @@ -330,7 +330,7 @@ importers: dependencies: '@ethersproject/providers': specifier: ^5.7.2 - version: 5.7.2(bufferutil@4.0.7)(utf-8-validate@5.0.10) + version: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@rainbow-me/rainbowkit': specifier: ^0.12.16 version: 0.12.16(@types/react@18.2.21)(ethers@5.7.2)(react-dom@18.2.0)(react@18.2.0)(wagmi@0.12.19) @@ -548,7 +548,7 @@ importers: version: 5.7.0 '@ethersproject/providers': specifier: ^5.7.2 - version: 5.7.2(bufferutil@4.0.7)(utf-8-validate@5.0.10) + version: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@gitcoinco/passport-sdk-verifier': specifier: ^0.2.2 version: 0.2.2(debug@4.3.4) @@ -858,7 +858,7 @@ importers: version: 5.7.0 '@ethersproject/providers': specifier: ^5.7.2 - version: 5.7.2(bufferutil@4.0.7)(utf-8-validate@5.0.10) + version: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@gitcoinco/passport-sdk-verifier': specifier: ^0.1.2 version: 0.1.2 @@ -959,8 +959,8 @@ importers: specifier: ^3.0.3 version: 3.0.3 lit-js-sdk-old-w-pgn: - specifier: ^1.1.251 - version: 1.1.252 + specifier: ^1.1.254 + version: 1.1.254 lodash: specifier: ^4.17.21 version: 4.17.21 @@ -4997,7 +4997,7 @@ packages: dependencies: '@ethersproject/logger': 5.7.0 - /@ethersproject/providers@5.7.2(bufferutil@4.0.7)(utf-8-validate@5.0.10): + /@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10): resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} dependencies: '@ethersproject/abstract-provider': 5.7.0 @@ -5019,7 +5019,7 @@ packages: '@ethersproject/transactions': 5.7.0 '@ethersproject/web': 5.7.1 bech32: 1.1.4 - ws: 7.4.6(bufferutil@4.0.7)(utf-8-validate@5.0.10) + ws: 7.4.6(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -5587,14 +5587,14 @@ packages: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 - /@json-rpc-tools/provider@1.7.6(bufferutil@4.0.7)(utf-8-validate@5.0.10): + /@json-rpc-tools/provider@1.7.6(bufferutil@4.0.8)(utf-8-validate@5.0.10): resolution: {integrity: sha512-z7D3xvJ33UfCGv77n40lbzOYjZKVM3k2+5cV7xS8G6SCvKTzMkhkUYuD/qzQUNT4cG/lv0e9mRToweEEVLVVmA==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. dependencies: '@json-rpc-tools/utils': 1.7.6 axios: 0.21.4(debug@4.3.4) safe-json-utils: 1.1.1 - ws: 7.5.9(bufferutil@4.0.7)(utf-8-validate@5.0.10) + ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - debug @@ -7143,7 +7143,7 @@ packages: dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/bytes': 5.7.0 - '@ethersproject/providers': 5.7.2(bufferutil@4.0.7)(utf-8-validate@5.0.10) + '@ethersproject/providers': 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) ethers: 5.7.2 lodash: 4.17.21 ts-essentials: 7.0.3(typescript@4.9.5) @@ -8587,11 +8587,11 @@ packages: detect-browser: 5.2.0 dev: false - /@walletconnect/client@1.8.0(bufferutil@4.0.7)(utf-8-validate@5.0.10): + /@walletconnect/client@1.8.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): resolution: {integrity: sha512-svyBQ14NHx6Cs2j4TpkQaBI/2AF4+LXz64FojTjMtV4VMMhl81jSO1vNeg+yYhQzvjcGH/GpSwixjyCW0xFBOQ==} deprecated: 'WalletConnect''s v1 SDKs are now deprecated. Please upgrade to a v2 SDK. For details see: https://docs.walletconnect.com/' dependencies: - '@walletconnect/core': 1.8.0(bufferutil@4.0.7)(utf-8-validate@5.0.10) + '@walletconnect/core': 1.8.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@walletconnect/iso-crypto': 1.8.0 '@walletconnect/types': 1.8.0 '@walletconnect/utils': 1.8.0 @@ -8600,10 +8600,10 @@ packages: - utf-8-validate dev: false - /@walletconnect/core@1.8.0(bufferutil@4.0.7)(utf-8-validate@5.0.10): + /@walletconnect/core@1.8.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): resolution: {integrity: sha512-aFTHvEEbXcZ8XdWBw6rpQDte41Rxwnuk3SgTD8/iKGSRTni50gI9S3YEzMj05jozSiOBxQci4pJDMVhIUMtarw==} dependencies: - '@walletconnect/socket-transport': 1.8.0(bufferutil@4.0.7)(utf-8-validate@5.0.10) + '@walletconnect/socket-transport': 1.8.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@walletconnect/types': 1.8.0 '@walletconnect/utils': 1.8.0 transitivePeerDependencies: @@ -8714,17 +8714,17 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/ethereum-provider@1.7.8(bufferutil@4.0.7)(utf-8-validate@5.0.10): + /@walletconnect/ethereum-provider@1.7.8(bufferutil@4.0.8)(utf-8-validate@5.0.10): resolution: {integrity: sha512-dnl560zFMdK/LD4MD2XwHbWj7RXOaeXWPc9jzDaosLQLAXfA5mKe4XbCFFUPbVMYuyBdRI9NZv3Ci/qDb5wncQ==} deprecated: 'WalletConnect''s v1 SDKs are now deprecated. Please upgrade to a v2 SDK. For details see: https://docs.walletconnect.com/' dependencies: - '@walletconnect/client': 1.8.0(bufferutil@4.0.7)(utf-8-validate@5.0.10) + '@walletconnect/client': 1.8.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@walletconnect/jsonrpc-http-connection': 1.0.7 '@walletconnect/jsonrpc-provider': 1.0.13 - '@walletconnect/signer-connection': 1.8.0(bufferutil@4.0.7)(utf-8-validate@5.0.10) + '@walletconnect/signer-connection': 1.8.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@walletconnect/types': 1.8.0 '@walletconnect/utils': 1.8.0 - eip1193-provider: 1.0.1(bufferutil@4.0.7)(utf-8-validate@5.0.10) + eip1193-provider: 1.0.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) eventemitter3: 4.0.7 transitivePeerDependencies: - bufferutil @@ -8733,17 +8733,17 @@ packages: - utf-8-validate dev: false - /@walletconnect/ethereum-provider@1.8.0(bufferutil@4.0.7)(utf-8-validate@5.0.10): + /@walletconnect/ethereum-provider@1.8.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): resolution: {integrity: sha512-Nq9m+oo5P0F+njsROHw9KMWdoc/8iGHYzQdkjJN/1C7DtsqFRg5k5a3hd9rzCLpbPsOC1q8Z5lRs6JQgDvPm6Q==} deprecated: 'WalletConnect''s v1 SDKs are now deprecated. Please upgrade to a v2 SDK. For details see: https://docs.walletconnect.com/' dependencies: - '@walletconnect/client': 1.8.0(bufferutil@4.0.7)(utf-8-validate@5.0.10) + '@walletconnect/client': 1.8.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@walletconnect/jsonrpc-http-connection': 1.0.7 '@walletconnect/jsonrpc-provider': 1.0.13 - '@walletconnect/signer-connection': 1.8.0(bufferutil@4.0.7)(utf-8-validate@5.0.10) + '@walletconnect/signer-connection': 1.8.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@walletconnect/types': 1.8.0 '@walletconnect/utils': 1.8.0 - eip1193-provider: 1.0.1(bufferutil@4.0.7)(utf-8-validate@5.0.10) + eip1193-provider: 1.0.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) eventemitter3: 4.0.7 transitivePeerDependencies: - bufferutil @@ -8894,7 +8894,7 @@ packages: '@walletconnect/safe-json': 1.0.2 events: 3.3.0 tslib: 1.14.1 - ws: 7.5.9(bufferutil@4.0.7)(utf-8-validate@5.0.10) + ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -8907,7 +8907,7 @@ packages: '@walletconnect/safe-json': 1.0.2 events: 3.3.0 tslib: 1.14.1 - ws: 7.5.9(bufferutil@4.0.7)(utf-8-validate@5.0.10) + ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -9132,10 +9132,10 @@ packages: - utf-8-validate dev: false - /@walletconnect/signer-connection@1.8.0(bufferutil@4.0.7)(utf-8-validate@5.0.10): + /@walletconnect/signer-connection@1.8.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): resolution: {integrity: sha512-+YAaTAP52MWZJ2wWnqKClKCPlPHBo6reURFe0cWidLADh9mi/kPWGALZ5AENK22zpem1bbKV466rF5Rzvu0ehA==} dependencies: - '@walletconnect/client': 1.8.0(bufferutil@4.0.7)(utf-8-validate@5.0.10) + '@walletconnect/client': 1.8.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/qrcode-modal': 1.8.0 @@ -9146,12 +9146,12 @@ packages: - utf-8-validate dev: false - /@walletconnect/socket-transport@1.8.0(bufferutil@4.0.7)(utf-8-validate@5.0.10): + /@walletconnect/socket-transport@1.8.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): resolution: {integrity: sha512-5DyIyWrzHXTcVp0Vd93zJ5XMW61iDM6bcWT4p8DTRfFsOtW46JquruMhxOLeCOieM4D73kcr3U7WtyR4JUsGuQ==} dependencies: '@walletconnect/types': 1.8.0 '@walletconnect/utils': 1.8.0 - ws: 7.5.3(bufferutil@4.0.7)(utf-8-validate@5.0.10) + ws: 7.5.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -10639,13 +10639,6 @@ packages: ieee754: 1.2.1 dev: false - /bufferutil@4.0.7: - resolution: {integrity: sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==} - engines: {node: '>=6.14.2'} - requiresBuild: true - dependencies: - node-gyp-build: 4.6.1 - /bufferutil@4.0.8: resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} engines: {node: '>=6.14.2'} @@ -12288,10 +12281,10 @@ packages: /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - /eip1193-provider@1.0.1(bufferutil@4.0.7)(utf-8-validate@5.0.10): + /eip1193-provider@1.0.1(bufferutil@4.0.8)(utf-8-validate@5.0.10): resolution: {integrity: sha512-kSuqwQ26d7CzuS/t3yRXo2Su2cVH0QfvyKbr2H7Be7O5YDyIq4hQGCNTo5wRdP07bt+E2R/8nPCzey4ojBHf7g==} dependencies: - '@json-rpc-tools/provider': 1.7.6(bufferutil@4.0.7)(utf-8-validate@5.0.10) + '@json-rpc-tools/provider': 1.7.6(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - debug @@ -13630,7 +13623,7 @@ packages: '@ethersproject/networks': 5.7.1 '@ethersproject/pbkdf2': 5.7.0 '@ethersproject/properties': 5.7.0 - '@ethersproject/providers': 5.7.2(bufferutil@4.0.7)(utf-8-validate@5.0.10) + '@ethersproject/providers': 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@ethersproject/random': 5.7.0 '@ethersproject/rlp': 5.7.0 '@ethersproject/sha2': 5.7.0 @@ -14433,19 +14426,19 @@ packages: through2: 4.0.2 dev: true - /gitcoin-lit-js-sdk@1.2.3: - resolution: {integrity: sha512-d5qJPI1XFu8+kZEIZ6quG8MYndrC5Rfhb7xgckqJ84vdyyjZ52epyZHIlQlNFLTiaiqQGYIyIFKN4gR2YO0aBA==} + /gitcoin-lit-js-sdk@1.2.6: + resolution: {integrity: sha512-Y3CYfgAXqRrDciLBBD7iTIiSOlSBLEF7jChWx4fa9J7JAMmKYNIrVqC1Jj4tasx67oaPjtcFx7Rw/9PWP6zy6Q==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/contracts': 5.7.0 '@ethersproject/hash': 5.7.0 - '@ethersproject/providers': 5.7.2(bufferutil@4.0.7)(utf-8-validate@5.0.10) + '@ethersproject/providers': 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@ethersproject/strings': 5.7.0 '@ethersproject/units': 5.7.0 '@ethersproject/wallet': 5.7.0 - '@walletconnect/ethereum-provider': 1.8.0(bufferutil@4.0.7)(utf-8-validate@5.0.10) + '@walletconnect/ethereum-provider': 1.8.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) buffer: 6.0.3 - bufferutil: 4.0.7 + bufferutil: 4.0.8 cross-blob: 3.0.2 jszip: 3.10.1 lit-connect-modal: 0.1.11 @@ -14663,7 +14656,7 @@ packages: '@ethersproject/bytes': 5.7.0 '@ethersproject/constants': 5.7.0 '@ethersproject/contracts': 5.7.0 - '@ethersproject/providers': 5.7.2(bufferutil@4.0.7)(utf-8-validate@5.0.10) + '@ethersproject/providers': 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@ethersproject/solidity': 5.7.0 '@ethersproject/transactions': 5.7.0 '@ethersproject/wallet': 5.7.0 @@ -16044,7 +16037,7 @@ packages: peerDependencies: ws: '*' dependencies: - ws: 7.5.9(bufferutil@4.0.7)(utf-8-validate@5.0.10) + ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@5.0.10) dev: false /isomorphic-ws@5.0.0(ws@8.13.0): @@ -16284,7 +16277,7 @@ packages: buffer: 6.0.3 event-iterator: 2.0.0 iso-url: 1.2.1 - ws: 7.5.9(bufferutil@4.0.7)(utf-8-validate@5.0.10) + ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -16338,7 +16331,7 @@ packages: isomorphic-ws: 4.0.1(ws@7.5.9) json-stringify-safe: 5.0.1 uuid: 8.3.2 - ws: 7.5.9(bufferutil@4.0.7)(utf-8-validate@5.0.10) + ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -16994,7 +16987,7 @@ packages: whatwg-encoding: 1.0.5 whatwg-mimetype: 2.3.0 whatwg-url: 8.7.0 - ws: 7.5.9(bufferutil@4.0.7)(utf-8-validate@5.0.10) + ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@5.0.10) xml-name-validator: 3.0.0 transitivePeerDependencies: - bufferutil @@ -17783,19 +17776,19 @@ packages: '@types/trusted-types': 2.0.3 dev: false - /lit-js-sdk-old-w-pgn@1.1.252: - resolution: {integrity: sha512-xa3xu3+1HGNk7LhzX9SP+u75TbG8iAuQBPL++RGYRwi3bgIZq3CApAC502QRwqP0eMx/3OOXDUBMqXV0/PMAjQ==} + /lit-js-sdk-old-w-pgn@1.1.254: + resolution: {integrity: sha512-czJousy2bo2oRR83ol/FZcS3TkZzYxkkVXVXKvfAdXLEspmYRjWvaTXWUnf21eUdUIBcoxfUox0AnTPjYna+rA==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/contracts': 5.7.0 '@ethersproject/hash': 5.7.0 - '@ethersproject/providers': 5.7.2(bufferutil@4.0.7)(utf-8-validate@5.0.10) + '@ethersproject/providers': 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@ethersproject/strings': 5.7.0 '@ethersproject/units': 5.7.0 '@ethersproject/wallet': 5.7.0 - '@walletconnect/ethereum-provider': 1.7.8(bufferutil@4.0.7)(utf-8-validate@5.0.10) + '@walletconnect/ethereum-provider': 1.7.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) buffer: 6.0.3 - bufferutil: 4.0.7 + bufferutil: 4.0.8 cross-blob: 3.0.2 jszip: 3.10.1 lit-connect-modal: 0.1.11 @@ -17821,7 +17814,7 @@ packages: dependencies: '@ethersproject/contracts': 5.7.0 '@ethersproject/hash': 5.7.0 - '@ethersproject/providers': 5.7.2(bufferutil@4.0.7)(utf-8-validate@5.0.10) + '@ethersproject/providers': 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@ethersproject/wallet': 5.7.0 '@spruceid/siwe-parser': 1.1.3 '@stablelib/random': 1.0.2 @@ -24786,7 +24779,7 @@ packages: signal-exit: 3.0.7 typedarray-to-buffer: 3.1.5 - /ws@7.4.6(bufferutil@4.0.7)(utf-8-validate@5.0.10): + /ws@7.4.6(bufferutil@4.0.8)(utf-8-validate@5.0.10): resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} engines: {node: '>=8.3.0'} peerDependencies: @@ -24798,10 +24791,10 @@ packages: utf-8-validate: optional: true dependencies: - bufferutil: 4.0.7 + bufferutil: 4.0.8 utf-8-validate: 5.0.10 - /ws@7.5.3(bufferutil@4.0.7)(utf-8-validate@5.0.10): + /ws@7.5.3(bufferutil@4.0.8)(utf-8-validate@5.0.10): resolution: {integrity: sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==} engines: {node: '>=8.3.0'} peerDependencies: @@ -24813,11 +24806,11 @@ packages: utf-8-validate: optional: true dependencies: - bufferutil: 4.0.7 + bufferutil: 4.0.8 utf-8-validate: 5.0.10 dev: false - /ws@7.5.9(bufferutil@4.0.7)(utf-8-validate@5.0.10): + /ws@7.5.9(bufferutil@4.0.8)(utf-8-validate@5.0.10): resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} engines: {node: '>=8.3.0'} peerDependencies: @@ -24829,7 +24822,7 @@ packages: utf-8-validate: optional: true dependencies: - bufferutil: 4.0.7 + bufferutil: 4.0.8 utf-8-validate: 5.0.10 /ws@8.11.0: