/protocol/contracts
Contracts & verification
Every address is on BNB Smart Chain Testnet (97). Open BscScan to verify source and history.
| Contract | Address | Source |
|---|---|---|
| Kulaya core (Warung.sol) | 0xF6fD…21D8BscScan | Source |
| MockIDRX (2 decimals) | 0x6CD5…e527BscScan | Source |
| ReputationAdapter | 0x41dA…214EBscScan | Source |
| AI wallet (agent owner) | … | — |
| Relayer | 0x15c3…828cBscScan | — |
| ERC-8004 Identity | 0x8004…BD9eBscScan | — |
| ERC-8004 Reputation | 0x8004…8713BscScan | — |
The product was named Kulaya late in the build. The core contract was deployed under its code name Warung, which is why wallets show “Warung” when signing.
Parameters (live values)
| Parameter | Value |
|---|---|
| Credit limit | 10% of verified 30-day sales, capped by level |
| Level ceilings | Rp 1 jt · 2 jt · 4 jt · 8 jt (doubles after each repaid loan, max level 3) |
| Minimum loan | Rp 50.000 |
| Min distinct payers | 5 |
| Per-payer daily cap | Rp 250.000 |
| Minimum payment | Rp 5.000 |
| Fee | flat, ≤ 5% (the AI typically offers about 4%) |
| Repay share | ≤ 20% of each sale (typically 10%) |
| Offer validity | 24 h |
| Write-off | 14 days without sales during an active loan |
| Pool | ≤ 5% per loan · ≤ 20% new loans/day · 20% of fees to the reserve |
Loan lifecycle
PROPOSEDACTIVEREPAIDorDEFAULTED· an unaccepted offer mayEXPIRE
Tests
33 Foundry tests: unit, fuzz, stateful invariants, relay attacks
32 TypeScript tests: policy layer, sessions, formatting, Telegram login codes
Read the source on GitHubOne loan, end to end
| Step | Call |
|---|---|
| Proposed | proposeLoan |
| Accepted | acceptLoanFor (EIP-712, gasless) |
| Repayment | payFor (split on every sale) |
| Closed | repaid |
| Reported | giveFeedback (ERC-8004) |