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 tests

Core 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

  1. Node.js and npm/yarn

  2. OAuth credentials for STRATO node

  3. 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.

Last updated