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:
Flexible Periods – Custom fundraising durations (3 min - 365 days)
Snapshot-Based Distribution – Fair yield allocation regardless of secondary trading
Chainlink Automation – Zero-touch distributions at maturity
Supply Expansion – Scale token supply as business grows
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
Chainlink Automation
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-startedPhase 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 pricingPhase 3: Fundraising Period
Duration: 180 seconds (configurable)
→ Users trade on DEX
→ Balances changing dynamically
→ NO mint allowed during fundraisingPhase 4: Maturity & Snapshot
Maturity date reached:
1. Chainlink triggers snapshot
2. System freezes balances
3. System saves holder list
4. Ready for distributionPhase 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 automaticallyPhase 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 snapshotPhase 7: New Period
YRTFactory.startNewPeriod(seriesId, 7776000) // 90 days
// New period starts
// Cycle repeats independentlyDuration 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 secondsFrontend 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 periodDeployed Contracts
Base Sepolia Testnet
YRTFactory
0x7698c369Cec5bFD14bFe9184ea19D644540f483b
AutoDistributor
0x8C9edAB077038B4f2e74d79663d79f3fc12Ca945
MockUSDC
0x70667aea00Fc7f087D6bFFB9De3eD95Af37140a4
MockIDRX
0xcE91fa6777eCE5EE2ae9715d6F4E24B3E58a6e58
Network: Base Sepolia (Chain ID: 84532) Deployer: 0x77c4a1cD22005b67Eb9CcEaE7E9577188d7Bca82 Chainlink Upkeep: Running on Base Sepolia
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)
Negotiated trades at custom prices
Off-chain orders, on-chain settlement
0% protocol fee
EIP-712 signature-based security
Together they provide complete liquidity spectrum:
DEX = Instant + Small-Medium trades
Secondary Market = Custom pricing + Large trades
Last updated
