@chain1/gas-helper
v1.0.0
Published
Gas price estimation and management utilities for EVM blockchains
Downloads
9
Maintainers
Readme
@chain1/gas-helper
Gas price estimation and management utilities for EVM blockchains (Ethereum, BSC, Klaytn/KAIA, STO).
Installation
npm install @chain1/gas-helper ethersFeatures
- ⛽ Smart Gas Price: Automatic retry with fallback defaults
- 🔄 Multi-Chain Support: ETH, BSC, KAIA, STO
- 📊 Cost Estimation: Calculate transaction costs
- 🎯 Gas Limit Suggestions: Pre-configured limits for common operations
- 🛡️ Error Handling: Robust retry mechanism with timeouts
Usage
Get Safe Gas Price
import { ethers } from 'ethers';
import { getSafeGasPrice } from '@chain1/gas-helper';
const provider = new ethers.providers.JsonRpcProvider('https://bsc-dataseed.binance.org');
const gasPrice = await getSafeGasPrice(provider, 'BSC');
console.log('Gas Price:', ethers.utils.formatUnits(gasPrice, 'gwei'), 'Gwei');Get Default Gas Price
import { getDefaultGasPrice } from '@chain1/gas-helper';
const ethGasPrice = getDefaultGasPrice('ETH'); // 30 Gwei
const bscGasPrice = getDefaultGasPrice('BSC'); // 5 Gwei
const kaiaGasPrice = getDefaultGasPrice('KAIA'); // 25 Gwei
const stoGasPrice = getDefaultGasPrice('STO'); // 10 GweiEstimate Transaction Cost
import { ethers } from 'ethers';
import { estimateTransactionCost } from '@chain1/gas-helper';
const gasPrice = ethers.utils.parseUnits('20', 'gwei');
const gasLimit = 21000;
const cost = estimateTransactionCost(gasPrice, gasLimit);
console.log('Transaction cost:', cost, 'ETH');Convert Gwei to ETH
import { convertGweiToEth } from '@chain1/gas-helper';
const ethAmount = convertGweiToEth(20);
console.log('20 Gwei =', ethAmount, 'ETH');Suggest Gas Limit
import { suggestGasLimit } from '@chain1/gas-helper';
const transferLimit = suggestGasLimit('transfer'); // 21000
const contractLimit = suggestGasLimit('contract'); // 100000
const swapLimit = suggestGasLimit('swap'); // 300000API Reference
getSafeGasPrice(provider, chain?)
Get gas price with retry mechanism and fallback.
Parameters:
provider: ethers.providers.JsonRpcProviderchain: 'STO' | 'ETH' | 'BSC' | 'KAIA' (default: 'STO')
Returns: Promise<ethers.BigNumber>
Features:
- 3 retry attempts with exponential backoff
- 5-second timeout per attempt
- Automatic fallback to default gas price
getDefaultGasPrice(chain)
Get default gas price for a specific chain.
Parameters:
chain: 'STO' | 'ETH' | 'BSC' | 'KAIA'
Returns: ethers.BigNumber
Default Prices:
- ETH: 30 Gwei
- BSC: 5 Gwei
- KAIA: 25 Gwei
- STO: 10 Gwei
estimateTransactionCost(gasPrice, gasLimit)
Calculate transaction cost in native currency.
Parameters:
gasPrice: ethers.BigNumber (in Wei)gasLimit: ethers.BigNumber | number
Returns: string (cost in Ether)
convertGweiToEth(gwei)
Convert Gwei to Ether.
Parameters:
gwei: number | string
Returns: string (amount in Ether)
suggestGasLimit(txType)
Get suggested gas limit for transaction type.
Parameters:
txType: 'transfer' | 'contract' | 'swap'
Returns: number
Suggested Limits:
- transfer: 21,000
- contract: 100,000
- swap: 300,000
Error Handling
The library includes robust error handling:
try {
const gasPrice = await getSafeGasPrice(provider, 'BSC');
// Use gas price
} catch (error) {
console.error('Failed to get gas price:', error);
// Library automatically falls back to default values
}License
MIT
