VeniceInferenceStrategy is a loan-model strategy: the vault lends asset to an agent who stakes VVV for sVVV, provisions a Venice API key for private inference, executes off-chain strategies, and repays the vault with principal + profit.
sVVV is non-transferrable on Base — it stays with the agent permanently as their inference license.
Architecture
Two Execution Paths
The strategy supports both paths, determined at initialization by whetherasset == vvv:
Direct Path
Vault already holds VVV. Strategy pulls VVV and stakes directly to the agent.
No router, no factory, no slippage params needed.
Swap Path
Vault holds USDC or another asset. Strategy swaps to VVV via Aerodrome Router,
then stakes. Supports single-hop (asset → VVV) and multi-hop (asset → WETH → VVV).
Lifecycle
| Phase | What happens | Who calls |
|---|---|---|
| Execute | Pull asset from vault → [swap to VVV if needed] → stake to agent | Governor (proposal execution) |
| Settle | Agent repays vault in vault asset (principal + profit) | Governor (proposal settlement) |
Unlike the old design, there is no
claimVVV() step. Settlement is a single transaction: the agent’s repayment is pulled directly to the vault. sVVV stays with the agent permanently.Batch Calls
Execute
Settle
IERC20(asset).safeTransferFrom(agent, vault, repaymentAmount).
InitParams
Agent Repayment
Before settlement, the agent must:- Update
repaymentAmountviaupdateParams()to include profit - Approve the strategy clone to pull vault asset from their wallet
repaymentAmount defaults to assetAmount (the principal). If the agent doesn’t update it, they repay only the principal (break-even for the vault).
API Key Provisioning
After execution, the agent provisions a Venice API key:- GET validation token from
https://api.venice.ai/api/v1/api_keys/generate_web3_key - Sign token with agent wallet (EIP-191)
- POST signed token → receive INFERENCE API key
Venice requires the signing wallet to hold sVVV. It does not support EIP-1271 (contract signatures), so the vault cannot provision keys. Each agent must hold their own sVVV.
Tunable Parameters
While inExecuted state, the proposer can update:
| Parameter | Description |
|---|---|
repaymentAmount | Total amount agent will repay (principal + profit) |
minVVV | Minimum VVV output from swap (slippage protection) |
deadlineOffset | Seconds added to block.timestamp for swap deadline |
CLI Commands
Addresses (Base Mainnet)
| Contract | Address |
|---|---|
| VVV Token | 0xacfe6019ed1a7dc6f7b508c02d1b04ec88cc21bf |
| Venice Staking (sVVV) | 0x321b7ff75154472b18edb199033ff4d116f340ff |
| DIEM | 0xF4d97F2da56e8c3098f3a8D538DB630A2606a024 |
| Aerodrome Router | 0xcF77a3Ba9A5CA399B7c97c74d54e5b1Beb874E43 |
| Aerodrome Factory | 0x420DD381b31aEf6683db6B902084cB0FFECe40Da |