Deposit protection
The core problem pi2pi solves: in most cross-border rentals, a tenant's deposit sits in a landlord's personal bank account with no enforceable guarantee it comes back. pi2pi moves that deposit into a smart contract instead.
The equal-stakes deposit model
Both sides post a stake into the same escrow contract — this isn't a one-sided security deposit against the tenant:
| Deposit | Posted by | Amount | Purpose |
|---|---|---|---|
| Commitment Deposit | Tenant | 1× monthly rent | Tenant's commitment to the lease |
| Hosting Deposit | Landlord | 1× monthly rent | Landlord's commitment to honor the agreement |
| Property Security Deposit | Tenant (optional) | 0–3× monthly rent | Covers potential property damage, set per listing |
Where the money actually sits
All of it goes into the RentalEscrow smart contract (and PropDepEscrow for the property security deposit specifically) on Arc Testnet — addresses are published at /arc and /project-info.json. Neither party, and not pi2pi as a company, can move these funds outside the rules encoded in the contract.
The on-chain lifecycle
Created → AwaitingLandlordDep / AwaitingTenantDep → Active → CheckoutProposed / EarlyTermProposed → DamageClaimed → DisputeOpen → Settled
At a clean checkout with no damage claim, the contract's rules release deposits back to each party. If a landlord raises a damage claim, the agreement moves into a bond-posting and freeze-window process before any dispute is settled — this prevents either side from unilaterally grabbing funds by simply staying silent.
Automated enforcement — not automated payment
An off-chain "keeper" bot is implemented to continuously monitor every active agreement for deadline-based conditions and trigger the corresponding permissionless on-chain action. It enforces deadlines — it does not pay rent or move funds into anyone's wallet on their behalf; tenants and landlords still send their own payment and deposit transactions:
- Rent overdue → flags the agreement as rent-missed
- Landlord raised a damage claim and the tenant stayed silent past the deadline → executes the claim
- Landlord didn't post the required bond in time → the claim expires
- A dispute's freeze window has expired → frozen funds are released per the contract's rules
This is what the deadline-enforcement code is designed to do. It does not mean every path above has been exercised end-to-end in production — Infrastructure and the main public surfaces were operating, but full production end-to-end testing of financial and contract workflows has not been performed.
Yield on escrowed funds
While a deposit sits in escrow, it can be routed through ERC-4626 yield adapters (Aave, Morpho). Yield is split 70% back to the two parties and 30% to the protocol treasury — this is how pi2pi earns revenue instead of charging fees. The escrow contract tracks the principal amount owed to each party separately from yield performance; this design has not been independently audited or stress-tested against an adapter loss scenario.
See Security for audit status and How it works for the full agreement flow.