Quickstart

Post your first receipt on Sepolia in 5 minutes.

Prerequisites

  • Node.js 18+ and a package manager (npm, pnpm, or yarn)
  • A Sepolia RPC URL (e.g., from Alchemy or Infura)
  • A wallet with Sepolia ETH (for gas + bond staking)

1. Install the SDK

bash
npm install irsb ethers

2. Initialize the Client

typescript
import { 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',
  },
});

3. Register a Solver (One-Time)

Solvers must register and stake a minimum bond of 0.1 ETH before posting receipts.

typescript
// 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');

4. Build and Post a Receipt

typescript
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);

5. Verify the Receipt

bash
# Verify using CLI
npx irsb verify <receipt-id>

# Or check on Etherscan
# https://sepolia.etherscan.io/address/0xD66A1e880AA3939CA066a9EA1dD37ad3d01D977c

Next Steps