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?

  1. Call YRTFactory.createSeries() with property details

  2. Create pool in Owna-DEX

  3. Add initial liquidity

  4. 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 fundraising

How 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:

  1. Deposit yield:

factory.depositYield(seriesId, periodId, amount)
  1. 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?

  1. Connect wallet (Coinbase Wallet recommended)

  2. Get USDC/IDRX from faucet (testnet) or exchange (mainnet)

  3. Browse properties on Owna Finance dApp

  4. 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 period

Can 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 B

Benefits:

  • Price isolation (A doesn't affect B)

  • Independent valuation

  • Risk isolation

  • Fair price discovery per property

AutoDistributor contract uses Chainlink Automation:

  1. checkUpkeep() - Monitors maturity dates

  2. performUpkeep() - Triggers snapshot & distribution

  3. Runs automatically, no manual trigger needed

  4. 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.json

See: 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 2

How 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 \
  --verify

See: 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 starts

Price impact too high / Slippage error

Pool has low liquidity, causing high price impact.

Solutions:

  1. Increase slippage tolerance

  2. Reduce swap amount

  3. Wait for more liquidity to be added

  4. Provide liquidity yourself

Can't find my yield

Yield is distributed automatically!

Check:

  1. Has maturity date passed?

  2. Has snapshot been triggered? (Check isSnapshotTakenForPeriod)

  3. Check your USDC balance (not YRT balance)

  4. 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?


Last Updated: October 2025

Last updated