Prerequisites
You need Web3 libraries configured with Para authentication.Setup Web3 Libraries
Execute Raw Transactions
- Ethers.js
- Viem
- Wagmi
Copy
Ask AI
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()
};
}
Copy
Ask AI
import { parseEther, encodeFunctionData } from "viem";
async function executeTransaction(
walletClient: any,
publicClient: any,
to: `0x${string}`,
data: `0x${string}`,
value?: string
) {
const hash = await walletClient.sendTransaction({
to,
data,
value: value ? parseEther(value) : 0n
});
const receipt = await publicClient.waitForTransactionReceipt({ hash });
return {
hash,
blockNumber: receipt.blockNumber,
status: receipt.status === "success" ? 1 : 0,
gasUsed: receipt.gasUsed.toString()
};
}
Copy
Ask AI
import { useSendTransaction } from "wagmi";
import { parseEther } from "viem";
function ExecuteTransaction() {
const { data: hash, isPending, sendTransaction } = useSendTransaction();
return (
<div>
<button
onClick={() => sendTransaction({
to: "0x70997970C51812dc3A010C7d01b50e0d17dc79C8",
data: "0x",
value: parseEther("0.01")
})}
disabled={isPending}
>
{isPending ? "Executing..." : "Execute Transaction"}
</button>
{hash && <p>Transaction: {hash}</p>}
</div>
);
}
Execute Contract Functions
- Ethers.js
- Viem
- Wagmi
Copy
Ask AI
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
};
}
Copy
Ask AI
const CONTRACT_ABI = [
{
name: "setGreeting",
type: "function",
stateMutability: "nonpayable",
inputs: [{ name: "_greeting", type: "string" }],
outputs: []
},
{
name: "greet",
type: "function",
stateMutability: "view",
inputs: [],
outputs: [{ type: "string" }]
}
] as const;
async function executeContractFunction(
walletClient: any,
publicClient: any,
contractAddress: `0x${string}`,
greeting: string
) {
const hash = await walletClient.writeContract({
address: contractAddress,
abi: CONTRACT_ABI,
functionName: "setGreeting",
args: [greeting]
});
const receipt = await publicClient.waitForTransactionReceipt({ hash });
const newGreeting = await publicClient.readContract({
address: contractAddress,
abi: CONTRACT_ABI,
functionName: "greet"
});
return {
hash,
blockNumber: receipt.blockNumber,
newValue: newGreeting
};
}
Copy
Ask AI
import { useWriteContract, useReadContract } from "wagmi";
const CONTRACT_ABI = [
{
name: "setGreeting",
type: "function",
stateMutability: "nonpayable",
inputs: [{ name: "_greeting", type: "string" }],
outputs: []
},
{
name: "greet",
type: "function",
stateMutability: "view",
inputs: [],
outputs: [{ type: "string" }]
}
] as const;
function ContractInteraction({
contractAddress
}: {
contractAddress: `0x${string}`
}) {
const { data: hash, isPending, writeContract } = useWriteContract();
const { data: greeting } = useReadContract({
address: contractAddress,
abi: CONTRACT_ABI,
functionName: "greet"
});
return (
<div>
<p>Current greeting: {greeting}</p>
<button
onClick={() => writeContract({
address: contractAddress,
abi: CONTRACT_ABI,
functionName: "setGreeting",
args: ["Hello from Para!"]
})}
disabled={isPending}
>
{isPending ? "Updating..." : "Update Greeting"}
</button>
{hash && <p>Transaction: {hash}</p>}
</div>
);
}