FAQ
Common questions about Owna Finance platform.
๐ข General Questions
What is Owna Finance?
Owna Finance is a property tokenization platform that enables:
Property owners to tokenize property cash flows into YRT tokens
Investors to buy YRT tokens and receive automatic yield distribution
Trading via DEX with fair price discovery
What blockchain does Owna Finance use?
We use Base (Ethereum Layer 2):
Lower gas fees than Ethereum mainnet
Fast transactions (~2 seconds)
Secure & decentralized
Compatible with Ethereum ecosystem
Is it safe?
Yes, our contracts are:
๐ฐ For Property Owners
How do I tokenize my property?
Call
YRTFactory.createSeries()with property detailsCreate pool in Owna-DEX
Add initial liquidity
Users can start buying YRT tokens
See: Property Onboarding Guide
Can I mint more tokens later?
Yes! Property owners can mint additional tokens during GAP periods (after snapshot, before next period starts).
This supports business growth and expansion.
// Allowed in GAP period
factory.mintTokens(seriesId, owner, 500e18)
// NOT allowed during fundraisingHow long is the fundraising period?
Completely flexible! Input duration in seconds:
Demo: 180 seconds (3 minutes)
Production: 7,776,000 seconds (90 days)
Custom: Any duration you want
How do I distribute yield?
Easy 2-step process:
Deposit yield:
factory.depositYield(seriesId, periodId, amount)Wait for Chainlink Automation:
Automatically triggers snapshot at maturity
Distributes yield to all snapshot holders
No manual claim needed!
Can users buy tokens directly from the factory?
No. Direct purchase is disabled. All trading must go through Owna-DEX for:
Fair price discovery
Liquidity incentives
Secondary market trading
๐ค For Users/Investors
How do I buy YRT tokens?
Connect wallet (Coinbase Wallet recommended)
Get USDC/IDRX from faucet (testnet) or exchange (mainnet)
Browse properties on Owna Finance dApp
Buy via DEX swap:
router.swapExactTokensForTokens(
usdcAmount,
minYRTOut,
[USDC, YRT],
user,
deadline
)Do I need to claim yield?
No! Yield is distributed automatically via Chainlink Automation.
USDC will appear in your wallet automatically at maturity. No claim transaction needed.
What if I sell my tokens after snapshot?
You still receive yield!
Snapshot saves holder list at maturity date. Even if you sell tokens after snapshot, you'll still receive yield for that period.
Example:
1. You hold 100 YRT at snapshot (Oct 1)
2. Snapshot taken
3. You sell 100 YRT to Bob (Oct 2)
4. Distribution happens (Oct 3)
5. You receive yield โ
6. Bob does NOT receive yield for this periodCan I sell anytime?
Yes! YRT tokens are tradeable on Owna-DEX 24/7.
You can sell before or after snapshot. Selling before snapshot means you forfeit yield for that period.
What determines the price?
Price is determined by AMM (Automated Market Maker):
Price = Reserve_USDC / Reserve_YRT
When many people buy:
โ YRT supply decreases
โ Price increases โฌ๏ธ
When many people sell:
โ YRT supply increases
โ Price decreases โฌ๏ธNo centralized price manipulation!
๐ For Liquidity Providers
How do I provide liquidity?
router.addLiquidity(
yrtAddress,
usdcAddress,
yrtAmount,
usdcAmount,
minYRT,
minUSDC,
lpAddress,
deadline,
propertyName
)You receive LP tokens representing your share of the pool.
How much do I earn?
You earn 0.3% fee on all swaps in the pool.
Fees auto-compound into the pool, increasing the value of your LP tokens.
Can I remove liquidity anytime?
Yes! LP tokens can be redeemed anytime for underlying YRT + USDC + earned fees.
router.removeLiquidity(
yrtAddress,
usdcAddress,
lpAmount,
minYRT,
minUSDC,
lpAddress,
deadline
)What is impermanent loss?
Impermanent loss occurs when token price ratio changes after you provide liquidity.
However, fees can offset this loss. Read more: AMM Pricing
๐ง Technical Questions
What is a snapshot?
Snapshot is "freeze balances" at maturity date to determine yield distribution.
What is saved:
Holder addresses
Token balances
Total supply
This prevents distribution bypass via token transfers.
What is a period?
Period represents a fundraising & yield distribution cycle:
Period 1 (Q1):
โโ Start: Day 1
โโ Fundraising: 90 days
โโ Maturity: Day 90
โโ Snapshot: Day 90
โโ Distribution: Automatic
Period 2 (Q2):
โโ Start: Day 91
โโ Fundraising: 90 days
โโ ... (independent from Period 1)Each period is completely independent.
Why isolated pricing per property?
Each property has unique YRT token and separate pool:
Property A โ YRT_A โ Pool A โ Price A
Property B โ YRT_B โ Pool B โ Price BBenefits:
Price isolation (A doesn't affect B)
Independent valuation
Risk isolation
Fair price discovery per property
How does Chainlink Automation work?
AutoDistributor contract uses Chainlink Automation:
checkUpkeep() - Monitors maturity dates
performUpkeep() - Triggers snapshot & distribution
Runs automatically, no manual trigger needed
Gas paid by Chainlink subscription
See: Chainlink Automation Guide
What about gas fees?
Base Sepolia (testnet): Very low gas fees (~0.0001 ETH per tx)
Base Mainnet (production): Still much lower than Ethereum mainnet
Chainlink Automation pays gas for distribution!
๐ป Developer Questions
What tech stack do I need?
Smart Contracts:
Solidity 0.8.28
Foundry for development
Frontend:
Next.js 14+
OnchainKit (Coinbase)
Wagmi & Viem
TypeScript
See: Frontend Integration
Where are the ABIs?
After forge build, ABIs are in:
out/YRTFactory.sol/YRTFactory.json
out/OwnaRouter.sol/OwnaRouter.json
out/OwnaFactory.sol/OwnaFactory.json
out/YRTToken.sol/YRTToken.jsonSee: ABI Files
How do I test locally?
# Clone repo
git clone <repo-url>
# Install dependencies
forge install
# Run tests
forge test
# Run specific test
forge test --match-test testCompleteFlow -vvv
# Deploy locally
anvil # Terminal 1
forge script script/Deploy.s.sol --rpc-url localhost --broadcast # Terminal 2How do I deploy to testnet?
# Setup .env
cp .env.example .env
# Add PRIVATE_KEY & RPC_URL
# Deploy to Base Sepolia
forge script script/Deploy.s.sol \
--rpc-url base_sepolia \
--broadcast \
--verifySee: Deployment Guide
๐ Troubleshooting
Transaction fails with "Direct buy disabled"
This is expected! Direct purchase via buyToken() is disabled.
Solution: Buy tokens via Owna-DEX instead:
router.swapExactTokensForTokens(...)Transaction fails with "Manual claim disabled"
This is expected! Manual claim via claimYieldForPeriod() is disabled.
Solution: Wait for AutoDistributor to distribute automatically. No action needed!
Transaction fails with "Cannot mint during active fundraising"
You're trying to mint during fundraising period.
Solution: Wait for GAP period (after snapshot, before next period starts):
Period 1 ends โ Snapshot โ [GAP PERIOD - mint allowed] โ Period 2 startsPrice impact too high / Slippage error
Pool has low liquidity, causing high price impact.
Solutions:
Increase slippage tolerance
Reduce swap amount
Wait for more liquidity to be added
Provide liquidity yourself
Can't find my yield
Yield is distributed automatically!
Check:
Has maturity date passed?
Has snapshot been triggered? (Check
isSnapshotTakenForPeriod)Check your USDC balance (not YRT balance)
View transaction history on BaseScan
๐ฎ Future Plans
When mainnet launch?
TBD - after security audit and testing.
Will there be a token?
No platform token planned yet. Focus is on property tokenization.
What about regulations?
Property owners are responsible for regulatory compliance in their jurisdiction.
Platform provides technical infrastructure only.
๐ Still Have Questions?
Read full documentation
Check Glossary for terms
View Links & Tools
Ask on Discord/Telegram (if available)
Last Updated: October 2025
Last updated
