Web3.js is a set of libraries that allow developers to interact with Ethereum nodes using HTTP, IPC or WebSocket protocols. Harmony has an Ethereum-like API available that is fully compatible with Ethereum-style JSON RPC invocations. Therefore, developers can leverage this compatibility and use the web3.js library to interact with a Harmony node as if they were doing so on Ethereum.
Setup Web3.js with Harmony
To get started with the web3.js library, we first need to install it using the following command:
npm install web3
Once done, the simplest setup to start using the library and its methods is the following:
The steps can also be adapted to deploy on the Harmony Testnet, by using the correct RPC_URL as mentioned before.
You can use all the library functions described in the official Web3 documentation.
Using Web3.js to Send Transactions on Harmony
Introduction
This guide walks through the process of using web3.js to manually sign and send a transaction to a Harmony network. For this example, we will use Node.js and straightforward JavaScript code.
For this guide we will use Harmony Testnet Network.
Install Dependencies
Next, we can create a directory to store all our relevant files by running:
mkdir transaction && cd transaction/
And create a simple package.json file:
npm init --yes
With the package.json file created, we can then install the web3.js package by executing:
To verify the installed version of web3.js, you can use the ls command:
npm ls web3
As of the writing of this guide, the version used was 1.3.0.
Sending Transaction
For our example, we only need a single JavaScript file (arbitrarily named transaction.js, which you can find here) to create and send the transaction, which we will run using the node command in the terminal. The script will transfer 1 ONE from the genesis account to another address. For simplicity, the file is divided into three sections: variable definition, create transaction, and deploy transaction.
We need to set a couple of values in the variable definitions:
Create our Web3 constructor (Web3).
Define the HMY_PRIVATE_KEY variable as the private key of your ONE wallet, what is used to sign the transactions.
Create a local Web3 instance and set the provider to connect to Testnet Harmony network.