演示站 · 目前展示的是合成占位签文(自行虚构,不是任何真实签诗)

觀音靈籤

静心 · 默念 · 摇筒 · 得籤

求籤

籤

默念所问

心中默念所问之事即可。下方选择的事项只用来挑选对应的传统断语,不参与抽签。

签筒封印 commitment
正在封印…

这是抽签种子的 SHA-256。它在你按下“摇签”之前就已经显示,之后不能更改。

公开抽签方法

  1. 先封印。开始求签时先生成 32 字节随机种子 server_seed,只公布它的 SHA-256(封印值 commitment)。
  2. 后提交。你按下“摇签”时由你的设备生成随机数 client_nonce。种子在此之前已被封印,无法针对你的随机数调整。
  3. 固定公式。HMAC-SHA256(server_seed, "fair-draw/v1|" + hex(client_nonce) + "|" + canonicalJSON(params)) 派生出随机流,再用拒绝采样取一个均匀整数。
    正式版:lot = uniformInt(stream, 100) + 1,params = {app, algorithm: "lot-draw-v1", corpus_version}。
  4. 事项不参与。所问事项与你写的任何文字都不进入 params,因此无法影响是哪一签。
  5. 揭示并复算。抽完后公开 server_seed,任何人都能核对 SHA-256 等于封印值,并重新算出同一个签号。

关于本演示:演示站里“封印”和“揭示”都在你的浏览器内完成,用来展示流程与算法;正式版本由服务端先公布封印值。演示语料只有 3 支,因此演示抽签使用算法名 lot-draw-demo-v1(lot_count = 3);正式版本是 100 支的 lot-draw-v1。

自己动手复算(正式 lot-draw-v1,1–100)

关于签文与出处