Becoming an outcome deployer (HIP-4)
An outcome deployer is a Standard-mode account with 500k HYPE in its own staking account that has irreversibly claimed a venue with activateOutcomeDeployer.
Activation is a one-way door. It claims a venue name that is never released and binds the stake for at least 183 days, and only a deactivation, itself permanent, ends it. So get account mode, custody and stake right first. Standard: HIP-4.
7 steps to a live venue
Section titled “7 steps to a live venue”-
Fund the master wallet. Until it exists on HyperCore, every action fails with
User or API Wallet ... does not existorMust deposit before performing actions, before any stake check. -
Set Standard mode (account modes), as the docs require: Manual in the app,
disabledinuserAbstractionanduserSetAbstraction,iviaagentSetAbstraction. -
Optionally go multi-sig, before the stake arrives. The quorum then signs everything, withdrawals and activation included, and CoreWriter stops working (multi-sig accounts).
-
Stake in the deployer’s own staking account; undelegated HYPE counts (testnet: 99.5 refused with
Insufficient stake, 100.5 all undelegated accepted). It stacks with any HIP-3 requirement. -
Activate, irreversibly:
{ "type": "activateOutcomeDeployer", "activate": { "venueName": "ab" } }Master key or quorum only: an agent-signed activation was refused, naming the agent’s address. Browser wallets refuse the chain-1337 L1 domain, so add a placeholder chain-1337 network or sign from a raw key.
venueNameis camelCase;venue_namesigned a different action and recovered a different address. -
Delegate. A single-key deployer approves an API wallet to register and settle; a multi-sig grants a sub-deployer from the quorum (measured), which then acts with one signature.
-
Deploy from templates.
Venue names are global
Section titled “Venue names are global”Venue names follow HIP-3 dex name rules and are unique across all venues, deactivated ones included. A venue cannot match a perp dex name or spot, and no later dex can claim it. Every outcomeDeploy carries it at top level, keys in exactly this order:
{ "type": "outcomeDeploy", "venue": "ab", "operation": { "<variant>": { } } }Rejected: the older {"type": "spotDeploy", "outcome": {...}}, and outcomeDeploy with the variant outside operation.
Sub-deployers
Section titled “Sub-deployers”{ "type": "outcomeDeploy", "venue": "ab", "operation": { "setSubDeployers": [ { "variant": "registerStandaloneOutcomeFromTemplate", "user": "0x...", "allowed": true }, { "variant": "settleOutcome", "user": "0x...", "allowed": true } ] } }variant is registerStandaloneOutcomeFromTemplate, registerQuestionFromTemplate, registerAndAssociateNamedOutcomeFromTemplate, settleOutcome or settleQuestion (which authorises settleQuestion2).
A sub-deployer acts under the deployer’s venue: its registrations count toward the deployer’s limits, and it settles only the deployer’s outcomes. Grants read back in outcomeMeta as subDeployers, a list of [variant, [addresses]]; revoking one is a deployer action.
Limits per venue
Section titled “Limits per venue”| Mainnet | Testnet | |
|---|---|---|
| Stake | 500k HYPE | 100 HYPE |
| Active outcomes | 100 in deployer records; one deployer has 197 unsettled outcomes listed, so the live cap is higher or set per deployer (open) | 10 |
| New outcomes per day | 500 | 50 |
| Minimum stake period | 183 days | 183 days |
| Deployment gas | none | none |
Only the chain knows remaining capacity:
{ "type": "outcomeDeployerLimits", "venue": "ab" }{ "nDailyOutcomesRemaining": 50, "nActiveOutcomesRemaining": 14 }- Settling an outcome frees an active slot. At the cap, nothing more lists until one settles. Deployer records put the mainnet cap at 100, but one deployer has 197 unsettled outcomes listed, so the live cap is open.
registerAndAssociateNamedOutcomeFromTemplatecounts toward both caps.- A rejected deploy still uses one of the day’s slots.
- Per the docs a question of N outcomes registers N + 1, all against the active cap; unmeasured, and the fallback’s daily-cap treatment is undocumented.
Deactivation
Section titled “Deactivation”{ "type": "activateOutcomeDeployer", "deactivate": null }Deactivation needs 183 days elapsed and no active outcomes. It is permanent: the account can never reactivate, and its venue name stays reserved.
The numbers
Section titled “The numbers”| Parameter | Value |
|---|---|
| Venue name | 2 to 4 lowercase ASCII letters, never released |
| Mainnet stake, limits | 500k HYPE; 100 active in deployer records (197 seen for one deployer); 500 per day; 183 days |
| Testnet stake, limits | 100 HYPE; 10 active; 50 per day; 183 days |
| Questions | at most 100 question outcomes each |
| Unstaking queue | 7 days on mainnet; about 5 minutes on testnet |
| Signing domain for deployer actions | Exchange, chainId 1337, source “a” mainnet, “b” testnet |
Deploying from code
Section titled “Deploying from code”- Deploys return no outcome id. Find it in
outcomeMeta(entriestemplate:<id>, sortedkey:valuedescription). Record the intent first; on a timeout, 5xx or 429, checkoutcomeMetabefore sending again. Nonces are single-use, so an identical resend cannot execute twice, but re-signing with a new nonce can. - Signing. L1 actions: MessagePack of the action in key order, nonce and vault marker, hashed and signed through the
Agenttype. Tuples sorted, addresses lowercase, no trailing zeros (signing, multi-sig). - Some tooling checks only
delegatorSummary.delegated, stricter than the chain.
Common traps
Section titled “Common traps”- A staking link disqualifies the account: activation was refused with
Deployer cannot have staking link(deployer economics). - The requirement is escrowed. While the role is live, any staking withdrawal below it is refused, whoever signs.
- Testnet unstakes in about 5 minutes, mainnet in 7 days: exit logic tested on testnet is wrong in production.
- HIP-4 deployment is live on mainnet:
outcomeMetalists 4 deployer venues and 316 outcomes. The official deployer actions page is still headed “Testnet-only”, and its limits give testnet values only.
Next, choose what to list in outcome templates and keywords, then see settling outcomes for your obligation.