Skip to main content

VoteEthDepositAction

Validators vote to confirm ETH deposit transactions from the bridge contract. This is part of the cross-chain consensus mechanism that secures deposits from Arbitrum to Hyperliquid.

Sample Data#

{
"signature": {
"r": "0x74e0218199716f8217518bcb72240de1c17ff6e6682fbacdd820e60c13ac0454",
"s": "0x4a5a442f5dad771b48f3852b4d96cc561de2804b6c1853e8d1548015a732b89f",
"v": 28
},
"action": {
"type": "VoteEthDepositAction",
"user": "0x09a8c041c8d966ddb20b2ea5b556ef0318365182",
"usd": 90391034,
"ethId": {
"block_number": 420281244,
"tx_index": 25,
"event_type": "Deposit",
"event_index": 0,
"tx_hash": "0x107c5fc0f824b2993b28ade0560cb732b0f25df4a47a777c47be108c432ce933"
}
},
"nonce": 1768146734681
}

View this transaction on Hypurrscan →

Field Reference#

Action Fields#

FieldTypeDescription
typestringAlways "VoteEthDepositAction"
userstringAddress of the user who made the deposit
usdnumberDeposit amount in raw units (6 decimals)
ethTxHashstringTransaction hash of the deposit on Arbitrum

Bridge Consensus Process#

  1. User deposits funds to bridge contract on Arbitrum
  2. Validators observe the deposit transaction
  3. Validators submit VoteEthDepositAction votes
  4. Once threshold is reached, funds are credited on Hyperliquid

Use Cases#

Bridge Monitoring#

Track deposit confirmations across the bridge:

def process_VoteEthDepositAction(action):
user = action.get('user')
amount = action.get('usd') / 1_000_000
eth_tx = action.get('ethTxHash')

print(f"Deposit vote: ${amount:,.2f} for {user[:10]}... (tx: {eth_tx[:10]}...)")

Validator Activity Tracking#

Monitor which validators are actively participating in bridge consensus.

Deposit Latency Analysis#

Track time from Arbitrum transaction to Hyperliquid credit.