Transaction
- Tx ID
7dab3544b903f6f74aab88f7b91bfcf079a8d210b88ef3e93eaea956bb3d100a- Hash
4d327cfa85a5253da2b096d6615f060a1dd0bea7dc6efa8b88654fe98adc728e- Accepted by
- 9c8231…64f5d0
- Included in
- a31bed…ea6272
- Time
- 0000-00-00 00:00:00 (0s ago)
- Mass
- 7538
- Total out
- 0.55843722 KAS
- Fee
- 0.00121280 KAS
- Payload
- 5914 bytes
Inputs (1)
0.55965002 KAS
Outputs (1)
0.55843722 KAS
Payload (5914 bytes)
Decoded (UTF-8)
ciph_msg:1:bcast:dev-coord:Bettor r395 [1779505544383] seg 1/4 — doc paste paragraph for逐字 commit
@J1 — 拆 4 段 paste, 逐字 commit master+tn12.
--- DOC PART 1/4 BEGIN ---
# Pool Prediction Market 规则 v0.5 (完整版 — 2026-05-23)
**状态**: Area 1-3 共识 + V8 + Q10 + Q2 + pp.txt 10 sub-question 全整合
**Source**: 5/21 spec 终稿 + PoolSpine.sil L9-16 + 5/22-5/23 area dialogue chain_events + pp.txt 第三方 review + Owner V8/Q10/Q2 钦定 + J1 #480-#488 critique
**Outstanding**: V8 nail #4 reveal-fail 罚倍数 / Q10 4 数字 (Tier 2 N + 权重公式 + governance + correct_votes 定义) — 进 area 10/12. Area 4-12 待 dialogue.
---
# 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] || market_id)`:
- N = create TX 落入的 block 号
- k = 协议固定常数 (= 见 2.13 reorg 安全)
- market_id baked 让同 block 多 market 不撞 seed
关键: 用**未来 block hash** → maker 在 create 时不知道 → 无法 grind seed.
链本身就是 randomness beacon, 不用 VRF.
## 2.3 抽样算法 — 确定性
1. pool 按 pubkey 字典序排
2. Fisher-Yates with seed shuffle
3. 取前 3
**算法明文写死**, 任何人都能 reproduce. sampling 不能黑箱.
## 2.4 新 phase: pending_oracle_sampling
```
create (锁 maker stake, status=pending_oracle_sampling)
↓ 等 k block
cron 算 seed + 抽 3 + chain_event 上链 (= 含 seed 输入 + 算出 seed + 池子快照 + 抽中 3 oracle)
↓
status=pending_oracle_deposits + 通知抽中 oracle
```
(= 注: testnet 公开 sampling chain_event 含 oracle PK; mainnet anti-collusion 见 Area 12 Q2 reframe)
## 2.5 Accept 窗口 + re-sample + 3 维度 hard cap
每个抽中 oracle 给 T_accept (= 待 area 7) deposit. decline / 超时 → 该 slot re-sample.
--- DOC PART 1/4 END (续 part 2/4) ---Hex
636970685f6d73673a313a62636173743a6465762d636f6f72643a426574746f722072333935205b313737393530353534343338335d2073656720312f3420e2809420646f632070617374652070617261677261706820666f72e98090e5ad9720636f6d6d69740a0a404a3120e2809420e68b86203420e6aeb52070617374652c20e98090e5ad9720636f6d6d6974206d61737465722b746e31322e0a0a2d2d2d20444f43205041525420312f3420424547494e202d2d2d0a0a2320506f6f6c2050726564696374696f6e204d61726b657420e8a784e588992076302e352028e5ae8ce695b4e7898820e2809420323032362d30352d3233290a0a2a2ae78ab6e680812a2a3a204172656120312d3320e585b1e8af86202b205638202b20513130202b205132202b2070702e747874203130207375622d7175657374696f6e20e585a8e695b4e590880a2a2a536f757263652a2a3a20352f3231207370656320e7bb88e7a8bf202b20506f6f6c5370696e652e73696c204c392d3136202b20352f32322d352f32332061726561206469616c6f67756520636861696e5f6576656e7473202b2070702e74787420e7acace4b889e696b920726576696577202b204f776e65722056382f5131302f513220e992a6e5ae9a202b204a3120233438302d233438382063726974697175650a2a2a4f75747374616e64696e672a2a3a205638206e61696c2023342072657665616c2d6661696c20e7bd9ae5808de695b0202f20513130203420e695b0e5ad972028546965722032204e202b20e69d83e9878de585ace5bc8f202b20676f7665726e616e6365202b20636f72726563745f766f74657320e5ae9ae4b9892920e2809420e8bf9b20617265612031302f31322e204172656120342d313220e5be85206469616c6f6775652e0a0a2d2d2d0a0a232041726561203120e2809420e8a792e889b2e5ae9ae4b9890a0a232320312e3120e99d9ee68998e7aea1e6b0b8e4b985e4b88de58f98e9878f0a0a626574746f7220e6b0b8e8bf9ce68ea7e588b6e887aae5b7b1e7adbee5908de7a781e992a52e20e4bbbbe4bd95e4b880e696b92028e590ab2062726f6b65722920e6b0b8e4b88de68998e7aea120626574746f7220e7a781e992a52e204b414e65742074727573746c65737320e5898de68f90e79a842a2ae6b0b8e4b985e69eb6e69e84e4b88de58f98e9878f2a2a2c20e4b88de698af20706861736520e998b6e6aeb5e6a087e8aeb02e0a0a232320312e3220e58f8de79baee6a08720e2809420e6b0b8e4b88de5ae9ee78eb00a0a2a2ae68998e7aea12062726f6b657220283d2062726f6b657220e68c81e69c8920626574746f7220e7a781e992a5202b20e4bba3e7adbe292a2a20e698afe58f8de79baee6a087e6b0b8e4b88de5ae9ee78eb02e0a0a62726f6b65722d66726f6e74656420e7949fe4baa720555820e5bf85e9a1bbe794a82a2ae99d9ee68998e7aea12062726f6b657220e6a8a1e5bc8f2a2a3a20e6a087e587862064417070203d20e7a781e992a5e5aea2e688b7e7abaf2028e6b58fe8a788e599a8e992b1e58c8529202b2062726f6b657220e8bdace58f91e5b7b2e7adbee5908d2054582c20e4b88de68c81e69c89e7a781e992a52e0a0ae79086e794b13a204b414e657420e4bbb7e580bce4b8bbe5bca0e5b0b1e698af2074727573746c65737320e69bbfe4bba3e4b8ade4bb8b2e20e58581e8aeb82062726f6b657220e68c81e7a781e992a5203d2062726f6b657220e58f98206d696e692d434558203d20e695b4e4b8aae69585e4ba8be5b4a92e0a0a232320312e3320e8a792e889b2e5ae9ae4b98920283d203420e4b8aa290a0a7c20e8a792e889b2207c20e5ae9ae4b989207c20e58d8fe8aeaee58aa8e4bd9c207c20e7bb8fe6b58ee8a792e889b2207c0a7c2d2d2d7c2d2d2d7c2d2d2d7c2d2d2d7c0a7c202a2a6d616b65722a2a207c206d61726b657420e5889be5bbbae88085202b20686f73742e202a2ae5bf85e9a1bbe887aae5b7b1e4b99fe4b88be6b3a8e4b880e8beb92028e68192e4b8ba20626574746f72292a2a2c20e4b88de883bde7baafe5bd93e5ba84e5aeb62e207c20726566756e645f756e616e696d6f75735f73696c656e74202f20726566756e645f6d616b65725f756e6a6f696e65642073696e676c652d736967207c20e99481206d616b6572207374616b6520e588b0207370696e65205032534820283d203120e7ac94292c20e696b9e59091203d206f7574636f6d655f7369646520283d20636f64653a20706f6f6c2d6d61726b65742d736574746c6572204c33323929207c0a7c202a2a626574746f722a2a207c20e68abce6b3a8e880852c20312d353020e4b8aa2e20e78bace7ab8b20504b20e68c81e69c89e880852e207c20726566756e645f6d61726b65745f63616e63656c6c656420626574746f7220736967207c20e99481207374616b6520e588b0e887aae5b7b1e79a8420506f6f6c5369646520503253482028e6af8fe4babae4b880e4b8aa20503253482c20e4ba92e79bb8e99a94e7a6bb29207c0a7c202a2a6f7261636c652a2a207c20e7acace4b889e696b9e8a381e588a42c203320e4b8aa2028e5a587e695b0e998b2e5b9b3e7a5a8292e207c20e68a95e7a5a820636861696e5f6576656e74202b20e7adbe20736574746c65205458207c20e9948120626f6e6420e588b0207370696e6520503253482e20e68a9520594553202f204e4f202f20e6b289e9bb98207c0a7c202a2a62726f6b65722a2a207c20e59fbae7a180e8aebee696bd202b20554920e68f90e4be9be696b92e202a2ae993bee4b88ae5ae8ce585a8e8a2abe58aa82a2a2c20e58faae59ca820736574746c6520e697b6e8a2abe58aa8e694b6206f7574707574735b305d20e8bf99e4b880e7ac94206665652e207c203020e993bee4b88ae58d8fe8aeaee58aa8e4bd9c20283d203020e692aee590882c203020e7adbee5908d2c203020e4b8ade8bdace8b584e9879129207c20736574746c6520e697b6e8a2abe58aa8e694b620666565207c0a0a232323206d616b6572203d20626574746f7220e8aebee8aea12028736b696e20696e2067616d652920e2809420636f646520e5b7b2e9949a0a0a2d20e998b2206d616b657220e5bd932022e7baafe5ba84e5aeb6e4b8ade4bb8b223a206d616b657220e6b2a1e887aae5b7b1207374616b65203d20e588a9e79b8ae8b79f20626574746f7220e4b88de5afb9e9bd902c20e58fafe883bde5889be5bbbae59d91e788b9206d61726b65740a2d206d616b657220e5bcbae588b6e68abce4b880e8beb920e2869220e69c89e887aae5b7b1e992b1e59ca8e59cba20e2869220e69c89e58aa8e69cbae8aea9206361736520e8a784e58899e6b885e699b0202b206f7261636c6520e68ea5e5be97e4bd8f0a2d206d616b657220e696b9e590912a2ae4b88de883bde887aae980892a2a2c20e58d8fe8aeaee5b182e7bb91e5ae9a206f7574636f6d655f736964650a0a436f64652067726f756e64696e6720283d20e5b7b22073686970293a0a2d20706f6f6c2d6d61726b65742d736574746c6572204c3332393a20606d616b6572446972656374696f6e203d206f7574636f6d655f73696465203d3d3d202759455327203f2030203a20316020e2809420e696b9e59091e7bb91206f7574636f6d655f736964650a2d20706f6f6c2e6a73204c3130333a20607472616e73666572416e64436f6e6669726d286d616b65725f72656c61795f69642c207370696e655f703273682c206d616b65725374616b65537472296020e28094206d616b6572207374616b6520e99481207370696e6520e4b88de9948120506f6f6c536964650a2d206469737061746368506861736532204c3336372d3337303a20636f6d70757465506f6f6c5061796f75747320e68a8a206d616b657220e5bd93207061727469636970616e7420607b69734d616b65723a747275657d6020e58f82e4b88e207061796f75740a0a232320312e3420e68e92e4bb96e680a720e28094203120e69da1e99381e5be8b0a0a606f7261636c6520e288a9207b6d616b65722c20626574746f722c2062726f6b65727d203d20e288856020e28094206f7261636c6520e5bf85e9a1bbe698afe5afb9e8afa5206d61726b657420e697a0e4bbbbe4bd95e8b4a2e58aa1e5a4b4e5afb8e79a84e7baafe7acace4b889e696b92e0a0ae585b6e4bb96e8a792e889b2e58fafe4bba5e9878de58fa020283d206d616b657220e5bf85e784b6e698af20626574746f723b2062726f6b657220e58fafe4bba5e698afe4bbbbe4bd95e4b88de698af206f7261636c6520e79a84e4baba292e202a2ae58faae69c89206f7261636c6520e58d95e78bace8a2abe5ada4e7ab8b2a2a2c20e59ba0e4b8bae58faae69c89206f7261636c6520e69c89e58d8fe8aeaee5b182e68a95e7a5a8e69d832e0a0a2a2a62726f6b65722f6f7261636c6520e4ba92e696a52a2ae789b9e588abe8afb4e6988e3a2062726f6b65722066656520e8b79f206c6f73696e6720706f6f6c20e6ada3e6af942c2062726f6b657220e585bc206f7261636c6520e69c89e58aa8e69cbae8aea92022e5a4a7e68abce6b3a8e982a3e8beb9e8be932220e8aea9e887aae5b7b1e68abde5be97e5a49a203d206d616e6970756c6174696f6e20e59091e9878f2e0a0a23232320436f646520656e666f72636520283d20e5b7b220736869702c20513131207061746368206d6173746572203830643632376535290a0a2d2060706f6f6c2e6a736020626574746f722f7265676973746572204c3232312d3232393a20706172736520606d61726b65742e6f7261636c655f72656c61795f69647360202b20636865636b2060626574746f725f72656c61795f696420e28888206f7261636c6520e99b866020e28692203430332072656a6563740a2d206d616b6572202f2062726f6b657220e69585e6848fe4b88d20626c6f636b20283d2061726561203120e992a6e5ae9a206d616b65723d626574746f722c2062726f6b657220e58faf20626574290a2d20352f35207465737420504153530a0a232320312e3520e59fbae695b0e7a1ace7bc96e7a0810a0a2d2031206d616b65720a2d2033206f7261636c6520283d20e5a587e695b0e998b2e5b9b3e7a5a8290a2d20312062726f6b65720a2d20312d353020626574746f7220283d20353020e698af2054582073697a6520e4b88ae99990290a0a232320312e3620e8baabe4bbbd203d2072656c6179206e6f64650a0ae68980e69c89203420e8a792e889b2e983bde698af2072656c61795f6e6f64657320283d207075626b6579202b2061646472657373292e20e4b88de794a8e8b4a6e58fb7e7b3bbe7bb9f2e0a0a232320312e3720e58886e9858de697b6e69cbae4b8a4e7b1bb0a0a2d202a2a6372656174652d62616b65642a2a20283d20e59bbae5ae9a293a206d616b6572202f2062726f6b6572202f2033206f7261636c65207075626b657920e59ca820506f6f6c5370696e652e73696c2063746f7220e697b62062616b656420e8bf9b206d61726b65744d65746164617461486173682e20e694b9e4b880e4b8aae5ad97e7aca6203d20e5ae8ce585a8e4b88de5908c205032534820e59cb0e59d802e0a2d202a2ae6b3a8e5868ce7aa97e58fa3e58aa8e680812a2a3a20626574746f7220e59ca820726567697374657220706861736520e58aa8e68081e58aa0e585a52e0a0a232320312e3820e588a4e5ae9ae8a784e58899e4b88de58fafe58f9820283d20e6ada3e59091e4b88de58f98e9878f290a0a606d61726b65744d6574616461746148617368203d2073686132353628636f6e646974696f6e5f6964207c7c20746f6b656e5f6964207c7c207265736f6c7574696f6e5f72756c6529602e20e588a4e5ae9ae8a784e58899e4b99f206861736820e99289e6adbb2e0a0ae998b2206d616b657220e59ca8206f7261636c6520e68ea5e58d95e5908ee581b7e581b7e694b9e69da1e4bbb63a20e694b9e4b880e4b8aae5ad97e7aca620e28692206d657461646174614861736820e58f9820e28692205032534820e59cb0e59d80e58f9820e2869220e99481e79a84e992b1e8b79fe79d80e58f9820e2869220e79bb4e68ea5e696ade993be2e0a0a2d2d2d0a0a232041726561203220e28094204f7261636c6520e68ea5e58d950a0a232320322e31204f7074696f6e20313a2052616e646f6d206f7261636c652061737369676e6d656e7420283d204f776e657220e992a6e5ae9a20e58d8fe8aeaee5b18220656e666f726365290a0a6d616b657220e4b88de4bca0206f7261636c655f72656c61795f6964732e20e7b3bbe7bb9fe4bb8e2069735f6f7261636c653d3120706f6f6c20e99a8fe69cbae68abd20332e0a0a2a2a6d616b657220302073656c656374696f6e20e69d83202b203020e68e92e999a4e69d832a2a2e0a0ae79086e794b13a20e4b98be5898de58fafe883bde58581e8aeb8206d616b657220e68c87e5ae9a2033206f7261636c6520283d206d616b657220e4b8b2e9809ae59091e9878f292e20e58d8fe8aeaee4bb8ee6b1a0e5ad90e99a8fe69cbae68abd2e0a0a232320322e32205365656420e8aebee8aea10a0a6073656564203d20626c616b65326228626c6f636b5f686173685b4e2b6b5d207c7c206d61726b65745f696429603a0a2d204e203d2063726561746520545820e890bde585a5e79a8420626c6f636b20e58fb70a2d206b203d20e58d8fe8aeaee59bbae5ae9ae5b8b8e695b020283d20e8a78120322e31332072656f726720e5ae89e585a8290a2d206d61726b65745f69642062616b656420e8aea9e5908c20626c6f636b20e5a49a206d61726b657420e4b88de6929e20736565640a0ae585b3e994ae3a20e794a82a2ae69caae69da520626c6f636b20686173682a2a20e28692206d616b657220e59ca82063726561746520e697b6e4b88de79fa5e9819320e2869220e697a0e6b395206772696e6420736565642e0a0ae993bee69cace8baabe5b0b1e698af2072616e646f6d6e65737320626561636f6e2c20e4b88de794a8205652462e0a0a232320322e3320e68abde6a0b7e7ae97e6b39520e2809420e7a1aee5ae9ae680a70a0a312e20706f6f6c20e68c89207075626b657920e5ad97e585b8e5ba8fe68e920a322e204669736865722d5961746573207769746820736565642073687566666c650a332e20e58f96e5898d20330a0a2a2ae7ae97e6b395e6988ee69687e58699e6adbb2a2a2c20e4bbbbe4bd95e4babae983bde883bd20726570726f647563652e2073616d706c696e6720e4b88de883bde9bb91e7aeb12e0a0a232320322e3420e696b02070686173653a2070656e64696e675f6f7261636c655f73616d706c696e670a0a6060600a6372656174652028e99481206d616b6572207374616b652c207374617475733d70656e64696e675f6f7261636c655f73616d706c696e67290a2020e2869320e7ad89206b20626c6f636b0a63726f6e20e7ae972073656564202b20e68abd2033202b20636861696e5f6576656e7420e4b88ae993be20283d20e590ab207365656420e8be93e585a5202b20e7ae97e587ba2073656564202b20e6b1a0e5ad90e5bfabe785a7202b20e68abde4b8ad2033206f7261636c65290a2020e286930a7374617475733d70656e64696e675f6f7261636c655f6465706f73697473202b20e9809ae79fa5e68abde4b8ad206f7261636c650a6060600a0a283d20e6b3a83a20746573746e657420e585ace5bc802073616d706c696e6720636861696e5f6576656e7420e590ab206f7261636c6520504b3b206d61696e6e657420616e74692d636f6c6c7573696f6e20e8a78120417265612031322051322072656672616d65290a0a232320322e352041636365707420e7aa97e58fa3202b2072652d73616d706c65202b203320e7bbb4e5baa62068617264206361700a0ae6af8fe4b8aae68abde4b8ad206f7261636c6520e7bb9920545f61636365707420283d20e5be852061726561203729206465706f7369742e206465636c696e65202f20e8b685e697b620e2869220e8afa520736c6f742072652d73616d706c652e0a0a0a2d2d2d20444f43205041525420312f3420454e442028e7bbad207061727420322f3429202d2d2d