Vault Contracts

Smart contract architecture for risk-managed trading vaults.

Contract Overview

Three main contracts on Hyperliquid:

  1. VaultFactory - Deploys vaults

  2. TraderVault - Individual vault with risk limits

  3. ProposalEscrow - Manages proposals (deprecated in v2.3)

VaultFactory

Purpose: Deploy and track vaults.

Key Function:

function createVault(
  address investor,
  address trader,
  uint256 initialBalance,
  uint256 duration,
  uint8 traderProfitShare,
  uint8 maxDrawdown,
  uint8 dailyDrawdown
) external returns (address)

Events:

event VaultCreated(
  address indexed vaultAddress,
  address indexed investor,
  address indexed trader
);

TraderVault

State Variables:

address public investor;
address public trader;
address public oracle;

uint256 public initialBalance;
uint256 public hyperliquidBalance;
uint256 public peakBalance;

uint8 public traderProfitShare;  // e.g., 80
uint8 public maxDrawdown;        // e.g., 20%
uint8 public dailyDrawdown;      // e.g., 5%

bool public paused;
bool public closed;

Risk Management:

function updateBalance(uint256 newBalance) external onlyOracle {
  hyperliquidBalance = newBalance;
  lastBalanceUpdate = block.timestamp;
  
  // Check max drawdown
  if (newBalance < peakBalance * (100 - maxDrawdown) / 100) {
    _pause();
  }
  
  // Check daily drawdown  
  if (newBalance < dayStartBalance * (100 - dailyDrawdown) / 100) {
    _pause();
  }
  
  if (newBalance > peakBalance) {
    peakBalance = newBalance;
  }
  
  emit BalanceUpdated(newBalance);
}

Settlement:

function closeDeal() external {
  require(msg.sender == trader || msg.sender == investor);
  closed = true;
  
  int256 profit = int256(hyperliquidBalance) - int256(initialBalance);
  
  if (profit > 0) {
    traderShare = (profit * traderProfitShare) / 100;
    investorShare = initialBalance + (profit * (100 - traderProfitShare)) / 100;
  } else {
    traderShare = 0;
    investorShare = hyperliquidBalance;
  }
}

Security Features

  • Access control (onlyOracle, onlyTrader, onlyInvestor)

  • Reentrancy guards on withdrawals

  • Immutable parameters (profit share, addresses)

  • Balance freshness checks

Testing

cd contracts
npx hardhat test test/TraderVault.test.js

Last updated