Vault Contracts
Smart contract architecture for risk-managed trading vaults.
Contract Overview
Three main contracts on Hyperliquid:
VaultFactory - Deploys vaults
TraderVault - Individual vault with risk limits
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.jsRelated Pages
Last updated