Documentation

Smart Contracts

Comprehensive documentation for Cylend's Solidity smart contracts

Overview

Cylend's smart contract architecture consists of two primary contracts deployed across two networks:

PrivateLendingIngress

Mantle Sepolia

Public settlement layer contract managing deposits and fund releases

  • • Deposit creation (native & ERC20)
  • • Action submission
  • • Fund release handling
  • • Liquidity tracking

LendingCore

Sapphire Testnet

Private computation contract handling encrypted lending operations

  • • Encrypted action processing
  • • Position management
  • • Health factor calculations
  • • Price oracle integration

Contract Addresses

Deployed contract addresses on testnet networks:

Mantle Sepolia Testnet

PrivateLendingIngress:0xeee5Cbff1b1E41d98c5530296E9f0B079B38F7f1
Hyperlane Router:0xeee5Cbff1b1E41d98c5530296E9f0B079B38F7f1
ISM:0x24B255dB2e2D227ceaf8E474f68e342A4Cd32cB2

Sapphire Testnet

LendingCore:0x22BFa5A91CBE80C649f56cD423bF43847566b5Ba
Public Key:0xec9035501dfff50059bd1d512d8347d722f4ce95...
Note

These are testnet deployments. Production addresses will be different and will be updated here when available.

Development & Testing

The contracts are developed with Hardhat and include comprehensive test suites:

Local Development

Set up local Hardhat environment for contract development:

# Install dependencies
npm install

# Compile contracts
npx hardhat compile

# Run tests
npx hardhat test

# Run tests with coverage
npx hardhat coverage

Deployment

Deploy contracts to testnets using Hardhat Ignition:

# Deploy to Mantle Sepolia
npx hardhat ignition deploy ./ignition/modules/Ingress.ts --network mantle-sepolia

# Deploy to Sapphire Testnet
npx hardhat ignition deploy ./ignition/modules/LendingCore.ts --network sapphire-testnet

# Verify contracts
npx hardhat verify --network mantle-sepolia <CONTRACT_ADDRESS>
Tip

See the Deployment Guide for detailed deployment instructions and best practices.

Security Considerations

Key security features and access control mechanisms:

Owner-Only Functions

Critical functions like processAction() are protected with onlyOwner modifier

Deposit Ownership

Deposits can only be used by their creators, preventing unauthorized fund access

Health Factor Checks

All borrow and withdraw operations validate health factors to prevent under-collateralization

Price Staleness

Oracle prices are checked for staleness before processing actions

Trusted Hyperlane Messages

Only messages from trusted Hyperlane routers are accepted for cross-chain communication

Learn More