Notes / Audits and snapshots
Source: chains/hyperliquid/data/scored_targets_2026-09-19-hip4-outcome-deployers.md in the repository, rendered here without changes. Source file
Phase: scoring_build for a new target family (the ecosystem as a whole is already at deploy_testnet, see ../deploy/README.md; this pass does not change that). Read-only, mainnet-only: official HyperCore info API, HyperCore block-explorer endpoint and HyperEVM RPC (chain 999). No transaction, no key, no write. Every figure below was read on 2026-09-19 between 18:44 and 19:14 UTC (sections 1 to 5), or at the time stated where a section says it was re-read during the review (about 20:07 to 20:10 UTC), and will drift.
Everything in this file is a proposal: a new controller shape, a new sizing method and a promote/hold decision. It has now been through the adversarial review that the project's review rules ("Before committing") requires before committing a new controller shape: three independent review lenses, every finding re-verified by a separate agent told to try to refute it. 15 objections were confirmed, 2 were refuted; every confirmed one was applied (section 10 lists what changed). That review is the check on the scorer and the sizing code. It does not advance any phase and does not promote any venue: a phase transition is proposed through the maker-checker pipeline, never decided in this file.
| Venue | Deployer (k-of-n) | Weakest settlement key | adminKey / multisig / timelock / oracle / crossExposure | composite | Collateral locked | Face volume, last 24h | Decision |
|---|---|---|---|---|---|---|---|
out | 3-of-4 | bare key (2 sub-deployers) | 10 / 15 / 0 / 15 / 100 | 9 | $1.19M | $1.46M | HOLD (closest to the bar) |
txyz | 2-of-3 | bare key (2 sub-deployers) | 10 / 15 / 0 / 15 / 80 | 9 | $0.40M | $30K | HOLD |
skew | 3-of-5 | bare key (1 sub-deployer) | 10 / 15 / 0 / 15 / 100 | 9 | $8K | $6K | HOLD (near-dormant) |
No venue is promoted into score_all(). None reaches the written scouting rule of about $5M, nor the open interest at which the lightest HIP-3 dex was promoted (section 4). The scorer score_hip4_outcome_deployer(venue) is nevertheless written, tested and generic, exactly as score_hip3_dex(name) is for the six unpromoted HIP-3 dexes: promoting a venue later is a small change (section 6). The scores in this table are what the scorer produces today; they are not published in api/scores.json or pushed anywhere.
The single most likely point of disagreement is out (section 4.3). Against the one number this repo has written down for the ecosystem, the scouting selection rule of about $5M (section 4.1), it is at 24% ($1.19M; 57% on the deliberately generous upper bound). It is 15% of the lightest promoted HIP-3 dex by open interest. It would clear only a floor at about $600K or below, the size of the lightest target of any kind this ecosystem tracks (2.0x). I took the reading that follows the written number and flag the other one rather than pick a constant.
out is new)#{"type":"outcomeMeta"} returns deployers[] with each venue's deployer and subDeployers as [variant, [addresses]]. {"type":"userToMultiSigSigners"} gives each address's (threshold, authorizedUsers), null meaning a bare key.
| Venue | Deployer | Sub-deployers (each holds all 5 grants) |
|---|---|---|
out | 0x0c46eb73fae2816f219fcf11f50d6d3c59b5819e, 3-of-4 (0x000af433...fb07, 0x3d014abc...a1bd, 0x588deb78...c0e1, 0xcb3efe89...3329) | 0x6947a610ef50f8b5d4b59abcd94dd75aaaa645b9, 0xf1923927d7d2847191fb7ef8b1a16028aa5ae754, both bare keys |
txyz | 0x7aca09667816a4817b8bc697fb239ad42ff9f553, 2-of-3 (0x04777fee...c977, 0xdad9fea2...41db, 0xf35dde41...701f) | 0x77ef1bbc0467f0ddde42e5a0e9ccd80369c55cc8, 0x786864b48a102a047b9796c2541256e5f08bbe70, both bare keys |
skew | 0x08e9c89f46dccee91bdb85c6532eb93a4c335efe, 3-of-5 (0x0feed220...b5f093, 0x12c13eea...25ce, 0x28e88fc6...8782, 0x47663bf7...d8a3, 0x4d4509d7...6941) | 0x1c867861e0cffb0eba07d9d94f716189c130dac6, bare key |
All 8 addresses (3 deployers + 5 sub-deployers) return eth_getCode = 0x on HyperEVM, so METHODOLOGY.md 3.7 (CoreWriter identity) does not apply. Each deployer delegates about 500K HYPE (out 506,904; txyz 500,418; skew 502,357, about $46M each at $92.25): those are delegatorSummary reads, not a documented HIP-4 requirement (the official page states a staking requirement for active deployers and gives no HIP-4 amount). The only enforcement the page documents is that a market contradicting its template's semantic restriction is "malformed and slashable by validators". It does not say a wrong or early settlement is slashable, and it would not restrain the holder of a stolen sub-deployer key. The stake is therefore context: it is not credited as a deterrent and it is not a delay.
out's deployer is nested and cyclic. The table shows a 3-of-4 over four keys. One of those four, 0x588deb78...c0e1, is itself a 3-of-4 HyperCore multisig whose signers include the deployer 0x0c46eb73...819e and 0x226b997f...2ccb, which is in turn a 3-of-4 listing the deployer and 0x588deb78...c0e1 again (userToMultiSigSigners at three levels; 10 distinct addresses in all versus 7 at one level; txyz has 6 and skew 7, none nested). METHODOLOGY.md 4.2 rule 2 does not expand nested multisigs, so no score uses this, and this pass does not evaluate what threshold such a cycle effectively imposes or whether HyperCore honours a multisig as a signer of another. The scorer now discloses it (reads.nestedMultisigSigners and a NESTED MULTISIGS note) so the "3-of-4" label is never read as the whole story.
An outcome is not leveraged, so open interest has no direct analog. The analog of "money a compromised root key could redirect" is the collateral locked behind live outcomes: a share pays at most 1 USDC and 1 Yes + 1 No = 1 USDC (official HIP-4 overview), and settleOutcome/settleQuestion2 decide how that collateral is split.
Source: {"type":"spotMetaAndAssetCtxs"} returns a context for every outcome side, coin #<10*outcome+side> (official asset-ids page), with circulatingSupply and dayBaseVlm. totalSupply on these coins is a protocol constant (184467440737095.53125) and is not used.
Collateral is not "Yes supply" for questions, so it is derived from the full collateralization identity and checked on every read:
w, Yes_w + sum(No_j, j != w) equals the collateral. That is equivalent to Yes_i - No_i being the same number D for every member, with collateral = sum(No_i) + D (negate/merge move supply between sides without changing this).Worked example, question 198 (EPL winner, 7 outcomes, read 18:44 UTC): Yes supplies 30941, 39152, 35534, 34389, 37784, 31166, 31369; No supplies 0, 8211, 4593, 3448, 6843, 225, 428. Yes - No is 30941 for all seven; collateral = 23,748 + 30,941 = 54,689, and every one of the seven winner cases pays exactly 54,689. Summing Yes supplies would have said 240,335.
Result of the check on the live set (236 outcomes, 23 questions, all venues): 0 violations. That is the internal consistency test that stands in for a second source (HyperCore has no second RPC operator, METHODOLOGY.md section 2).
Volume: the Yes and No coins of one outcome report the same trades (per-venue dayBaseVlm sums are identical on both sides, and dayNtlVlm of the two sides adds up to the shares traded), so one side is used. Shares are the face-value volume in USDC.
Read from the deployer-actions page on 2026-09-19 (it is still labelled "Testnet-only", which live mainnet state contradicts).
settleFraction is a decimal in [0, 1]. A standalone outcome may settle to any fraction; an outcome that belongs to a question must settle to exactly 0 or 1, with exactly one winner (sequentially, or all at once with settleQuestion2). nameAndDescription and sideNames must match the outcome exactly and details must be empty. A sub-deployer can only settle its deployer's own outcomes and questions, so a compromised settle key reaches that venue's book and no other (which is what the sizing in section 3 measures).setOracle (HIP-3) is a continuous push that the protocol clamps (1% per update, 2.5 s apart, 10x from the day open, METHODOLOGY.md 4.4). A settlement is a one-shot, unclamped decision inside the bounds above. The analogy "the settle value is caller-supplied, like a setOracle push" used in the first version of this note is therefore only partial, and the wording is corrected everywhere it appeared. Section 8 records what the chain shows on top of the docs.registerStandaloneOutcomeFromTemplate and registerQuestionFromTemplate set deployerFeeScale in [0, 10] on the new market (users then pay the base fee times scale + max(scale, 1), up to 20x, of which up to 10x goes to the deployer; the scale is visible per market in outcomeMeta). registerAndAssociateNamedOutcomeFromTemplate adds an outcome to a LIVE question and credits the holders of the question's fallback-YES token with an equal balance of the new outcome's YES ("so existing 'other' positions keep their meaning"). None of them is documented to decide who receives already-locked collateral. They are left out of the root set by analogy with HIP-3, where score_hip3_dex likewise leaves its non-halt sub-deployer variants (registerAsset, setDeployerFees, ...) out of the set. That is a choice, not a finding that they are harmless: the association mechanism is designed to be neutral for existing positions, which this pass did not verify beyond the docs. Live, this changes nothing (every sub-deployer holds all five grants).Read live with scoring_build_2026_09_19_hip4.py size (collateral is exact under the identity above; both sides is a deliberately generous upper bound that counts every outstanding Yes and No share as 1 USDC).
| Venue | Live outcomes | With supply | Traded in 24h | Collateral locked | Both-sides upper bound | Face volume 24h |
|---|---|---|---|---|---|---|
out | 99 (16 questions) | 95 | 73 | $1,190,351 | $2,837,931 | $1,458,571 |
txyz | 77 (6 questions) | 60 | 41 | $397,475 | $795,916 | $30,446 |
skew | 52 (0 questions) | 18 | 8 | $7,945 | $15,890 | $6,230 |
| protocol-run recurring (no venue) | 8 (1 question) | 7 | 7 | $105,275 | $210,550 | $84,979 |
(Snapshot of 19:10:47 UTC. fullyVerified was true for every row.)
Stability over the session. Three full snapshots between 18:44 and 19:11 UTC: out $1,188,668 / $1,189,155 / $1,190,351; txyz $396,563 / $396,641 / $397,475; skew $8,171 / $8,171 / $7,945. The counts of live outcomes did not move (99 / 77 / 52). This shows no noise at the scale of the decision. It does not show what happens over days.
Re-read during the review, 20:07 UTC. Collateral (exact identity) / both-sides upper bound / face volume 24h: out $1,173,721 / $2,803,105 / $1,390,104 (99 live outcomes); txyz $400,181 / $801,328 / $33,111 (77); skew $7,913 / $15,826 / $6,271 (52). fullyVerified true for every row, no unverified group, 0 outcome without market data. Same order of magnitude as the 19:10 snapshot; nothing crosses any threshold discussed below.
Sustained activity (size --history; face volume per UTC day of the venue's currently live outcomes, so a lower bound: outcomes that already settled cannot be listed):
| Day (UTC) | out | txyz | skew |
|---|---|---|---|
| 09-12 | 728,252 | 6,726 | |
| 09-13 | 428,872 | 9,120 | |
| 09-14 | 670,620 | 24,772 | |
| 09-15 | 1,078,497 | 20,775 | |
| 09-16 | 1,399,676 | 21,978 | |
| 09-17 | 799,582 | 10,176 | 200 |
| 09-18 | 1,447,460 | 321,674 | 5,337 |
| 09-19 (to 19:10) | 1,122,491 | 21,021 | 1,289 |
out trades every day at $0.4M to $1.4M. txyz is $7K to $25K a day except one $322K day. skew only has data for 3 days (its live markets are new).
Where out's collateral sits (read about 19:20 UTC, total $1,190,484). $904,515 (76%) is in 9 long-dated standalone BTC/HYPE markets that expire 2026-10-01 (largest: HYPE touch $100, $162,765; BTC touch $100,000, $135,504; BTC binary $100,000, $117,041). Sports and policy questions hold $230,504 (tournament winners $154,667, match results $70,653, a policy-rate question $5,184) and $55,465 is short-dated standalone markets. The 9 long-dated markets settle in 12 days; whether the venue lists a comparable book afterwards is not knowable from a snapshot. The venue is also at its structural cap: outcomeDeployerLimits reports 1 active slot remaining (99 live), so the cap is 100 active outcomes per deployer (txyz 23 remaining with 77 live, skew 48 remaining with 52 live: also 100). The daily allowance is at least 500 new outcomes (txyz, which deployed none today, reads 500 remaining).
A caution that applies to any supply-based figure: minted supply includes inventory a market maker holds on both sides, so it is not all directional user exposure. The same caveat applies to HIP-3 open interest.
The first version of this section said that no number had ever been written down for the bar. That was wrong (adversarial review, significance lens, finding F1). Three things are on record:
scouted_targets_2026-09-17-run2.md, the run that produced this ecosystem's tracked HyperCore targets, states its selection rule as "DefiLlama TVL or HyperCore open interest above about $5M", plus an authority address from a primary source and the full authority chain read on chain. It is a scouting selection rule, not a promotion rule written into scorers.py (which states its promotion criterion only in words: "promote by real usage, not listed-market count"), but it is the only number the repo has written for this ecosystem.| HIP-3 dex | Open interest | Net deposit | Decision then |
|---|---|---|---|
| xyz | $3,750,722,006 | $1,063,261,416 | promoted (first target) |
| io | $56,325,711 | $39,888,740 | promoted |
| para | $16,386,484 | $10,740,744 | promoted |
| mkts | $7,696,651 | $5,193,299 | promoted (lowest promoted dex) |
| hyna | $0 | $244,177 | not promoted, dormant |
| cash | $0 | $97,402 | not promoted, dormant |
| km | $0 | $23,628 | not promoted, dormant |
| vntl | $0 | $7,042 | not promoted, dormant |
| flx | $0 | $5,648 | not promoted, dormant |
| abcd | $0 | $0 | not promoted, dormant |
mkts needs a date on its number. When it was promoted on 2026-09-17 its open interest was recorded as "about $6.4M" in the scouting note and "about $6.7M" in the scorers.py docstring (two readings the same day); $7.7M is today's re-read, not its open interest at promotion. So the promoted set sits at about $6.4M to $7.7M for its lightest member, just above the written $5M rule, and the dormant dexes at $0.
data/rotation_audit_2026-09-19-robinhood-chain-index14.md) leaves leads unpursued when they are under "the ~$600k floor of the smallest prior addition" (a TVL-based practice for that chain, not a rule for this one). Other HyperCore-native targets are far heavier (HLP $187M, Unit UBTC/UETH/USOL $552M / $157M / $40M outstanding).HIP-4 has no net-deposit figure (collateral only exists as outstanding shares), so the like-for-like comparison is open interest, i.e. outstanding positions.
| Venue | Collateral vs written $5M rule | Both-sides upper bound vs $5M | Collateral vs mkts open interest ($7.70M) | Collateral vs Ventuals ($583K) |
|---|---|---|---|---|
out | 24% | 57% | 15% (37% on the upper bound) | 2.0x |
txyz | 8% | 16% | 5% (10%) | 0.68x (1.4x on the upper bound) |
skew | 0.16% | 0.32% | 0.1% (0.2%) | 0.01x |
Rule applied: promote only what clears the bar, and the bar the repo has written is about $5M of TVL or open interest, consistent with the lightest promoted dex. All three venues are below it, on the exact measure and on the most generous one (out's upper bound is $2.84M). The decision therefore no longer rests on a gap the project "never ruled on"; it rests on a written number. What stays a judgment call: that number was written for TVL and open interest, and HIP-4 collateral is an analog of open interest (section 2.2), not the same quantity, so a reviewer can still argue for an outcome-specific floor.
I did not choose one. Picking, say, $1M would be exactly the uncalibrated constant the project's "don't guess a number" rule forbids.
If the reviewers or the maintainer hold that the floor is the lightest tracked target of any kind (Ventuals, about $583K, close to the Robinhood practice of about $600K) rather than the written $5M, then out clears ($1.19M, 2.0x) and txyz does not on exact collateral (0.68x; it would on the both-sides upper bound). skew fails under every reading: $8K of collateral, 8 of 52 markets traded in 24h, comparable in kind to flx's "near-zero".
Why I did not take that reading: it would override a written number with the precedent of a different product family. Ventuals was promoted as a HyperEVM product found by chasing a deployer's bytecode, with verified source, not through the open-interest bar; the Robinhood floor is TVL on another chain. out is clearly not dormant ($1.46M a day, 73 of 99 markets traded), so this is a calibration question, not a doubt about the venue being real.
Re-open triggers, all checkable with the same command: out collateral sustained above the heaviest number a reviewer accepts as the floor; or a maintainer-set floor for outcome venues; or the 2026-10-01 markets being re-listed at a similar size.