or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

account-operations.mdblockchain-state.mdcryptographic-operations.mdevent-monitoring.mdgas-fee-management.mdindex.mdnetwork-information.mdsmart-contract-interaction.mdtransaction-management.mdtransaction-utilities.md
tile.json

tessl/npm-web3-eth

Web3 module to interact with the Ethereum blockchain and smart contracts.

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/web3-eth@4.11.x

To install, run

npx @tessl/cli install tessl/npm-web3-eth@4.8.0

index.mddocs/

Web3 Eth

Web3 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.

Package Information

  • Package Name: web3-eth
  • Package Type: npm
  • Language: TypeScript
  • Installation: npm install web3-eth

Core Imports

import { Web3Eth } from "web3-eth";

For standalone functions:

import { 
  getBalance, 
  sendTransaction, 
  getBlock, 
  estimateGas,
  waitForTransactionReceipt 
} from "web3-eth";

For CommonJS:

const { Web3Eth } = require("web3-eth");

Basic Usage

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);
});

Architecture

Web3 Eth is built around several key components:

  • Web3Eth Class: Main class providing all Ethereum blockchain interaction methods
  • RPC Method Wrappers: Standalone functions that wrap Ethereum JSON-RPC calls
  • Subscription System: Real-time event monitoring for logs, blocks, and transactions
  • Transaction Utilities: Helper functions for transaction building, formatting, and processing
  • Type System: Complete TypeScript integration with configurable data formatting
  • Validation Layer: Input validation and transaction verification functions

Capabilities

Blockchain State Access

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>;
}

Blockchain State Access

Transaction Management

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>;
}

Transaction Management

Account Operations

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>;
}

Account Operations

Smart Contract Interaction

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>;
}

Smart Contract Interaction

Event Monitoring & Subscriptions

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

Gas & Fee Management

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>;
}

Gas & Fee Management

Cryptographic Operations

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>;
}

Cryptographic Operations

Network Information

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>;
}

Network Information

Transaction Utilities

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>;

Transaction Utilities

Core Types

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>;
}