ตรวจสอบการจับรางวัล
ทุกรอบผูกค่า seed แบบสุ่มไว้ก่อนเปิดรับ และเปิดเผยหลังจับรางวัล ใครก็ตามจึงคำนวณผลซ้ำเองด้วยมือได้
hmac-sha256/v1c9a96980f50309bfe1be807436747d8882976037a17b28cdcd84abbc03b1af37 ประกาศตอนเปิดรอบ ก่อนที่จะรู้สิทธิ์ของใคร · 11 ส.ค. 2569 18:5045bd26aa3698c51784bdd9d12d0bddaac532d4c1e9413f282f629e118bb9b539 เปิดเผยเมื่อ · 1 ก.ย. 2569 18:555c29286c73522f0129e1cfe61c223eafba9f33943e51436f5fca6338b65447f11,028
8
แฮชของสิทธิ์ที่คำนวณใหม่ตรงกับค่าที่ผนึกไว้
ผู้ชนะ
- 1 00****0006 สิทธิ์ที่ #905 ฿5,000.00
- 2 00****0000 สิทธิ์ที่ #235 ฿3,000.00
- 3 00****0003 สิทธิ์ที่ #216 ฿2,000.00
วิธีคำนวณผลซ้ำด้วยตัวเอง
doc = "giveaway:<giveaway_id>\n" + "<user_id>:<entries>:<range_start>\n" for every row in ascending user_id order + "total:<entries_total>\n"; entries_hash = hex(sha256(utf8(doc)))remaining_k = entries_total - sum(entries of the winners of ranks 1..k-1); msg_k = "<giveaway_id>:<entries_hash>:<k>"; ticket_k = big_endian_uint64(hmac_sha256(seed_bytes, msg_k)[0:8]) mod remaining_kWalk the snapshot rows in ascending user_id order, skipping anybody who already won a lower rank without counting their entries. The first row where ticket_k < accumulated + entries holds the winning ticket. ticket_index is therefore a position inside the squeezed range for rank k, not inside the round's original range.
This publishes enough to check that the winner follows from the committed seed, and enough to check your own row against the ledger. It does not let you check that the list of everybody's entries is complete, because publishing the whole document would publish every other member's entries.