What is HyperEVM? How it connects to HyperCore
16 min read
By the Totalis team. We build the combo platform for prediction markets on Hyperliquid.
HyperEVM is the Ethereum-compatible smart contract environment of the
Hyperliquid blockchain. It runs on chain ID 999, uses HYPE as its gas token,
answers JSON-RPC at https://rpc.hyperliquid.xyz/evm, and shows up in
explorers such as hyperevmscan.io. HyperEVM is not a separate chain: it is
secured by the same HyperBFT consensus as HyperCore, Hyperliquid's native
trading engine for order books, margin, staking and spot balances. Contracts
on HyperEVM read HyperCore through read precompiles, write to it through the
CoreWriter system contract at 0x3333333333333333333333333333333333333333,
and move tokens to and from it through system addresses rather than a
third-party bridge.
Contents
This guide is for builders, and for traders who keep seeing "Transfer to/from EVM" in the Hyperliquid app. It answers what HyperEVM is first, then how it differs from HyperCore and how the two connect. Every address, chain ID and action name below is copied from Hyperliquid's or Circle's documentation as of 2 November 2026. For the whole chain, start with how Hyperliquid works.
What is HyperEVM?#
HyperEVM is the part of Hyperliquid where anyone can deploy Solidity smart contracts with standard Ethereum tools. Its blocks are built as part of Hyperliquid's own execution and, per Hyperliquid's HyperEVM developer page, inherit "all security from HyperBFT consensus". What makes it different from other EVM chains is direct access to HyperCore: a contract can read HyperCore's order books and balances and send it orders, without an oracle or a bridge.
| HyperEVM mainnet | HyperEVM testnet | |
|---|---|---|
| Chain ID | 999 | 998 |
| Public RPC | https://rpc.hyperliquid.xyz/evm | https://rpc.hyperliquid-testnet.xyz/evm |
| Gas token | HYPE, 18 decimals | Testnet HYPE |
| Explorers | hyperevmscan.io, hyperscan.com | Testnet explorers vary |
| EVM version | Cancun hardfork, without blobs | Same |
| Fee market | EIP-1559; base fee and priority fee both burned | Same |
| Blocks | Small blocks every 1 second (3M gas), big blocks every 1 minute (30M gas) | Same design |
The chain IDs, RPC URLs, EVM version and burn rules come from the HyperEVM developer page. The explorers and wallet settings come from Hyperliquid's onboarding guide to the HyperEVM: add a custom network named Hyperliquid with chain ID 999, the RPC above and currency symbol HYPE, or add it from Chainlist. Hyperliquid runs no official HyperEVM frontend; you use HyperEVM through wallets and third-party apps.
To pay gas, buy HYPE on HyperCore and move it to HyperEVM, or bridge it in. The onboarding guide lists third-party bridges into HyperEVM from other chains, including Stargate, deBridge, Gas.zip and Jumper. For USDC, Circle's CCTP route and the deposit options are in our guide on how to deposit and withdraw on Hyperliquid. The "HyperEVM bridge" between HyperCore and HyperEVM is a different thing, covered in the transfers section below.
Is HyperEVM the same as Hyperliquid?#
HyperEVM is one part of Hyperliquid, not a separate network. The HyperEVM overview says HyperEVM "is not a separate chain, but rather, secured by the same HyperBFT consensus as HyperCore." Hyperliquid produces L1 blocks through HyperBFT, and some of those L1 blocks also produce a HyperEVM block. Wallets treat chain 999 like any network, but there is no second validator set and no external bridge between HyperEVM and HyperCore.
Inside an L1 block that produces a HyperEVM block, Hyperliquid's interaction timings page fixes the order:
- The L1 block is built.
- The HyperEVM block is built.
- HyperEVM to HyperCore transfers are processed.
- CoreWriter actions are processed.
| Interaction | When it lands |
|---|---|
| HyperEVM to HyperCore transfer | Same L1 block, right after the HyperEVM block is built |
| HyperCore to HyperEVM transfer | Queued until the next HyperEVM block |
| CoreWriter action (most) | Same L1 block, after transfers |
| CoreWriter order or vault transfer | Delayed onchain for a few seconds, then executed |
| Read precompile | Returns HyperCore state as of when the HyperEVM block is built |
One rule in that page catches builders: the account sending a CoreWriter action must already exist on HyperCore before the HyperEVM block is built. Funding the account with a HyperEVM to HyperCore transfer in the same block is not enough, and the CoreWriter action is rejected.
What is the difference between HyperCore and HyperEVM?#
HyperCore runs a fixed set of protocol actions very fast. HyperEVM runs any Solidity code, more slowly, and can call into HyperCore.
| HyperCore | HyperEVM | |
|---|---|---|
| What it is | Hyperliquid's native trading engine and state | A general-purpose EVM inside the same chain |
| Consensus | HyperBFT | Same HyperBFT, same validators |
| What runs there | Protocol actions only: orders, cancels, transfers, staking, vaults, HIP deploys | Any smart contract |
| How you talk to it | Signed actions sent to the Hyperliquid API, or through an app | JSON-RPC, with any EVM wallet |
| Speed | Median 0.2 s end-to-end latency, about 200,000 orders per second | Small blocks every 1 s, big blocks every 1 min |
| Costs | Trading fees per fill; no gas on trades; 1 USDC to activate a new account | Gas in HYPE |
| HYPE | Spot balance, staking balance | Native gas token |
| USDC | 8 decimals | 6 decimals (Circle's contract) |
| Order books | Native | Read through precompiles, write through CoreWriter |
| Typical uses | Perps, spot, outcome markets, staking, HLP | Lending, liquid staking, tokenized vaults, apps that settle on HyperCore results |
The speed and order book rows come from the HyperCore overview. The onboarding guide adds that trading on HyperCore costs no gas, while moving assets between the two sides costs gas in HYPE. Fees on the HyperCore side are in our guide to Hyperliquid fees.
How does HyperEVM's dual-block architecture work?#
HyperEVM splits its throughput between fast small blocks and slow big blocks. The dual-block architecture page sets small blocks at 1 second with a 3M gas limit and big blocks at 1 minute with a 30M gas limit. The two block types share one increasing sequence of EVM block numbers but draw from two separate onchain mempools.
| Small blocks | Big blocks | |
|---|---|---|
| Interval | 1 second | 1 minute |
| Gas limit | 3M | 30M |
| Gas price RPC | eth_gasPrice | eth_bigBlockGasPrice |
| Who uses them | Default for every address | Addresses that opted in |
To deploy a contract that does not fit in 3M gas, an address sends the HyperCore action {"type": "evmUserModify", "usingBigBlocks": true}. The flag lives on the HyperCore user, not on the transaction, so every later HyperEVM transaction from that address goes to big blocks until the flag is turned off again. Like any action, it needs an existing HyperCore account; receiving a HyperCore asset such as USDC creates one. The mempool also accepts only the next 8 nonces per address and prunes transactions older than 1 day.
The practical rule: turn big blocks on for the deploy, check eth_usingBigBlocks, and turn it off before sending ordinary transactions, or each one waits up to a minute.
How do smart contracts read HyperCore?#
A HyperEVM contract reads HyperCore state through read precompiles. The interacting with HyperCore page says they start at 0x0000000000000000000000000000000000000800 and cover perp positions, spot balances, vault equity, staking delegations, oracle prices and the L1 block number. Hyperliquid says the values match the latest HyperCore state at the time the HyperEVM block is built. The page's example reads a perp oracle price from 0x0000000000000000000000000000000000000807.
Four details matter in production:
- Gas. A precompile call costs
2000 + 65 * (input_len + output_len). - Errors burn gas. A call with an invalid asset or vault address returns an error and consumes all the gas passed into the precompile frame.
- Scaling. Divide perp prices by
10^(6 - szDecimals)and spot prices by10^(8 - base asset szDecimals). - No history. The JSON-RPC page says
eth_callsupports only the latest block on the default RPC, and that read precompile results are recorded only for calls actually made in each block. You cannot replay a precompile at an old block on the public RPC.
Precompiles are how a HyperEVM app settles on a HyperCore result without an oracle. Our own Combo settlement reads each HIP-4 outcome's native status, settled value and question identity through precompile 0x0814, so a Combo resolves on exactly the number Hyperliquid settled the single market on.
What is CoreWriter?#
CoreWriter is the system contract that lets HyperEVM send actions to HyperCore. It sits at 0x3333333333333333333333333333333333333333, burns about 25,000 gas before emitting a log, and a basic call uses about 47,000 gas in total, according to the interacting with HyperCore page. HyperCore reads the log and runs it as an action on behalf of the calling address.
The payload is raw bytes: byte 1 is the encoding version (only 1 is supported), bytes 2 to 4 are the action ID as a big-endian integer, and the rest is the ABI encoding of the action's fields. A selection of the action IDs listed on 2 November 2026:
| Action ID | Action | Fields |
|---|---|---|
| 1 | Limit order | (asset, isBuy, limitPx, sz, reduceOnly, encodedTif, cloid); prices and sizes are 10^8 times the human value; Tif 1 Alo, 2 Gtc, 3 Ioc |
| 2 | Vault transfer | (vault, isDeposit, usd) |
| 3 | Token delegate | (validator, wei, isUndelegate) |
| 6 | Spot send | (destination, token, wei) |
| 7 | USD class transfer | (ntl, toPerp) |
| 9 | Add API wallet | (API wallet address, API wallet name) |
| 12 | Approve builder fee | (maxFeeRate, builder address); maxFeeRate in decibps |
| 13 | Send asset | (destination, subAccount, source_dex, destination_dex, token, wei) |
| 15 | Borrow lend operation | (encodedOperation, token, wei); 0 Supply, 1 Withdraw |
| 16 | Set abstraction | (user, abstraction); 1 disabled, 2 unifiedAccount, 3 portfolioMargin |
| 17 | Outcome operation | (encodedOperation, question, outcome, wei); 0 SplitOutcome, 1 MergeOutcome, 2 MergeQuestion, 3 NegateOutcome |
Three behaviors follow from the docs and shape how apps use CoreWriter:
- It is not atomic. CoreWriter emits a log and HyperCore processes the action after the HyperEVM block. A HyperEVM transaction can therefore succeed while HyperCore later rejects the action, for example because the account did not exist yet. Check the HyperCore result, not the EVM receipt.
- Orders are slow on purpose. Order actions and vault transfers sent through CoreWriter are delayed onchain for a few seconds, so HyperEVM cannot be used to skip the HyperCore mempool. They appear twice in the L1 explorer: once when queued and once when executed. Latency-sensitive trading belongs on HyperCore directly, through API wallets.
- The account must be activated. Hyperliquid's activation gas fee page says unactivated accounts cannot send CoreWriter actions, and that contract deployers can send an activation transaction to the contract's address on HyperCore ahead of time.
One stale line is worth knowing about. As of 2 November 2026, the HyperEVM overview page still calls HyperEVM "alpha" and says write system contracts are not live on mainnet. The developer pages document CoreWriter in full, and Circle's USDC deposit-wallet contract on HyperEVM forwards deposits through CoreWriter, as its CoreDepositWallet source shows. Trust the developer pages.
How do you move assets between HyperCore and HyperEVM?#
Spot assets cross between HyperCore and HyperEVM through system addresses, not through an external bridge. Hyperliquid's HyperCore to HyperEVM transfers page defines the rules.
| Asset | HyperCore to HyperEVM | HyperEVM to HyperCore | System address |
|---|---|---|---|
| HYPE | Send HYPE to the system address | Send HYPE as transaction value to the system address | 0x2222222222222222222222222222222222222222 |
| Linked spot token | sendAsset to the token's system address | ERC-20 transfer to the token's system address | 0x20 followed by the token index, e.g. 0x20000000000000000000000000000000000000c8 for token 200 |
| USDC | sendAsset to 0x2000000000000000000000000000000000000000 | deposit, depositFor or depositWithAuth on Circle's CoreDepositWallet | See below |
On cost, a HyperCore to HyperEVM transfer costs 200,000 gas at the base gas price of the next HyperEVM block. A HyperEVM to HyperCore transfer costs about the same as an ordinary ERC-20 or HYPE transfer.
A token deployer links a HyperCore spot token to an ERC-20 in two steps: requestEvmContract on HyperCore, naming the token index, the contract address and evmExtraWeiDecimals (between -2 and 18), then finalizeEvmContract from the EVM deployer. The docs carry two warnings. HyperCore does not check that the linked contract is a valid ERC-20 or that the system address holds the supply, so verify the bytecode before sending size. And when the EVM token has extra decimals, any amount that is not a round number in those extra digits has its remainder burned (always less than one unit of the token's smallest HyperCore denomination).
Users do not need any of this. The app's "Transfer to/from EVM" button does the same thing, and the onboarding guide warns that 0x2222222222222222222222222222222222222222 works only for HYPE: other assets sent there are lost.
A transfer is its own transaction, so a later step failing does not undo it. In our own Combo flow, when an entry needs cash from HyperCore, the user signs a sendAsset that bridges the shortfall to their HyperEVM wallet, and we send it only after the maker confirms. If the trade then fails, the bridged USDC stays in the user's HyperEVM wallet, as our docs on what happens if an entry fails after its bridge describe. Read balances to find the cash; never infer it from a missing response.
USDC is a special case#
USDC does not cross like other linked tokens. Circle's CoreDepositWallet interface says that to move USDC from HyperEVM to HyperCore you must call deposit, depositFor or depositWithAuth on the CoreDepositWallet. deposit and depositFor pull the USDC with an allowance, so approve the CoreDepositWallet first; depositWithAuth needs no approval and takes a signed ERC-3009 receiveWithAuthorization instead. Sending USDC directly to the CoreDepositWallet address does not trigger a deposit, and the funds are permanently stuck. Circle's HyperCore contract addresses page lists the mainnet CoreDepositWallet on HyperEVM at 0x6B9E773128f453f5c2C60935Ee2DE2CBc5390A24. The CoreDepositWallet source describes the contract as specific to 6-decimal tokens on HyperEVM scaled to 8 decimals on HyperCore, and Hyperliquid's USDC page gives Circle's USDC contract on HyperEVM as 0xb88339cb7199b77e23db6e890353e22632ba630f.
The other direction is simpler. Our signed sendAsset bridge uses destination 0x2000000000000000000000000000000000000000, USDC's system address, which credits the signer's own HyperEVM address, as documented in our partner frontend signing reference.
The activation fee also behaves differently around USDC. Hyperliquid's docs charge 1 quote token on the first transaction that has a new account as its destination. Circle's CCTP on HyperCore page says that for deposits through the CoreDepositWallet the 1 USDC is earmarked and charged on the account's first outbound action instead. In the ledger of our own first exit to a new HyperCore account on mainnet on 13 October 2026, the 1 USDC appeared on the crediting transfer itself, next to an accountActivationGas entry recording the same charge: one fee, two ledger lines. Budget for 1 USDC either way. Because the charge lands on the user, our Combo fees and limits set a 2 USDC minimum for a first move to a HyperCore account that does not exist yet and ask the user to agree to the charge.
How do you index and query HyperEVM?#
HyperEVM's public RPC is built for wallets, not indexers. The JSON-RPC page lists the limits:
eth_call,eth_estimateGas,eth_getBalance,eth_getCode,eth_getStorageAtandeth_getTransactionCountsupport only the latest block.eth_getLogsallows up to 4 topics and up to 50 blocks per query.eth_maxPriorityFeePerGasalways returns zero, and the HyperEVM developer page says priority fees are burned to the zero address's balance rather than paid to validators.- Custom methods include
eth_bigBlockGasPrice,eth_usingBigBlocks, andeth_getSystemTxsByBlockHashandeth_getSystemTxsByBlockNumber, which return the system transactions that originate from HyperCore, such as transfer credits. - There is no websocket JSON-RPC on
rpc.hyperliquid.xyz/evm. - Hyperliquid's rate limits page caps that public RPC at 100 requests per minute per IP and points to other RPC providers for archive data. The HyperCore side has its own limits, covered in our Hyperliquid API guide.
For full history, the raw HyperEVM block data page points to a non-validating node, which writes blocks to ~/hl/data/evm_block_and_receipts, or to the requester-pays S3 bucket s3://hl-mainnet-evm-blocks/, stored as MessagePack compressed with LZ4. Error code 10055 marks errors at the HyperCore and HyperEVM boundary, such as nonce errors, insufficient funds or underpriced replacements. Wrapped HYPE is a canonical, immutable WETH-style contract that the wrapped HYPE page abbreviates as 0x555...5; the full address is 0x5555555555555555555555555555555555555555.
One reconciliation lesson from our own records: when USDC moved from HyperEVM to HyperCore in our mainnet exit on 13 October 2026, the HyperCore side showed a spotTransfer from the USDC system address, with no reference to the HyperEVM transaction hash. Match the two sides by address, amount and timing, not by hash.
Showing one balance across both sides needs in-flight accounting. HyperCore and HyperEVM are read separately, so while a move is in flight the same dollars can show up on both sides or on neither. Our app holds back the settled total until the move resolves, and converts between 8-decimal and 6-decimal USDC on every crossing.
What do HyperEVM vaults change?#
HyperEVM contracts can now run what HyperCore vaults used to. Hyperliquid's vaults page says builders can create and tokenize vaults on HyperEVM with fully customizable accounting, for example following ERC-4626, trading onchain through CoreWriter and keeping accounting onchain through precompiles. It calls this a strict improvement over the legacy HyperCore vaults from 2023, which do not support HIP-3 or spot trading. Our guide to Hyperliquid vaults and HLP covers both kinds.
How Totalis uses HyperCore and HyperEVM#
Totalis, which publishes this guide, uses each half for what it does best. A single HIP-4 market trades on the HyperCore order book, with our Hyperliquid builder fee attached; the builder codes guide explains how that works. A Combo joins 2 to 5 HIP-4 outcomes into one position with one payout, quoted by market makers through an RFQ, and held in our vault on HyperEVM until Hyperliquid's results settle it. The order book needs HyperCore's speed. The Combo needs custom accounting that HyperCore's fixed action set cannot express. Our guide to HIP-4 outcome markets covers the markets underneath.
In the Totalis app the two halves show as one Cash number, made of spendable HyperCore cash, HyperEVM wallet USDC and free vault cash. Our SDK funds an entry from free vault cash first, then HyperEVM wallet USDC, then HyperCore cash, and leaves 0.05 USDC on HyperCore for the bridge's gas. The 0.05 USDC is our buffer, not a Hyperliquid fee.
Where does Elysium fit?#
Elysium is not part of Hyperliquid. It is a separate layer 2 announced by Kinetiq in an August 2026 post, with HYPE as its gas token. The Elysium docs at elysium.kinetiq.xyz, last updated 20 October 2026, describe an Arbitrum Orbit chain that settles to HyperEVM, aimed at workloads that do not fit HyperEVM's 3M gas small blocks, with optimistic withdrawals back to HyperEVM that wait out a challenge period. As of those docs it was pre-launch on mainnet. Elysium is a separate rollup settled on HyperEVM, not an execution environment HyperBFT runs directly. Its security and data availability page describes forced inclusion through HyperEVM and data availability that can fall back to posting on HyperEVM, on top of its own single sequencer, permissioned validators at launch, data committee and bridges, so assets on it carry those extra assumptions.
Frequently asked questions#
What is the HyperEVM explorer?#
Hyperliquid's onboarding guide lists hyperevmscan.io and hyperscan.com as HyperEVM block explorers. They show HyperEVM transactions only. HyperCore activity, such as orders and spot transfers, appears in the Hyperliquid app's own L1 explorer.
Is there a HyperEVM testnet?#
Yes. HyperEVM testnet uses chain ID 998 and https://rpc.hyperliquid-testnet.xyz/evm. Hyperliquid's testnet faucet gives 1,000 mock USDC, but only to addresses that have deposited on mainnet with the same address.
Can I send HYPE on HyperEVM to a centralized exchange?#
Only if the exchange supports HyperEVM deposits. The Hyperliquid onboarding guide notes that some exchanges accept HYPE from HyperCore spot balances but not from HyperEVM, and recommends a small test transaction first.
This article is for informational purposes only and is not financial advice. Prediction market positions can lose their entire value. Availability of markets and features depends on your jurisdiction and each platform’s terms.