Web3 module to interact with the Ethereum blockchain and smart contracts.
npx @tessl/cli install tessl/npm-web3-eth@4.8.0Web3 Eth is a comprehensive TypeScript/JavaScript library that provides complete functionality for interacting with the Ethereum blockchain and smart contracts. It offers essential blockchain operations including account management, transaction handling, block retrieval, contract interaction, gas management, and real-time event monitoring through subscriptions.
npm install web3-ethimport { Web3Eth } from "web3-eth";For standalone functions:
import {
getBalance,
sendTransaction,
getBlock,
estimateGas,
waitForTransactionReceipt
} from "web3-eth";For CommonJS:
const { Web3Eth } = require("web3-eth");import { Web3Eth } from "web3-eth";
// Initialize with provider
const eth = new Web3Eth("https://mainnet.infura.io/v3/YOUR_PROJECT_ID");
// Get account balance
const balance = await eth.getBalance("0x742d35Cc6634C0532925a3b8D7389Fc3C1b6c5E");
// Get latest block
const block = await eth.getBlock("latest");
// Send transaction
const receipt = await eth.sendTransaction({
from: "0x742d35Cc6634C0532925a3b8D7389Fc3C1b6c5E",
to: "0x8ba1f109551bD432803012645Hac136c1c1b6c5E",
value: "1000000000000000000" // 1 ETH in wei
});
// Subscribe to new blocks
const subscription = await eth.subscribe("newHeads");
subscription.on("data", (blockHeader) => {
console.log("New block:", blockHeader.number);
});Web3 Eth is built around several key components:
Complete read access to blockchain data including blocks, transactions, accounts, and network information.
class Web3Eth {
getBlock(blockHashOrBlockNumber?: BlockNumberOrTag, hydrated?: boolean, returnFormat?: DataFormat): Promise<Block>;
getTransaction(transactionHash?: HexString32Bytes, returnFormat?: DataFormat): Promise<Transaction>;
getBalance(address: Address, blockNumber?: BlockNumberOrTag, returnFormat?: DataFormat): Promise<Numbers>;
getBlockNumber(returnFormat?: DataFormat): Promise<Numbers>;
}Complete transaction lifecycle management from creation to confirmation, including signing and gas estimation.
class Web3Eth {
sendTransaction(transaction?: Transaction, returnFormat?: DataFormat, options?: SendTransactionOptions): Promise<TransactionReceipt>;
sendSignedTransaction(transaction: Bytes, returnFormat?: DataFormat, options?: SendSignedTransactionOptions): Promise<TransactionReceipt>;
estimateGas(transaction?: TransactionCall, blockNumber?: BlockNumberOrTag, returnFormat?: DataFormat): Promise<Numbers>;
getTransactionReceipt(transactionHash?: HexString32Bytes, returnFormat?: DataFormat): Promise<TransactionReceipt>;
}Account balance queries, nonce management, storage inspection, and cryptographic proof generation.
class Web3Eth {
getBalance(address: Address, blockNumber?: BlockNumberOrTag, returnFormat?: DataFormat): Promise<Numbers>;
getTransactionCount(address: Address, blockNumber?: BlockNumberOrTag, returnFormat?: DataFormat): Promise<Numbers>;
getCode(address: Address, blockNumber?: BlockNumberOrTag, returnFormat?: DataFormat): Promise<Bytes>;
getStorageAt(address: Address, storageSlot: Numbers, blockNumber?: BlockNumberOrTag, returnFormat?: DataFormat): Promise<Bytes>;
getProof(address: Address, storageKeys?: HexString32Bytes[], blockNumber?: BlockNumberOrTag, returnFormat?: DataFormat): Promise<AccountObject>;
}Execute contract calls, estimate gas consumption, and interact with contract state.
class Web3Eth {
call(transaction?: TransactionCall, blockNumber?: BlockNumberOrTag, returnFormat?: DataFormat): Promise<Bytes>;
estimateGas(transaction?: TransactionCall, blockNumber?: BlockNumberOrTag, returnFormat?: DataFormat): Promise<Numbers>;
createAccessList(transaction?: TransactionForAccessList, blockNumber?: BlockNumberOrTag, returnFormat?: DataFormat): Promise<AccessListResult>;
}Real-time blockchain event monitoring through subscription mechanisms for logs, blocks, and transactions.
class Web3Eth {
subscribe(subscriptionName: 'logs' | 'newHeads' | 'newPendingTransactions' | 'syncing', subscriptionOptions?: LogsInput | object): Promise<RegisteredSubscription>;
getPastLogs(filter?: Filter, returnFormat?: DataFormat): Promise<LogsOutput>;
clearSubscriptions(): Promise<boolean>;
}Event Monitoring & Subscriptions
Comprehensive gas price discovery, fee market support, and EIP-1559 transaction fee calculation.
class Web3Eth {
getGasPrice(returnFormat?: DataFormat): Promise<Numbers>;
getMaxPriorityFeePerGas(returnFormat?: DataFormat): Promise<Numbers>;
getFeeData(returnFormat?: DataFormat): Promise<FeeData>;
getFeeHistory(blockCount: Numbers, lastBlock: BlockNumberOrTag, rewardPercentiles?: Numbers[], returnFormat?: DataFormat): Promise<FeeHistoryOutput>;
calculateFeeData(baseFeePerGas?: Numbers, alternativeMaxPriorityFeePerGas?: Numbers): Promise<FeeData>;
}Message and transaction signing with support for EIP-712 typed data and various signature formats.
class Web3Eth {
sign(message: Bytes, addressOrIndex: Address | Numbers, returnFormat?: DataFormat): Promise<SignatureObject>;
signTransaction(transaction: Transaction, returnFormat?: DataFormat): Promise<SignedTransactionInfoAPI>;
signTypedData(address: Address, typedData: Eip712TypedData, useLegacy?: boolean, returnFormat?: DataFormat): Promise<SignatureObject>;
}Access to network and node information including protocol version, chain ID, and synchronization status.
class Web3Eth {
getProtocolVersion(): Promise<string>;
getChainId(): Promise<Numbers>;
isSyncing(): Promise<SyncingStatusAPI | boolean>;
getCoinbase(): Promise<Address>;
isMining(): Promise<boolean>;
getNodeInfo(): Promise<string>;
}Helper functions for transaction building, formatting, validation, and processing workflows.
function detectTransactionType(transaction: Transaction): TransactionType;
function transactionBuilder(options: TransactionBuilderOptions): Transaction;
function waitForTransactionReceipt(web3Context: Web3Context, transactionHash: HexString32Bytes, returnFormat?: DataFormat, options?: TransactionReceiptOptions): Promise<TransactionReceipt>;
function formatTransaction(transaction: Transaction, returnFormat: DataFormat): FormattedTransaction;
function prepareTransactionForSigning(transaction: Transaction, web3Context: Web3Context, privateKey?: HexString, fillGasPrice?: boolean): Promise<Transaction>;interface Web3EthExecutionAPI {
eth_getBalance: (address: Address, blockNumber: BlockNumberOrTag) => Numbers;
eth_getCode: (address: Address, blockNumber: BlockNumberOrTag) => Bytes;
eth_getStorageAt: (address: Address, storageSlot: Numbers, blockNumber: BlockNumberOrTag) => Bytes;
eth_getTransactionCount: (address: Address, blockNumber: BlockNumberOrTag) => Numbers;
eth_sendTransaction: (transaction: Transaction) => HexString32Bytes;
eth_sendRawTransaction: (transaction: Bytes) => HexString32Bytes;
eth_call: (transaction: TransactionCall, blockNumber: BlockNumberOrTag) => Bytes;
eth_estimateGas: (transaction: TransactionCall, blockNumber?: BlockNumberOrTag) => Numbers;
eth_getBlockByHash: (blockHash: HexString32Bytes, hydrated: boolean) => Block | null;
eth_getBlockByNumber: (blockNumber: BlockNumberOrTag, hydrated: boolean) => Block | null;
eth_getTransactionByHash: (transactionHash: HexString32Bytes) => Transaction | null;
eth_getTransactionReceipt: (transactionHash: HexString32Bytes) => TransactionReceipt | null;
}
interface RegisteredSubscription {
logs: typeof LogsSubscription;
newPendingTransactions: typeof NewPendingTransactionsSubscription;
pendingTransactions: typeof NewPendingTransactionsSubscription;
newHeads: typeof NewHeadsSubscription;
newBlockHeaders: typeof NewHeadsSubscription;
syncing: typeof SyncingSubscription;
}
interface SendTransactionOptions<ResolveType = TransactionReceipt> {
ignoreGasPricing?: boolean;
transactionConfirmationBlocks?: Numbers;
transactionBlockTimeout?: Numbers;
transactionConfirmationPollingInterval?: Numbers;
transactionReceiptPollingInterval?: Numbers;
transactionSendTimeout?: Numbers;
ignoreFillingGasLimit?: boolean;
contractAbi?: AbilityType;
}
interface TransactionMiddleware {
processTransaction(transaction: Transaction, options?: SendTransactionOptions): Promise<Transaction>;
}