No oracle health factor
The simple loan does not read a market price to liquidate a healthy-looking position. Collateral sufficiency is a term choice and a default-recovery risk, not an automatic margin call.
Foundry Credit is a peer-to-peer lending design for IMF, twelve K9 currency systems, their ShareTokens, and external DogeOS projects. This handbook separates what is clickable in the product demo from what is deployed and proven on-chain.
The current application creates local demo records. It does not discover live offers, lock tokens, sign lending terms, or send loan transactions. The deployed lending contracts and the two historical testnet lifecycles are real. A wallet connection is optional and does not change that boundary.

Each loan combines a collateral asset, a credit asset, principal, fixed and/or accruing interest, a lender, a borrower, and a default timestamp. The borrower’s collateral is held by the loan contract. The lender receives a transferable ERC-721 LOAN token representing the claim.
The simple loan does not read a market price to liquidate a healthy-looking position. Collateral sufficiency is a term choice and a default-recovery risk, not an automatic margin call.
Interest is fixed by loan terms. There is no shared pool whose rate changes with utilization. A signed lending offer is not a deposit and does not auto-compound.
Repayment credit or expired collateral belongs to the current LOAN NFT holder, subject to the settlement path. Transferring the NFT transfers that economic claim.
The repayment caller supplies the credit asset, while collateral returns to the recorded borrower. If the original lender still holds the LOAN NFT, the protocol attempts direct settlement.
A simple proposal describes a one-time exchange with exact amounts. An elastic proposal allows acceptance of a credit amount within the proposed limit, with collateral scaled according to the signed ratio. This deployment includes both proposal contracts; Dutch Auction, List, and Chainlink proposal products are not deployed.
The contract combines fixed interest with minute-based accruing interest. Its Solidity implementation computes whole elapsed minutes and uses integer arithmetic:
The demo’s full-term preview uses a human-readable days/365 approximation. A production write path must call the current contract for exact integer amounts instead of relying on browser floating-point estimates.
Utilized credit is tracked to prevent an offer from funding beyond its limit. Repayment does not restore utilized capacity. An unused offer can be revoked through the proposal/nonce mechanism; a created loan continues under its own terms.
The Borrow, Lend, and My credit views reproduce these decisions using illustrative offers and local browser state. Repay, revoke, transfer, and claim buttons update only the demo ledger. JSON downloads are planning artifacts, not signed offers or proof of blockchain state. Reset removes local demo changes; it cannot affect a wallet or contract.
Add a reviewed transaction engine with exact ERC-20 approvals, EIP-712 domain/type handling where applicable, fresh static calls and gas estimates, explicit human review, separate wallet confirmations, receipt reconciliation, and no automatic resubmission.
IMF can serve as a common collateral or credit asset. K9 currencies can be borrowed or lent against IMF, other K9 currencies, or external tokens. Each K9 system also has a separate equity ShareToken. The lending rail does not merge their reserves, guarantee exchange rates, or create automatic FX conversion.
Contract 0x83b555b9b3a83dcD541619688f0C7A2e812E71D3, 18 decimals. Its presence in the UI does not establish liquidity, price, or suitability as collateral.
USD, EUR, JPY, GBP, AUD, CNY, BRL, PKR, BDT, INR, NGN, and CHF are available for modeling. Each remains an independent currency system.
Equity tokens can be modeled as collateral or credit. Their volatility, governance rights, transfer behavior, and liquidity need separate assessment.
DUKKY, SIXRR, and custom ERC-20 assets can use the same conceptual desk. Blank demo addresses are explicitly unconfigured; real integrations must verify bytecode and metadata.
| System | Currency token | Equity ShareToken |
|---|---|---|
| K9USD | 0xBe01772ee4ba9807b4cF68F49E559d456d6f20cC | 0x8596E9E4B980739CE2E6C155e520a0ef46381568 |
| The complete 12-system registry loads from the repository-owned local registry. Without JavaScript, use the application’s registry links and the deployment manifest. | ||
Token deployment does not imply an active offer, deep liquidity, a stable market value, or a successful loan. Verify current state on DogeOS before every integration.
A project can put its own interface and credit policy in front of the same lending core. It does not need a new pool admin or a separate deployed loan contract. The desk can define supported tokens, term templates, branding, counterparty policy, and operational monitoring.
The Project Studio currently saves an off-chain demo template. It does not register a token on-chain, publish an offer, or create a project treasury. No DUKKY or SIXRR deployment is inferred.
Projects can support long-tail collateral without exposing a shared pool to every asset. Losses remain attached to bilateral lender claims rather than a common utilization pool. The tradeoff is fragmented liquidity, more counterparty discovery work, and no instant pooled exit.
10 contracts · chain 6281971 · protocol fee 0 · source commit 4f6c851f7681
Loan source is unmodified PWN v1.3, Solidity 0.8.16, optimizer enabled with 200 runs, London EVM. All ten contracts were reported is_verified=true through Blockscout’s smart-contract API. This is an independent deployment; no official PWN affiliation or inherited production assurance is claimed.
| Contract | DogeOS address | Blockscout |
|---|---|---|
| PWNConfig singleton | 0x616E897996Ac3a8361aC120ebbcde3C66c5d7cef | Verified |
| PWNConfig proxy | 0x1b82d260ff95e324816Dd84F3177c59B49fA82c3 | Verified |
| MultiTokenCategoryRegistry | 0xbc42dFd5e196992358b0c08CaccDD4E6427B9565 | Verified |
| PWNHub | 0xf39F1B87f3506f6d93410f8B245cfA5C01eE3eB1 | Verified |
| PWNLOAN | 0x96cF311c09B58445CaEB16E716a2dA482721562e | Verified |
| PWNRevokedNonce | 0x256b333e6290dC16dC7b2d507aED343567526424 | Verified |
| PWNUtilizedCredit | 0x23b1B18AF60dD48Fd3B7a61Ff76A60D160c12714 | Verified |
| PWNSimpleLoan | 0xD7086E794e0Bec5f1bF516133e9B0C7D474E3158 | Verified |
| SimpleProposal | 0x9865E7C48185bdFF56109D2Fe91aEafc60f63E32 | Verified |
| ElasticProposal | 0x591a56B466BcA564f0C4452cD24C5726DB784e43 | Verified |
Deployer, config admin, Hub owner, and fee collector are the fresh testnet EOA 0x19F8782f560Bf1A70Ca0Cd49D6cFDF6830a1205E. Protocol fee is zero. A production system should replace single-key administration with a reviewed multisig and timelock process, explicit key custody, and monitored upgrade procedures.
The Config proxy’s own TransparentUpgradeableProxy source was explicitly verified in addition to its EIP-1967 implementation resolution. Sourcify verification was attempted but its public endpoints returned 404 at verification time; do not describe Sourcify as complete.
6281971https://rpc.testnet.dogeos.comStatus 1, block 9048080. The borrower recovered 1,000 IMF; the lender received repayment; vault token balances returned to zero.
Status 1, block 9048302. The lender claimed exactly 5,000 IMF after expiry; the vault was empty after settlement.
Both LOAN NFTs are burned. Reading status 0 after these complete lifecycles reflects deleted storage, not an active loan. The manifest records 34 unique deployment, funding, approval, proposal, creation, repayment, and claim links. These are historical testnet proofs—not current offers or user balances.
Before broadcast, the copied protocol’s relevant suite passed 427 tests. This supports implementation testing; it is not an independent security audit or production certification.
The application uses the official @dogeos/dogeos-sdk 4.0.4 React integration, packaged as a separate local JavaScript/CSS bundle. It is lazy-loaded only after the user selects Connect or log in. The initial page does not load React or open a wallet dialog.
basicLogins: ['externalWallets']defaultConnectChain: ChainTypeEnum.EVMEmail login and WalletConnect-specific project configuration are not enabled. The public application client ID is an identifier, not a secret. It must be restricted to the approved HTTPS origin. Connection is not an authenticated IMF backend session, token approval, loan signature, or transaction authorization.
The DogeOS connection modal was exercised on https://lending.imf.li at a 390px mobile viewport. External-wallet, Google, and X choices rendered without browser errors. Other hosted or local origins need their own allowlist entries.
The wallet island displays connection state. It does not register a lending transaction engine, request message signatures, call authentication-token APIs, or access non-EVM providers. Demo controls remain usable without a wallet. No private key or seed phrase belongs in this static frontend.
Keep the current demo public for education. Enable a narrow IMF/K9USD testnet write path only after the transaction engine passes separate-wallet QA. Add elastic proposals and external project desks after the indexer and operations workflows are reliable. Do not infer that a Barkswap pool is required for PWN settlement; no lending pool was needed for the two proofs.
| Action | Primary contract / data | Critical checks |
|---|---|---|
| Create on-chain offer | SimpleProposal / ElasticProposal makeProposal | Terms, nonce, expiration, credit approval, receipt |
| Accept signed offer | PWNSimpleLoan creation method with proposal and signature | EIP-712 domain, chain, verifying contract, acceptor, collateral approval |
| Read repayment | loanRepaymentAmount(loanId) | Fresh block, exact integer amount, credit token |
| Repay | repayLOAN(loanId) | Running status, before default, exact approval, collateral recipient |
| Claim | claimLOAN(loanId) | Current LOAN NFT owner; repaid or expired state |
| Transfer claim | PWNLOAN ERC-721 transfer | Loan ID, recipient, new owner, downstream settlement rights |
| Revoke unused proposal | Proposal/nonce revocation path | Unused capacity, nonce state, no effect on existing loans |
Download the full deployment and transaction manifest. Application: lending.imf.li/#mechanics.
No. It is a public interactive demo connected to real deployment information and historical testnet proofs. The loan forms and portfolio actions remain local demo actions.
No. Connection supplies wallet/login functionality only. A separate reviewed transaction engine is required before live writes.
The deployed simple loan has no price-oracle health factor. Repayment and default time determine settlement. Collateral price risk remains with the lender.
No. IMF can be a common lending asset, but each K9 currency remains an independent system. Credit does not create shared reserves or automatic FX conversion.
Yes at the protocol design level, subject to token compatibility and integration review. Project Studio currently creates demo policy templates only.
No production audit is claimed. Source verification, 427 passing pre-broadcast tests, and two testnet lifecycles are evidence of deployment and behavior, not a security guarantee.