Helix Protocol Introduction
Discord GitHub

Helix Protocol

Last updated: May 2025 Beta v2.3.1

Helix is an AI-native DeFi infrastructure protocol built on Base. It combines a self-learning neural inference engine with non-custodial smart contracts to autonomously discover, allocate, and rebalance yield positions across every major protocol on Base — in real time, on-chain, with no human in the loop.

Unlike traditional yield aggregators that rely on static strategies or off-chain oracles, Helix's inference engine runs directly on Base. Every scoring decision, every rebalancing action, every risk check is verifiable and reproducible on-chain.

Currently on Testnet. Helix v2.3.1 is live on Base Goerli testnet. Mainnet launch is targeted for Q4 2025. All SDK integrations and contract interfaces documented here are stable and will not change at mainnet launch.

Core Concepts

Key Properties

PropertyValueNotes
NetworkBase MainnetChain ID 8453. All contracts and inference nodes run on Base.
Custody ModelNon-custodialFunds never leave your wallet. Agent signs from user key via EIP-712.
AI Modelv2.3.1-beta94 inference layers, 23 Base protocols indexed, retrains every 3,200 blocks.
Rebalance Cycle~12–15sTarget: ≤ 15 seconds. Achieved average: 12.4s on testnet.
Token$HLX500M max supply. Governance + fee capture. ERC-20 on Base.
LaunchQ4 2025Fair launch + IDO. No VC allocation. Community-first distribution.

Quick Start

5 min setupStable

Get a yield-seeking AI agent running against Base testnet in under 5 minutes.

1. Install the SDK

bash
# npm
npm install @helix-protocol/sdk

# yarn
yarn add @helix-protocol/sdk

# pnpm
pnpm add @helix-protocol/sdk

2. Initialize & Connect

typescript
import { HelixClient, RiskProfile } from '@helix-protocol/sdk';

// 1. Create client
const helix = new HelixClient({
  chainId: 8453,                              // Base Mainnet
  rpcUrl:  'https://mainnet.base.org',
  apiKey:  process.env.HELIX_API_KEY,          // get at helix.finance/dashboard
});

// 2. Connect wallet (any EIP-1193 provider)
await helix.connect(window.ethereum);

// 3. Set risk profile
await helix.setRiskProfile({
  type:               RiskProfile.MODERATE,
  maxSlippage:        0.5,    // 0.5%
  maxPositions:       10,
  rebalanceThreshold: 2.0,    // rebalance when drift exceeds 2%
  protocols: ['aerodrome', 'moonwell', 'seamless', 'aave'],
});

// 4. Start the AI agent
const agent = await helix.startAgent();
console.log('Agent started:', agent.id);
console.log('Model:', agent.modelVersion);  // 'v2.3.1-beta'

3. Listen to Events

typescript
agent.on('opportunity:found', (opp) => {
  console.log(`Found: ${opp.protocol} | score=${opp.score} | APY~${opp.estimatedApy}%`);
});

agent.on('position:opened', (pos) => {
  console.log(`Position #${pos.id} opened in ${pos.protocol}`);
  console.log(`TX: ${pos.txHash}`);
});

agent.on('rebalance', (evt) => {
  console.log(`Rebalanced: ${evt.reason} | delta=${evt.delta}%`);
});

agent.on('warning', (w) => console.warn(`[${w.code}] ${w.message}`));
That's it. The agent is now autonomously scanning 23 Base protocols, scoring yield opportunities, and managing positions with your configured risk parameters. No further intervention required.

AI Engine Architecture

Deep divev2.3.1

The Helix Neural Inference Engine (HNEI) is a multi-layer transformer-based model that runs natively on Base. It ingests real-time on-chain data from 23 protocols and produces scored yield opportunity vectors at every block.

Neural Core (HNEI v2.3.1)

The inference engine consists of 94 attention layers organized into three subsystems:

SubsystemLayersFunction
Market Encoder28 layersEncodes real-time price feeds, liquidity depth, TVL delta, and borrow rate vectors from all indexed protocols.
Strategy Scorer38 layersScores each (protocol, strategy) combination on a 0–100 risk-adjusted opportunity scale. Updates every block.
Risk Classifier28 layersClassifies each scored opportunity into risk tiers (low / moderate / high) and filters against user risk profile.

Model Training

HNEI is retrained every 3,200 blocks (~1.7 hours) on accumulated on-chain performance data. The training loop runs off-chain but the resulting model weights are committed on-chain via a verifiable proof-of-learning mechanism (Helix PoL, described in the whitepaper).

Alpha model disclaimer. HNEI v2.3.1 is an alpha model trained on 90 days of Base testnet data. Mainnet model (v3.0) will be trained on a broader corpus. Past testnet performance does not guarantee mainnet results.

Scoring Formula

The opportunity score for a given (protocol P, strategy S) pair is computed as:

math
score(P, S) = w₁·RA_yield(P,S) + w₂·Liquidity_depth(P)
            + w₃·Protocol_health(P) - w₄·Risk_penalty(S)

where:
  RA_yield        = risk-adjusted annualized yield (Sharpe-normalized)
  Liquidity_depth = log-normalized pool TVL score
  Protocol_health = smart contract risk score (audit grade × age factor)
  Risk_penalty    = volatility × max_drawdown × correlation_to_portfolio

  weights [w₁=0.38, w₂=0.22, w₃=0.24, w₄=0.16] — learnable, retrained per cycle

Risk Management

Critical readingStable

Helix operates three independent risk layers. All three must pass before any position is opened or modified.

LayerCheckTrigger
Pre-tradeSlippage simulation, gas estimate, exposure check, concentration limitBefore every TX
In-flightGas spike detection, MEV simulation, sandwich attack guardTX submission
PortfolioDrawdown threshold, correlation check, rebalance drift monitorEvery block

Risk Profiles

typescript
enum RiskProfile {
  CONSERVATIVE = 0,   // Stable LPs + Lending only. Max slippage 0.2%.
  MODERATE     = 1,   // All strategies. Max slippage 0.5%.
  AGGRESSIVE   = 2,   // All strategies incl. volatile LPs. Max slippage 1.0%.
}

interface RiskProfileConfig {
  type:               RiskProfile;
  maxSlippage:        number;        // % (e.g. 0.5 for 0.5%)
  maxPositions:       number;        // max concurrent open positions
  rebalanceThreshold: number;        // drift % to trigger rebalance
  minPositionSize:    number;        // minimum USDC equivalent
  protocols?:         string[];      // protocol whitelist (empty = all)
  stopLoss?:          number;        // optional % drawdown auto-close
}

Protocol Integrations

23 protocols indexedLive on Testnet

Helix currently indexes and scores the following Base protocols. All integrations are read-only for scoring; write operations use the protocol's own audited router contracts via Helix's verifiable adapter layer.

ProtocolStrategiesScore RangeStatus
Aerodrome FinanceStable LP, Volatile LP, veAERO60–95✅ Live
MoonwellLending, Borrowing70–92✅ Live
Seamless ProtocolLending, Loop Leverage65–88✅ Live
AAVE v3 BaseLending, E-Mode, GHO72–91✅ Live
Uniswap v3Concentrated LP, Range Orders50–80✅ Live
Compound v3USDC Lending68–84✅ Live
Extra FinanceLeveraged LP, Yield Vault55–82✅ Live
Beefy FinanceAuto-compound Vaults60–78🔄 Q3 2025
Morpho BlueP2P Lending65–85🔄 Q3 2025

SDK Installation

@helix-protocol/sdk v0.9.4Beta

Requirements

DependencyVersion
Node.js≥ 18.0.0
TypeScript≥ 5.0 (optional)
viem≥ 2.0 (peer)
wagmi≥ 2.0 (peer, optional)

Installation

bash
npm install @helix-protocol/sdk viem

HelixClient Constructor

typescript
const helix = new HelixClient({
  chainId:     8453,                         // required — Base Mainnet
  rpcUrl:      'https://mainnet.base.org',   // required
  apiKey:      'hlx_live_...',               // required — from dashboard
  nodeUrl?:    'https://node.helix.finance', // optional — inference node
  timeout?:    30_000,                        // optional — ms, default 30s
  logLevel?:   'info' | 'debug' | 'silent', // optional
});

Wallet Connection Methods

typescript
// Option A — Browser wallet (MetaMask, Coinbase, Rainbow…)
await helix.connect(window.ethereum);

// Option B — viem WalletClient
import { createWalletClient, custom } from 'viem';
import { base } from 'viem/chains';
const walletClient = createWalletClient({ chain: base, transport: custom(window.ethereum) });
await helix.connect({ walletClient });

// Option C — Private key (server-side only, never in browser)
await helix.connect({ privateKey: process.env.WALLET_PRIVATE_KEY });

// Option D — Read-only mode (no signing)
await helix.connect({ address: '0x...', readOnly: true });

AI Agent — Full Reference

Core modulev0.9.4

The HelixAgent is the primary interface to the AI inference engine. Once started, it autonomously evaluates yield opportunities and manages positions according to your configured risk profile.

Starting the Agent

typescript
const agent = await helix.startAgent({
  capital:     1000,           // USDC equivalent to deploy
  autoApprove: true,          // auto-sign position TXs
  simulate:    false,         // set true for dry-run mode
  gasBuffer:   1.25,          // 25% gas headroom
});

console.log(agent.id);            // 'agent_0x1234...abcd_1716213045'
console.log(agent.modelVersion);  // 'v2.3.1-beta'
console.log(agent.status);        // 'running'

Agent Events

opportunity:found
Emitted when the AI scores a new opportunity above the configured threshold.
{ protocol, strategy, score, estimatedApy, risk, confidence, pair, tvl }
position:opened
Emitted after a position TX is confirmed on-chain.
{ id, protocol, strategy, token, amount, txHash, blockNumber, entryScore }
position:closed
Emitted when a position is exited (score degraded, stop-loss, or manual close).
{ id, protocol, pnl, pnlPct, reason, txHash, holdingBlocks }
rebalance
Emitted when the portfolio is rebalanced. Includes delta and affected positions.
{ reason, delta, positions, cycleMs, gasUsed }
warning
Non-fatal warning — e.g. gas spike, slippage exceeded on one TX, score stale.
{ code, message, severity: 'low' | 'medium' | 'high' }
model:updated
Emitted when the inference model weight set updates (every ~3,200 blocks).
{ oldVersion, newVersion, blockNumber, performanceDelta }

Agent Control

typescript
// Pause (keeps positions open, stops new actions)
await agent.pause();

// Resume after pause
await agent.resume();

// Stop and close all positions
await agent.stop({ closeAll: true });

// Stop and leave positions open
await agent.stop({ closeAll: false });

// Get live agent stats
const stats = await agent.getStats();
// { uptime, totalTx, openPositions, closedPositions, totalPnl, winRate }

Positions API

Full CRUDStable
typescript
// Get all positions for connected wallet
const positions = await helix.getPositions();
// Returns: Position[]

// Get portfolio summary
const portfolio = await helix.getPortfolio();
console.log(portfolio.totalValueUsd);  // 4218.54
console.log(portfolio.pnl24h);         // +2.14%
console.log(portfolio.positions);      // Position[]

// Open a position manually
const pos = await helix.openPosition({
  protocol:  'aerodrome',
  strategy:  'stable-lp',
  pair:      'USDC/USDbC',
  amount:    '500',        // USDC string
  slippage:  0.3,
});
console.log(pos.txHash);  // '0x...'

// Close a position
await helix.closePosition(positionId);

// Get specific position value
const val = await helix.getPositionValue(positionId);
console.log(val.usd);       // current USD value
console.log(val.pnlPct);    // PnL since open (%)

React & Wagmi Integration

@helix-protocol/react v0.9.4Beta
bash
npm install @helix-protocol/react wagmi viem @tanstack/react-query

Provider Setup

tsx
import { WagmiProvider, createConfig } from 'wagmi';
import { base } from 'wagmi/chains';
import { HelixProvider } from '@helix-protocol/react';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';

const wagmiConfig = createConfig({ chains: [base], connectors: [...] });
const queryClient = new QueryClient();

export function App() {
  return (
    <QueryClientProvider client={queryClient}>
      <WagmiProvider config={wagmiConfig}>
        <HelixProvider apiKey={process.env.NEXT_PUBLIC_HELIX_KEY}>
          <YourApp />
        </HelixProvider>
      </WagmiProvider>
    </QueryClientProvider>
  );
}

useHelix Hook

tsx
import { useHelix } from '@helix-protocol/react';
import { useAccount, useWalletClient } from 'wagmi';

export function HelixDashboard() {
  const { address } = useAccount();
  const { data: walletClient } = useWalletClient();
  const { agent, portfolio, status, startAgent, stopAgent } = useHelix({ walletClient });

  if (!address) return <button onClick={connect}>Connect Wallet</button>;

  return (
    <div>
      <p>Status: {status}</p>                    // 'idle' | 'running' | 'paused'
      <p>Portfolio: ${portfolio?.totalValueUsd}</p>
      <p>24h PnL: {portfolio?.pnl24h}%</p>
      <button onClick={startAgent}>Start AI Agent</button>
      {portfolio?.positions.map(pos => (
        <div key={pos.id}>{pos.protocol}: ${pos.valueUsd.toFixed(2)}</div>
      ))}
    </div>
  );
}

REST API

Base URL: api.helix.finance/v1v1 Beta

All REST endpoints require a Bearer API key. Rate limits: 60 req/min on free tier, 600 req/min on pro.

GET /opportunities

bash
curl https://api.helix.finance/v1/opportunities \
  -H "Authorization: Bearer hlx_live_xxxxxxxxxxxx"
json — response
{
  "opportunities": [
    {
      "id":           "opp_aerodrome_stable-lp_usdc_20250115",
      "protocol":     "aerodrome",
      "strategy":     "stable-lp",
      "pair":         "USDC/USDbC",
      "score":        88.4,
      "estimatedApy": 12.3,
      "tvl":          45200000,
      "risk":         "low",
      "confidence":   0.94
    }
  ],
  "blockNumber": 24847932,
  "timestamp":   "2025-01-15T10:30:00Z"
}

POST /positions

bash
curl -X POST https://api.helix.finance/v1/positions \
  -H "Authorization: Bearer hlx_live_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "opportunityId": "opp_aerodrome_stable-lp_usdc_20250115",
    "amount":        "1000",
    "token":         "USDC",
    "slippage":      0.5,
    "walletAddress": "0x..."
  }'

WebSocket — Live Feed

javascript
const ws = new WebSocket('wss://ws.helix.finance/v1/stream?key=hlx_live_xxx');

ws.onmessage = ({ data }) => {
  const msg = JSON.parse(data);
  if (msg.type === 'opportunity') console.log('New opp:', msg.payload);
  if (msg.type === 'block')       console.log('Block:',   msg.blockNumber);
};

Contract Deployments

Base TestnetTestnet only

All contracts are deployed on Base Goerli testnet. Mainnet addresses will be published here at launch. Contracts are verified on Basescan.

Core Contracts

HelixRouter 0x4a2b8c3d1e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b
HelixVault 0x7f8e9d0c1b2a3e4f5d6c7b8a9e0f1d2c3b4a5e6f
HLX Token 0x1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d
GovernorHelix 0xa1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0
InferenceNode 0xd4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3

ABI Reference

Solidity ^0.8.20Stable

IHelixRouter

solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

interface IHelixRouter {

    struct DepositParams {
        address  token;
        uint256  amount;
        uint8    riskProfile;    // 0=conservative 1=moderate 2=aggressive
        uint16   maxSlippage;    // basis points (50 = 0.5%)
        bytes32  strategyId;     // keccak256 of strategy identifier
    }

    event PositionOpened(
        uint256 indexed positionId,
        address indexed user,
        address         token,
        uint256         amount,
        bytes32         strategyId
    );

    event PositionClosed(
        uint256 indexed positionId,
        address indexed user,
        uint256         returned,
        int256          pnl
    );

    function deposit(DepositParams calldata params)
        external returns (uint256 positionId);

    function withdraw(uint256 positionId, uint256 amount)
        external returns (uint256 received);

    function rebalance(uint256[] calldata positionIds) external;

    function getPositionValue(uint256 positionId)
        external view returns (uint256 value);

    function getActivePositions(address user)
        external view returns (uint256[] memory);
}

Governance

On-chain governanceBeta

Helix Protocol is governed by $HLX token holders. All protocol parameters — from supported protocols to risk engine weights to fee distribution — are controlled by on-chain proposals and votes.

Voting Power

Voting power is determined by veHLX — vote-escrowed $HLX. Lock your tokens for 1 week to 4 years. Longer locks grant proportionally more voting power (1 year = 1.0x, 4 years = 4.0x).

Governance via SDK

typescript
const gov = helix.governance();

// Get active proposals
const proposals = await gov.getProposals({ state: 'active' });

// Vote on a proposal (requires veHLX balance)
await gov.castVote({
  proposalId: 7,
  support:    true,   // true=for, false=against, null=abstain
  reason:     'Aerodrome integration increases yield diversity',
});

// Lock HLX for voting power
await gov.lock({
  amount:      '10000',     // HLX tokens
  durationDays: 365,        // 1 year lock = 1x voting power
});

// Submit a proposal (requires 100k veHLX)
await gov.propose({
  title:       'Add Beefy Finance integration',
  description: 'Integrate Beefy auto-compound vaults as a yield source...',
  calldata:    encodedCalldata,   // on-chain execution payload
});

Proposal Lifecycle

StageDurationDescription
Pending2 daysProposal submitted, community discussion period begins.
Active5 daysVoting open. Quorum required: 4% of total veHLX supply.
Timelock2 daysPassed proposals enter 48-hour security delay before execution.
ExecutedOn-chain execution complete. Changes take effect immediately.

$HLX Tokenomics

500M max supplyFinalized

Distribution

Allocation%AmountVesting
Community / Fair Launch40%200M HLXNo lock. Distributed via IDO + LP incentives at launch.
Protocol Treasury25%125M HLXGovernance-controlled. 2-year linear vest from TGE.
Ecosystem Grants15%75M HLXBuilder grants, integrations, hackathons. Governance-managed.
Liquidity Incentives12%60M HLXLP rewards, emitted over 3 years via gauge system.
Core Contributors8%40M HLX4-year vest, 12-month cliff. No allocation at TGE.
No VC allocation. Helix Protocol has no venture capital or angel investor allocation. 100% of the non-contributor supply is community-controlled from day one.

Token Utility

$HLX has three core utility functions within the Helix ecosystem:

FunctionMechanism
GovernanceLock $HLX to receive veHLX. veHLX grants voting power proportional to lock duration.
Fee Capture20% of protocol performance fees are used to buy-back and burn $HLX via open-market operations.
Boosted YieldsStaking $HLX boosts AI agent yield allocations by up to 2.5x (governed parameter).

Security & Audits

Updated: May 2025In Progress
Audit in progress. Core contracts are currently under audit by Trail of Bits (finalizing Q3 2025) and OpenZeppelin (ERC-20 + governance module). Do not deposit real funds until mainnet launch post-audit.

Audit Schedule

AuditorScopeStatusETA
Trail of BitsHelixRouter, HelixVault, InferenceNode, adapter layerIn ProgressQ3 2025
OpenZeppelinHLX ERC-20, GovernorHelix, TimelockControllerIn ProgressQ3 2025
SpearbitEconomic security review, tokenomics modelScheduledQ3 2025

Bug Bounty

The Helix bug bounty program is live on Immunefi. Rewards scale by severity:

SeverityReward
CriticalUp to $100,000
High$10,000 – $50,000
Medium$2,000 – $10,000
Low$500 – $2,000

Security Design Principles

PrincipleImplementation
Non-custodialUser funds never enter Helix contracts. Agent operates via delegated signing (EIP-712).
UpgradeableAll core contracts are upgradeable via UUPS pattern, gated by 48-hour governance timelock.
Circuit breakersOn-chain circuit breakers pause all operations if TVL drops >15% in 1 hour or gas exceeds 500 gwei.
Slippage guardsAll trade executions validate slippage at TX time, not at signature time, preventing stale data attacks.