From cc94ac37d8bcef79e50c4bdfff57ab9bd3c95c80 Mon Sep 17 00:00:00 2001 From: Charles Bergeron Date: Tue, 21 May 2024 15:56:35 -0700 Subject: [PATCH] remove getProvider(chainId) and replace it with a simpler getProvider() which only looks for JSON_RPC_URL in the env vars - this makes the library more flexible when working with new / other chains --- .envrc.example | 10 +--------- .gitignore | 5 +++-- README.md | 24 ++++++++++++++++++++++++ src/commands/utils/concatWinners.ts | 4 ++-- src/commands/utils/vaultAccounts.ts | 4 ++-- src/lib/utils/getProvider.ts | 29 ++++++----------------------- 6 files changed, 38 insertions(+), 38 deletions(-) diff --git a/.envrc.example b/.envrc.example index f02ea90..0e8133f 100644 --- a/.envrc.example +++ b/.envrc.example @@ -1,9 +1 @@ -export MAINNET_RPC_URL='' -export OPTIMISM_MAINNET_RPC_URL='' -export BASE_MAINNET_RPC_URL='' -export ARBITRUM_MAINNET_RPC_URL='' - -export SEPOLIA_RPC_URL='' -export OPTIMISM_SEPOLIA_RPC_URL='' -export BASE_SEPOLIA_RPC_URL='' -export ARBITRUM_SEPOLIA_RPC_URL='' +export JSON_RPC_URL='' diff --git a/.gitignore b/.gitignore index dc200af..9f6fa9b 100644 --- a/.gitignore +++ b/.gitignore @@ -8,10 +8,11 @@ /temp node_modules oclif.manifest.json -.envrc .DS_STORE .history .yalc yalc.lock prizes -vaultAccounts \ No newline at end of file +vaultAccounts +.envrc* +!.envrc.example \ No newline at end of file diff --git a/README.md b/README.md index 9aac400..afe04fa 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,30 @@ npx @generationsoftware/pt-v5-cli help utils vaultAccounts npx @generationsoftware/pt-v5-cli help utils concatWinners ``` +### Setup + +Set up your environment variables using `dotenv`: + +#### ENV + +Copy `.envrc.example` and input the env vars needed to run this project: + +```sh +cp .envrc.example .envrc +``` + +Once your env variables are setup, load them with: + +```sh +direnv allow +``` + +#### LIST OF ENVIRONMENT VARIABLES + +```sh +JSON_RPC_URI: Your Infura/Alchemy/etc JSON RPC URI +``` + # ⌨️ CLI Installation diff --git a/src/commands/utils/concatWinners.ts b/src/commands/utils/concatWinners.ts index 53cd825..653b54f 100644 --- a/src/commands/utils/concatWinners.ts +++ b/src/commands/utils/concatWinners.ts @@ -57,7 +57,7 @@ export default class ConcatWinners extends Command { const { flags } = await this.parse(ConcatWinners); const { chainId, prizePool, outDir } = flags; - const readProvider = getProvider(chainId); + const readProvider = getProvider(); const prizePoolContract = await getPrizePoolByAddress(Number(chainId), prizePool, readProvider); @@ -82,7 +82,7 @@ export default class ConcatWinners extends Command { `Running "utils:concatWinners" on chainId: ${chainId} for prizePool: ${prizePool.toLowerCase()} using latest drawID` ); - const readProvider = getProvider(chainId); + const readProvider = getProvider(); const contracts = await downloadContractsBlob(Number(chainId)); const prizePoolContract = await getPrizePoolByAddress(Number(chainId), prizePool, readProvider); const prizePoolInfo: PrizePoolInfo = await getPrizePoolInfo(readProvider, contracts); diff --git a/src/commands/utils/vaultAccounts.ts b/src/commands/utils/vaultAccounts.ts index 9083b4c..4fda2df 100644 --- a/src/commands/utils/vaultAccounts.ts +++ b/src/commands/utils/vaultAccounts.ts @@ -56,7 +56,7 @@ export default class VaultAccounts extends Command { const { flags } = await this.parse(VaultAccounts); const { chainId, prizePool, outDir } = flags; - const readProvider = getProvider(chainId); + const readProvider = getProvider(); const prizePoolContract = await getPrizePoolByAddress(Number(chainId), prizePool, readProvider); @@ -81,7 +81,7 @@ export default class VaultAccounts extends Command { `Running "utils:vaultAccounts" on chainId: ${chainId} for prizePool: ${prizePool.toLowerCase()} using latest drawID` ); - const readProvider = getProvider(chainId); + const readProvider = getProvider(); const prizePoolContract = await getPrizePoolByAddress(Number(chainId), prizePool, readProvider); const drawId = await prizePoolContract?.getLastAwardedDrawId(); console.log(`DrawID: #${drawId.toString()}`); diff --git a/src/lib/utils/getProvider.ts b/src/lib/utils/getProvider.ts index daceabc..beee5a1 100644 --- a/src/lib/utils/getProvider.ts +++ b/src/lib/utils/getProvider.ts @@ -1,28 +1,11 @@ import { JsonRpcProvider } from "@ethersproject/providers"; -type Providers = { [k: string]: JsonRpcProvider }; - -// eg. -// https://mainnet.infura.io/v3/ -const providers: Providers = { - // mainnets - 1: new JsonRpcProvider(process.env.ETHEREUM_MAINNET_RPC_URL), - 10: new JsonRpcProvider(process.env.OPTIMISM_MAINNET_RPC_URL), - 8453: new JsonRpcProvider(process.env.BASE_MAINNET_RPC_URL), - 42161: new JsonRpcProvider(process.env.ARBITRUM_MAINNET_RPC_URL), - // testnets - 84532: new JsonRpcProvider(process.env.BASE_SEPOLIA_RPC_URL), - 421614: new JsonRpcProvider(process.env.ARBITRUM_SEPOLIA_RPC_URL), - 11155111: new JsonRpcProvider(process.env.SEPOLIA_RPC_URL), - 11155420: new JsonRpcProvider(process.env.OPTIMISM_SEPOLIA_RPC_URL), -}; - -export const getProvider = (chainId: string): JsonRpcProvider => { - const provider = providers[chainId]; - - if (!provider) { - throw new Error(`No provider for chainId ${chainId}`); +export const getProvider = (): JsonRpcProvider => { + if (!process.env.JSON_RPC_URL) { + throw new Error( + `No provider available - likely missing 'process.env.JSON_RPC_URL', see README about proper installation` + ); } - return provider; + return new JsonRpcProvider(process.env.JSON_RPC_URL); };