3. 신뢰할 수 있는 추첨 시스템
3
신뢰할 수 있는 추첨 시스템의 속성
공평성: 당첨자는 사전에 예측 불가능해야 함(모든 참가자의 당첨될 확률은 균일)
투명성: 추첨에 관한 모든 정보는 참가자 전원에 투명하게 공개되어야 함
불변성: 등록된 추첨 정보는 임의 조작이 불가능해야 함
검증가능성: 추첨 시스템이 위 속성들을 충족하는지 검증가능해야 함
4. BlockLot: 블록체인 기반의
검증가능한 추첨 시스템
BlockLot는 신뢰할 수 있는 추첨 시스템을 블록체인 플랫폼(Hyperledger/Fabric)을
사용하여 구현한 검증가능한 추첨 시스템
4
5. 블록체인 기본 개념
블록체인(Blockchain)
트랜잭션을 블록 단위로 묶고 이들을 해시 체인으로 연결
허가형 블록체인(Permissioned blockchain)
허가된 노드만 네트워크에 참여 가능
분산 복제 장부(Distributed-replicated ledger)
추가만 가능하고 조작이 불가능한 분산된 자료 구조
체인 코드(Chaincode)
A.k.a. 스마트 컨트랙트(Smart contract)
트랜잭션을 처리하는 분산 애플리케이션 로직
피어(Peer)
장부 관리, 체인코드 실행, 트랜잭션 검증
오더러(Orderer)
블록 생성 및 전파
5출처: Hyperledger Fabric: A Distributed Operating System for Permissioned Blockchains, EuroSys 2018
Hyperleder/Fabric 프로토콜
: Execute-Order-Validate
Hyperleder/Fabric 트랜잭션 처리 과정
6. BlockLot: 개요
6
주최자와 참여자간의 신뢰할 수 있는
추첨 서비스 제공
추첨에 관한 모든 정보는 분산-복제
된 장부에 기록
추첨 서비스(등록/조회/응모/추첨)
를 체인 코드 형태로 지원
다양한 검증 옵션 제공
비트코인 블록 해시를 추첨의 랜덤
소스로 사용
7. 추첨 시퀀스
7
주최자가 행사를 등록하면 참여자들이 행사 목록을 조회하고 응모
랜덤 소스로 사용될 타겟 블록이 생성되고 발표일이 경과되면 주최
자는 추첨 진행
참여자들은 결과를 확인하고 검증할 수 있음
8. 추첨 시스템 공격 시나리오
랜덤 소스 예측 및 조작
이를 통해 당첨자를 사전에 예측할 수 있음
행사 정보 조작
도중에 행사에 관한 정보를 임의 수정
당첨자 조작
추첨 이후 발표된 당첨자 명단을 조작하여 기록
기록된 당첨자 명단을 조작
악의적 추첨 스크립트
수학적으로 교묘하게 설계된 추첨 스크립트는 랜덤 소스와 무관하게 특정한 수로 수
렴할 수 있음
8
9. 검증 방법
랜덤 소스의 예측 방지 및 무결성 검증
전 세계에 퍼진 마이너들이 경쟁적으로 생성하는 블록의 해시를 사용하기 때문에 랜
덤 소스는 원천적으로 예측 및 조작 불가능
비트코인은 블록의 (version, previousHash, merkle_root, timestamp, bits,
nonce) 필드들을 사용하여 블록 해시 계산
랜덤 소스로 사용된 블록(+ 이전 블록들)의 해시를 다시 계산하여 비교
행사 정보의 무결성 검증
행사 등록 및 추첨 당시에 결정된 정보로 해시 값을 다시 계산하여 비교
당첨자 목록 검증
참여자 명단, 랜덤 소스, 추첨 스크립트를 사용하여 사용자는 당첨자를 직접 계산하
고 이를 체인에 기록된 당첨자 명단과 비교
9
10. 검증 방법
응답 값 비교 검증
블록체인 장부를 지니고 있는 피어 다수에게 특정 행사 정보를 조회하여 그 응답 값들
이 서로 일치하는지 비교
과반수 이상의 피어가 같은 응답 값을 출력한 값을 신뢰
이를 통해 일부 피어가 해킹 또는 크래시가 나더라도 여전히 올바른 값을 보장
통계적 검증
추첨 스크립트가 공평하게 당첨자를 추첨하는지 검증
통계학에서의 z-점수(z-score)을 사용한 z-검정(z-test)를 사용하여 특정 참여자가 평
균 당첨 횟수보다 유독 많이 당첨되는지 검증
n회의 추첨 시행 시, 각 참여자의 당첨 확률이 p(= 우승자 수/참가자 수)일 경우의 이항 분포
는 n이 충분히 크면 정규 분포를 따름
모든 참여자의 z-점수가 사전에 정의한 최대 z값보다 작다면 검증 성공, 그렇지 않으면 실패
10
11. 구현
허가형 블록체인 플랫폼 Hyperledger/Fabric v1.1
Node.js 기반 웹 애플리케이션(웹 서버 및 SDK)
Go 언어로 작성된 체인코드
7 Peer, 1 Orderer, 1 channel
도커 컨테이너 기반의 블록체인 네트워크
Bitcoin 블록 조회를 위해 blockcypher.com 및 blockchain.info
의 무료 개발자 API 사용
11
12. 사용자 인터페이스
12
사용자는 주최자와 참여자로 구분
주최자는 행사 등록 및 당첨자 추첨 수행
참여자는 행사 조회, 응모, 결과 확인 및
검증을 수행
행사 등록 버튼
13. 사용자 인터페이스: 등록
13
주최자는 (행사명, 당첨자 수, 발표일, 블
록 오프셋, 추첨 노트)을 입력하여 추첨
행사를 등록
최신 블록 오프셋은 등록 당시의 비트 코
인의 메인 체인의 가장 최신 블록 번호로
부터의 오프셋을 나타냄
이를 통해 랜덤 소스로 사용할 타겟 블록을 선택
추첨 노트에는 행사에 관한 기타 정보
(e.g. 경품 목록 등)을 기입
등록 후에는 내부적으로 행사 고유 ID, 등
록 트랜잭션 ID 와 같은 정보가 생성되어
같이 기록
15. 사용자 인터페이스 및 구현: 응모
참여자는 행사를 선택하고 이름 혹은 이메일을 입력하여 응모한
뒤, (jwt)인증 토큰을 발급 받음(이메일 입력 시 이메일로 토큰 전
송)
토큰은 추후 당첨자임을 증명하기 위해서 사용
체인에는 Hash(등록 이름 + 인증 토큰)로 기록이 되어 참여자의
익명성 보장
15
Or
16. 사용자 인터페이스 및 구현: 추첨 및 결과 확인
타겟 블록이 생성되고 발표일이 경과되면 호스트는 인증 토큰을 입력
하고 추첨 수행
추첨 스크립트는 (참가자 수, 당첨자 수, 랜덤 소스)을 입력으로 받아
결정적인 방식(deterministic)으로 당첨자 배열을 출력
Fisher-Yates Random Shuffle algorithm을 사용
(비트코인) 블록 해시를 랜덤 소스로 사용
참가자는 등록 당시 이름과 인증 토큰을 입력하여 당첨자 여부 확인
가능
16
참가자 명단
당첨자 수
블록
해시
추첨 스크립트
(랜덤 셔플링)
당첨자 명단
17. 사용자 인터페이스 및 구현: 검증
17
사용자는 검증 버튼을 클릭하여
검증 목록을 확인
검증 목록에서 검
증 옵션을 선택하
여 단계적으로 검
증 수행
검증은 매단계마
다 이루어짐
최종 검증 결과는
마지막에 제시
18. 사용자 인터페이스 및 구현: 검증 리포트
18
선택된 모든 검증이 끝난 후 최
종 결과가 리포트됨
검증 리포트는 각 검증 항목에
대해 성공 여부 및 세부 검증 절
차를 설명
사용자는 검증 리포트를 pdf로
다운로드 할 수 있음
19. 사용자 인터페이스 및 구현: 검증 리포트
19
응답 값 검증
추첨 스크립트의 통계적 검증
22. 관련 연구
중앙 집중식 추첨 시스템
추첨이 수행되는 단일한 컴퓨터에 특정 권한을 지닌 공격자(e.g. 컴퓨터 보안 전문가)
가 해킹 가능
블록체인 플랫폼을 사용한 탈-집중화된 추첨 시스템은 컴퓨터 다수를 해킹해야 조작이
가능하기 때문에 아무리 뛰어난 공격자라도 사실 상 조작이 불가능
공개형 블록체인 기반의 추첨 시스템
대부분 이더리움 블록체인 기반
Kibo, Firelotto, Quanta, SmartBilions, Trueflip
허가형 블록체인에 비해 보안성과 성능이 낮음
22
23. 결론
블록체인 기반의 추첨 시스템 BlockLot는 행사에 관한 모든 정보
를 분산 장부에 기록하여 행사를 투명하고 임의 조작이 불가능한
방식으로 진행
비트코인 블록 해시를 랜덤 소스 사용하여 공평한 추첨을 진행
BlockLot의 다양한 검증 인터페이스를 통해 신뢰할 수 있는 추첨
서비스를 제공
BlockLot는 부정직한 추첨 행사로 인한 사회적 비용을 획기적으
로 줄일 수 있을 것으로 기대됨
23