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 withrequires_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
| Question | Where |
|---|---|
| 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 merchant | Audit → INR rail |
| Any transaction | NearBlocks |
Real vs simulated on testnet
| Real | Simulated |
|---|---|
| Every contract call: splits, loans, shares, receipts, payouts | USDC (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 attestation | TEE isolation (agents in local mode) |
| The live INR rate from Indian exchanges | The rupees themselves |