본문 바로가기

기술

블록체인에서의 난수 생성

1. 

블록체인에서 난수를 생성하기 위해서는 여러문제들이 있다. 가장 핵심 문제는 생성된 난수에 대한 신뢰성 및 무결성 이다. 

기존의 중앙화 환경에선 신뢰할만한 혹은 책임 소재가 있는 서버에서 암호 생성을 위한 시드를 제공하고 암호 알고리즘을 이용해 난수를 생성할 수 있었지만 블록체인 네트워크에서는 어떤 시드를 사용할 것인가 부터가 문제가 된다. 

난수값을 블록체인 사용자들이 검증하기 위해서는 엔트로피가 높은 시드와 난수 사용자간 검증이 가능한 시드를 사용해야 한다. 

사실 블록체인 네트워크에서 난수를 사용하는곳이 대부분 카지노다... 신뢰성 높은 카지노 게임을 만들기 위해서 딜러와 플레이가 상호 검증이 가능한 난수를 생성하는데 대부분 초점이 맞쳐져 있다. 

체인을 이용해서 난수를 생성하기 위해 여러 업체들이 자신들만의 방법들을 공개하고 있는데 그중에 하나인 Signidice을 살펴 보면 대략 다음과 같이 동작한다.

  1.  카지노는 플레이어 수만큼 공개키/개인키를 생성하고 스마트 컨트랙을 발행한다. 
  2.  플레이어가 랜덤번호(R) 과 함께 배팅정보를 포함하는 트랜잭션 생성한다.
  3.  스마트컨트랙은 랜덤번호(R)과 베티정보 트랜잭션을 확인하여 유효성을 확인한다.
  4.  카지노는 사용자의 계정(A)와 랜덤번호(R)를 더해서 V=A+R를 생성하고 저장한다. 
  5.  카지노는 자신의 캐인크로 서명 S = sign(Privkey, V)를 트래잭션에 기록한다. 
  6.  스마트 컨트랙은 S로 부터 공개키를 추출하고 이전에 생성한 스마트 컨트랙이 생성한 공개키와 동일한지 확인한다.
  7. 확인되면 S를 시드로 하여 난수로 생성하고 이 난수가 R이면 당첨 

이 방식은 블록 사이즈에 비해 많은 저장공간을 사용한다.이 방식말고도 RanDAO, Bitcoin Beacon, BLS등 난수 생성을 위한 방법등이 있다. 

외부에서 난수를 가져오는 오라클 방식도 있으나 이건 신뢰성증명이 쉽지 않다. 사실 외부에서 데이터를 가져오면 이게 또 탈중앙화라고 하긴 애매해져버리고 그러면 굳이 블록체인을 쓸 필요가 없다. 

2. 

여러 사람들이 지적을 하고 있고 앞서도 언급했지만 블록체인은 효율적 측면에서는 좋지 않은 기술이다.  이런 조금씩 효율성을 높힐려는 시도가 진행되고 있는데 그중에서도 이 난수생성이다. 여러 방식들이 시도 되고 있지만 표준이라고 할말한 기술들은 아직 없다. 이 말은 즉 아직 어느 방식이 더 좋다 라고 하기 애매한 상황 

난이도가 높은 기술이지만 굳이 블록체인으로 구현할 필요성이 없어서 인지 응용서비스들이 많이 없다. Dapp을 이용해서 탈중앙화 난수 생성은 재미있어 보이긴 한데 사용자가 널리 사용할만한 서비스를 만드는데는 여러가지 문제가 있을것 같아서 쉽지 않아 보인다. 

 

 

 

'기술' 카테고리의 다른 글

블록체인 환경에서 난수 생성 - 1  (0) 2019.04.22
RANDAO  (0) 2019.04.15
탈중앙화(Decentralization)에 관하여  (0) 2019.02.25
블록체인에 대한 단상  (0) 2019.02.20
Postgresql 마이그레이션도구 Ora2Pg 소개  (0) 2012.07.02