ตรวจสอบการจับรางวัล
ทุกรอบผูกค่า seed แบบสุ่มไว้ก่อนเปิดรับ และเปิดเผยหลังจับรางวัล ใครก็ตามจึงคำนวณผลซ้ำเองด้วยมือได้
hmac-sha256/v1b8bba9c1548da3da20786544d0782ba2e6732459c941f14243b65895e8f014e4 ประกาศตอนเปิดรอบ ก่อนที่จะรู้สิทธิ์ของใคร · 1 ก.ย. 2569 07:00รอบนี้ยังไม่ได้จับรางวัล จึงยังไม่มี seed ให้เปิดเผย
วิธีคำนวณผลซ้ำด้วยตัวเอง
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.