Complete Tokenization Guide
Transform any real-world asset into liquid digital tokens with our comprehensive tokenization framework.
Real Estate Tokenization
Tokenize commercial and residential properties to enable fractional ownership and improve liquidity.
Property Configuration
const realEstateAsset = {
type: 'REAL_ESTATE',
subtype: 'COMMERCIAL',
property: {
address: {
street: '123 Park Avenue',
city: 'New York',
state: 'NY',
country: 'USA',
zip: '10001'
},
details: {
squareFeet: 50000,
yearBuilt: 2015,
propertyType: 'office',
floors: 10,
units: 25
},
financials: {
purchasePrice: 25000000,
currentValuation: 30000000,
monthlyRent: 150000,
occupancyRate: 0.95,
operatingExpenses: 45000
}
},
tokenomics: {
totalSupply: 1000000,
pricePerToken: 30, // $30 per token
minimumInvestment: 1000,
dividendFrequency: 'quarterly',
projectedYield: 0.085 // 8.5% annual
},
legal: {
structure: 'SPV', // Special Purpose Vehicle
jurisdiction: 'Delaware',
trustee: 'OAS Trust Services',
documents: [
'deed.pdf',
'title_insurance.pdf',
'property_appraisal.pdf',
'rent_roll.xlsx'
]
}
};
// Create tokenized property
const property = await oas.realEstate.tokenize(realEstateAsset);
Rental Distribution
// Automated rental distribution
await property.distributeRentals({
period: 'Q1-2024',
totalRent: 450000, // $450,000 collected
expenses: 135000, // Operating expenses
netIncome: 315000, // Distributed to token holders
distribution: {
method: 'proportional',
currency: 'USDC',
snapshot: 'automatic' // Takes snapshot of holders
}
});
Bond Tokenization
Issue and manage tokenized bonds with automated coupon payments and maturity handling.
Bond Issuance
const bondAsset = {
type: 'BOND',
subtype: 'CORPORATE',
bond: {
issuer: 'Acme Corporation',
isin: 'US123456789',
rating: 'AA',
terms: {
faceValue: 1000,
couponRate: 0.05, // 5% annual
couponFrequency: 'semiannual',
maturityDate: '2029-12-31',
issueDate: '2024-01-01'
},
size: {
totalIssuance: 100000000, // $100M
minimumDenomination: 1000,
tokenSupply: 100000
}
},
features: {
callable: true,
callDate: '2027-01-01',
callPrice: 1020,
convertible: false,
secured: true,
collateral: 'Corporate Assets'
}
};
const bond = await oas.bonds.issue(bondAsset);
Coupon Payment Automation
// Smart contract for automated coupon payments
contract TokenizedBond {
function distributeCoupon() external {
require(block.timestamp >= nextCouponDate, "Not yet");
uint256 couponAmount = faceValue * couponRate / 2;
uint256 totalPayout = couponAmount * totalSupply / decimals;
// Distribute to all token holders
for (uint i = 0; i < holders.length; i++) {
uint256 balance = balanceOf(holders[i]);
uint256 payment = (balance * couponAmount) / totalSupply;
USDC.transfer(holders[i], payment);
}
nextCouponDate += 182 days; // Semi-annual
emit CouponDistributed(totalPayout, holders.length);
}
}
Invoice Tokenization
Convert accounts receivable into tradeable tokens for improved cash flow.
Invoice Factoring
const invoiceAsset = {
type: 'INVOICE',
invoice: {
number: 'INV-2024-001',
issuer: 'Supplier Corp',
debtor: 'BigCo Industries',
details: {
amount: 500000,
currency: 'USD',
issueDate: '2024-01-01',
dueDate: '2024-03-01',
terms: 'Net 60'
},
verification: {
debtorConfirmed: true,
documentsVerified: true,
creditScore: 750
}
},
tokenization: {
discountRate: 0.03, // 3% discount
tokenValue: 485000, // $500k - 3%
tokens: 485,
pricePerToken: 1000
}
};
// Create tokenized invoice
const invoice = await oas.invoices.tokenize(invoiceAsset);
Art & Collectibles
Tokenize fine art and rare collectibles with verified provenance and authenticity.
Art Tokenization
const artAsset = {
type: 'ART',
artwork: {
title: 'Sunset Over Mountains',
artist: 'Jane Doe',
year: 1985,
medium: 'Oil on Canvas',
dimensions: '48x36 inches',
provenance: {
previousOwners: ['Gallery X', 'Collector Y'],
exhibitions: ['MoMA 2010', 'Tate Modern 2015'],
publications: ['Art Review Vol.23']
},
authentication: {
certificate: 'ipfs://QmCertificate...',
appraiser: 'Christie\'s',
valuation: 5000000,
valuationDate: '2024-01-01'
}
},
tokenization: {
totalSupply: 10000,
pricePerToken: 500,
royalty: {
artist: 0.05, // 5% to artist
platform: 0.025 // 2.5% to platform
}
}
};
Carbon Credits
Tokenize verified carbon offsets for transparent ESG compliance and trading.
Carbon Credit Creation
const carbonAsset = {
type: 'CARBON_CREDIT',
project: {
name: 'Amazon Rainforest Conservation',
location: 'Brazil',
type: 'forest-conservation',
verification: {
standard: 'Verra VCS',
registryId: 'VCS-1234',
vintage: 2024,
auditor: 'SGS'
},
impact: {
co2Tons: 100000,
methodology: 'VM0007',
additionalBenefits: [
'biodiversity',
'community-development',
'water-conservation'
]
}
},
tokens: {
supply: 100000, // 1 token = 1 ton CO2
pricePerToken: 25,
retireable: true,
tradeable: true
}
};
// Create carbon credit tokens
const carbonCredits = await oas.carbon.tokenize(carbonAsset);
// Retire credits for offset
await carbonCredits.retire({
amount: 100,
beneficiary: 'Company ABC',
reason: 'Annual carbon offset 2024'
});
Tokenization Process
1. Asset Verification
All assets undergo rigorous verification before tokenization:
- • Document authentication and legal review
- • Ownership verification and title search
- • Third-party audits and appraisals
- • Compliance checks and regulatory approval
2. Valuation Process
// Automated valuation with oracle data
const valuation = await oas.oracle.getValuation({
asset: assetId,
sources: ['chainlink', 'band', 'api3'],
method: 'weighted-average',
adjustments: {
marketConditions: true,
comparables: true,
discountRate: 0.08
}
});
// Set token price based on valuation
await asset.updatePrice({
newPrice: valuation.fairValue / asset.totalSupply,
effective: 'immediate'
});
3. Legal Structure
Each asset type requires specific legal structures:
SPV (Special Purpose Vehicle)
For real estate and large assets
Trust Structure
For art and collectibles
Escrow Agreement
For invoices and receivables
Registry Contract
For carbon credits
4. Token Minting
// Mint tokens with compliance rules
const mintConfig = {
standard: 'ERC-1400', // Security token standard
compliance: {
kycRequired: true,
accreditationRequired: false,
transferRestrictions: ['lockup', 'whitelist'],
maxInvestors: 2000
},
features: {
dividends: true,
voting: true,
forceTransfer: true, // For legal compliance
partition: true // Different share classes
}
};
const tokens = await oas.mint(asset, mintConfig);
5. Distribution & Trading
// Configure distribution
await asset.setupDistribution({
method: 'dutch-auction',
startPrice: 110, // Start 10% above target
reservePrice: 90, // Minimum 90% of target
duration: 7 * 24 * 60 * 60, // 7 days
allocation: {
public: 0.6, // 60% public sale
private: 0.2, // 20% private investors
team: 0.1, // 10% team (vested)
treasury: 0.1 // 10% treasury
},
vesting: {
team: {
cliff: 365, // 1 year cliff
duration: 1095, // 3 years total
release: 'linear'
}
}
});
// Enable secondary trading
await asset.enableTrading({
exchanges: ['oas-dex', 'uniswap'],
liquidity: 100000, // Initial liquidity
marketMaker: true
});
Best Practices
DO
- ✓ Complete thorough due diligence
- ✓ Use appropriate legal structures
- ✓ Implement proper KYC/AML
- ✓ Provide transparent documentation
- ✓ Regular audits and reporting
DON'T
- ✗ Skip regulatory compliance
- ✗ Overvalue assets
- ✗ Ignore investor protections
- ✗ Neglect ongoing management
- ✗ Promise unrealistic returns