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