Skip to content

Commit

Permalink
remove getProvider(chainId) and replace it with a simpler getProvider…
Browse files Browse the repository at this point in the history
…() which only looks for JSON_RPC_URL in the env vars - this makes the library more flexible when working with new / other chains
  • Loading branch information
chuckbergeron committed May 21, 2024
1 parent 3b44a3b commit cc94ac3
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 38 deletions.
10 changes: 1 addition & 9 deletions .envrc.example
Original file line number Diff line number Diff line change
@@ -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=''
5 changes: 3 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,11 @@
/temp
node_modules
oclif.manifest.json
.envrc
.DS_STORE
.history
.yalc
yalc.lock
prizes
vaultAccounts
vaultAccounts
.envrc*
!.envrc.example
24 changes: 24 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

<!-- usage -->
Expand Down
4 changes: 2 additions & 2 deletions src/commands/utils/concatWinners.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand All @@ -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);
Expand Down
4 changes: 2 additions & 2 deletions src/commands/utils/vaultAccounts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand All @@ -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()}`);
Expand Down
29 changes: 6 additions & 23 deletions src/lib/utils/getProvider.ts
Original file line number Diff line number Diff line change
@@ -1,28 +1,11 @@
import { JsonRpcProvider } from "@ethersproject/providers";

type Providers = { [k: string]: JsonRpcProvider };

// eg.
// https://mainnet.infura.io/v3/<YOUR-API-KEY>
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);
};

0 comments on commit cc94ac3

Please sign in to comment.