YRT Token Factory

Multi-period tokenization platform for property cash flows with automated yield distribution


Core Value Proposition

YRT Factory transforms property cash flows into programmable tokens with:

  1. Flexible Periods – Custom fundraising durations (3 min - 365 days)

  2. Snapshot-Based Distribution – Fair yield allocation regardless of secondary trading

  3. Chainlink Automation – Zero-touch distributions at maturity

  4. Supply Expansion – Scale token supply as business grows

  5. Isolated Accounting – One property = one token contract


Architecture

One Property = One Token Contract

Each property maintains completely isolated tokenomics.

Benefits:

  • ✓ Isolated accounting per property

  • ✓ Independent period management

  • ✓ Separate yield distribution

  • ✓ No cross-contamination


Key Features

Flexible Fundraising Duration

  • Input in seconds (180s for 3-min demo, 7,776,000s for 90-day production)

  • Configurable per period

  • Easy testing and deployment

Multi-Period Support

  • Unlimited periods per property (Q1, Q2, Q3...)

  • Each period completely independent

  • Separate snapshots per period

Automatic Snapshot System

  • Saves holder list at snapshot time

  • Prevents distribution bypass via token transfers

  • Ensures fair yield allocation

  • Automatic distribution at maturity

  • No user action required

  • USDC delivered directly to wallets

  • Gas-efficient batch processing

Supply Expansion

  • Mint additional tokens during GAP periods

  • Support business growth

  • Restricted to prevent fundraising manipulation

Dual Trading Markets

  • Direct buy disabled (intentional)

  • Owna-DEX (AMM): Instant execution with dynamic pricing

  • Secondary Market (P2P): Negotiated pricing with zero fees

  • Fair price discovery across both venues


Smart Contracts

YRTFactory

Main controller

  • Create series (property tokenization)

  • Start new periods (Q1, Q2, Q3...)

  • Mint tokens (supply expansion)

  • Deposit yield

  • Trigger snapshots

  • Role-based access control

YRTToken

Multi-period snapshot ERC20

  • Automatic holder tracking

  • Snapshot system per period

  • Period management

  • Mint/burn controls with GAP period rules

AutoDistributor

Chainlink Automation

  • Monitor maturity dates

  • Trigger snapshots automatically

  • Distribute yield to snapshot holders

  • Batch processing support

Mock Stablecoins (Testnet)

  • MockUSDC (18 decimals)

  • MockIDRX (18 decimals)


Complete Ecosystem

Complete Lifecycle


How It Works

Phase 1: Property Tokenization

YRTFactory.createSeries(
  name: "Green Valley YRT",
  symbol: "GV-YRT",
  propertyName: "Green Valley Apartment",
  initialSupply: 1000e18,
  underlyingToken: USDC_ADDRESS,
  tokenPrice: 1e18,
  fundraisingDuration: 180  // 3 minutes for demo
)

// Returns: seriesId
// Deploys: New YRTToken contract
// Status: Period 1 auto-started

Phase 2: Token Distribution

Direct purchase DISABLED ✗
Trading via DUAL MARKETS ✓

Market 1: Owna-DEX (AMM)
1. Property owner adds liquidity (YRT + USDC)
2. Users buy via instant swaps
3. Price discovery via AMM
4. 0.3% fee to liquidity providers

Market 2: Secondary Market (P2P)
1. Users create off-chain orders (EIP-712 signatures)
2. Orders broadcast to order book
3. Other users fill orders on-chain
4. 0% protocol fee, exact price execution

Smart traders use both: AMM for instant, P2P for large/custom pricing

Phase 3: Fundraising Period

Duration: 180 seconds (configurable)
→ Users trade on DEX
→ Balances changing dynamically
→ NO mint allowed during fundraising

Phase 4: Maturity & Snapshot

Maturity date reached:
1. Chainlink triggers snapshot
2. System freezes balances
3. System saves holder list
4. Ready for distribution

Phase 5: Yield Distribution

// Property owner deposits yield
YRTFactory.depositYield(seriesId, periodId, 100000e18)

// AutoDistributor executes:
1. Get snapshot holders (NOT current holders)
2. Calculate proportional yield
3. Transfer USDC automatically

// Users receive USDC automatically

Phase 6: Supply Expansion (Optional)

// Allowed in GAP period only
factory.mintTokens(seriesId, owner, 500e18)
// ✓ After snapshot, before next period

// NOT allowed during fundraising
// ✗ After startNewPeriod, before snapshot

Phase 7: New Period

YRTFactory.startNewPeriod(seriesId, 7776000)  // 90 days

// New period starts
// Cycle repeats independently

Duration System

Flexible Input (Seconds)

Demo/Testing:
- 3 minutes = 180 seconds
- 5 minutes = 300 seconds
- 10 minutes = 600 seconds

Production:
- 7 days = 604,800 seconds
- 30 days = 2,592,000 seconds
- 90 days = 7,776,000 seconds

Frontend Helper:

const DURATIONS = {
  '3 minutes': 180,
  '1 hour': 3600,
  '1 day': 86400,
  '90 days': 7776000,
}

Snapshot System

What is a Snapshot?

Snapshot = Freeze balances at maturity date to determine yield distribution.

Why Snapshot Holders?

Key Difference:

  • Before: Distribution uses getAllHolders() → Current holders (unfair)

  • After: Distribution uses getSnapshotHoldersForPeriod() → Frozen list (fair)

Example:

Period Q1:
- Total Supply at Snapshot: 1000 YRT
- Total Yield: 100,000 USDC

Snapshot Holders (frozen at maturity):
├─ Alice: 250 YRT (25%) → Receives: 25,000 USDC
├─ Bob: 200 YRT (20%) → Receives: 20,000 USDC
├─ Charlie: 150 YRT (15%) → Receives: 15,000 USDC
└─ Owner: 400 YRT (40%) → Receives: 40,000 USDC

✓ Charlie sells all tokens AFTER snapshot → Still receives 15,000 USDC
✓ David buys tokens AFTER snapshot → No yield this period

Deployed Contracts

Base Sepolia Testnet

Contract
Address

YRTFactory

0x7698c369Cec5bFD14bFe9184ea19D644540f483b

AutoDistributor

0x8C9edAB077038B4f2e74d79663d79f3fc12Ca945

MockUSDC

0x70667aea00Fc7f087D6bFFB9De3eD95Af37140a4

MockIDRX

0xcE91fa6777eCE5EE2ae9715d6F4E24B3E58a6e58

Network: Base Sepolia (Chain ID: 84532) Deployer: 0x77c4a1cD22005b67Eb9CcEaE7E9577188d7Bca82 Chainlink Upkeep: Running on Base Sepolia

View on BaseScan →


Key Features Summary

For Property Owners

  • ✓ Tokenize property cash flows

  • ✓ Flexible fundraising periods (3 min - 365 days)

  • ✓ Multi-period management (Q1, Q2, Q3...)

  • ✓ Automatic yield distribution

  • ✓ Supply expansion support

For Investors

  • ✓ Buy YRT via Owna-DEX (instant) or Secondary Market (custom price)

  • ✓ Hold for yield distribution

  • ✓ Receive USDC automatically (no claim required)

  • ✓ Sell anytime via AMM or P2P order book

  • ✓ Portfolio tracking across both markets

For Developers

  • ✓ Complete API documentation

  • ✓ TypeScript hooks for Next.js

  • ✓ OnchainKit integration

  • ✓ Event listeners

  • ✓ Gas-optimized contracts


Trading Markets Integration

The YRT Factory creates tokens that trade on two independent markets:

🏦 Owna-DEX (AMM)

  • Instant execution against liquidity pool

  • Dynamic pricing via Constant Product formula

  • 0.3% swap fee

  • Always available liquidity

🤝 Secondary Market (P2P Order Book)

Together they provide complete liquidity spectrum:

  • DEX = Instant + Small-Medium trades

  • Secondary Market = Custom pricing + Large trades

Last updated