이 프로젝트는 현재 동작하지 않습니다. 또한, 이 프로젝트는 개발자 사정으로 인하여 더이상 관리되지 않습니다. 관심을 가져주신 모든 분들께 사과의 말씀을 전합니다. 죄송합니다.
HeVote는 동형암호를 사용한 이더리움 기반 전자투표 시스템(ÐApp)입니다.
HeVote는 전자투표의 개설부터 투표, 집계까지 할 수 있습니다. 이더리움의 블록체인을 사용하여 투표 내역을 적은 비용으로 안전하게 저장합니다. 동형암호 라이브러리인 HElib으로 사용자가 투표한 내역을 암호화하고, 암호화된 상태에서도 투표 집계를 가능케 하여 비밀선거의 원칙을 지키도록 했습니다. IPFS 프로토콜을 사용하여 이더리움 트랜잭션의 비용을 줄이고, 동형암호 파일을 탈중앙화하여 저장합니다. Express.js + mongoDB를 사용한 정적 웹으로 사용자에게 쉽고 편리하게 전자투표 서비스를 제공할 수 있습니다.
- 이더리움: 안전하게 투표 내역을 저장
- 동형암호: 투표 내역을 암호화하여 저장하므로 해킹에 안전
- IPFS: 이더리움 트랜잭션 비용 감소
- 웹: 사용자에게 쉽고 간단한 투표 서비스를 제공
ÐApp 서버를 중심으로 이더리움, IPFS, MongoDB와 정보를 주고받으면서 사용자에게 전자투표 서비스를 제공합니다.
- 사용자: ÐApp 서버에 회원 및 선거, 투표에 관련된 서비스를 이용할 수 있습니다.
- ÐApp 서버: Express.js 정적 웹 서버로써, 사용자와 블록체인 및 DB 간의 징검다리 및 서비스 제공자의 역할을 합니다.
- HElib: 차세대 동형암호 라이브러리로, 투표내역을 암호화 & 복호화합니다.
- 이더리움: 선거 정보와 투표 내역을 저장합니다.
- MongoDB: 사용자의 정보와 선거 개설 신청 정보를 저장합니다.
- IPFS: 동형암호의 공개키나 암호문을 탈중앙화하여 저장합니다.
자세한 설명은 Detailed Features를 참고해주세요.
- 이더리움 지갑(Metamask, Mist, ...) 없이 ÐApp 사용 가능
- 동형암호를 통한 비밀 선거 보장
- 동형암호 공개키와 암호문을 IPFS에 저장
- 누구나 투표할 수 있는 선거
- 하나의 선거 당 하나의 스마트 컨트렉트
- 쉽고 빠른 투표
- 로그인 / 회원가입
- 편리한 선거 관리 (예정)
- 유권자 한정 선거 (예정)
Installation Guide를 참고하세요.
Getting Started를 참고하세요.
클릭하면 Youtube 시연영상으로 이동합니다.
TODO List에 향후 개발해야할 내역들을 포함하고 있습니다.
New Issue로 문의해주시고, 혹시 Pull Request 로 기여해주신다면 대단히 감사하겠습니다.
HeVote는 2018/11/1부터 Apache License 2.0 하에 관리됩니다.
- HElib: Apache License 2.0