Blockchain - 블록체인에서 난수 생성하기

김도영·2022년 12월 13일
0

블록체인에서 난수 생성하기

1. Commit Reveal Scheme

Commit Reveal Scheme는 기존의 "여러 사용자가 가져온 값을 사용하는 경우"를 개선한 방식이다. 기존에는 서로가 값을 알 수 있었지만, 스마트 컨트랙트를 사용하면 서로의 값을 모른채 값을 제출할 수 있다.

먼저, Commit Stage에서는 자신이 보내려는 값을 암호화하고 일정 금액의 토큰과 함께 스마트 컨트랙트에 보낸다. 토큰은 예치금의 역할을 한다. 그리고 일정 기간이 지나면 참여자들은 자신이 제출하려고 했던 원래 값을 스마트 컨트랙트에 보낸다. 스마트 컨트랙트는 사용자가 보낸 원래 값을 암호화하여, 이전에 보낸 암호화된 값과 비교한다. 만약 다른 값을 보냈다면, 이 유효성 검사를 통과하지 못하게 된다. 사용자가 올바른 값을 보냈다면 토큰을 돌려준다. 그리고 스마트 컨트랙트는 주어진 값들을 사용해 난수를 생성한다.

Commit Reveal Scheme를 사용하면 서로가 어떤 값을 보냈는지 모르기 때문에 난수 값을 예상하거나 난수 생성을 조작할 수 없다.

2. BLS Scheme

BLS Scheme는 임계값 서명의 한 종류이다. BLS Scheme에서는 N명의 사용자가 개인 키 S를 쪼개어 가지고 있다가 난수를 생성해야 할 때 참여자들이 각자 자신이 가지고 있는 개인 키 조각을 제출한다. 이 때, 개인 키를 k명 이상이 제출하면 k개의 개인 키 조각을 가지고 난수를 생성한다.

Commit Reveal Scheme은 소수가 정직하지 않더라도 난수 생성이 불가능해질 수 있지만, BLS Scheme는 k명의 사람이 정직하면 난수를 생성할 수 있다는 장점이 있다.

profile
Blockchain Developer

0개의 댓글