Runway

Trust, safety and how to check it

Runway is built so you don't have to trust Runway. Here is what protects merchants, lenders and customers, and where you can check each claim yourself.

Settlement accounts have no keys

Every merchant's handle.pay.runway-rama.testnet is created with zero access keys. Nobody can sign a transaction for it. It runs one fixed program that can only split incoming USDC and forward it to the credit contract. On any offer's audit page your browser checks both: the account's code hash equals the factory's, and it has no keys.

Two RPCs must agree

Reads that decide where money goes (the pay page's settlement account, an agent's session key, the audit checks) are made against two independent NEAR RPC providers at the same block, and must match. A single lying server can't redirect a payment.

Verified agents

Two agents do the private work: the underwriter (scores revenue, signs offers) and the INR gateway (converts rupees). Each publishes a short-lived session key on-chain. Before your browser encrypts a loan request or a UPI ID, it checks that the key the agent serves matches the key on-chain. Verify shows this for both agents, live.

Testnet: local mode

On testnet the agents run in local mode: whitelisted accounts with mock attestation, shown as “local mode” on Verify. The protocol, keys, encryption and checks are the same; hardware isolation (a TEE) is what a mainnet deployment adds, with a contract created with requires_tee = true.

Offers are bounded by the contract

The underwriter proposes; the credit contract decides. Every offer must fit the on-chain policy: limit between 50 USDC and the tier cap, fee between 3% and 15%, repay share between 5% and 25%, the current policy version, and an approved agent with the Underwriter role. A buggy or compromised agent can't issue an out-of-policy loan. Every offer also commits to its inputs, and the Capital page re-checks the commitment (“commitment verified”).

Requests are private

  • Loan requests are signed with your wallet (NEP-413, a signed message, not a transaction) and encrypted to the underwriter's session key.
  • Statements are read by NEAR AI private inference; the response is checked against its attestation and only a receipt hash goes on-chain.
  • UPI IDs and bank accounts are stored only as ciphertext; you see a masked label.

You can always leave

The exit page is a single static file pinned to IPFS. With only your wallet and a public RPC it can settle a settlement account, claim payouts and withdrawals, and check loans, even if every Runway server is gone.

Where to check things

QuestionWhere
Are the agents the approved ones, with the right roles?Verify
Were this offer's terms within policy, from a valid agent?Audit → Offer id
Which loans are active, and how much is repaid?Audit → Active loans
Every rupee receipt and payout for a merchantAudit → INR rail
Any transactionNearBlocks

Real vs simulated on testnet

RealSimulated
Every contract call: splits, loans, shares, receipts, payoutsUSDC (a mock token) and UPI (a mock provider)
1Click quotes and their signature check (mainnet price previews)The crypto payment after the quote
NEAR AI private inference and its attestationTEE isolation (agents in local mode)
The live INR rate from Indian exchangesThe rupees themselves