circom 회로에 사용하는 Groth16, PLONK, FFLONK zkSNARK 증명을 생성하고 검증하는 JavaScript 및 WebAssembly 라이브러리입니다.
TrustLevel/ZK-Voting-App
Cardano에서 영지식 증명으로 투표자의 소속을 확인하고 투표는 익명으로 유지하는 개인정보 보호형 온체인 투표 앱입니다.
- 스타
- 5
- 포크
- 4
- 열린 이슈
- 0
- 마지막 커밋
- 3일 전
어떤 프로젝트인가요?
ZK Voting App은 Cardano 블록체인 기반의 투표 애플리케이션입니다. 주최자는 이벤트를 만들고 참가자를 이메일로 초대한 뒤, 투표 컨트랙트를 온체인에 게시합니다. 각 참가자는 브라우저에서 Semaphore identity를 생성하고 공개 커밋을 등록한 다음, Groth16 영지식 증명을 첨부해 투표합니다. 이 증명은 투표자가 등록된 그룹에 속해 있음을 보여 주며, 중복 투표를 막는 일회용 nullifier도 포함합니다. 따라서 제출된 투표를 투표자와 연결할 수 없습니다.
앱은 간단 투표(1인당 한 가지 선택)와 가중 투표(정해진 점수를 여러 선택지에 배분)를 지원합니다. 백엔드가 투표 트랜잭션을 생성하고 제출하므로 투표자에게는 지갑이나 ADA가 필요하지 않습니다. 이벤트는 Cardano Mainnet 또는 Preprod 테스트넷에서 진행할 수 있으며, 주최자가 이벤트 생성 시 네트워크를 선택합니다. 투표 기간이 끝나면 온체인에서 집계 결과를 확인할 수 있습니다.
저장소는 Aiken 스마트 컨트랙트, SQLite 및 LevelDB를 사용하는 NestJS 백엔드, Next.js 프런트엔드, 트랜잭션 빌더, ZK 증명 모듈로 구성되어 있습니다.
핵심 기능
- 01Semaphore 기반 Groth16 영지식 증명을 통한 익명 투표
- 02일회용 nullifier로 중복 투표 방지
- 03간단 투표 및 가중 투표 모드
- 04투표자에게 지갑이나 ADA가 필요 없으며, 백엔드가 트랜잭션을 제출
- 05Cardano에서 최종 집계 결과를 공개적으로 검증 가능
활용 사례
- 참가자의 선택을 비공개로 유지해야 하는 구속력 있는 비공개 그룹 투표 진행
- 온체인에서 변조 여부를 확인할 수 있는 결과를 원하는 조직의 구성원 투표 운영
- Preprod 테스트넷에서 무료로 익명 온체인 투표 체험
빠른 시작
- 1
모든 워크스페이스를 설치합니다
npm install - 2
환경 변수를 설정합니다(백엔드에는 Blockfrost 키와 자금이 충전된 릴레이 지갑이 필요합니다)
cp src/backend/.env.example src/backend/.env && cp src/frontend/.env.example src/frontend/.env.local - 3
백엔드를 포트 3000에서 시작합니다
cd src/backend && npm run start:dev - 4
프런트엔드를 포트 3002에서 시작합니다
cd src/frontend && npm run dev
사용 전 알아둘 점
- 로컬에서 실행하려면 Blockfrost API 키와 자금이 충전된 Preprod 릴레이 지갑이 필요합니다.
- Mainnet에서는 주최자가 약 15 ADA와 수수료를 부담하며, 투표자 1명당 1.3 ADA의 보증금이 필요합니다.
- GitHub용 SSH 키가 없거나 git URL을 HTTPS로 다시 쓰도록 먼저 설정하지 않으면 설치가 실패할 수 있습니다.
포함된 컬렉션
토픽
자주 묻는 질문
- ZK-Voting-App은(는) 무엇인가요?
- Cardano에서 영지식 증명으로 투표자의 소속을 확인하고 투표는 익명으로 유지하는 개인정보 보호형 온체인 투표 앱입니다. ZK Voting App은 Cardano 블록체인 기반의 투표 애플리케이션입니다. 주최자는 이벤트를 만들고 참가자를 이메일로 초대한 뒤, 투표 컨트랙트를 온체인에 게시합니다. 각 참가자는 브라우저에서 Semaphore identity를 생성하고 공개 커밋을 등록한 다음, Groth16 영지식 증명을 첨부해 투표합니다. 이 증명은 투표자가 등록된 그룹에 속해 있음을 보여 주며, 중복 투표를 막는 일회용 nullifier도 포함합니다. 따라서 제출된 투표를 투표자와 연결할 수 없습니다.
- ZK-Voting-App은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- ZK-Voting-App은(는) Apache-2.0 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- ZK-Voting-App은(는) 아직 유지보수되고 있나요?
- 활발히 유지보수 중. ZK-Voting-App의 마지막 커밋은 2026년 11월 4일입니다.
- ZK-Voting-App은(는) 어디에 사용할 수 있나요?
- 참가자의 선택을 비공개로 유지해야 하는 구속력 있는 비공개 그룹 투표 진행 온체인에서 변조 여부를 확인할 수 있는 결과를 원하는 조직의 구성원 투표 운영 Preprod 테스트넷에서 무료로 익명 온체인 투표 체험
- ZK-Voting-App는 어떻게 설치하나요?
- 모든 워크스페이스를 설치합니다: npm install 환경 변수를 설정합니다(백엔드에는 Blockfrost 키와 자금이 충전된 릴레이 지갑이 필요합니다): cp src/backend/.env.example src/backend/.env && cp src/frontend/.env.example src/frontend/.env.local 백엔드를 포트 3000에서 시작합니다: cd src/backend && npm run start:dev 프런트엔드를 포트 3002에서 시작합니다: cd src/frontend && npm run dev
- ZK-Voting-App은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/TrustLevel/ZK-Voting-App
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
영지식 애플리케이션을 위한 Aleo 네트워크를 구동하는 탈중앙화 운영체제 및 노드 소프트웨어입니다.
Rust 및 기타 LLVM 컴파일 언어로 작성된 프로그램의 올바른 실행을 증명하는 영지식 가상 머신입니다.
브라우저, Node 또는 Mina Protocol용으로 증명과 검증을 수행하는 영지식 회로 및 zkApps 개발용 TypeScript 프레임워크입니다.
브라우저에서 AES-256-GCM으로 암호화하고 한 번 읽거나 24시간이 지나면 사라지는 종단 간 암호화 pastebin
자동 삭제 링크로 일회용 비밀번호, API 키, 텍스트와 암호화 파일을 자체 호스팅 방식으로 안전하게 공유합니다.