Ethers.js: Interacting with The Ethereum Blockchain.
Introduction
Ethers.js is a powerful yet compact library for enabling interactions with the Ethereum blockchain. It can help in connecting DApps with blockchain networks, and developers using ethers.js can also access complete functionalities of the Ethereum blockchain.
Features of Ethers.js
Ethers.js is a javascript library that serves a broad range of features. It can help in ensuring secure storage of private keys in the client, along with the flexibility for importing and exporting JSON wallets.
The other important features of ethers.js refer to the flexibility for connecting to Ethereum nodes through JSON-RPC or any node service provider. It can help in facilitating comprehensive functionality for different requirements related to the Ethereum blockchain.
Important Utilities of Ethers.js
The Application Binary Interface, addresses, encoding utilities, constants, and byte manipulation are some of the most significant utilities in ethers.js. Along with web utilities, additional significant utilities include HD Wallet, hashing methods, strings, logging, signing key, transactions, display logic, and input. In this section of the article, we'll go through a quick summary of each utility in ethers.js.
Application Binary Interface
Application Binary Interface or ABI serves as a collection of different fragments that provide specifications on interacting with different contract components. ABI in the ether.js library utilizes an interface for organizing the fragments according to type, alongside offering flexibility for encoding, decoding, and working with individual components.
Address
The address in ethers.js refers to the string of 20 bytes, which also includes options for mixed cases, resulting in a Checksum Address. One of the most popular formats for ethers.js addresses is the ICAP Address Format. It served the possibility of including a checksum in Ethereum addresses by leveraging the IBAN format of the banking industry.
Byte Manipulation
Another significant utility that helps in understanding answers to “How do you use Ether in JavaScript?” is byte manipulation. You can find multiple high-level APIs that can interact with Ethereum, as evident in examples of Contracts and Providers APIs. However, the majority of the low-level access conditions demand operations involving byte manipulation. Most of the byte manipulation operations are limited to internal use. On the other hand, they can also help in normalizing the binary data representations from output generated by different methods and functions.
Display Logic and Input
Developers should also learn about display logic and input utility in the ethers.js library for creating an application. It is important to ensure the conversion of user-friendly strings, generally displaying Ether, into machine-readable values that the contract can understand.
Hashing Algorithms
Hashing algorithms in an Ethers JS tutorial, are crucial for the operations of DApps and smart contracts. Multiple hashing algorithms are implemented across the blockchain ecosystem, and complex applications demand utilities for ensuring common tasks. For example, cryptographic hash functions serve as a dedicated group of hash functions. On top of it, you can also find other hashing algorithms, such as HMAC-based algorithms, hashing helpers, Solidity hashing algorithms and typed data encoders.
HD Wallet
Ethers.js also includes references to HD Wallet or Hierarchical Deterministic Wallet. It was created as a standard for Bitcoin, although it has expanded across a broad range of blockchains that utilize secp256k1 private keys.
The three aspects for explaining HD Wallet include BIP-32, BIP-39 and BIP-44. BIP-32 offers the hierarchical deterministic description, while BIP-39 serves the method required for deriving BIP-32 seed from mnemonic phrases. BIP-44 serves as a crucial standard for easier interoperability of BIP-32 with any type of new blockchain.
Logging
The list of utilities in the ethers.js library continues further with references to the logging utilities. Candidates who want to learn ethers.js must identify the significance of logging utilities in simplification of error management functionalities available with ethers.js. You should know about the Logger library, which features zero dependencies and is lightweight, thereby ensuring easier inclusion in different libraries. Another important logging utility refers to the Censorship feature.
Strings
The ethers JS typescript compatibility also draws attention toward strings, another important utility of ethers.js. Strings work as the representation of human-readable input or output. However, their significance is higher in the case of blockchain applications. Strings help in the proper management of human-readable data to avoid loss of funds, incorrect permissions, and issues with asset ownership.
Getting Started with Ethers.js Commands
Installing
Before installing Ether.js, you need NodeJS installed on your computer. After setting it up in your computer type this command in the terminal.
// this will install ethers library
npm install --save ethers
Importing
We will see how to import ether.js after installing it in our folder. There are two ways for javascript and react.
// node.js
const { ethers } = require("ethers");
// ES6
import { ethers } from "ethers";
Network & ChainId
The description of methods for using ethers.js also points to approaches for obtaining the network and chain ID. The chain ID can vary according to the type of network, with the mainnet having 1 as the chain ID.
const chainId = network.chainId;
const network = await provider.getNetwork();
Accounts
You can obtain a list of accounts by using the following command.
const accounts = await provider.listAccounts();
Balance
The balance command is an important requirement helping in obtaining balance with a specific address. Here is the command that helps you obtain a balance of a specific address.
const balance = await provider.getBalance(‘address’);
Connect Wallet
The connect command can help in connecting to Ethereum through the wallet. Here is the command used for connecting to Ethereum by using Metamask.
const provider = new ethers.provider.Web3Provider(window.ethereum);
Connect RPC
The command for connecting with Ethereum by using RPC is the following. The 'url' in the command refers to the URL of the node services provider platform, such as Alchemy or Infura.
const provider = new ethers.provider.JsonRpcProvider('url');
Sending Transactions
To send ethers using JS these commands are used.
const tx = signer.sendTransaction({
to: "mrinnnmoy.nft",
value: ethers.utils.parseEther("1.0")
});
Signing a Message
For signing a message in the ethers.js library, use these commands.
signature = await signer.signMessage("Hello World !!!");
Querying Contracts
The most important highlight in an Ethers JS tutorial is the set of commands for querying contracts. Here are some of the important commands for querying different details of a contract.
// Obtain the ERC-20 token name
const tokenName = await daiCOntract.name("Contract-Address");
// Obtain the ERC-20 token symbol
const tokenSymbol = await daiContract.symbol("Contract-Address");
// Obtain the balance of a specific address
balance = await daiContract.balanceOf("mrinnnmoy.nft");
Creating a Contract Instance
Creating a contract instance is one of the mandatory details. It is important to ensure that the user must have a wallet and should be connected at all times. Developers can create a contract instance with the following command.
Const contract = new ethers.Contract (‘address’, ‘abi’. ‘signer’);
Contract Event Listener
Another notable aspect in the journey to learn Ethers.js reflects on the Contract Event Listener functionality. You can also enable utilities for listening to events generated in contracts by using the command.
contract.on(`event`, `listener`);
Conclusion
This ethers.js article outline gives a thorough rundown of the language's foundations. Most importantly, it highlights key characteristics that characterize the strength of the ethers.js library in blockchain development. The general-purpose, open-source library ensures security and transparency in addition to the advantage of adaptability. Because of its modular structure, the ether.js library can grow by incorporating more functionalities.
Below are the links to resources that I am following to learn Blockchain Development.
If you liked this article do share it with your friends and follow me on my socials.
Subscribe to my newsletter
Read articles from Mrinmoy Porel directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Mrinmoy Porel
Mrinmoy Porel
Hi I'm Mrinmoy👋. A software developer for the decentralized web. I contribute to open source, write blockchain tutorials, build projects publicly related to decentralization that the world needs to know about.