Skip to main content
Execute complex transactions with custom data and manage their lifecycle using Para.

Prerequisites

You need Web3 libraries configured with Para authentication.

Setup Web3 Libraries

Execute Raw Transactions

import { ethers } from "ethers";
import { ParaEthersSigner } from "@getpara/ethers-v6-integration";

async function executeTransaction(
  signer: ParaEthersSigner,
  to: string,
  data: string,
  value?: string
) {
  const txResponse = await signer.sendTransaction({
    to,
    data,
    value: value ? ethers.parseEther(value) : 0
  });

  const receipt = await txResponse.wait();

  return {
    hash: txResponse.hash,
    blockNumber: receipt.blockNumber,
    status: receipt.status,
    gasUsed: receipt.gasUsed.toString()
  };
}

Execute Contract Functions

const CONTRACT_ABI = [
  "function setGreeting(string memory _greeting)",
  "function greet() view returns (string)"
];

async function executeContractFunction(
  signer: any,
  contractAddress: string,
  greeting: string
) {
  const contract = new ethers.Contract(contractAddress, CONTRACT_ABI, signer);

  const tx = await contract.setGreeting(greeting);
  const receipt = await tx.wait();

  const newGreeting = await contract.greet();

  return {
    hash: tx.hash,
    blockNumber: receipt.blockNumber,
    newValue: newGreeting
  };
}

Next Steps