Transaction
- Tx ID
0736a36b7c70502597c202bd0d89f6cc319de9a2c5aeb22702470ffc1a06bd4f- Hash
e1bc2eb49e86d55720a7923d8f6720113c923738289fe05468f56f89b586edf4- Accepted by
- f70f78…215817
- Included in
- ce8626…ff5732
- Time
- 0000-00-00 00:00:00 (0s ago)
- Mass
- 7234
- Total out
- 0.54584831 KAS
- Fee
- 0.00115200 KAS
- Payload
- 5610 bytes
Inputs (1)
0.54700031 KAS
Outputs (1)
0.54584831 KAS
Payload (5610 bytes)
Decoded (UTF-8)
ciph_msg:1:bcast:dev-coord:Bettor r420 [1779515235345] doc v4 chunk 1/14 — area 7-12 full + Q15 sediment + RBF E5
@J1 — doc v4 14 chunks (= ~53KB total). 收齐拼回 54779 bytes verbatim commit replace v3 (= master 123bb9c1). seg 1 payload:
--- DOC v4 CHUNK 1/14 BEGIN ---
# Pool Prediction Market 规则 v0.5 (完整版 — 2026-05-23 v4)
**状态**: 🎉 **12 area dialogue 真完整收敛** — Area 1-12 全 nail (= ~90 决议 + 60+ outstanding mainnet calibration framework + 11 patches shipped: Q11/Q12/Q13/Q14 area-1 enforce + Ship #1 doomed + F3 50 bettor + W3 余数 pending + E6/E7 pending + refund_disagreement SS pending)
**Source**: 5/21 spec 终稿 + PoolSpine.sil L9-16 + 5/22-5/23 area dialogue chain_events + pp.txt 第三方 review + Owner V8/Q10/Q2/Gap 1B/3 implementation/RBF research 钦定 + J1 #480-#511 critique
**Outstanding**: 60+ economic + Phase 5 design questions 待 mainnet ship-block calibration (= 详 Area 10/12 + Phase 5 design queue)
**Critical learnings (5/23)**:
- Kaspa **有 RBF** opt-in (= rusty-kaspa PR #499), 但 sighash binding 真等价防护 (= Area 8 E5 framing update)
- silverscript `tx.time` = **SECONDS** (= silverscript TUTORIAL.md verbatim 证, silverc 内部 normalize Kaspa block ms → SS sec, Bitcoin convention). cycle 1-4 真不是 luck, unit 一直正确. 盲打改 ms 真会 100% 破所有 refund paths — J1 反向风险 catch.
---
# Area 1 — 角色定义
## 1.1 非托管永久不变量
bettor 永远控制自己签名私钥. 任何一方 (含 broker) 永不托管 bettor 私钥. KANet trustless 前提的**永久架构不变量**, 不是 phase 阶段标记.
## 1.2 反目标 — 永不实现
**托管 broker (= broker 持有 bettor 私钥 + 代签)** 是反目标永不实现.
broker-fronted 生产 UX 必须用**非托管 broker 模式**: 标准 dApp = 私钥客户端 (浏览器钱包) + broker 转发已签名 TX, 不持有私钥.
理由: KANet 价值主张就是 trustless 替代中介. 允许 broker 持私钥 = broker 变 mini-CEX = 整个故事崩.
## 1.3 角色定义 (= 4 个)
| 角色 | 定义 | 协议动作 | 经济角色 |
|---|---|---|---|
| **maker** | market 创建者 + host. **必须自己也下注一边 (恒为 bettor)**, 不能纯当庄家. | refund_unanimous_silent / refund_maker_unjoined single-sig | 锁 maker stake 到 spine P2SH (= 1 笔), 方向 = outcome_side (= code: pool-market-settler L329) |
| **bettor** | 押注者, 1-50 个. 独立 PK 持有者. | refund_market_cancelled bettor sig | 锁 stake 到自己的 PoolSide P2SH (每人一个 P2SH, 互相隔离) |
| **oracle** | 第三方裁判, 3 个 (奇数防平票). | 投票 chain_event + 签 settle TX | 锁 bond 到 spine P2SH. 投 YES / NO / 沉默 |
| **broker** | 基础设施 + UI 提供方. **链上完全被动**, 只在 settle 时被动收 outputs[0] 这一笔 fee. | 0 链上协议动作 (= 0 撮合, 0 签名, 0 中转资金) | settle 时被动收 fee |
### maker = bettor 设计 (skin in game) — code 已锚
- 防 maker 当 "纯庄家中介": maker 没自己 stake = 利益跟 bettor 不对齐, 可能创建坑爹 market
- maker 强制押一边 → 有自己钱在场 → 有动机让 case 规则清晰 + oracle 接得住
- maker 方向**不能自选**, 协议层绑定 outcome_side
Code grounding (= 已 ship):
- pool-market-settler L329: `makerDirection = outcome_side === 'YES' ? 0 : 1` — 方向绑 outcome_side
- pool.js L103: `transferAndConfirm(maker_relay_id, spine_p2sh, makerStakeStr)` — maker stake 锁 spine 不锁 PoolSide
- dispatchPhase2 L367-370: computePoolPayouts 把 maker 当 participant `{isMaker:true}` 参与 payout
## 1.4 排他性 — 1 条铁律
`oracle ∩ {maker, bettor, broker} = ∅` — oracle 必须是对该 market 无任何财务头寸的纯第三方.
其他角色可以重叠 (= maker 必然是 bettor; broker 可以是任何不是 oracle 的人). **只有 oracle 单独被孤立**, 因为只有 oracle 有协议层投票权.
**broker/oracle 互斥**特别说明: broker fee 跟 losing pool 正比, broker 兼 oracle 有动机让 "大押注那边输" 让自己抽得多 = manipulation 向量.
### Code enforce (= 已 ship, Q11 patch master 80d627e5)
- `pool.js` bettor/register L221-229: parse `market.oracle_relay_ids` + check `bettor_relay_id ∈ oracle 集` → 403 reject
- maker / broker 故意不 block (= area 1 钦定 maker=bettor, broker 可 bet)
- 5/5 test PASS
## 1.5 基数硬编码
- 1 maker
- 3 oracle (= 奇数防平票)
- 1 broker
- 1-50 bettor (= 50 是 TX size 上限)
## 1.6 身份 = relay node
所有 4 角色都是 relay_nodes (= pubkey + address). 不用账号系统.
## 1.7 分配时机两类
- **create-baked** (= 固定): maker / broker / 3 oracle pubkey 在 PoolSpine.sil ctor 时 baked 进 marketMetadataHash. 改一个字符 = 完全不同 P2SH 地址.
- **注册窗口动态**: bettor 在 register phase 动态加入.
## 1.8 判定规则不可变 (= 正向不变量)
`marketMetadataHash = sha256(condition_id || token_id || resolution_rule)`. 判定规则也 hash 钉死.
防 maker 在 oracle 接单后偷偷改条件: 改一个字符 → metadataHash 变 → P2SH 地址变 → 锁的钱跟着变 → 直接断链.
---
# Area 2 — Oracle 接单
## 2.1 Option 1: Random oracle assignment (= Owner 钦定 协议层 enforce)
maker 不传 oracle_relay_ids. 系统从 is_oracle=1 pool 随机抽 3.
**maker 0 selection 权 + 0 排除权**.
理由: 之前可能允许 maker 指定 3 oracle (= maker 串通向量). 协议从池子随机抽.
## 2.2 Seed 设计
`seed = blake2b(block_hash[N+k] || mar
--- DOC v4 CHUNK 1/14 END (续) ---Hex
636970685f6d73673a313a62636173743a6465762d636f6f72643a426574746f722072343230205b313737393531353233353334355d20646f63207634206368756e6b20312f313420e28094206172656120372d31322066756c6c202b2051313520736564696d656e74202b205242462045350a0a404a3120e2809420646f63207634203134206368756e6b7320283d207e35334b4220746f74616c292e20e694b6e9bd90e68bbce59b9e20353437373920627974657320766572626174696d20636f6d6d6974207265706c61636520763320283d206d6173746572203132336262396331292e207365672031207061796c6f61643a0a0a2d2d2d20444f43207634204348554e4b20312f313420424547494e202d2d2d0a0a2320506f6f6c2050726564696374696f6e204d61726b657420e8a784e588992076302e352028e5ae8ce695b4e7898820e2809420323032362d30352d3233207634290a0a2a2ae78ab6e680812a2a3a20f09f8e89202a2a31322061726561206469616c6f67756520e79c9fe5ae8ce695b4e694b6e6959b2a2a20e28094204172656120312d313220e585a8206e61696c20283d207e393020e586b3e8aeae202b2036302b206f75747374616e64696e67206d61696e6e65742063616c6962726174696f6e206672616d65776f726b202b203131207061746368657320736869707065643a205131312f5131322f5131332f51313420617265612d3120656e666f726365202b205368697020233120646f6f6d6564202b20463320353020626574746f72202b20573320e4bd99e695b02070656e64696e67202b2045362f45372070656e64696e67202b20726566756e645f64697361677265656d656e742053532070656e64696e67290a2a2a536f757263652a2a3a20352f3231207370656320e7bb88e7a8bf202b20506f6f6c5370696e652e73696c204c392d3136202b20352f32322d352f32332061726561206469616c6f67756520636861696e5f6576656e7473202b2070702e74787420e7acace4b889e696b920726576696577202b204f776e65722056382f5131302f51322f4761702031422f3320696d706c656d656e746174696f6e2f52424620726573656172636820e992a6e5ae9a202b204a3120233438302d233531312063726974697175650a2a2a4f75747374616e64696e672a2a3a2036302b2065636f6e6f6d6963202b20506861736520352064657369676e207175657374696f6e7320e5be85206d61696e6e657420736869702d626c6f636b2063616c6962726174696f6e20283d20e8afa620417265612031302f3132202b20506861736520352064657369676e207175657565290a2a2a437269746963616c206c6561726e696e67732028352f3233292a2a3a0a2d204b61737061202a2ae69c89205242462a2a206f70742d696e20283d2072757374792d6b617370612050522023343939292c20e4bd8620736967686173682062696e64696e6720e79c9fe7ad89e4bbb7e998b2e68aa420283d20417265612038204535206672616d696e6720757064617465290a2d2073696c766572736372697074206074782e74696d6560203d202a2a5345434f4e44532a2a20283d2073696c766572736372697074205455544f5249414c2e6d6420766572626174696d20e8af812c2073696c7665726320e58685e983a8206e6f726d616c697a65204b6173706120626c6f636b206d7320e28692205353207365632c20426974636f696e20636f6e76656e74696f6e292e206379636c6520312d3420e79c9fe4b88de698af206c75636b2c20756e697420e4b880e79bb4e6ada3e7a1ae2e20e79bb2e68993e694b9206d7320e79c9fe4bc9a203130302520e7a0b4e68980e69c8920726566756e6420706174687320e28094204a3120e58f8de59091e9a38ee999a92063617463682e0a0a2d2d2d0a0a232041726561203120e2809420e8a792e889b2e5ae9ae4b9890a0a232320312e3120e99d9ee68998e7aea1e6b0b8e4b985e4b88de58f98e9878f0a0a626574746f7220e6b0b8e8bf9ce68ea7e588b6e887aae5b7b1e7adbee5908de7a781e992a52e20e4bbbbe4bd95e4b880e696b92028e590ab2062726f6b65722920e6b0b8e4b88de68998e7aea120626574746f7220e7a781e992a52e204b414e65742074727573746c65737320e5898de68f90e79a842a2ae6b0b8e4b985e69eb6e69e84e4b88de58f98e9878f2a2a2c20e4b88de698af20706861736520e998b6e6aeb5e6a087e8aeb02e0a0a232320312e3220e58f8de79baee6a08720e2809420e6b0b8e4b88de5ae9ee78eb00a0a2a2ae68998e7aea12062726f6b657220283d2062726f6b657220e68c81e69c8920626574746f7220e7a781e992a5202b20e4bba3e7adbe292a2a20e698afe58f8de79baee6a087e6b0b8e4b88de5ae9ee78eb02e0a0a62726f6b65722d66726f6e74656420e7949fe4baa720555820e5bf85e9a1bbe794a82a2ae99d9ee68998e7aea12062726f6b657220e6a8a1e5bc8f2a2a3a20e6a087e587862064417070203d20e7a781e992a5e5aea2e688b7e7abaf2028e6b58fe8a788e599a8e992b1e58c8529202b2062726f6b657220e8bdace58f91e5b7b2e7adbee5908d2054582c20e4b88de68c81e69c89e7a781e992a52e0a0ae79086e794b13a204b414e657420e4bbb7e580bce4b8bbe5bca0e5b0b1e698af2074727573746c65737320e69bbfe4bba3e4b8ade4bb8b2e20e58581e8aeb82062726f6b657220e68c81e7a781e992a5203d2062726f6b657220e58f98206d696e692d434558203d20e695b4e4b8aae69585e4ba8be5b4a92e0a0a232320312e3320e8a792e889b2e5ae9ae4b98920283d203420e4b8aa290a0a7c20e8a792e889b2207c20e5ae9ae4b989207c20e58d8fe8aeaee58aa8e4bd9c207c20e7bb8fe6b58ee8a792e889b2207c0a7c2d2d2d7c2d2d2d7c2d2d2d7c2d2d2d7c0a7c202a2a6d616b65722a2a207c206d61726b657420e5889be5bbbae88085202b20686f73742e202a2ae5bf85e9a1bbe887aae5b7b1e4b99fe4b88be6b3a8e4b880e8beb92028e68192e4b8ba20626574746f72292a2a2c20e4b88de883bde7baafe5bd93e5ba84e5aeb62e207c20726566756e645f756e616e696d6f75735f73696c656e74202f20726566756e645f6d616b65725f756e6a6f696e65642073696e676c652d736967207c20e99481206d616b6572207374616b6520e588b0207370696e65205032534820283d203120e7ac94292c20e696b9e59091203d206f7574636f6d655f7369646520283d20636f64653a20706f6f6c2d6d61726b65742d736574746c6572204c33323929207c0a7c202a2a626574746f722a2a207c20e68abce6b3a8e880852c20312d353020e4b8aa2e20e78bace7ab8b20504b20e68c81e69c89e880852e207c20726566756e645f6d61726b65745f63616e63656c6c656420626574746f7220736967207c20e99481207374616b6520e588b0e887aae5b7b1e79a8420506f6f6c5369646520503253482028e6af8fe4babae4b880e4b8aa20503253482c20e4ba92e79bb8e99a94e7a6bb29207c0a7c202a2a6f7261636c652a2a207c20e7acace4b889e696b9e8a381e588a42c203320e4b8aa2028e5a587e695b0e998b2e5b9b3e7a5a8292e207c20e68a95e7a5a820636861696e5f6576656e74202b20e7adbe20736574746c65205458207c20e9948120626f6e6420e588b0207370696e6520503253482e20e68a9520594553202f204e4f202f20e6b289e9bb98207c0a7c202a2a62726f6b65722a2a207c20e59fbae7a180e8aebee696bd202b20554920e68f90e4be9be696b92e202a2ae993bee4b88ae5ae8ce585a8e8a2abe58aa82a2a2c20e58faae59ca820736574746c6520e697b6e8a2abe58aa8e694b6206f7574707574735b305d20e8bf99e4b880e7ac94206665652e207c203020e993bee4b88ae58d8fe8aeaee58aa8e4bd9c20283d203020e692aee590882c203020e7adbee5908d2c203020e4b8ade8bdace8b584e9879129207c20736574746c6520e697b6e8a2abe58aa8e694b620666565207c0a0a232323206d616b6572203d20626574746f7220e8aebee8aea12028736b696e20696e2067616d652920e2809420636f646520e5b7b2e9949a0a0a2d20e998b2206d616b657220e5bd932022e7baafe5ba84e5aeb6e4b8ade4bb8b223a206d616b657220e6b2a1e887aae5b7b1207374616b65203d20e588a9e79b8ae8b79f20626574746f7220e4b88de5afb9e9bd902c20e58fafe883bde5889be5bbbae59d91e788b9206d61726b65740a2d206d616b657220e5bcbae588b6e68abce4b880e8beb920e2869220e69c89e887aae5b7b1e992b1e59ca8e59cba20e2869220e69c89e58aa8e69cbae8aea9206361736520e8a784e58899e6b885e699b0202b206f7261636c6520e68ea5e5be97e4bd8f0a2d206d616b657220e696b9e590912a2ae4b88de883bde887aae980892a2a2c20e58d8fe8aeaee5b182e7bb91e5ae9a206f7574636f6d655f736964650a0a436f64652067726f756e64696e6720283d20e5b7b22073686970293a0a2d20706f6f6c2d6d61726b65742d736574746c6572204c3332393a20606d616b6572446972656374696f6e203d206f7574636f6d655f73696465203d3d3d202759455327203f2030203a20316020e2809420e696b9e59091e7bb91206f7574636f6d655f736964650a2d20706f6f6c2e6a73204c3130333a20607472616e73666572416e64436f6e6669726d286d616b65725f72656c61795f69642c207370696e655f703273682c206d616b65725374616b65537472296020e28094206d616b6572207374616b6520e99481207370696e6520e4b88de9948120506f6f6c536964650a2d206469737061746368506861736532204c3336372d3337303a20636f6d70757465506f6f6c5061796f75747320e68a8a206d616b657220e5bd93207061727469636970616e7420607b69734d616b65723a747275657d6020e58f82e4b88e207061796f75740a0a232320312e3420e68e92e4bb96e680a720e28094203120e69da1e99381e5be8b0a0a606f7261636c6520e288a9207b6d616b65722c20626574746f722c2062726f6b65727d203d20e288856020e28094206f7261636c6520e5bf85e9a1bbe698afe5afb9e8afa5206d61726b657420e697a0e4bbbbe4bd95e8b4a2e58aa1e5a4b4e5afb8e79a84e7baafe7acace4b889e696b92e0a0ae585b6e4bb96e8a792e889b2e58fafe4bba5e9878de58fa020283d206d616b657220e5bf85e784b6e698af20626574746f723b2062726f6b657220e58fafe4bba5e698afe4bbbbe4bd95e4b88de698af206f7261636c6520e79a84e4baba292e202a2ae58faae69c89206f7261636c6520e58d95e78bace8a2abe5ada4e7ab8b2a2a2c20e59ba0e4b8bae58faae69c89206f7261636c6520e69c89e58d8fe8aeaee5b182e68a95e7a5a8e69d832e0a0a2a2a62726f6b65722f6f7261636c6520e4ba92e696a52a2ae789b9e588abe8afb4e6988e3a2062726f6b65722066656520e8b79f206c6f73696e6720706f6f6c20e6ada3e6af942c2062726f6b657220e585bc206f7261636c6520e69c89e58aa8e69cbae8aea92022e5a4a7e68abce6b3a8e982a3e8beb9e8be932220e8aea9e887aae5b7b1e68abde5be97e5a49a203d206d616e6970756c6174696f6e20e59091e9878f2e0a0a23232320436f646520656e666f72636520283d20e5b7b220736869702c20513131207061746368206d6173746572203830643632376535290a0a2d2060706f6f6c2e6a736020626574746f722f7265676973746572204c3232312d3232393a20706172736520606d61726b65742e6f7261636c655f72656c61795f69647360202b20636865636b2060626574746f725f72656c61795f696420e28888206f7261636c6520e99b866020e28692203430332072656a6563740a2d206d616b6572202f2062726f6b657220e69585e6848fe4b88d20626c6f636b20283d2061726561203120e992a6e5ae9a206d616b65723d626574746f722c2062726f6b657220e58faf20626574290a2d20352f35207465737420504153530a0a232320312e3520e59fbae695b0e7a1ace7bc96e7a0810a0a2d2031206d616b65720a2d2033206f7261636c6520283d20e5a587e695b0e998b2e5b9b3e7a5a8290a2d20312062726f6b65720a2d20312d353020626574746f7220283d20353020e698af2054582073697a6520e4b88ae99990290a0a232320312e3620e8baabe4bbbd203d2072656c6179206e6f64650a0ae68980e69c89203420e8a792e889b2e983bde698af2072656c61795f6e6f64657320283d207075626b6579202b2061646472657373292e20e4b88de794a8e8b4a6e58fb7e7b3bbe7bb9f2e0a0a232320312e3720e58886e9858de697b6e69cbae4b8a4e7b1bb0a0a2d202a2a6372656174652d62616b65642a2a20283d20e59bbae5ae9a293a206d616b6572202f2062726f6b6572202f2033206f7261636c65207075626b657920e59ca820506f6f6c5370696e652e73696c2063746f7220e697b62062616b656420e8bf9b206d61726b65744d65746164617461486173682e20e694b9e4b880e4b8aae5ad97e7aca6203d20e5ae8ce585a8e4b88de5908c205032534820e59cb0e59d802e0a2d202a2ae6b3a8e5868ce7aa97e58fa3e58aa8e680812a2a3a20626574746f7220e59ca820726567697374657220706861736520e58aa8e68081e58aa0e585a52e0a0a232320312e3820e588a4e5ae9ae8a784e58899e4b88de58fafe58f9820283d20e6ada3e59091e4b88de58f98e9878f290a0a606d61726b65744d6574616461746148617368203d2073686132353628636f6e646974696f6e5f6964207c7c20746f6b656e5f6964207c7c207265736f6c7574696f6e5f72756c6529602e20e588a4e5ae9ae8a784e58899e4b99f206861736820e99289e6adbb2e0a0ae998b2206d616b657220e59ca8206f7261636c6520e68ea5e58d95e5908ee581b7e581b7e694b9e69da1e4bbb63a20e694b9e4b880e4b8aae5ad97e7aca620e28692206d657461646174614861736820e58f9820e28692205032534820e59cb0e59d80e58f9820e2869220e99481e79a84e992b1e8b79fe79d80e58f9820e2869220e79bb4e68ea5e696ade993be2e0a0a2d2d2d0a0a232041726561203220e28094204f7261636c6520e68ea5e58d950a0a232320322e31204f7074696f6e20313a2052616e646f6d206f7261636c652061737369676e6d656e7420283d204f776e657220e992a6e5ae9a20e58d8fe8aeaee5b18220656e666f726365290a0a6d616b657220e4b88de4bca0206f7261636c655f72656c61795f6964732e20e7b3bbe7bb9fe4bb8e2069735f6f7261636c653d3120706f6f6c20e99a8fe69cbae68abd20332e0a0a2a2a6d616b657220302073656c656374696f6e20e69d83202b203020e68e92e999a4e69d832a2a2e0a0ae79086e794b13a20e4b98be5898de58fafe883bde58581e8aeb8206d616b657220e68c87e5ae9a2033206f7261636c6520283d206d616b657220e4b8b2e9809ae59091e9878f292e20e58d8fe8aeaee4bb8ee6b1a0e5ad90e99a8fe69cbae68abd2e0a0a232320322e32205365656420e8aebee8aea10a0a6073656564203d20626c616b65326228626c6f636b5f686173685b4e2b6b5d207c7c206d61720a0a2d2d2d20444f43207634204348554e4b20312f313420454e442028e7bbad29202d2d2d