
황 치
Tarax Network의 공동 창립자 겸 CTO
컴퓨터 공학 석사 학위를 가진 선임 풀스택 엔지니어로 그의 주요 연구 방향은 분산 시스템 및 P2P 자기 구성 네트워크입니다.
이미지 설명
그는 컴퓨팅 기술 연구소, 중국 과학 아카데미, Sony 중국 연구소, Baidu 및 Toutiao의 지능형 과학 그룹에서 분산 데이터 공유에 대한 기술 연구에 연속적으로 참여했습니다.
오늘 제가 여러분께 전해드리는 공유는 저희 팀이 작업하고 있는 Tarax Network라는 퍼블릭 체인에서 유래한 "블록체인에서 VRF의 적용 및 원리 분석"입니다. 장면 포지셔닝을 위해 저전력 소비로 합의를 달성하는 방법을 찾고자 합니다. 그렇다면 POW는 고려하지 않아야 하고, POS를 생각하기 쉽습니다. 그런 다음 POW든 POS든 블록을 패키징할 것으로 예측할 수 없는 노드를 무작위로 찾고 전체 네트워크에서 이 블록을 인식하도록 만들고자 합니다.
그런 다음 무작위 선택 문제에서 VRF는 확인 가능한 무작위 선택을 기반으로 제비를 뽑는 가장 직접적인 방법입니다.
물론 POW는 패키징을 위해 무작위로 포인트를 뽑는 기능만 있는 것이 아니라 게임성과 인간성을 어느 정도 고려한 부분이 있어서 현재의 POS 방식에서는 무작위로 포인트를 뽑은 후 OK가 아니다. , 당연히 그것은 또한 다른 측면에서 게임과 인간 본성 문제를 재설계할 것입니다.
하지만 먼저 문제를 하나씩 해결하고 게임의 내용은 제쳐두고 VRF를 먼저 공부합시다.
우리는 이것을 두 가지 질문으로 봅니다.
1. 검증가능한 랜덤함수란?
2. 일부 현재 체인 체계는 검증 가능한 임의 기능을 어떻게 사용합니까?
검증 가능한 랜덤 함수란?검증 가능한 랜덤 함수는 다음과 같이 볼 수 있습니다.무작위 오라클
즉, 모든 입력을 통해 난수 출력을 얻을 수 있습니다.
1. 서로 다른 입력의 경우 출력 값은 무작위이며 값 범위 내에서 고르게 분포됩니다.
2. 동일한 입력에 대해 받는 출력은 동일해야 합니다.
그러나 검증 가능한 랜덤 함수는 랜덤 오라클보다 하나 더 비대화형 영지식 증명을 가지고 있으며, 이는 랜덤 숫자 출력의 정확성을 확인하는 데 사용할 수 있으며, 이는 랜덤 숫자가 실제로 누군가에 의해 생성되었음을 나타냅니다.
검증 가능한 랜덤 함수 네 가지 함수를 포함합니다.
1. 키를 생성하고 공개 키-개인 키 쌍을 생성합니다. 나중에 자세히 설명하지 않습니다.
2. 난수 출력 생성
3. 전산 영지식 증명
4. 난수 출력 확인
난수를 생성하고 증명하는 과정은 로컬에서 수행되며 입력은 개인 키와 값입니다. 출력은 난수와 영지식 증명입니다.
이 네 가지 함수와 그 출력을 통해 점을 임의로 선택하려면 어떻게 해야 할까요?
텍스트
검증 가능한 랜덤 함수 뽑기
가장 간단한 방법은 위의 VRF를 통해 난수 값을 생성한 후 전체 네트워크가 인식하는 임계값을 설정하여 선택 여부를 판단할 수 있습니다. 특정 라운드에서 101을 얻으면 다음 단계로 진행할 수 있습니다.
그러나 이 간단한 솔루션으로는 Sybil 공격을 방지할 방법이 없습니다. 따라서 현재 대부분의 VRF 복권 방식은 권리와 이익에 따라 투표를 할당한 다음 복권 알고리즘을 설계합니다.
이항 분포를 통해 추첨 결과를 계산하는 가장 일반적인 솔루션을 지금 살펴 보겠습니다.먼저 개인키를 통해 값을 생성했는데 이 값은 실제로 큰 양의 정수라고 볼 수 있는데 256비트라고 가정하면 그 값의 범위는 0~2에서 256승 사이여야 합니다. 그에 상응하는
0과 1 사이의 값을 얻으려면 2의 256승으로 나눕니다.
이 값을 이항 분포의 누적 분포에 넣어 비교하면 해당 값을 얻을 수 있습니다(자세한 내용은 PPT 참조).
이 값이 0보다 크면 다음 단계로 진행할 수 있는 추첨에 해당합니다.
이전 VRF에서 생성된 합계와 함께 이 값을 다른 사람에게 브로드캐스트하고 수신된 다른 사용자는 다음 두 조건이 참인지 확인할 수 있습니다.
1. 검증의 정확성 여부
1. 복권에 VRF를 사용해야 하나요?
무작위 오라클과 비교하면 어떻습니까?
2. 다른 애플리케이션 시나리오가 있습니까?
다들 감사 해요.
Verifiable Random Functions [1999]
Ouroboros: A provably secure proof-of-stake blockchain protocol [2017] Algorand:
Scaling Byzantine Agreements for Cryptocurrencies [2017]
Ouroboros Praos: An adaptively-secure, semi-synchronous proof-of- stake blockchain [2018]
https://github.com/iost-official/Documents/blob/master/ Technical_White_Paper/EN/Tech_white_paper_EN.md
https://tools.ietf.org/html/draft-irtf-cfrg-vrf-02
https://github.com/Realiserad/fts-tree
https://www.cs.bu.edu/~goldbe/projects/vrf
2. 이항 분포 함수를 사용하여 j'가 j와 같은지 확인합니다.
두 조건이 모두 참이라고 가정하면 복권 결과가 정확하고 신뢰할 수 있음을 증명합니다.
현재까지 로또 생성부터 인증까지의 과정이 완료된 상태입니다.
위의 프로세스에 대한 설명을 통해 VRF 기반 복권 메커니즘이 몇 가지 장점이 있음을 쉽게 알 수 있습니다.
1. 우선 그것의 복권 과정은 다른 사람과 의사소통할 필요가 없으며, 복권 결과는 기계에서 직접 얻을 수 있고, x 입력은 모든 사람이 인식하고, 동일한 x에 대한 출력 값은 고정되어 있으므로 여러 번 통과할 수 없습니다. 추첨 결과를 변경하려고 시도하세요.
2. 노드가 다른 노드로부터 복권 정보를 받은 후 첨부된 인증서를 사용하여 난수의 정확성을 증명하여 개인 키 소유자가 실제로 계산했는지 확인할 수 있습니다. 따라서 추첨 결과는 위조할 수 없습니다.
3. VRF는 의사 난수를 얻기 위해 주로 사용되며, 복권 부분은 주로 이항분포 함수를 담당하며, 이항분포의 매개변수를 구성함으로써 획득해야 하는 당첨권을 쉽게 제어할 수 있습니다. 복권이 필요한 다양한 시나리오에 맞게 조정됩니다.
VRF 기반의 복권 알고리즘에 대해 이야기한 후, 이 복권 알고리즘이 블록체인 합의에 어떤 영향을 미치는지 살펴보겠습니다.
VRF 복권이 합의에 가져온 변경 사항
구체적인 예부터 시작하겠습니다.
Ouroboros는 Cardano의 합의 알고리즘입니다.매우 흥미 롭습니다.처음에는 합의 프로세스 체계를 제안했지만 이 체계는 증명할 수 있으며 모든 부분의 구현을 포함하지 않습니다. 그런 다음 종이 버전 업데이트 및 구체적인 구현 계획에 구현 세부 정보를 점진적으로 추가할 것입니다.
지금까지 그의 이론적 버전은 Ouroboros, Praos 및 Genesis의 세 가지 버전을 반복했습니다. Praos의 두 번째 버전에서는 VRF 부분이 블록 제안 노드 추출로 도입되었습니다.
먼저 Ouroboros의 합의 프로세스에 대해 간략하게 설명하겠습니다.
각 에포크가 시작되기 전, 에포크의 마지막 라운드에서 임의의 시드와 다수의 스테이크홀더가 이번 에포크의 참여 노드로 결정됩니다. 라운드가 획득되고 순차적으로 패키징됩니다.
이전 라운드에서 Random Seed 제출은 대화형 PVSS 체계에 의해 생성되었습니다. 간단한 예를 들어 설명하자면, 두 사람이 실시간 통신을 통해 펀치를 추측할 수 없는 것과 비슷합니다. 공평하므로 이제 먼저 카드를 사용하여 펀치를 교체한 다음 덮습니다. 모든 사람이 펀치가 무엇인지 모르지만 모든 사람이 펀치를 선택했음을 보장할 수 있습니다. 결과는 추후 발표될 예정입니다.
Random Seed가 생성된 후 Follow the Satoshi 알고리즘을 사용하여 각 슬롯의 슬롯 리더를 얻습니다. Follow the Satoshi는 Random Seed와 각 StakeHolder의 지분 가치를 사용하여 각 슬롯은 임의로 지분 보유자를 슬롯 리더로 지정하고 이 결과는 이 에포크가 시작되기 전에 각 노드에 알려지며 스스로 계산할 수 있습니다.그러면 문제가 발생합니다.
특정 블록의 패키징 노드를 미리 알 수 있으므로 공격자는 패키징 노드를 미리 공격하여 공격 목적을 달성할 수 있습니다.
이후 우로보로스의 2번째 버전인 프라오스에서는 Follow the Satoshi 방식을 대체하기 위해 VRF를 도입하였다. 슬롯 라운드의 슬롯 리더는 노드 자체만 알고 있으며 그가 게시한 후 다른 노드는 그가 실제로 이 역할을 가지고 있는지 확인할 수 있으므로 위에서 언급한 공격을 피할 수 있습니다.
그러나 이것은 또한 새로운 문제를 가져옵니다.위에서 언급했듯이 Follow the Satoshi는 슬롯 리더를 각 슬롯에 무작위로 할당할 수 있지만 확률 기반 추첨 방식인 VRF는 이 점을 확신할 수 없습니다. 특정 라운드의 슬롯이 슬롯 리더를 뽑지 않거나 여러 슬롯 리더를 뽑는 경우도 발생할 수 있습니다. 따라서 Praos에서는 이러한 상황을 처리하기 위해 추가 솔루션이 추가되었습니다.
두 솔루션을 비교하면 VRF는 슬롯 리더의 예측할 수 없는 보안 업그레이드 외에도 두 가지 비정상적인 상황을 소개합니다. 그러나 이 두 가지 이상 현상이 VRF에 의해 도입된 새로운 문제입니까? 생각해보자.
사실 Follow the Satoshi 솔루션이든 VRF 솔루션이든 이 문제는 해결해야 합니다. 각 슬롯에 슬롯 리더가 있다고 보장할 수 있어도 슬롯 리더가 이 슬롯에서 패킷을 인쇄할 수 있는지 여부를 보장할 수 없기 때문입니다. 포크를 검증하는 해법은 체인인 만큼 고민해야 할 문제인데, 슬롯 리더가 공격을 받고, 자신의 슬롯에 다수의 반복 패키징도 포크 문제를 일으킨다고 가정해보자.
따라서 새로운 문제가 없는 상황에서 패키징 노드의 익명성을 높이는 것은 사실상 시스템의 보안 업그레이드입니다.
그런 다음 VRF를 사용하거나 이에 크게 의존하는 다른 합의 알고리즘을 살펴보겠습니다.

아이디어는 일반적으로 참여 합의 노드 또는 특정 역할의 수를 줄이기 위해 추첨을 위해 검증 가능한 무작위 기능을 사용하는 것입니다.
1. 알고랜드가 먼저 패커를 선정하고, 패커가 선정된 후 위원회가 선출되며, 위원회는 BA*를 이용하여 블록을 선정합니다.
2. 디피니티에서는 예치금으로 문턱값을 높이고 참여 노드 수를 줄인 후 패키저를 선정하고, 패키저 선정 후 공증인을 선정하고 블록 가중치를 정렬해 블록을 선정한다.
텍스트
텍스트
몇 가지 문제
VRF와 현재 애플리케이션 중 일부를 공유한 후 함께 생각해야 할 몇 가지 질문이 있습니다.
프로세스가 유사한 비대칭 암호화 방식과 비교하면 어떻습니까?
다들 감사 해요.
이미지 설명
https://github.com/pinqy520/vrf.js

현재 Tarax 합의 알고리즘 구현에 사용됨
참조—————————————————————————————————————————————————————
이미지 설명
https://v.qq.com/x/page/e0735yg5l7t.html

Blockchain Funds-Technology Federation
BFTF 공동 주최자:
이미지 설명