Skip to main content
Submitting transactions is a core task when interacting with blockchains, like peaq. Transactions include transferring funds, interacting with smart contracts, or deploying contracts. A transaction is required each time we want to write data to the blockchain and it’s the responsibility of the developer to construct the transaction call data. This guide provides a structured approach to submitting transactions using ethers.js, ensuring efficiency and security.

Prerequisites

Before following the instructions, ensure the following:
  1. Environment Setup:
    • Node.js and npm (or pnpm/yarn) are installed.
    • Ethers.js library is installed: npm install ethers.
  2. Account Setup:
    • You have access to a private key or a connected wallet (e.g., MetaMask).
    • Your wallet has sufficient funds for gas fees.
  3. Blockchain Setup:
    • You know the URL of the RPC you’re interacting with.
    • You understand the transaction details, including recipient address, value, and any data (if applicable).
  4. Security Awareness:
    • Never expose your private key or mnemonic in your code.
    • Use environment variables for sensitive information.

Instructions

1. Install and Import ethers.js

In your JavaScript file, import ethers.js:

2. Set Up a Provider

Connect to an Ethereum-compatible network:

3. Configure a Signer

Create a wallet instance to sign transactions:

4. Define the Transaction

Set up the transaction details:
For interacting with smart contracts, include data in the transaction object.

5. Sign and Submit the Transaction

Sign and send the transaction:

6. Verify the Transaction

Monitor the transaction using the txResponse.hash in a block explorer or programmatically check its status using the provider.getTransactionReceipt method.

Notes

  • Gas Estimation: For more complex transactions, calculate gas estimates using contract.estimateGas.methodName().
  • Smart Contracts: For interacting with contracts, set up the contract instance using its ABI and address:

Putting it all Together

Here’s a complete boilerplate script that ties together all the steps for submitting a transaction using ethers.js. This script includes environment variable handling, transaction setup, and submission.

Instructions for Using the Boilerplate Script

  1. Install Dependencies: Ensure you have the required packages installed:
  1. Set ESM Module: Add the following to your package.json to allow for ESM modules.
  1. Set Up Environment Variables: Create a .env file in the root directory of your project with the following keys:
  1. Run the Script: Execute the script in your terminal:
  1. Modify Transaction Details:
    • Replace 0xRecipientAddressHere with the recipient’s address.
    • Adjust value, maxFeePerGas, and maxPriorityFeePerGas as needed.