Send transaction

Introduction

This guide walks through the process of using web3.js to manually sign and send a transaction to a Hyperas Chain network. For this example, we will use Node.js and straightforward JavaScript code.

For this guide we will use Hyperas Chain 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:

npm install web3
npm install 'bn.js'

We recommended to use bn.js for format values

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 HYRA 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:

  1. Create our Web3 constructor (Web3).

  2. Define the PSC_PRIVAYE_KEY variable as the private key of your wallet, what is used to sign the transactions.

  3. Create a local Web3 instance and set the provider to connect to Testnet Hyperas Chain network.

Setup Account

const Web3 = require('web3');
const BN = require('bn.js');

PSC_PRIVATE_KEY = 'YOUR_PRIVATE_KEY';
PSC_RPC_URL = 'https://vayne.hyperaschain.com';

const web3 = new Web3(PSC_RPC_URL);

let pscMasterAccount = web3.eth.accounts.privateKeyToAccount(PSC_PRIVATE_KEY);
web3.eth.accounts.wallet.add(pscMasterAccount);
web3.eth.defaultAccount = pscMasterAccount.address

const myAddress = web3.eth.defaultAccount;
console.log('My address: ', myAddress);

Check Account Balance

const balance = await web3.eth.getBalance(myAddress);
console.log('My balance: ', balance / 1e18);

Create new account on which we will send tokens

const newAccount = web3.eth.accounts.create();
console.log('New account created: ', newAccount.address);

Sending a Transaction

const gasPrice = new BN(await web3.eth.getGasPrice()).mul(new BN(1));
const gasLimit = 6721900;

const value = 1 * 1e18; // 1 tHYRA

const from = web3.eth.defaultAccount;
const to = newAccount.address; // account was created on prev step

const result = await web3.eth
      .sendTransaction({ from, to, value, gasPrice, gasLimit })
      .on('error', console.error);
      
console.log(`Send tx: ${result.transactionHash} result: `, result.status);

const newAddrBalance = await web3.eth.getBalance(newAccount.address);
console.log('New account balance: ', newAddrBalance / 1e18);

Last updated