누가 뽑아도 같은 규칙입니다.
사용자 이름, 등급, 구매 이력은 당첨 결과를 정하는 값으로 사용되지 않습니다.
코드에서 확인 →결과를 고르거나 바꾸는 기능은 코드 어디에도 없습니다.
누구나 열어 보고, 그대로 가져다 쓸 수 있습니다.
파일 받기 → 쓰시던 AI에 파일 올리기 → 검토 결과 확인
파일 안에 검토할 코드가 그대로 들어 있어, 인터넷 검색 기능이 없는 AI에서도 공개된 동일 버전의 코드를 기준으로 검토됩니다.
우나쿠지 공개 · MIT 라이선스 · 누구나 사용 가능 · 검토 버전 42700d0
판매 전에 잠근 값과 지금 배치가 정확히 일치합니다.
sha256-v1:95ee3c264dc9b67208ced136f71c2cd18b1e71ddf94831c716701298b6532179누를 때마다 서버가 현재 배치를 다시 계산합니다.
이때 만들어진 검증 코드가 그 박스의 지문이 됩니다. 배치가 한 장이라도 달라지면 코드가 완전히 달라집니다.
운영자도 배치를 바꿀 수 없습니다. 바꾸면 검증 코드가 달라져 그 자리에서 드러납니다.
전수 공개 대상 박스는 판매가 끝나면 배정 내역 전체를 공개합니다. 그 밖의 박스도 봉인 코드 검증은 언제든 하실 수 있습니다.
봉인하고 대조하는 이 방식도 우나쿠지가 공개한 코드 그대로입니다. 누구나 같은 계산을 직접 해볼 수 있습니다.
import { randomInt } from 'node:crypto';
export function secureShuffle<T>(items: readonly T[]): T[] {
const result = items.slice();
for (let i = result.length - 1; i > 0; i--) {
let j: number;
try {
j = randomInt(0, i + 1);
} catch (cause) {
throw kujiError('RNG_FAILURE',
'Secure random number generation failed while shuffling ticket assignment.',
{ cause: cause instanceof Error ? cause.message : String(cause) });
}
const a = result[i] as T;
const b = result[j] as T;
result[i] = b;
result[j] = a;
}
return result;
}이 엔진 코드만으로 실제 운영 서버의 권한 설정이나 배포 상태까지 공정하다고 보증하는 판단은 아닙니다.
코드 검토는 규칙이 공정한지를 확인합니다. 이 사이트가 그 규칙대로 돌고 있는지는 봉인 코드가 확인합니다. 둘을 같이 두는 이유입니다.
판매 전에 잠근 검증 코드와 지금 배치를 다시 계산한 값이 일치하면, 티켓에 배정된 상품이 판매 시작 이후 바뀌지 않았다는 뜻입니다. 데이터베이스를 직접 열어 한 장만 바꿔도 검증 코드가 완전히 달라지기 때문입니다.
AI 검토 질문에는 “데이터베이스에 저장된 배정은 공개된 코드로 만들어졌다”는 전제를 적어 두었습니다. 코드만 읽어서는 확인할 수 없는 부분이라 전제로 두고 답을 받습니다. 대신 그 배정이 판매 시작 이후 바뀌지 않았다는 사실은 위 봉인 증서로 직접 확인하실 수 있습니다.
봉인 검증이 확인하는 범위는 판매 전에 정해진 티켓별 상품 배정입니다.
추첨 방식을 설명하는 문서가 아니라, 직접 실행하고 검토하고 개발에 활용할 수 있는 엔진 소스 전체입니다. 다른 쿠지 서비스가 그대로 가져다 써도 괜찮습니다. 결과를 정할 수 없는 구조라는 확신이 없으면 애초에 공개할 수 없는 코드니까요.
공개한 버전은 저장소에 그대로 남습니다. 나중에 무엇이 어떻게 바뀌었는지도 누구나 확인할 수 있습니다.
검토 버전 42700d082786
AI가 코드를 읽지 못하면 검토용 소스를 첨부해 주세요. 코드·질문·다운로드는 같은 버전을 기준으로 합니다.
화면·결제·회원·배송 기능은 별도로 구현해야 합니다.