"h" 标签——这是一个确定性的会话 ID,用于将对话与其根挂单及涉及的双方绑定起来。
为什么需要会话 ID?
挂单是可替换事件(kind31001),这意味着底层挂单事件的 ID 在挂单更新时可能会发生变化。需要一个稳定的会话 ID,以便即使根挂单已被重新发布,完整的报价历史仍然可以被可靠地查询。
会话 ID 还是与参与方相关的:两个不同的贸易伙伴就同一挂单进行报价时,各自将拥有不同的会话 ID。这样可以确保对话在各参与者组合之间保持私密和隔离。
会话 ID 计算
给定event_id、pubkey1、pubkey2(均为 64 位十六进制小写),其中 event_id 是根挂单事件 ID,pubkey1/pubkey2 是对话的两名参与者:
- 验证
event_id非空(如需强制格式,则为 64 位十六进制)。 - 规范化顺序:
pk_lo = min(pubkey1, pubkey2);pk_hi = max(pubkey1, pubkey2)(按字典序)。 - 拼接(不使用分隔符):
raw = event_id + pk_lo + pk_hi。 - 哈希:
sha256(raw);编码为小写十六进制 →thread_id。

