stLINK premium arbitrage vault
Captures the structural stLINK premium on Curve. Every cycle pushes the pool toward 50/50 balance: protocol-aligned arbitrage that earns yield while improving liquidity for all stLINK holders.
Market opportunity
How it works
Sell stLINK on Curve
When the pool is LINK-heavy, stLINK trades above 1:1. The vault sells stLINK for more LINK than it's worth.
Deposit LINK to Priority Pool
LINK received from the swap is deposited back into stake.link's Priority Pool, joining the staking queue.
Wait for 15K batch
The Priority Pool accumulates LINK deposits until a 15K batch is reached, then converts to stLINK via Chainlink staking.
Claim stLINK & repeat
Vault claims its stLINK allocation from the merkle distribution. The premium earned is pure profit. Cycle repeats.
Two-sided vault
Priority side
Deposit reSDL NFTs to give the vault queue priority in the Priority Pool. The more reSDL boost weight, the faster the vault’s LINK converts to stLINK.
- Deposit
- reSDL NFTs
- Earn
- Share of arb profit (LINK)
- Weight
- Proportional to boost
- Withdraw
- Anytime (even paused)
Capital side
Deposit LINK to provide swap capital. Access modes are togglable: DAO-only, reSDL-gated, or open to anyone.
- Deposit
- LINK tokens
- Earn
- Share of arb profit (LINK)
- Shares
- Proportional to capital
- Withdraw
- Capital + earned profit
Vault parameters
Profit distribution
- DAO treasury
- 10%
- Builder
- 0.1%
- Capital providers
- 44.95%
- Priority providers
- 44.95%
When DAO is sole capital source, capital share redirects to priority side (89.9% to reSDL depositors)
Execution config
- Trigger
- Any net-positive premium
- Automation
- Chainlink Automation
- Monitoring
- CRE Workflow
- Admin
- 3/6 Safe + Timelock
- Emergency
- Pausable
Development status
- Core VaultComplete
- CRE MonitorComplete
- AutomationComplete
- Claim KeeperComplete
- FrontendComplete
- HardeningComplete
125 tests passing: accounting, fork integration, strategy, hardening, timelock. Audit pending before mainnet deployment.
Security
- 3/6 Gnosis SafeMulti-sig ownership via Ownable2Step transfer
- TimelockController24h delay on all admin parameter changes
- ReentrancyGuardAll state-changing functions protected
- PausableEmergency circuit breaker, NFT withdrawal always works
- MEV protectionTight minAmountOut from get_dy() reverts if sandwiched
- forceApproveSafeERC20 for all token approvals
- Safety boundsHardcoded contract limits prevent admin abuse
- Rescue limitsCannot rescue LINK, stLINK, or reSDL
Chainlink stack
- Monitoring
CRE SDK
374-line TypeScript workflow reads 12 on-chain values every 5 minutes
- Execution
Automation
checkUpkeep / performUpkeep with 3-priority action system
- Proof trail
SentinelRegistry
keccak256 proof hashes on Sepolia after every CRE run
- On-chain reads
EVMClient
Curve pool, Priority Pool, and Vault state via callContract()