Post your first receipt on Sepolia in 5 minutes.
npm install irsb ethersimport { IRSBClient } from 'irsb';
import { ethers } from 'ethers';
const provider = new ethers.JsonRpcProvider(process.env.RPC_URL);
const signer = new ethers.Wallet(process.env.PRIVATE_KEY, provider);
const client = new IRSBClient({
chainId: 11155111, // Sepolia
rpcUrl: process.env.RPC_URL,
contracts: {
solverRegistry: '0xB6ab964832808E49635fF82D1996D6a888ecB745',
intentReceiptHub: '0xD66A1e880AA3939CA066a9EA1dD37ad3d01D977c',
disputeModule: '0x144DfEcB57B08471e2A75E78fc0d2A74A89DB79D',
},
});Solvers must register and stake a minimum bond of 0.1 ETH before posting receipts.
// Register solver
const solverId = await client.registerSolver(
'ipfs://QmYourMetadata', // Metadata URI
signer,
);
console.log('Solver registered:', solverId);
// Deposit bond (minimum 0.1 ETH)
await client.depositBond(solverId, ethers.parseEther('0.1'), signer);
console.log('Bond deposited');import { buildReceiptV2 } from 'irsb';
const receipt = buildReceiptV2({
intentHash: ethers.keccak256(
ethers.toUtf8Bytes('my-intent-data')
),
solverId: solverId,
constraintsHash: ethers.keccak256(
ethers.toUtf8Bytes('min-output:1000')
),
routeHash: ethers.keccak256(
ethers.toUtf8Bytes('uniswap-v3-direct')
),
outcomeHash: ethers.keccak256(
ethers.toUtf8Bytes('output:1050')
),
evidenceHash: ethers.keccak256(
ethers.toUtf8Bytes('tx:0xabc...')
),
});
const receiptId = await client.postReceiptV2(receipt, signer);
console.log('Receipt posted:', receiptId);# Verify using CLI
npx irsb verify <receipt-id>
# Or check on Etherscan
# https://sepolia.etherscan.io/address/0xD66A1e880AA3939CA066a9EA1dD37ad3d01D977c