Risk infrastructure for onchain lending

Price borrower risk from real onchain history

ChainScore turns a wallet's borrowing and repayment record into a 300 to 850 credit score, with calibrated default probability and a published backtest. Built for lenders and protocols that underwrite onchain. One API call per decision.

Or check any wallet right now, free:

Live score
vitalik.eth
742Strong

Illustrative example. Score range 300 to 850

Lending History92
Wallet History86
DeFi Activity74
Portfolio & Identity81
EthereumArbitrumOptimismPolygonBaseAvalanche*Scroll*Solana** coverage detail
40,000
Wallets analyzed in training
88%
Of liquidations flagged in backtest
7 + Solana
EVM networks, plus Solana
300 to 850
Score range

Coverage we will state precisely

Where our data is thinner, the score says so: every response carries a data-completeness figure and names its degraded sources. We would rather tell you than have you find out.

Ethereum

Full

Full coverage: Aave V2/V3, Compound V2, complete tx history.

Arbitrum

Full

Full coverage: Aave V3, complete tx history.

Optimism

Full

Full coverage: Aave V3, complete tx history.

Polygon

Full

Full coverage: Aave V3, complete tx history.

Base

Full

Full coverage: Aave V3, complete tx history.

Avalanche

Reduced tx history

Borrow detection live; tx-history features reduced. Data completeness is reported on every score.

Scroll

Reduced tx history

Borrow detection live; tx-history features reduced. Data completeness is reported on every score.

Solana

Site only

Separate scoring path on the site. Not yet available on the partner API.

A credit score should measure how you repay

Offchain bureaus do not score someone who has never used credit. ChainScore works the same way. We only rate wallets with a real borrowing record, because repayment is the behavior a credit score exists to measure.

If a wallet has never borrowed, the API says exactly that. No invented numbers. That honesty is what makes the score worth pricing against.

Has borrowed onchain

A full 300 to 850 score with calibrated default probability, factor breakdown, and integrity signals.

?

Never borrowed

An explicit no-borrow-history flag instead of a misleading score, so your underwriting logic can branch on it.

From wallet to underwriting signal in one call

  1. 01

    Send a wallet

    One API call with any address, or paste it here. No connection, no KYC, nothing offchain.

  2. 02

    We read its lending history

    Every borrow, repayment, and liquidation across Aave V2/V3 and Compound V2, plus wallet history, read from public chain data.

  3. 03

    Get a score you can price with

    A 300 to 850 score with calibrated default probability, factor breakdown, integrity checks, and a data-completeness figure on every response.

Four factor groups, straight from the model

These are the model's actual feature groups, not marketing categories. Every score response breaks its result down along the same four lines.

Lending History

Borrows, repayments, and prior liquidations across Aave and Compound. Repayment ratio and liquidation history carry the most weight, exactly as offchain.

Wallet History

Wallet age, activity depth, and consistency over time. Established borrowers with a long record earn more trust than fresh addresses.

DeFi Activity

Breadth of protocol usage: LP positions, staking, governance. Signals of a real participant rather than a throwaway wallet.

Portfolio & Identity

Holdings, stablecoin mix, token diversity, and identity markers like ENS. How the account manages risk between loans.

We publish the backtest, misses included

Would ChainScore have flagged the wallets that got liquidated? The retrospective answers with real holdout data: recall, false positives, calibration, and where the model is weakest. Zero lookahead, reproducible, updated with the model.

Most scoring products show you their wins. Underwriters need the whole confusion matrix.

Read the retrospective
Borrower records ingested
250K+
Liquidated wallets in the data
20K+
Protocols covered
Aave V2, V3 + Compound V2
No KYC, nothing offchain
Public data only

A versioned API built for underwriting

Authenticated scoring with hashed bearer keys, signed score-change webhooks for monitored wallets, per-key rate limits, and an OpenAPI 3.1 spec. Every response is versioned and carries its provenance: model version, as-of time, data completeness.

curl https://chainscore.dev/api/v1/score/0xd8dA...6045 \
  -H "Authorization: Bearer cs_live_..."

{
  "score": 712,
  "grade": "B",
  "calibratedPD": 0.041,
  "factors": [...],
  "integrity": { "flagged": false },
  "dataCompleteness": 1,
  "modelVersion": "v5-xgb-cal",
  "asOf": "..."
}