Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mattpereira/etherscript
Collection of scripts for interacting with the Ethereum Virtual Machine
https://github.com/mattpereira/etherscript
Last synced: about 18 hours ago
JSON representation
Collection of scripts for interacting with the Ethereum Virtual Machine
- Host: GitHub
- URL: https://github.com/mattpereira/etherscript
- Owner: MattPereira
- Created: 2023-10-12T17:45:36.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2023-11-03T04:59:59.000Z (about 1 year ago)
- Last Synced: 2023-11-03T22:33:50.657Z (about 1 year ago)
- Language: TypeScript
- Homepage:
- Size: 404 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 📜 Etherscript
A collection of useful scripts for interacting with EVM compatible blockchains from the command line
- [Environment Variable Management](#environment-variable-management)
- [Usage](#usage)
- [Hardhat Guide](#hardhat-guide)
- [Scripts](#scripts)
- [Tasks](#tasks)
- [Script Glossary](#script-glossary)
- [swap](#swap)
- [get-price](#get-price)
- [get-abi](#get-abi)## Environment Variable Management
This repository uses the NPM package `@chainlink/env-enc` to keep private keys, RPC URLs, and other secrets encrypted at rest. This helps reduce the risk of leaking your private key.
By default, the `@chainlink/env-enc` package will store your encrypted environment variables in a file named `.env.enc` in the root directory of this repository. Ensure that your .gitignore file includes`.env.enc`
### Usage
Set the encryption password by running the command
```
npx env-enc set-pw
```Set a new environment variable by running the command
```
npx env-enc set
```See all your currently set environment variables
```
npx env-enc view
```Remove an environment variable
```
npx env-enc remove SOME_ENV_VAR_NAME
```## Hardhat Guide
- `hardhat.config.ts` specifies the settings like imports, networks, solidity verions, etc that will all be made available through the hre (hardhat runtime environment)
- all scripts and tasks are by default executed on the local hardhat network, but can be configured to run on other networks by passing the `--network` flag .i.e. `yarn hardhat NAME_OF_TASK --network arbitrum`
### Scripts
- good for executing code that doesnt require parameters
```
yarn hardhat run scripts/PATH_TO_SCRIPT.ts
```### Tasks
- good for executing scripts that require parameters passed on the command line
- to see all availalble tasks run `yarn hardhat`
- to see which flags you need to pass run `yarn hardhat NAME_OF_TASK --help`
- not allowed to import hre into scripts that are imported and used by tasks```
yarn hardhat NAME_OF_TASK --NAME_OF_FLAG VALUE_OF_FLAG
```## Script Glossary
### swap
Swap tokens using uniswap's smart order router that computes the optimal route before executing the swap.
##### Required flags
| Parameter | Description |
| --------- | ------------------------------------------------- |
| `amount` | The human readable amount of the token to swap in |
| `in` | The symbol of the token to swap in |
| `out` | The symbol of the token to swap out |##### Example usage
Execute a swap on the local hardhat network that is configured as fork of arbitrum
```
yarn hardhat swap --in USDC --amount 100 --out rETH
```### get-abi
Fetches abi from etherscan API and outputs the result to a .json file inside the `./abis` directory
##### Required flags
| Parameter | Description |
| ----------- | ------------------------------------------------------------- |
| `contract` | The target contract address (must be verified on etherscan) |
| `file-name` | The name for the file that will be output into abis directory |##### Example usage
```
yarn hardhat get-abi --contract 0x514910771AF9Ca656af840dff83E8264EcF986CA --file-name link-token-abi --network mainnet
```### get-price
Gets the price for a base asset in terms of a quote asset using chainlink price feeds
##### Required flags
| Parameter | Description |
| ---------- | ----------------------------------------- |
| `contract` | The chainlink price feed contract address |##### Example usage
Fetch the price of ETH in USD on mainnet
```
yarn hardhat get-price --contract 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419 --network mainnet
```