- 개요
- 블록체인을 이용한 선거관리 시스템
- 배경
- 최근 블록체인을 활용한 서비스에 대해 다양한 분야에서 관심이 부각되고 있음
- 특히 공공분야에서 대국민 서비스에 적용하여 국민 편의 증진 및 공공효율화에 기여할 수 있는 item에 대해서 관심이 많아지고 있음
- 주요내용
- 이더리움 기반 플랫폼을 구성하고 투표권자에게 Token을 발행
- 인증된 투표권자는 블록체인 플랫폼 상에서 투표를 진행함
- 후보자 정보를 확인할 수 있고 및 투표결과도 실시간으로 공개
- 주요 적용 기술
- Front-End(Android)
- RxJava 라이브러리를 활용한 MVVM패턴을 적용하여 앱 구축.
- Fragment를 활용한 TabView 형식으로 화면구성.
- Retrofit을 이용하여 서버와 통신 연동.
- Back-End(Node.js)
- 사용자의 pw를 저장할 때 pdkdf2를 사용하여 자동으로 랜덤한 salt 값을 생성하고 salt 값과 pw값을 이용하여 hash 값을 만들어 저장하여 보안을 강화 하였다.
- 여러명의 사용자가 같은 pw를 사용하더라도 랜덤한 salt 값을 생성하기 때문에 다이제스트 값이 달라질 수 밖에 없다.
- 정보의 자원을 uri에 표현하고 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)으로 표현하여 RESTful하게 API를 설계했다.
- Amazon의 EC2에 서버를 올려 배포하였고 이미지는 Amazon의 S3에 관계형 데이터베이스는 Amazon의 RDS에 mariaDB로 구축하였다.
- 이더리움 플랫폼
- Visual Code 툴로 Truffle 프레임워크에서 스마트 계약(Solidity)을 작성.
- Geth 와 가나쉬를 이용하여 테스트.
- 모바일 Dapp
- 모바일 어플리케이션(Android) 을 통한 화면 구성.
- 이더리움 스마트 계약을 호출.
- 기간
- 2018.04.24 ~ 2018.11.30
- Front-End(Android)
- 참고 링크
![]() |
![]() |
![]() |
![]() |
![]() |
---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |