├── .gitignore ├── README.md ├── package.json ├── src ├── @types │ └── bitcore.d.ts ├── address.ts ├── bitcoin-client │ └── index.ts ├── bvm-client │ └── index.ts ├── db.ts ├── index.ts ├── progress.ts ├── updater │ └── index.ts ├── utils.ts └── verifier.ts ├── tsconfig.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | dist/ 3 | .DS_Store 4 | .env -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Veda-core 2 | 3 | Use `ts-node` to run veda-core. `ts-node src/index.ts` -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "veda", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "dependencies": { 7 | "@stacks/common": "^6.8.1", 8 | "@stacks/encryption": "^6.9.0", 9 | "@stacks/transactions": "^6.9.0", 10 | "@types/node": "^20.6.2", 11 | "@types/progress": "^2.0.6", 12 | "axios": "^1.5.0", 13 | "bip32": "^4.0.0", 14 | "bip322-js": "^1.1.0", 15 | "bitcoinjs-lib": "^6.1.5", 16 | "bitcoinjs-message": "^2.2.0", 17 | "bitcore-lib": "^10.0.11", 18 | "dotenv": "^16.3.1", 19 | "ecpair": "^2.1.0", 20 | "ethereumjs-util": "^7.1.5", 21 | "level": "^8.0.0", 22 | "progress": "^2.0.3", 23 | "rlp": "^3.0.0", 24 | "tiny-secp256k1": "^2.2.3", 25 | "typescript": "^5.2.2", 26 | "varuint-bitcoin": "^1.1.2", 27 | "web3": "^4.1.2" 28 | }, 29 | "scripts": { 30 | "build": "rollup -c --bundleConfigAsCjs" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/@types/bitcore.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'bitcore-lib' { 2 | export namespace crypto { 3 | class BN { } 4 | 5 | class ECDSA { 6 | constructor() 7 | 8 | hashbuf: Buffer 9 | sig: Signature 10 | 11 | static sign(message: Buffer, key: PrivateKey): Signature 12 | static verify(hashbuf: Buffer, sig: Signature, pubkey: PublicKey, endian?: "little"): boolean 13 | 14 | sign(): Signature 15 | verify(): boolean 16 | toPublicKey(): PublicKey 17 | } 18 | 19 | namespace Hash { 20 | function sha1(buffer: Buffer): Buffer 21 | function sha256(buffer: Buffer): Buffer 22 | function sha256sha256(buffer: Buffer): Buffer 23 | function sha256ripemd160(buffer: Buffer): Buffer 24 | function sha512(buffer: Buffer): Buffer 25 | function ripemd160(buffer: Buffer): Buffer 26 | 27 | function sha256hmac(data: Buffer, key: Buffer): Buffer 28 | function sha512hmac(data: Buffer, key: Buffer): Buffer 29 | } 30 | 31 | namespace Random { 32 | function getRandomBuffer(size: number): Buffer 33 | } 34 | 35 | namespace Point { } 36 | 37 | class Signature { 38 | static fromDER(sig: Buffer): Signature 39 | static fromCompact(sig: Buffer): Signature 40 | static fromString(data: string): Signature 41 | SIGHASH_ALL: number 42 | toString(): string 43 | } 44 | } 45 | 46 | export namespace Transaction { 47 | class UnspentOutput { 48 | static fromObject(o: object): UnspentOutput 49 | 50 | readonly address: Address 51 | readonly txId: string 52 | readonly outputIndex: number 53 | readonly script: Script 54 | readonly satoshis: number 55 | 56 | constructor(data: object) 57 | 58 | inspect(): string 59 | toObject(): this 60 | toString(): string 61 | } 62 | 63 | class Output { 64 | readonly script: Script 65 | readonly satoshis: number 66 | 67 | constructor(data: object) 68 | 69 | setScript(script: Script | string | Buffer): this 70 | inspect(): string 71 | toObject(): object 72 | } 73 | 74 | class Input { 75 | readonly prevTxId: Buffer 76 | readonly outputIndex: number 77 | readonly sequenceNumber: number 78 | readonly script: Script 79 | readonly output?: Output | undefined 80 | } 81 | } 82 | 83 | export class Transaction { 84 | inputs: Transaction.Input[] 85 | outputs: Transaction.Output[] 86 | readonly id: string 87 | readonly hash: string 88 | nid: string 89 | 90 | constructor(serialized?: any) 91 | 92 | from(utxos: Transaction.UnspentOutput[]): this 93 | to(address: Address[] | Address | string, amount: number): this 94 | change(address: Address | string): this 95 | fee(amount: number): this 96 | feePerKb(amount: number): this 97 | sign(privateKey: PrivateKey | string): this 98 | applySignature(sig: crypto.Signature): this 99 | addInput(input: Transaction.Input): this 100 | addOutput(output: Transaction.Output): this 101 | addData(value: Buffer): this 102 | lockUntilDate(time: Date | number): this 103 | lockUntilBlockHeight(height: number): this 104 | 105 | hasWitnesses(): boolean 106 | getFee(): number 107 | getChangeOutput(): Transaction.Output | null 108 | getLockTime(): Date | number 109 | 110 | verify(): string | boolean 111 | isCoinbase(): boolean 112 | 113 | enableRBF(): this 114 | isRBF(): boolean 115 | 116 | inspect(): string 117 | serialize(): string 118 | } 119 | 120 | export class Block { 121 | hash: string 122 | height: number 123 | transactions: Transaction[] 124 | header: { 125 | time: number 126 | prevHash: string 127 | } 128 | 129 | constructor(data: Buffer | object) 130 | } 131 | 132 | export class PrivateKey { 133 | readonly publicKey: PublicKey 134 | readonly network: Networks.Network 135 | 136 | toAddress(): Address 137 | toPublicKey(): PublicKey 138 | toString(): string 139 | toObject(): object 140 | toJSON(): object 141 | toWIF(): string 142 | 143 | constructor(key?: string, network?: Networks.Network) 144 | } 145 | 146 | export class PublicKey { 147 | constructor(source: any) 148 | 149 | static fromPrivateKey(privateKey: PrivateKey): PublicKey 150 | 151 | toBuffer(): Buffer 152 | toDER(): Buffer 153 | toObject(): { 154 | x: string 155 | y: string 156 | compressed: boolean 157 | } 158 | toString(): String 159 | } 160 | 161 | export class HDPrivateKey { 162 | readonly hdPublicKey: HDPublicKey 163 | 164 | constructor(data?: string | Buffer | object) 165 | 166 | derive(arg: string | number, hardened?: boolean): HDPrivateKey 167 | deriveChild(arg: string | number, hardened?: boolean): HDPrivateKey 168 | deriveNonCompliantChild(arg: string | number, hardened?: boolean): HDPrivateKey 169 | 170 | toString(): string 171 | toObject(): object 172 | toJSON(): object 173 | } 174 | 175 | export class HDPublicKey { 176 | readonly xpubkey: Buffer 177 | readonly network: Networks.Network 178 | readonly depth: number 179 | readonly publicKey: PublicKey 180 | readonly fingerPrint: Buffer 181 | 182 | constructor(arg: string | Buffer | object) 183 | 184 | derive(arg: string | number, hardened?: boolean): HDPublicKey 185 | deriveChild(arg: string | number, hardened?: boolean): HDPublicKey 186 | 187 | toString(): string 188 | } 189 | 190 | export namespace Script { 191 | const types: { 192 | DATA_OUT: string 193 | } 194 | function buildMultisigOut(publicKeys: PublicKey[], threshold: number, opts: object): Script 195 | function buildWitnessMultisigOutFromScript(script: Script): Script 196 | function buildMultisigIn(pubkeys: PublicKey[], threshold: number, signatures: Buffer[], opts: object): Script 197 | function buildP2SHMultisigIn(pubkeys: PublicKey[], threshold: number, signatures: Buffer[], opts: object): Script 198 | function buildPublicKeyHashOut(address: Address): Script 199 | function buildPublicKeyOut(pubkey: PublicKey): Script 200 | function buildDataOut(data: string | Buffer, encoding?: string): Script 201 | function buildScriptHashOut(script: Script): Script 202 | function buildPublicKeyIn(signature: crypto.Signature | Buffer, sigtype: number): Script 203 | function buildPublicKeyHashIn(publicKey: PublicKey, signature: crypto.Signature | Buffer, sigtype: number): Script 204 | 205 | function fromAddress(address: string | Address): Script 206 | 207 | function empty(): Script 208 | } 209 | 210 | export class Script { 211 | constructor(data: string | object) 212 | 213 | set(obj: object): this 214 | 215 | toBuffer(): Buffer 216 | toASM(): string 217 | toString(): string 218 | toHex(): string 219 | 220 | isPublicKeyHashOut(): boolean 221 | isPublicKeyHashIn(): boolean 222 | 223 | getPublicKey(): Buffer 224 | getPublicKeyHash(): Buffer 225 | 226 | isPublicKeyOut(): boolean 227 | isPublicKeyIn(): boolean 228 | 229 | isScriptHashOut(): boolean 230 | isWitnessScriptHashOut(): boolean 231 | isWitnessPublicKeyHashOut(): boolean 232 | isWitnessProgram(): boolean 233 | isScriptHashIn(): boolean 234 | isMultisigOut(): boolean 235 | isMultisigIn(): boolean 236 | isDataOut(): boolean 237 | 238 | getData(): Buffer 239 | isPushOnly(): boolean 240 | 241 | classify(): string 242 | classifyInput(): string 243 | classifyOutput(): string 244 | 245 | isStandard(): boolean 246 | 247 | prepend(obj: any): this 248 | add(obj: any): this 249 | 250 | hasCodeseparators(): boolean 251 | removeCodeseparators(): this 252 | 253 | equals(script: Script): boolean 254 | 255 | getAddressInfo(): Address | boolean 256 | findAndDelete(script: Script): this 257 | checkMinimalPush(i: number): boolean 258 | getSignatureOperationsCount(accurate: boolean): number 259 | 260 | toAddress(): Address 261 | } 262 | 263 | export class Message { 264 | constructor(message: string) 265 | 266 | readonly message: string 267 | 268 | magicHash(): Buffer 269 | sign(privateKey: PrivateKey): string 270 | verify(bitcoinAddress: Address | string, signatureString: string): boolean 271 | fromString(str: string): Message 272 | fromJSON(json: string): Message 273 | toObject(): { message: string } 274 | toJSON(): string 275 | toString(): string 276 | inspect(): string 277 | } 278 | 279 | export interface Util { 280 | readonly buffer: { 281 | reverse(a: any): any 282 | } 283 | } 284 | 285 | export namespace Networks { 286 | interface Network { 287 | readonly name: string 288 | readonly alias: string 289 | } 290 | 291 | const livenet: Network 292 | const mainnet: Network 293 | const testnet: Network 294 | 295 | function add(data: any): Network 296 | function remove(network: Network): void 297 | function get(args: string | number | Network, keys: string | string[]): Network 298 | } 299 | 300 | export class Address { 301 | readonly hashBuffer: Buffer 302 | readonly network: Networks.Network 303 | readonly type: string 304 | 305 | constructor(data: Buffer | Uint8Array | string | object, network?: Networks.Network, type?: string) 306 | 307 | static fromPublicKey(publicKey: PublicKey, network?: Networks.Network): Address 308 | 309 | toString(): string 310 | } 311 | 312 | export class Unit { 313 | static fromBTC(amount: number): Unit 314 | static fromMilis(amount: number): Unit 315 | static fromBits(amount: number): Unit 316 | static fromSatoshis(amount: number): Unit 317 | 318 | constructor(amount: number, unitPreference: string) 319 | 320 | toBTC(): number 321 | toMilis(): number 322 | toBits(): number 323 | toSatoshis(): number 324 | } 325 | } -------------------------------------------------------------------------------- /src/address.ts: -------------------------------------------------------------------------------- 1 | import RLP from 'rlp' 2 | import * as bitcoin from 'bitcoinjs-lib' 3 | import * as ecc from 'tiny-secp256k1' 4 | import { keccak256 } from 'web3-utils' 5 | 6 | const toXOnly = (pubKey: Buffer) => (pubKey.length === 32 ? pubKey : pubKey.subarray(1, 33)) 7 | bitcoin.initEccLib(ecc) 8 | 9 | const publicKeyToAddress = (publicKeyHex: string, networkType: 'mainnet' | 'testnet' = 'mainnet') => { 10 | const publicKeyBuffer = Buffer.from(publicKeyHex, 'hex') 11 | const network = networkType === 'mainnet' ? bitcoin.networks.bitcoin : bitcoin.networks.testnet 12 | 13 | // p2tr 14 | const tapInternalKey = toXOnly(publicKeyBuffer) 15 | 16 | return { 17 | p2tr: bitcoin.payments.p2tr({ internalPubkey: tapInternalKey, network }).address!, 18 | p2pkh: bitcoin.payments.p2pkh({ pubkey: publicKeyBuffer, network }).address!, 19 | p2sh: bitcoin.payments.p2sh({ 20 | redeem: bitcoin.payments.p2wpkh({ pubkey: publicKeyBuffer, network }), 21 | }).address!, 22 | p2wpkh: bitcoin.payments.p2wpkh({ pubkey: publicKeyBuffer, network }).address!, 23 | } 24 | } 25 | 26 | const generateHexAddress = (address: string) => { 27 | return '0x' + keccak256(address).slice(26) 28 | } 29 | 30 | const generateContractAddress = (walletAddress: string, nonce: number) => { 31 | const input = RLP.encode([walletAddress, nonce]) 32 | const hash = keccak256(input) 33 | 34 | return '0x' + hash.slice(26) 35 | } 36 | 37 | export default { 38 | publicKeyToAddress, 39 | generateHexAddress, 40 | generateContractAddress, 41 | } 42 | 43 | export { 44 | publicKeyToAddress, 45 | generateHexAddress, 46 | generateContractAddress, 47 | } -------------------------------------------------------------------------------- /src/bitcoin-client/index.ts: -------------------------------------------------------------------------------- 1 | import axios, { AxiosInstance } from 'axios' 2 | 3 | interface ConnectOptions { 4 | url: string 5 | user: string 6 | password: string 7 | } 8 | 9 | interface Vout { 10 | value: number 11 | n: number 12 | scriptPubKey: any 13 | } 14 | 15 | interface Vin { 16 | txid?: string 17 | vout?: number 18 | scriptSig?: { 19 | asm: string 20 | hex: string 21 | } 22 | sequence: number 23 | txinwitness?: string[] 24 | } 25 | 26 | interface Transaction { 27 | txid: string 28 | hash: string 29 | version: number 30 | size: number 31 | vsize: number 32 | weight: number 33 | locktime: number 34 | vin: Array 35 | vout: Array 36 | hex: string 37 | } 38 | 39 | interface Block { 40 | hash: string 41 | confirmations: number 42 | height: number 43 | version: number 44 | versionHex: string 45 | merkleroot: string 46 | time: number 47 | mediantime: number 48 | nonce: number 49 | bits: string 50 | difficulty: number 51 | chainwork: string 52 | nTx: number 53 | previousblockhash: string 54 | nextblockhash: string 55 | strippedsize: number 56 | size: number 57 | weight: number 58 | tx: Array | Array 59 | } 60 | 61 | interface RpcResponse { 62 | result: T 63 | error: string | null 64 | id: string 65 | } 66 | 67 | export default class BitcoinRpcClient { 68 | private _rpcClient: AxiosInstance 69 | 70 | constructor(connectOptions: ConnectOptions) { 71 | this._rpcClient = axios.create({ 72 | baseURL: connectOptions.url, 73 | auth: { 74 | username: connectOptions.user, 75 | password: connectOptions.password, 76 | }, 77 | headers: { 78 | 'Content-Type': 'text/plain', 79 | }, 80 | }) 81 | } 82 | 83 | public getBlockInfo = async (blockHash: string) => { 84 | try { 85 | const blockInfoResponse = await this._rpcClient.post>('', { 86 | jsonrpc: '1.0', 87 | method: 'getblock', 88 | params: [blockHash], 89 | id: 'getblock', 90 | }) 91 | 92 | return blockInfoResponse.data.result 93 | } catch (error) { 94 | throw error 95 | } 96 | } 97 | 98 | public getBlockInfoByHeight = async (blockHeight: number) => { 99 | try { 100 | const blockHashResponse = await this._rpcClient.post>('', { 101 | jsonrpc: '1.0', 102 | method: 'getblockhash', 103 | params: [blockHeight], 104 | id: 'getblockhash', 105 | }) 106 | 107 | const blockHash = blockHashResponse.data.result 108 | 109 | return this.getBlockInfo(blockHash) 110 | } catch (error) { 111 | // console.log(error) 112 | throw error 113 | } 114 | } 115 | 116 | public getBlockCoinbaseByBlockInfo = async (block: Block) => { 117 | const coinbaseHash = block.tx[0] 118 | try { 119 | const txDataResponse = await this._rpcClient.post>('', { 120 | method: 'getrawtransaction', 121 | params: [coinbaseHash, true], 122 | id: 'getrawtransaction', 123 | }) 124 | 125 | const coinbaseTx = txDataResponse.data.result 126 | const coinbase = coinbaseTx.vout.reduce((sum, output) => sum + output.value, 0) 127 | 128 | return coinbase 129 | } catch (error) { 130 | throw error 131 | } 132 | } 133 | } -------------------------------------------------------------------------------- /src/bvm-client/index.ts: -------------------------------------------------------------------------------- 1 | import axios, { AxiosInstance } from 'axios' 2 | 3 | interface JsonRpcRequest { 4 | jsonrpc: string 5 | method: string 6 | params: Array 7 | id: number 8 | } 9 | 10 | interface JsonRpcResponse { 11 | jsonrpc: string 12 | id: number 13 | result?: T 14 | error?: { 15 | code: number 16 | message: string 17 | data?: any 18 | } 19 | } 20 | 21 | interface Block { 22 | blockHash: string 23 | blockNumber: number 24 | timestamp: number 25 | mixHash: string 26 | } 27 | 28 | interface LatestBlock { 29 | veda_block_hash: string 30 | veda_block_number: number 31 | veda_timestamp: number 32 | } 33 | 34 | export interface Transaction { 35 | sender: string 36 | to: string 37 | nonce: number 38 | data: string 39 | txHash: string 40 | } 41 | 42 | type BlockWithTransactions = [Block, Array] 43 | 44 | interface OriginData { 45 | block: Block, 46 | transactions: Array 47 | } 48 | 49 | export default class BvmRpcClient { 50 | private _rpcClient: AxiosInstance 51 | private _rpcId: number = 0 52 | 53 | constructor(baseURL: string) { 54 | this._rpcClient = axios.create({ 55 | baseURL, 56 | }) 57 | } 58 | 59 | private _rpcCall = async (method: string, params: T) => { 60 | const requestData: JsonRpcRequest = { 61 | jsonrpc: '2.0', 62 | method: method, 63 | params, 64 | id: this._rpcId, 65 | } 66 | 67 | const response = await this._rpcClient.post>('', requestData) 68 | if (response.data.error) { 69 | throw Error(`JSON-RPC Error: ${response.data.error}`) 70 | } 71 | return response.data 72 | } 73 | 74 | public rpcCall = async (params: OriginData) => { 75 | await this._rpcCall('sync', [params.block, params.transactions]) 76 | } 77 | public getSyncInfo = async () => { 78 | return await this._rpcCall>('get_latest_block', []) 79 | } 80 | } -------------------------------------------------------------------------------- /src/db.ts: -------------------------------------------------------------------------------- 1 | import { Level } from 'level' 2 | import { join } from 'path' 3 | 4 | export default new Level(process.env.DB_PATH || join(__dirname, '..', 'veda-db')) -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { config } from 'dotenv' 2 | import BvmRpcClient from './bvm-client' 3 | import initUpdater from './updater' 4 | 5 | config() 6 | const bvmRpcClient = new BvmRpcClient(process.env.BVM_RPC_URL || '') 7 | const init = async () => { 8 | let genesisBlock = 822267 9 | let timestamp = 1703181793 10 | 11 | try { 12 | const syncInfo = await bvmRpcClient.getSyncInfo() 13 | return { 14 | lastBlockHeight: syncInfo.result!.veda_block_number, 15 | lastTimestamp: syncInfo.result!.veda_timestamp, 16 | } 17 | } catch (e) { 18 | return { 19 | lastBlockHeight: genesisBlock, 20 | lastTimestamp: timestamp, 21 | } 22 | } 23 | } 24 | 25 | (async () => { 26 | const { lastBlockHeight, lastTimestamp } = await init() 27 | await initUpdater(lastBlockHeight, lastTimestamp) 28 | })() -------------------------------------------------------------------------------- /src/progress.ts: -------------------------------------------------------------------------------- 1 | import Progress from 'progress' 2 | 3 | class DynamicProgressBar { 4 | private bar: ProgressBar 5 | private currentTick: number = 0 6 | 7 | constructor() { 8 | this.bar = new Progress(':bar :percent', { total: 100, width: 20 }) 9 | } 10 | 11 | public setTotal = (total: number) => { 12 | this.bar.total = total 13 | } 14 | 15 | public tick = () => { 16 | this.currentTick++ 17 | if (this.currentTick <= this.bar.total) { 18 | this.bar.tick() 19 | } 20 | } 21 | } 22 | 23 | export default DynamicProgressBar -------------------------------------------------------------------------------- /src/updater/index.ts: -------------------------------------------------------------------------------- 1 | import axios from 'axios' 2 | import { Contract } from 'web3' 3 | import Progress from 'progress' 4 | import RLP from 'rlp' 5 | import { keccak256 } from 'web3-utils' 6 | import { config } from 'dotenv' 7 | import { autoRetry } from '../utils' 8 | import verifyMessage from '../verifier' 9 | import { publicKeyToAddress, generateHexAddress, generateContractAddress } from '../address' 10 | import BitcoinRpcClient from '../bitcoin-client' 11 | import BvmRpcClient, { Transaction } from '../bvm-client' 12 | interface ContractInscription { 13 | bytecode?: string 14 | abi?: string 15 | } 16 | 17 | interface Instruction { 18 | p?: string 19 | publicKey?: string 20 | txHash?: string 21 | addressType?: 'p2pkh' | 'p2sh' | 'p2wpkh' | 'p2tr' 22 | action?: 'execute' | 'deploy' 23 | contract?: string 24 | bytecodeLocation?: string 25 | nonce?: number 26 | data?: string 27 | sigType?: 'ecdsa' | 'bip-322' 28 | sig?: string 29 | } 30 | type FilteredInstruction = { 31 | [P in keyof Instruction as Exclude]-?: Instruction[P] 32 | } & Pick 33 | interface DeploySerialInstruction extends Required> { 34 | action: 'deploy' 35 | } 36 | interface ExecuteSerialInstruction extends Required> { 37 | action: 'execute' 38 | } 39 | 40 | interface InscriptionEntry { 41 | charms: number 42 | fee: number 43 | height: number 44 | id: string 45 | inscription_number: number 46 | parent: number | null 47 | sat: number | null 48 | sequence_number: number 49 | timestamp: number 50 | } 51 | 52 | interface BlockInfo { 53 | block_count: number 54 | inscriptions: Array<{ 55 | entry: InscriptionEntry 56 | content: string 57 | }> 58 | } 59 | config() 60 | // Clients 61 | const bitcoinRpcClient = new BitcoinRpcClient({ 62 | url: process.env.BITCOIND_RPC_URL || '', 63 | user: process.env.BITCOIND_RPC_USER || '', 64 | password: process.env.BITCOIND_RPC_PASSWORD || '', 65 | }) 66 | // const web3 = new Web3('') 67 | const bvmRpcClient = new BvmRpcClient(process.env.BVM_RPC_URL || '') 68 | 69 | const getRequest = async (params: string | number, path: string, delay: number = Math.floor(Math.random() * (100 - 10 + 1)) + 10) => { 70 | const data = await autoRetry(async () => { 71 | return (await axios.get(`${process.env.ORD_URL}/${path}/${params}`)).data 72 | }, { 73 | timeout: 0, 74 | delay, 75 | errorHandler: error => { 76 | if (error.response && Math.floor(error.response.status / 100) === 4) { 77 | return true 78 | } else { 79 | // console.error('Something wrong when requesting inscription') 80 | return false 81 | } 82 | } 83 | }) 84 | 85 | return data 86 | } 87 | 88 | const getBlock = async (height: number) => { 89 | const inscriptionInfo = await getRequest(height, 'api/inscriptions/block') 90 | return inscriptionInfo 91 | } 92 | 93 | const getInscriptionContent = async (inscriptionId: string) => { 94 | const inscriptionContent = await getRequest(inscriptionId, 'content') 95 | return inscriptionContent 96 | } 97 | 98 | const isValidABI = (abi: string) => { 99 | try { 100 | new Contract(JSON.parse(abi)) 101 | return true 102 | } catch (error) { 103 | return false 104 | } 105 | } 106 | 107 | const serializeInstruction = (instruction: ExecuteSerialInstruction | DeploySerialInstruction) => { 108 | const instructionAsArray = [ 109 | instruction.p, 110 | instruction.publicKey, 111 | instruction.addressType, 112 | instruction.action, 113 | instruction.action === 'deploy' ? instruction.bytecodeLocation : instruction.contract, 114 | instruction.nonce, 115 | instruction.data, 116 | instruction.sigType, 117 | ] 118 | return RLP.encode(instructionAsArray) 119 | } 120 | 121 | const filter = async (contentString: string): Promise => { 122 | // const content = await getInscriptionContent(inscriptionId) 123 | let content: Instruction 124 | try { 125 | content = JSON.parse(contentString) 126 | } catch (e) { 127 | return 128 | } 129 | 130 | // Verify protocol 131 | // if (!content.p || content.p !== 'veda') throw new Error('Protocol not match') 132 | if (!content.p || content.p !== 'veda') return 133 | 134 | // Content Checks 135 | if (!( 136 | content.publicKey && 137 | content.txHash && 138 | content.data && 139 | 'nonce' in content && 140 | content.sig && 141 | (content.action === 'execute' || content.action === 'deploy') && 142 | (content.addressType && ['p2pkh', 'p2sh', 'p2wpkh', 'p2tr'].includes(content.addressType)) && 143 | (content.sigType && ['ecdsa', 'bip-322'].includes(content.sigType)) 144 | )) { 145 | // throw new Error('Invalid content type') 146 | return 147 | } 148 | if (content.action === 'execute' && content.contract === undefined) { 149 | // throw new Error('For "execute" action, "contract" key is required.') 150 | return 151 | } 152 | if (content.action === 'deploy' && content.bytecodeLocation === undefined) { 153 | // throw new Error('For "deploy" action, "bytecodeLocation" key is required.') 154 | return 155 | } 156 | 157 | if (typeof content.nonce !== 'number') { 158 | return 159 | } 160 | 161 | // Verify transaction hash 162 | if (content.action === 'execute') { 163 | const instruction: ExecuteSerialInstruction = { 164 | p: content.p, 165 | publicKey: content.publicKey, 166 | addressType: content.addressType, 167 | action: content.action, 168 | contract: content.contract!, 169 | nonce: content.nonce!, 170 | data: content.data, 171 | sigType: content.sigType, 172 | } 173 | const calculateHash = keccak256(serializeInstruction(instruction)) 174 | // if (calculateHash !== content.txHash) throw new Error('Invalid transaction hash') 175 | if (calculateHash !== content.txHash) return 176 | } else { 177 | const instruction = { 178 | p: content.p, 179 | publicKey: content.publicKey, 180 | addressType: content.addressType, 181 | action: content.action, 182 | bytecodeLocation: content.bytecodeLocation!, 183 | nonce: content.nonce!, 184 | data: content.data, 185 | sigType: content.sigType, 186 | } 187 | const calculateHash = keccak256(serializeInstruction(instruction)) 188 | // if (calculateHash !== content.txHash) throw new Error('Invalid transaction hash') 189 | if (calculateHash !== content.txHash) return 190 | } 191 | 192 | // Verify sig 193 | const address = publicKeyToAddress(content.publicKey, process.env.NETWORK as 'mainnet' | 'testnet' || 'mainnet')[content.addressType] 194 | // if (!(verifyMessage(content.txHash, content.sig, address, content.sigType))) throw new Error('Signature verify failed') 195 | if (!(verifyMessage(content.txHash, content.sig, address, content.sigType))) return 196 | 197 | return content as FilteredInstruction 198 | } 199 | 200 | const sync = async (height: number, lastTimestamp: number, progress: Progress) => { 201 | const { 202 | block_count: blockCount, 203 | inscriptions, 204 | } = await getBlock(height) 205 | if (progress.total !== blockCount) progress.total = blockCount 206 | 207 | const transactions: Array = [] 208 | const blockInfo = await bitcoinRpcClient.getBlockInfoByHeight(height) 209 | 210 | for (const inscription of inscriptions) { 211 | try { 212 | if (inscription.entry.inscription_number < 0) continue 213 | const instruction = await filter(inscription.content) 214 | if (!instruction) continue 215 | const address = publicKeyToAddress(instruction.publicKey, process.env.NETWORK as 'mainnet' | 'testnet' || 'mainnet')[instruction.addressType || 'p2wpkh'] 216 | const hexAddress = generateHexAddress(address) 217 | 218 | if (instruction.action === 'execute') { 219 | const transaction = { 220 | sender: hexAddress, 221 | to: instruction.contract!, 222 | nonce: instruction.nonce, 223 | data: instruction.data, 224 | txHash: instruction.txHash, 225 | } 226 | transactions.push(transaction) 227 | } else { 228 | const { bytecode, abi } = await getInscriptionContent(instruction.bytecodeLocation!) 229 | 230 | if (!bytecode || typeof bytecode !== 'string' || !abi || !isValidABI(abi)) throw Error('Invalid bytecode or ABI') 231 | const transaction = { 232 | sender: hexAddress, 233 | to: '', 234 | nonce: instruction.nonce, 235 | data: bytecode + instruction.data.replace(/^0x/, ''), 236 | txHash: instruction.txHash, 237 | } 238 | transactions.push(transaction) 239 | } 240 | } catch (e) { 241 | console.log(e) 242 | } 243 | } 244 | if (transactions.length !== 0) console.log(transactions) 245 | 246 | const timestamp = blockInfo.time > lastTimestamp ? blockInfo.time : lastTimestamp + 1 247 | await bvmRpcClient.rpcCall({ 248 | block: { 249 | blockHash: blockInfo.hash, 250 | blockNumber: blockInfo.height, 251 | timestamp, 252 | mixHash: blockInfo.nonce.toString(16).padStart(64, '0'), 253 | }, 254 | transactions, 255 | }) 256 | progress.tick() 257 | 258 | // Next block 259 | if (height >= blockCount) { 260 | while (true) { 261 | const { block_count: newBlockCount } = await getBlock(height) 262 | if (newBlockCount > blockCount) break 263 | await new Promise(resolve => setTimeout(resolve, 10000)) 264 | } 265 | } 266 | sync(height + 1, timestamp, progress) 267 | } 268 | 269 | const init = async (height: number, timestamp: number) => { 270 | const { 271 | block_count: blockCount, 272 | // inscriptions, 273 | } = await getBlock(height) 274 | console.log('Start sync') 275 | // Progress 276 | const progress = new Progress(':bar :current/:total', { 277 | total: blockCount, 278 | curr: height - 1, 279 | }) 280 | progress.tick() 281 | if (height >= blockCount) { 282 | while (true) { 283 | const { block_count: newBlockCount } = await getBlock(height) 284 | if (newBlockCount > blockCount) break 285 | await new Promise(resolve => setTimeout(resolve, 10000)) 286 | } 287 | } 288 | sync(height + 1, timestamp, progress) 289 | } 290 | export default init -------------------------------------------------------------------------------- /src/utils.ts: -------------------------------------------------------------------------------- 1 | 2 | import { setTimeout as timersSetTimeout } from 'timers/promises' 3 | 4 | interface Async { 5 | (): Promise 6 | } 7 | 8 | export const sleep = (time: number) => { 9 | return new Promise(resolve => setTimeout(resolve, time)) 10 | } 11 | 12 | export const retry = async (fn: Async, config: { 13 | delay: number, 14 | printError: boolean, 15 | errorHandler?: (e: any) => boolean, 16 | }): Promise => { 17 | const { delay, printError, errorHandler } = config 18 | let success = false 19 | let revert = false 20 | let result: T 21 | while (!success) { 22 | try { 23 | result = await fn() 24 | success = true 25 | return result 26 | } catch (e) { 27 | if (printError && e) console.error(e) 28 | if (errorHandler) revert = errorHandler(e) 29 | if (revert) { 30 | throw e 31 | } 32 | } 33 | await sleep(delay) 34 | } 35 | } 36 | 37 | export const autoRetry = async (fn: Async, config: { 38 | delay?: number, 39 | printError?: boolean, 40 | timeout?: number, 41 | errorHandler?: (e: any) => boolean, 42 | } = { 43 | delay: 1000, 44 | printError: false, 45 | timeout: 30000, 46 | }): Promise => { 47 | const { timeout, delay, printError, errorHandler } = config 48 | return retry( 49 | () => new Promise((resolve, reject) => { 50 | fn().then(resolve, reject) 51 | if (timeout !== 0) timersSetTimeout(timeout || 30000).then(reject) 52 | }), 53 | { 54 | delay: delay || 1000, 55 | printError: printError || false, 56 | errorHandler, 57 | } 58 | ) 59 | } -------------------------------------------------------------------------------- /src/verifier.ts: -------------------------------------------------------------------------------- 1 | import { verify } from 'bitcoinjs-message' 2 | import { Verifier } from 'bip322-js' 3 | 4 | const verifyMessage = ( 5 | message: string, 6 | signature: string, 7 | address: string, 8 | type: 'ecdsa' | 'bip-322' = 'ecdsa' 9 | ) => { 10 | switch (type) { 11 | case 'bip-322': 12 | return Verifier.verifySignature(address, message, signature) 13 | case 'ecdsa': 14 | default: 15 | return verify(message, address, signature) 16 | } 17 | } 18 | 19 | export default verifyMessage -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "ts-node": { 3 | "files": true 4 | }, 5 | "compilerOptions": { 6 | "target": "ES2021", 7 | "module": "CommonJS", 8 | "outDir": "./dist", 9 | "rootDir": "./src", 10 | "strict": true, 11 | "esModuleInterop": true, 12 | "skipLibCheck": true, 13 | "allowJs": true, 14 | "checkJs": true, 15 | }, 16 | "include": [ 17 | "src/**/*.ts", 18 | ], 19 | "exclude": ["node_modules"] 20 | } 21 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@adraffy/ens-normalize@^1.8.8": 6 | version "1.10.0" 7 | resolved "https://registry.npmmirror.com/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz#d2a39395c587e092d77cbbc80acf956a54f38bf7" 8 | integrity sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q== 9 | 10 | "@bitcoinerlab/secp256k1@^1.0.2": 11 | version "1.0.5" 12 | resolved "https://registry.npmmirror.com/@bitcoinerlab/secp256k1/-/secp256k1-1.0.5.tgz#4643ba73619c24c7c455cc63c6338c69c2cf187c" 13 | integrity sha512-8gT+ukTCFN2rTxn4hD9Jq3k+UJwcprgYjfK/SQUSLgznXoIgsBnlPuARMkyyuEjycQK9VvnPiejKdszVTflh+w== 14 | dependencies: 15 | "@noble/hashes" "^1.1.5" 16 | "@noble/secp256k1" "^1.7.1" 17 | 18 | "@ethereumjs/rlp@^4.0.1": 19 | version "4.0.1" 20 | resolved "https://registry.npmmirror.com/@ethereumjs/rlp/-/rlp-4.0.1.tgz#626fabfd9081baab3d0a3074b0c7ecaf674aaa41" 21 | integrity sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw== 22 | 23 | "@ethersproject/abi@^5.7.0": 24 | version "5.7.0" 25 | resolved "https://registry.npmmirror.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" 26 | integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== 27 | dependencies: 28 | "@ethersproject/address" "^5.7.0" 29 | "@ethersproject/bignumber" "^5.7.0" 30 | "@ethersproject/bytes" "^5.7.0" 31 | "@ethersproject/constants" "^5.7.0" 32 | "@ethersproject/hash" "^5.7.0" 33 | "@ethersproject/keccak256" "^5.7.0" 34 | "@ethersproject/logger" "^5.7.0" 35 | "@ethersproject/properties" "^5.7.0" 36 | "@ethersproject/strings" "^5.7.0" 37 | 38 | "@ethersproject/abstract-provider@^5.7.0": 39 | version "5.7.0" 40 | resolved "https://registry.npmmirror.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" 41 | integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== 42 | dependencies: 43 | "@ethersproject/bignumber" "^5.7.0" 44 | "@ethersproject/bytes" "^5.7.0" 45 | "@ethersproject/logger" "^5.7.0" 46 | "@ethersproject/networks" "^5.7.0" 47 | "@ethersproject/properties" "^5.7.0" 48 | "@ethersproject/transactions" "^5.7.0" 49 | "@ethersproject/web" "^5.7.0" 50 | 51 | "@ethersproject/abstract-signer@^5.7.0": 52 | version "5.7.0" 53 | resolved "https://registry.npmmirror.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" 54 | integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== 55 | dependencies: 56 | "@ethersproject/abstract-provider" "^5.7.0" 57 | "@ethersproject/bignumber" "^5.7.0" 58 | "@ethersproject/bytes" "^5.7.0" 59 | "@ethersproject/logger" "^5.7.0" 60 | "@ethersproject/properties" "^5.7.0" 61 | 62 | "@ethersproject/address@^5.7.0": 63 | version "5.7.0" 64 | resolved "https://registry.npmmirror.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" 65 | integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== 66 | dependencies: 67 | "@ethersproject/bignumber" "^5.7.0" 68 | "@ethersproject/bytes" "^5.7.0" 69 | "@ethersproject/keccak256" "^5.7.0" 70 | "@ethersproject/logger" "^5.7.0" 71 | "@ethersproject/rlp" "^5.7.0" 72 | 73 | "@ethersproject/base64@^5.7.0": 74 | version "5.7.0" 75 | resolved "https://registry.npmmirror.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" 76 | integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== 77 | dependencies: 78 | "@ethersproject/bytes" "^5.7.0" 79 | 80 | "@ethersproject/bignumber@^5.7.0": 81 | version "5.7.0" 82 | resolved "https://registry.npmmirror.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" 83 | integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== 84 | dependencies: 85 | "@ethersproject/bytes" "^5.7.0" 86 | "@ethersproject/logger" "^5.7.0" 87 | bn.js "^5.2.1" 88 | 89 | "@ethersproject/bytes@^5.7.0": 90 | version "5.7.0" 91 | resolved "https://registry.npmmirror.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" 92 | integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== 93 | dependencies: 94 | "@ethersproject/logger" "^5.7.0" 95 | 96 | "@ethersproject/constants@^5.7.0": 97 | version "5.7.0" 98 | resolved "https://registry.npmmirror.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" 99 | integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== 100 | dependencies: 101 | "@ethersproject/bignumber" "^5.7.0" 102 | 103 | "@ethersproject/hash@^5.7.0": 104 | version "5.7.0" 105 | resolved "https://registry.npmmirror.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" 106 | integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== 107 | dependencies: 108 | "@ethersproject/abstract-signer" "^5.7.0" 109 | "@ethersproject/address" "^5.7.0" 110 | "@ethersproject/base64" "^5.7.0" 111 | "@ethersproject/bignumber" "^5.7.0" 112 | "@ethersproject/bytes" "^5.7.0" 113 | "@ethersproject/keccak256" "^5.7.0" 114 | "@ethersproject/logger" "^5.7.0" 115 | "@ethersproject/properties" "^5.7.0" 116 | "@ethersproject/strings" "^5.7.0" 117 | 118 | "@ethersproject/keccak256@^5.7.0": 119 | version "5.7.0" 120 | resolved "https://registry.npmmirror.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" 121 | integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== 122 | dependencies: 123 | "@ethersproject/bytes" "^5.7.0" 124 | js-sha3 "0.8.0" 125 | 126 | "@ethersproject/logger@^5.7.0": 127 | version "5.7.0" 128 | resolved "https://registry.npmmirror.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" 129 | integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== 130 | 131 | "@ethersproject/networks@^5.7.0": 132 | version "5.7.1" 133 | resolved "https://registry.npmmirror.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" 134 | integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== 135 | dependencies: 136 | "@ethersproject/logger" "^5.7.0" 137 | 138 | "@ethersproject/properties@^5.7.0": 139 | version "5.7.0" 140 | resolved "https://registry.npmmirror.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" 141 | integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== 142 | dependencies: 143 | "@ethersproject/logger" "^5.7.0" 144 | 145 | "@ethersproject/rlp@^5.7.0": 146 | version "5.7.0" 147 | resolved "https://registry.npmmirror.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" 148 | integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== 149 | dependencies: 150 | "@ethersproject/bytes" "^5.7.0" 151 | "@ethersproject/logger" "^5.7.0" 152 | 153 | "@ethersproject/signing-key@^5.7.0": 154 | version "5.7.0" 155 | resolved "https://registry.npmmirror.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" 156 | integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== 157 | dependencies: 158 | "@ethersproject/bytes" "^5.7.0" 159 | "@ethersproject/logger" "^5.7.0" 160 | "@ethersproject/properties" "^5.7.0" 161 | bn.js "^5.2.1" 162 | elliptic "6.5.4" 163 | hash.js "1.1.7" 164 | 165 | "@ethersproject/strings@^5.7.0": 166 | version "5.7.0" 167 | resolved "https://registry.npmmirror.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" 168 | integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== 169 | dependencies: 170 | "@ethersproject/bytes" "^5.7.0" 171 | "@ethersproject/constants" "^5.7.0" 172 | "@ethersproject/logger" "^5.7.0" 173 | 174 | "@ethersproject/transactions@^5.7.0": 175 | version "5.7.0" 176 | resolved "https://registry.npmmirror.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" 177 | integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== 178 | dependencies: 179 | "@ethersproject/address" "^5.7.0" 180 | "@ethersproject/bignumber" "^5.7.0" 181 | "@ethersproject/bytes" "^5.7.0" 182 | "@ethersproject/constants" "^5.7.0" 183 | "@ethersproject/keccak256" "^5.7.0" 184 | "@ethersproject/logger" "^5.7.0" 185 | "@ethersproject/properties" "^5.7.0" 186 | "@ethersproject/rlp" "^5.7.0" 187 | "@ethersproject/signing-key" "^5.7.0" 188 | 189 | "@ethersproject/web@^5.7.0": 190 | version "5.7.1" 191 | resolved "https://registry.npmmirror.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" 192 | integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== 193 | dependencies: 194 | "@ethersproject/base64" "^5.7.0" 195 | "@ethersproject/bytes" "^5.7.0" 196 | "@ethersproject/logger" "^5.7.0" 197 | "@ethersproject/properties" "^5.7.0" 198 | "@ethersproject/strings" "^5.7.0" 199 | 200 | "@noble/curves@1.1.0", "@noble/curves@~1.1.0": 201 | version "1.1.0" 202 | resolved "https://registry.npmmirror.com/@noble/curves/-/curves-1.1.0.tgz#f13fc667c89184bc04cccb9b11e8e7bae27d8c3d" 203 | integrity sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA== 204 | dependencies: 205 | "@noble/hashes" "1.3.1" 206 | 207 | "@noble/hashes@1.1.5", "@noble/hashes@~1.1.1": 208 | version "1.1.5" 209 | resolved "https://registry.npmmirror.com/@noble/hashes/-/hashes-1.1.5.tgz#1a0377f3b9020efe2fae03290bd2a12140c95c11" 210 | integrity sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ== 211 | 212 | "@noble/hashes@1.3.1": 213 | version "1.3.1" 214 | resolved "https://registry.npmmirror.com/@noble/hashes/-/hashes-1.3.1.tgz#8831ef002114670c603c458ab8b11328406953a9" 215 | integrity sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA== 216 | 217 | "@noble/hashes@^1.1.2", "@noble/hashes@^1.1.5", "@noble/hashes@^1.2.0", "@noble/hashes@~1.3.0", "@noble/hashes@~1.3.1": 218 | version "1.3.2" 219 | resolved "https://registry.npmmirror.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" 220 | integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== 221 | 222 | "@noble/secp256k1@1.7.1", "@noble/secp256k1@^1.7.1": 223 | version "1.7.1" 224 | resolved "https://registry.npmmirror.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" 225 | integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== 226 | 227 | "@scure/base@^1.1.1", "@scure/base@~1.1.0": 228 | version "1.1.3" 229 | resolved "https://registry.npmmirror.com/@scure/base/-/base-1.1.3.tgz#8584115565228290a6c6c4961973e0903bb3df2f" 230 | integrity sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q== 231 | 232 | "@scure/bip32@1.3.1": 233 | version "1.3.1" 234 | resolved "https://registry.npmmirror.com/@scure/bip32/-/bip32-1.3.1.tgz#7248aea723667f98160f593d621c47e208ccbb10" 235 | integrity sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A== 236 | dependencies: 237 | "@noble/curves" "~1.1.0" 238 | "@noble/hashes" "~1.3.1" 239 | "@scure/base" "~1.1.0" 240 | 241 | "@scure/bip39@1.1.0": 242 | version "1.1.0" 243 | resolved "https://registry.npmmirror.com/@scure/bip39/-/bip39-1.1.0.tgz#92f11d095bae025f166bef3defcc5bf4945d419a" 244 | integrity sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w== 245 | dependencies: 246 | "@noble/hashes" "~1.1.1" 247 | "@scure/base" "~1.1.0" 248 | 249 | "@scure/bip39@1.2.1": 250 | version "1.2.1" 251 | resolved "https://registry.npmmirror.com/@scure/bip39/-/bip39-1.2.1.tgz#5cee8978656b272a917b7871c981e0541ad6ac2a" 252 | integrity sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg== 253 | dependencies: 254 | "@noble/hashes" "~1.3.0" 255 | "@scure/base" "~1.1.0" 256 | 257 | "@stacks/common@^6.8.1": 258 | version "6.8.1" 259 | resolved "https://registry.npmmirror.com/@stacks/common/-/common-6.8.1.tgz#4f13f4635014b1d50e78745d72ecb9085afed69d" 260 | integrity sha512-ewL9GLZNQYa5a/3K4xSHlHIgHkD4rwWW/QEaPId8zQIaL+1O9qCaF4LX9orNQeOmEk8kvG0x2xGV54fXKCZeWQ== 261 | dependencies: 262 | "@types/bn.js" "^5.1.0" 263 | "@types/node" "^18.0.4" 264 | 265 | "@stacks/encryption@^6.9.0": 266 | version "6.9.0" 267 | resolved "https://registry.npmmirror.com/@stacks/encryption/-/encryption-6.9.0.tgz#340141caabed37ea9aaa253db4aca82a55ef15ef" 268 | integrity sha512-hbpZ47eYgw9ZH5ly+GSgvw2Ffsu9L6d++2XIhvYSzL7yxYl4m1+FV5QYdJthJ2AS3vi8cI5otE254HTfCrhKzg== 269 | dependencies: 270 | "@noble/hashes" "1.1.5" 271 | "@noble/secp256k1" "1.7.1" 272 | "@scure/bip39" "1.1.0" 273 | "@stacks/common" "^6.8.1" 274 | "@types/node" "^18.0.4" 275 | base64-js "^1.5.1" 276 | bs58 "^5.0.0" 277 | ripemd160-min "^0.0.6" 278 | varuint-bitcoin "^1.1.2" 279 | 280 | "@stacks/network@^6.8.1": 281 | version "6.8.1" 282 | resolved "https://registry.npmmirror.com/@stacks/network/-/network-6.8.1.tgz#87d19dee16066b3acc3582f790f88386ac998496" 283 | integrity sha512-n8M25pPbLqpSBctabtsLOTBlmPvm9EPQpTI//x7HLdt5lEjDXxauEQt0XGSvDUZwecrmztqt9xNxlciiGApRBw== 284 | dependencies: 285 | "@stacks/common" "^6.8.1" 286 | cross-fetch "^3.1.5" 287 | 288 | "@stacks/transactions@^6.9.0": 289 | version "6.9.0" 290 | resolved "https://registry.npmmirror.com/@stacks/transactions/-/transactions-6.9.0.tgz#99082bccf271cd8254eea644c23a7d2b30281a63" 291 | integrity sha512-hSs9+0Ew++GwMZMgPObOx0iVCQRxkiCqI+DHdPEikAmg2utpyLh2/txHOjfSIkQHvcBfJJ6O5KphmxDP4gUqiA== 292 | dependencies: 293 | "@noble/hashes" "1.1.5" 294 | "@noble/secp256k1" "1.7.1" 295 | "@stacks/common" "^6.8.1" 296 | "@stacks/network" "^6.8.1" 297 | c32check "^2.0.0" 298 | lodash.clonedeep "^4.5.0" 299 | 300 | "@types/bn.js@^5.1.0": 301 | version "5.1.5" 302 | resolved "https://registry.npmmirror.com/@types/bn.js/-/bn.js-5.1.5.tgz#2e0dacdcce2c0f16b905d20ff87aedbc6f7b4bf0" 303 | integrity sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A== 304 | dependencies: 305 | "@types/node" "*" 306 | 307 | "@types/node@*": 308 | version "20.8.6" 309 | resolved "https://registry.npmmirror.com/@types/node/-/node-20.8.6.tgz#0dbd4ebcc82ad0128df05d0e6f57e05359ee47fa" 310 | integrity sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ== 311 | dependencies: 312 | undici-types "~5.25.1" 313 | 314 | "@types/node@^18.0.4": 315 | version "18.18.9" 316 | resolved "https://registry.npmmirror.com/@types/node/-/node-18.18.9.tgz#5527ea1832db3bba8eb8023ce8497b7d3f299592" 317 | integrity sha512-0f5klcuImLnG4Qreu9hPj/rEfFq6YRc5n2mAjSsH+ec/mJL+3voBH0+8T7o8RpFjH7ovc+TRsL/c7OYIQsPTfQ== 318 | dependencies: 319 | undici-types "~5.26.4" 320 | 321 | "@types/node@^20.6.2": 322 | version "20.6.2" 323 | resolved "https://registry.npmmirror.com/@types/node/-/node-20.6.2.tgz#a065925409f59657022e9063275cd0b9bd7e1b12" 324 | integrity sha512-Y+/1vGBHV/cYk6OI1Na/LHzwnlNCAfU3ZNGrc1LdRe/LAIbdDPTTv/HU3M7yXN448aTVDq3eKRm2cg7iKLb8gw== 325 | 326 | "@types/pbkdf2@^3.0.0": 327 | version "3.1.2" 328 | resolved "https://registry.npmmirror.com/@types/pbkdf2/-/pbkdf2-3.1.2.tgz#2dc43808e9985a2c69ff02e2d2027bd4fe33e8dc" 329 | integrity sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew== 330 | dependencies: 331 | "@types/node" "*" 332 | 333 | "@types/progress@^2.0.6": 334 | version "2.0.6" 335 | resolved "https://registry.npmmirror.com/@types/progress/-/progress-2.0.6.tgz#c1b9fde048c8e3040945265fdb948edf6d583762" 336 | integrity sha512-VMoR0SmxPQFOZ7Sege+q2gswFNq/bHDSMcWv3sEaPqAkbvYYzCOJJzpmAupgYqXn3AXWWmyAWlw8x5tzRDNR7g== 337 | dependencies: 338 | "@types/node" "*" 339 | 340 | "@types/secp256k1@^4.0.1": 341 | version "4.0.6" 342 | resolved "https://registry.npmmirror.com/@types/secp256k1/-/secp256k1-4.0.6.tgz#d60ba2349a51c2cbc5e816dcd831a42029d376bf" 343 | integrity sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ== 344 | dependencies: 345 | "@types/node" "*" 346 | 347 | "@types/ws@8.5.3": 348 | version "8.5.3" 349 | resolved "https://registry.npmmirror.com/@types/ws/-/ws-8.5.3.tgz#7d25a1ffbecd3c4f2d35068d0b283c037003274d" 350 | integrity sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w== 351 | dependencies: 352 | "@types/node" "*" 353 | 354 | abstract-level@^1.0.2: 355 | version "1.0.3" 356 | resolved "https://registry.npmmirror.com/abstract-level/-/abstract-level-1.0.3.tgz#78a67d3d84da55ee15201486ab44c09560070741" 357 | integrity sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA== 358 | dependencies: 359 | buffer "^6.0.3" 360 | catering "^2.1.0" 361 | is-buffer "^2.0.5" 362 | level-supports "^4.0.0" 363 | level-transcoder "^1.0.1" 364 | module-error "^1.0.1" 365 | queue-microtask "^1.2.3" 366 | 367 | asynckit@^0.4.0: 368 | version "0.4.0" 369 | resolved "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 370 | integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== 371 | 372 | available-typed-arrays@^1.0.5: 373 | version "1.0.5" 374 | resolved "https://registry.npmmirror.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" 375 | integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== 376 | 377 | axios@^1.5.0: 378 | version "1.5.0" 379 | resolved "https://registry.npmmirror.com/axios/-/axios-1.5.0.tgz#f02e4af823e2e46a9768cfc74691fdd0517ea267" 380 | integrity sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ== 381 | dependencies: 382 | follow-redirects "^1.15.0" 383 | form-data "^4.0.0" 384 | proxy-from-env "^1.1.0" 385 | 386 | base-x@^3.0.2: 387 | version "3.0.9" 388 | resolved "https://registry.npmmirror.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" 389 | integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== 390 | dependencies: 391 | safe-buffer "^5.0.1" 392 | 393 | base-x@^4.0.0: 394 | version "4.0.0" 395 | resolved "https://registry.npmmirror.com/base-x/-/base-x-4.0.0.tgz#d0e3b7753450c73f8ad2389b5c018a4af7b2224a" 396 | integrity sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw== 397 | 398 | base64-js@^1.3.1, base64-js@^1.5.1: 399 | version "1.5.1" 400 | resolved "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" 401 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 402 | 403 | bech32@=2.0.0, bech32@^2.0.0: 404 | version "2.0.0" 405 | resolved "https://registry.npmmirror.com/bech32/-/bech32-2.0.0.tgz#078d3686535075c8c79709f054b1b226a133b355" 406 | integrity sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg== 407 | 408 | bech32@^1.1.3: 409 | version "1.1.4" 410 | resolved "https://registry.npmmirror.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" 411 | integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== 412 | 413 | bigi@^1.1.0, bigi@^1.4.2: 414 | version "1.4.2" 415 | resolved "https://registry.npmmirror.com/bigi/-/bigi-1.4.2.tgz#9c665a95f88b8b08fc05cfd731f561859d725825" 416 | integrity sha512-ddkU+dFIuEIW8lE7ZwdIAf2UPoM90eaprg5m3YXAVVTmKlqV/9BX4A2M8BOK2yOq6/VgZFVhK6QAxJebhlbhzw== 417 | 418 | bindings@^1.5.0: 419 | version "1.5.0" 420 | resolved "https://registry.npmmirror.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" 421 | integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== 422 | dependencies: 423 | file-uri-to-path "1.0.0" 424 | 425 | bip-schnorr@=0.6.4: 426 | version "0.6.4" 427 | resolved "https://registry.npmmirror.com/bip-schnorr/-/bip-schnorr-0.6.4.tgz#6fde7f301fe6b207dbd05f8ec2caf08fa5a51d0d" 428 | integrity sha512-dNKw7Lea8B0wMIN4OjEmOk/Z5qUGqoPDY0P2QttLqGk1hmDPytLWW8PR5Pb6Vxy6CprcdEgfJpOjUu+ONQveyg== 429 | dependencies: 430 | bigi "^1.4.2" 431 | ecurve "^1.0.6" 432 | js-sha256 "^0.9.0" 433 | randombytes "^2.1.0" 434 | safe-buffer "^5.2.1" 435 | 436 | bip174@^2.1.1: 437 | version "2.1.1" 438 | resolved "https://registry.npmmirror.com/bip174/-/bip174-2.1.1.tgz#ef3e968cf76de234a546962bcf572cc150982f9f" 439 | integrity sha512-mdFV5+/v0XyNYXjBS6CQPLo9ekCx4gtKZFnJm5PMto7Fs9hTTDpkkzOB7/FtluRI6JbUUAu+snTYfJRgHLZbZQ== 440 | 441 | bip322-js@^1.1.0: 442 | version "1.1.0" 443 | resolved "https://registry.npmmirror.com/bip322-js/-/bip322-js-1.1.0.tgz#1c827a5d749080a897ec380f103fa12a1d67743b" 444 | integrity sha512-Nxyw4lnhh4qm/zitfagJYpO7HofkABbt7Cce+Wiy4PGeilJ/hOvtqM0pxmTZxMoOhRnvDPZ55NzkFPrsyq43ew== 445 | dependencies: 446 | "@bitcoinerlab/secp256k1" "^1.0.2" 447 | bitcoinjs-lib "^6.1.1" 448 | bitcoinjs-message "^2.2.0" 449 | ecpair "^2.1.0" 450 | fast-sha256 "^1.3.0" 451 | secp256k1 "^5.0.0" 452 | 453 | bip32@^4.0.0: 454 | version "4.0.0" 455 | resolved "https://registry.npmmirror.com/bip32/-/bip32-4.0.0.tgz#7fac3c05072188d2d355a4d6596b37188f06aa2f" 456 | integrity sha512-aOGy88DDlVUhspIXJN+dVEtclhIsfAUppD43V0j40cPTld3pv/0X/MlrZSZ6jowIaQQzFwP8M6rFU2z2mVYjDQ== 457 | dependencies: 458 | "@noble/hashes" "^1.2.0" 459 | "@scure/base" "^1.1.1" 460 | typeforce "^1.11.5" 461 | wif "^2.0.6" 462 | 463 | bip66@^1.1.5: 464 | version "1.1.5" 465 | resolved "https://registry.npmmirror.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" 466 | integrity sha512-nemMHz95EmS38a26XbbdxIYj5csHd3RMP3H5bwQknX0WYHF01qhpufP42mLOwVICuH2JmhIhXiWs89MfUGL7Xw== 467 | dependencies: 468 | safe-buffer "^5.0.1" 469 | 470 | bitcoinjs-lib@^6.1.1, bitcoinjs-lib@^6.1.5: 471 | version "6.1.5" 472 | resolved "https://registry.npmmirror.com/bitcoinjs-lib/-/bitcoinjs-lib-6.1.5.tgz#3b03509ae7ddd80a440f10fc38c4a97f0a028d8c" 473 | integrity sha512-yuf6xs9QX/E8LWE2aMJPNd0IxGofwfuVOiYdNUESkc+2bHHVKjhJd8qewqapeoolh9fihzHGoDCB5Vkr57RZCQ== 474 | dependencies: 475 | "@noble/hashes" "^1.2.0" 476 | bech32 "^2.0.0" 477 | bip174 "^2.1.1" 478 | bs58check "^3.0.1" 479 | typeforce "^1.11.3" 480 | varuint-bitcoin "^1.1.2" 481 | 482 | bitcoinjs-message@^2.2.0: 483 | version "2.2.0" 484 | resolved "https://registry.npmmirror.com/bitcoinjs-message/-/bitcoinjs-message-2.2.0.tgz#8116ec7f447f9889e23030fc15c5286a6ae5503b" 485 | integrity sha512-103Wy3xg8Y9o+pdhGP4M3/mtQQuUWs6sPuOp1mYphSUoSMHjHTlkj32K4zxU8qMH0Ckv23emfkGlFWtoWZ7YFA== 486 | dependencies: 487 | bech32 "^1.1.3" 488 | bs58check "^2.1.2" 489 | buffer-equals "^1.0.3" 490 | create-hash "^1.1.2" 491 | secp256k1 "^3.0.1" 492 | varuint-bitcoin "^1.0.1" 493 | 494 | bitcore-lib@^10.0.11: 495 | version "10.0.11" 496 | resolved "https://registry.npmmirror.com/bitcore-lib/-/bitcore-lib-10.0.11.tgz#f717fd81b06a58c1907601746ece61561800635a" 497 | integrity sha512-/gAKABXdQrOBuM4aOZBHtpHNcWrIrf6CPYYcMIPsj7FHhkEfLggWnAY0vc7bHnmIStVpiKVe7LpLtX8frirMRA== 498 | dependencies: 499 | bech32 "=2.0.0" 500 | bip-schnorr "=0.6.4" 501 | bn.js "=4.11.8" 502 | bs58 "^4.0.1" 503 | buffer-compare "=1.1.1" 504 | elliptic "^6.5.3" 505 | inherits "=2.0.1" 506 | lodash "^4.17.20" 507 | 508 | blakejs@^1.1.0: 509 | version "1.2.1" 510 | resolved "https://registry.npmmirror.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" 511 | integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== 512 | 513 | bn.js@=4.11.8: 514 | version "4.11.8" 515 | resolved "https://registry.npmmirror.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" 516 | integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== 517 | 518 | bn.js@^4.11.8, bn.js@^4.11.9: 519 | version "4.12.0" 520 | resolved "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" 521 | integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== 522 | 523 | bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: 524 | version "5.2.1" 525 | resolved "https://registry.npmmirror.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" 526 | integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== 527 | 528 | brorand@^1.1.0: 529 | version "1.1.0" 530 | resolved "https://registry.npmmirror.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" 531 | integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== 532 | 533 | browser-level@^1.0.1: 534 | version "1.0.1" 535 | resolved "https://registry.npmmirror.com/browser-level/-/browser-level-1.0.1.tgz#36e8c3183d0fe1c405239792faaab5f315871011" 536 | integrity sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ== 537 | dependencies: 538 | abstract-level "^1.0.2" 539 | catering "^2.1.1" 540 | module-error "^1.0.2" 541 | run-parallel-limit "^1.1.0" 542 | 543 | browserify-aes@^1.0.6, browserify-aes@^1.2.0: 544 | version "1.2.0" 545 | resolved "https://registry.npmmirror.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" 546 | integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== 547 | dependencies: 548 | buffer-xor "^1.0.3" 549 | cipher-base "^1.0.0" 550 | create-hash "^1.1.0" 551 | evp_bytestokey "^1.0.3" 552 | inherits "^2.0.1" 553 | safe-buffer "^5.0.1" 554 | 555 | bs58@^4.0.0, bs58@^4.0.1: 556 | version "4.0.1" 557 | resolved "https://registry.npmmirror.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" 558 | integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== 559 | dependencies: 560 | base-x "^3.0.2" 561 | 562 | bs58@^5.0.0: 563 | version "5.0.0" 564 | resolved "https://registry.npmmirror.com/bs58/-/bs58-5.0.0.tgz#865575b4d13c09ea2a84622df6c8cbeb54ffc279" 565 | integrity sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ== 566 | dependencies: 567 | base-x "^4.0.0" 568 | 569 | bs58check@<3.0.0, bs58check@^2.1.2: 570 | version "2.1.2" 571 | resolved "https://registry.npmmirror.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" 572 | integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== 573 | dependencies: 574 | bs58 "^4.0.0" 575 | create-hash "^1.1.0" 576 | safe-buffer "^5.1.2" 577 | 578 | bs58check@^3.0.1: 579 | version "3.0.1" 580 | resolved "https://registry.npmmirror.com/bs58check/-/bs58check-3.0.1.tgz#2094d13720a28593de1cba1d8c4e48602fdd841c" 581 | integrity sha512-hjuuJvoWEybo7Hn/0xOrczQKKEKD63WguEjlhLExYs2wUBcebDC1jDNK17eEAD2lYfw82d5ASC1d7K3SWszjaQ== 582 | dependencies: 583 | "@noble/hashes" "^1.2.0" 584 | bs58 "^5.0.0" 585 | 586 | buffer-compare@=1.1.1: 587 | version "1.1.1" 588 | resolved "https://registry.npmmirror.com/buffer-compare/-/buffer-compare-1.1.1.tgz#5be7be853af89198d1f4ddc090d1d66a48aef596" 589 | integrity sha512-O6NvNiHZMd3mlIeMDjP6t/gPG75OqGPeiRZXoMQZJ6iy9GofCls4Ijs5YkPZZwoysizLiedhticmdyx/GyHghA== 590 | 591 | buffer-equals@^1.0.3: 592 | version "1.0.4" 593 | resolved "https://registry.npmmirror.com/buffer-equals/-/buffer-equals-1.0.4.tgz#0353b54fd07fd9564170671ae6f66b9cf10d27f5" 594 | integrity sha512-99MsCq0j5+RhubVEtKQgKaD6EM+UP3xJgIvQqwJ3SOLDUekzxMX1ylXBng+Wa2sh7mGT0W6RUly8ojjr1Tt6nA== 595 | 596 | buffer-xor@^1.0.3: 597 | version "1.0.3" 598 | resolved "https://registry.npmmirror.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" 599 | integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== 600 | 601 | buffer@^6.0.3: 602 | version "6.0.3" 603 | resolved "https://registry.npmmirror.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" 604 | integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== 605 | dependencies: 606 | base64-js "^1.3.1" 607 | ieee754 "^1.2.1" 608 | 609 | c32check@^2.0.0: 610 | version "2.0.0" 611 | resolved "https://registry.npmmirror.com/c32check/-/c32check-2.0.0.tgz#b9365618b2fb135c0783d03f00605b7b0f90c659" 612 | integrity sha512-rpwfAcS/CMqo0oCqDf3r9eeLgScRE3l/xHDCXhM3UyrfvIn7PrLq63uHh7yYbv8NzaZn5MVsVhIRpQ+5GZ5HyA== 613 | dependencies: 614 | "@noble/hashes" "^1.1.2" 615 | base-x "^4.0.0" 616 | 617 | call-bind@^1.0.2: 618 | version "1.0.2" 619 | resolved "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 620 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 621 | dependencies: 622 | function-bind "^1.1.1" 623 | get-intrinsic "^1.0.2" 624 | 625 | catering@^2.1.0, catering@^2.1.1: 626 | version "2.1.1" 627 | resolved "https://registry.npmmirror.com/catering/-/catering-2.1.1.tgz#66acba06ed5ee28d5286133982a927de9a04b510" 628 | integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== 629 | 630 | cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: 631 | version "1.0.4" 632 | resolved "https://registry.npmmirror.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" 633 | integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== 634 | dependencies: 635 | inherits "^2.0.1" 636 | safe-buffer "^5.0.1" 637 | 638 | classic-level@^1.2.0: 639 | version "1.3.0" 640 | resolved "https://registry.npmmirror.com/classic-level/-/classic-level-1.3.0.tgz#5e36680e01dc6b271775c093f2150844c5edd5c8" 641 | integrity sha512-iwFAJQYtqRTRM0F6L8h4JCt00ZSGdOyqh7yVrhhjrOpFhmBjNlRUey64MCiyo6UmQHMJ+No3c81nujPv+n9yrg== 642 | dependencies: 643 | abstract-level "^1.0.2" 644 | catering "^2.1.0" 645 | module-error "^1.0.1" 646 | napi-macros "^2.2.2" 647 | node-gyp-build "^4.3.0" 648 | 649 | combined-stream@^1.0.8: 650 | version "1.0.8" 651 | resolved "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 652 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 653 | dependencies: 654 | delayed-stream "~1.0.0" 655 | 656 | crc-32@^1.2.2: 657 | version "1.2.2" 658 | resolved "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" 659 | integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== 660 | 661 | create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: 662 | version "1.2.0" 663 | resolved "https://registry.npmmirror.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" 664 | integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== 665 | dependencies: 666 | cipher-base "^1.0.1" 667 | inherits "^2.0.1" 668 | md5.js "^1.3.4" 669 | ripemd160 "^2.0.1" 670 | sha.js "^2.4.0" 671 | 672 | create-hmac@^1.1.4, create-hmac@^1.1.7: 673 | version "1.1.7" 674 | resolved "https://registry.npmmirror.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" 675 | integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== 676 | dependencies: 677 | cipher-base "^1.0.3" 678 | create-hash "^1.1.0" 679 | inherits "^2.0.1" 680 | ripemd160 "^2.0.0" 681 | safe-buffer "^5.0.1" 682 | sha.js "^2.4.8" 683 | 684 | cross-fetch@^3.1.5: 685 | version "3.1.8" 686 | resolved "https://registry.npmmirror.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" 687 | integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== 688 | dependencies: 689 | node-fetch "^2.6.12" 690 | 691 | delayed-stream@~1.0.0: 692 | version "1.0.0" 693 | resolved "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 694 | integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== 695 | 696 | dotenv@^16.3.1: 697 | version "16.3.1" 698 | resolved "https://registry.npmmirror.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" 699 | integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== 700 | 701 | drbg.js@^1.0.1: 702 | version "1.0.1" 703 | resolved "https://registry.npmmirror.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" 704 | integrity sha512-F4wZ06PvqxYLFEZKkFxTDcns9oFNk34hvmJSEwdzsxVQ8YI5YaxtACgQatkYgv2VI2CFkUd2Y+xosPQnHv809g== 705 | dependencies: 706 | browserify-aes "^1.0.6" 707 | create-hash "^1.1.2" 708 | create-hmac "^1.1.4" 709 | 710 | ecpair@^2.1.0: 711 | version "2.1.0" 712 | resolved "https://registry.npmmirror.com/ecpair/-/ecpair-2.1.0.tgz#673f826b1d80d5eb091b8e2010c6b588e8d2cb45" 713 | integrity sha512-cL/mh3MtJutFOvFc27GPZE2pWL3a3k4YvzUWEOvilnfZVlH3Jwgx/7d6tlD7/75tNk8TG2m+7Kgtz0SI1tWcqw== 714 | dependencies: 715 | randombytes "^2.1.0" 716 | typeforce "^1.18.0" 717 | wif "^2.0.6" 718 | 719 | ecurve@^1.0.6: 720 | version "1.0.6" 721 | resolved "https://registry.npmmirror.com/ecurve/-/ecurve-1.0.6.tgz#dfdabbb7149f8d8b78816be5a7d5b83fcf6de797" 722 | integrity sha512-/BzEjNfiSuB7jIWKcS/z8FK9jNjmEWvUV2YZ4RLSmcDtP7Lq0m6FvDuSnJpBlDpGRpfRQeTLGLBI8H+kEv0r+w== 723 | dependencies: 724 | bigi "^1.1.0" 725 | safe-buffer "^5.0.1" 726 | 727 | elliptic@6.5.4, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4: 728 | version "6.5.4" 729 | resolved "https://registry.npmmirror.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" 730 | integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== 731 | dependencies: 732 | bn.js "^4.11.9" 733 | brorand "^1.1.0" 734 | hash.js "^1.0.0" 735 | hmac-drbg "^1.0.1" 736 | inherits "^2.0.4" 737 | minimalistic-assert "^1.0.1" 738 | minimalistic-crypto-utils "^1.0.1" 739 | 740 | ethereum-cryptography@^0.1.3: 741 | version "0.1.3" 742 | resolved "https://registry.npmmirror.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" 743 | integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== 744 | dependencies: 745 | "@types/pbkdf2" "^3.0.0" 746 | "@types/secp256k1" "^4.0.1" 747 | blakejs "^1.1.0" 748 | browserify-aes "^1.2.0" 749 | bs58check "^2.1.2" 750 | create-hash "^1.2.0" 751 | create-hmac "^1.1.7" 752 | hash.js "^1.1.7" 753 | keccak "^3.0.0" 754 | pbkdf2 "^3.0.17" 755 | randombytes "^2.1.0" 756 | safe-buffer "^5.1.2" 757 | scrypt-js "^3.0.0" 758 | secp256k1 "^4.0.1" 759 | setimmediate "^1.0.5" 760 | 761 | ethereum-cryptography@^2.0.0: 762 | version "2.1.2" 763 | resolved "https://registry.npmmirror.com/ethereum-cryptography/-/ethereum-cryptography-2.1.2.tgz#18fa7108622e56481157a5cb7c01c0c6a672eb67" 764 | integrity sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug== 765 | dependencies: 766 | "@noble/curves" "1.1.0" 767 | "@noble/hashes" "1.3.1" 768 | "@scure/bip32" "1.3.1" 769 | "@scure/bip39" "1.2.1" 770 | 771 | ethereumjs-util@^7.1.5: 772 | version "7.1.5" 773 | resolved "https://registry.npmmirror.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" 774 | integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== 775 | dependencies: 776 | "@types/bn.js" "^5.1.0" 777 | bn.js "^5.1.2" 778 | create-hash "^1.1.2" 779 | ethereum-cryptography "^0.1.3" 780 | rlp "^2.2.4" 781 | 782 | evp_bytestokey@^1.0.3: 783 | version "1.0.3" 784 | resolved "https://registry.npmmirror.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" 785 | integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== 786 | dependencies: 787 | md5.js "^1.3.4" 788 | safe-buffer "^5.1.1" 789 | 790 | fast-sha256@^1.3.0: 791 | version "1.3.0" 792 | resolved "https://registry.npmmirror.com/fast-sha256/-/fast-sha256-1.3.0.tgz#7916ba2054eeb255982608cccd0f6660c79b7ae6" 793 | integrity sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ== 794 | 795 | file-uri-to-path@1.0.0: 796 | version "1.0.0" 797 | resolved "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" 798 | integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== 799 | 800 | follow-redirects@^1.15.0: 801 | version "1.15.5" 802 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.5.tgz#54d4d6d062c0fa7d9d17feb008461550e3ba8020" 803 | integrity sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw== 804 | 805 | for-each@^0.3.3: 806 | version "0.3.3" 807 | resolved "https://registry.npmmirror.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" 808 | integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== 809 | dependencies: 810 | is-callable "^1.1.3" 811 | 812 | form-data@^4.0.0: 813 | version "4.0.0" 814 | resolved "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" 815 | integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== 816 | dependencies: 817 | asynckit "^0.4.0" 818 | combined-stream "^1.0.8" 819 | mime-types "^2.1.12" 820 | 821 | function-bind@^1.1.1: 822 | version "1.1.2" 823 | resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" 824 | integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== 825 | 826 | get-intrinsic@^1.0.2, get-intrinsic@^1.1.3: 827 | version "1.2.1" 828 | resolved "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" 829 | integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== 830 | dependencies: 831 | function-bind "^1.1.1" 832 | has "^1.0.3" 833 | has-proto "^1.0.1" 834 | has-symbols "^1.0.3" 835 | 836 | gopd@^1.0.1: 837 | version "1.0.1" 838 | resolved "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" 839 | integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== 840 | dependencies: 841 | get-intrinsic "^1.1.3" 842 | 843 | has-proto@^1.0.1: 844 | version "1.0.1" 845 | resolved "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" 846 | integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== 847 | 848 | has-symbols@^1.0.2, has-symbols@^1.0.3: 849 | version "1.0.3" 850 | resolved "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" 851 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== 852 | 853 | has-tostringtag@^1.0.0: 854 | version "1.0.0" 855 | resolved "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" 856 | integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== 857 | dependencies: 858 | has-symbols "^1.0.2" 859 | 860 | has@^1.0.3: 861 | version "1.0.4" 862 | resolved "https://registry.npmmirror.com/has/-/has-1.0.4.tgz#2eb2860e000011dae4f1406a86fe80e530fb2ec6" 863 | integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== 864 | 865 | hash-base@^3.0.0: 866 | version "3.1.0" 867 | resolved "https://registry.npmmirror.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" 868 | integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== 869 | dependencies: 870 | inherits "^2.0.4" 871 | readable-stream "^3.6.0" 872 | safe-buffer "^5.2.0" 873 | 874 | hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: 875 | version "1.1.7" 876 | resolved "https://registry.npmmirror.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" 877 | integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== 878 | dependencies: 879 | inherits "^2.0.3" 880 | minimalistic-assert "^1.0.1" 881 | 882 | hmac-drbg@^1.0.1: 883 | version "1.0.1" 884 | resolved "https://registry.npmmirror.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" 885 | integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== 886 | dependencies: 887 | hash.js "^1.0.3" 888 | minimalistic-assert "^1.0.0" 889 | minimalistic-crypto-utils "^1.0.1" 890 | 891 | ieee754@^1.2.1: 892 | version "1.2.1" 893 | resolved "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" 894 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 895 | 896 | inherits@=2.0.1: 897 | version "2.0.1" 898 | resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" 899 | integrity sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA== 900 | 901 | inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4: 902 | version "2.0.4" 903 | resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 904 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 905 | 906 | is-arguments@^1.0.4: 907 | version "1.1.1" 908 | resolved "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" 909 | integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== 910 | dependencies: 911 | call-bind "^1.0.2" 912 | has-tostringtag "^1.0.0" 913 | 914 | is-buffer@^2.0.5: 915 | version "2.0.5" 916 | resolved "https://registry.npmmirror.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" 917 | integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== 918 | 919 | is-callable@^1.1.3: 920 | version "1.2.7" 921 | resolved "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" 922 | integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== 923 | 924 | is-generator-function@^1.0.7: 925 | version "1.0.10" 926 | resolved "https://registry.npmmirror.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" 927 | integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== 928 | dependencies: 929 | has-tostringtag "^1.0.0" 930 | 931 | is-typed-array@^1.1.3: 932 | version "1.1.12" 933 | resolved "https://registry.npmmirror.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" 934 | integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== 935 | dependencies: 936 | which-typed-array "^1.1.11" 937 | 938 | isomorphic-ws@^5.0.0: 939 | version "5.0.0" 940 | resolved "https://registry.npmmirror.com/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz#e5529148912ecb9b451b46ed44d53dae1ce04bbf" 941 | integrity sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw== 942 | 943 | js-sha256@^0.9.0: 944 | version "0.9.0" 945 | resolved "https://registry.npmmirror.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966" 946 | integrity sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA== 947 | 948 | js-sha3@0.8.0: 949 | version "0.8.0" 950 | resolved "https://registry.npmmirror.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" 951 | integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== 952 | 953 | keccak@^3.0.0: 954 | version "3.0.4" 955 | resolved "https://registry.npmmirror.com/keccak/-/keccak-3.0.4.tgz#edc09b89e633c0549da444432ecf062ffadee86d" 956 | integrity sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q== 957 | dependencies: 958 | node-addon-api "^2.0.0" 959 | node-gyp-build "^4.2.0" 960 | readable-stream "^3.6.0" 961 | 962 | level-supports@^4.0.0: 963 | version "4.0.1" 964 | resolved "https://registry.npmmirror.com/level-supports/-/level-supports-4.0.1.tgz#431546f9d81f10ff0fea0e74533a0e875c08c66a" 965 | integrity sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA== 966 | 967 | level-transcoder@^1.0.1: 968 | version "1.0.1" 969 | resolved "https://registry.npmmirror.com/level-transcoder/-/level-transcoder-1.0.1.tgz#f8cef5990c4f1283d4c86d949e73631b0bc8ba9c" 970 | integrity sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w== 971 | dependencies: 972 | buffer "^6.0.3" 973 | module-error "^1.0.1" 974 | 975 | level@^8.0.0: 976 | version "8.0.0" 977 | resolved "https://registry.npmmirror.com/level/-/level-8.0.0.tgz#41b4c515dabe28212a3e881b61c161ffead14394" 978 | integrity sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ== 979 | dependencies: 980 | browser-level "^1.0.1" 981 | classic-level "^1.2.0" 982 | 983 | lodash.clonedeep@^4.5.0: 984 | version "4.5.0" 985 | resolved "https://registry.npmmirror.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" 986 | integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== 987 | 988 | lodash@^4.17.20: 989 | version "4.17.21" 990 | resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 991 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 992 | 993 | md5.js@^1.3.4: 994 | version "1.3.5" 995 | resolved "https://registry.npmmirror.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" 996 | integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== 997 | dependencies: 998 | hash-base "^3.0.0" 999 | inherits "^2.0.1" 1000 | safe-buffer "^5.1.2" 1001 | 1002 | mime-db@1.52.0: 1003 | version "1.52.0" 1004 | resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 1005 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 1006 | 1007 | mime-types@^2.1.12: 1008 | version "2.1.35" 1009 | resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 1010 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 1011 | dependencies: 1012 | mime-db "1.52.0" 1013 | 1014 | minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: 1015 | version "1.0.1" 1016 | resolved "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" 1017 | integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== 1018 | 1019 | minimalistic-crypto-utils@^1.0.1: 1020 | version "1.0.1" 1021 | resolved "https://registry.npmmirror.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" 1022 | integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== 1023 | 1024 | module-error@^1.0.1, module-error@^1.0.2: 1025 | version "1.0.2" 1026 | resolved "https://registry.npmmirror.com/module-error/-/module-error-1.0.2.tgz#8d1a48897ca883f47a45816d4fb3e3c6ba404d86" 1027 | integrity sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA== 1028 | 1029 | nan@^2.14.0: 1030 | version "2.18.0" 1031 | resolved "https://registry.npmmirror.com/nan/-/nan-2.18.0.tgz#26a6faae7ffbeb293a39660e88a76b82e30b7554" 1032 | integrity sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w== 1033 | 1034 | napi-macros@^2.2.2: 1035 | version "2.2.2" 1036 | resolved "https://registry.npmmirror.com/napi-macros/-/napi-macros-2.2.2.tgz#817fef20c3e0e40a963fbf7b37d1600bd0201044" 1037 | integrity sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g== 1038 | 1039 | node-addon-api@^2.0.0: 1040 | version "2.0.2" 1041 | resolved "https://registry.npmmirror.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" 1042 | integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== 1043 | 1044 | node-addon-api@^5.0.0: 1045 | version "5.1.0" 1046 | resolved "https://registry.npmmirror.com/node-addon-api/-/node-addon-api-5.1.0.tgz#49da1ca055e109a23d537e9de43c09cca21eb762" 1047 | integrity sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA== 1048 | 1049 | node-fetch@^2.6.12: 1050 | version "2.7.0" 1051 | resolved "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" 1052 | integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== 1053 | dependencies: 1054 | whatwg-url "^5.0.0" 1055 | 1056 | node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: 1057 | version "4.6.1" 1058 | resolved "https://registry.npmmirror.com/node-gyp-build/-/node-gyp-build-4.6.1.tgz#24b6d075e5e391b8d5539d98c7fc5c210cac8a3e" 1059 | integrity sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ== 1060 | 1061 | pbkdf2@^3.0.17: 1062 | version "3.1.2" 1063 | resolved "https://registry.npmmirror.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" 1064 | integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== 1065 | dependencies: 1066 | create-hash "^1.1.2" 1067 | create-hmac "^1.1.4" 1068 | ripemd160 "^2.0.1" 1069 | safe-buffer "^5.0.1" 1070 | sha.js "^2.4.8" 1071 | 1072 | progress@^2.0.3: 1073 | version "2.0.3" 1074 | resolved "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 1075 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 1076 | 1077 | proxy-from-env@^1.1.0: 1078 | version "1.1.0" 1079 | resolved "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" 1080 | integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== 1081 | 1082 | queue-microtask@^1.2.2, queue-microtask@^1.2.3: 1083 | version "1.2.3" 1084 | resolved "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 1085 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 1086 | 1087 | randombytes@^2.1.0: 1088 | version "2.1.0" 1089 | resolved "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 1090 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 1091 | dependencies: 1092 | safe-buffer "^5.1.0" 1093 | 1094 | readable-stream@^3.6.0: 1095 | version "3.6.2" 1096 | resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" 1097 | integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== 1098 | dependencies: 1099 | inherits "^2.0.3" 1100 | string_decoder "^1.1.1" 1101 | util-deprecate "^1.0.1" 1102 | 1103 | ripemd160-min@^0.0.6: 1104 | version "0.0.6" 1105 | resolved "https://registry.npmmirror.com/ripemd160-min/-/ripemd160-min-0.0.6.tgz#a904b77658114474d02503e819dcc55853b67e62" 1106 | integrity sha512-+GcJgQivhs6S9qvLogusiTcS9kQUfgR75whKuy5jIhuiOfQuJ8fjqxV6EGD5duH1Y/FawFUMtMhyeq3Fbnib8A== 1107 | 1108 | ripemd160@^2.0.0, ripemd160@^2.0.1: 1109 | version "2.0.2" 1110 | resolved "https://registry.npmmirror.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" 1111 | integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== 1112 | dependencies: 1113 | hash-base "^3.0.0" 1114 | inherits "^2.0.1" 1115 | 1116 | rlp@^2.2.4: 1117 | version "2.2.7" 1118 | resolved "https://registry.npmmirror.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" 1119 | integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== 1120 | dependencies: 1121 | bn.js "^5.2.0" 1122 | 1123 | rlp@^3.0.0: 1124 | version "3.0.0" 1125 | resolved "https://registry.npmmirror.com/rlp/-/rlp-3.0.0.tgz#5a60725ca4314a3a165feecca1836e4f2c1e2343" 1126 | integrity sha512-PD6U2PGk6Vq2spfgiWZdomLvRGDreBLxi5jv5M8EpRo3pU6VEm31KO+HFxE18Q3vgqfDrQ9pZA3FP95rkijNKw== 1127 | 1128 | run-parallel-limit@^1.1.0: 1129 | version "1.1.0" 1130 | resolved "https://registry.npmmirror.com/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz#be80e936f5768623a38a963262d6bef8ff11e7ba" 1131 | integrity sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw== 1132 | dependencies: 1133 | queue-microtask "^1.2.2" 1134 | 1135 | safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: 1136 | version "5.2.1" 1137 | resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1138 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1139 | 1140 | scrypt-js@^3.0.0: 1141 | version "3.0.1" 1142 | resolved "https://registry.npmmirror.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" 1143 | integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== 1144 | 1145 | secp256k1@^3.0.1: 1146 | version "3.8.0" 1147 | resolved "https://registry.npmmirror.com/secp256k1/-/secp256k1-3.8.0.tgz#28f59f4b01dbee9575f56a47034b7d2e3b3b352d" 1148 | integrity sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw== 1149 | dependencies: 1150 | bindings "^1.5.0" 1151 | bip66 "^1.1.5" 1152 | bn.js "^4.11.8" 1153 | create-hash "^1.2.0" 1154 | drbg.js "^1.0.1" 1155 | elliptic "^6.5.2" 1156 | nan "^2.14.0" 1157 | safe-buffer "^5.1.2" 1158 | 1159 | secp256k1@^4.0.1: 1160 | version "4.0.3" 1161 | resolved "https://registry.npmmirror.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" 1162 | integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== 1163 | dependencies: 1164 | elliptic "^6.5.4" 1165 | node-addon-api "^2.0.0" 1166 | node-gyp-build "^4.2.0" 1167 | 1168 | secp256k1@^5.0.0: 1169 | version "5.0.0" 1170 | resolved "https://registry.npmmirror.com/secp256k1/-/secp256k1-5.0.0.tgz#be6f0c8c7722e2481e9773336d351de8cddd12f7" 1171 | integrity sha512-TKWX8xvoGHrxVdqbYeZM9w+izTF4b9z3NhSaDkdn81btvuh+ivbIMGT/zQvDtTFWhRlThpoz6LEYTr7n8A5GcA== 1172 | dependencies: 1173 | elliptic "^6.5.4" 1174 | node-addon-api "^5.0.0" 1175 | node-gyp-build "^4.2.0" 1176 | 1177 | setimmediate@^1.0.5: 1178 | version "1.0.5" 1179 | resolved "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" 1180 | integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== 1181 | 1182 | sha.js@^2.4.0, sha.js@^2.4.8: 1183 | version "2.4.11" 1184 | resolved "https://registry.npmmirror.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" 1185 | integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== 1186 | dependencies: 1187 | inherits "^2.0.1" 1188 | safe-buffer "^5.0.1" 1189 | 1190 | string_decoder@^1.1.1: 1191 | version "1.3.0" 1192 | resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 1193 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 1194 | dependencies: 1195 | safe-buffer "~5.2.0" 1196 | 1197 | tiny-secp256k1@^2.2.3: 1198 | version "2.2.3" 1199 | resolved "https://registry.npmmirror.com/tiny-secp256k1/-/tiny-secp256k1-2.2.3.tgz#fe1dde11a64fcee2091157d4b78bcb300feb9b65" 1200 | integrity sha512-SGcL07SxcPN2nGKHTCvRMkQLYPSoeFcvArUSCYtjVARiFAWU44cCIqYS0mYAU6nY7XfvwURuTIGo2Omt3ZQr0Q== 1201 | dependencies: 1202 | uint8array-tools "0.0.7" 1203 | 1204 | tr46@~0.0.3: 1205 | version "0.0.3" 1206 | resolved "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" 1207 | integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== 1208 | 1209 | typeforce@^1.11.3, typeforce@^1.11.5, typeforce@^1.18.0: 1210 | version "1.18.0" 1211 | resolved "https://registry.npmmirror.com/typeforce/-/typeforce-1.18.0.tgz#d7416a2c5845e085034d70fcc5b6cc4a90edbfdc" 1212 | integrity sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g== 1213 | 1214 | typescript@^5.2.2: 1215 | version "5.2.2" 1216 | resolved "https://registry.npmmirror.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" 1217 | integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== 1218 | 1219 | uint8array-tools@0.0.7: 1220 | version "0.0.7" 1221 | resolved "https://registry.npmmirror.com/uint8array-tools/-/uint8array-tools-0.0.7.tgz#a7a2bb5d8836eae2fade68c771454e6a438b390d" 1222 | integrity sha512-vrrNZJiusLWoFWBqz5Y5KMCgP9W9hnjZHzZiZRT8oNAkq3d5Z5Oe76jAvVVSRh4U8GGR90N2X1dWtrhvx6L8UQ== 1223 | 1224 | undici-types@~5.25.1: 1225 | version "5.25.3" 1226 | resolved "https://registry.npmmirror.com/undici-types/-/undici-types-5.25.3.tgz#e044115914c85f0bcbb229f346ab739f064998c3" 1227 | integrity sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA== 1228 | 1229 | undici-types@~5.26.4: 1230 | version "5.26.5" 1231 | resolved "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" 1232 | integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== 1233 | 1234 | util-deprecate@^1.0.1: 1235 | version "1.0.2" 1236 | resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1237 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== 1238 | 1239 | util@^0.12.5: 1240 | version "0.12.5" 1241 | resolved "https://registry.npmmirror.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" 1242 | integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== 1243 | dependencies: 1244 | inherits "^2.0.3" 1245 | is-arguments "^1.0.4" 1246 | is-generator-function "^1.0.7" 1247 | is-typed-array "^1.1.3" 1248 | which-typed-array "^1.1.2" 1249 | 1250 | varuint-bitcoin@^1.0.1, varuint-bitcoin@^1.1.2: 1251 | version "1.1.2" 1252 | resolved "https://registry.npmmirror.com/varuint-bitcoin/-/varuint-bitcoin-1.1.2.tgz#e76c138249d06138b480d4c5b40ef53693e24e92" 1253 | integrity sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw== 1254 | dependencies: 1255 | safe-buffer "^5.1.1" 1256 | 1257 | web3-core@^4.2.0: 1258 | version "4.2.0" 1259 | resolved "https://registry.npmmirror.com/web3-core/-/web3-core-4.2.0.tgz#b4527ddb51e69724cf04af265746444f3a7c97bc" 1260 | integrity sha512-pkZJx3HAY3b3CutaFarODFgK3TDvcXC4T0n8cpvwiZjDzakUUFAssVUDwrmFyCFKAo5kmfs6qWFW7BAZLJeBFA== 1261 | dependencies: 1262 | web3-errors "^1.1.2" 1263 | web3-eth-iban "^4.0.6" 1264 | web3-providers-http "^4.0.6" 1265 | web3-providers-ws "^4.0.6" 1266 | web3-types "^1.2.0" 1267 | web3-utils "^4.0.6" 1268 | web3-validator "^2.0.2" 1269 | optionalDependencies: 1270 | web3-providers-ipc "^4.0.6" 1271 | 1272 | web3-errors@^1.1.2: 1273 | version "1.1.2" 1274 | resolved "https://registry.npmmirror.com/web3-errors/-/web3-errors-1.1.2.tgz#aa60ed7ca3e0e00039f0e2556c8c5b840a0f1399" 1275 | integrity sha512-qlyuV5r6MzjLasIalVWBIIfW4Y7hBX2bZv8TRnXvI1EjiZ36zIFKgE9RF+/iRBjXmOsvIUQQ2Z9gMvYGfOwUwQ== 1276 | dependencies: 1277 | web3-types "^1.2.0" 1278 | 1279 | web3-eth-abi@^4.1.2: 1280 | version "4.1.2" 1281 | resolved "https://registry.npmmirror.com/web3-eth-abi/-/web3-eth-abi-4.1.2.tgz#a7b262ce0ad12aa4af1edc6f89053fb1d39010d4" 1282 | integrity sha512-s8gvjUwzb2ZnAef0Jy68pjmeshYIKBoYlVj/1yuuFP9t3io3oQQIEyGlaCx7P4ifsZ186gMa4QjCCeIt7HYm7Q== 1283 | dependencies: 1284 | "@ethersproject/abi" "^5.7.0" 1285 | "@ethersproject/bignumber" "^5.7.0" 1286 | web3-errors "^1.1.2" 1287 | web3-types "^1.2.0" 1288 | web3-utils "^4.0.6" 1289 | 1290 | web3-eth-accounts@^4.0.6: 1291 | version "4.0.6" 1292 | resolved "https://registry.npmmirror.com/web3-eth-accounts/-/web3-eth-accounts-4.0.6.tgz#f907a9becefd693aeb2857cb98bbdb5f5871b221" 1293 | integrity sha512-xkOXXAEZs2CcR2v33CvFwtGJQS05ye7c3dlXcqwre91fhah9e6u4CPztpyR7HIKegWfIG1DRUwrcEqM2EMo4/w== 1294 | dependencies: 1295 | "@ethereumjs/rlp" "^4.0.1" 1296 | crc-32 "^1.2.2" 1297 | ethereum-cryptography "^2.0.0" 1298 | web3-errors "^1.1.2" 1299 | web3-types "^1.2.0" 1300 | web3-utils "^4.0.6" 1301 | web3-validator "^2.0.2" 1302 | 1303 | web3-eth-contract@^4.1.0: 1304 | version "4.1.0" 1305 | resolved "https://registry.npmmirror.com/web3-eth-contract/-/web3-eth-contract-4.1.0.tgz#13ebd3a2fabd8872d9bf8bbd0bd53333a82f7815" 1306 | integrity sha512-e1eEXSwzNUaC5j0WWDqQ527fPFtIswoJZ/cov8mWvTQi3+dqyI590/6s7IF6A5CGew1RrewAqPMrR9m7WQt7hw== 1307 | dependencies: 1308 | web3-core "^4.2.0" 1309 | web3-errors "^1.1.2" 1310 | web3-eth "^4.2.0" 1311 | web3-eth-abi "^4.1.2" 1312 | web3-types "^1.2.0" 1313 | web3-utils "^4.0.6" 1314 | web3-validator "^2.0.2" 1315 | 1316 | web3-eth-ens@^4.0.6: 1317 | version "4.0.6" 1318 | resolved "https://registry.npmmirror.com/web3-eth-ens/-/web3-eth-ens-4.0.6.tgz#6aa65fb67d40b815714495745af543c53032db15" 1319 | integrity sha512-ulEX1XRuTojcpWuSd5pk7+CWkE7Yrgi18TcgiQkz+ltQWOVlSHBjcQ/guA9MJoFPa2d3ADSdCbRQEZDZ8Lu3gw== 1320 | dependencies: 1321 | "@adraffy/ens-normalize" "^1.8.8" 1322 | web3-core "^4.2.0" 1323 | web3-errors "^1.1.2" 1324 | web3-eth "^4.2.0" 1325 | web3-eth-contract "^4.1.0" 1326 | web3-net "^4.0.6" 1327 | web3-types "^1.2.0" 1328 | web3-utils "^4.0.6" 1329 | web3-validator "^2.0.2" 1330 | 1331 | web3-eth-iban@^4.0.6: 1332 | version "4.0.6" 1333 | resolved "https://registry.npmmirror.com/web3-eth-iban/-/web3-eth-iban-4.0.6.tgz#606c59c28bf9c9763e996d0ede0ab0bad23ace3e" 1334 | integrity sha512-q47MbmoYWdfoylHlKZkZRHiPYeiFWqRiHou/wTYJEeZa2D3NG0wuPWz3jeQdZ5NzmS85yh+p2hxa54azVT8qmw== 1335 | dependencies: 1336 | web3-errors "^1.1.2" 1337 | web3-types "^1.2.0" 1338 | web3-utils "^4.0.6" 1339 | web3-validator "^2.0.2" 1340 | 1341 | web3-eth-personal@^4.0.6: 1342 | version "4.0.6" 1343 | resolved "https://registry.npmmirror.com/web3-eth-personal/-/web3-eth-personal-4.0.6.tgz#6ac9120ea79a4bdd429aa6b9704592bc30383a07" 1344 | integrity sha512-QBIl5fH5GPzDfYWxOvOLghnPruopVFfgnYsRmxEu85WAFidBb+XCqIOLmKe4qfF5czPG7gA/7PCPdsPqGNlf7Q== 1345 | dependencies: 1346 | web3-core "^4.2.0" 1347 | web3-eth "^4.2.0" 1348 | web3-rpc-methods "^1.1.2" 1349 | web3-types "^1.2.0" 1350 | web3-utils "^4.0.6" 1351 | web3-validator "^2.0.2" 1352 | 1353 | web3-eth@^4.2.0: 1354 | version "4.2.0" 1355 | resolved "https://registry.npmmirror.com/web3-eth/-/web3-eth-4.2.0.tgz#e4e8f4beae17957d9f20ea53b35f68b735bfc111" 1356 | integrity sha512-8YUEp5bq8j6KzlWpf856e0ZTXSNgJEYPg1gzzrmFC2+l0cjbul7vHnLA7DAsQGrIvXvvHvRp8da/8Ogm+G6FYQ== 1357 | dependencies: 1358 | setimmediate "^1.0.5" 1359 | web3-core "^4.2.0" 1360 | web3-errors "^1.1.2" 1361 | web3-eth-abi "^4.1.2" 1362 | web3-eth-accounts "^4.0.6" 1363 | web3-net "^4.0.6" 1364 | web3-providers-ws "^4.0.6" 1365 | web3-rpc-methods "^1.1.2" 1366 | web3-types "^1.2.0" 1367 | web3-utils "^4.0.6" 1368 | web3-validator "^2.0.2" 1369 | 1370 | web3-net@^4.0.6: 1371 | version "4.0.6" 1372 | resolved "https://registry.npmmirror.com/web3-net/-/web3-net-4.0.6.tgz#3b3d619db18e977d19238c0d641fb45ea704544c" 1373 | integrity sha512-Th4AtgpBgMdt76PmYyNBQxwAd2hAR8hIjhU4xjhqk1JATlXpcfgzyhegeAsvnSht4tcLnVQt6SN4ZVccllpd4A== 1374 | dependencies: 1375 | web3-core "^4.2.0" 1376 | web3-rpc-methods "^1.1.2" 1377 | web3-types "^1.2.0" 1378 | web3-utils "^4.0.6" 1379 | 1380 | web3-providers-http@^4.0.6: 1381 | version "4.0.6" 1382 | resolved "https://registry.npmmirror.com/web3-providers-http/-/web3-providers-http-4.0.6.tgz#2150de187dac843e59d9d1022bd548d9a2db60b4" 1383 | integrity sha512-FnBw0X25Xu0FejOgY2Ra7WY4p3fSrHxZuQ5a4j0ytDCE+0wxKQN0BaLRC7+uigbVvwEziQwzrhe+tn8bYAQKXQ== 1384 | dependencies: 1385 | cross-fetch "^3.1.5" 1386 | web3-errors "^1.1.2" 1387 | web3-types "^1.2.0" 1388 | web3-utils "^4.0.6" 1389 | 1390 | web3-providers-ipc@^4.0.6: 1391 | version "4.0.6" 1392 | resolved "https://registry.npmmirror.com/web3-providers-ipc/-/web3-providers-ipc-4.0.6.tgz#69010fab6995befb22dbddb032bb4e81aef771cb" 1393 | integrity sha512-17Ky978qGgdSWtctc/WKj9kX+QUypk6arZLI/Rfmq4zQpoR5ngH38CGozRkXUonr9hITYNaLW82NB1SPi1pRPQ== 1394 | dependencies: 1395 | web3-errors "^1.1.2" 1396 | web3-types "^1.2.0" 1397 | web3-utils "^4.0.6" 1398 | 1399 | web3-providers-ws@^4.0.6: 1400 | version "4.0.6" 1401 | resolved "https://registry.npmmirror.com/web3-providers-ws/-/web3-providers-ws-4.0.6.tgz#ec989f962f62e1801aef88584c3e72ee1a073373" 1402 | integrity sha512-0Q0SuKpr05gK+tUXdzPNmYlDV3exdqxnHx3f8p3cqz+v66J04EOT31bbETS0VcpDiQ9YaVS8FVSjT4PaseuNag== 1403 | dependencies: 1404 | "@types/ws" "8.5.3" 1405 | isomorphic-ws "^5.0.0" 1406 | web3-errors "^1.1.2" 1407 | web3-types "^1.2.0" 1408 | web3-utils "^4.0.6" 1409 | ws "^8.8.1" 1410 | 1411 | web3-rpc-methods@^1.1.2: 1412 | version "1.1.2" 1413 | resolved "https://registry.npmmirror.com/web3-rpc-methods/-/web3-rpc-methods-1.1.2.tgz#999bdd206bdd6e1e9c55dd2317f3c678e0177bae" 1414 | integrity sha512-fzYp9eJyzq/UBzpP9kOQormelLfvl1kJnX5ucHv4T6kZaQfDuBt5XoYDtCDXSXVaz2MgTowsXwKEVAzN6h7+Ag== 1415 | dependencies: 1416 | web3-core "^4.2.0" 1417 | web3-types "^1.2.0" 1418 | web3-validator "^2.0.2" 1419 | 1420 | web3-types@^1.2.0: 1421 | version "1.2.0" 1422 | resolved "https://registry.npmmirror.com/web3-types/-/web3-types-1.2.0.tgz#176bfe53d7e46c2488d6b95c98df8f6cb1fe1375" 1423 | integrity sha512-ljx8mrkrOI8fRqvgOdxfpKYoso6n7I8T9LsqXl+Mz2Db0L+2H15an0xgdoWYpKndTPiU2NKRWFiopYifBQzcxQ== 1424 | 1425 | web3-utils@^4.0.6: 1426 | version "4.0.6" 1427 | resolved "https://registry.npmmirror.com/web3-utils/-/web3-utils-4.0.6.tgz#37c30cb884e1ccfecb752269bc7ff285105f4c0a" 1428 | integrity sha512-nLVtMf9mWTX604XiQQkWZlHLCag9GdHfQtnGJDNaDssTLUx5SpOm1CjhKCHcVcAH/QazEsWcLqUAuyqwKST1kA== 1429 | dependencies: 1430 | ethereum-cryptography "^2.0.0" 1431 | web3-errors "^1.1.2" 1432 | web3-types "^1.2.0" 1433 | web3-validator "^2.0.2" 1434 | 1435 | web3-validator@^2.0.2: 1436 | version "2.0.2" 1437 | resolved "https://registry.npmmirror.com/web3-validator/-/web3-validator-2.0.2.tgz#c0d411371c5ab75806c8ad958276171678b8ddb9" 1438 | integrity sha512-9sQ5owd2UldTsva3o3htj2fTPpbmUwb4TfBXhjIkew8FyT0ss3DPI+j3p6XrfdxIVBEQ5r17YUakElDV99aW+A== 1439 | dependencies: 1440 | ethereum-cryptography "^2.0.0" 1441 | util "^0.12.5" 1442 | web3-errors "^1.1.2" 1443 | web3-types "^1.2.0" 1444 | zod "^3.21.4" 1445 | 1446 | web3@^4.1.2: 1447 | version "4.1.2" 1448 | resolved "https://registry.npmmirror.com/web3/-/web3-4.1.2.tgz#87f23090dcd16cb9eb7f8b61552b923865b309f4" 1449 | integrity sha512-BTUCJU7LvL0JDvB1RCRtHe5jFZ0sVYVqHvlNbG4uzebZ6ebtX/CnwiyiJ08UOuvKWzHrZQ+7jPuYuF65BMAXnQ== 1450 | dependencies: 1451 | web3-core "^4.2.0" 1452 | web3-errors "^1.1.2" 1453 | web3-eth "^4.2.0" 1454 | web3-eth-abi "^4.1.2" 1455 | web3-eth-accounts "^4.0.6" 1456 | web3-eth-contract "^4.1.0" 1457 | web3-eth-ens "^4.0.6" 1458 | web3-eth-iban "^4.0.6" 1459 | web3-eth-personal "^4.0.6" 1460 | web3-net "^4.0.6" 1461 | web3-providers-http "^4.0.6" 1462 | web3-providers-ws "^4.0.6" 1463 | web3-rpc-methods "^1.1.2" 1464 | web3-types "^1.2.0" 1465 | web3-utils "^4.0.6" 1466 | web3-validator "^2.0.2" 1467 | 1468 | webidl-conversions@^3.0.0: 1469 | version "3.0.1" 1470 | resolved "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" 1471 | integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== 1472 | 1473 | whatwg-url@^5.0.0: 1474 | version "5.0.0" 1475 | resolved "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" 1476 | integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== 1477 | dependencies: 1478 | tr46 "~0.0.3" 1479 | webidl-conversions "^3.0.0" 1480 | 1481 | which-typed-array@^1.1.11, which-typed-array@^1.1.2: 1482 | version "1.1.11" 1483 | resolved "https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" 1484 | integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== 1485 | dependencies: 1486 | available-typed-arrays "^1.0.5" 1487 | call-bind "^1.0.2" 1488 | for-each "^0.3.3" 1489 | gopd "^1.0.1" 1490 | has-tostringtag "^1.0.0" 1491 | 1492 | wif@^2.0.6: 1493 | version "2.0.6" 1494 | resolved "https://registry.npmmirror.com/wif/-/wif-2.0.6.tgz#08d3f52056c66679299726fade0d432ae74b4704" 1495 | integrity sha512-HIanZn1zmduSF+BQhkE+YXIbEiH0xPr1012QbFEGB0xsKqJii0/SqJjyn8dFv6y36kOznMgMB+LGcbZTJ1xACQ== 1496 | dependencies: 1497 | bs58check "<3.0.0" 1498 | 1499 | ws@^8.8.1: 1500 | version "8.14.2" 1501 | resolved "https://registry.npmmirror.com/ws/-/ws-8.14.2.tgz#6c249a806eb2db7a20d26d51e7709eab7b2e6c7f" 1502 | integrity sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g== 1503 | 1504 | zod@^3.21.4: 1505 | version "3.22.4" 1506 | resolved "https://registry.npmmirror.com/zod/-/zod-3.22.4.tgz#f31c3a9386f61b1f228af56faa9255e845cf3fff" 1507 | integrity sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg== 1508 | --------------------------------------------------------------------------------