위험 경고: '가상화폐', '블록체인'이라는 이름으로 불법 자금 모집 위험에 주의하세요. — 은행보험감독관리위원회 등 5개 부처
검색
로그인
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
시장 동향 보기
MimbleWimble을 종합적으로 분석할 수 있는 Zhang Ligament
Nervos
特邀专栏作者
2019-03-14 07:00
이 기사는 약 9485자로, 전체를 읽는 데 약 14분이 소요됩니다
최근에는 Grin 프로젝트와 그 이면에 있는 프로토콜인 MimbleWimble이 있으며 이는 중국에서 매우 인기가 있습니다. 실제로 Nervos & Cryptape의 연구원이자 University of Leuven의 COSIC 연구실에서 박사

다음 성적표는 Fork It Issue 4에서 편집되었습니다.Let’s Talk About MimbleWimble , 읽기의 완전성을 보장하기 위해 Zhang Ren을 첫 번째 관점으로 삼고 일부 내용을 정리하고 프로그램의 기술 세부 사항을 보완했습니다 (팟 캐스트 내용과 불일치하는 경우 내용 이 조항이 우선합니다). 또한 완전한 팟캐스트 프로그램의 다양한 작은 세부 사항도 매우 흥미롭습니다. 들으려면 링크를 클릭하십시오.

MimbleWimble에 대한 다른 아이디어가 있는 경우 의견 영역에서 토론을 환영합니다.

마무리: Xiao Jie, Jin Xiaojia, 보정: Wan Cenchen, Zhang Ren

밈블윔블 알아보기

약 2년 전에 MimbleWimble 프로토콜을 발견했는데 당시에는 매우 흥미롭고 신비로 가득 차 있다고 생각했습니다.

본 동의서는 비트코인의 IRC 채널에 익명으로 게시되며, 가명 작성자의 이름은 Voldemort의 이름이며, Tom Elvis Jedusor라는 프랑스어 버전의 "Harry Potter"에서 Voldemort의 이름입니다. 저자는 Tor 네트워크에 Dot Onion을 넣었습니다.Link~의Blockstream~의Andrew Poelstra심층연구MimbleWimble 시스템의 보안성을 입증하는 , 이 프로토콜의 진정한 완성입니다. 따라서 이 계약의 제안자는 Idea에 대한 공로를 인정받을 수 있으며 Andrew Poelstra는 공로의 절반을 차지해야 합니다.

블록체인에 모든 거래 금액을 일반 텍스트로 저장하는 것은 암호 작성자의 입장에서 매우 불합리합니다. 또한 프로토콜 자체의 보안을 위해 하드 디스크에 영구적으로 소비된 모든 트랜잭션을 저장하는 것도 낭비입니다.

그리고 MimbleWimble은 이 두 가지 문제를 해결하기 위해 이전 디자인을 교묘하게 결합하여 사람들에게 매우 우아한 느낌을 줍니다.

MimbleWimble 정의¶

MimbleWimble을 이해하려면 먼저 위치를 파악해야 합니다.포지셔닝은 Privacy Co입니다.in, 프라이버시를 아주 잘 지원할 수 있는 암호화폐. MimbleWimble 이전에는 Zcash와 Monero라는 두 개의 Privacy Coin이 있었습니다. 프라이버시 코인이라고 주장하는 다른 사람들은 기술적으로 충분히 강하지 않습니다.

그러나 Zcash와 Monero는 동일한 문제가 있습니다. 자신의 개인 정보 보호를 위해 둘 다 지출된 모든 트랜잭션 출력을 저장하는 세트를 유지 관리해야 하며 "보이드 목록"으로 이해할 수 있습니다.

새로운 트랜잭션이 유효한 트랜잭션인지 확인하려면 먼저 새로운 트랜잭션의 트랜잭션 입력이 "void list"에 있는지 확인해야 합니다. 트랜잭션 입력이 이미 "void list"에 있으면 이를 증명합니다. 트랜잭션 입력이 만료되었으며 "void list"에 없으면 트랜잭션 입력이 유효하다는 것을 증명하고 트랜잭션이 채굴자에 의해 인식된 다음 채굴자는 트랜잭션 입력을 "void 목록"에 넣습니다. 목록".

따라서 Zcash와 Monero의 경우 둘 다 매우 심각한 문제에 직면해 있습니다. 트랜잭션 출력은 항상 증가하고 있습니다. 퍼블릭 네트워크 전체 노드가 새 거래가 유효한지 확인하려면 완전한 거래 데이터 세트를 저장해야 합니다. 트랜잭션이 쌓일수록 데이터의 양이 점점 많아지고 사용하기가 매우 불편해집니다.

밈블윔블 프로토콜은 이런 문제가 없고, 지캐시나 모네로보다 확장성이 좋아 상태 성장 문제에 대처할 수 있다.

예를 들어 MimbleWimble 프로토콜을 사용하는 Grin Coin은 하드 디스크 공간을 거의 차지하지 않으며 소비된 트랜잭션 출력이 차지하는 하드 디스크 공간을 크게 압축할 수 있습니다.

단순히 사용한 트랜잭션 출력을 삭제하면 블록의 유효성을 확인할 때 블록의 유효성을 확인할 수 없으며 트랜잭션 서명을 확인할 수 없습니다. 그러나이 문제는 MimbleWimble 프로토콜에는 존재하지 않습니다.

MimbleWimble의 경우 사용한 트랜잭션 출력과 해당 트랜잭션 입력을 삭제한 후에도 전체 트랜잭션 그래프의 검증에는 전혀 영향을 미치지 않으며 나머지 모든 서명은 여전히 ​​유효합니다. 그리고 소비된 트랜잭션 출력을 삭제한 후에도 전체 블록체인은 여전히 ​​서명 및 작업량으로 확인할 수 있습니다.

이것은 Merkle Tree와 같은 작은 증명으로 과거의 많은 암호화 증명을 압축할 수 있는 Accumulator와 같은 것으로 이해할 수 있지만 Merkle Tree보다 더 효율적이고 성능이 뛰어납니다.

MimbleWimble에 대한 3가지 오해

오해 1: 압축된 공간 = 더 나은 프라이버시?

많은 사람들이 MimbleWimble의 압축된 하드 디스크 저장 공간 기능을 더 나은 프라이버시로 판매하지만 실제로는 더 나은 프라이버시를 달성하지 못합니다. 당신이 당신의 하드 디스크 공간을 압축하기로 선택하고 다른 사람들이 압축하지 않기로 선택하더라도 그들은 여전히 ​​완전한 거래 그래프를 얻을 수 있고 그것에서 거래의 거래 관계를 파헤칠 수 있습니다.

물론 하드디스크 저장공간을 삭제할 때도 포크나 이중지불 공격 등이 있을지 알 수 없기 때문에 여전히 최근 며칠간의 원본 블록 데이터를 유지해야 한다. 체인이 충분히 길고 데이터가 변경되지 않는다고 판단되면 변경되지 않는 것으로 결정된 하드 디스크 공간을 압축할 수 있습니다.

네트워크의 전체 노드는 일반적으로 기본적으로 저장 공간을 잘라내지만 소스 코드가 잘리지 않도록 수정할 수도 있습니다.

신화 2: 단일 당사자가 거래를 거부할 수 있습니까?

밈블윔블 프로토콜은 거래 구성 방식이 상호작용적이라는 특징이 있는데, 이는 비트코인과 이더리움과는 매우 다른 양 당사자의 참여로 거래가 완료되어야 한다는 것을 의미합니다.

MimbleWimble 프로토콜을 구현한 Grin을 예로 들면, 제가 거래소에 일정 금액을 줬는데 거래소가 아무 조치도 취하지 않으면 돈을 받지 않습니다. 나와 상호 작용하고 법적 거래를 완료하는 프로토콜에 참여해야만 돈을 받을 수 있습니다.

나와 이 법적 거래를 구성한다면 이 거래의 존재를 알고 있다는 것을 증명하는 것이므로 나에게 돈을 줄 거래소가 없다면 나는 아니라고 말할 수 있다.

오해 3: 거래를 하려면 양 당사자가 동시에 온라인 상태여야 합니까?

이 대화형 트랜잭션은 트랜잭션의 양 당사자가 온라인 상태일 필요가 없으며 트랜잭션의 양 당사자는 트랜잭션 구조를 완료하기 위해 전자 메일을 완전히 보낼 수 있습니다.

얼마 전에 Grin Conf의 지갑 데모를 보러 갔습니다. 지갑은 트랜잭션 구성 과정에서 중간 데이터를 파일로 저장합니다. 입장하는 사람을 위해 파일을 생성한 다음 이 파일을 거래 수신자에게 보낼 수 있습니다. 트랜잭션 수신자는 파일을 받은 후 파일을 지갑 클라이언트로 드래그하고 클라이언트에서 전체 트랜잭션을 구성한 다음 트랜잭션 구성을 완료하기 위해 파일로 트랜잭션 발신자에게 다시 보낼 수 있습니다. 따라서 양 당사자가 참여해야 하지만 이는 양 당사자가 동시에 온라인 상태일 필요는 없으며 비동기식 프로세스일 수 있습니다.

밈블Wimble 기술 세부 정보

이제 MimbleWimble의 기술적 세부 사항에 대해 자세히 이야기하겠습니다.

MimbleWimble은 세 가지 기본 구성 요소가 있는데 첫 번째 기본 구성 요소는 CT(Confidential Transaction), 두 번째 기본 구성 요소는 Coin Join, 세 번째 기본 구성 요소는 OWAS(One Way Aggregate Signatures)입니다.

방금 이야기한 내용은 OWAS의 일부입니다. 이제 CT부터 시작하여 간략한 개요를 알려드리겠습니다. CT가 가장 복잡하고 나머지 두 개는 비교적 간단합니다.

Confidential Transaction

CT의 아이디어는 Blockstream CEO Adam Back이 처음 제안했습니다. Adam Back은 채굴 알고리즘 Hashcash의 발명가이기 때문에 Bitcoin의 대부로 알려져 있으며 Satoshi Nakamoto가 논문에서 인용했습니다.

채굴자나 퍼블릭 네트워크 노드의 경우 특정 거래가 유효한 거래인지, 거래가 시스템에 인플레이션을 일으키지 않는지(예를 들어 발신자가 50비트코인을 소비하고 받는 사람은 51 대신 50을 받았습니다). 그 외에는 거래의 정확한 금액에 대해 신경 쓰지 않습니다.

그래서 기밀 거래의 원래 아이디어는 거래의 유효성이 영향을 받지 않도록 하면서 거래 금액을 암호문으로 변환할 수 있는지 여부입니다.

그레고리 맥스웰(Gregory Maxwell)은 블록스트림(Blockstream)의 또 다른 공동 창립자이자 비트코인의 첫 5대 핵심 개발자 중 한 명입니다.그는 실제로 거래 금액을 암호화하지만 거래의 유효성에는 전혀 영향을 미치지 않는 프로토콜을 설계했습니다. 섹스.

프로토콜은 각 트랜잭션의 입력 또는 출력을 다음 형식으로 표현할 수 있습니다. (Pedersen Commitment라고도 함)

  • v*G+r*H

(여기서 v는 금액, r은 블라인드 팩터를 나타내는 난수, G는 제너레이터 1, H는 제너레이터 2)

이를 거래 금액 블라인드라고도 하며 거래의 "금액"은 이해하기 쉽습니다. 제너레이터 1과 제너레이터 2는 타원곡선암호의 두 가지 제너레이터로, 값을 제너레이터로 곱하기 전에는 평문이고, 제너레이터로 곱한 후에는 단순한 암호화 암호로 이해하시면 됩니다. 이 연산은 단방향이다.제너레이터가 무엇인지는 누구나 알고 있지만 한번 곱하면 되돌릴 수 없고 원래의 평문이 무엇인지 아무도 모른다.이 문제를 "이산대수 문제"라고 한다.

Blinding factor는 트랜잭션 입력 또는 출력의 생성자가 선택한 임의의 숫자로, 이 임의의 숫자는 본인만 알 수 있으며 다른 사람에게 알려줄 수 없습니다.

각 거래 금액을 블라인드하는 장점은 "부가적인 동형", 공식은 다음과 같습니다.

  • (v1*G + r1*H)+(v2*G + r2*H)=(v1 + v2)*G+(r1 + r2)*H

(여기서 v1과 v2는 거래금액 1과 거래금액 2, r1과 r2는 블라인드 팩터 1과 블라인드 팩터 2, G는 제너레이터 1, H는 제너레이터 2)

간단히 말해서 암호화 번호를 추가하는 것은 암호화하기 전에 암호화 번호를 추가하는 것과 같습니다.

지금까지 가장 중요한 것은 덧셈 동형이 무엇인지 이해하는 것입니다. 즉, 먼저 더하고 암호화하고, 먼저 암호화하고 더하면 서로 다른 두 연산 순서로 얻은 결과는 동일합니다. 특정 금액을 모르는 사람도 거래의 유효성을 확인할 수 있으며 두 금액의 합계가 올바른지 확인할 수 있습니다.

트랜잭션에 트랜잭션 수수료를 추가해야 할 때 채굴자에게 일반 텍스트로 전달되며 트랜잭션 수수료에 대한 추가적인 복잡한 암호화 및 복호화 작업이 필요하지 않습니다. 채굴자는 트랜잭션 입력의 Pedersen Commitment가 균형을 이룰 수 있는지 확인하기 위해 트랜잭션 출력의 Pedersen Commitment에 f*G를 추가합니다(f는 거래 수수료의 양을 나타냄).

지식 포인트: Pedersen Commitment: 일반 텍스트로 표현된 미사용 거래 출력(UTXO) 값을 암호화된 Commitment로 대체합니다.

가산 동형의 장점 2가지를 간단히 요약하면 하나는 복호화할 필요가 없고, 구체적인 거래 금액을 몰라도 거래의 유효성을 검증할 수 있다는 점이고, 다른 하나는 평이한 거래 수수료로 직접 계산할 수 있다는 점입니다. 텍스트로, 채굴자는 자신의 수입을 직접 확인할 수 있으며, 이 방정식이 유효한지 확인할 수 있습니다.

또 다른 점은 거래의 발신자와 거래의 수신자가 서로의 블라인드 요인을 모른다는 것입니다. 즉, 거래의 입력자는 출력자의 블라인드 요인을 모르고 거래의 출력자는 알 수 없습니다. 입력자 블라인드 요인의 블라인드 요인이지만 거래 금액을 알고 있습니다.

그 결과 등식 양쪽의 거래 금액은 균형 조정을 통해 상쇄할 수 있지만 눈가림 요인은 상쇄할 수 없습니다. 입력에서 출력을 빼면 하나의 용어로 끝납니다.

  • (ro-ri)*H

(ro는 transaction output의 blinding factor 합, ri는 transaction input의 blinding factor 합, H는 generator 2)

"나머지"라고 부를 수 있습니다.

참고: 프로젝트별 선택에 따라 (ro-ri)*H 또는 (ri-ro)*H가 나머지와 같은지는 중요하지 않습니다.

MimbleWimble의 Confidential Transaction에서 이 트랜잭션이 무분별하게 구성되지 않았음을 증명하기 위해(트랜잭션 수출자와 수입자는 모두 자신의 맹목적 요소를 알고 있으며, 다른 사람의 트랜잭션 출력을 사용하여 자신의 트랜잭션을 구성하지 않음), 해결하다.

비트코인에서는 비교적 간단합니다. 자신의 개인 키로 전체 트랜잭션에 직접 서명하여 트랜잭션에 참여하고 구성했음을 증명합니다.

그러나 MimbleWimble 접근 방식은 참신합니다. 눈부신 요소 차이를 알고 있음을 증명하기만 하면 됩니다.
(참고: 여기서 블라인드 요인의 차이는 "트랜잭션 출력의 블라인드 요인의 합 - 거래 입력의 블라인드 요인의 합"이며, 이하 동일한 개념임)

수입자와 수출자는 자신의 블라인드 요인만 알고 상대방의 블라인드 요인은 모르기 때문에 블라인드 요인의 차이는 두 사람의 지식을 합산하여 계산할 수 있음을 공동으로 증명하는 합의가 필요합니다. 이것은 전체 트랜잭션에 직접 서명하는 것과 같으며, 이는 내가 트랜잭션을 무분별하게 구성하지 않았음을 증명할 수 있습니다.

다른 말로 블라인드 팩터 차이를 알고 있음을 증명할 수 있다면 입력된 개인 키로 트랜잭션에 서명하지 않고 트랜잭션의 승인된 서명도 완료합니다.

사실 밈블윔블에서는 블라인드 팩터 차이를 내가 블라인드 팩터 차이를 알고 있음을 증명하기 위해 0과 같은 고정 문자열에 서명하는 데 블라인드 팩터 차이를 사용한 다음 나머지 항목을 동시에 게시합니다.

위 단락의 핵심은 Blinding Factor 차이에 대한 지식이 Bitcoin의 전통적인 거래에서 개인 키를 대체할 수 있다는 것입니다.

추가 사항이 있습니다. 범위 증명이 필요합니다.

금액 부분의 경우 금액 부분에 음수가 없음을 증명해야 합니다. 트랜잭션 입력이 1이고 트랜잭션 출력이 2와 -1인 트랜잭션을 구성하는 사람을 원하지 않기 때문입니다. 허공에서 약간의 돈.

이 트랜잭션의 모든 출력에 음수가 없음을 증명하기 위해 각 트랜잭션 출력에는 짧은 영지식 증명인 범위 증명이 필요합니다. 긍정적인.

직관적인 개념을 제공하기 위해 각 트랜잭션 출력의 암호화된 암호문은 약 33바이트이지만 Range Proof는 이제 약 5KB이며 이는 Range Proof가 영지식 증명과 동일하기 때문에 이미 최적화된 결과입니다. 짧게 만들기가 어렵습니다.

그레고리 맥스웰은 첫 번째 버전을 만들었습니다.Confidential Transaction, 그는 Range Proof를 완성했고 스탠포드 대학의 학생 인 Benedikt Bünz는 원래 Gregory의 Range Proof보다 짧고 검증 속도가 더 빠른 Range Proof의 개선 된 버전을 제안했습니다. Range Proof의 향상된 버전은Bulletproofs, 정보 보안 분야에서 최고 1 회의에 게시되었습니다. Bulletproofs는 RangeProof를 훨씬 작게 만들어 약 700바이트 크기로 만듭니다.

Pieter Wuille과 Gregory Maxwell은 모두 이 기사의 저자이며, 그들은 Benedikt가 Bulletproofs의 구현 및 테스트를 완료하도록 도왔으며, 이는 최신 암호화 기술이 MimbleWimble의 기밀 트랜잭션 구조에 직접 적용된다는 의미이기도 합니다.

이제 첫 번째 부분을 간략하게 살펴보겠습니다.MimbleWimble에는 세 가지 기본 구성 요소가 있습니다.첫 번째는 Confidential Transaction으로 금액의 암호화를 실현하고 Blinding Factor 차이를 직접 사용하여 개인 키에 서명하여 나머지 항목에 대한 지식을 증명합니다. 대체 전통적으로 입력된 개인 키는 직접 서명하는 데 사용되며 범위 증명도 기밀 트랜잭션에 첨부됩니다.

Coin Join

이제 MimbleWimble의 두 번째 구성 요소인 Coin Join에 대해 이야기하기 시작합니다.

Coin Join의 아이디어는 매우 간단합니다.두 개의 트랜잭션이 있을 때 각 트랜잭션 방정식의 왼쪽과 오른쪽이 균형을 이룰 수 있습니다.두 트랜잭션 방정식의 왼쪽과 오른쪽을 함께 더하는 것은 여전히 ​​합법적인 트랜잭션입니다.. 한 트랜잭션에 입력 1과 출력 1이 있고 다른 트랜잭션에는 입력 2와 출력 2가 있다고 가정합니다. 두 개의 입력(입력 1과 입력 2)과 두 개의 출력(출력 1과 출력 2)이 있는 새 트랜잭션을 생성합니다. 이 역시 합법적인 트랜잭션입니다.

Coin Join은 Bitcoin 초기에 더 나은 개인 정보 보호를위한 솔루션 인 Gregory Maxwell이 처음 제안했습니다.

그러나 Gregory Maxwell이 코인 조인 프로토콜을 제안했을 때 모두가 큰 의문을 품었습니다. 즉, 트랜잭션의 각 입력 및 각 출력에 대해 하나의 균형 조정 방법만 있다는 것입니다. 예를 들어, 트랜잭션의 입력은 8 BTC이고 출력은 3과 5이며 다른 트랜잭션의 입력은 20 BTC이고 출력은 10과 10입니다. 이 두 트랜잭션의 입력과 출력을 함께 넣으면 사람들이 할 수 있습니다. 여전히 어떤 출력이 어떤 입력에 먼저 해당하는지 알 수 있으므로 Coin Join 자체는 많은 프라이버시를 제공하지 않습니다.

그러나 Confidential Transaction과 결합하여 모든 트랜잭션 입력 및 출력을 암호화하면 매우 우수한 프라이버시를 제공할 수 있습니다.

Coin Join 프로토콜은 매우 간단하지만 이를 CT와 직접 연결하는 데 문제가 있을 것입니다.전통적인 서명 방식을 사용할 경우(각 트랜잭션의 유효성은 트랜잭션에 입력된 공개 키에 해당하는 개인 키로 서명됨) , 우리는 서명에 사용된 주소를 기반으로 어떤 입력이 어떤 출력에 해당하는지 결정하는 것이 전적으로 가능합니다.

따라서 Coin Join plus Confidential Transaction은 자연스럽게 나머지 항목을 공개 키로 사용하고 블라인드 요인의 차이를 개인 키로 사용하고 이 공개-개인 키 쌍을 사용하여 다른 서명 방법을 선택해야 합니다. 기호 0. 이것은 트랜잭션의 서명을 통해 입력과 출력이 직접 연결될 수 있는 상황을 해결합니다.

향후 Zcash가 영지식 증명을 위한 스마트 계약을 구현할 수 있지만 매우 느릴 것입니다. 현금 시나리오에서 필자는 비트코인이 기본적인 검증 기능을 가지고 있기 때문에 비트코인의 스마트 계약 지원이 충분하다고 개인적으로 생각합니다.우리는 이러한 기능을 배열하고 결합하여 현실 세계에서 많은 스마트 계약이 요구하는 검증 작업을 완료할 수 있습니다.

Grin Coin의 디자인 타임 스마트 계약 지원 기능은 Bitcoin 및 Zcash보다 나쁩니다. 그러나 이것은 또한 연구자들이 주소 식별자가 없고 많은 트랜잭션이 삭제되는 시스템에서 스마트 계약을 구현하는 방법에 대해 생각하도록 동기를 부여합니다.

코인 조인의 또 다른 문제점이 있는데요, 앞에서 0이 서명되었다고 말씀드렸는데 정말 서명이 0인 경우 두 개의 서명을 직접 합산하여 새로운 법적 서명을 만들 수 있습니다. 그러나 프로토콜의 실제 동작 중에는 0을 서명으로 사용하는 것이 좋지 않고 고정된 형식의 필드를 서명해야 한다는 것을 알게 되었습니다.

각 트랜잭션 서명의 대상이 다르기 때문에 이러한 서명을 직접 추가하는 것은 불가능합니다. 그렇다면 트랜잭션 확인에 영향을 주지 않고 트랜잭션을 Coin Join과 함께 연결하여 거대한 트랜잭션을 형성하는 것이 어떻게 가능할까요? 함께 연결한 후 트랜잭션 출력에 해당하는 트랜잭션 입력을 재구성할 수 있는 방법이 있습니까?

One Way Aggregate Signatures

여기에는 단방향 집계 서명인 단방향 집계 서명이라고 하는 그의 세 번째 기술이 포함됩니다.

단일 항목 집계 서명은 맹검 요인의 차이 x를 두 항목 x1과 x2로 나누고 여기서 x1*H는 공개 키로 공개됩니다. x1을 알고 있습니다. x2 는 직접 공개되어 x2 도 알고 있음을 증명합니다. x1*H + x2*H는 이전 나머지와 같습니다.

이제 블라인드 요인 간의 차이를 두 항목으로 나눈 후 x1*H를 커널 초과라고 하고 x2를 커널 오프셋이라고 하며 커널 오프셋을 오프셋이라고 합니다.

블라인드 요인의 차이를 두 부분으로 나누면 어떤 이점이 있습니까?

블록의 모든 트랜잭션이 큰 코인 조인 트랜잭션을 형성할 때 일반 텍스트로 공개된 커널 오프셋을 직접 추가하여 각 트랜잭션의 정보를 버릴 수 있습니다.

서명이 필요한 부분의 경우 서명된 부분이 모두 0으로 서명되지 않고 고정 필드 서명으로 서명되기 때문에 함께 집계할 수 없으며 이러한 서명을 별도로 저장해야 합니다. 즉, 모든 Kernel Offset을 합산하여 한 블록에 하나의 Kernel Offset만 저장하지만 Kernel Excess는 여전히 별도로 저장합니다. Kernel Excess와 x1을 사용하는 고정 필드의 서명은 각 트랜잭션의 Kernel에 저장됩니다.

이것의 장점은 거대한 Coin Join 트랜잭션 블록을 얻을 때 Kernel Offsets의 집계 항목과 모든 서명을 다시 결합하여 이 블록의 모든 트랜잭션이 유효한지 확인할 수 있다는 것입니다. 그리고 Kernel Offsets이 결합되었기 때문에 추가된 Offsets을 분해할 방법이 없습니다. 각 서명이 어떤 입력 및 출력에 해당하는지 알 방법이 없으므로 One Way Aggregate Signatures가 구현됩니다.

다시 설명드리자면, One Way Aggregate Signatures의 기본 기능은 블록에서 많은 트랜잭션 입력과 출력을 얻을 때 어떤 트랜잭션 입력과 출력이 원래 트랜잭션인지 판단할 방법이 없다는 것입니다. 그 방법은 각 거래의 블라인드 요인의 차이를 두 부분으로 나누어 하나는 내가 알고 있음을 서명으로 증명하는 것이고, 다른 하나는 내가 알고 있음을 증명하기 위해 평문을 직접 게시하는 것입니다. 일반 텍스트를 직접 게시하는 항목의 경우 모든 트랜잭션에 대해 직접 함께 추가할 수 있습니다.

여기에 Cut Through 개념을 추가하겠습니다.

소비된 모든 트랜잭션 출력이 블록의 방정식 왼쪽에 한 번 표시되고 오른쪽에 다시 한 번 표시되기 때문에 방정식의 양쪽에 있는 항을 지울 수 있습니다. Cut Through의 개념은 이미 소비된 트랜잭션 출력을 블록에서 삭제할 수 있다는 것입니다. 공간.

그러나 Mimblewimble은 집계하기 어려운 몇 가지 지점을 갖게 됩니다. 하나는 모든 트랜잭션 출력의 범위 증명입니다. 시간이 지남에 따라 Mimblewimble 시스템에는 점점 더 많은 UTXO가 있을 것이며 각 트랜잭션 출력에는 자체 범위 증명이 있습니다. 증명, 내 출력이 음수가 아님을 증명합니다.
(참고: UTXO는 시간에 따라 단조롭게 증가하지 않습니다. 여기서 표현한 것은 시간이 지남에 따라 사용자가 증가하고 UTXO가 증가한다는 것입니다.)

UTXO의 유효성을 검증해야 할 때 이러한 범위 증명을 처음부터 끝까지 계산해야 합니다. 이는 비트코인보다 단일 트랜잭션 출력의 유효성을 검증하는 데 더 많은 시간과 저장 공간에 해당합니다.

따라서 Mimblewimble 계산 및 저장 공간의 병목 현상은 Range Proof입니다. 또한 블라인드 팩터가 두 항목으로 분할된 후 각각의 새 트랜잭션에는 자체 서명이 있으며 이 집계 불가능한 항목은 압축할 수 없습니다.

전체 블록체인을 순회할 때 검증 시간에도 영향을 미치며 위의 두 항목이 Scaling에 가장 큰 영향을 미칩니다.

MimbleWimble의 구체적인 구현 - Grin

다음으로 마이닝 알고리즘이 Cuckoo Cycle이라고 하는 MimbleWimble—Grin의 특정 구현에 대해 이야기하겠습니다.

간단히 말해, Cuckoo Cycle은 두 개의 매우 긴 해시 테이블이고 각 테이블에는 많은 노드가 있으며 두 해시 테이블 간에 많은 스레드가 유사 무작위 방식으로 연결됩니다.

해시 테이블 1은 해시 테이블 2에만 연결할 수 있고 해시 테이블 2는 해시 테이블 1에만 연결할 수 있습니다. 테이블 1의 요소는 연결할 수 없으며 테이블 2의 요소는 연결할 수 없습니다.

퍼즐 자체는 길이가 정확히 42인 원을 찾는 것입니다. 길이가 42인 원.

이 설계의 원래 목적은 퍼즐 자체가 퍼즐을 풀기 전에 가능한 한 많은 메모리 공간을 차지하도록 하는 것입니다.

표 1의 어떤 점이 표 2의 노드에 연결되어 있는지 알고 싶다면 가장 좋은 방법은 먼저 모든 모서리를 세고 특정 데이터 구조에 저장한 다음 이 데이터 구조에서 검색하는 것입니다. 검색하기 전에 큰 메모리 공간을 열 필요가 있는지 확인할 수 있으므로 퍼즐 계산을 피하기 위해 CPU 사용과만 관련이 있으며 큰 메모리 공간의 원래 의도는 ASIC에 특정 어려움을 유발하는 것입니다.

하지만 시간의 발전과 함께 어차피 ASIC이 존재할 것이라는 사실을 누구나 깨닫게 되었고, 당시 이 문제를 해결하기 위해 가장 좋은 알고리즘을 기반으로 일부 개선을 하여 퍼즐도 ASIC으로 헤아려질 수 있도록 했습니다. 프로토콜의 초기 단계에서는 ASIC에 그다지 우호적이지 않은 프로토콜을 선택하겠지만, 2년 후에는 ASIC에 매우 편리한 개선된 버전의 프로토콜로 완전히 대체될 것입니다.

여기서 한 가지 더 말씀드리자면, 암호학자의 학생으로서(저는 암호학자가 아니지만 제 상사는 그렇습니다) 쿠쿠 사이클에서 가장 충격적인 점은 설계 초기에 직관만 있고 수학적 계산이 없다는 것입니다. 알고리즘이 가장 빨라야 한다는 증거. Cuckoo Cycle을 해결하기 위한 이러한 알고리즘은 모두 Cuckoo Cycle이 유명할 때 논의되었습니다.

따라서 수학적 증거가 없는 경우, 어떤 사람이 갑자기 Cuckoo Cycle을 해결하기 위해 특히 빠른 알고리즘을 발명하여 모든 Grin 코인이 그 사람에 의해 파헤쳐졌을 가능성이 전적으로 있습니다. 이것은 현재 Grin에게도 문제입니다.

이것은 나에게도 교훈이었다. 2013년에 저는 Cuckoo Cycle과 매우 유사한 PoW 알고리즘을 설계하기 위해 1년을 보냈지만 당시 저를 괴롭혔던 것은 특정 알고리즘이 반드시 해결해야 한다는 수학적 증거를 찾을 수 없다는 것입니다. 가장 빠르기 때문에 마지막 기사를 게시하지 않았습니다. 지금 생각해 보면 정말 안타깝습니다. 이런 미성숙한 아이디어는 모두가 토론할 수 있도록 버려질 수 있고, 좋은 아이디어가 논의될 수 있으며 모든 것을 수학으로 증명할 필요는 없기 때문입니다.

그래서 얼마 전 뻐꾸기 싸이클의 디자인 이야기를 들었을 때 감격스러웠다.

지금까지 MimbleWimble에 대한 세부 정보를 다루었습니다.

Pick Time

마지막 공유 세션에서는 벨기에에서 박사 과정을 밟았던 경험을 공유하여 학문에 관심이 있는 여러분에게 영감을 주고자 합니다.

추천 자료:

추천 자료:




Odaily 공식 커뮤니티에 가입하세요