Where the chain and the docs disagree
Every place where measured behaviour on Hyperliquid contradicts the official docs: what the docs say, what was measured, the sample and the covering page.
The docs lag the chain, and following a stale sentence can fail silently: a transaction that succeeds and does nothing, a timing off by a factor of ten, a field scaled differently. Where they disagree, on-chain measurement wins, then the official docs, then SDK code. Each canonical page flags its own cases; this page lists them all, with the sample size wherever there was one.
Most measurements come from three September 2026 research tracks, settled by transactions and live API responses (borrow-rate options, composable credit, collateral underwriting). The rest come from auditing SDK wire formats against the live exchange, and from live info API reads.
The docs say one thing, the chain does another
Section titled “The docs say one thing, the chain does another”| Topic | The docs say | Measured | Evidence | Covered on |
|---|---|---|---|---|
| API wallets per account | 1 unnamed and up to 3 named, plus 2 named per sub-account (the sub-accounts page: 3, rising by 2 per sub-account) | 14 named API wallets, all unexpired, on an account with 1 sub-account, where the docs allow 5; about 9.3M USDC of cumulative volume | Live extraAgents and subAccounts reads, 2026-11-03 |
API wallets |
| CoreWriter delay | Order actions and vault transfers sent from CoreWriter “are delayed onchain for a few seconds” | Orders are accepted 0.35 to 0.51 s after the EVM block. Only vault transfers are delayed, by 4.05 to 4.10 s | 5,455 mainnet CoreWriter actions over 73,914 blocks; 52 orders matched by client order id across 15 accounts and 14 markets; 6 vault transfers | execution order |
| CoreWriter supply for contracts | The portfolio margin page: “In a future upgrade, CoreWriter will expose the same supply action for smart contracts.” The CoreWriter table on another page already lists action 15 | Live. A testnet contract supplied 500 USDC and held 500.00000051 one block later. Mainnet decodes action 15 into a typed lending action and enforces lending rules on it | Testnet probe contract; two mainnet refusals carrying the CoreWriter-only action shape | composable credit |
| CoreWriter action 14 | The action table runs from 13 to 15 | Action 14 exists on mainnet; its semantics are unknown | 25 emissions in 3,000,001 mainnet blocks | CoreWriter action reference |
| HIP-4 status | The HIP-4 deployer actions page is headed “Testnet-only” | HIP-4 runs on mainnet | 228 active outcomes, 21 questions and 3 venues on mainnet on 2026-09-20; 331 outcomes, 33 questions and 4 deployer venues on 2026-11-03; the page is still headed “Testnet-only” in the live docs on 2026-11-03 | HIP-4 |
| Outcome fees | The HIP-4 page: “Fees are currently zero for outcome markets for initial testing.” | Opening is free and closing is charged, at spot rates x (scale + max(scale, 1)): every buy was billed 0 and every sell was charged. The docs’ own fees page agrees: fees on closing or settling, never on opening |
7,256 mainnet fills, 2026-09-12 | fees |
| Aligned quote token actions | enableAlignedQuoteToken and disableAlignedQuoteToken are documented spotDeploy variants |
Both are rejected at the parse stage on mainnet and testnet | SDK audit using a dummy signature, which the exchange checks only after parsing | quote assets |
| Multi-outcome markets | The HIP-4 page: multi-outcome markets “will be supported but are not part of the initial mainnet release” | Questions run on mainnet | 21 questions across 3 venues on 2026-09-20; 33 questions on 2026-11-03 | what is an outcome market |
| HyperEVM write and read on mainnet | The HyperEVM overview: write system contracts “are not live on mainnet yet”; the developer page introduces the read precompiles as a testnet EVM feature | Both are live on mainnet | 273,437 CoreWriter actions with known ids in 3,000,001 mainnet blocks; precompiles 0x800 to 0x814 assigned on both networks, 2026-08-17 |
HyperEVM overview |
| Assistance Fund supply | HYPE in the fund is burned, “removing the tokens permanently from the circulating and total supply” | tokenDetails for HYPE listed the fund’s about 48.4M HYPE as non-circulating but still inside a total supply of about 998.8M; only about 1.2M HYPE had left total supply |
One live read, 2026-11-03: the API’s accounting, not a traced transfer | HYPE |
outcomeMetaUpdates frame |
Typed as a one-element tuple, [WsOutcomeMetaUpdate] |
Arrives as an array | SDK wire audit | WebSocket |
| Gossip priority auctions | “2 independent Dutch auctions synced to the same 3 minute schedule” | gossipPriorityAuctionStatus returned 3 slots on one 180-second schedule: slots 0 and 1 won, slot 2 unwon at the 0.1 HYPE minimum |
2 live reads on mainnet, 2026-11-03 | priority fees |
The docs are silent, and not knowing loses money
Section titled “The docs are silent, and not knowing loses money”Here the docs say nothing, or cover one direction only.
| Topic | The docs say | Measured | Evidence | Covered on |
|---|---|---|---|---|
| CoreWriter failures | CoreWriter burns about 25,000 gas “before emitting a log to be processed by HyperCore as an action”; nothing on failure | The EVM transaction succeeds whether or not HyperCore executes. Four refusals seen with EVM status 1: Invalid number of decimals, Insufficient USDC or HYPE balance for token transfer gas, Borrow/Lend error: Insufficient spot balance for operation, Manual borrow/lend not allowed with portfolio margin |
Testnet transactions and mainnet refusals, each read from HyperCore’s action log | footguns |
| Rounding, HyperCore to HyperEVM | A non-round amount is “burned (guaranteed to be <1 Wei)”, which describes the HyperEVM to HyperCore direction with extra EVM decimals | In the other direction, with USDC’s evmExtraWeiDecimals of -2, an amount that is not a multiple of 100 wei is rejected, not burned |
5 of 5 sends followed the rule: 2 non-round refused, 3 round accepted | moving assets |
| Bridge gas | A transfer from HyperCore to the HyperEVM “costs 200k gas at the base gas price of the next HyperEVM block” | The gas is charged from the sender’s HyperCore balance, in HYPE if that covers it, else from the token sent, so without spare HyperCore HYPE the whole balance cannot be sent | On testnet, sending 100 of 100 USDC refused; 99 sent for 0.000588 USDC | moving assets |
| Action 17 units | wei “must be a multiple of size”; no scale given |
1e8 per contract | wei = 100000000 minted exactly one Long and one Short and moved 1 USDC, testnet |
CoreWriter |
| Precompile history | Values match the latest HyperCore state when the EVM block is built; independent archive nodes serve historical state, and read precompiles are recorded only for the calls actually made | The precompiles fail at any explicit block number, including the current head, even on an archive node that serves historical eth_getCode |
PrecompileOutOfGas at head, head minus 1, 20 and 10,000 |
precompiles |
0x811 with no record |
Nothing | Reverts rather than returning zeros, even for a HyperCore user holding spot | Mainnet and testnet, including an account holding 31,989 USDC of spot | precompiles |
| USDC on the HyperEVM | The USDC page gives 0xb88339cb7199b77e23db6e890353e22632ba630f as the USDC contract on the HyperEVM |
HyperCore USDC (token 0) is linked to a different contract, 0x6b9e773128f453f5c2c60935ee2de2cbc5390a24. The docs’ USDC is not linked, so moving between the two is a swap |
spotMeta and the tokenInfo precompile |
moving assets |
| Staking links and deployers | Staking links attribute a staking account’s HYPE to a trading account’s fee tier; nothing on deployers | A deployer cannot have one. Activation is refused with Deployer cannot have staking link |
Testnet probe | collateral underwriting |
| Unstaking on testnet | A 7-day unstaking queue | Exactly 7 days on mainnet; about 5 minutes on testnet | One mainnet exit finalised 7 days and 1 second after it started; one testnet withdrawal finalised in 5 minutes | staking |
| Market order TIF | The order schema lists only Alo, Ioc and Gtc |
FrontendMarket is accepted on mainnet; the SDKs and the app send it for market orders, and the info endpoint’s own examples return it |
SDK wire usage; the docs’ own orderStatus example |
order types |
| Undocumented surface | Nothing | A September 2026 sweep found about 18 undocumented exchange actions and 19 info requests working on mainnet; the docs have since added cDeposit2, trailingStop and userStarState, so the count may be lower now. Two appear nowhere in the live docs on 2026-11-03: the HTTP borrowLend action and the userToMultiSigSigners info request |
SDK audit against both networks; live docs search | exchange action reference |
Wrong once, corrected since
Section titled “Wrong once, corrected since”These are now right in the current docs; they stay listed for checking older notes and SDKs.
| Topic | What was reported | The docs now | Covered on |
|---|---|---|---|
| Negate key | Earlier documentation and SDK examples used negateQuestion; the wire key is negateOutcome, checked against Hyperliquid’s own interface |
The exchange endpoint page in the current mirror documents negateOutcome |
split, merge, negate |
| HIP-4 deploy action | Deployment used {"type":"spotDeploy","outcome":{...}}; that shape is now rejected |
The current mirror documents a top-level outcomeDeploy with venue and operation |
outcome templates |
| HYPE lending supply cap | The docs gave a 10M HYPE global supply cap; on 2026-09-20 a live reserve read showed 10,233,170.44 HYPE supplied | A 25M global and 1M per-user cap (2026-11-03), so that reading sits inside it | borrowing and lending |
Older SDKs still carry superseded forms: one sent outcomeDeploy without the venue and operation envelope, and mainnet answered Failed to deserialize the JSON body into the target type.
The docs contradict themselves
Section titled “The docs contradict themselves”Here no measurement decides; two passages of the docs disagree.
| Topic | One passage | The other | Covered on |
|---|---|---|---|
hip3LiquidatorTransfer signing |
The exchange endpoint shows it as an L1 action: no chain fields, expiresAfter accepted, and SDK code signs it so |
A comment on the HIP-3 deployer actions page calls it user-signed | exchange action reference |
| Interest component | “0.01% every 8 hours, which is 0.00125% every hour, or 11.6% APR” | The hourly rate x 24 x 365 is 10.95 per cent; 11.6 per cent is 0.01 per cent per 8 hours compounded 1,095 times a year | funding |
| Recurring binary settlement | Contract specifications: Yes if the interpolated mark is at or above the target | The spot info endpoint page: Yes if the mark at expiry is “above” targetPrice |
market shapes |
| HIP-1 token names | name has “no uniqueness constraints” |
“The ticker is a unique onchain identifier”, on the same page | native tokens |
| Oracle inputs | Robust price indices: the oracle “does not depend on hyperliquid’s market data at all” | The oracle page includes Hyperliquid spot at weight 1, left out only where main liquidity is elsewhere, such as BTC | oracles |
| Portfolio margin eligibility | The trading page: account value below $25M | The FAQ: account value below $5,000,000 | portfolio margin |
| Fees in closed PnL | The entry price page puts the fee in closed PnL | The info endpoint’s example opening fill shows closedPnl "0.0" beside a non-zero fee |
entry price and PnL |
Not yet shown to contradict the docs
Section titled “Not yet shown to contradict the docs”| Topic | What is known |
|---|---|
| Allowlisted HIP-3 dexes | The docs, testnet only: isStar: true at creation and per-user {"proxy": [user, op]} operations. Testnet transactions replayed in July 2026, before the docs covered it, used operation: "activate" on a live dex and a batch modifyApprovals; which shapes testnet accepts now is unresolved |
| Action 17 timing on mainnet | Split and merge landed in the transaction’s own block on testnet; the mainnet timing window had no action 17 traffic, so mainnet is inferred, not measured |
| Borrow and repay through CoreWriter | The docs list action 15 as supply and withdraw; one tool routes ops 2 and 3 as borrow and repay; measurements cover supply and withdraw only |
| HIP-4 slashing for late settlement | Specified when HIP-4 was announced, disclaimed for the testnet release, not observed on mainnet |
For the timing and failure findings in context, see What one HyperEVM transaction can and cannot do. Every silent failure, with its fix, is in Footguns, measured.