IOSG:무작위 수는 Web3 세계에서 필수적인 부분입니다
작성자: Sally, IOSG Ventures
무작위성과 운명
지금 만약 극도로 부유하지만 극도로 지루한 BTC 고래들이 매년 1000개의 BTC를 모아 러시안 룰렛을 하기로 결정한다면, 그들은 6발이 장전 가능한 리볼버에 단 한 발의 총알만 장전한 후, 당신의 머리를 겨냥하고 방아쇠를 당길 것입니다. 매번 방아쇠를 당길 때 발생하는 결과는 하나의 평행 우주로 간주될 수 있으며, 이 단일 사건에서 총 6가지 서로 다른 결말에 해당하는 평행 우주가 존재하고, 각 평행 우주가 발생할 확률은 동일합니다. 이 중 5개의 평행 우주는 당신을 하룻밤 사이에 부자로 만들어 주고, 심지어 포브스 표지에 오르게 할 것이지만, 나머지 하나의 평행 우주는 당신을 끔찍하게 죽게 만들고 웃음거리가 될 것입니다.
당신은 이 도박에 참여하고 싶습니까? 한 번 참여하고 싶습니까? 두 번? 아니면 매년 운을 시험해 보고 싶습니까?
이 게임을 하려면 용기가 필요하며, 물론 약간의 두뇌도 필요합니다. 83%는 매우 높은 승률이며, 확실성이 83%에 달하는 일은 일상에서 그리 흔하지 않습니다. 하지만 어떤 탐욕스러운 바보들이 계속해서 게임을 하기로 선택한다면, 20년 후 그들 중 대다수는 신문 부고란에서 자신의 이름을 찾을 수 있을 것입니다. 이 가상의 러시안 룰렛 게임에서 규칙은 매우 명확하게 설정되어 있으며, 배당률은 계산할 수 있고, 위험도 측정할 수 있으며, 모든 조건 정보는 사전에 공개되어 있지만, 현실 세계에서는 우리는 종종 비대칭 정보의 동적 게임(Asymmetric Information Game Theory)에 직면하게 됩니다. 우리의 운명을 좌우하는 것은 리볼버 한 자루나 카드 한 벌이 아닙니다. 우리는 몇 개의 탄창에 몇 발의 총알이 있는지, 이 카드 덱에 몇 가지 무늬가 있는지 알지 못합니다. 무한한 평행 우주와 무한한 위험 조건 속에서 우리의 운명은 예측할 수 없습니다.
이것은 우리가 무작위로 가득 찬 세계에 살고 있음을 시사합니다.
리처드 파인만이 말했듯이, 자연은 우리가 계산할 수 있는 것은 오직 확률뿐입니다. 만약 우리가 '확률 진폭'을 계산하는 초능력을 갖게 된다면, 우리는 예언자가 되어 미래를 예측하고 심지어 바꿀 수 있습니다. 다시 말해, 무작위성을 지배하는 자가 운명의 주사위를 쥐고 신이 되는 것입니다.
무작위성과 안전
이러한 사고를 암호화 세계로 옮기면, 무작위 수를 생성하는 기계는 신의 신탁을 전달하는 사자로 간주될 수 있습니다. 바로 이러한 역할을 수행하기 때문에 예측기(oracle)라는 이름이 붙여졌습니다. 이전의 예측기에 대한 글에서 우리는 블록체인 시스템의 투명성 덕분에 체인 상에서 생성되는 모든 알고리즘, 입력, 출력이 시스템 참여자에게 노출된다고 지적했습니다. 따라서 체인 상에서 직접 생성된 무작위 수열은 실제로 예측할 수 있습니다.
미래 블록 해시와 같은 몇 가지 전형적인 체인 상 무작위 수 생성 방법은 큰 사기 공간과 보안 취약점을 가지고 있습니다. 간단한 예를 들어보면, 만약 채굴자가 도박 게임을 하고 있고, 이 게임의 상금이 10ETH인데 블록 보상이 3ETH에 불과하다면, 채굴자는 분명히 사기를 칠 동기가 있습니다. 그는 블록을 버리거나 발표하지 않음으로써 무작위 수열의 생성을 영향을 미칠 수 있습니다(블록 보류 공격), 따라서 게임에서 자신에게 유리한 조건을 만들 수 있습니다. 이는 당신과 채굴자가 같은 포커 게임을 하고 있지만, 채굴자는 패를 바꿀 수 있는 것과 같습니다. 이러한 변경 가능하고 예측 가능한 가짜 무작위 수열이 Web3의 다양한 시나리오에 적용된다면, 그 뒤에 있는 막대한 보안 위험과 불공정성을 쉽게 상상할 수 있습니다: 만약 해커나 공격자가 무작위 알고리즘을 찾아내고 무작위 수열의 초기 입력 값을 계산해 낸다면, NFT의 에어드랍 발송, GameFi에서의 희귀 장비 폭발, 또는 사용자 개인 지갑의 개인 키 주소 생성 등이 조작되고 변조될 수 있습니다.
그렇다면 어떤 무작위 수가 진정으로 신뢰할 수 있고 안전한 것일까요? 여기서 우리는 무작위 수의 분류에 대해 간단히 이해할 필요가 있습니다.
일반적으로 우리는 무작위 수를 두 가지로 나눕니다: 진정 무작위 수(True Random Number, 이하 TRN)와 의사 무작위 수(Pseudo-Random Number, 이하 PRN).
그 중에서, 의사 무작위 수는 다시 약한 의사 무작위 수와 강한 의사 무작위 수로 세분화될 수 있습니다.
'의사'라는 단어가 암시하듯이, 의사 무작위 수는 진정한 무작위가 아닙니다. 블록체인에서 생성된 모든 무작위 수는 '의사'입니다. 본질적으로 PRN은 컴퓨터 소프트웨어가 정해진 수학 공식과 알고리즘 지침에 따라 출력하는 겉보기에는 무작위인 숫자 수열로, 외부에서 초기 값을 입력하여 시드 역할을 해야 합니다. 그리고 많은 사람들이 자연스럽게 인식하는 것과는 달리, 컴퓨터는 우연한 조건을 생성하는 데 사용하기가 어렵습니다. 왜냐하면 그것 자체가 예측 가능한 장치이기 때문입니다. 구성 요소는 결정적이고, 회로는 미리 설정되어 있으며, 코드와 알고리즘 명령은 명확합니다. 여러 고정된 외부 조건 하에서 우리는 특정 경로(위에서 언급한 사기 방법 등)를 통해 수열 결과를 정확히 찾아낼 수 있습니다. 그리고 계산할 수 있는 결과는, 음… 어떻게 보면… 의사 무작위라고 할 수 있습니다.
진정한 TRN은 소음, 혼란 현상, 양자 무작위 과정 등 물리적 현상에서 무작위성을 추출하여 컴퓨터에서 생성할 수 있게 됩니다. 간단히 말해, 체인 외부의 큰 주사위를 컴퓨터에 연결한 것입니다.
본질적으로 TRN은 무작위성, 예측 불가능성, 재현 불가능성의 세 가지 특성을 동시에 갖추어야 합니다:
- 무작위성: 수열이 완전히 무작위하며 통계적 편향이 존재하지 않지만, 그렇다고 해서 드러나지 않는 것은 아닙니다.
- 예측 불가능성: 과거 수열을 아는 전제 하에서도 다음에 생성될 수열을 예측할 수 없습니다.
- 재현 불가능성: 원래 수열을 저장하지 않는 한 완전히 동일한 수열을 재현할 수 없습니다.
강한 PRN은 앞의 두 가지 특성만 가지고 있으며, 약한 PRN은 무작위성이라는 하나의 특성만 가지고 있어 쉽게 드러날 수 있습니다.
우리가 무작위 수를 신뢰할 수 있고 안전하다고 말할 때, 최소한 그것이 드러나지 않는다는 것을 의미합니다. 따라서 예측 불가능한 TRN과 강한 PRN은 신뢰할 수 있는 무작위 수로 스마트 계약에 도입될 수 있습니다. 약한 PRN은 키 생성, 비밀번호 생성 등 암호학 관련 시나리오에 적용될 수 없습니다.
신뢰할 수 있고 안전한 무작위 수를 생성하는 방법에 대해 현재 가장 직접적이고 효율적인 방법은 예측기를 통해 외부 API에 연결하고 암호 인증을 생성하는 것입니다. 예를 들어, Chainlink의 검증 가능한 무작위 함수(VRF) 서비스는 테스트 네트워크에서 외부 API를 연결하고, 공개 키와 스마트 계약의 시드를 사용하여 생성된 강한 PRN을 검증한 후 이를 스마트 계약으로 전송합니다(구체적인 작업 흐름은 아래 그림 참조). Chainlink의 VRF 서비스는 주로 구독 계정의 요금제를 채택하고 있으며, 사용자가 충분한 LINK 토큰을 계좌에 입금한 후 구독 요청을 보내면 제공하는 무작위 수를 받을 수 있습니다.
또한, API3는 최근 호주 국립대학교(ANU) 양자 광학 팀과 협력하여 dApp 및 Web3의 다양한 제품에 양자 무작위 수 생성(QRNG) 서비스를 제공하고 있으며, 양자 현상에 기반한 TRN을 검증하여 체인에 전달합니다(구체적인 작업 흐름은 아래 그림 참조). QRNG는 현재 TRN을 생성하는 유일한 서비스 메커니즘이며, 백서의 관련 논의에 따르면 QRNG는 마녀 공격을 최대한 방지할 수 있으며, 이 기능은 완전히 무료로 사용할 수 있습니다.
무작위성과 Web3
신뢰할 수 있는 무작위 수의 정의와 출처를 이해한 후, 이제 더 실질적인 질문을 해보겠습니다: 무작위 수는 Web3에서 도대체 어떤 용도가 있을까요?
사실, 무작위 수는 거의 모든 Web3 시나리오와 사용 사례에서 필수적입니다.
1. GameFi
게임에서 확률 분배가 필요한 경우는 비일비재하며, RPG 게임이 대표적인 예입니다. 어떤 캐릭터는 매우 희귀하고 드문 속성을 가지고 있는 반면, 어떤 캐릭터는 매우 평범합니다. 일반적으로 희귀한 캐릭터일수록 가치가 높고, 사용자에게 높은 경제적 보상을 가져다 줄 수 있습니다. 예를 들어, Axie의 각 정령 캐릭터는 여섯 개의 구성 요소로 이루어져 있으며, 각 부분은 서로 다른 속성과 능력을 가지고 있습니다. 게임 제작자는 사용자에게 개인화된 게임 경험을 제공하기 위해 캐릭터 분배 메커니즘을 잘 설정하고, 분배 확률을 최대한 공정하게 설정해야 합니다.
PVP 대전에서 플레이어의 승리 확률과 보상을 받는 양은 그들이 대전에서 배정받은 상대에 따라 달라집니다. 만약 게임 매칭 메커니즘이 공정하지 않다면, 플레이어의 이탈을 초래할 수 있습니다. 세계 탐험형 게임에서는 플레이어가 지도 탐험 중에 희귀 아이템과 장비를 얻는 확률도 공정한 확률 모델이 필요합니다. 카드 게임에서는 플레이어가 카드를 사용하는 순서가 경기의 승패를 결정짓는 중요한 요소가 됩니다. 슈팅 게임에서는 사격의 명중률과 캐릭터 부활 지점의 선택이 플레이어의 게임 경험에 영향을 미칠 수 있습니다.
위에서 언급한 다양한 게임들은 본질적으로 일정한 예측 불가능성을 주입하여 게임의 재미를 높이는 것이 필요합니다. 그리고 이 예측 불가능성을 생성하기 위해서는 신뢰할 수 있는 무작위 수를 도입해야 합니다.
2. NFT
GameFi의 캐릭터 속성이 서로 다른 구성 요소를 가지고 있는 것과 마찬가지로, NFT의 세부 사항도 서로 다른 속성으로 구성됩니다. 예를 들어, BAYC의 NFT는 배경, 의상, 귀걸이, 눈, 머리카락, 모자, 입 등 7개의 서로 다른 속성을 포함하고 있으며, 속성의 희귀도가 실제로 해당 NFT의 가치를 결정합니다. 희귀도 분배와 속성 총량 상한선의 설정은 신뢰할 수 있는 무작위 수를 활용하여 해결할 수 있습니다.
또한, 점점 더 많은 NFT 커뮤니티가 설립되고 성장함에 따라, 프로젝트 측은 특별한 날이나 특정 이정표를 달성했을 때 무작위 NFT 에어드랍 보상을 통해 구성원의 충성도와 활발함을 자극하기도 합니다. 어떤 주소에 에어드랍을 할지, 에어드랍의 공정성을 어떻게 보장할지 등은 프로젝트 측이 신중하게 특정 배포 메커니즘에 따라 실행해야 합니다. 이와 같은 상황에서 신뢰할 수 있는 무작위 수는 좋은 해결책으로 간주될 수 있습니다. 사실 현재 대부분의 NFT 에어드랍 인센티브 활동도 Chainlink VRF와 같은 서비스를 통합하여 진행되고 있습니다.
3. DeFi
Olympus와 같은 DeFi 프로토콜과 알고리즘 스테이블코인 프로토콜에서는 일반적으로 스테이킹 메커니즘에 변기 스테이킹(rebase) 프로세스를 설정하여 지분 희석 문제를 해결하거나 특정 시장 행동을 유도합니다. 예를 들어, 가격 고정 유지와 같은 것입니다. 그리고 rebase 메커니즘의 '민감성' 강 변수 중 하나는 주기 시간입니다.
설정된 rebase 주기 시간이 오랫동안 변하지 않으면 단기 차익 거래자에게 이용당할 가능성이 높습니다. 따라서 rebase 메커니즘 설계는 신뢰할 수 있는 무작위 수를 적용하여 변경 조정의 대략적인 주기를 결정할 수 있습니다.
일부 혁신적인 Yield Farming 프로토콜에서는 보상 메커니즘에 일정한 변동성을 도입하여 사용자 참여도를 높입니다. 참여도가 높고 기여가 큰 사용자의 연간 수익률은 일반 사용자나 참여도가 낮은 사용자와 다르게 됩니다. 따라서 자금 풀에서 보상의 크기와 수익 폭의 증감은 무작위 수를 사용하여 조정하고 패턴을 구축해야 합니다.
4. DAO
DAO의 거버넌스에서는 종종 구성원이 조직을 위한 중요한 결정을 내려야 하며, 대규모 DAO 커뮤니티는 종종 이사회를 설립하여 일상적인 결정을 보다 효율적으로 실행할 수 있습니다. 이러한 이사회와 관리자의 선택 및 보충은 공정하고 투명한 메커니즘이 필요하며, 신뢰할 수 있는 무작위 수를 도입하는 것은 이러한 메커니즘 설정에 있어 최적의 선택으로 간주될 수 있습니다.
또한, 대규모 자금 관리나 전문 투자 DAO에서는 무작위 수를 사용하여 구성원 인증 시스템의 보안을 높이고 해커나 악의적인 공격자가 인증 과정을 역공학하는 것을 방지하여 DAO 내 자금의 안전을 보장할 수 있습니다.
5. L1 합의 메커니즘에서 VRF의 활용
신형 공공 블록체인은 분할(shard) 후 보안성이 감소하는 큰 문제에 직면해야 합니다. 분할 전에는 네트워크의 모든 검증자가 모든 거래를 공동으로 검증하지만, 분할 후에는 이러한 검증자가 각 분할에 평균적으로 배정되어 검증을 수행하게 되므로 각 분할이 포크(51% 공격)당할 확률이 크게 증가합니다. 이 보안 문제를 해결하는 좋은 방법은 공격자가 각 분할의 검증자를 미리 예측할 수 없도록 하는 것이며, 이를 위해서는 일정한 무작위성과 예측 불가능성을 도입해야 합니다. NEAR는 VRF 서비스를 통해 검증자를 무작위로 배정하여 검증자가 구체적으로 어떤 분할을 검증하는지의 정보를 숨깁니다.
마무리하며
무작위성이 매력적인 이유는 그것이 불확실성을 의미하고 가능성을 내포하고 있기 때문입니다. 가능성은 우리에게 희망을 가져다 줄 수도 있고 두려움을 안겨줄 수도 있으며, 그래서 결정론과 비결정론의 논쟁은 오늘날까지 계속되고 있습니다. 신이 주사위를 던지는지 여부는 사실 그렇게 중요하지 않습니다. 어쩌면 세상의 모든 것은 돌이킬 수 없이 대수의 법칙으로 향하고 있을지도 모르고, 어쩌면 모든 운명적인 만남은 단지 확률상의 우연일 뿐이며, 어쩌면 당신, 나, 그 모두는 Web3에서 무작위로 방황하는 바보일 뿐입니다.
하지만 답을 모르는 것이 잘못된 답을 얻는 것보다 훨씬 더 흥미롭습니다. 카를로 로벨리의 책에서 언급했듯이: "What's nonapparent is much vaster than what's apparent (보이지 않는 것이 보이는 것보다 훨씬 더 광대하다)."
어리석음을 유지하고, 무작위성을 경외하십시오.