알고랜드의 대역폭 활용은 얼마나 효율적입니까? Cardano의 Ouroboros는 어떻습니까? 솔라나와 NKN이 이렇게 높은 TPS를 가질 수 있는 이유는 무엇입니까? 이더리움은 블록 간격을 15초로 단축했는데 비트코인 처리량보다 훨씬 높지 않은 이유는 무엇입니까?
Dr. Zhang Ren은 공유에서 이러한 질문에 하나씩 답할 것입니다. 다음은 렌 박사의 연설 전문이다.
이 기사를 읽으려면 블록체인에 대한 독자의 기본 지식에 대한 특정 요구 사항이 있습니다.
비트코인 합의 프로토콜(즉, Nakamoto Consensus)의 기본 개념
이더리움 합의 프로토콜의 기본 개념
고아 블록, 삼촌 블록, 이기적 채굴 및 기타 개념
비디오 링크:
비디오 링크:https://v.qq.com/x/page/g0837...
제 소개를 하겠습니다. 저는 Nervos & Cryptape의 연구원인 Zhang Ren입니다. 저는 현재 KU Leuven의 COSIC(Computer Security and Industrial Cryptography group)에서 Bart Preneel의 지도 아래 박사 과정 학생입니다. COSIC에 익숙하지 않다면 모든 휴대폰에서 사용되는 암호화 표준인 AES에 대해 들어 보셨는지 궁금합니다.
물론 Bart Preneel에 대해 잘 아시는 분이라면 그가 RIPEMD 160의 디자이너라는 사실을 아실 것입니다. RIPEMD 160은 비트코인 공개 키를 비트코인 주소로 변환할 때 사용되는 해시 알고리즘입니다.
Nervos CKB는 다양한 프로그래밍 언어와 다양한 레이어 2 프로토콜로 스마트 계약을 지원할 수 있는 퍼블릭 체인입니다. Nervos CKB에서는 모든 자산을 사용하여 거래 수수료를 지불할 수 있습니다. Nervos CKB에서 스마트 계약의 실행 및 검증은 더 나은 프라이버시와 성능을 달성하기 위해 분리됩니다. 마지막으로, Nakamoto Consensus의 변형인 NC-Max가 Nervos CKB에서 더 높은 처리량을 가진 합의 프로토콜로 채택되었습니다.
면책 조항: 이 공유 콘텐츠는 Layer 1 합의 프로토콜 분석에만 초점을 맞추고 있으며 Lightning Network와 같은 Layer 2 솔루션에 대해서는 언급하지 않겠습니다.
보조 제목
우리는 왜 Bitcoin의 NC를 좋아합니까?
먼저 질문에 답해 보겠습니다. 비트코인의 NC(Nakamoto Consensus)를 좋아하는 이유는 무엇입니까?
여러 가지 이유가 있는데 우선 NC의 성능 최적화가 매우 우수하여 모든 전송 및 모든 계산 주기의 모든 바이트를 절약할 수 있습니다. 예를 들어, Compact Block을 사용하여 블록 전파 속도를 높이고 향후 Minisketch(분산 시스템의 서로 다른 노드 간에 정보를 동기화할 때 대역폭 요구 사항을 줄이는 데 사용되는 소프트웨어 라이브러리)를 사용하여 트랜잭션 브로드캐스팅 대역폭 리소스를 절약할 수 있습니다. 이와 동시에 비트코인 개발자들이 Graftroot(비트코인에 대한 스마트 컨트랙트 개발 및 프라이버시 관련 제안)를 제안했는데, 비트코인에 스마트 컨트랙트를 압축하여 더 나은 프라이버시와 더 나은 보안 성능을 얻을 수 있다고 생각하시면 됩니다. 아마도 Bitcoin에 적용된 Signature Aggregation도 볼 수 있습니다.
지식 포인트: 비트코인 개선 프로토콜(BIP) 152에서 제안된 컴팩트 블록 릴레이는 P2P 네트워크 노드가 블록을 브로드캐스트하는 데 필요한 대역폭의 양을 줄일 수 있습니다.
압축 블록은 다음 세 부분의 정보를 포함하는 전체 블록의 "요약"입니다.
1. 새 블록의 블록 헤더
2. 거래 아이디
3. 송신 노드에서 예측했지만 수신 노드에서 사용할 수 없는 완전한 트랜잭션
수신자는 수신된 정보와 mempool의 트랜잭션을 기반으로 전체 블록을 재구성하려고 시도합니다. 일부 트랜잭션이 여전히 누락된 경우 브로드캐스트 노드를 요청합니다.
NC를 좋아하는 또 다른 이유는 다재다능함입니다. UTXO 모델과 글로벌 트랜잭션 주문은 다양한 샤딩 기술과 레이어 2 체계는 물론 복잡한 스마트 계약을 지원할 수 있습니다.
이에 비해 이더리움의 Account 모델은 샤딩이 더 어렵고, DAG 형태의 프로토콜이 많은 등 글로벌 거래 순서가 없으면 복잡한 스마트 컨트랙트를 지원하기 어렵습니다. 나중에 DAG에 대해 이야기할 때.
우리는 또한 Bitcoin NC의 보안을 좋아합니다. Bitcoin 네트워크는 많은 공격을 경험했으며 10년 동안 안정적으로 실행되었습니다. 그리고 엄밀히 말하면 현재 전체적으로 NC를 능가하는 알려진 작업 증명 합의 메커니즘은 없습니다. 이 주제에 관심이 있는 경우 볼 수 있습니다.여기.
보조 제목
NC를 위해 어디를 변경해야 합니까?
위의 연구에서 언급한 바와 같이, 네트워크에 연결된 비트코인 IPv4 노드의 평균 대역폭은 2016년 33Mbit/s, 2017년 2월 56Mbit/s였습니다.
우리가 쉽게 생각할 수 있는 개선 방법은 프로토콜 자체가 대역폭 수준의 변화에 적응하기 위해 처리량을 동적으로 조정할 수 있는지 여부입니다.
Bitcoin Unlimited는 Bitcoin의 처리량을 동적으로 조정하려는 잘못된 시도를 했지만 실패했으며 프로토콜을 불안정하게 만드는 여러 가지 새로운 공격 벡터를 도입했습니다. 위는 Coindesk에 게시된 Bitcoin Unlimited의 보안에 대한 연구입니다(링크:https://www.coindesk.com/etf-...), 저도 이 연구의 참가자 중 한 명이었습니다.
NC에서 변경하고자 하는 또 다른 사항은 이기적인 채굴 공격의 문제인 인센티브 문제입니다. 이기적인 마이닝 공격자는 네트워크에서 더 큰 우위를 차지하기 위해 발견된 블록을 보류합니다. 다른 정직한 채굴자가 블록을 발견하면 공격자는 보류된 블록을 네트워크에 브로드캐스트하여 정직한 블록보다 먼저 대부분의 정직한 채굴자가 브로드캐스트된 보류된 블록을 수신하기를 바랍니다. 공격자가 운 좋게도 공격자의 블록 위에 다음 블록이 채굴되면 정직한 블록은 고아가 됩니다. 공격자가 연속으로 여러 블록을 채굴할 만큼 운이 좋다면 공격자가 더 긴 체인을 갖게 되므로 정직한 채굴자의 블록을 무효화하는 것이 매우 안전할 것입니다.
이기적 채굴이 수익성이 있는 이유는 무엇입니까? 이기적인 마이닝 공격자가 전체 네트워크 컴퓨팅 파워의 30%를 차지하고 정직한 마이너가 나머지 70%를 제어한다고 가정하는 구체적인 예를 들어 보겠습니다. 이기적인 마이닝 공격이 없다면 공격자는 10개 블록 중 3개를 찾을 수 있고 정직한 마이너는 7개를 찾을 수 있으며 모두가 합당한 보상을 받습니다. 공격자가 이기적인 마이닝 공격을 시작하면 3개의 블록을 찾을 수 있고 정직한 마이너는 4개의 블록만 찾을 수 있습니다. 생성할 수 있었던 블록은 이제 7개 블록에 불과하고 메인 체인의 성장 속도가 느려졌습니다.
보조 제목
기타 대체 합의 프로토콜
그렇다면 다른 대체 합의 프로토콜을 선택하지 않는 이유는 무엇입니까?
현재 NC를 대체할 수 있는 세 가지 방법이 있는데 PoS(Proof of Stake, Proof of Rights and Interest), DAG 및 두 가지 블록 유형의 합의 프로토콜입니다. 이 세 가지 방법은 상호 배타적이지 않으며 동시에 2~3가지를 적용할 수 있습니다. 아래에서는 이러한 프로토콜의 보안, 기능 및 처리량을 자세히 분석합니다.
첫 번째는 PoS이며 사실상 모든 PoS 프로토콜은 새로운 보안 전제를 도입합니다. 알고랜드를 예로 들면 대부분의 정직한 사용자가 보낸 메시지를 알려진 시간 범위 내에서 대부분의 다른 정직한 사용자가 수신할 수 있어야 합니다. 즉, 프로토콜의 원래 설계에 따라 알고랜드 토큰을 보유하고 있으면 메시지를 수신하기 위해 항상 온라인 상태를 유지해야 합니다. 온라인 상태가 아닌 경우 자격을 갖춘 토큰 보유자가 아닙니다.
Cardano의 합의 프로토콜인 Ouroboros는 모든 사용자가 약하게 동기화된 시계를 가지고 있고 모든 메시지가 특정 시간 간격 내에 전달될 수 있다고 가정합니다. 이것은 실제로 매우 강력한 가정을 만듭니다. 채굴 장비, 공용 노드 또는 전화기의 시계를 왜곡할 수 있는 많은 공격이 있습니다. 그리고 이 솔루션은 실제 환경에서 구현하기가 매우 어렵습니다.
또한 Sleepy Protocol은 사용자가 대략적으로 동기화된 시계를 요구합니다.
이러한 보안 가정이 위반되면 이러한 PoS 프로토콜에 재앙적인 결과를 초래할 수 있습니다. 그리고 PoS 프로토콜은 Nothing-at-stake Attack, Grinding Attack, Long-range Attack과 같은 몇 가지 새로운 공격 방법을 도입하는데, 이러한 공격 방법은 PoW 프로토콜에 존재하지 않으며 여기서는 이러한 공격 방법에 대해 자세히 설명하지 않습니다.
그렇다면 DAG 프로토콜은 어떻습니까?
모든 DAG 프로토콜은 트랜잭션 순서 문제가 있습니다 DAG 프로토콜과 같이 블록이 동기적으로 생성되면 서로 다른 채굴자 또는 서로 다른 퍼블릭 노드가 트랜잭션 순서에 대해 일관되지 않은 판단을 하게 됩니다. 확인해야 할 트랜잭션 집합입니다. 이때 문제 해결에 대해 두 가지 생각을 하게 됩니다.
하나는 블록체인의 토폴로지 정렬이 완료된 후 트랜잭션을 정렬하는 것이므로 트랜잭션 확인을 위해 오랜 시간을 기다려야 합니다.
다른 하나는 거래 순서를 확인하지 않는 것입니다. 계약의 입력에는 글로벌 거래 순서가 필요합니다.다른 채굴자가 판단한 거래 순서가 다른 경우 각 채굴자는 특히 복잡한 계약의 경우 계약 논리 실행 순서에 대한 이해가 다릅니다. 이로 인해 계약의 기능이 제한되고 복잡한 계약을 실행할 수 없으며 계약에 포함된 토큰이 계약에 고정됩니다.
두 가지 블록 유형이 있는 프로토콜은 어떻습니까? 2블록형 프로토콜은 이름에서 알 수 있듯이 NC의 블록과 동일한 키블록(Key Block)을 사용하여 트랜잭션 확인의 보안성을 확보하고, 두 개의 키블록(Micro Block) 사이에 마이크로블록을 브로드캐스트한다. 처리량을 개선합니다.
이러한 프로토콜은 일반적으로 DAG 프로토콜과 같이 긴 확인 지연이 있습니다. Bitcoin NG는 위의 체계를 채택합니다. 사용자가 트랜잭션 확인을 보장해야 하는 경우 Bitcoin NG에서는 여러 키 블록의 확인을 기다려야 하고 긴 트랜잭션 지연을 견뎌야 한다고 비트코인 NG 논문에 명확하게 명시되어 있습니다.
(공유 과정에서 Zhang Ren은 Byzcoin에도 비슷한 문제가 있다고 언급했습니다. 그러나 추가 분석 후 문제는 유사하지 않습니다. Byzcoin에 관심이 있는 경우 포럼으로 이동할 수 있습니다.https://talk.nervos.org/t/ner...보조 제목
청구 된 TPS?
이러한 대체 합의 프로토콜을 채택하는 모든 프로젝트는 처리량이 높다고 주장하므로 이러한 프로젝트의 처리량은 얼마입니까? (다음 구간은 영상 시청을 권장하며, 15:30경, 그 장면은 매우 흥미진진하다)
Solana는 초당 710,000건의 트랜잭션을 처리할 수 있다고 주장합니다. 그렇게 큰 돌파구를 만들 수 있다면 튜링상을 받을 자격이 있습니다. 그들의 수상소식이 너무 기대됩니다.
NKN이라는 프로토콜도 있는데, 그들은 전체 네트워크에 10,000개의 노드를 가지고 있으면서 초당 100만 건의 트랜잭션을 처리할 수 있다고 주장합니다. 아직 어떻게 하는지는 모르겠지만 그들이 달성한 방식에 매우 감명받았습니다. 궁금한.
Stellar나 Ripple도 자신들의 프로토콜을 NC로 분류하는 이유가 궁금하고, 어떻게 10,000개의 노드가 초당 100만 트랜잭션을 처리할 수 있는지도 매우 궁금합니다.
그리고 꿈을 가지려면 이 거래처럼 큰 꿈을 꾸는 것이 좋습니다. 1초 미만의 최종 확인 시간으로 10000000000000TPS를 가질 수 있다고 주장합니다.
글쎄요, 저는 지구가 그들에게 충분히 크지 않다고 생각합니다. 그들은 프로토콜을 배포하기 위해 다른 더 큰 Odaily를 찾아야 합니다.
자칭 TPS는 비교할 수 없다는 점에 유의해야 합니다. 서로 다른 네트워크 환경에서 시뮬레이션되기 때문에 일부 시뮬레이션은 1Gbit/s의 대역폭을 사용하기도 하는데, 이는 실제 네트워크 상황과 분명히 다릅니다.
그리고 이러한 합의는 실제 상황을 무시합니다. 그들 중 어느 것도 트랜잭션 동기화를 허용하지 않습니다. 그들에게는 모든 트랜잭션이 이미 블록에서 동기화된 것으로 보이며 합의 프로토콜은 트랜잭션을 정렬하는 데만 사용됩니다. 그리고 일부 시뮬레이션에서는 위원회 구성원(노드) 간에 직접 연결이 있다고 가정하지만 사실은 퍼블릭 체인 네트워크의 모든 메시지는 브로드캐스팅으로 수행되며 브로드캐스팅 메시지는 퍼블릭 노드의 대역폭을 차지하게 됩니다.
보조 제목
처리량 비교를 위한 단순 모델
여기에 TPS를 평가하는 모델이 있습니다. 그림에서 볼 수 있듯이 우선 모든 퍼블릭 노드의 대역폭에는 상한선이 있으며 최대 100%의 대역폭을 사용할 수 있으며 대역폭의 100% 이상을 사용할 수 없다고 생각합니다. 여기에는 대역폭 사용에 대한 세 가지 구성 요소가 있습니다.
위의 그림과 같이 첫 번째 부분은 동기식 최종 확인에 사용되는 트랜잭션이 차지하는 대역폭의 비율이며 이 부분이 실제 TPS입니다(이것이 실제 TPS입니다). 트랜잭션을 확인하려면 먼저 트랜잭션을 동기화해야 합니다. 두 번째 부분은 합의 프로토콜에 의해 "낭비"되는 대역폭의 일부입니다. 세 번째 부분은 사용되지 않는 대역폭입니다.
따라서 TPS를 개선하고 싶다면 할 수 있는 일은 두 가지뿐입니다.
1. 합의 프로토콜이 차지하는 대역폭의 비율을 줄입니다.
2. 사용하지 않는 대역폭의 비율을 줄입니다.
할 수 있는 것은 이 두 가지 뿐이고, 네, 다른 방법은 없으며, Layer 1의 프로토콜 대역폭 점유율은 100%를 초과할 수 없습니다.
그런 다음 다른 대체 합의 프로토콜의 대역폭 사용량을 살펴보겠습니다.
실제로 많은 프로토콜이 위원회 구성원 간의 통신에서 소중한 대역폭 리소스를 낭비합니다.
알고랜드는 블록이 커밋되었음을 신규 사용자에게 증명하기 위해 블록 인증서를 저장합니다. 각 블록 인증서의 크기는 블록 크기 제한과 관계없이 300KB입니다. 1MB의 블록 크기로 계산하면 대역폭의 약 25%가 항상 이러한 인증서를 동기화하는 데 사용된다는 의미입니다. 그래서 왜 그들이 NC보다 처리량이 더 낫다고 주장하는지 매우 궁금합니다. 전혀 말이 되지 않습니다.
합의 프로토콜에서 대역폭을 낭비하는 또 다른 방법은 블록 DAG 및 고아 블록의 중복 트랜잭션입니다. 위의 논문에서 언급했듯이 모든 노드가 블록에 동일한 하위 트랜잭션 집합을 포함하도록 선택하면 병렬로 생성된 두 블록이 충돌할 수 있으며 처리량이 그리 높지 않습니다.
보조 제목
Satoshi Nakamoto 합의의 딜레마를 어떻게 극복할 것인가?
위의 분석에서 현재 처리량이 우리를 만족시킬 수 없다는 것이 명백하므로 Nervos CKB의 합의 프로토콜 NC-Max는 NC를 일부 개선했습니다.
NC-Max에는 세 가지 주요 혁신이 있습니다.
2단계 트랜잭션 확인을 사용하여 고아 블록 비율을 줄입니다.
블록 간격 및 블록 보상을 동적으로 조정하여 대역폭 활용도 향상
이기적인 채굴 공격에 저항하기 위해 난이도를 조정할 때 주기의 모든 블록을 고려하십시오.
다음에 자세히 설명하겠습니다.
NC에서 처리량을 늘리기 위해 수행할 수 있는 작업은 두 가지뿐이므로 NC에는 자연스러운 처리량 제한이 있습니다.
첫 번째는 Bitcoin Unlimited 및 Bitcoin Cash와 같은 더 큰 블록이며 다른 많은 프로젝트도 동일하게 수행합니다.
두 번째는 블록 간격을 줄이는 것입니다.
그러나 블록 브로드캐스팅은 시간이 걸리기 때문에 다른 노드가 블록을 발견하여 브로드캐스트 중에 브로드캐스팅하면 브로드캐스팅 중인 블록과 경쟁하게 되고 그 중 하나는 고아 블록이 됩니다. 더 큰 블록은 브로드캐스트하는 데 더 오래 걸리며 블록 간격을 줄이면 실제로 블록 생성의 어려움이 줄어들어 노드가 블록을 더 쉽게 발견할 수 있습니다. 이 두 방식의 결과는 고아 블록 비율이 높아진다는 것입니다. 이러한 고아 블록은 더 많은 대역폭을 차지하지만 트랜잭션 확인에는 기여하지 않습니다. 고아 블록 비율이 증가하면 시스템의 보안이 저하되고 처리량이 감소합니다. 따라서 이 두 가지 방식은 결국 균형을 이루게 되는데, 블록 크기나 블록 간격을 일정 수준으로 조정하면 고아 블록 비율이 어느 정도 높아지게 되며, 블록 크기를 더 늘리거나 블록 간격을 줄여도 , 처리량도 개선되지 않습니다.
너무 많은 고아 블록이 네트워크의 보안과 성능에 부정적인 영향을 미치는 이유는 무엇입니까? 위의 그림에서 우리는 고아 블록 비율이 매우 높을 때 공격자가 쉽게 더 긴 체인을 비공개로 구축할 수 있음을 알 수 있습니다. 공격자는 블록체인을 덮어쓰기 위해 전체 네트워크 컴퓨팅 성능의 51%보다 훨씬 낮은 컴퓨팅 성능만 있으면 됩니다. 그리고 고아 블록은 공용 노드의 많은 대역폭을 소비하므로 전체 시스템의 처리량에 큰 부정적인 영향을 미칩니다.
그렇다면 NC 처리량의 한계를 어떻게 깨뜨릴 수 있을까요? 위의 분석 후 이 제한을 깨고 싶다면 고아 블록 비율을 줄여야 합니다. 고아 블록 비율이 낮아지면 네트워크의 보안과 처리량이 모두 향상될 수 있습니다.
고아 블록 비율을 줄이는 방법은 무엇입니까? 고아 블록의 출현은 블록 브로드캐스팅의 지연으로 인해 블록 브로드캐스팅 중에 다른 블록이 발견되면 그 중 하나는 고아 블록이 될 운명입니다. 블록 브로드캐스트가 즉시 완료될 수 있다면 당연히 고아 블록이 없을 것입니다. 그렇다면 블록이 충분히 빠르게 브로드캐스팅되도록 하려면 어떻게 해야 할까요?
비트코인 개발자들은 블록의 브로드캐스팅 속도를 높이기 위해 많은 자원과 에너지를 투자했으며, 어떤 블록이 브로드캐스트 속도가 느리거나 문제가 있는지 더 알아내야 합니다.
이것이 어떻게 발생하는지 자세히 봅시다. 아래 이미지를 참조하십시오.
현재 비트코인 네트워크에서는 모든 것이 잘되면 컴팩트 블록 릴레이 프로토콜을 통해 블록이 브로드캐스트됩니다.
컴팩트 블록에서는 전체 트랜잭션(비트코인의 트랜잭션당 약 250바이트)이 브로드캐스트되지 않지만 컴팩트 블록의 트랜잭션 ID는 브로드캐스팅됩니다. 이러한 트랜잭션 ID는 실제 블록보다 훨씬 작은 컴팩트 블록을 형성하므로 속도가 훨씬 빨라집니다.
A노드가 Compact Block을 B노드로 브로드캐스팅하면 B노드는 이 트랜잭션 ID를 확인하여 이 트랜잭션 중 어느 것도 B노드에 대한 Fresh Transaction이 아닌 경우(즉, B노드의 트랜잭션 풀에 이러한 트랜잭션이 포함되어 있음) B노드 B는 즉시 이 트랜잭션을 전달할 수 있습니다. 컴팩트 블록 인접 노드에 대한 블록, 이 상황은 매우 양호하고 프로세스가 매우 원활합니다.
그러나 컴팩트 블록에 새로운 트랜잭션이 있는 경우 노드 B는 먼저 노드 A의 새로운 트랜잭션을 동기화한 다음 이러한 트랜잭션의 서명을 확인해야 합니다.이 단계는 시간이 많이 걸립니다. 노드 B는 전체 블록이 올바른 것으로 확인된 후에만 블록을 계속 브로드캐스팅할 수 있습니다. 이 프로세스는 수신된 블록이 불법인 것을 방지하므로 채굴자는 이 블록 이후에 채굴 및 방송합니다.검증되지 않고 불법 블록으로 판명되면 이 불법 블록 이후의 블록은 무효가 됩니다. Fresh Transaction을 동기화하는 과정은 비트코인 블록 방송이 지연되는 주된 이유입니다.
그래서 Ethereum은 좋지 않은 시도였습니다. 그들이 어떻게했는지 분석하겠습니다. 이더리움은 단순히 블록 간격을 짧게 만들지만 이더리움은 블록을 받기 전에 트랜잭션의 유효성을 검증할 수 없다는 문제가 있습니다. 이더리움에서 트랜잭션의 유효성은 블록의 트랜잭션 순서에 따라 달라지므로 트랜잭션의 유효성을 확인하려면 전체 블록이 수신될 때까지 기다려야 각 블록이 실제로 모두 신선합니다. 거래.
그리고 Ethereum의 네트워크 프로토콜은 유지 관리가 매우 열악하며 2015년 이후로 반복되지 않았습니다.
그리고 트랜잭션 브로드캐스팅 프로세스에도 많은 중복이 있습니다. 이더리움 클라이언트는 동일한 트랜잭션을 다른 노드에 7번 브로드캐스트합니다. 즉, 각 노드는 동일한 트랜잭션을 7번 받습니다. (Ethereum에는 Parity Ethereum, Geth 등과 같은 다른 클라이언트가 있습니다.) 그리고 서로 다른 유형의 클라이언트 간에 불일치가 있으며 두 주요 Ethereum 클라이언트는 기본적으로 독립적입니다.
따라서 두 개의 서로 다른 네트워크를 연결할 수 있는 노드가 거의 없기 때문에 이더리움의 고아 블록 비율이 때때로 30%까지 높고 트랜잭션 처리량이 매우 낮습니다.
그리고 대형 채굴자들은 블록 방송 속도를 높일 동기가 없습니다. 내 블록이 더 느리게 브로드캐스트될 수 있다면 실제로 "이기적인 마이닝"을 달성할 수 있다는 의미이기 때문입니다(여기서 큰 채굴자는 블록을 보류하지 않지만 블록 브로드캐스트는 더 느리고 그 과정에서 다른 채굴자가 나타납니다. 경쟁 블록, 그리고 나는 큰 광부이기 때문에 다른 경쟁 블록과 경쟁하는 과정에서 이길 확률이 더 높습니다). 이것은 나에게 좋은 일입니다. 왜 블록 브로드캐스팅 속도를 높여야 합니까?
이더리움의 삼촌 블록 보상도 도움이 되지 않습니다. 광부들은 여전히 고아 블록에 대해 보상을 받기 때문입니다. 따라서 소규모 채굴자들은 블록 헤더를 브로드캐스팅하는 속도가 훨씬 빨라지기 때문에 먼저 블록 헤더와 빈 블록을 브로드캐스팅하는 방법을 채택할 것입니다. 그리고 다음 블록에 어떤 트랜잭션이 포함될지 모르기 때문에 채굴자는 일반적으로 이전 블록 트랜잭션과 충돌하는 트랜잭션이 블록에 포함되지 않도록 빈 블록을 채굴합니다. 빈 블록은 트랜잭션 확인에 기여하지 않기 때문에 이것은 매우 나쁩니다.
아래는 위에서 언급한 문제 중 일부를 완화하기 위한 설계입니다.
이 그림은 블록 구조이며 비트코인 블록 구조를 기반으로 여러 필드를 추가했습니다.
위의 그림은 전체 블록의 블록 구조입니다. 먼저 트랜잭션 제안 영역(청록색 영역)이 있습니다. 트랜잭션 제안 영역만 Fresh Transaction을 포함할 수 있는 반면, 전통적인 트랜잭션 확인 영역(주황색 영역)은 이전 몇 블록의 트랜잭션 제안 영역의 트랜잭션만 포함할 수 있습니다.현재 블록 높이가 h이면 hm to hn의 트랜잭션 제안 영역 내의 트랜잭션을 차단합니다. 이 트랜잭션만 확인 가능하며, Fresh 트랜잭션은 트랜잭션 확인 영역에서 확인할 수 없습니다. 트랜잭션 제안 영역에는 완전한 트랜잭션이 포함되지 않고 트랜잭션 ID(Truncated Transaction ID)만 포함되므로 트랜잭션 제안 영역은 매우 작을 것입니다.
엉클 블록(보라색 영역)은 엉클 블록 헤더 영역에 얼마든지 포함될 수 있으며 엉클 블록에는 블록 헤더와 트랜잭션 제안 영역이 포함되어야 합니다. 삼촌 블록 헤더 영역은 블록 크기에 포함되지 않으므로 블록 크기에 제한을 받지 않으므로 채굴자는 삼촌 블록을 추가하는 데 제한을 받지 않습니다.
트랜잭션 제안 영역에 대해 자세히 설명하겠습니다. 이 영역은 트랜잭션 ID만 포함하므로 매우 작습니다. 전체 트랜잭션은 블록과 동시에 브로드캐스트됩니다. 이는 병렬 프로세스이기 때문에 트랜잭션 브로드캐스트는 블록 브로드캐스트에 영향을 미치지 않습니다. 그리고 노드는 브로드캐스트된 트랜잭션을 수신한 후 해시를 확인하기만 하면 되며 이는 블록의 확인 프로세스에 영향을 미치지 않습니다.
이는 트랜잭션 제안 영역에 유효하지 않은 트랜잭션, 이중 지불 트랜잭션 및 채굴자가 수락할 수 없는 트랜잭션이 있을 수 있음을 의미하지만 문제가 되지 않습니다.
위에서 언급한 비트코인 블록 브로드캐스트 프로세스와 유사하게, 우리 프로토콜에서 블록을 발견한 노드는 먼저 컴팩트 블록(즉, 트랜잭션의 블록 헤더 및 ID)을 브로드캐스트합니다. 컴팩트 블록은 비트코인보다 약간 큽니다. 여러 삼촌 블록의 트랜잭션 제안 영역과 블록 헤더 및 삼촌 블록의 트랜잭션 제안 영역을 포함합니다. 그러나 Compact Block 자체는 충분히 작기 때문에 일반적으로 인접한 노드에 즉시 브로드캐스팅됩니다.
새로 제안된 트랜잭션 중 일부가 노드의 트랜잭션 풀에 없으면 컴팩트 블록 발행 후 브로드캐스팅됩니다. 이들은 병렬 프로세스이며 서로 영향을 미치지 않습니다. 노드는 트랜잭션을 수신하고 해시 검증 후 인접 노드에 브로드캐스트합니다.
이것은 자연스럽게 몇 가지 질문을 제기합니다.
광부가 제안된 거래의 전체 버전 제공을 거부하면 어떻게 됩니까?
제 딜제안란에 이 딜을 넣었는데 풀딜을 달라고 하셔서 모른 척 했습니다.
사실 이것은 트랜잭션 제안 영역에 새로운 트랜잭션이 있는지 여부와 관계없이 블록이 브로드캐스트될 수 있기 때문에 블록 브로드캐스트에 영향을 미치지 않습니다.
그리고 다른 채굴자들은 확인을 위해 제안된 트랜잭션이 항상 충분하기 때문에 채굴을 계속할 것입니다. 이전 블록의 트랜잭션 제안 영역에는 패키징할 트랜잭션 ID가 포함되어 있고, 발견된 블록은 패키지된 트랜잭션 확인 영역에서 트랜잭션 ID를 방송하기 때문에 채굴자가 블록을 파헤칠 필요가 없습니다. 채굴자는 어떤 트랜잭션이 패키징되고 어떤 것이 패키징되지 않는지 알고 있으며, 발견된 블록의 트랜잭션 확인 영역과 충돌하는 트랜잭션을 선택하지 않을 것입니다. 거래 확인에 기여합니다.
그렇다면 채굴자들이 일종의 이기적인 채굴 이점을 얻기 위해 제안되었지만 공개되지 않은 거래를 최신 블록에 포함한다면 어떨까요?
Bitcoin의 NC에서 채굴자는 블록 브로드캐스팅 속도를 늦추어 채굴 이점을 얻습니다. 채굴자는 일반적으로 블록을 채굴할 때 블록 헤더만 방송할 수 있고 전체 블록을 방송할 때는 속도가 느려집니다. 이 과정에서 채굴자만이 채굴을 할 수 있습니다.
그러나 우리 프로토콜에서 이 방법을 채택하면 n 블록 후에 블록 브로드캐스팅 속도가 느려질 뿐입니다. 제안되었으나 공개되지 않은 트랜잭션은 이기적인 채굴자에게만 알려지고, 이기적인 채굴자만이 이를 유리하게 사용할 수 있기 때문입니다. 그러나 이것은 다음 블록에서 사용할 수 없습니다. 우리 프로토콜에서는 제안 영역에 트랜잭션이 포함되기 전에 n 블록만 채굴할 수 있고 그 사이에 간격이 있어야 하기 때문입니다.
채굴자는 hm에서 hn 블록의 제안 거래만 채굴할 수 있지만 공격자가 이 블록도 채굴하지 않는 한 이전 블록의 제안 거래는 채굴할 수 없습니다.
표시된 바와 같이 이것은 합의 프로토콜과 Bitcoin NC를 비교한 것입니다. Bitcoin NC에서 이기적인 채굴자가 블록 h를 발견하면 블록 h+1을 즉시 채굴할 수 있으며 정직한 채굴자는 완전한 블록 h를 받은 후에만 채굴을 시작할 수 있습니다. 블록이 합법적인지 확인하기 위해 검증되었으며, 이기적인 채굴자는 블록 h의 전송 속도를 늦추어 다른 채굴자가 나중에 블록을 받도록 할 수 있습니다. 블록 방송 기간은 이기적인 채굴자들에게 유리한 기간입니다.
그러나 우리 프로토콜에서는 이기적인 채굴자가 블록 h를 찾아 블록 헤더와 트랜잭션 ID가 포함된 컴팩트 블록을 브로드캐스트하면 정직한 채굴자는 즉시 h+1 채굴을 시작할 수 있습니다. 이기적인 채굴자가 이러한 제안되었지만 공개되지 않은 트랜잭션을 이용하려면 제안되었지만 공개되지 않은 트랜잭션을 포함하는 블록 n 블록을 나중에 찾아야 합니다. 그러나 이것은 발생하기 어렵습니다. n 블록 이후의 블록이 귀하에 의해 채굴되었는지 확신할 수 없습니다. 이것은 예측하기가 매우 어렵습니다.
대역폭을 더 잘 사용하기 위해 프로토콜은 다른 난이도 조정 메커니즘을 사용하여 고정된 고아 블록 비율(이전 난이도 조정 기간의 엉클 블록 수를 기준으로 계산됨)을 설정합니다.
이전 난이도 조정 주기에서 설정한 고아 블록 비율보다 고아 블록 비율이 낮으면 채굴 난이도가 낮아지고 블록 간격이 줄어들며 처리량이 증가합니다. 즉, 고아 블록이 적다는 것은 네트워크의 현재 상태가 실제로 트랜잭션을 더 빠르게 동기화할 수 있다는 것을 의미하며 네트워크의 분산화를 손상시키지 않고 처리량을 늘릴 수 있습니다.
반대로 난이도가 높아지면 블록 간격이 늘어나 처리량이 줄어듭니다. 고아 블록 비율이 높으면 현재 네트워크가 이 난이도 조정 기간 동안 너무 많은 트랜잭션을 처리할 수 없으며 프로토콜이 처리량을 줄인다는 의미입니다.
동시에 블록 보상은 1/(예상 블록 간격)에 비례하므로 각 난이도 조정 주기에서 예상되는 총 블록 보상은 고정됩니다.
즉, 10분마다 블록을 생성한다고 가정하면 각 블록에는 12.5개의 비트코인이 있고 난이도 조정이 5분마다 블록으로 변경되면 각 블록에는 6.125개의 비트코인이 있게 됩니다. 따라서 통화 발행 비율도 일정하게 유지됩니다.
마지막으로 이기적인 채굴 공격에 저항하십시오. 앞에서 우리 프로토콜과 NC의 차이점은 난이도 조정 간격에 나타나는 모든 블록을 기반으로 난이도 조정 메커니즘이 계산되고 총 컴퓨팅 파워를 추정할 때 삼촌 블록도 포함된다는 점이라고 언급했습니다.
NC-Max에서는 공격자가 전체 컴퓨팅 파워의 30%를 차지하고 정직한 채굴자가 70%를 차지한다고 가정합니다 이기적인 채굴 공격이 없다면 공격자는 10개의 블록 중 3개의 블록을 찾을 수 있으며 7개의 블록을 찾을 수 있습니다. 이기적 채굴을 하면 공격자는 7개 블록 중 3개 블록을 찾을 수 있고, 정직한 채굴자는 4개 블록을 찾고, 정직한 3개 블록은 고아 블록이 되고 메인 체인은 천천히 성장하게 된다.
앞서 언급한 것처럼 이기적 채굴은 1차 난이도 조정 주기에서 이득이 없는데 2차 난이도 조정 주기에서는 어떻게 될까요?
다음 난이도 조정 주기에서 난이도는 변경되지 않고(고아 블록을 포함한 모든 블록을 기준으로 난이도가 계산되기 때문에) 공격자는 동일한 컴퓨팅 성능을 사용하여 더 많은 블록을 찾을 수 없으므로 이기적인 채굴은 더 이상 수익성이 없습니다. 그림.
즉, 화폐 가격이 단기간에 안정적으로 유지된다고 가정하고, 이기적인 채굴 공격자들은 근시안적이기 때문에 그들의 보상은 단위 시간당 얻은 보상에 따라 정의되며, 이는 동일한 힘에 해당할 수 있습니다. 소비.상. 비트코인에서 이기적인 채굴 공격자는 프로토콜을 "강제"하여 체인의 성장률을 줄임으로써 블록 생성의 난이도를 낮출 수 있으므로 난이도 조정 후 단위 시간당 더 많은 보상을 얻을 수 있습니다. NC-Max 프로토콜의 설계에서 블록 생성의 난이도는 고아 블록을 포함한 모든 블록을 기준으로 계산됩니다 공격자는 정직한 채굴자의 블록을 고아 블록으로 만들지 만 프로토콜을 "강제"하여 블록 생성의 어려움 단위 시간당 더 높은 보상을 받으세요.
마지막으로 요약하면 프로토콜은 고아 블록을 잘 활용할 것입니다.
우리는 2단계 트랜잭션 검증을 통해 고아 블록의 수를 줄이기를 희망하며, 고아 블록의 수가 줄어든 후 고아 블록 비율을 대역폭 사용률 지표로 사용하여 처리량을 동적으로 조정합니다.
그리고 고아 블록 정보는 블록체인에 기록되며, 우리는 이 정보를 채굴 난이도 조정 알고리즘에 사용하여 이기적인 채굴을 무익하게 만듭니다.
NC-Max는 Nervos CKB의 PoW 합의 프로토콜입니다. NC는 비트코인의 합의 프로토콜인 Nakamoto Consensus의 약자입니다. 이 기사를 읽은 후 이 합의 프로토콜이 더 나은 이름을 가져야 한다고 생각한다면 저희에게 알려주십시오.
권장 자료: Zhang Ren 박사의 합의된 안전성 분석 기사"공통 기준 개발: PoW 합의 프로토콜의 보안 평가"
