Smart Contracts
STRATO Mercata uses SolidVM, a Solidity-compatible virtual machine with extended features for enterprise blockchain applications.
Contract Structure
mercata/contracts/
├── abstract/ # Base contracts and interfaces
│ └── ERC20/ # ERC20 token standard implementation
├── concrete/ # Deployable contracts
│ ├── Admin/ # Platform administration
│ ├── Bridge/ # Cross-chain bridge
│ ├── CDP/ # Collateralized Debt Positions
│ ├── Lending/ # DeFi lending protocol
│ ├── Pools/ # Liquidity pools and AMM
│ ├── Proxy/ # Upgradeable proxy pattern
│ ├── Rewards/ # Incentive distribution
│ ├── Tokens/ # Token factory and metadata
│ └── Voucher/ # Fee voucher system
├── libraries/ # Shared libraries
├── deploy/ # Deployment scripts
└── tests/ # Contract testsCore Contracts
Token System
Token.sol
ERC20-compatible token with extended features:
Pausable transfers
Burnable supply
Metadata management
Access control (Ownable, Authorizable)
TokenFactory.sol
Factory pattern for deploying new tokens:
Standardized token creation
Registry of deployed tokens
Metadata association
TokenMetadata.sol
On-chain metadata storage:
Name, symbol, decimals
Additional attributes (icon, description)
Updatable by owner
Lending Protocol
LendingPool.sol
Core lending pool contract:
Deposit/withdraw collateral
Borrow/repay loans
Interest rate calculation
Liquidation mechanics
CollateralVault.sol
Secure collateral storage:
Multi-asset support
Health factor monitoring
Liquidation triggers
LiquidityPool.sol
Liquidity provision:
LP token minting/burning
Fee distribution
Impermanent loss tracking
RateStrategy.sol
Interest rate model:
Utilization-based rates
Configurable parameters
Jump rate model support
SafetyModule.sol
Protocol safety mechanisms:
Emergency pause
Bad debt handling
Reserve management
PriceOracle.sol
Price feed integration:
Multi-source support
Staleness checks
Fallback mechanisms
CDP (Collateralized Debt Positions)
CDPEngine.sol
Main CDP logic:
Vault creation
Debt management
Collateral ratio enforcement
CDPVault.sol
Individual CDP storage:
Collateral deposits
Debt tracking
Interest accrual
CDPRegistry.sol
CDP registry:
Vault enumeration
User position lookup
Statistics aggregation
CDPReserve.sol
Protocol reserves:
Stability fees
Liquidation penalties
Surplus/deficit management
AMM Pools
Pool.sol
Automated Market Maker:
Constant product formula (x * y = k)
Swap execution
Slippage protection
Fee collection
PoolFactory.sol
Pool deployment factory:
Pair creation
Pool registry
Fee configuration
Rewards System
Rewards.sol
Basic rewards distribution:
Reward token staking
Proportional distribution
Claim mechanics
RewardsChef.sol
MasterChef-style rewards:
Multiple pool support
Allocation points
Emission scheduling
Bonus periods
Bridge
MercataBridge.sol
Cross-chain asset transfer:
Lock/unlock mechanics
Validator signatures
Nonce management
Fee handling
Administration
AdminRegistry.sol
Platform administration:
Admin role management
Permission checks
Multi-sig support
FeeCollector.sol
Protocol fee management:
Fee aggregation
Distribution rules
Treasury management
Voucher System
Voucher.sol
Fee voucher tokens:
Gas fee subsidies
Promotional credits
Expiration handling
PayFeesWithVoucher.sol
Voucher payment integration:
Fee calculation
Voucher redemption
Fallback to native payment
Abstract Contracts (ERC20)
Base Implementation
Deployment
Prerequisites
Node.js and npm/yarn
OAuth credentials for STRATO node
Deployer account with sufficient balance
Configuration
Create .env file:
Deploy Commands
Deployment Script Structure
Testing
Run Tests
Test Structure
SolidVM Features
Pragmas
Decimal Type
Built-in Functions
Abstract Contracts
Cirrus Integration
Slipstream automatically indexes contract state to PostgreSQL:
Table Structure
Each contract gets a table named after its contract name:
Indexed Events
Events with indexed keyword create separate tables:
Creates Transfer@ table with indexed columns as primary keys.
Related Documentation
Last updated