{
"source": "Outcome deployer vectors: each case's inputs (`given`, keywords in the order typed) and every output pinned. From three sources: Hyperliquid's Python SDK, an independent Rust implementation, and recorded presets.",
"python": {
"source": "Hyperliquid's Python SDK (hyperliquid.utils.signing.action_hash) over the deployer actions, no vault, no expiry. `multiSig` holds the three inner hashes a multi-sig signer signs over ([multiSigUser, outerSigner, action] packed and hashed as an L1 action) and the envelope around registerStandaloneOutcome, which names testnet's signature chain.",
"nonce": 1755530000000,
"cases": [
{
"name": "registerStandaloneOutcome",
"venue": "zzz",
"given": {
"template": "binaryPrice4",
"keywords": [
[
"time",
"20260901-1200"
],
[
"threshold",
"50000"
],
[
"perp",
"BTC"
],
[
"seconds",
"60"
],
[
"priceDescription",
"Bitcoin"
]
],
"feeScale": "0"
},
"action": {
"type": "outcomeDeploy",
"venue": "zzz",
"operation": {
"registerStandaloneOutcomeFromTemplate": {
"id": "binaryPrice4",
"keywordToValue": [
[
"perp",
"BTC"
],
[
"priceDescription",
"Bitcoin"
],
[
"seconds",
"60"
],
[
"threshold",
"50000"
],
[
"time",
"20260901-1200"
]
],
"deployerFeeScale": "0"
}
}
},
"actionHash": "0xe76ca1311e7a15df0ad87a5dab3a02b047d23837ff001d480d5f849fded4a9c6"
},
{
"name": "registerQuestion",
"venue": "zzz",
"given": {
"question": {
"template": "sportsContestResult",
"keywords": [
[
"participantB",
"Spain"
],
[
"participantA",
"Brazil"
]
]
},
"feeScale": "1.50",
"named": [
{
"template": "sportsContestParticipant",
"keywords": [
[
"participant",
"Brazil"
]
]
},
{
"template": "sportsContestDraw",
"keywords": []
}
]
},
"action": {
"type": "outcomeDeploy",
"venue": "zzz",
"operation": {
"registerQuestionFromTemplate": {
"questionTemplateInstance": {
"id": "sportsContestResult",
"keywordToValue": [
[
"participantA",
"Brazil"
],
[
"participantB",
"Spain"
]
],
"deployerFeeScale": "1.5"
},
"namedOutcomeTemplateInstances": [
{
"id": "sportsContestParticipant",
"keywordToValue": [
[
"participant",
"Brazil"
]
]
},
{
"id": "sportsContestDraw",
"keywordToValue": []
}
]
}
}
},
"actionHash": "0x3d1f7e8e0409bf566bdf0201478aa6fe8293ed4dbb9d30b07c1b32230aaa99d5"
},
{
"name": "registerAndAssociateNamedOutcome",
"venue": "zzz",
"given": {
"question": 182,
"named": {
"template": "sportsContestParticipant",
"keywords": [
[
"participant",
"Spain"
]
]
}
},
"action": {
"type": "outcomeDeploy",
"venue": "zzz",
"operation": {
"registerAndAssociateNamedOutcomeFromTemplate": {
"question": 182,
"namedOutcomeTemplateInstance": {
"id": "sportsContestParticipant",
"keywordToValue": [
[
"participant",
"Spain"
]
]
}
}
}
},
"actionHash": "0xda72d2939a491585c4781553fa6881e045207edbe320ee31c58e9e767768dce6"
},
{
"name": "setSubDeployers",
"venue": "zzz",
"given": {
"grants": [
{
"permission": "settleOutcome",
"user": "0xab04c8d8372d83ec939570fd2d956d0bb31aace3",
"allowed": true
},
{
"permission": "settleQuestion",
"user": "0x251fd19df63a83652eea93a6a5e451aa5ce81e4c",
"allowed": false
}
]
},
"action": {
"type": "outcomeDeploy",
"venue": "zzz",
"operation": {
"setSubDeployers": [
{
"variant": "settleOutcome",
"user": "0xab04c8d8372d83ec939570fd2d956d0bb31aace3",
"allowed": true
},
{
"variant": "settleQuestion",
"user": "0x251fd19df63a83652eea93a6a5e451aa5ce81e4c",
"allowed": false
}
]
}
},
"actionHash": "0x13e98e1ec9d18a7374ffd6efd908d9b8597bb702d8fabe4c320569b96a5993fa"
},
{
"name": "settleOutcome",
"venue": "zzz",
"given": {
"outcome": 13065,
"fraction": "1",
"name": "template:binaryPrice4",
"description": "perp:BTC|threshold:50000|time:20260901-1200",
"sides": [
"template:Yes",
"template:No"
]
},
"action": {
"type": "outcomeDeploy",
"venue": "zzz",
"operation": {
"settleOutcome": {
"outcome": 13065,
"settleFraction": "1",
"details": "",
"nameAndDescription": [
"template:binaryPrice4",
"perp:BTC|threshold:50000|time:20260901-1200"
],
"sideNames": [
"template:Yes",
"template:No"
]
}
}
},
"actionHash": "0x46bc607e52ce7d6bbb25329f33fc9416046efc06aecad3cb8c03b11491ab7bb6"
},
{
"name": "settleQuestion",
"venue": "zzz",
"given": {
"question": 182,
"name": "What will Hypurr eat most of?",
"description": "A food journal",
"settlements": [
{
"outcome": 7003,
"fraction": "0",
"name": "Chicken",
"description": "N/A",
"sides": [
"Yes",
"No"
]
},
{
"outcome": 7004,
"fraction": "1",
"name": "Chicken",
"description": "N/A",
"sides": [
"Yes",
"No"
]
},
{
"outcome": 7005,
"fraction": "0",
"name": "Chicken",
"description": "N/A",
"sides": [
"Yes",
"No"
]
}
]
},
"action": {
"type": "outcomeDeploy",
"venue": "zzz",
"operation": {
"settleQuestion2": {
"question": 182,
"outcomeSettlements": [
{
"outcome": 7003,
"settleFraction": "0",
"details": "",
"nameAndDescription": [
"Chicken",
"N/A"
],
"sideNames": [
"Yes",
"No"
]
},
{
"outcome": 7004,
"settleFraction": "1",
"details": "",
"nameAndDescription": [
"Chicken",
"N/A"
],
"sideNames": [
"Yes",
"No"
]
},
{
"outcome": 7005,
"settleFraction": "0",
"details": "",
"nameAndDescription": [
"Chicken",
"N/A"
],
"sideNames": [
"Yes",
"No"
]
}
],
"nameAndDescription": [
"What will Hypurr eat most of?",
"A food journal"
]
}
}
},
"actionHash": "0x8bf875b43394c89e151367f995a9735cc0073c4c39c65724cb11cf9f3123c655"
},
{
"name": "activate",
"venue": "zzz",
"given": {},
"action": {
"type": "activateOutcomeDeployer",
"activate": {
"venueName": "zzz"
}
},
"actionHash": "0xb6527b4ba1d06d7884f85a2f0c165fde59becd3bc7f8725bc0f481e3a2c7f1cd"
},
{
"name": "deactivate",
"venue": "zzz",
"given": {},
"action": {
"type": "activateOutcomeDeployer",
"deactivate": null
},
"actionHash": "0xe91d6e3ccf382a7ae37e78d8e6dadf2f168cbedee74c0f2b984b2b8561bc008f"
}
],
"multiSig": {
"multiSigUser": "0xa8d106881abe9a0b6ffd367788d6af91439d37f6",
"outerSigner": "0x251fd19df63a83652eea93a6a5e451aa5ce81e4c",
"inner": [
{
"name": "registerStandaloneOutcome",
"actionHash": "0xaae5cb534172068ed0db7195034da985961d06bb5af93c984a98341b80bf3f31"
},
{
"name": "settleQuestion",
"actionHash": "0x396ad68ec562d8908fe49611b660449263c64ff7a0b79d01a8e07221220e65e9"
},
{
"name": "activate",
"actionHash": "0x32e4f02e2a5749f37081f1990e55fa5b576ae623adaecc89a5bc6edd453f3203"
}
],
"envelope": {
"name": "registerStandaloneOutcome",
"signatureChainId": "0x66eee",
"signatures": [
{
"r": "0x1111111111111111111111111111111111111111111111111111111111111111",
"s": "0x2222222222222222222222222222222222222222222222222222222222222222",
"v": 27
},
{
"r": "0x3333333333333333333333333333333333333333333333333333333333333333",
"s": "0x4444444444444444444444444444444444444444444444444444444444444444",
"v": 28
}
],
"actionHash": "0xb729b2335f85dbb74da2a836f95f989f59e7896061b6a41d41449e173a371dcf"
}
}
},
"independent": {
"source": "An independent Rust implementation's tests: msgpack, L1 hash and mainnet digest as they pin them, the first checked against the Python SDK.",
"nonce": 1234567890000,
"cases": [
{
"name": "standalone",
"venue": "out",
"given": {
"template": "binaryPrice",
"keywords": [
[
"perp",
"BTC"
],
[
"priceDescription",
"BTC-USDC mark"
],
[
"seconds",
"1"
],
[
"threshold",
"100000"
],
[
"time",
"20261001-0000"
]
],
"feeScale": "1"
},
"msgpack": "83a474797065ad6f7574636f6d654465706c6f79a576656e7565a36f7574a96f7065726174696f6e81d92572656769737465725374616e64616c6f6e654f7574636f6d6546726f6d54656d706c61746583a26964ab62696e6172795072696365ae6b6579776f7264546f56616c75659592a470657270a342544392b070726963654465736372697074696f6ead4254432d55534443206d61726b92a77365636f6e6473a13192a97468726573686f6c64a631303030303092a474696d65ad32303236313030312d30303030b06465706c6f7965724665655363616c65a131",
"actionHash": "0xdaa18de77c967c757dc4e833258e80e0dce198216c41eba4743f43d9b6a6fe46",
"mainnetDigest": "0x254e054cfcfdf83a54c5e42b2ac8f46c85503660c0ad3b69576eea7443a3a964"
},
{
"name": "settleOutcome",
"venue": "out",
"given": {
"outcome": 1224,
"fraction": "1",
"name": "template:binaryPrice",
"description": "perp:GOLD|priceDescription:d|seconds:1|threshold:4460.9|time:20260829-2100",
"sides": [
"template:Yes",
"template:No"
]
},
"msgpack": "83a474797065ad6f7574636f6d654465706c6f79a576656e7565a36f7574a96f7065726174696f6e81ad736574746c654f7574636f6d6585a76f7574636f6d65cd04c8ae736574746c654672616374696f6ea131a764657461696c73a0b26e616d65416e644465736372697074696f6e92b474656d706c6174653a62696e6172795072696365d94a706572703a474f4c447c70726963654465736372697074696f6e3a647c7365636f6e64733a317c7468726573686f6c643a343436302e397c74696d653a32303236303832392d32313030a9736964654e616d657392ac74656d706c6174653a596573ab74656d706c6174653a4e6f",
"actionHash": "0xaa99e61e2a36a199f7c41e02adaeceb87a33125c13cc21736135334ca354f84b",
"mainnetDigest": "0xea144f400000095bb6bc2b95822c8f3e888793322e6382b707b82b113243b96a"
},
{
"name": "settleQuestion2",
"venue": "out",
"given": {
"question": 191,
"name": "template:policyRateDecision",
"description": "decisionLabel:September 2026|institution:FOMC",
"settlements": [
{
"outcome": 1227,
"fraction": "0",
"name": "template:policyRateHike",
"description": "decisionLabel:September 2026|institution:FOMC",
"sides": [
"Yes",
"No"
]
},
{
"outcome": 1228,
"fraction": "1",
"name": "template:policyRateNoChange",
"description": "decisionLabel:September 2026|institution:FOMC",
"sides": [
"Yes",
"No"
]
}
]
},
"msgpack": "83a474797065ad6f7574636f6d654465706c6f79a576656e7565a36f7574a96f7065726174696f6e81af736574746c655175657374696f6e3283a87175657374696f6eccbfb26f7574636f6d65536574746c656d656e74739285a76f7574636f6d65cd04cbae736574746c654672616374696f6ea130a764657461696c73a0b26e616d65416e644465736372697074696f6e92b774656d706c6174653a706f6c6963795261746548696b65d92d6465636973696f6e4c6162656c3a53657074656d62657220323032367c696e737469747574696f6e3a464f4d43a9736964654e616d657392a3596573a24e6f85a76f7574636f6d65cd04ccae736574746c654672616374696f6ea131a764657461696c73a0b26e616d65416e644465736372697074696f6e92bb74656d706c6174653a706f6c696379526174654e6f4368616e6765d92d6465636973696f6e4c6162656c3a53657074656d62657220323032367c696e737469747574696f6e3a464f4d43a9736964654e616d657392a3596573a24e6fb26e616d65416e644465736372697074696f6e92bb74656d706c6174653a706f6c696379526174654465636973696f6ed92d6465636973696f6e4c6162656c3a53657074656d62657220323032367c696e737469747574696f6e3a464f4d43",
"actionHash": "0xf0d9b5453e8e4c276a4bdfa02031090e67a667ffb3907d10988e5c529547727e",
"mainnetDigest": "0x92da1b308b73beaa73333d333f4a5a2afb5f4a9f709f5a5230347e2a4ca4805b"
}
]
},
"studio": {
"source": "Recorded HIP-4 presets: the bodies the venue takes.",
"cases": [
{
"name": "registerStandaloneOutcome",
"venue": "ab",
"given": {
"template": "binaryPrice",
"keywords": [
[
"threshold",
"83114"
],
[
"time",
"20261231-1200"
],
[
"seconds",
"60"
],
[
"priceDescription",
"BTC-USDC perp mark"
],
[
"perp",
"BTC"
]
],
"feeScale": "1.0"
},
"action": {
"type": "outcomeDeploy",
"venue": "ab",
"operation": {
"registerStandaloneOutcomeFromTemplate": {
"id": "binaryPrice",
"keywordToValue": [
[
"perp",
"BTC"
],
[
"priceDescription",
"BTC-USDC perp mark"
],
[
"seconds",
"60"
],
[
"threshold",
"83114"
],
[
"time",
"20261231-1200"
]
],
"deployerFeeScale": "1"
}
}
}
},
{
"name": "registerQuestion",
"venue": "ab",
"given": {
"question": {
"template": "sportsContestResult",
"keywords": [
[
"stage",
"League A, Matchday 3"
],
[
"sport",
"Soccer"
],
[
"season",
"2026/27"
],
[
"scheduledStart",
"20261001-1845"
],
[
"resolutionDeadline",
"20261002-1845"
],
[
"participantB",
"Portugal"
],
[
"participantA",
"Denmark"
],
[
"officialSource",
"Union of European Football Associations"
],
[
"countedPlay",
"regulation time, 90 minutes plus stoppage time"
],
[
"contestType",
"Match"
],
[
"competition",
"UEFA Nations League"
]
]
},
"feeScale": "1",
"named": [
{
"template": "sportsContestParticipant2",
"keywords": [
[
"participant",
"Denmark"
]
]
},
{
"template": "sportsContestDraw2",
"keywords": []
},
{
"template": "sportsContestParticipant2",
"keywords": [
[
"participant",
"Portugal"
]
]
}
]
},
"action": {
"type": "outcomeDeploy",
"venue": "ab",
"operation": {
"registerQuestionFromTemplate": {
"questionTemplateInstance": {
"id": "sportsContestResult",
"keywordToValue": [
[
"competition",
"UEFA Nations League"
],
[
"contestType",
"Match"
],
[
"countedPlay",
"regulation time, 90 minutes plus stoppage time"
],
[
"officialSource",
"Union of European Football Associations"
],
[
"participantA",
"Denmark"
],
[
"participantB",
"Portugal"
],
[
"resolutionDeadline",
"20261002-1845"
],
[
"scheduledStart",
"20261001-1845"
],
[
"season",
"2026/27"
],
[
"sport",
"Soccer"
],
[
"stage",
"League A, Matchday 3"
]
],
"deployerFeeScale": "1"
},
"namedOutcomeTemplateInstances": [
{
"id": "sportsContestParticipant2",
"keywordToValue": [
[
"participant",
"Denmark"
]
]
},
{
"id": "sportsContestDraw2",
"keywordToValue": []
},
{
"id": "sportsContestParticipant2",
"keywordToValue": [
[
"participant",
"Portugal"
]
]
}
]
}
}
}
},
{
"name": "registerAndAssociateNamedOutcome",
"venue": "ab",
"given": {
"question": 350,
"named": {
"template": "sportsContestParticipant2",
"keywords": [
[
"participant",
"Spain"
]
]
}
},
"action": {
"type": "outcomeDeploy",
"venue": "ab",
"operation": {
"registerAndAssociateNamedOutcomeFromTemplate": {
"question": 350,
"namedOutcomeTemplateInstance": {
"id": "sportsContestParticipant2",
"keywordToValue": [
[
"participant",
"Spain"
]
]
}
}
}
}
},
{
"name": "settleOutcome",
"venue": "ab",
"given": {
"outcome": 6955,
"fraction": "1",
"name": "template:binaryPrice",
"description": "perp:BTC|priceDescription:BTC-USDC perp mark|seconds:60|threshold:83114|time:20260930-0845",
"sides": [
"template:Yes",
"template:No"
]
},
"action": {
"type": "outcomeDeploy",
"venue": "ab",
"operation": {
"settleOutcome": {
"outcome": 6955,
"settleFraction": "1",
"details": "",
"nameAndDescription": [
"template:binaryPrice",
"perp:BTC|priceDescription:BTC-USDC perp mark|seconds:60|threshold:83114|time:20260930-0845"
],
"sideNames": [
"template:Yes",
"template:No"
]
}
}
}
},
{
"name": "settleQuestion",
"venue": "ab",
"given": {
"question": 350,
"name": "template:sportsContestResult",
"description": "competition:UEFA Nations League|contestType:Match|countedPlay:regulation time, 90 minutes plus stoppage time|officialSource:Union of European Football Associations|participantA:Denmark|participantB:Portugal|resolutionDeadline:20261002-1845|scheduledStart:20261001-1845|season:2026/27|sport:Soccer|stage:League A, Matchday 3",
"settlements": [
{
"outcome": 5940,
"fraction": "1",
"name": "template:sportsContestParticipant2",
"description": "participant:Denmark",
"sides": [
"Yes",
"No"
]
},
{
"outcome": 5941,
"fraction": "0",
"name": "template:sportsContestDraw2",
"description": "",
"sides": [
"Yes",
"No"
]
},
{
"outcome": 5942,
"fraction": "0",
"name": "template:sportsContestParticipant2",
"description": "participant:Portugal",
"sides": [
"Yes",
"No"
]
}
]
},
"action": {
"type": "outcomeDeploy",
"venue": "ab",
"operation": {
"settleQuestion2": {
"question": 350,
"outcomeSettlements": [
{
"outcome": 5940,
"settleFraction": "1",
"details": "",
"nameAndDescription": [
"template:sportsContestParticipant2",
"participant:Denmark"
],
"sideNames": [
"Yes",
"No"
]
},
{
"outcome": 5941,
"settleFraction": "0",
"details": "",
"nameAndDescription": [
"template:sportsContestDraw2",
""
],
"sideNames": [
"Yes",
"No"
]
},
{
"outcome": 5942,
"settleFraction": "0",
"details": "",
"nameAndDescription": [
"template:sportsContestParticipant2",
"participant:Portugal"
],
"sideNames": [
"Yes",
"No"
]
}
],
"nameAndDescription": [
"template:sportsContestResult",
"competition:UEFA Nations League|contestType:Match|countedPlay:regulation time, 90 minutes plus stoppage time|officialSource:Union of European Football Associations|participantA:Denmark|participantB:Portugal|resolutionDeadline:20261002-1845|scheduledStart:20261001-1845|season:2026/27|sport:Soccer|stage:League A, Matchday 3"
]
}
}
}
},
{
"name": "setSubDeployers",
"venue": "ab",
"given": {
"grants": [
{
"permission": "settleOutcome",
"user": "0x0000000000000000000000000000000000000000",
"allowed": true
}
]
},
"action": {
"type": "outcomeDeploy",
"venue": "ab",
"operation": {
"setSubDeployers": [
{
"variant": "settleOutcome",
"user": "0x0000000000000000000000000000000000000000",
"allowed": true
}
]
}
}
},
{
"name": "activate",
"venue": "ab",
"given": {},
"action": {
"type": "activateOutcomeDeployer",
"activate": {
"venueName": "ab"
}
}
},
{
"name": "deactivate",
"venue": "ab",
"given": {},
"action": {
"type": "activateOutcomeDeployer",
"deactivate": null
},
"msgpack": "82a474797065b761637469766174654f7574636f6d654465706c6f796572aa64656163746976617465c0"
}
]
}
}