본문 바로가기

기술

RANDAO

블록체인 상에서 신뢰할수 있는 난수를 생성하기 위해 여러 방법들이 시도 되고 있다. 그 중에서 나름 설득력? 있는 생성방법중에 하나인 RANDAO를 살펴 볼까 한다. RANDAO는 commit and reveal 방식으로 난수를 생성하는데 과정은 아래와 같다.

  1. RANDAO 기반의 스마트 컨트랙을 배포한다. 
  2. 스마트 컨트랙은 난수 발생을 위해 캠페인을 생성하고 디파짓과 난수를 발생시킬 블록번호와 데드라인을 지정한다.
  3. 난수가 필요한 참여자는 생성한 캠페인을 Follow 한다. 
  4. 난수가 필요한 참여자는 해당 캠페인 ID와 SHA3(s)를 디파짓 만큼의 비용과 함께 컨트랙으로 보낸다. 
  5. 난수가 필요한 참여자는 해당 캠페인 ID와 s를 컨트랙으로 보낸다. 
  6. 컨트랙은 수집한 s 를 조합하여 f(s1,s2....sn)으로 난수를 생성한다. 

난수 생성에 성공하면 디파짓은 반환되고 실패하면 디파짓을 참여자들간 분배한다. 여기서 난수 생성의 실패라함은 SHA(s)만 보내고(commit) s를 보내는(reveal) 과정이 누락되는 예를 들수 있다. 이 땐 해당 참여자가 낸 금액을 다른 참여자들에게 배분된다. 

RANADO는 블록번호를 조건으로 거는데 이더리움에서는 제일 최근에 생성된 블록이 엉클블록(Uncle) 이나 스테일(Stale)블록이면 그 다음 정상적인 블록과 같은 블록번호를 가진다. 즉 같은 타임라인에 생성된 블록들은 같은 블록번호를 가진다. 따라서 유효한 블록번호가 아닐경우에 대한 경우를 고민할 필요가 없다. 

하지만 참여자가 고의가 아닌 다른 이유로 캠페인을 실패하게 되면 이를 보증금은 그냥 소멸한다. 즉 난수를 생성할 때마다 일종의 리스크를 가지고 있게 된다. 또한 이더리움의 스마트 컨트랙은 트랜잭션마다 수수료를 지불해야 되는데 참여자가 많으면 트래잭션수도 늘어나게 되고 비용도 커지게 된다. 요약하면 RANDAO의 단점은 아래와 같이 정리 된다.

  • 네트워크 장애 및 비안위적인 요소로 인해 난수 생성 비용을 잃게 될수 있음 
  • 난수 생성에 많은 비용 발생 

난수를 생성하는 일련의 과정이 매우 직관적이고 단순하지만 이러한 commit and reveal 방식의 최대 단점은 앞서 설명한것과 같이 비용이 발생한다는 것이다. 물론 난수를 생성하는것을 방해하는 부정한 사용자를 걸러내기 위한 목적이지만 오라클을 사용하면 더 저비용으로 더 간단하게 생성할 수 있다. 하지만 오라클을 전적으로 신뢰할 수 있는지는 또 다른 문제. 즉 신뢰성은 있지만 비용이 발생하거나 그럭저럭 난수처럼 보이지만 신뢰하기 어려운 방식 두 가지가 경쟁하고 있다. 완전한 탈중앙화를 위해서는 오라클을 배제해야 하는게 맞지만 효율성과의 적정한 타협이 없으면 서비스를 생성하기가 어렵다. 

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

신경망 암호와 ECC  (1) 2019.05.23
블록체인 환경에서 난수 생성 - 1  (0) 2019.04.22
블록체인에서의 난수 생성  (0) 2019.03.28
탈중앙화(Decentralization)에 관하여  (0) 2019.02.25
블록체인에 대한 단상  (0) 2019.02.20