
Hydrex
- 1 installs
- 1.2k repo stars
- Updated August 1, 2026
- bankrbot/moltbot-skills
Hydrex is a Claude skill for participating in the Hydrex DeFi liquidity and governance protocol on Base - locking HYDX, voting on gauges, and managing vault rewards.
About
Hydrex lets an agent participate in the Hydrex liquidity and governance protocol on Base. A developer uses it to lock HYDX for veHYDX voting power, vote on liquidity pool gauges to direct emissions, deposit single-sided liquidity into auto-managed vaults, and claim oHYDX rewards. All transactions execute through Bankr using natural-language prompts.
- Participate in Hydrex DeFi governance and liquidity on Base
- Lock HYDX for veHYDX voting power and vote on pool gauges to direct emissions
- Deposit single-sided liquidity into auto-managed vaults and claim oHYDX rewards
Hydrex by the numbers
- 1 all-time installs (skills.sh)
- Ranked #909 of 1,106 Finance & Trading skills by installs in the Skillselion catalog
- Data as of Aug 4, 2026 (Skillselion catalog sync)
hydrex capabilities & compatibility
Requires Bankr, HYDX tokens, and gas on Base; exercising oHYDX needs a discounted ETH payment.
- Capabilities
- gauge voting · liquidity provision · reward claiming · token locking
- Use cases
- trading
- Pricing
- Bring your own API key
What hydrex says it does
Participate in Hydrex governance on Base. Lock HYDX to receive voting power, vote on liquidity pool strategies to direct emissions and rewards
**Efficiency formula**: `projectedFeeInUsd / liveVotingWeight` = fee revenue per vote
npx skills add https://github.com/bankrbot/moltbot-skills --skill hydrexAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1 |
|---|---|
| repo stars | ★ 1.2k |
| Last updated | August 1, 2026 |
| Repository | bankrbot/moltbot-skills ↗ |
What it does
Lock HYDX for voting power, vote on liquidity gauges, deposit single-sided liquidity, and claim rewards on Hydrex (Base) via Bankr.
Who is it for?
Agents managing veHYDX voting power, gauge voting, and single-sided liquidity yields on Hydrex.
Skip if: Users not holding HYDX or not using Bankr for transaction execution.
When should I use this skill?
The user wants to lock HYDX for voting power, vote on Hydrex pools, deposit liquidity, or claim oHYDX rewards.
What you get
Locked HYDX voting power allocated to the most fee-efficient pools, with liquidity deposited and rewards claimed.
- Locked veHYDX position with voting power
- Allocated gauge votes
- Claimed oHYDX rewards
By the numbers
- 7 Base mainnet contracts listed
- 1.3x earning power vs voting power for fee distributions
Files
Hydrex
Participate in Hydrex governance on Base. Lock HYDX to receive voting power, vote on liquidity pool strategies to direct emissions and rewards, deposit single-sided into auto-managed vaults to earn oHYDX yields, and claim oHYDX rewards from incentive campaigns.
Quick Start
Check Voting Power
What's my Hydrex voting power?Lock HYDX for Voting Power
Lock 1000 HYDX on Hydrex with rolling lockVote on Pools
Vote optimally on Hydrex to maximize feesVote 50/50 on HYDX/USDC and cbBTC/WETH on HydrexSingle-Sided Liquidity
What single-sided liquidity vaults can I deposit BNKR into on Hydrex?Deposit 500 BNKR into the BNKR/WETH single-sided vault on HydrexRewards
Check my Hydrex rewardsClaim my Hydrex oHYDX rewardsConvert my oHYDX to veHYDX on HydrexCore Capabilities
Locking HYDX
- Lock HYDX to receive veHYDX (vote-escrowed HYDX)
- Receive an NFT representing your locked position
- Gain voting power starting next epoch
- Rolling locks (Type 1) provide maximum voting power
- Auto-extends to maintain 2-year lock with no manual management
- Earning power = 1.3x voting power for fee distributions
Reference: references/locking.md
Voting on Pools
- Vote to allocate voting power across liquidity pools
- Direct HYDX emissions based on your votes
- Earn fees from supported pools
- Optimize for maximum fee returns
- Natural language voting by pool name
Reference: references/voting.md
Single-Sided Liquidity (ICHI Vaults)
- Deposit a single token into an auto-managed vault
- Earn oHYDX yields on your deposited value
- Vault manages both sides of the liquidity position
- Withdraw with up to 70/30 split (deposit token / counter token)
- No need to source both sides of a pair
Reference: references/single-sided-liquidity.md
Claiming and Managing Rewards
- Check unclaimed oHYDX across all incentive campaigns
- Claim all eligible rewards in a single transaction
- Convert oHYDX into a veHYDX lock position via
exerciseVe - Exercising oHYDX requires a discounted ETH payment and produces a rolling veHYDX lock
Reference: references/rewards.md
Contracts (Base Mainnet)
| Contract | Address |
|---|---|
| HYDX Token | 0x00000e7efa313F4E11Bfff432471eD9423AC6B30 |
| veHYDX (Voting Escrow) | 0x25B2ED7149fb8A05f6eF9407d9c8F878f59cd1e1 |
| Voter | 0xc69E3eF39E3fFBcE2A1c570f8d3ADF76909ef17b |
| Vault Deposit Guard | 0x9A0EBEc47c85fD30F1fdc90F57d2b178e84DC8d8 |
| Vault Deployer | 0x7d11De61c219b70428Bb3199F0DD88bA9E76bfEE |
| Incentive Distributor | 0x8604d646df5A15074876fc2825CfeE306473dD45 |
| oHYDX Token | 0xA1136031150E50B015b41f1ca6B2e99e49D8cB78 |
Pool Information API
Get current liquidity pool data:
bankr prompt "What are the top Hydrex pools by projected fees?"
bankr prompt "Show me all Hydrex liquidity pools with their voting weights"Key fields for voting optimization:
address— Pool address (voting target)title— Pool name (e.g., "HYDX/USDC")gauge.projectedFeeInUsd— Primary optimization metricgauge.liveVotingWeight— Current competition for feesgauge.votingAprProjection— Expected APR from voting
Efficiency formula: projectedFeeInUsd / liveVotingWeight = fee revenue per vote
Common Workflows
First-Time Setup
1. Get HYDX — Acquire HYDX tokens on Base 2. Approve HYDX — Approve veHYDX contract to spend HYDX 3. Lock HYDX — Create rolling lock (Type 1) for voting power 4. Wait for epoch — Voting power activates next epoch (~weekly) 5. Vote — Allocate voting power to pools
Example:
# Step 1: Check HYDX balance
"What's my HYDX balance on Base?"
# Step 2 & 3: Approve and lock in one go
"Lock 1000 HYDX on Hydrex with rolling lock"
# Step 4: Wait for next epoch (typically next Thursday 00:00 UTC)
# Step 5: Vote optimally
"Vote optimally on Hydrex to maximize fees"Optimized Voting
When you want maximum returns:
Vote optimally on Hydrex to maximize my fee earningsBankr will:
1. Fetch all pools from API 2. Calculate efficiency (fees per vote) for each pool 3. Rank pools by efficiency 4. Allocate votes to top pools 5. Execute vote transaction
Named Pool Voting
Vote by pool name instead of addresses:
Vote 100% on HYDX/USDC on HydrexVote 60% on HYDX/USDC and 40% on cbBTC/WETH on HydrexVote 33/33/34 on HYDX/USDC, cbBTC/WETH, and USDC/USDbC on HydrexChanging Votes
Reallocate your voting power:
Change my Hydrex vote to 100% on cbBTC/WETHThis will reset current votes and apply new allocation.
Optimization Strategies
Simple Strategy
Vote 100% on the pool with highest projectedFeeInUsd / liveVotingWeight ratio.
Example:
Vote on the single best Hydrex pool by feesBalanced Strategy
Split votes equally across top 3-5 efficient pools for diversification.
Example:
Vote equally on top 3 Hydrex pools by projected feesWeighted Strategy
Allocate votes proportional to efficiency scores.
Example:
Vote on Hydrex pools weighted by their fee efficiencyUnderstanding Voting Power
How Voting Power Works
1. Lock HYDX → Receive veHYDX NFT 2. veHYDX amount = Your voting power 3. Rolling locks (Type 1) = Maximum voting power with auto-extension 4. Earning power = 1.3x voting power (used for fee distributions) 5. Next epoch = Voting power activates 6. Vote allocation = Direct emissions to pools
Checking Your Power
# Check voting power
bankr prompt "What's my Hydrex voting power?"
# Check earning power (1.3x voting power)
bankr prompt "What's my Hydrex earning power?"
# Check veHYDX NFT balance
bankr prompt "Show my veHYDX NFT balance"
# Check a specific NFT's earning power
bankr prompt "How much earning power does my veHYDX NFT #5 have?"Display to users: Show earning power (voting power × 1.3) when discussing fee earnings, as this is what determines your share of distributions.
Vote Proportions
Vote weights are in basis points (10000 = 100%):
| User Says | Proportions |
|---|---|
| "100% on X" | [10000] |
| "50/50 on X and Y" | [5000, 5000] |
| "60/40 on X and Y" | [6000, 4000] |
| "33/33/34 on X, Y, Z" | [3333, 3333, 3334] |
| "25% each on 4 pools" | [2500, 2500, 2500, 2500] |
Proportions must sum to exactly 10000.
Epoch System
Hydrex operates on epochs:
- Duration: Typically 1 week
- Voting power activation: Next epoch after locking
- Vote changes: Respect vote delay between changes
- Epoch boundary: Usually Thursday 00:00 UTC
Example Prompts
Locking
- "Lock 1000 HYDX on Hydrex with rolling lock"
- "Create veHYDX rolling lock with 500 HYDX on Base"
- "Add 250 HYDX to my veHYDX NFT #1"
Voting
- "Vote optimally on Hydrex"
- "Vote 50/50 on HYDX/USDC and cbBTC/WETH on Hydrex"
- "Allocate my votes to top 3 Hydrex pools by fees"
- "Change my Hydrex vote to 100% on HYDX/USDC"
Queries
- "What's my Hydrex earning power?"
- "Show me the best Hydrex pools to vote for"
- "How much earning power does my veHYDX NFT #5 have?"
Single-Sided Liquidity
- "What single-sided liquidity vaults are available on Hydrex?"
- "What single-sided vaults can I deposit BNKR into on Hydrex?"
- "Deposit 500 BNKR into the BNKR/WETH single-sided vault on Hydrex"
- "Show my Hydrex single-sided liquidity positions"
- "Withdraw my BNKR/WETH single-sided position on Hydrex"
- "How much is my Hydrex BNKR vault position worth?"
Rewards
- "Check my Hydrex rewards"
- "How much oHYDX have I earned on Hydrex?"
- "Claim my Hydrex oHYDX rewards"
- "Claim all my unclaimed Hydrex incentives"
- "What's my oHYDX balance on Base?"
- "Convert my oHYDX to veHYDX on Hydrex"
- "Exercise my oHYDX rewards into veHYDX"
Tips
For New Users
- Start small: Lock a small amount first to learn the flow
- Rolling locks: Use Type 1 for maximum voting power with auto-extension
- Wait for epoch: Voting power activates at next epoch boundary
- Let Bankr optimize: "Vote optimally" handles everything automatically
- Earning power: Remember your fee earnings are based on 1.3x your voting power
For Active Voters
- Track efficiency: Monitor
projectedFeeInUsd / liveVotingWeight - Diversify votes: Split across 3-5 pools to reduce risk
- Watch bribes: Check API for additional incentive opportunities
- Respect delays: Vote delay prevents too-frequent changes
- Use pool names: Easier than remembering addresses
For Maximizers
- Efficiency > absolute fees: $5k fees with 100k weight beats $10k fees with 500k weight
- Use earning power: Calculate earnings with 1.3x voting power for accurate projections
- Rebalance periodically: Pool efficiency changes over time
- Consider liquidity: High-volume pools may be more stable
- Factor in bribes: Check
gauge.bribesfor extra rewards - Rolling locks: Type 1 automatically maintains 2-year duration for max power
Natural Language Voting Guide for Bankr
When processing Hydrex voting requests:
1. Fetch pool data from https://api.hydrex.fi/strategies 2. Get user earning power: Query voting power, multiply by 1.3 3. Parse user intent:
- Pool names → Look up addresses in API (
titlefield) - "Optimally" / "maximize fees" → Calculate efficiency rankings
- Percentages → Convert to basis points (60% = 6000)
4. Validate proportions sum to 10000 5. Execute vote via voter contract 0xc69E3eF39E3fFBcE2A1c570f8d3ADF76909ef17b
When displaying earnings projections, always use earning power (voting power × 1.3), not raw voting power.
Example optimization logic:
curl -s https://api.hydrex.fi/strategies | jq '[.[] |
select(.gauge.projectedFeeInUsd != null and .gauge.liveVotingWeight > 0) |
{
address,
title,
efficiency: (.gauge.projectedFeeInUsd / .gauge.liveVotingWeight)
}
] | sort_by(-.efficiency) | .[0:3]'Resources
- Hydrex Platform: https://hydrex.fi
- Pool API: https://api.hydrex.fi/strategies
- Documentation: https://docs.hydrex.fi
- Voter Contract: BaseScan
- veHYDX Contract: BaseScan
Detailed References
- [Locking HYDX](references/locking.md) — Complete guide to creating veHYDX positions
- [Voting on Pools](references/voting.md) — Comprehensive voting mechanics and optimization
- [Single-Sided Liquidity](references/single-sided-liquidity.md) — ICHI vault deposits, withdrawals, and position management
- [Rewards](references/rewards.md) — Claiming oHYDX incentives and exercising into veHYDX
---
💡 Pro Tip: Efficiency (fees per vote) matters more than absolute fees. Say "vote optimally on Hydrex" and let Bankr handle the math. Remember your earnings are based on earning power (1.3x voting power).
⚠️ Important: Rolling locks (Type 1) automatically extend to maintain 2-year duration. This maximizes your voting power without manual management.
🚀 Quick Win: Lock HYDX with rolling lock, wait for next epoch, then say "vote optimally on Hydrex to maximize fees" — Bankr calculates using your earning power and does the rest.
Locking HYDX for Voting Power
Lock HYDX tokens to receive veHYDX (vote-escrowed HYDX), which grants governance voting power. Locked positions are represented as NFTs.
HYDX Token: 0x00000e7efa313F4E11Bfff432471eD9423AC6B30 (Standard ERC20) veHYDX Contract: 0x25B2ED7149fb8A05f6eF9407d9c8F878f59cd1e1 on Base (chain ID 8453)
Overview
When you lock HYDX:
1. Your HYDX is locked in the veHYDX contract 2. You receive an NFT representing your locked position 3. This NFT grants voting power (available after next epoch flip) 4. Voting power determines how much influence you have in gauge votes
Lock Types
The veHYDX contract supports multiple lock types:
- Type 0: Time-vested lock (traditional veNFT with decay over specified duration)
- Type 1: Rolling lock (2-year lock that auto-extends for maximum power)
- Type 2: Permanent lock (immutable, no time decay)
For maximum voting power without time management, use Type 1 (rolling lock).
Type 1 rolling locks automatically extend to maintain a 2-year lock duration, maximizing your voting and earning power without manual intervention.
Creating a Lock
Step 1: Approve HYDX
First, approve the veHYDX contract to spend your HYDX:
Using Bankr:
Approve 1000 HYDX to 0x25B2ED7149fb8A05f6eF9407d9c8F878f59cd1e1 on BaseReplace 1000 with the amount you want to lock.
Step 2: Create Lock
Function: createLock(uint256 _value, uint256 _lockDuration, uint8 _lockType)
Parameters:
_value: Amount of HYDX to lock (in wei, 18 decimals)_lockDuration: Lock duration in seconds (use0for Type 1 rolling locks)_lockType: Lock type (use1for rolling lock - recommended)
Using Bankr (Natural Language):
Lock 1000 HYDX on Hydrex with rolling lockCreate veHYDX rolling lock with 500 HYDX on BaseSend transaction to 0x25B2ED7149fb8A05f6eF9407d9c8F878f59cd1e1 on Base calling createLock with 1000000000000000000000 (1000 HYDX in wei), 0 duration, and type 1Using Arbitrary Transaction Format:
{
"to": "0x25B2ED7149fb8A05f6eF9407d9c8F878f59cd1e1",
"data": "ENCODED_CALLDATA",
"value": "0",
"chainId": 8453
}Step 3: Receive NFT
The transaction will mint a veHYDX NFT to your address. This NFT:
- Represents your locked position
- Grants voting power starting next epoch
- Can be viewed in your wallet as an NFT
- Has a unique token ID
Checking Lock Details
Query information about a locked position:
Function: lockDetails(uint256 _tokenId) — selector 0x2c79db11 Contract: 0x25B2ED7149fb8A05f6eF9407d9c8F878f59cd1e1 (Base)
bankr prompt "Show my veHYDX lock details for NFT #1"
bankr prompt "What are the lock details for veHYDX NFT #5?"To read directly — encode tokenId as a 32-byte hex value and call eth_call on the veHYDX contract. Example for token ID 1: data = 0x2c79db11 + 0000000000000000000000000000000000000000000000000000000000000001
Returns:
amount: Amount of HYDX lockedstartTime: When the lock was createdendTime: When the lock expires (rolling locks maintain 2-year duration)lockType: Type of lock (1 = rolling)
Checking Voting Power
Get the voting power of a specific veHYDX NFT:
Function: balanceOfNFT(uint256 _tokenId) — selector 0x4f0e0ef3 Contract: 0x25B2ED7149fb8A05f6eF9407d9c8F878f59cd1e1 (Base)
bankr prompt "What's the voting power for my veHYDX NFT #1?"
bankr prompt "What's the earning power for my veHYDX NFT #1?"To read directly — encode tokenId as a 32-byte hex value and call eth_call on the veHYDX contract. Returns a uint256 in wei units.
Important: This returns voting power. To get earning power (used for fee distribution), multiply by 1.3:
earningPower = votingPower × 1.3Managing Your Lock
Increase Lock Amount
Add more HYDX to an existing lock:
Function: increaseAmount(uint256 _tokenId, uint256 _value)
Add 500 HYDX to my veHYDX NFT #1 on BaseCheck NFT Ownership
Get the owner of a veHYDX NFT:
Function: ownerOf(uint256 _tokenId) — selector 0x6352211e
bankr prompt "Who owns veHYDX NFT #1?"To read directly — encode tokenId as a 32-byte hex value and call eth_call. Returns the owner address.
Check Balance
Get number of veHYDX NFTs owned by an address:
Function: balanceOf(address _owner) — selector 0x70a08231
bankr prompt "Show my veHYDX NFT balance"
bankr prompt "How many veHYDX NFTs do I own?"To read directly — encode the owner address as a 32-byte padded hex value (strip 0x, left-pad with 24 zeros) and call eth_call. Returns a uint256 count.
Epoch System
veHYDX operates on an epoch system:
- Voting power from new locks becomes active at the next epoch flip
- Epochs typically last 1 week
- Votes and rewards are calculated per epoch
Check when voting power activates: After creating a lock, your voting power will be available for voting starting at the next epoch boundary (typically the next Thursday 00:00 UTC).
Function Selectors
| Function | Selector | Parameters | Returns |
|---|---|---|---|
createLock(uint256,uint256,uint8) | 0x2fb1cb6c | value, duration, type | tokenId |
increaseAmount(uint256,uint256) | 0xf4f6ad89 | tokenId, value | — |
lockDetails(uint256) | 0x2c79db11 | tokenId | LockDetails |
balanceOfNFT(uint256) | 0x4f0e0ef3 | tokenId | uint256 |
ownerOf(uint256) | 0x6352211e | tokenId | address |
balanceOf(address) | 0x70a08231 | owner | uint256 |
totalSupply() | 0x18160ddd | — | uint256 |
Complete Workflow Example
Using Bankr Natural Language
# 1. Check HYDX balance
"What's my HYDX balance on Base?"
# 2. Approve HYDX
"Approve 1000 HYDX to 0x25B2ED7149fb8A05f6eF9407d9c8F878f59cd1e1 on Base"
# 3. Create rolling lock
"Lock 1000 HYDX on Hydrex with rolling lock"
# 4. Check earning power (after next epoch)
"What's my Hydrex earning power?"Manual Flow
# 1. Check HYDX balance
bankr prompt "What's my HYDX balance on Base?"
# 2. Approve HYDX
bankr prompt "Approve 1000 HYDX to 0x25B2ED7149fb8A05f6eF9407d9c8F878f59cd1e1 on Base"
# 3. Create rolling lock
bankr prompt "Lock 1000 HYDX on Hydrex with rolling lock"
# 4. Check veHYDX NFT balance
bankr prompt "Show my veHYDX NFT balance"Lock Type Details
Type 0: Time-Vested Lock
- Voting power decays over time
- Must set
_lockDuration(in seconds) - Unlocks after duration expires
- Example: 2 year lock =
63072000seconds - Power gradually decreases as lock approaches expiration
Type 1: Rolling Lock (Recommended)
- Automatically extends to maintain 2-year lock
- Maximum voting power at all times
- Set
_lockDurationto0 - No manual management needed
- Best for maximizing governance and earning power
- Lock continuously extends to maintain optimal duration
Type 2: Permanent Lock
- Immutable permanent lock
- Cannot be unlocked or modified
- Set
_lockDurationfor permanent commitment - Use only if absolutely certain about permanent locking
Voting Power vs Earning Power
Voting Power: Used for governance votes on pool gauges (checked on voter contract) Earning Power: Used for calculating fee distribution (1.3x voting power)
When displaying power to users:
- For voting allocation: Use voting power from voter contract
- For fee earnings: Show earning power (voting power × 1.3)
Example:
- You lock 1000 HYDX with Type 1 rolling lock
- Voting power: ~2000 (depends on lock duration calculation)
- Earning power: ~2600 (voting power × 1.3)
Important Notes
1. Rolling locks auto-extend - Type 1 locks automatically maintain 2-year duration 2. Voting power activates next epoch - Don't expect immediate voting ability 3. NFTs are transferable - veHYDX NFTs can be sold/transferred like any NFT 4. Amount is in wei - 1 HYDX = 1000000000000000000 wei (18 decimals) 5. Approve first - Always approve HYDX before attempting to create a lock 6. Earning power = 1.3x voting power - Display earning power for fee calculations
Tips
- Start small: Test with a small amount first to understand the flow
- Rolling for max power: Type 1 rolling locks give maximum voting power with auto-extension
- Check epoch timing: Lock before epoch end to vote in the next epoch
- Track your NFT: Note the token ID returned from createLock
- Multiple locks allowed: You can create multiple veHYDX NFTs with different amounts
- Display earning power: When showing fee earnings potential, use voting power × 1.3
Claiming and Managing Hydrex Rewards
Hydrex distributes rewards as oHYDX (options HYDX) — a token that can be converted into a veHYDX voting position or liquid HYDX. Rewards accrue across multiple campaigns and are claimed via Merkle proof in a single claimMultiple transaction.
Hydrex Incentive Distributor: 0x8604d646df5A15074876fc2825CfeE306473dD45 (Base) oHYDX Token: 0xA1136031150E50B015b41f1ca6B2e99e49D8cB78 (Base)
How It Works
1. Rewards accrue across one or more active campaigns (voting incentives, liquidity incentives, etc.) 2. Fetch your Merkle proofs from the incentives API 3. Call claimMultiple on the Incentive Distributor to collect oHYDX 4. Call exerciseVe on the oHYDX contract to convert oHYDX into a veHYDX lock position
Checking Your Rewards
Natural Language
bankr prompt "Check my Hydrex rewards"
bankr prompt "How much oHYDX have I earned on Hydrex?"
bankr prompt "Show my unclaimed Hydrex incentives"Rewards API
Fetch Merkle proofs for an address:
GET https://incentives-api.hydrex.fi/campaigns/proofs/YOUR_ADDRESSKey fields per proof:
| Field | Description |
|---|---|
campaignId | Unique identifier for the rewards campaign (bytes32) |
root | Merkle root for this batch (bytes32) |
amount | Total cumulative amount earned across all batches (wei) |
proof | Array of bytes32 Merkle proof hashes |
rewardToken | Token being distributed (oHYDX: 0xA1136031150E50B015b41f1ca6B2e99e49D8cB78) |
claimedAmount | Amount already claimed from this campaign (wei) |
Calculating unclaimed rewards per campaign:
unclaimed = amount - claimedAmountIf unclaimed == 0, skip — already fully claimed.
Claiming Rewards
Natural Language
bankr prompt "Claim my Hydrex rewards"
bankr prompt "Claim all my unclaimed Hydrex incentives"Steps Bankr Executes
1. Fetch proofs: GET https://incentives-api.hydrex.fi/campaigns/proofs/userAddress 2. Filter eligible proofs:
- Exclude proofs where
amount == claimedAmount(already fully claimed) - Exclude campaigns listed in
warnings
3. Construct and submit claimMultiple on the Incentive Distributor
claimMultiple Call
Function: claimMultiple(...) on Incentive Distributor Contract: 0x8604d646df5A15074876fc2825CfeE306473dD45 (Base)
Each element in the call maps directly to one proof object from the API:
| Parameter | Source | Type |
|---|---|---|
campaignId | proof.campaignId | bytes32 |
batchIndex | proof.batchIndex | uint256 |
root | proof.root | bytes32 |
amount | proof.amount | uint256 (total cumulative, not unclaimed) |
proof | proof.proof | bytes32[] |
Send transaction to 0x8604d646df5A15074876fc2825CfeE306473dD45 on Base calling claimMultiple with the eligible proof data from https://incentives-api.hydrex.fi/campaigns/proofs/[USER_ADDRESS]Important: Pass the full amount (not the unclaimed delta). The contract tracks claimed amounts internally and only distributes the difference.
Result: oHYDX tokens are transferred to the caller's address.
Converting oHYDX to veHYDX
oHYDX is an options token — exercising it converts it into a locked veHYDX position. You pay a discounted price (in ETH/WETH) and receive a veHYDX NFT.
Natural Language
bankr prompt "Convert my oHYDX to veHYDX on Hydrex"
bankr prompt "Exercise my Hydrex oHYDX rewards into veHYDX"
bankr prompt "How much does it cost to exercise my oHYDX on Hydrex?"exerciseVe Call
Function: exerciseVe(uint256 amount, uint256 maxPaymentAmount, address recipient) Contract: 0xA1136031150E50B015b41f1ca6B2e99e49D8cB78 (oHYDX, Base)
Send transaction to 0xA1136031150E50B015b41f1ca6B2e99e49D8cB78 on Base calling exerciseVe with amount [OHYD_AMOUNT_IN_WEI], maxPaymentAmount [MAX_ETH_IN_WEI], recipient [USER_ADDRESS]Parameters:
| Parameter | Description |
|---|---|
amount | Amount of oHYDX to exercise (wei) |
maxPaymentAmount | Maximum ETH willing to pay (wei) — set higher than expected to avoid slippage reverts |
recipient | Address to receive the new veHYDX NFT |
Before calling: 1. Check oHYDX balance: balanceOf(userAddress) on 0xA1136031150E50B015b41f1ca6B2e99e49D8cB78 2. Check the current exercise cost (discount rate varies) — ask Bankr or query the contract 3. Approve the oHYDX contract to spend the payment token if required
Result: oHYDX is burned, payment is taken, and a new veHYDX NFT (rolling lock) is minted to recipient.
Function Reference
| Function | Contract | Parameters | Returns |
|---|---|---|---|
claimMultiple(...) | Incentive Distributor | Array of campaign proofs | — |
exerciseVe(uint256,uint256,address) | oHYDX | amount, maxPayment, recipient | tokenId |
balanceOf(address) | oHYDX | user address | uint256 oHYDX balance |
To read oHYDX balance directly — balanceOf(address) selector 0x70a08231, encode user address as 32-byte padded hex and call eth_call on 0xA1136031150E50B015b41f1ca6B2e99e49D8cB78.
Complete Workflow
# 1. Check what rewards you've earned
bankr prompt "Check my Hydrex rewards"
# 2. Claim all unclaimed oHYDX
bankr prompt "Claim my Hydrex oHYDX rewards"
# 3. Check your oHYDX balance
bankr prompt "What's my oHYDX balance on Base?"
# 4. Convert oHYDX into veHYDX (locking for voting power + fee earnings)
bankr prompt "Exercise my oHYDX into veHYDX on Hydrex"Implementation Guide for Bankr
When a user requests reward claiming or checking:
Check Rewards Flow
1. GET https://incentives-api.hydrex.fi/campaigns/proofs/userAddress
2. For each proof:
unclaimed = parseInt(proof.amount) - parseInt(proof.claimedAmount)
3. Filter out: warnings list, unclaimed == 0
4. Sum total unclaimed across all eligible proofs (convert from wei for display)
5. Show: total unclaimed oHYDX, number of campaigns, estimated USD valueClaim Flow
1. GET https://incentives-api.hydrex.fi/campaigns/proofs/userAddress
2. Filter eligible proofs (exclude warnings, exclude fully claimed)
3. Build claimMultiple calldata with all eligible proofs:
- campaignId, batchIndex, root, amount (full cumulative), proof[]
4. Submit to 0x8604d646df5A15074876fc2825CfeE306473dD45 on BaseExercise Flow
1. eth_call balanceOf(userAddress) on 0xA1136031150E50B015b41f1ca6B2e99e49D8cB78 → oHYDX balance
2. Get current exercise price from contract or display to user
3. Call exerciseVe(oHYDXBalance, maxPaymentAmount, userAddress) on oHYDX contract
- Requires ETH payment — confirm with user before submittingNotes
- oHYDX is not HYDX — it's an options token that must be exercised to become veHYDX or HYDX
- Exercising costs ETH — the exercise price is a 30% discount to spot HYDX price (set by the protocol)
- veHYDX from exercising is a permalock (Type 2), automatically maintained for maximum voting power
- amount is cumulative — always pass the full
amountfrom the proof, not the delta
Single-Sided Liquidity
Deposit a single token into an auto-managed strategy on Hydrex to earn oHYDX yields and provide deep pool liquidity — without needing to supply both sides of a pair.
Vault Deposit Guard: 0x9A0EBEc47c85fD30F1fdc90F57d2b178e84DC8d8 (Base) Vault Deployer: 0x7d11De61c219b70428Bb3199F0DD88bA9E76bfEE (Base)
How It Works
1. You deposit a single asset (e.g., 100% BNKR) 2. An automated liquidity manager handles the position — no need to balance both sides yourself 3. You earn oHYDX yield on your deposited value 4. On withdrawal, you receive your position back as a mix of the deposit token and counter token — typically up to 70/30 by value (e.g., roughly 70% BNKR and 30% WETH), depending on where the price sits relative to when you entered 5. The strategy address is per-pair; get all available strategies from the API
Note on displayed values: APR, USD balances, and TVL figures from the API are estimates based on recent activity. They're useful for comparing strategies directionally but will shift as market conditions change. As with any liquidity position, token price movements relative to each other can affect the mix you receive on withdrawal.
Discovering Opportunities
All single-sided strategies are available from:
https://api.hydrex.fi/strategies?strategist=ichiFilter by deposit token address:
https://api.hydrex.fi/strategies?strategist=ichi&depositTokens=TOKEN_ADDRESS,TOKEN_ADDRESSExample — find BNKR deposit opportunities:
bankr prompt "What single-sided liquidity vaults can I deposit BNKR into on Hydrex?"The API fetches from: https://api.hydrex.fi/strategies?strategist=ichi&depositTokens=0x22af33fe49fd1fa80c7149773dde5890d3c76f3b
Key API fields per strategy:
| Field | Description |
|---|---|
address | Vault address (used for deposit, withdraw, and balance calls) |
title | "DEPOSIT/COUNTER" format — e.g., "BNKR/WETH" means deposit BNKR |
depositToken | Address of the token you deposit |
childAPR | Current average APR in oHYDX for depositors |
lpPriceUsd | USD value per LP share |
tvlUsd | Total value locked in this vault |
Note: Not all tokens have single-sided strategies. If you'd like a strategy for a specific token, reach out to the Hydrex team on Discord or Telegram.
Depositing
Natural Language
Always specify the strategy by title (e.g., "BNKR/WETH") or vault address so Bankr can unambiguously resolve which vault to use.
bankr prompt "Deposit 100 BNKR into the BNKR/WETH strategy on Hydrex"
bankr prompt "Deposit 500 USDC into the USDC/HYDX strategy on Hydrex"
bankr prompt "Deposit 1000 HYDX into vault 0xABC...123 on Hydrex"Steps Bankr Executes
1. Resolve vault — match the strategy by title (e.g., "BNKR/WETH") or address from https://api.hydrex.fi/strategies?strategist=ichi; if ambiguous, ask the user to confirm the strategy title or address before proceeding 2. Check allowance: allowance(userAddress, DEPOSIT_GUARD) on the deposit token contract 3. Approve if needed: approve(DEPOSIT_GUARD, amount) on the deposit token 4. Deposit: call forwardDepositToICHIVault on Deposit Guard
Deposit
Function: forwardDepositToICHIVault(address vault, address vaultDeployer, address token, uint256 amount, uint256 minimumShares, address userAddress) Contract: 0x9A0EBEc47c85fD30F1fdc90F57d2b178e84DC8d8 (Deposit Guard, Base)
Send transaction to 0x9A0EBEc47c85fD30F1fdc90F57d2b178e84DC8d8 on Base calling forwardDepositToICHIVault with vault [VAULT_ADDRESS], vaultDeployer 0x7d11De61c219b70428Bb3199F0DD88bA9E76bfEE, token [DEPOSIT_TOKEN_ADDRESS], amount [AMOUNT_IN_WEI], minimumShares 0, userAddress [USER_ADDRESS]Parameters:
| Parameter | Value |
|---|---|
vault | From API address field |
vaultDeployer | 0x7d11De61c219b70428Bb3199F0DD88bA9E76bfEE (always) |
token | Deposit token address (from API depositToken) |
amount | Amount in wei (18 decimals for most tokens, 6 for USDC) |
minimumShares | 0 (acceptable for most cases; use slippage calc for large deposits) |
userAddress | User's wallet address |
Result: User receives LP shares (vault tokens) minted to userAddress.
Withdrawing
Natural Language
bankr prompt "Withdraw my BNKR/WETH single-sided position on Hydrex"
bankr prompt "Remove 50% of my BNKR single-sided liquidity on Hydrex"
bankr prompt "Exit my Hydrex BNKR vault position"Steps Bankr Executes
1. Get LP balance: balanceOf(userAddress) on the vault contract 2. Check LP allowance: allowance(userAddress, DEPOSIT_GUARD) on the vault contract 3. Approve LP if needed: approve(DEPOSIT_GUARD, shares) on the vault contract 4. Withdraw: call forwardWithdrawFromICHIVault on Deposit Guard
Withdraw Call
Function: forwardWithdrawFromICHIVault(address vault, address vaultDeployer, uint256 shares, address userAddress, uint256 minAmount0, uint256 minAmount1) Contract: 0x9A0EBEc47c85fD30F1fdc90F57d2b178e84DC8d8 (Deposit Guard, Base)
Send transaction to 0x9A0EBEc47c85fD30F1fdc90F57d2b178e84DC8d8 on Base calling forwardWithdrawFromICHIVault with vault [VAULT_ADDRESS], vaultDeployer 0x7d11De61c219b70428Bb3199F0DD88bA9E76bfEE, shares [LP_SHARES], userAddress [USER_ADDRESS], minAmount0 0, minAmount1 0Parameters:
| Parameter | Value |
|---|---|
vault | Vault address (from API address or user's existing position) |
vaultDeployer | 0x7d11De61c219b70428Bb3199F0DD88bA9E76bfEE (always) |
shares | LP token balance from balanceOf (partial withdrawals: multiply by fraction) |
userAddress | User's wallet address |
minAmount0 | 0 (or calculate slippage on token0) |
minAmount1 | 0 (or calculate slippage on token1) |
Result: User receives both token0 and token1 from the vault (up to 70/30 deposit/counter split depending on vault position).
Viewing Your Position
Natural Language
bankr prompt "Show my Hydrex single-sided liquidity positions"
bankr prompt "What's my BNKR/WETH vault balance on Hydrex?"
bankr prompt "How much is my Hydrex BNKR single-sided position worth?"Calculating Underlying Tokens
Step 1 — Get user LP shares: Function: balanceOf(address) — standard ERC20, selector 0x70a08231 Contract: Vault address (from API address field)
To read directly — encode user address as 32-byte padded hex and call eth_call on the vault. Returns uint256 LP share balance.
Step 2 — Get vault totals:
`totalSupply()` — selector 0x18160ddd, no parameters. Returns total LP shares outstanding.
`getTotalAmounts()` — returns (uint256 totalToken0, uint256 totalToken1). Total underlying tokens in the vault.
Step 3 — Calculate user's underlying:
userToken0 = (userShares × totalToken0) / totalSupply
userToken1 = (userShares × totalToken1) / totalSupplyMultiply by lpPriceUsd / totalSupply from the API to get USD value.
Function Reference
| Function | Contract | Parameters | Returns |
|---|---|---|---|
forwardDepositToICHIVault(address,address,address,uint256,uint256,address) | Deposit Guard | vault, vaultDeployer, token, amount, minShares, user | — |
forwardWithdrawFromICHIVault(address,address,uint256,address,uint256,uint256) | Deposit Guard | vault, vaultDeployer, shares, user, min0, min1 | — |
balanceOf(address) | Vault | user address | uint256 LP shares |
totalSupply() | Vault | — | uint256 total shares |
getTotalAmounts() | Vault | — | (uint256 token0, uint256 token1) |
allowance(address,address) | Token / Vault | owner, spender | uint256 |
approve(address,uint256) | Token / Vault | spender, amount | bool |
Contracts (Base Mainnet)
| Contract | Address |
|---|---|
| Vault Deposit Guard | 0x9A0EBEc47c85fD30F1fdc90F57d2b178e84DC8d8 |
| Vault Deployer | 0x7d11De61c219b70428Bb3199F0DD88bA9E76bfEE |
Vault addresses are per-pair — always retrieve from https://api.hydrex.fi/strategies?strategist=ichi (address field).
Complete Workflow Examples
Deposit BNKR into BNKR/WETH Vault
# 1. Find available BNKR vaults
bankr prompt "What single-sided liquidity vaults can I deposit BNKR into on Hydrex?"
# 2. Check BNKR balance
bankr prompt "What's my BNKR balance on Base?"
# 3. Deposit
bankr prompt "Deposit 500 BNKR into the BNKR/WETH single-sided vault on Hydrex"
# 4. Confirm position
bankr prompt "Show my Hydrex single-sided liquidity positions"Withdraw from BNKR/WETH Vault
# 1. Check current position
bankr prompt "What's my BNKR/WETH vault balance on Hydrex?"
# 2. Full withdrawal
bankr prompt "Withdraw my full BNKR/WETH single-sided position on Hydrex"
# 3. Partial withdrawal
bankr prompt "Withdraw 25% of my BNKR single-sided position on Hydrex"Implementation Guide for Bankr
When a user requests single-sided liquidity operations:
Resolving the Vault
1. Fetch strategies: GET https://api.hydrex.fi/strategies?strategist=ichi 2. Match by user intent:
- By name:
title == "BNKR/WETH"(first token = deposit token) - By token:
depositToken == userSpecifiedTokenAddress - List all: return all strategies with
childAPR,tvlUsd,title
3. Extract address (vault) and depositToken for the selected strategy
Deposit Flow
1. GET https://api.hydrex.fi/strategies?strategist=ichi → find vault
2. eth_call allowance(userAddress, 0x9A0EBEc47c85fD30F1fdc90F57d2b178e84DC8d8) on depositToken
3. If allowance < amount:
approve(0x9A0EBEc47c85fD30F1fdc90F57d2b178e84DC8d8, amount) on depositToken
4. forwardDepositToICHIVault(vault, 0x7d11De61c219b70428Bb3199F0DD88bA9E76bfEE, depositToken, amount, 0, userAddress)
on Deposit Guard 0x9A0EBEc47c85fD30F1fdc90F57d2b178e84DC8d8Withdraw Flow
1. eth_call balanceOf(userAddress) on vault → get LP shares
2. eth_call allowance(userAddress, 0x9A0EBEc47c85fD30F1fdc90F57d2b178e84DC8d8) on vault
3. If allowance < shares:
approve(0x9A0EBEc47c85fD30F1fdc90F57d2b178e84DC8d8, shares) on vault
4. forwardWithdrawFromICHIVault(vault, 0x7d11De61c219b70428Bb3199F0DD88bA9E76bfEE, shares, userAddress, 0, 0)
on Deposit Guard 0x9A0EBEc47c85fD30F1fdc90F57d2b178e84DC8d8View Position Flow
1. eth_call balanceOf(userAddress) on vault → userShares
2. eth_call totalSupply() on vault → totalShares
3. eth_call getTotalAmounts() on vault → (totalToken0, totalToken1)
4. userToken0 = (userShares × totalToken0) / totalShares
userToken1 = (userShares × totalToken1) / totalSharesTips
- Partial withdrawals: Multiply LP balance by the fraction to withdraw (e.g., 50% =
shares / 2) - Slippage:
minimumShares = 0andminAmount0/1 = 0is acceptable for most users; for large positions consider calculating 1% slippage - Token ordering:
titleformat is always"DEPOSIT/COUNTER"— the first token is what you put in - APR:
childAPRis the oHYDX yield; actual returns also include trading fees from the pool - IL risk: Wider price swings between the two tokens = larger impermanent loss potential
- No strategy for your token? Contact Hydrex on Discord or Telegram
Voting on Hydrex
Vote to allocate your voting power across liquidity pools. Your vote determines how HYDX emissions are distributed.
Voter Contract: 0xc69E3eF39E3fFBcE2A1c570f8d3ADF76909ef17b on Base (chain ID 8453)
Pool Information API
Get current liquidity pool data including gauge addresses, bribes, APRs, and voting weights:
curl -s https://api.hydrex.fi/strategies | jq '.'Key fields per pool:
address— Pool address (used as the voting target)gauge.address— Gauge contract addressgauge.bribe— External bribe contractgauge.fee— Fee distribution contractgauge.liveVotingWeight— Current total votes for this poolgauge.votingAprProjection— Projected APR from voting incentivesgauge.projectedFeeInUsd— Projected weekly fee earnings in USD (key metric for optimization)gauge.feeInUsd— Current period fees earned in USDtitle— Pool name (e.g., "HYDX/USDC")token0Address/token1Address— Pool token addresses
Important: gauge.projectedFeeInUsd is the primary metric for vote optimization. Higher values mean more fee revenue for voters.
Checking Voting Power
Query your voting power (amount of veHYDX you can allocate for governance votes):
Function: votingPower(address) — selector 0x90a40d0a Contract: 0xc69E3eF39E3fFBcE2A1c570f8d3ADF76909ef17b (Base)
bankr prompt "What's my Hydrex voting power?"To read directly — encode the voter address as a 32-byte padded hex value (strip 0x, left-pad with 24 zeros) and call eth_call on the Voter contract. Returns a uint256 voting power in wei units.
Checking Earning Power
Earning power determines your share of fee distributions and is 1.3x your voting power:
Function: Same votingPower(address) read — selector 0x90a40d0a — then multiply result by 1.3.
bankr prompt "What's my Hydrex earning power?"earningPower = votingPower × 1.3When to display:
- Voting power: For governance vote allocation
- Earning power: For fee earning projections and APR calculations
Viewing Current Votes
Check how an address has allocated votes across pools:
Get Pool Vote Length
Function: poolVoteLength(address) — selector 0x29199aa4
bankr prompt "How many pools am I currently voting on in Hydrex?"To read directly — encode voter address as 32-byte padded hex and call eth_call. Returns uint256 count of pools voted for.
Get Pool Vote at Index
Function: poolVote(address, uint256) — selector 0xd73d1f9b
bankr prompt "Show which pools I'm voting on in Hydrex"To read directly — encode voter address + index (both 32-byte padded) and call eth_call. Returns the pool address at that index. Iterate from 0 to poolVoteLength - 1.
Get Votes for Specific Pool
Function: votes(address voter, address pool) — selector 0xd23254b4
bankr prompt "How many votes do I have on the HYDX/USDC pool in Hydrex?"To read directly — encode voter address + pool address (both 32-byte padded) and call eth_call. Returns uint256 vote weight allocated to that pool.
Checking Pool Weights
Get current voting weight for any pool:
Function: weights(address pool) — selector 0x776f3843 Contract: 0xc69E3eF39E3fFBcE2A1c570f8d3ADF76909ef17b (Base)
bankr prompt "What's the current voting weight for the HYDX/USDC pool on Hydrex?"
bankr prompt "Show voting weights for all Hydrex pools"To read directly — encode pool address as 32-byte padded hex and call eth_call. Returns uint256 total votes allocated to that pool. Use pool addresses from https://api.hydrex.fi/strategies (address field).
Voting on Pools
Function: vote(address[] _poolVote, uint256[] _voteProportions) Contract: 0xc69E3eF39E3fFBcE2A1c570f8d3ADF76909ef17b Chain: Base (8453)
Vote Proportions
Vote proportions are percentage weights (basis points) that sum to 10000 (100%):
- 100% to one pool:
[10000] - 50/50 split:
[5000, 5000] - 33/33/33 split:
[3333, 3334, 3333] - 60/40 split:
[6000, 4000]
Bankr Voting Examples
Use Bankr's natural language interface to vote. Bankr will automatically fetch pool addresses from the API based on pool names:
Single pool (100% allocation):
Vote all my Hydrex voting power on HYDX/USDCMulti-pool allocation by name:
Vote 50/50 on HYDX/USDC and cbBTC/WETH on HydrexVote 60% on HYDX/USDC and 40% on USDC/USDbC on HydrexThree-way split:
Vote 33/33/34 on HYDX/USDC, cbBTC/WETH, and USDC/USDbC on HydrexOptimized voting (automatic fee maximization):
Vote optimally on Hydrex to maximize my fee earningsAllocate my Hydrex votes to the top 3 pools by projected feesVote on Hydrex pools weighted by their projected fee revenueManual pool addresses (if needed):
Send transaction to 0xc69E3eF39E3fFBcE2A1c570f8d3ADF76909ef17b on Base calling vote with pools [0x51f0b932855986b0e621c9d4db6eee1f4644d3d2, 0xAnotherPoolAddress] and proportions [6000, 4000]Using Arbitrary Transaction Format
For precise control, use Bankr's arbitrary transaction feature:
Submit this transaction on Base:
{
"to": "0xc69E3eF39E3fFBcE2A1c570f8d3ADF76909ef17b",
"data": "ENCODED_CALLDATA",
"value": "0",
"chainId": 8453
}Vote Restrictions
Be aware of voting constraints:
1. Vote Delay: Must wait VOTE_DELAY seconds between votes (check with selector 0x3a09e5a7) 2. Last Voted: Your last vote timestamp (selector 0x77b887b9) 3. Epoch: Votes are per epoch; cannot change mid-epoch 4. Proportions: Must sum to exactly 10000 (100%)
Check Last Voted Timestamp
Function: lastVoted(address) — selector 0x77b887b9
bankr prompt "When did I last vote on Hydrex?"To read directly — encode voter address as 32-byte padded hex and call eth_call. Returns uint256 Unix timestamp of last vote. Compare against current time + VOTE_DELAY to determine if a new vote is allowed.
Resetting Votes
Clear all current votes before reallocating:
Function: reset() Contract: 0xc69E3eF39E3fFBcE2A1c570f8d3ADF76909ef17b
{
"to": "0xc69E3eF39E3fFBcE2A1c570f8d3ADF76909ef17b",
"data": "0xd826f88f",
"value": "0",
"chainId": 8453
}Pool Selection Guide
When choosing pools to vote for, consider:
- Projected Fee Revenue (
gauge.projectedFeeInUsd): PRIMARY METRIC — Higher projected fees = more earnings for voters - Voting APR Projection (
gauge.votingAprProjection): Expected annual return from voting - Current Voting Weight (
gauge.liveVotingWeight): How much competition exists for these fees - Bribe Rewards: Check
gauge.bribes.bribeandgauge.bribes.feefor additional incentives - Pool TVL: Larger pools may generate more consistent fees
- Strategic Alignment: Support pools that benefit your holdings
- Diversification: Split votes across multiple pools to reduce risk
Important for calculations: When projecting fee earnings, use earning power (voting power × 1.3) rather than raw voting power, as earning power determines your share of fee distributions.
Optimization Strategy for Bankr
When the user requests optimized voting, follow this process:
1. Fetch all pools from https://api.hydrex.fi/strategies 2. Get user's earning power: Use bankr prompt "What's my Hydrex earning power?", or query voting power via Bankr and multiply by 1.3 3. Calculate fee efficiency for each pool:
efficiency = projectedFeeInUsd / liveVotingWeightThis shows how much fee revenue each unit of voting power earns.
4. Rank pools by efficiency (highest first)
5. Project user earnings per pool:
userEarnings = (userEarningPower / (poolWeight + userVotingPower)) × projectedFeeInUsdUse earning power (1.3x voting power) for accurate fee projections.
6. Select top pools (3-5 pools recommended for diversification)
7. Allocate votes weighted by efficiency or equally across top pools
8. Execute vote transaction
Example calculation:
// Pool A: $10,000 fees / 500,000 weight = $0.02 per vote
// Pool B: $5,000 fees / 100,000 weight = $0.05 per vote
// Pool B is more efficient despite lower absolute fees
// User has 10,000 voting power = 13,000 earning power
// Pool B projected earnings: (13,000 / 110,000) × $5,000 = ~$591/weekSimple strategy: Vote 100% on the single highest efficiency pool Balanced strategy: Split votes equally across top 3-5 efficient pools Weighted strategy: Allocate votes proportional to efficiency scores
Always display earning projections using earning power (voting power × 1.3)
Natural Language Voting Guide for Bankr
When users request Hydrex voting, process their request as follows:
Pattern Recognition
By pool name:
- "Vote on HYDX/USDC" → Fetch pool address from API where
title == "HYDX/USDC" - "Vote 50/50 on HYDX/USDC and cbBTC/WETH" → Fetch both pools, use proportions
[5000, 5000] - "Vote 60/40 on [Pool A] and [Pool B]" → Use proportions
[6000, 4000]
Optimized voting:
- "Vote optimally" / "maximize fees" / "best returns" → Calculate efficiency, vote on top pools
- "Vote on top 3 pools" → Sort by efficiency, split equally across top 3
- "Vote weighted by fees" → Allocate proportional to
projectedFeeInUsd
Reset and revote:
- "Change my vote to X" → Call
reset()first, then vote - "Reallocate votes" → Reset then vote
API Query for Pool Resolution
# Find pool by name
curl -s https://api.hydrex.fi/strategies | jq '.[] | select(.title == "HYDX/USDC") | .address'
# Get top pools by efficiency
curl -s https://api.hydrex.fi/strategies | jq '[.[] | select(.gauge.projectedFeeInUsd != null and .gauge.liveVotingWeight > 0) | {address, title, efficiency: (.gauge.projectedFeeInUsd / .gauge.liveVotingWeight)}] | sort_by(-.efficiency) | .[0:5]'Proportion Calculation
Vote proportions are in basis points (10000 = 100%):
| User Says | Proportions |
|---|---|
| "Vote 100% on X" | [10000] |
| "Vote 50/50 on X and Y" | [5000, 5000] |
| "Vote 60/40 on X and Y" | [6000, 4000] |
| "Vote 33/33/34 on X, Y, Z" | [3333, 3333, 3334] |
| "Vote 25% each on 4 pools" | [2500, 2500, 2500, 2500] |
Always ensure proportions sum to exactly 10000.
Function Selectors
| Function | Selector | Parameters | Returns |
|---|---|---|---|
vote(address[],uint256[]) | 0xc9d27afe | pools, proportions | — |
reset() | 0xd826f88f | — | — |
weights(address) | 0x776f3843 | pool | uint256 |
votes(address,address) | 0xd23254b4 | voter, pool | uint256 |
poolVoteLength(address) | 0x29199aa4 | voter | uint256 |
poolVote(address,uint256) | 0xd73d1f9b | voter, index | address |
totalWeight() | 0x96c82e57 | — | uint256 |
lastVoted(address) | 0x77b887b9 | address | uint256 |
Example Workflows
Natural Language Flow (Recommended)
# 1. Simple named pool voting
"Vote 100% on HYDX/USDC on Hydrex"
# 2. Multi-pool by name
"Vote 50/50 on HYDX/USDC and cbBTC/WETH on Hydrex"
# 3. Optimized voting
"Vote optimally on Hydrex to maximize fees"Manual/Technical Flow
# 1. Get available pools with fee data
curl -s https://api.hydrex.fi/strategies | jq '.[] | {
address,
title,
projectedFees: .gauge.projectedFeeInUsd,
votingWeight: .gauge.liveVotingWeight,
votingApr: .gauge.votingAprProjection,
efficiency: (.gauge.projectedFeeInUsd / .gauge.liveVotingWeight)
} | select(.projectedFees != null)' | jq -s 'sort_by(-.efficiency)'
# 2. Check your voting power
bankr prompt "What's my Hydrex voting power?"
# 3. Vote via Bankr natural language
bankr prompt "Vote 60% on HYDX/USDC and 40% on cbBTC/WETH on Hydrex"
# 4. Verify vote
bankr prompt "Show which pools I'm voting on in Hydrex"Optimization Example for Bankr
When user asks to "vote optimally" or "maximize fees", execute this logic:
# Get pools ranked by fee efficiency
curl -s https://api.hydrex.fi/strategies | jq '[.[] | select(.gauge.projectedFeeInUsd != null and .gauge.liveVotingWeight > 0) | {
address,
title,
projectedFees: .gauge.projectedFeeInUsd,
weight: .gauge.liveVotingWeight,
efficiency: (.gauge.projectedFeeInUsd / .gauge.liveVotingWeight)
}] | sort_by(-.efficiency) | .[0:3]'
# Output shows top 3 pools by efficiency, then vote accordingly:
# Example: "Vote 50/30/20 on [top pool], [second pool], [third pool]"Related skills
FAQ
How is optimal voting decided?
By ranking pools on projectedFeeInUsd divided by liveVotingWeight, i.e., fee revenue per vote.
When does voting power activate?
Voting power activates the next epoch, typically the following Thursday at 00:00 UTC.