Web3 libraries and tools

A Web3 library is a tool that allows developers to interact with blockchains. These libraries provide an easy-to-use interface for developers to build decentralized applications (DApps) and interact and retrieve data from a blockchain.

The most popular Web3 libraries are web3.js, ethers.js, and web3.py. These libraries are widely used in the Web3 community and provide similar functionality.

Install a Web3 library

Learn how to install Web3 libraries and connect to a blockchain for developing DApps.

JavaScript libraries

To install a Web3 JavaScript library, you need node.js installed on your machine:

Then you can install the library using npm:

npm install web3
npm install ethers
npm install viem

Python libraries

To install and use a Python library, you first need to install Python in your system:

Then you can install the library using pip:

pip install web3

Get started

To get started with Web3 libraries, you will need to have a basic understanding of the EVM and smart contracts. It is also recommended to have a local development environment set up. Once you have set up your development environment, you can start interacting with different blockchains using the Web3 library of your choice.

Create a node instance

web3.js

To get started with web3.js, you will need to create a provider instance. This can be done by instantiating the Web3 class and passing in the URL of an Ethereum node deployed with Chainstack. For example:

const { Web3 } = require("web3");

const node_url = "CHAINSTACK_NODE_URL";
const web3 = new Web3(node_url);

📘

In web3.js V4, numeric values are returned as BigInt, identifiable by the n suffix (e.g., 247n). This change ensures high-precision handling of large integers in blockchain applications. Remember to either convert these values to standard integers or adapt other values to BigInt when performing mathematical operations.

ethers.js

Ethers.js supports ChainstackProvider. You can create a ChainstackProvider instance and connect to Ethereum Mainnet (mainnet), Arbitrum (arbitrum), BNB Smart Chain Mainnet (bnb), Polygon (matic).

For example:

const ethers = require("ethers");

// Create a ChainstackProvider instance for Ethereum mainnet
const chainstack = new ethers.ChainstackProvider("mainnet"); // Swap 'mainnet' for 'arbitrum', 'bnb' , and 'matic'

Viem

To get started with Viem, set up client instance with a transport. This can be done with createPublicClient and passing in the URL of an Ethereum node deployed with Chainstack. For example:

import { createPublicClient, http } from 'viem';

const publicClient = createPublicClient({
  transport: http('CHAINSTACK_NODE_URL')
});

📘

Viem typically adheres to the ES6 standard for module imports.

web3.py

To start with web3.py, you will need to create a provider instance. This can be done by instantiating the Web3 class and passing in the URL of an Ethereum node deployed with Chainstack. For example:

from web3 import Web3  

node_url = "CHAINSTACK_NODE_URL"  
web3 = Web3(Web3.HTTPProvider(node_url))

Once you have created a provider instance, you can use the functions provided by the library to interact with a blockchain.