ERC-8452: Agent Default Registry

A default at one lender is invisible to the next: an agent, or its owner through another agent, borrows again elsewhere. This draft is one contract where lenders record the defaults of their loans to agent identities, keyed by identity and by the owner address the loan recorded, with the asset, the principal and a loan reference that cannot be recorded twice, and later a cure with the amount recovered. Anyone may record; a record counts only for a reader that trusts its reporter. A lender’s contract asks, inside the transaction that opens a line, how many open and cured defaults this identity or this owner has according to the reporters it names, at a cost that grows with that list alone, however many records others add.

Differences from what exists: ERC-8004’s feedback averages values and ERC-8419’s KYA keeps one latest assertion per issuer, so neither can count defaults; this keeps every default as its own countable record, indexed by owner too.

Questions:

  1. Should a cure be recordable by the identity’s owner with the lender’s signature, or only by the reporter?
  2. Is a per-chain singleton enough, or do lenders need cross-chain reads from day one?

Nice scoping, keeping every default as its own countable record is the right call if lenders want counts and not scores.

On your first question, plus two things I noticed reading the reference implementation:

  1. Cure by the owner: I’d keep it reporter only for now. A signed path needs the signature to bind the registry address, chainId, recordId and the recovered amount, and reporters that are contracts will need ERC-1271. That’s a lot of surface for a call the lender can make itself.
  2. loanRef is unique per reporter, not per loan. A lender reporting from two addresses, or a lender plus its servicer, can record the same loan twice, and a reader trusting both counts one default as two. Worth a line in the spec on how readers should build their reporter list, or a way for a reporter to declare its aliases.
  3. A record made by mistake can’t be undone. The only exit is recordCure, so “never defaulted” ends up looking like “defaulted and repaid”. A void state would keep the cured counts honest once lenders start pricing on them.

Also, owner is whatever the reporter passes and is never checked against the identity registry. Probably fine since readers choose their reporters, but the spec could say it has to be the owner recorded when the loan opened, since the identity may have moved by the time it defaults.