Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.getpara.com/llms.txt

Use this file to discover all available pages before exploring further.

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 { useParaEthersSigner, useParaEthersSendTransaction } from "@getpara/react-sdk";
import { ethers, JsonRpcProvider } from "ethers";

const provider = new JsonRpcProvider("https://ethereum-sepolia-rpc.publicnode.com");

function ExecuteTransaction() {
  const { ethersSigner } = useParaEthersSigner({ provider });

  const {
    sendTransactionAsync,
    isPending,
    data: receipt,
  } = useParaEthersSendTransaction(ethersSigner);

  return (
    <div>
      <button
        onClick={() =>
          sendTransaction({
            to: "0x70997970C51812dc3A010C7d01b50e0d17dc79C8",
            data: "0x",
            value: ethers.parseEther("0.01"),
          })
        }
        disabled={isPending}
      >
        {isPending ? "Executing..." : "Execute Transaction"}
      </button>
      {receipt && <p>Transaction: {receipt.hash}</p>}
    </div>
  );
}

Execute Contract Functions

import { useParaEthersSigner, useParaEthersWriteContract } from "@getpara/react-sdk";
import { JsonRpcProvider } from "ethers";

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

const provider = new JsonRpcProvider("https://ethereum-sepolia-rpc.publicnode.com");

function ContractInteraction({ contractAddress }: { contractAddress: string }) {
  const { ethersSigner } = useParaEthersSigner({ provider });

  const {
    writeContractAsync,
    isPending,
    data: receipt,
  } = useParaEthersWriteContract(ethersSigner);

  return (
    <div>
      <button
        onClick={() =>
          writeContract({
            address: contractAddress,
            abi: CONTRACT_ABI,
            functionName: "setGreeting",
            args: ["Hello from Para!"],
          })
        }
        disabled={isPending}
      >
        {isPending ? "Updating..." : "Update Greeting"}
      </button>
      {receipt && <p>Transaction: {receipt.hash}</p>}
    </div>
  );
}

Next Steps

Get Transaction Receipt

Interact with Contracts

Watch Events