Whitelist request: Indemnity (INDN) — escrow-by-default payment token using Kleros for buyer-protection disputes

Hello Kleros community,

We are requesting that Kleros governance whitelist our arbitrable contract on

**KlerosCoreNeo (Arbitrum One)** via `changeArbitrableWhitelist`, so that INDN

payment disputes can be created on Neo during the guarded launch.

## What the arbitrable does

Indemnity (INDN) is an ERC-20 where transfers between ordinary addresses are

held in an on-chain escrow for a fixed 7-day window instead of settling

instantly. Within that window the **payer** can open a Kleros dispute; the

jury’s ruling settles the escrow on-chain:

- Ruling 1 (payer wins) or 0 (refused/tie): the payment is refunded to the

payer in full.

- Ruling 2 (receiver wins): the payment is released to the receiver.

There are no other outcomes and no appeal handling inside our contract —

appeals happen entirely within Kleros; we act only on the final executed

ruling. One escrow maps to at most one dispute. The arbitrator address is

immutable in the token; rulings are accepted only from KlerosCore.

## Integration details

- **Source:** GitHub - pgalyen1987/INDN · GitHub — the token is

`contracts/Indemnity.sol`; unit tests cover the dispute/ruling paths,

including the v2 template flow.

- **Standard:** ERC-792 (`createDispute` / `rule`), plus the Kleros v2

dispute-template flow — the contract registers a dispute template at

deployment and emits `DisputeRequest`, so cases render in the v2 Court UI.

- **extraData:** `abi.encode(courtId, 3, 1)` — we currently default to the

General Court (id 1) with 3 jurors and the classic dispute kit, and would

welcome guidance on the most appropriate court for consumer/e-commerce

payment disputes.

- **Fees:** the payer forwards `arbitrationCost()` in ETH when opening a

dispute (excess refunded). The fee is non-refundable, which is our

anti-frivolous-dispute deterrent.

- **Stuck-dispute safety:** if no ruling arrives within a `ruleTimeout`

(default 180 days) after the escrow window closes, anyone may return the

escrowed funds to the payer — a jury that never rules cannot lock funds

forever, and a late ruling on a reclaimed escrow is a no-op.

- **Arbitration policy:** drafted at

INDN/docs/arbitration-policy.md at main · pgalyen1987/INDN · GitHub ;

we will pin it to IPFS and post the CID in this thread before the mainnet

deployment, so jurors always have an immutable policy to rule against.

## Testnet validation (Arbitrum Sepolia, KlerosCore `0xE8442307d36e9bf6aB27F1A009F95CE8E11C3479`)

We have already exercised the integration against the live v2 testnet:

- Token `0x515Cf1F4165dd54b50fe16361dC9798dF31E4211` — registered dispute

template **#43**, opened real dispute **#39** (2026-07-07).

- Token `0xe1f6DDD223A26373886243C6E427c6b4d041F987` (current code) —

registered template **#44**, opened real dispute **#40** (2026-07-14);

creation tx `0x82443115f7c41d16a458f5eb56468ea7a978fb1e21266e3e09d37c9f02afa358`.

- Both disputes have full juries drawn and are progressing through the court

periods; we are driving the permissionless keeper calls ourselves and will

update this thread when the `rule()` callbacks have settled both escrows.

## Expected volume

Honest estimate: single digits to low double digits of disputes per month at

launch. Every dispute is a real contested consumer payment — the

non-refundable arbitration fee (currently 0.015 ETH at court-1/3-juror rates)

makes spam disputes economically irrational.

## The ask

1. Guidance on the correct court id for this use case.

2. A governance action `changeArbitrableWhitelist(, true)`

on KlerosCoreNeo. We will deploy the final contract, share the verified

address in this thread, and **hold the public launch until the whitelist is

active** so no user can enter an escrow they cannot dispute.

Contact: GitHub [@pgalyen1987]( pgalyen1987 · GitHub ) (repo issues

welcome), or DM here on the forum.

Thank you!

A short update from our side, plus a gentle bump — the original post committed to reporting back once the testnet disputes settled and to sharing the verified mainnet address, so here is both.

First, one housekeeping apology: the markdown in the post above did not render. Headings, lists and code spans came through as literal syntax, and the sanitizer silently dropped the <INDN mainnet address> placeholder from the ask — so item 2 up there currently reads changeArbitrableWhitelist(, true), which is not much of a request. I am past the edit window on that post, so this reply restates it properly. Sorry for making it harder to read than it needed to be.

Testnet validation is complete

Both Arbitrum Sepolia disputes we opened have now been ruled by real juries, and the rule() callbacks settled the escrows on-chain:

  • Dispute #39 (token 0x515Cf1F4165dd54b50fe16361dC9798dF31E4211, earlier bytecode) — ruled: true, ruling 0 (refused/tie).
  • Dispute #40 (token 0xe1f6DDD223A26373886243C6E427c6b4d041F987, current code) — ruled: true, ruling 0, and escrow #0 now reads Refunded.

The full path — createDispute → jury → rule() → on-chain settlement — is therefore proven end-to-end on the exact build we intend to ship.

Mainnet contract is deployed and verified

As promised, the address:

The deployment is deliberately quiet: no liquidity, no public announcement, no users. We are holding exactly as we said we would — arbitrableWhitelist for this address currently reads false, so createDispute would revert, and we will not let anyone enter an escrow they cannot dispute.

The ask is unchanged

  1. Guidance on the appropriate court id for consumer/e-commerce payment disputes (we currently default to the General Court with 3 jurors).
  2. A governance action changeArbitrableWhitelist(0x9c2300F97E14D7c7478003F52E562Ff2fC14E89e, true) on KlerosCoreNeo.

If there is anything further you need from us — additional review, changes to the integration, or a different venue for this request — please say so and we will do it. Equally, if there is a queue or a process step we have missed, a pointer would be very welcome.

Thanks for your time.