├── .env ├── .gitignore ├── README.md ├── package.json ├── src ├── cli.ts ├── constants.ts ├── db.ts ├── scripts │ ├── mine.ts │ ├── mint-pow.ts │ └── wallet.ts └── utils │ ├── bn.ts │ ├── hex.ts │ ├── index.ts │ ├── log4js.ts │ ├── program.ts │ ├── prompts.ts │ └── tools.ts ├── tokens.json ├── tsconfig.json └── yarn.lock /.env: -------------------------------------------------------------------------------- 1 | # PROVIDER_RPC = 'https://eth.llamarpc.com' 2 | PROVIDER_RPC = 'https://eth-pokt.nodies.app' 3 | # PROVIDER_RPC = 'https://ethereum-sepolia.blockpi.network/v1/rpc/public' 4 | # PROVIDER_RPC = 'https://linea.blockpi.network/v1/rpc/public' 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | db 3 | logs 4 | .history 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Ethereum IERC PoW Miner Program 2 | 3 | This Ethereum IERC PoW Miner Program is a Node.js command-line application that enables users to interact with Ethereum wallets and perform PoW mining. 4 | 5 | ## Features 6 | 7 | **Wallet Management**: Manage Ethereum wallets, including viewing wallet information, creating new wallets, and setting up existing accounts. 8 | 9 | **Mining**: Engage in Ethereum IERC PoW Mining by providing a mining address. 10 | 11 | ## Risk Disclaimer 12 | 13 | Please note that this tool does not provide the capability to track mining progress or verify if a specific tick has been successfully minted. For this information, visit [IERC Official Website](https://ierc20.com). Use this tool with the understanding that it does not provide real-time updates on the availability of mining opportunities. Users are advised to proceed with caution and at their own risk. 14 | 15 | ## Installation 16 | 17 | ### Prerequisites 18 | 19 | Before installing the program, ensure you have Node.js installed on your system. If not, follow these steps to install Node.js: 20 | 21 | 1. Visit [Node.js official website](https://nodejs.org/). 22 | 2. Download the Node.js installer for your operating system. 23 | 3. Follow the installation instructions to install Node.js and npm. 24 | 25 | ### Setting Up the Program 26 | 27 | Once Node.js is installed, you can set up the Ethereum IERC PoW Mining Program: 28 | To use this program, ensure you have Node.js installed on your system. Clone the repository and install dependencies: 29 | 30 | ```bash 31 | git clone https://github.com/IErcOrg/ierc-miner-js 32 | cd ierc-miner-js 33 | npm i -g yarn 34 | yarn install 35 | ``` 36 | 37 | ## Usage 38 | 39 | ### Quick Start 40 | 41 | 1. Create wallet Or Set wallet 42 | 43 | ```shell 44 | yarn cli wallet --create 45 | Or 46 | yarn cli wallet --set 47 | ``` 48 | 49 | Note: Newly created wallets require a transfer of funds 50 | 51 | 2. pow mine 52 | 53 | ```shell 54 | yarn cli mine --account
55 | ``` 56 | 57 | 3. DPoS&PoW mine 58 | 59 | ```shell 60 | yarn cli mint-pow --account
61 | ``` 62 | 63 | ### Wallet Commands 64 | 65 | - View Wallet Info: `yarn cli wallet --target
` 66 | - View All Wallet Accounts: `yarn cli wallet --all` 67 | - Create New Wallet Account: `yarn cli wallet --create` 68 | - Set Up Existing Account: `yarn cli wallet --set privateKey` 69 | 70 | ### Mining Commands 71 | 72 | - Start Mining: `yarn cli mine --account
` 73 | 74 | - Start DPoS&PoW Mining: `yarn cli mint-pow --account
` 75 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ierc-miner-js", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "cli": "ts-node src/cli.ts" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "axios": "^1.6.2", 14 | "bignumber.js": "^9.1.2", 15 | "commander": "^11.0.0", 16 | "dayjs": "^1.11.10", 17 | "ethers": "5", 18 | "log4js": "^6.9.1", 19 | "node-json-db": "^2.2.0", 20 | "spinnies": "^0.5.1" 21 | }, 22 | "devDependencies": { 23 | "@types/node": "^20.6.5", 24 | "@types/spinnies": "^0.5.1", 25 | "dotenv": "^16.3.1", 26 | "ts-node": "^10.9.1", 27 | "typescript": "^5.2.2" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/cli.ts: -------------------------------------------------------------------------------- 1 | import { program } from "commander"; 2 | import { runMine } from "./scripts/mine"; 3 | import { runWallet } from "./scripts/wallet"; 4 | import { runMintPow } from "./scripts/mint-pow"; 5 | 6 | program 7 | .command("wallet") 8 | .description("wallet options") 9 | .option("-t,--target
", "show target address info") 10 | .option("-a,--all", "show all wallet accounts") 11 | .option("-c,--create", "Create a new wallet account") 12 | .option("-s,--set ", "Setting up an account that already exists") 13 | .action(async (args) => { 14 | runWallet(args); 15 | }); 16 | 17 | program 18 | .command("mine ") 19 | .description("Perform Ethereum IERC POW Mining") 20 | .option("-a, --account ", "Provide your mining address") 21 | .action((tick, options) => { 22 | runMine(tick, options); 23 | }); 24 | program 25 | .command("mint-pow ") 26 | .description("Perform Ethereum IERC DPoS&PoW Mining") 27 | .option("-a, --account ", "Provide your mining address") 28 | .action((workc, options) => { 29 | runMintPow(workc, options); 30 | }); 31 | program.parse(process.argv); 32 | -------------------------------------------------------------------------------- /src/constants.ts: -------------------------------------------------------------------------------- 1 | import dotenv from "dotenv"; 2 | dotenv.config(); 3 | 4 | export const PROVIDER_RPC = process.env.PROVIDER_RPC; 5 | export const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000"; 6 | 7 | export const GAS_PREMIUM = 110; 8 | -------------------------------------------------------------------------------- /src/db.ts: -------------------------------------------------------------------------------- 1 | import { Config, JsonDB } from "node-json-db"; 2 | 3 | const miner = new JsonDB(new Config("db/miner", true, true, "/")); 4 | 5 | export const DataBase = { 6 | miner: miner, 7 | }; 8 | -------------------------------------------------------------------------------- /src/scripts/mine.ts: -------------------------------------------------------------------------------- 1 | import { ethers } from "ethers"; 2 | import { GAS_PREMIUM, PROVIDER_RPC, ZERO_ADDRESS } from "../constants"; 3 | import { DataBase } from "../db"; 4 | import { sleep } from "../utils/program"; 5 | import { stringToHex } from "../utils/hex"; 6 | import Spinnies from "spinnies"; 7 | import { printer } from "../utils/log4js"; 8 | import { bnUtils } from "../utils/bn"; 9 | import { sayMinerLog } from "../utils/prompts"; 10 | import dayjs from "dayjs"; 11 | import { generateNonce } from "../utils"; 12 | import { readFile } from "fs/promises"; 13 | 14 | interface IMineOptions { 15 | account: string; 16 | } 17 | 18 | let unique = 0; 19 | export const runMine = async (tick: string, options: IMineOptions) => { 20 | sayMinerLog(); 21 | const str = await readFile("./tokens.json", "utf-8"); 22 | const ticks = JSON.parse(str) as Record; 23 | const tickInfo = ticks[tick]; 24 | if (!tickInfo) { 25 | throw new Error(`Mining attempt failed: 'tick' value ${tick} is not found in tokens.json.`); 26 | } 27 | const { amt, workc } = tickInfo; 28 | const { account } = options; 29 | if (!(await DataBase.miner.exists(`/${account}`))) { 30 | console.log(` 31 | This mining user configuration was not found! 32 | 💡 Tips: 33 | 1. cli wallet ---set Import the user. 34 | 2. cli wallet --all to see configured users 35 | - For more information, use cli help wallet 36 | `); 37 | throw new Error("Mining user configuration not found"); 38 | } 39 | 40 | printer.trace(`Start mining with ${account}`); 41 | const { privateKey } = await DataBase.miner.getObject<{ privateKey: string }>(`/${account}`); 42 | const provider = new ethers.providers.JsonRpcProvider(PROVIDER_RPC); 43 | const miner = new ethers.Wallet(privateKey, provider); 44 | 45 | const network = await provider.getNetwork(); 46 | printer.trace(`network is ${network.name} (chainID: ${network.chainId})`); 47 | 48 | const currentGasPrice = await provider.getGasPrice(); 49 | const targetGasFee = currentGasPrice.div(100).mul(GAS_PREMIUM); 50 | 51 | printer.trace(`Current gas price usage ${bnUtils.fromWei(targetGasFee.toString(), 9)} gwei`); 52 | const nonce = await miner.getTransactionCount(); 53 | printer.trace(`nonce is ${nonce}`); 54 | const balance = await miner.getBalance(); 55 | printer.trace(`balance is ${bnUtils.fromWei(balance.toString(), 18).dp(4).toString()}`); 56 | 57 | const spinnies = new Spinnies(); 58 | printer.trace(`The current mining difficulty is ${workc}`); 59 | printer.trace(`Expected to take 1-2 minutes to calculate...`); 60 | spinnies.add("mining", { text: "start mining...", color: "blue" }); 61 | await sleep(1000); 62 | let timer = Date.now(), 63 | startTimer = timer, 64 | mineCount = 0; 65 | 66 | while (true) { 67 | mineCount += 1; 68 | const callData = `data:application/json,{"p":"ierc-20","op":"mint","tick":"${tick}","amt":"${amt}","nonce":"${generateNonce()}${unique++}"}`; 69 | // console.log("🚀 ~ transactionData:", callData) 70 | const transaction = { 71 | type: 2, 72 | chainId: network.chainId, 73 | to: ZERO_ADDRESS, 74 | maxPriorityFeePerGas: targetGasFee, 75 | maxFeePerGas: targetGasFee, 76 | gasLimit: ethers.BigNumber.from("25000"), 77 | nonce: nonce, 78 | value: ethers.utils.parseEther("0"), 79 | data: stringToHex(callData), 80 | }; 81 | const rawTransaction = ethers.utils.serializeTransaction(transaction); 82 | const transactionHash = ethers.utils.keccak256(rawTransaction); 83 | // console.log("🚀 ~ transactionHash:", transactionHash) 84 | 85 | const signingKey = miner._signingKey(); 86 | const signature = signingKey.signDigest(transactionHash); 87 | // console.log("🚀 ~ signature:", signature) 88 | 89 | const recreatedSignature = ethers.utils.joinSignature(signature); 90 | // console.log("🚀 ~ recreatedSignature:", recreatedSignature) 91 | 92 | const predictedTransactionHash = ethers.utils.keccak256( 93 | ethers.utils.serializeTransaction(transaction, recreatedSignature) 94 | ); 95 | 96 | // console.log("🚀 ~ predictedTransactionHash:", predictedTransactionHash) 97 | const now = Date.now(); 98 | if (now - timer > 100) { 99 | await sleep(1); 100 | spinnies.update("mining", { 101 | text: `[${dayjs(now).format( 102 | "YYYY-MM-DD HH:mm:ss" 103 | )}] ${mineCount} - ${predictedTransactionHash}`, 104 | color: "red", 105 | }); 106 | timer = now; 107 | } 108 | 109 | if (predictedTransactionHash.includes(workc)) { 110 | unique = 0; 111 | spinnies.succeed("mining", { 112 | text: `${mineCount} - ${predictedTransactionHash}`, 113 | color: "green", 114 | }); 115 | const mineTime = (Date.now() - startTimer) / 1000; 116 | printer.info( 117 | `Total time spent ${mineTime}s, average arithmetic ${Math.ceil(mineCount / mineTime)} c/s` 118 | ); 119 | // console.log("🚀 ~ transaction:", transaction) 120 | const realTransaction = await miner.sendTransaction(transaction); 121 | // console.log("🚀 ~ realTransaction:", realTransaction) 122 | printer.info(`mining hash: ${realTransaction.hash}`); 123 | await realTransaction.wait(); 124 | 125 | return printer.info("mining success"); 126 | } 127 | // await sleep(1) 128 | } 129 | }; 130 | -------------------------------------------------------------------------------- /src/scripts/mint-pow.ts: -------------------------------------------------------------------------------- 1 | import { ethers } from "ethers"; 2 | import { GAS_PREMIUM, PROVIDER_RPC, ZERO_ADDRESS } from "../constants"; 3 | import { DataBase } from "../db"; 4 | import { sleep } from "../utils/program"; 5 | import { stringToHex } from "../utils/hex"; 6 | import Spinnies from "spinnies"; 7 | import { printer } from "../utils/log4js"; 8 | import { bnUtils } from "../utils/bn"; 9 | import { sayMinerLog } from "../utils/prompts"; 10 | import dayjs from "dayjs"; 11 | import { generateNonce } from "../utils"; 12 | 13 | interface IMineOptions { 14 | account: string; 15 | } 16 | const tick = "ethpi"; 17 | let unique = 0; 18 | let toMintBlockNumber = 0; 19 | export const runMintPow = async (workc: string, options: IMineOptions) => { 20 | sayMinerLog(); 21 | if (!(workc.length >= 6 && workc.length <= 22 && ethers.utils.isHexString(workc))) { 22 | throw new Error("The workc is invalid"); 23 | } 24 | const { account } = options; 25 | if (!(await DataBase.miner.exists(`/${account}`))) { 26 | console.log(` 27 | This mining user configuration was not found! 28 | 💡 Tips: 29 | 1. cli wallet ---set Import the user. 30 | 2. cli wallet --all to see configured users 31 | - For more information, use cli help wallet 32 | `); 33 | throw new Error("Mining user configuration not found"); 34 | } 35 | 36 | printer.trace(`Start mining with ${account}`); 37 | const { privateKey } = await DataBase.miner.getObject<{ privateKey: string }>(`/${account}`); 38 | const provider = new ethers.providers.JsonRpcProvider(PROVIDER_RPC); 39 | const miner = new ethers.Wallet(privateKey, provider); 40 | 41 | const [network, currentGasPrice, blockNumber, nonce, balance] = await Promise.all([ 42 | provider.getNetwork(), 43 | provider.getGasPrice(), 44 | provider.getBlockNumber(), 45 | miner.getTransactionCount(), 46 | miner.getBalance(), 47 | ]); 48 | printer.trace(`network is ${network.name} (chainID: ${network.chainId})`); 49 | const targetGasFee = currentGasPrice.div(100).mul(GAS_PREMIUM); 50 | 51 | printer.trace(`Current gas price usage ${bnUtils.fromWei(targetGasFee.toString(), 9)} gwei`); 52 | printer.trace(`nonce is ${nonce}`); 53 | printer.trace(`balance is ${bnUtils.fromWei(balance.toString(), 18).dp(4).toString()}`); 54 | 55 | const spinnies = new Spinnies(); 56 | printer.trace(`The current mining difficulty is ${workc}`); 57 | printer.trace(`Expected to take 1-2 minutes to calculate...`); 58 | spinnies.add("mining", { text: "start mining...", color: "blue" }); 59 | await sleep(1000); 60 | let timer = Date.now(), 61 | startTimer = timer, 62 | mineCount = 0; 63 | toMintBlockNumber = blockNumber + 3; 64 | setInterval(() => { 65 | toMintBlockNumber += 1; 66 | }, 1000 * 12); 67 | while (true) { 68 | mineCount += 1; 69 | const transaction = { 70 | type: 2, 71 | chainId: network.chainId, 72 | to: ZERO_ADDRESS, 73 | maxPriorityFeePerGas: targetGasFee, 74 | maxFeePerGas: targetGasFee, 75 | gasLimit: ethers.BigNumber.from("25000"), 76 | nonce: nonce, 77 | value: ethers.utils.parseEther("0"), 78 | data: stringToHex( 79 | `data:application/json,${JSON.stringify({ 80 | p: "ierc-pow", 81 | op: "mint", 82 | tick: tick, 83 | // use_point: '0', 84 | block: String(toMintBlockNumber), 85 | nonce: `${generateNonce()}`, 86 | })}` 87 | ), 88 | }; 89 | const rawTransaction = ethers.utils.serializeTransaction(transaction); 90 | const transactionHash = ethers.utils.keccak256(rawTransaction); 91 | // console.log("🚀 ~ transactionHash:", transactionHash) 92 | 93 | const signingKey = miner._signingKey(); 94 | const signature = signingKey.signDigest(transactionHash); 95 | // console.log("🚀 ~ signature:", signature) 96 | 97 | const recreatedSignature = ethers.utils.joinSignature(signature); 98 | // console.log("🚀 ~ recreatedSignature:", recreatedSignature) 99 | 100 | const predictedTransactionHash = ethers.utils.keccak256( 101 | ethers.utils.serializeTransaction(transaction, recreatedSignature) 102 | ); 103 | 104 | // console.log("🚀 ~ predictedTransactionHash:", predictedTransactionHash) 105 | const now = Date.now(); 106 | if (now - timer > 100) { 107 | await sleep(1); 108 | spinnies.update("mining", { 109 | text: `[${dayjs(now).format( 110 | "YYYY-MM-DD HH:mm:ss" 111 | )}] ${mineCount} - ${predictedTransactionHash}`, 112 | color: "red", 113 | }); 114 | timer = now; 115 | } 116 | if (predictedTransactionHash.includes(workc)) { 117 | unique = 0; 118 | const currentBlockNumber = await provider.getBlockNumber(); 119 | if (Math.abs(currentBlockNumber - toMintBlockNumber) > 5) { 120 | spinnies.fail("mining", { 121 | text: `The current block height is ${currentBlockNumber}, the expected block height is ${toMintBlockNumber}, the difference is too large, and the mining is stopped.`, 122 | color: "red", 123 | }); 124 | return; 125 | } 126 | spinnies.succeed("mining", { 127 | text: `${mineCount} - ${predictedTransactionHash}`, 128 | color: "green", 129 | }); 130 | const mineTime = (Date.now() - startTimer) / 1000; 131 | printer.info( 132 | `Total time spent ${mineTime}s, average arithmetic ${Math.ceil(mineCount / mineTime)} c/s` 133 | ); 134 | // console.log("🚀 ~ transaction:", transaction) 135 | const realTransaction = await miner.sendTransaction(transaction); 136 | // console.log("🚀 ~ realTransaction:", realTransaction) 137 | printer.info(`mining hash: ${realTransaction.hash}`); 138 | await realTransaction.wait(); 139 | 140 | return printer.info("mining success"); 141 | } 142 | } 143 | }; 144 | -------------------------------------------------------------------------------- /src/scripts/wallet.ts: -------------------------------------------------------------------------------- 1 | import { ethers } from "ethers"; 2 | import { DataBase } from "../db"; 3 | 4 | interface IWalletArgs { 5 | create?: boolean; 6 | all?: boolean; 7 | set?: string; 8 | target?: string; 9 | } 10 | 11 | export const runWallet = async (args: IWalletArgs) => { 12 | if (args.create) { 13 | try { 14 | console.log("Creating a mining account..."); 15 | const wallet = ethers.Wallet.createRandom(); 16 | await DataBase.miner.push( 17 | `/${wallet.address}`, 18 | { 19 | privateKey: wallet.privateKey, 20 | mnemonic: wallet.mnemonic, 21 | }, 22 | false 23 | ); 24 | console.log("Mining account created successfully"); 25 | console.log(wallet); 26 | } catch (error) { 27 | console.log("Mining account created failed"); 28 | console.error(error); 29 | } 30 | } 31 | if (args.set) { 32 | const previteKey = args.set; 33 | const wallet = new ethers.Wallet(previteKey); 34 | await DataBase.miner.push( 35 | `/${wallet.address}`, 36 | { 37 | privateKey: wallet.privateKey, 38 | mnemonic: wallet.mnemonic, 39 | }, 40 | false 41 | ); 42 | console.log("Mining account created successfully"); 43 | } 44 | 45 | if (args.target) { 46 | const target = args.target; 47 | console.log("🚀 ~ target:", target); 48 | const wallet = await DataBase.miner.getObject>(`/${target}`); 49 | if (!wallet) { 50 | throw new Error("target not found"); 51 | } 52 | console.log(wallet); 53 | } 54 | 55 | if (args.all) { 56 | const minersData = await DataBase.miner.getObject>(`/`); 57 | 58 | const minersTable = Object.keys(minersData).map((account) => { 59 | return { 60 | address: account, 61 | privateKey: minersData[account].privateKey, 62 | }; 63 | }); 64 | 65 | if (!minersTable.length) { 66 | console.log(` 67 | No mining account configured! 68 | 💡 tips: 69 | 1. cli wallet --create can create a new user 70 | 2. cli wallet --set to import a user. 71 | - For more information, use cli help wallet 72 | `); 73 | throw new Error("No mining account configured!"); 74 | } 75 | console.table(minersTable); 76 | } 77 | }; 78 | -------------------------------------------------------------------------------- /src/utils/bn.ts: -------------------------------------------------------------------------------- 1 | import BigNumber from "bignumber.js"; 2 | 3 | declare module "bignumber.js" { 4 | interface BigNumber { 5 | toBigInt: (this: BigNumber) => bigint; 6 | toHex: (this: BigNumber) => `0x${string}`; 7 | } 8 | } 9 | 10 | export type BigNumberValue = BigNumber.Value | bigint; 11 | 12 | BigNumber.config({ EXPONENTIAL_AT: [-8, 30] }); 13 | 14 | const applyFunction: Pick = { 15 | toBigInt() { 16 | return BigInt(this.toString()); 17 | }, 18 | toHex() { 19 | let hex = this.dp(0).toString(16); 20 | if (hex === `0`) return `0x`; 21 | return `0x${hex}`; 22 | }, 23 | }; 24 | 25 | Object.assign(BigNumber.prototype, applyFunction); 26 | 27 | export const bnUtils = { 28 | wrap: (tar: BigNumberValue) => { 29 | return new BigNumber(typeof tar === "bigint" ? tar.toString() : tar); 30 | }, 31 | toWei: (tar: BigNumberValue, decimals: BigNumberValue) => { 32 | return bnUtils.wrap(tar).times(new BigNumber(10).pow(bnUtils.wrap(decimals))); 33 | }, 34 | fromWei: (tar: BigNumberValue, decimals: BigNumberValue) => { 35 | return bnUtils.wrap(tar).div(new BigNumber(10).pow(bnUtils.wrap(decimals))); 36 | }, 37 | }; 38 | -------------------------------------------------------------------------------- /src/utils/hex.ts: -------------------------------------------------------------------------------- 1 | function uint8ToHex(uint8arr: Uint8Array) { 2 | let hexStr = ""; 3 | for (let i = 0; i < uint8arr.length; i++) { 4 | let hex = uint8arr[i].toString(16); 5 | hex = hex.length === 1 ? "0" + hex : hex; 6 | hexStr += hex; 7 | } 8 | return ("0x" + hexStr) as `0x${string}`; 9 | } 10 | 11 | export function stringToHex(str: string) { 12 | let encoder = new TextEncoder(); 13 | let view = encoder.encode(str); 14 | return uint8ToHex(view); 15 | } 16 | 17 | export function hexToString(hex: string) { 18 | return Buffer.from(hex, "hex").toString(); 19 | } 20 | 21 | export function hexToUtf8(hex: string): string { 22 | if (hex.startsWith("0x")) { 23 | hex = hex.substring(2); 24 | } 25 | 26 | let str = ""; 27 | 28 | for (let i = 0; i < hex.length; i += 2) { 29 | const byte = parseInt(hex.substr(i, 2), 16); 30 | str += String.fromCharCode(byte); 31 | } 32 | 33 | return decodeURIComponent(escape(str)); 34 | } 35 | 36 | export function isAddressEqual(addr1: string, addr2: string) { 37 | return String(addr1).toLowerCase() === String(addr2).toLowerCase(); 38 | } 39 | 40 | export const isHash = (hash: any) => { 41 | return /^0x[a-fA-F0-9]{64}$/.test(String(hash)); 42 | }; 43 | -------------------------------------------------------------------------------- /src/utils/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./bn"; 2 | export * from "./hex"; 3 | export * from "./log4js"; 4 | export * from "./program"; 5 | export * from "./prompts"; 6 | export * from "./tools"; 7 | -------------------------------------------------------------------------------- /src/utils/log4js.ts: -------------------------------------------------------------------------------- 1 | import log4js from 'log4js'; 2 | 3 | log4js.configure({ 4 | appenders: { 5 | console: { 6 | type: 'console', 7 | layout: { 8 | type: 'pattern', 9 | pattern: `%r - %[[%p]%] %m` 10 | } 11 | }, 12 | brightConsole: { 13 | type: 'console', 14 | layout: { 15 | type: 'pattern', 16 | pattern: `%[%r - [%p] %m%]` 17 | } 18 | }, 19 | log: { 20 | type: 'dateFile', 21 | filename: 'logs/date.log', 22 | pattern: 'yyyy-MM-dd', 23 | keepFileExt: true, 24 | alwaysIncludePattern: true, 25 | layout: { 26 | type: 'pattern', 27 | pattern: `%h %d{ISO8601} - [%p] %m` 28 | } 29 | } 30 | }, 31 | categories: { 32 | default: { appenders: ["console"], level: "trace" }, 33 | brightPrint: { appenders: ["brightConsole"], level: "trace" }, 34 | log: { appenders: ["console", "log"], level: "trace" }, 35 | brightLog: { appenders: ["brightConsole", "log"], level: "trace" }, 36 | }, 37 | }); 38 | 39 | export const printer = log4js.getLogger('brightPrint'); 40 | export const logger = log4js.getLogger('log'); -------------------------------------------------------------------------------- /src/utils/program.ts: -------------------------------------------------------------------------------- 1 | export const sleep = async (time: number) => { 2 | return new Promise((resovle) => { 3 | setTimeout(() => { 4 | resovle(null) 5 | }, time) 6 | }) 7 | } -------------------------------------------------------------------------------- /src/utils/prompts.ts: -------------------------------------------------------------------------------- 1 | export const sayMinerLog = () => { 2 | console.log(` 3 | ╭━━┳━━━┳━━━┳━━━╮╱╱╭━╮╭━╮ | IERC-Miner >>> Introduce 4 | ╰┫┣┫╭━━┫╭━╮┃╭━╮┃╱╱┃┃╰╯┃┃ | 5 | ╱┃┃┃╰━━┫╰━╯┃┃╱╰╯╱╱┃╭╮╭╮┣┳━╮╭━━┳━╮ | * Etherrum POW mining inscriptions 6 | ╱┃┃┃╭━━┫╭╮╭┫┃╱╭┳━━┫┃┃┃┃┣┫╭╮┫┃━┫╭╯ | * Fairer launches with no set-asides 7 | ╭┫┣┫╰━━┫┃┃╰┫╰━╯┣━━┫┃┃┃┃┃┃┃┃┃┃━┫┃ | * github code repository open source 8 | ╰━━┻━━━┻╯╰━┻━━━╯╱╱╰╯╰╯╰┻┻╯╰┻━━┻╯ | * Free trade at https://ierc20.com 9 | `); 10 | }; 11 | -------------------------------------------------------------------------------- /src/utils/tools.ts: -------------------------------------------------------------------------------- 1 | let lastNonce = 0; 2 | let lastTimestamp = Date.now(); 3 | export function generateNonce() { 4 | const currentTimestamp = Date.now(); 5 | if (currentTimestamp !== lastTimestamp) { 6 | lastNonce = 0; 7 | lastTimestamp = currentTimestamp; 8 | } 9 | return `${currentTimestamp}${lastNonce++}`; 10 | } 11 | -------------------------------------------------------------------------------- /tokens.json: -------------------------------------------------------------------------------- 1 | { 2 | "ierc-m4": { 3 | "workc": "0x0000", 4 | "amt": "1000" 5 | }, 6 | "ierc-m5": { 7 | "workc": "0x00000", 8 | "amt": "1000" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2018", 4 | "module": "NodeNext", 5 | "lib": ["esnext"], 6 | "moduleResolution": "NodeNext", 7 | "esModuleInterop": true, 8 | "strict": true, 9 | "strictNullChecks": true, 10 | "resolveJsonModule": true, 11 | "skipLibCheck": true 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@cspotcode/source-map-support@^0.8.0": 6 | version "0.8.1" 7 | resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" 8 | integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== 9 | dependencies: 10 | "@jridgewell/trace-mapping" "0.3.9" 11 | 12 | "@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.7.0": 13 | version "5.7.0" 14 | resolved "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" 15 | integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== 16 | dependencies: 17 | "@ethersproject/address" "^5.7.0" 18 | "@ethersproject/bignumber" "^5.7.0" 19 | "@ethersproject/bytes" "^5.7.0" 20 | "@ethersproject/constants" "^5.7.0" 21 | "@ethersproject/hash" "^5.7.0" 22 | "@ethersproject/keccak256" "^5.7.0" 23 | "@ethersproject/logger" "^5.7.0" 24 | "@ethersproject/properties" "^5.7.0" 25 | "@ethersproject/strings" "^5.7.0" 26 | 27 | "@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": 28 | version "5.7.0" 29 | resolved "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" 30 | integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== 31 | dependencies: 32 | "@ethersproject/bignumber" "^5.7.0" 33 | "@ethersproject/bytes" "^5.7.0" 34 | "@ethersproject/logger" "^5.7.0" 35 | "@ethersproject/networks" "^5.7.0" 36 | "@ethersproject/properties" "^5.7.0" 37 | "@ethersproject/transactions" "^5.7.0" 38 | "@ethersproject/web" "^5.7.0" 39 | 40 | "@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": 41 | version "5.7.0" 42 | resolved "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" 43 | integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== 44 | dependencies: 45 | "@ethersproject/abstract-provider" "^5.7.0" 46 | "@ethersproject/bignumber" "^5.7.0" 47 | "@ethersproject/bytes" "^5.7.0" 48 | "@ethersproject/logger" "^5.7.0" 49 | "@ethersproject/properties" "^5.7.0" 50 | 51 | "@ethersproject/address@5.7.0", "@ethersproject/address@^5.7.0": 52 | version "5.7.0" 53 | resolved "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" 54 | integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== 55 | dependencies: 56 | "@ethersproject/bignumber" "^5.7.0" 57 | "@ethersproject/bytes" "^5.7.0" 58 | "@ethersproject/keccak256" "^5.7.0" 59 | "@ethersproject/logger" "^5.7.0" 60 | "@ethersproject/rlp" "^5.7.0" 61 | 62 | "@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": 63 | version "5.7.0" 64 | resolved "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" 65 | integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== 66 | dependencies: 67 | "@ethersproject/bytes" "^5.7.0" 68 | 69 | "@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": 70 | version "5.7.0" 71 | resolved "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" 72 | integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== 73 | dependencies: 74 | "@ethersproject/bytes" "^5.7.0" 75 | "@ethersproject/properties" "^5.7.0" 76 | 77 | "@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": 78 | version "5.7.0" 79 | resolved "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" 80 | integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== 81 | dependencies: 82 | "@ethersproject/bytes" "^5.7.0" 83 | "@ethersproject/logger" "^5.7.0" 84 | bn.js "^5.2.1" 85 | 86 | "@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": 87 | version "5.7.0" 88 | resolved "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" 89 | integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== 90 | dependencies: 91 | "@ethersproject/logger" "^5.7.0" 92 | 93 | "@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": 94 | version "5.7.0" 95 | resolved "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" 96 | integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== 97 | dependencies: 98 | "@ethersproject/bignumber" "^5.7.0" 99 | 100 | "@ethersproject/contracts@5.7.0": 101 | version "5.7.0" 102 | resolved "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" 103 | integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== 104 | dependencies: 105 | "@ethersproject/abi" "^5.7.0" 106 | "@ethersproject/abstract-provider" "^5.7.0" 107 | "@ethersproject/abstract-signer" "^5.7.0" 108 | "@ethersproject/address" "^5.7.0" 109 | "@ethersproject/bignumber" "^5.7.0" 110 | "@ethersproject/bytes" "^5.7.0" 111 | "@ethersproject/constants" "^5.7.0" 112 | "@ethersproject/logger" "^5.7.0" 113 | "@ethersproject/properties" "^5.7.0" 114 | "@ethersproject/transactions" "^5.7.0" 115 | 116 | "@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": 117 | version "5.7.0" 118 | resolved "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" 119 | integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== 120 | dependencies: 121 | "@ethersproject/abstract-signer" "^5.7.0" 122 | "@ethersproject/address" "^5.7.0" 123 | "@ethersproject/base64" "^5.7.0" 124 | "@ethersproject/bignumber" "^5.7.0" 125 | "@ethersproject/bytes" "^5.7.0" 126 | "@ethersproject/keccak256" "^5.7.0" 127 | "@ethersproject/logger" "^5.7.0" 128 | "@ethersproject/properties" "^5.7.0" 129 | "@ethersproject/strings" "^5.7.0" 130 | 131 | "@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": 132 | version "5.7.0" 133 | resolved "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" 134 | integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== 135 | dependencies: 136 | "@ethersproject/abstract-signer" "^5.7.0" 137 | "@ethersproject/basex" "^5.7.0" 138 | "@ethersproject/bignumber" "^5.7.0" 139 | "@ethersproject/bytes" "^5.7.0" 140 | "@ethersproject/logger" "^5.7.0" 141 | "@ethersproject/pbkdf2" "^5.7.0" 142 | "@ethersproject/properties" "^5.7.0" 143 | "@ethersproject/sha2" "^5.7.0" 144 | "@ethersproject/signing-key" "^5.7.0" 145 | "@ethersproject/strings" "^5.7.0" 146 | "@ethersproject/transactions" "^5.7.0" 147 | "@ethersproject/wordlists" "^5.7.0" 148 | 149 | "@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": 150 | version "5.7.0" 151 | resolved "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" 152 | integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== 153 | dependencies: 154 | "@ethersproject/abstract-signer" "^5.7.0" 155 | "@ethersproject/address" "^5.7.0" 156 | "@ethersproject/bytes" "^5.7.0" 157 | "@ethersproject/hdnode" "^5.7.0" 158 | "@ethersproject/keccak256" "^5.7.0" 159 | "@ethersproject/logger" "^5.7.0" 160 | "@ethersproject/pbkdf2" "^5.7.0" 161 | "@ethersproject/properties" "^5.7.0" 162 | "@ethersproject/random" "^5.7.0" 163 | "@ethersproject/strings" "^5.7.0" 164 | "@ethersproject/transactions" "^5.7.0" 165 | aes-js "3.0.0" 166 | scrypt-js "3.0.1" 167 | 168 | "@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": 169 | version "5.7.0" 170 | resolved "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" 171 | integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== 172 | dependencies: 173 | "@ethersproject/bytes" "^5.7.0" 174 | js-sha3 "0.8.0" 175 | 176 | "@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": 177 | version "5.7.0" 178 | resolved "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" 179 | integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== 180 | 181 | "@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": 182 | version "5.7.1" 183 | resolved "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" 184 | integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== 185 | dependencies: 186 | "@ethersproject/logger" "^5.7.0" 187 | 188 | "@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": 189 | version "5.7.0" 190 | resolved "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" 191 | integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== 192 | dependencies: 193 | "@ethersproject/bytes" "^5.7.0" 194 | "@ethersproject/sha2" "^5.7.0" 195 | 196 | "@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": 197 | version "5.7.0" 198 | resolved "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" 199 | integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== 200 | dependencies: 201 | "@ethersproject/logger" "^5.7.0" 202 | 203 | "@ethersproject/providers@5.7.2": 204 | version "5.7.2" 205 | resolved "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" 206 | integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== 207 | dependencies: 208 | "@ethersproject/abstract-provider" "^5.7.0" 209 | "@ethersproject/abstract-signer" "^5.7.0" 210 | "@ethersproject/address" "^5.7.0" 211 | "@ethersproject/base64" "^5.7.0" 212 | "@ethersproject/basex" "^5.7.0" 213 | "@ethersproject/bignumber" "^5.7.0" 214 | "@ethersproject/bytes" "^5.7.0" 215 | "@ethersproject/constants" "^5.7.0" 216 | "@ethersproject/hash" "^5.7.0" 217 | "@ethersproject/logger" "^5.7.0" 218 | "@ethersproject/networks" "^5.7.0" 219 | "@ethersproject/properties" "^5.7.0" 220 | "@ethersproject/random" "^5.7.0" 221 | "@ethersproject/rlp" "^5.7.0" 222 | "@ethersproject/sha2" "^5.7.0" 223 | "@ethersproject/strings" "^5.7.0" 224 | "@ethersproject/transactions" "^5.7.0" 225 | "@ethersproject/web" "^5.7.0" 226 | bech32 "1.1.4" 227 | ws "7.4.6" 228 | 229 | "@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": 230 | version "5.7.0" 231 | resolved "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" 232 | integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== 233 | dependencies: 234 | "@ethersproject/bytes" "^5.7.0" 235 | "@ethersproject/logger" "^5.7.0" 236 | 237 | "@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": 238 | version "5.7.0" 239 | resolved "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" 240 | integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== 241 | dependencies: 242 | "@ethersproject/bytes" "^5.7.0" 243 | "@ethersproject/logger" "^5.7.0" 244 | 245 | "@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": 246 | version "5.7.0" 247 | resolved "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" 248 | integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== 249 | dependencies: 250 | "@ethersproject/bytes" "^5.7.0" 251 | "@ethersproject/logger" "^5.7.0" 252 | hash.js "1.1.7" 253 | 254 | "@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": 255 | version "5.7.0" 256 | resolved "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" 257 | integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== 258 | dependencies: 259 | "@ethersproject/bytes" "^5.7.0" 260 | "@ethersproject/logger" "^5.7.0" 261 | "@ethersproject/properties" "^5.7.0" 262 | bn.js "^5.2.1" 263 | elliptic "6.5.4" 264 | hash.js "1.1.7" 265 | 266 | "@ethersproject/solidity@5.7.0": 267 | version "5.7.0" 268 | resolved "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" 269 | integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== 270 | dependencies: 271 | "@ethersproject/bignumber" "^5.7.0" 272 | "@ethersproject/bytes" "^5.7.0" 273 | "@ethersproject/keccak256" "^5.7.0" 274 | "@ethersproject/logger" "^5.7.0" 275 | "@ethersproject/sha2" "^5.7.0" 276 | "@ethersproject/strings" "^5.7.0" 277 | 278 | "@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": 279 | version "5.7.0" 280 | resolved "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" 281 | integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== 282 | dependencies: 283 | "@ethersproject/bytes" "^5.7.0" 284 | "@ethersproject/constants" "^5.7.0" 285 | "@ethersproject/logger" "^5.7.0" 286 | 287 | "@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.7.0": 288 | version "5.7.0" 289 | resolved "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" 290 | integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== 291 | dependencies: 292 | "@ethersproject/address" "^5.7.0" 293 | "@ethersproject/bignumber" "^5.7.0" 294 | "@ethersproject/bytes" "^5.7.0" 295 | "@ethersproject/constants" "^5.7.0" 296 | "@ethersproject/keccak256" "^5.7.0" 297 | "@ethersproject/logger" "^5.7.0" 298 | "@ethersproject/properties" "^5.7.0" 299 | "@ethersproject/rlp" "^5.7.0" 300 | "@ethersproject/signing-key" "^5.7.0" 301 | 302 | "@ethersproject/units@5.7.0": 303 | version "5.7.0" 304 | resolved "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" 305 | integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== 306 | dependencies: 307 | "@ethersproject/bignumber" "^5.7.0" 308 | "@ethersproject/constants" "^5.7.0" 309 | "@ethersproject/logger" "^5.7.0" 310 | 311 | "@ethersproject/wallet@5.7.0": 312 | version "5.7.0" 313 | resolved "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" 314 | integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== 315 | dependencies: 316 | "@ethersproject/abstract-provider" "^5.7.0" 317 | "@ethersproject/abstract-signer" "^5.7.0" 318 | "@ethersproject/address" "^5.7.0" 319 | "@ethersproject/bignumber" "^5.7.0" 320 | "@ethersproject/bytes" "^5.7.0" 321 | "@ethersproject/hash" "^5.7.0" 322 | "@ethersproject/hdnode" "^5.7.0" 323 | "@ethersproject/json-wallets" "^5.7.0" 324 | "@ethersproject/keccak256" "^5.7.0" 325 | "@ethersproject/logger" "^5.7.0" 326 | "@ethersproject/properties" "^5.7.0" 327 | "@ethersproject/random" "^5.7.0" 328 | "@ethersproject/signing-key" "^5.7.0" 329 | "@ethersproject/transactions" "^5.7.0" 330 | "@ethersproject/wordlists" "^5.7.0" 331 | 332 | "@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": 333 | version "5.7.1" 334 | resolved "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" 335 | integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== 336 | dependencies: 337 | "@ethersproject/base64" "^5.7.0" 338 | "@ethersproject/bytes" "^5.7.0" 339 | "@ethersproject/logger" "^5.7.0" 340 | "@ethersproject/properties" "^5.7.0" 341 | "@ethersproject/strings" "^5.7.0" 342 | 343 | "@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": 344 | version "5.7.0" 345 | resolved "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" 346 | integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== 347 | dependencies: 348 | "@ethersproject/bytes" "^5.7.0" 349 | "@ethersproject/hash" "^5.7.0" 350 | "@ethersproject/logger" "^5.7.0" 351 | "@ethersproject/properties" "^5.7.0" 352 | "@ethersproject/strings" "^5.7.0" 353 | 354 | "@jridgewell/resolve-uri@^3.0.3": 355 | version "3.1.1" 356 | resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" 357 | integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== 358 | 359 | "@jridgewell/sourcemap-codec@^1.4.10": 360 | version "1.4.15" 361 | resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" 362 | integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== 363 | 364 | "@jridgewell/trace-mapping@0.3.9": 365 | version "0.3.9" 366 | resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" 367 | integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== 368 | dependencies: 369 | "@jridgewell/resolve-uri" "^3.0.3" 370 | "@jridgewell/sourcemap-codec" "^1.4.10" 371 | 372 | "@tsconfig/node10@^1.0.7": 373 | version "1.0.9" 374 | resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" 375 | integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== 376 | 377 | "@tsconfig/node12@^1.0.7": 378 | version "1.0.11" 379 | resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" 380 | integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== 381 | 382 | "@tsconfig/node14@^1.0.0": 383 | version "1.0.3" 384 | resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" 385 | integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== 386 | 387 | "@tsconfig/node16@^1.0.2": 388 | version "1.0.4" 389 | resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" 390 | integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== 391 | 392 | "@types/node@^20.6.5": 393 | version "20.9.4" 394 | resolved "https://registry.npmjs.org/@types/node/-/node-20.9.4.tgz#cc8f970e869c26834bdb7ed480b30ede622d74c7" 395 | integrity sha512-wmyg8HUhcn6ACjsn8oKYjkN/zUzQeNtMy44weTJSM6p4MMzEOuKbA3OjJ267uPCOW7Xex9dyrNTful8XTQYoDA== 396 | dependencies: 397 | undici-types "~5.26.4" 398 | 399 | "@types/spinnies@^0.5.1": 400 | version "0.5.3" 401 | resolved "https://registry.npmjs.org/@types/spinnies/-/spinnies-0.5.3.tgz#53530f0e7cfacc46f7992b3155a5440e5301d0ac" 402 | integrity sha512-HYrOubG2TVgRQRKcW1HJ/1eJIIBpLqDoJo551McJgWdO8xzxnaxu/bPKdqC/7okoEy4ZZjy3I4/DwK1sz2OCog== 403 | 404 | acorn-walk@^8.1.1: 405 | version "8.3.0" 406 | resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.0.tgz#2097665af50fd0cf7a2dfccd2b9368964e66540f" 407 | integrity sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA== 408 | 409 | acorn@^8.4.1: 410 | version "8.11.2" 411 | resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" 412 | integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== 413 | 414 | aes-js@3.0.0: 415 | version "3.0.0" 416 | resolved "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" 417 | integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== 418 | 419 | ansi-regex@^4.1.0: 420 | version "4.1.1" 421 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" 422 | integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== 423 | 424 | ansi-styles@^3.2.1: 425 | version "3.2.1" 426 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 427 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 428 | dependencies: 429 | color-convert "^1.9.0" 430 | 431 | arg@^4.1.0: 432 | version "4.1.3" 433 | resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" 434 | integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== 435 | 436 | asynckit@^0.4.0: 437 | version "0.4.0" 438 | resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 439 | integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== 440 | 441 | axios@^1.6.2: 442 | version "1.6.2" 443 | resolved "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz#de67d42c755b571d3e698df1b6504cde9b0ee9f2" 444 | integrity sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A== 445 | dependencies: 446 | follow-redirects "^1.15.0" 447 | form-data "^4.0.0" 448 | proxy-from-env "^1.1.0" 449 | 450 | bech32@1.1.4: 451 | version "1.1.4" 452 | resolved "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" 453 | integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== 454 | 455 | bignumber.js@^9.1.2: 456 | version "9.1.2" 457 | resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" 458 | integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== 459 | 460 | bn.js@^4.11.9: 461 | version "4.12.0" 462 | resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" 463 | integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== 464 | 465 | bn.js@^5.2.1: 466 | version "5.2.1" 467 | resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" 468 | integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== 469 | 470 | brorand@^1.1.0: 471 | version "1.1.0" 472 | resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" 473 | integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== 474 | 475 | chalk@^2.4.2: 476 | version "2.4.2" 477 | resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 478 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 479 | dependencies: 480 | ansi-styles "^3.2.1" 481 | escape-string-regexp "^1.0.5" 482 | supports-color "^5.3.0" 483 | 484 | cli-cursor@^3.0.0: 485 | version "3.1.0" 486 | resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" 487 | integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== 488 | dependencies: 489 | restore-cursor "^3.1.0" 490 | 491 | color-convert@^1.9.0: 492 | version "1.9.3" 493 | resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 494 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 495 | dependencies: 496 | color-name "1.1.3" 497 | 498 | color-name@1.1.3: 499 | version "1.1.3" 500 | resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 501 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== 502 | 503 | combined-stream@^1.0.8: 504 | version "1.0.8" 505 | resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 506 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 507 | dependencies: 508 | delayed-stream "~1.0.0" 509 | 510 | commander@^11.0.0: 511 | version "11.1.0" 512 | resolved "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz#62fdce76006a68e5c1ab3314dc92e800eb83d906" 513 | integrity sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ== 514 | 515 | create-require@^1.1.0: 516 | version "1.1.1" 517 | resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" 518 | integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== 519 | 520 | date-format@^4.0.14: 521 | version "4.0.14" 522 | resolved "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz#7a8e584434fb169a521c8b7aa481f355810d9400" 523 | integrity sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg== 524 | 525 | dayjs@^1.11.10: 526 | version "1.11.10" 527 | resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" 528 | integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== 529 | 530 | debug@^4.3.4: 531 | version "4.3.4" 532 | resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 533 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 534 | dependencies: 535 | ms "2.1.2" 536 | 537 | delayed-stream@~1.0.0: 538 | version "1.0.0" 539 | resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 540 | integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== 541 | 542 | diff@^4.0.1: 543 | version "4.0.2" 544 | resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" 545 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 546 | 547 | dotenv@^16.3.1: 548 | version "16.3.1" 549 | resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" 550 | integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== 551 | 552 | elliptic@6.5.4: 553 | version "6.5.4" 554 | resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" 555 | integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== 556 | dependencies: 557 | bn.js "^4.11.9" 558 | brorand "^1.1.0" 559 | hash.js "^1.0.0" 560 | hmac-drbg "^1.0.1" 561 | inherits "^2.0.4" 562 | minimalistic-assert "^1.0.1" 563 | minimalistic-crypto-utils "^1.0.1" 564 | 565 | escape-string-regexp@^1.0.5: 566 | version "1.0.5" 567 | resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 568 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== 569 | 570 | ethers@5: 571 | version "5.7.2" 572 | resolved "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" 573 | integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== 574 | dependencies: 575 | "@ethersproject/abi" "5.7.0" 576 | "@ethersproject/abstract-provider" "5.7.0" 577 | "@ethersproject/abstract-signer" "5.7.0" 578 | "@ethersproject/address" "5.7.0" 579 | "@ethersproject/base64" "5.7.0" 580 | "@ethersproject/basex" "5.7.0" 581 | "@ethersproject/bignumber" "5.7.0" 582 | "@ethersproject/bytes" "5.7.0" 583 | "@ethersproject/constants" "5.7.0" 584 | "@ethersproject/contracts" "5.7.0" 585 | "@ethersproject/hash" "5.7.0" 586 | "@ethersproject/hdnode" "5.7.0" 587 | "@ethersproject/json-wallets" "5.7.0" 588 | "@ethersproject/keccak256" "5.7.0" 589 | "@ethersproject/logger" "5.7.0" 590 | "@ethersproject/networks" "5.7.1" 591 | "@ethersproject/pbkdf2" "5.7.0" 592 | "@ethersproject/properties" "5.7.0" 593 | "@ethersproject/providers" "5.7.2" 594 | "@ethersproject/random" "5.7.0" 595 | "@ethersproject/rlp" "5.7.0" 596 | "@ethersproject/sha2" "5.7.0" 597 | "@ethersproject/signing-key" "5.7.0" 598 | "@ethersproject/solidity" "5.7.0" 599 | "@ethersproject/strings" "5.7.0" 600 | "@ethersproject/transactions" "5.7.0" 601 | "@ethersproject/units" "5.7.0" 602 | "@ethersproject/wallet" "5.7.0" 603 | "@ethersproject/web" "5.7.1" 604 | "@ethersproject/wordlists" "5.7.0" 605 | 606 | flatted@^3.2.7: 607 | version "3.2.9" 608 | resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" 609 | integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== 610 | 611 | follow-redirects@^1.15.0: 612 | version "1.15.3" 613 | resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a" 614 | integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== 615 | 616 | form-data@^4.0.0: 617 | version "4.0.0" 618 | resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" 619 | integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== 620 | dependencies: 621 | asynckit "^0.4.0" 622 | combined-stream "^1.0.8" 623 | mime-types "^2.1.12" 624 | 625 | fs-extra@^8.1.0: 626 | version "8.1.0" 627 | resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" 628 | integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== 629 | dependencies: 630 | graceful-fs "^4.2.0" 631 | jsonfile "^4.0.0" 632 | universalify "^0.1.0" 633 | 634 | graceful-fs@^4.1.6, graceful-fs@^4.2.0: 635 | version "4.2.11" 636 | resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" 637 | integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== 638 | 639 | has-flag@^3.0.0: 640 | version "3.0.0" 641 | resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 642 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== 643 | 644 | hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: 645 | version "1.1.7" 646 | resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" 647 | integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== 648 | dependencies: 649 | inherits "^2.0.3" 650 | minimalistic-assert "^1.0.1" 651 | 652 | hmac-drbg@^1.0.1: 653 | version "1.0.1" 654 | resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" 655 | integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== 656 | dependencies: 657 | hash.js "^1.0.3" 658 | minimalistic-assert "^1.0.0" 659 | minimalistic-crypto-utils "^1.0.1" 660 | 661 | inherits@^2.0.3, inherits@^2.0.4: 662 | version "2.0.4" 663 | resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 664 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 665 | 666 | js-sha3@0.8.0: 667 | version "0.8.0" 668 | resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" 669 | integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== 670 | 671 | jsonfile@^4.0.0: 672 | version "4.0.0" 673 | resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" 674 | integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== 675 | optionalDependencies: 676 | graceful-fs "^4.1.6" 677 | 678 | log4js@^6.9.1: 679 | version "6.9.1" 680 | resolved "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz#aba5a3ff4e7872ae34f8b4c533706753709e38b6" 681 | integrity sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g== 682 | dependencies: 683 | date-format "^4.0.14" 684 | debug "^4.3.4" 685 | flatted "^3.2.7" 686 | rfdc "^1.3.0" 687 | streamroller "^3.1.5" 688 | 689 | make-error@^1.1.1: 690 | version "1.3.6" 691 | resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" 692 | integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== 693 | 694 | mime-db@1.52.0: 695 | version "1.52.0" 696 | resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 697 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 698 | 699 | mime-types@^2.1.12: 700 | version "2.1.35" 701 | resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 702 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 703 | dependencies: 704 | mime-db "1.52.0" 705 | 706 | mimic-fn@^2.1.0: 707 | version "2.1.0" 708 | resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 709 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 710 | 711 | minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: 712 | version "1.0.1" 713 | resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" 714 | integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== 715 | 716 | minimalistic-crypto-utils@^1.0.1: 717 | version "1.0.1" 718 | resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" 719 | integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== 720 | 721 | ms@2.1.2: 722 | version "2.1.2" 723 | resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 724 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 725 | 726 | node-json-db@^2.2.0: 727 | version "2.3.0" 728 | resolved "https://registry.npmjs.org/node-json-db/-/node-json-db-2.3.0.tgz#cec666e7b3b4e2a3e33c60962def0fe3ff1f3027" 729 | integrity sha512-B8T+w4q6zXZ20YcfQINLSjMGgImRKzkvR0ShYYoNRdLxtMhVvbzaMBzNdEaRcCjilW/lKS+g9CwVXNoK5uTncw== 730 | dependencies: 731 | rwlock "^5.0.0" 732 | 733 | onetime@^5.1.0: 734 | version "5.1.2" 735 | resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" 736 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 737 | dependencies: 738 | mimic-fn "^2.1.0" 739 | 740 | proxy-from-env@^1.1.0: 741 | version "1.1.0" 742 | resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" 743 | integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== 744 | 745 | restore-cursor@^3.1.0: 746 | version "3.1.0" 747 | resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" 748 | integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== 749 | dependencies: 750 | onetime "^5.1.0" 751 | signal-exit "^3.0.2" 752 | 753 | rfdc@^1.3.0: 754 | version "1.3.0" 755 | resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" 756 | integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== 757 | 758 | rwlock@^5.0.0: 759 | version "5.0.0" 760 | resolved "https://registry.npmjs.org/rwlock/-/rwlock-5.0.0.tgz#888d6a77a3351cc1a209204ef2ee1722093836cf" 761 | integrity sha512-XgzRqLMfCcm9QfZuPav9cV3Xin5TRcIlp4X/SH3CvB+x5D2AakdlEepfJKDd8ByncvfpcxNWdRZVUl38PS6ZJg== 762 | 763 | scrypt-js@3.0.1: 764 | version "3.0.1" 765 | resolved "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" 766 | integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== 767 | 768 | signal-exit@^3.0.2: 769 | version "3.0.7" 770 | resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" 771 | integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== 772 | 773 | spinnies@^0.5.1: 774 | version "0.5.1" 775 | resolved "https://registry.npmjs.org/spinnies/-/spinnies-0.5.1.tgz#6ac88455d9117c7712d52898a02c969811819a7e" 776 | integrity sha512-WpjSXv9NQz0nU3yCT9TFEOfpFrXADY9C5fG6eAJqixLhvTX1jP3w92Y8IE5oafIe42nlF9otjhllnXN/QCaB3A== 777 | dependencies: 778 | chalk "^2.4.2" 779 | cli-cursor "^3.0.0" 780 | strip-ansi "^5.2.0" 781 | 782 | streamroller@^3.1.5: 783 | version "3.1.5" 784 | resolved "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz#1263182329a45def1ffaef58d31b15d13d2ee7ff" 785 | integrity sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw== 786 | dependencies: 787 | date-format "^4.0.14" 788 | debug "^4.3.4" 789 | fs-extra "^8.1.0" 790 | 791 | strip-ansi@^5.2.0: 792 | version "5.2.0" 793 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 794 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 795 | dependencies: 796 | ansi-regex "^4.1.0" 797 | 798 | supports-color@^5.3.0: 799 | version "5.5.0" 800 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 801 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 802 | dependencies: 803 | has-flag "^3.0.0" 804 | 805 | ts-node@^10.9.1: 806 | version "10.9.1" 807 | resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" 808 | integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== 809 | dependencies: 810 | "@cspotcode/source-map-support" "^0.8.0" 811 | "@tsconfig/node10" "^1.0.7" 812 | "@tsconfig/node12" "^1.0.7" 813 | "@tsconfig/node14" "^1.0.0" 814 | "@tsconfig/node16" "^1.0.2" 815 | acorn "^8.4.1" 816 | acorn-walk "^8.1.1" 817 | arg "^4.1.0" 818 | create-require "^1.1.0" 819 | diff "^4.0.1" 820 | make-error "^1.1.1" 821 | v8-compile-cache-lib "^3.0.1" 822 | yn "3.1.1" 823 | 824 | typescript@^5.2.2: 825 | version "5.3.2" 826 | resolved "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz#00d1c7c1c46928c5845c1ee8d0cc2791031d4c43" 827 | integrity sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ== 828 | 829 | undici-types@~5.26.4: 830 | version "5.26.5" 831 | resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" 832 | integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== 833 | 834 | universalify@^0.1.0: 835 | version "0.1.2" 836 | resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 837 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== 838 | 839 | v8-compile-cache-lib@^3.0.1: 840 | version "3.0.1" 841 | resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" 842 | integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== 843 | 844 | ws@7.4.6: 845 | version "7.4.6" 846 | resolved "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" 847 | integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== 848 | 849 | yn@3.1.1: 850 | version "3.1.1" 851 | resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" 852 | integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== 853 | --------------------------------------------------------------------------------