Giter VIP home page Giter VIP logo

hevote's Introduction

HeVote

Deprecated

이 프로젝트는 현재 동작하지 않습니다. 또한, 이 프로젝트는 개발자 사정으로 인하여 더이상 관리되지 않습니다. 관심을 가져주신 모든 분들께 사과의 말씀을 전합니다. 죄송합니다.

HeVote license:Apache License 2.0

HeVote는 동형암호를 사용한 이더리움 기반 전자투표 시스템(ÐApp)입니다.

Introduction

HeVote는 전자투표의 개설부터 투표, 집계까지 할 수 있습니다. 이더리움의 블록체인을 사용하여 투표 내역을 적은 비용으로 안전하게 저장합니다. 동형암호 라이브러리인 HElib으로 사용자가 투표한 내역을 암호화하고, 암호화된 상태에서도 투표 집계를 가능케 하여 비밀선거의 원칙을 지키도록 했습니다. IPFS 프로토콜을 사용하여 이더리움 트랜잭션의 비용을 줄이고, 동형암호 파일을 탈중앙화하여 저장합니다. Express.js + mongoDB를 사용한 정적 웹으로 사용자에게 쉽고 편리하게 전자투표 서비스를 제공할 수 있습니다.

Advantage

  • 이더리움: 안전하게 투표 내역을 저장
  • 동형암호: 투표 내역을 암호화하여 저장하므로 해킹에 안전
  • IPFS: 이더리움 트랜잭션 비용 감소
  • 웹: 사용자에게 쉽고 간단한 투표 서비스를 제공

Architecture

ÐApp 서버를 중심으로 이더리움, IPFS, MongoDB와 정보를 주고받으면서 사용자에게 전자투표 서비스를 제공합니다.

  • 사용자: ÐApp 서버에 회원 및 선거, 투표에 관련된 서비스를 이용할 수 있습니다.
  • ÐApp 서버: Express.js 정적 웹 서버로써, 사용자와 블록체인 및 DB 간의 징검다리 및 서비스 제공자의 역할을 합니다.
  • HElib: 차세대 동형암호 라이브러리로, 투표내역을 암호화 & 복호화합니다.
  • 이더리움: 선거 정보와 투표 내역을 저장합니다.
  • MongoDB: 사용자의 정보와 선거 개설 신청 정보를 저장합니다.
  • IPFS: 동형암호의 공개키나 암호문을 탈중앙화하여 저장합니다.

Features

자세한 설명은 Detailed Features를 참고해주세요.

  • 이더리움 지갑(Metamask, Mist, ...) 없이 ÐApp 사용 가능
  • 동형암호를 통한 비밀 선거 보장
  • 동형암호 공개키와 암호문을 IPFS에 저장
  • 누구나 투표할 수 있는 선거
  • 하나의 선거 당 하나의 스마트 컨트렉트
  • 쉽고 빠른 투표
  • 로그인 / 회원가입
  • 편리한 선거 관리 (예정)
  • 유권자 한정 선거 (예정)

Installation

Installation Guide를 참고하세요.

Getting Started

Getting Started를 참고하세요.

Demo

HeVote 시연영상

클릭하면 Youtube 시연영상으로 이동합니다.

TODO

TODO List에 향후 개발해야할 내역들을 포함하고 있습니다.

References

Contribute

New Issue로 문의해주시고, 혹시 Pull Request 로 기여해주신다면 대단히 감사하겠습니다.

License

HeVote는 2018/11/1부터 Apache License 2.0 하에 관리됩니다.

hevote's People

Contributors

tkddn204 avatar mjhea0 avatar john-lin avatar kluge121 avatar airato avatar twosevenzero avatar hyeinu avatar jackrobson avatar sebastianrjay avatar

Watchers

James Cloos avatar  avatar  avatar

Forkers

tkddn204

hevote's Issues

최신 Helib를 사용할 때 빌드시 오류

~/HeVote/app/hec$ make all
HElib requires NTL version 10.0.0 or higher, see http://shoup.net/ntl
If you get compilation errors, try to add/remove -std=c++11 in Makefile
g++ -g -O2 -std=c++11 -pthread -DFHE_THREADS -DFHE_BOOT_THREADS -fmax-errors=2 -IHElib/src -o bin/createKeys src/createKeys.cpp HElib/src/fhe.a -L/usr/local/lib -lntl -lgmp -lm
src/createKeys.cpp: In function ‘int main(int, char**)’:
src/createKeys.cpp:35:5: error: ‘string’ was not declared in this scope
     string owner = "owner";
     ^~~~~~
src/createKeys.cpp:35:5: note: suggested alternatives:
In file included from /usr/include/c++/7/iosfwd:39:0,
                 from /usr/include/c++/7/ios:38,
                 from /usr/include/c++/7/istream:38,
                 from /usr/include/c++/7/fstream:38,
                 from src/createKeys.cpp:2:
/usr/include/c++/7/bits/stringfwd.h:74:33: note:   ‘std::__cxx11::string’
   typedef basic_string<char>    string;
                                 ^~~~~~
/usr/include/c++/7/bits/stringfwd.h:74:33: note:   ‘std::__cxx11::string’
/usr/include/c++/7/bits/stringfwd.h:74:33: note:   ‘std::__cxx11::string’
src/createKeys.cpp:36:12: error: expected ‘;’ before ‘dir’
     string dir = "data";
            ^~~
compilation terminated due to -fmax-errors=2.
Makefile:54: recipe for target 'bin/createKeys' failed
make: *** [bin/createKeys] Error 1
~/HeVote/app/hec$

Helib의 `make check` 오류 발생

인스톨 가이드에 따라 설치 중 HElib에서 make check 시 해당 오류가 발생함

/HeVote/app/hec/HElib/src$ make check
HElib requires NTL version 10.0.0 or higher, see http://shoup.net/ntl
Some functionality also needs Armadillo, see http://arma.sourceforge.net/

make check_General
make[1]: Entering directory '/home/soto/HeVote/app/hec/HElib/src'
HElib requires NTL version 10.0.0 or higher, see http://shoup.net/ntl
Some functionality also needs Armadillo, see http://arma.sourceforge.net/

g++ -std=c++11 -pthread -g -O2   -DFFT_ARMA -DFHE_THREADS -DFHE_BOOT_THREADS -fmax-errors=4  -o Test_General_x Test_General.cpp fhe.a   -lntl -lgmp -larmadillo -lm
/usr/bin/ld: _ZN3NTL8GF2EInfoE: TLS reference in fhe.a(NumbTh.o) mismatches non-TLS definition in /usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libntl.so section .bss
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libntl.so: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
Makefile:184: recipe for target 'Test_General_x' failed
make[1]: *** [Test_General_x] Error 1
make[1]: Leaving directory '/home/soto/HeVote/app/hec/HElib/src'
Makefile:73: recipe for target 'check' failed
make: *** [check] Error 2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.