Real World Lending
Peer-to-peer lending on Robinhood Chain. Tokenized stock as collateral, USDG as principal, and every protocol fee returned to the users who generate the flow.
Real World Lending is a single-contract, peer-to-peer lending market. There is no pool, no shared liquidity, and no interest-rate model. Each loan is a private agreement between two parties on terms the borrower publishes up front.
- Borrower. Locks an allowlisted tokenized-stock ERC20 as collateral and lists the loan: principal, interest, and duration, all chosen freely.
- Lender. Browses open listings and funds any loan whose terms and collateral they judge acceptable. Funding is atomic: USDG moves directly from lender to borrower in the same transaction that activates the loan.
Collateral is any tokenized stock the contract owner has allowlisted (18 decimals). Principal and interest are denominated in USDG, the Paxos-issued Global Dollar (6 decimals). The contract escrows only collateral; principal never sits in the contract.
- List. The borrower calls
listLoan, transferring the collateral into escrow and setting principal, interest, and duration. The listing sits inOpenstatus. A flat protocol fee in ETH is paid with the call. - Fund. A lender calls
fundLoan. Atomically: the lender's USDG principal is transferred straight to the borrower, the deadline is set to now plus the listed duration, the loan becomesActive, and both borrower and lender earn one epoch credit each. The lender also pays the flat ETH protocol fee. - Repay. Before the deadline, the borrower repays principal plus interest in USDG directly to the lender and the escrowed collateral returns to the borrower. Status:
Repaid. No fee on repay. - Default. If the deadline passes unpaid, the lender calls
seizeand takes the full collateral. Status:Defaulted. No fee on seize. - Cancel. While a listing is still
Open, the borrower can cancel and reclaim the collateral. The listing fee is not refunded.
The protocol charges a flat fee in ETH, not a percentage. The fee (protocolFee, currently 0.001 ETH) is paid exactly twice per loan:
- by the borrower when listing (
listLoanrequiresmsg.value == protocolFee), - by the lender when funding (
fundLoanrequires the same).
Repay, seize, and cancel charge nothing. Every fee is credited to the reward pot of the epoch in which it is paid. Anyone can also top up the current pot by sending bare ETH to the contract.
Fees do not go to the protocol. They pool into epoch pots and are paid back to active users, pro rata by credits. Time is divided into fixed epochs (currently 24 hours each):
Each funded loan mints exactly two credits in the current epoch: one to the borrower, one to the lender. When an epoch ends, only a fraction of its pot (payoutRatioBps, currently 2000 = 20%) is distributed; the rest rolls forward as a standing reserve:
The rollover (including integer-division dust) is added to the next epoch's pot. If an epoch had fees but zero credits, the entire pot rolls forward. Users claim finalized epochs at any time with claim; a claim pays credits × payoutPerCredit in ETH.
A borrower lists 10 TSLA as collateral against 1,500 USDG principal, 75 USDG interest, 7 days.
- List: borrower sends 10 TSLA into escrow plus the 0.001 ETH protocol fee.
- Fund: lender sends 1,500 USDG, which lands directly in the borrower's wallet, plus 0.001 ETH fee. Total ETH fees for this loan: 0.002 ETH, all into the epoch pot. Borrower and lender each earn 1 credit.
- Repay (within 7 days): borrower sends 1,575 USDG (1,500 + 75) to the lender and receives the 10 TSLA back. No further fee.
- Net: lender out 1,500 USDG + 0.001 ETH, in 1,575 USDG (a 5% return over 7 days). Borrower out 75 USDG + 0.001 ETH for a week of liquidity. Both hold 1 epoch credit.
Same loan, but day 7 passes with no repayment. Once block.timestamp exceeds the deadline, the lender calls seize and receives the full 10 TSLA. The borrower keeps the 1,500 USDG but permanently loses the collateral. No fee, no partial liquidation, no grace period: default is final.
Epoch 0 collects a 1 ETH pot and mints 4 credits (two funded loans). Payout ratio is 20%:
Each credit claims 0.05 ETH; 0.8 ETH rolls into epoch 1. Suppose epoch 1 adds two more funded loans: 0.004 ETH of new fees (4 × 0.001) and 4 fresh credits.
The reserve compounds: early fee inflows keep paying out for many epochs, so reward flow stays smooth even when activity dips.