npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

ethereum-explorer

v1.0.1

Published

NPM Javascript package to make easy the interaction with Ethereum blockchain

Readme

Ethereum Explorer - NPM javascript package

Ethereum Explorer is a NPM package to make easy the interaction with Ethereum blockchain.

Ethereum Explorer is a NPM package to ease the interaction with the Ethereum blockchain.

With Ethereum Explorer you can easily invoke smart contracts, self-sign transactions or get general information about the blockchain (like gas price, gas limit, block information).

Quick Start

Installation

To use Ethereum Explorer you first have to install the package ethereum-explorer in your project:

npm i ethereum-explorer

Initialization

Import the library ethereum-explorer in your code.

const EthereumExplorer = require('ethereum-explorer');

or

import EthereumExplorer from 'ethereum-explorer';

Then initialize and boot the Ethereum Explorer:

// instantiate a new EthereumExplorer object
const ethExp = new EthereumExplorer();

// connect to the blockchain network
try {
    await ethExp.bootWeb3();
} catch (error) {
    console.error(error);
}

How to interact with smart contracts

Before to continue with this section, please sure you booted the EthereumExplorer object with bootWeb3() as explained before.

Initialize the smart contract from ABI

To interact with a smart contract first you must initialize it.

The function for initializing the smart contract is loadContact and accepts the following parameters:

  • Contract address (required): the address of the contract.
  • Contract ABI (required): the JSON of the contract's ABI.
  • Contract name (optional): the name of the contract. You must give it a name if you have more than one smart contract.
const contractAddress1 = '0x9eF8cFDd40fB1Fa402a1c0f981249B763A0a7E4e';
const contractAbiJson1 = require('./assets/contracts/ABI/SmartContract1.json');
ethExp.loadContact(contractAddress1, contractAbiJson1, 'SmartContract1');

const contractAddress2 = '0x1e5d52BC66D53b5A7521C1169133E83F582B7f81';
const contractAbiJson2 = require('./assets/contracts/ABI/SmartContract2.json');
ethExp.loadContact(contractAddress2, contractAbiJson2, 'SmartContract2');

You can easily initialize smart contracts from the JSON given in output from the Truffle framework compile.

const netId = await ethExp.getNetworkId();

ethExp.loadContact(ContractAbiJson.networks[netId].address, ContractAbiJson.abi);

How to invoke a VIEW or PURE smart contract function

The function call helps to invoke a function of a smart contract. The parameter to give to the function are:

  • Name of the function (required).
  • List of parameter to give to the smart contract function in a form of an array (optional).
  • Name of the smart contract (optional).

Let's suppose we have a Users smart contract and it has a function called getUserById to get an user by ID. And below the implementation of the function:

function getUserById(string memory idNumber) public view returns (
    string memory,
    string memory,
    address
) {
    ...
}

To invoke the function you can proceed as per below:

const message = await ethExp.call(
    'getUserById',  // name of the smart contract function
    ['341'],        // parameters required from the smart contract function
    'Users'         // name of the smart contract
);

How to invoke a PAYABLE or NON-PAYABLE smart contract function

There are 2 ways to invoke a function that changes the state of the blockchain:

  • Using the wallet user address connected to the wallet provider (like MetaMask). The user will be prompted to MetaMask to confirm the transaction.
  • Provide the wallet address and the related private key to sign the transaction.

The function sendTxToSmartContract invokes a functions and needs the following parameters:

  • Address of the wallet of the user (required).
  • Private key of the user (optional). If not provided the user will be prompted to the wallet provider (like MetaMask).
  • Name of the function to call (required).
  • Array of parameter required by the smart contract function (optional).
  • Optional values for the transaction (optional).
  • Name of the smart contract (optional).

How to send transaction and being prompted to the wallet provider (like MetaMask) for confirmation

The example below invokes a function using the wallet the user is connected with. The user will be prompted to MetaMask (or any other wallet manager) to confirm the transaction.

const walletAddress = await ethExp.getUserAccount(); // wallet address of the user that is sending the transaction

const name = 'John';
const surname = 'Doe'
const address = '0x123'

(await ethExp.sendTxToSmartContract(walletAddress, null, 'updateUser', [name, surname, address], {}, 'Users'))
    .on('transactionHash', transactionHash => console.log(transactionHash))
    .on('receipt', receipt => console.log(receipt))
    .on('error', error => console.error(error));

How to send a self signed transaction

In the example below, the wallet address and its related key are used to sign the transaction, so they must be provided.

const walletAddress = '0x8aD783Bdb18Bd445CB4929BCee117e094Df03A47';
const privateKey = '3eadd2ddc6711115252e919ca785d0fac5d803059c13588dcf36dca5c5a18f2a';

const name = 'John';
const surname = 'Doe'
const address = '0x123'

(await ethExp.sendTxToSmartContract(walletAddress, privateKey, 'updateUser', [name, surname, address], {}, 'Users'))
    .on('transactionHash', transactionHash => console.log(transactionHash))
    .on('receipt', receipt => console.log(receipt))
    .on('error', error => console.error(error));

Utility functions

Below a list of utility function:

  • getGasLimit: retrieve the current gas limit.
  • getGasPrice: retrieve the current gas price.
  • getBlock: return the block information by block number. It accepts positive integers or latest.
  • getBlockNumber: return the total number of blocks in the blockchain.
  • getUserAccount: return the wallet user address connected to the wallet provider.

DApp working example

On the repo https://github.com/danielefavi/ethereum-explorer-example you can find a DApp that uses the package ethereum-explorer.