Overview

The Hyperliquid blockchain features two key parts: HyperCore and HyperEVM. HyperEVM is not a separate chain, but rather, secured by the same HyperBFT consensus as HyperCore. This lets HyperEVM interact directly with parts of HyperCore, such as spot and perp order books. Hyperliquid is a performant blockchain built with the vision of a fully onchain open financial system. Liquidity, user applications, and trading activity synergize on a unified platform that ultimately houses all of finance.

Explorer

https://hyperevm-explorer.vercel.app/

Wallets Types

BitGo enables holding HypeEVM in the following wallet types:

Multisig Cold Multisig Hot MPC Cold MPC Hot
Custody
Self-Custody

Ticker Symbols

Mainnet Testnet
hypeevm thypeevm

Faucet

You can use a faucet to obtain free testnet HypeEVM for development and testing purposes.

Faucet: https://app.hyperliquid-testnet.xyz/drip

Units

Each HypeEVM consists of 1,000,000,000,000,000,000 (1018) wei, so not even a single hypeevm can be stored numerically without exceeding the range of JavaScript numbers. Gas fees use gwei.

  • 1 hypeevm = 1018 wei
  • 1 wei = 10-18 hypeevm
  • 1 gwei = 10-9 hypeevm

For that reason, only string balance properties are available, which are balanceString, confirmedBalanceString, and spendableBalanceString.

Tokens

The HypeEVM blockchain natively supports tokens.

Create Wallet

export BITGO_EXPRESS_HOST="<YOUR_LOCALHOST>"
export COIN="thypeevm"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
export LABEL="<DESIRED_WALLET_NAME>"
export PASSPHRASE="<YOUR_BITGO_LOGIN_PASSPHRASE>"
export ENTERPRISE_ID="<YOUR_ENTERPRISE_ID>"

curl -X POST \
 http://$BITGO_EXPRESS_HOST/api/v2/$COIN/wallet/generate \
 -H 'Content-Type: application/json' \
 -H "Authorization: Bearer $ACCESS_TOKEN" \
  -d '{
    "label": "'"$LABEL"'",
    "passphrase": "'"$PASSPHRASE"'",
    "enterprise": "'"$ENTERPRISE_ID"'",
    "walletVersion": 4
}'

Create Address

export WALLET="585c51a5df8380e0e3082e46"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"

curl -X POST \
-H "Authorization: Bearer $ACCESS_TOKEN" \
https://app.bitgo-test.com/api/v2/thypeevm/wallet/$WALLET/address

Consolidate Balance

Consolidation Fee Source: HypeEVM Gas Tank HypeEVM uses forwarders, so it does not support manual consolidation

Estimate Fee

export COIN="thypeevm"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"

curl -X GET \
 https://app.bitgo-test.com/api/v2/$COIN/tx/fee \
 -H 'Content-Type: application/json' \
 -H "Authorization: Bearer $ACCESS_TOKEN"

Transact

Withdrawal Fee Source: Wallet Base Address

export BITGO_EXPRESS_HOST="<YOUR_LOCALHOST>"
export COIN="thypeevm"
export WALLET_ID="<YOUR_WALLET_ID>"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
export ADDRESS="<DESTINATION_ADDRESS>"
export AMOUNT="<AMOUNT_IN_BASE_UNITS>"
export WALLET_PASSPHRASE="<YOUR_WALLET_PASSPHRASE>"

curl -X POST \
 http://$BITGO_EXPRESS_HOST/api/v2/$COIN/wallet/$WALLET_ID/sendcoins \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -d '{
    "address": "'"$ADDRESS"'",
    "amount": "'"$AMOUNT"'",
    "walletPassphrase": "'"$WALLET_PASSPHRASE"'"
}'

Stake

BitGo supports native HYPE staking from HypeEVM MPC wallets. Staking delegates HYPE to a Hyperliquid validator, and rewards accrue directly to the delegation, auto-compounding daily.

Because delegation happens on Hyperliquid L1 (HyperCore) while your wallet lives on HypeEVM, BitGo builds each staking or unstaking request as a sequence of three transactions sent from your wallet's base address: a transfer across the HyperCore bridge address (0x2222...2222) and calls to the CoreWriter contract (0x3333...3333). BitGo sequences them for you, so each transaction becomes ready only after the previous one confirms.

L1 activation required

Wallet activation on the Hyperliquid (L1) chain is required before staking from a BitGo wallet. Activation needs at least one L1 transaction. HypeEVM and L1 share the same address, so send a small amount of HYPE (for example, 0.001 HYPE) to your wallet's base address on L1 to activate it. BitGo rejects staking requests from addresses that aren't activated.

To learn more about staking assets with BitGo, see Staking Overview.

The examples below use mainnet (hypeevm on https://app.bitgo.com). For testnet, use thypeevm on https://app.bitgo-test.com.

Staking Parameters

Minimum stake 0.00000001 HYPE
Minimum unstake 0.00000001 HYPE
Warmup period None
Delegation lock 1 day after each delegation, before you can undelegate
Unstake cooldown 7 days
Rewards Auto-compounding, accrued into the delegation on a 24-hour cycle
Transactions 3 for staking, 3 for unstaking
Partial unstake Supported, including concurrent unstakes of the same delegation
Validator Required. Use a BitGo-whitelisted validator or your own

Note

HypeEVM uses 18 decimals (wei), but Hyperliquid L1 uses 8 decimals. Amounts you pass in base units are truncated to L1 precision, so stake amounts in whole multiples of 1010 wei to avoid losing precision.

To fetch the live parameters, including the current estimated APY, call the List coins available for staking endpoint and read the hypeevm entry.

Prerequisites

  • Enable staking in your enterprise by contacting sales@bitgo.com.
  • Activate the wallet on Hyperliquid L1, as described above. A staking request from an address that isn't yet activated fails with Please activate this wallet <address> on Hyperliquid L1 by sending a small amount (e.g. 0.001 HYPE).
  • Keep enough HYPE in the wallet to cover gas for all six transactions. BitGo reserves gas for the three staking transactions plus the three future unstaking transactions, which is why netMax in the wallet's spendable attributes is lower than max.

You can read the wallet's current limits, fee reserve, and permissions from the Get staking wallet endpoint:

export COIN="hypeevm"
export WALLET_ID="<YOUR_WALLET_ID>"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"

curl -X GET \
  https://app.bitgo.com/api/staking/v1/$COIN/wallets/$WALLET_ID \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $ACCESS_TOKEN"

Step Result

{
  "coin": "hypeevm",
  "walletId": "6971e4fffc36aae70c8fa39b407bee04",
  "stakingWalletId": "91ca8afa-ce98-4473-90cc-86e473f9d38a",
  "walletType": "hot",
  "delegated": "20000000000000000",
  "pendingUnstake": "0",
  "pendingStake": "0",
  "spendableAttributes": {
    "staking": {
      "fee": "19800000000000000",
      "max": "59449639444903742",
      "min": "10000000000",
      "netMax": "39649639444903742",
      "netMin": "19800010000000000"
    },
    "unstaking": {
      "fee": "9900000000000000",
      "max": "20000000000000000",
      "min": "10000000000",
      "multipleDelegations": true,
      "requiresAmount": true,
      "requiresDelegationId": true,
      "requiresDelegationIds": false
    }
  },
  "permissionAttributes": {
    "staking": { "enabled": true, "allowClientToUseOwnValidator": true },
    "unstaking": { "enabled": true },
    "wallet": {
      "hasEnoughAdmins": true,
      "numberOfRequiredAdmins": 1,
      "useValidatorList": true,
      "showValidatorAddress": true,
      "allowPartialUnstake": true
    }
  }
}

Choose a Validator

The validator field is required for HypeEVM staking requests, and BitGo verifies that the address is an active Hyperliquid validator before accepting the request. To list the validators available to your wallet, including any you already delegate to, call the List wallet validators endpoint:

export COIN="hypeevm"
export WALLET_ID="<YOUR_WALLET_ID>"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"

curl -X GET \
  https://app.bitgo.com/api/staking/v1/$COIN/wallets/$WALLET_ID/validators \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $ACCESS_TOKEN"

Step Result

{
  "validators": [
    {
      "coin": "hypeevm",
      "delegationAddress": "0x1a53253c11881a8daa0dd41801af436530c14be8",
      "delegated": "20000000000000000",
      "rewards": "0",
      "type": "Go",
      "provider": "GO",
      "pendingStake": "0",
      "pendingUnstake": "0",
      "stakingType": "STAKE"
    }
  ],
  "page": 1,
  "totalPages": 1,
  "totalElements": 1
}

If your enterprise has bring-your-own-validator enabled, indicated by allowClientToUseOwnValidator: true in the wallet's permission attributes, you can pass any active Hyperliquid validator address instead.

Create a Staking Request

Endpoint: Create staking request

export COIN="hypeevm"
export WALLET_ID="<YOUR_WALLET_ID>"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
export AMOUNT="<AMOUNT_IN_BASE_UNITS>"
export VALIDATOR="<VALIDATOR_ADDRESS>"
export CLIENT_ID="<CLIENT_ID>"

curl -X POST \
  https://app.bitgo.com/api/staking/v1/$COIN/wallets/$WALLET_ID/requests \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -d '{
    "type": "STAKE",
    "amount": "'"$AMOUNT"'",
    "validator": "'"$VALIDATOR"'",
    "clientId": "'"$CLIENT_ID"'"
}'

Step Result

The request is created with status NEW and no transactions yet. BitGo builds the transactions within a few minutes.

{
  "id": "80b7a769-dda7-4cb9-a86d-571a17c1b161",
  "clientId": "docs-test-1",
  "requestingUserId": "64da06d9bfc233000791845e156df223",
  "type": "STAKE",
  "enterpriseId": "6971e3c5c0f824044c8f1dda3c6b11ed",
  "walletId": "6971e4fffc36aae70c8fa39b407bee04",
  "walletType": "hot",
  "withdrawalAddress": "0xc125b1c6d306a1d800cb81f3959556d4ada81f3a",
  "coin": "hypeevm",
  "status": "NEW",
  "statusModifiedDate": "2026-08-20T06:43:42.562468Z",
  "createdDate": "2026-08-20T06:43:42.562418Z",
  "delegations": [],
  "transactions": [],
  "totalStaked": "0",
  "amount": "20000000000000000",
  "validatorAddress": "0x1a53253c11881a8daa0dd41801af436530c14be8",
  "objectType": "BASE_WITH_VALIDATOR_ADDRESS"
}

If you stake again to a validator you already delegate to, BitGo reuses the existing delegation rather than creating a new one. Staking to a different validator creates an additional delegation.

Staking Transactions

Poll Get staking request to follow the request. HypeEVM staking runs three transactions in order:

Order transactionType On-chain call Purpose
1 authorize HYPE transfer to the bridge address Moves HYPE from the HypeEVM wallet to your L1 spot account.
2 authorize_validator CoreWriter staking deposit (action 4) Moves the HYPE from your spot account into your staking account.
3 delegate CoreWriter token delegate (action 3) Delegates the staking balance to the validator.

Only the first transaction starts as READY. The next two stay in WAITING until the preceding transaction confirms, so you sign and send them as they become ready.

{
  "id": "80b7a769-dda7-4cb9-a86d-571a17c1b161",
  "status": "READY",
  "transactions": [
    {
      "id": "ced0d4e1-d4c2-4d97-aa4f-18244e3b7d6a",
      "delegationId": "afd7d4be-d174-4c3b-a413-cea1fdc48e68",
      "transactionType": "authorize",
      "status": "READY",
      "amount": "20000000000000000",
      "txRequestId": "01a01de9-4cd0-7d4b-8407-d674e72d9448"
    },
    {
      "id": "bf147367-83e3-474d-926b-7bc83c9141dd",
      "delegationId": "afd7d4be-d174-4c3b-a413-cea1fdc48e68",
      "transactionType": "authorize_validator",
      "status": "WAITING",
      "amount": "20000000000000000"
    },
    {
      "id": "76c49185-3a8a-4676-95d2-68465055aa18",
      "delegationId": "afd7d4be-d174-4c3b-a413-cea1fdc48e68",
      "transactionType": "delegate",
      "status": "WAITING",
      "amount": "20000000000000000"
    }
  ]
}

After delegate confirms, the request status becomes CONFIRMED, the delegation becomes ACTIVE, and totalStaked reflects the delegated amount. There's no warmup period, so rewards start accruing right away.

To sign and send each ready transaction, and to approve requests when your wallet policy requires it, follow Stake Assets.

Cancel a Staking Request

You can cancel a staking request while it's still pending, which rejects the request and its remaining transactions:

export COIN="hypeevm"
export WALLET_ID="<YOUR_WALLET_ID>"
export STAKING_REQUEST_ID="<YOUR_STAKING_REQUEST_ID>"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"

curl -X DELETE \
  https://app.bitgo.com/api/staking/v1/$COIN/wallets/$WALLET_ID/requests/$STAKING_REQUEST_ID \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $ACCESS_TOKEN"

Unstake

Unstaking HYPE also takes three transactions and includes a 7-day cooldown while Hyperliquid processes the withdrawal queue.

Requirements

  • Delegation lock - You can't undelegate until 1 day after the delegation was created. Attempting it earlier fails with Delegation <id> is locked until <timestamp>.
  • delegationId is required - HypeEVM unstakes one delegation at a time. Omitting delegationId fails validation. Use List wallet delegations to find the delegation and check its unstakeable flag.
  • amount is required - Partial unstakes are supported. You can also start a new unstake while an earlier one is still in cooldown, as long as delegated - pendingUnstake - amount >= 0.

Create an Unstaking Request

Endpoint: Create staking request

export COIN="hypeevm"
export WALLET_ID="<YOUR_WALLET_ID>"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
export AMOUNT="<AMOUNT_IN_BASE_UNITS>"
export DELEGATION_ID="<YOUR_DELEGATION_ID>"

curl -X POST \
  https://app.bitgo.com/api/staking/v1/$COIN/wallets/$WALLET_ID/requests \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -d '{
    "type": "UNSTAKE",
    "amount": "'"$AMOUNT"'",
    "delegationId": "'"$DELEGATION_ID"'"
}'

Unstaking Transactions

Order transactionType On-chain call Purpose
1 undelegate CoreWriter token delegate, undelegate (action 3) Removes the delegation from the validator. Confirms immediately.
2 queue_withdrawals CoreWriter staking withdraw (action 5) Moves HYPE from the staking account toward spot, entering the 7-day queue.
3 withdraw_undelegated CoreWriter spot send to the bridge address (action 6) Sends the HYPE from your L1 spot account back to the HypeEVM wallet.

As with staking, only undelegate starts as READY. queue_withdrawals becomes ready once undelegate confirms, and withdraw_undelegated becomes ready 7 days after queue_withdrawals confirms. The delegation stays ACTIVE throughout the cooldown, with the amount tracked in pendingUnstake.

{
  "id": "26dc05a9-f21b-47ea-9af8-6b15a221c169",
  "type": "UNSTAKE",
  "coin": "hypeevm",
  "walletId": "6971e4fffc36aae70c8fa39b407bee04",
  "withdrawalAddress": "0xc125b1c6d306a1d800cb81f3959556d4ada81f3a",
  "status": "CONFIRMED",
  "createdDate": "2026-01-28T20:35:37.384079Z",
  "statusModifiedDate": "2026-02-20T00:30:02.711202Z",
  "amount": "10000000000000000",
  "transactions": [
    {
      "id": "f4ad883e-e31f-405d-aaf2-21a4365b7568",
      "txHash": "0xafee250a5f561c5aef72b5e7b912667e911a0966337acc3775d53589d052aa25",
      "delegationId": "afd7d4be-d174-4c3b-a413-cea1fdc48e68",
      "transactionType": "undelegate",
      "status": "CONFIRMED",
      "statusModifiedDate": "2026-01-29T06:18:02.439885Z",
      "amount": "10000000000000000"
    },
    {
      "id": "b24b4c79-4860-4c3e-979f-4e76e642e295",
      "txHash": "0x7fea93b7c93e6679ef9793526bad80bfdde3963b38894bd8bf57777b7d2fd04f",
      "delegationId": "afd7d4be-d174-4c3b-a413-cea1fdc48e68",
      "transactionType": "queue_withdrawals",
      "status": "CONFIRMED",
      "statusModifiedDate": "2026-01-30T09:57:03.095366Z",
      "amount": "10000000000000000"
    },
    {
      "id": "83ccce29-1d24-4b83-8bff-43499382334f",
      "txHash": "0xd8501af6b15e7f4d91ec952b58518d62cc994f5fd4580ae807f679533d09902d",
      "delegationId": "afd7d4be-d174-4c3b-a413-cea1fdc48e68",
      "transactionType": "withdraw_undelegated",
      "status": "CONFIRMED",
      "statusModifiedDate": "2026-02-20T00:30:02.710765Z",
      "amount": "10000000000000000"
    }
  ],
  "objectType": "UNSTAKE"
}

For the full signing and approval steps, see Unstake Assets.

Rewards

HYPE staking rewards auto-compound: Hyperliquid adds them to your delegated balance rather than paying them to your wallet, so there are no separate claim transactions. BitGo polls each active delegation and records the increase as a reward event on a 24-hour cycle. To read accrued rewards, call List wallet delegations and check the rewards and delegated fields, or see View Rewards and Delegations.

See Also