GHOST, DAG, SPECTER, PHANTOM 및 CONFLUX 기술 원칙
?DAG 개념은 비트코인, 이더리움 이후 차세대 블록체인 기술(블록체인 3.0)로 평가됩니다. 그렇다면 DAG 블록체인이란 무엇일까요? DAG의 기원은 무엇입니까? 기술적인 개념은 무엇입니까? DAG 블록체인에서 실행되는 프로토콜은 무엇입니까?
DAG를 설명하려면 DAG 블록체인 개념을 제안한 두 명의 이스라엘인 Yonatan Sompolinsky와 Aviv Zohar 없이는 할 수 없습니다. DAG 이전에 Aviv Zohar는 체인 포크로 인한 보안 문제를 해결한 GHOST 프로토콜(이더리움은 초기에 GHOST 프로토콜을 채택함)을 제안했고, GHOST 프로토콜 하에서 포크된 블록체인의 데이터 구조를 체인에서 tree(Tree)에 이어 Aviv Zohar는 Inclusive 프로토콜의 규칙에 따라 블록의 구조가 방향성 비순환 그래프(DAG)가 되었습니다.
다음으로 이 기사에서는 다음을 수행합니다.
?1. GHOST 프로토콜과 DAG의 기원 뒤에 있는 설계 원리를 소개합니다.
?2. DAG 유형 블록 체인 설계를 위한 프로토콜인 SPECTER, PHANTOM 및 CONFLUX.
GHOST 프로토콜은 포크로 인한 체인 보안 저하 문제를 해결하기 위한 프로토콜입니다.
?다음에서는 포크가 무엇인지, 포크가 체인의 보안을 저하시키는 이유, 온체인 확장이 더 많은 포크로 이어지는 이유를 설명하여 GHOST 프로토콜을 자세히 소개합니다.
비트코인 거래는 왜 6블록을 기다려야 합니까?
?기다리는 것은 51% 공격을 막는 것이 아니다. 6블록 뒤쳐져 있고 컴퓨팅 파워가 51% 이상인 경우, 충분히 오래 지속된다면 공격을 완료하기 위해 더 긴 체인을 생성할 수 있습니다. 포크의 위험을 방지하기 위함입니다.
?비트코인에서는 이상적인 상황에서는 서로 다른 노드 사이에 동일한 블록체인이 있고 모든 노드는 동일한 블록을 기반으로 채굴합니다. 그러나 두 채굴 노드가 거의 동시에 새로운 블록을 채굴할 때, 상대방이 생성한 블록을 받으면 여러 노드가 블록 중 하나를 기반으로 채굴을 선택하고 포크가 생성됩니다. 이후, 노드는 메인 체인의 모든 포크 블록을 폐기하는 대신 어느 포크가 더 긴지에 따라 어느 것이 채굴용 메인 체인인지 선택합니다.
?비트코인은 매일 2번의 포크를 가지게 되지만 6번의 연속 포크는 거의 불가능하므로 6블록의 확인 시간을 기다려야 합니다. (이런 종류의 포크는 악의적인 공격이 아니라 사고와 네트워크 지연으로 인해 발생한다.
포크는 '비트코인은 공격이 컴퓨팅 파워의 51%를 넘지 않으면 안전하다'는 이론을 뒤집는다. ."
p>
?비트코인에서는 체인이 포크될 때 포크가 가장 긴 체인이 메인 체인으로 선택됩니다. 악의적인 공격은 메인 체인보다 긴 체인을 생성하는 것입니다.
?아래 그림의 파란색 블록은 정직한 블록을 나타내고, 빨간색은 이때 2번과 3번이 포크된 블록을 나타냅니다. 공격 노드는 5개의 공격 블록(빨간색)을 생성할 수 있습니다. 공격을 완료하려면 더 긴 체인을 생성해야 합니다. 파란색 블록의 총 개수는 더 많지만(6개), 여기서 분기된 블록은 체인의 길이를 늘리지 않습니다. 이 경우 레드 공격자가 더 많은 컴퓨팅 파워를 가지고 있습니다(각 공격이 51% 이상의 시간 없이 성공한다고 가정)(블록은 동일한 컴퓨팅 파워를 나타냄).
비트코인이 현재 안전한 이유는 다음과 같습니다. 10분의 블록 시간은 포크 가능성을 줄이지만 실제 보안 계산은 여전히 51% 미만입니다. 즉, 공격에 성공하려면 컴퓨팅 성능의 51%가 필요하지 않습니다.
큰 블록과 작은 출력 시간을 사용하면 체인에 많은 포크가 발생합니다. ?
?비트코인은 현재 매우 낮은 거래량을 처리하고 있습니다. 이 결함을 개선할 수 있는 가능한 방법은 블록 크기를 늘리고 블록 생성 시간을 줄이는 것입니다. 블록이 크면 네트워크 전송 시간이 더 많이 필요하며, 단위 시간당 블록이 많을수록 포크도 많아집니다. ?
? 온체인 확장 계획은 비트코인의 거래 처리 능력을 크게 향상시킬 것입니다. 각 블록의 크기가 8배(8M)가 되면 블록 생성 시간은 1분(2분)으로 단축됩니다. 분) 이상적으로는 비트코인에서 처리되는 거래량이 원래의 40배가 될 것입니다. 실제로는 포크가 발생하며 거래량은 그다지 높지 않을 것입니다.
? 메인 체인 선택 시 비트코인의 가장 긴 체인 규칙을 대체하기 위해 최대 하위 트리가 계산됩니다. ?
?비트코인의 가장 긴 체인 규칙은 포크가 많을수록 체인의 보안을 감소시킵니다. 온체인 확장은 더 많은 포크로 이어져 체인을 불안정하게 만듭니다.
?Yonatan Sompolinsky는 GHOST 규칙을 제안했습니다. 포크가 있을 때 최대 하위 트리, 즉 각 포크가 소유한 모든 블록의 수를 계산하여 어떤 체인이 메인 체인인지 결정합니다. 그림 0에서는 블록 0 이후에 체인이 분기되었습니다. 위쪽 포크에는 총 6개의 파란색 블록이 있고 아래쪽 포크에는 빨간색 블록이 5개 있으며 파란색 블록 1이 메인 체인이므로 빨간색 공격은 실패했습니다. ?
? 포크 수가 많은 경우 GHOST 규칙은 체인 보안을 51% 직접적으로 향상시킵니다. 포크는 GHOST 프로토콜을 사용하는 체인의 보안에 영향을 미치지 않습니다.
?GHOST 규칙에 따르면 위 그림에서 정직한 노드는 12개의 블록을 생성했지만 메인 체인에는 4개의 블록만 추가되었으며 각 블록의 크기를 가정하면 많은 블록이 폐기되었습니다. 비트코인은 원본의 8배(8M)가 되고, 블록 생성 시간은 원본의 10분의 1(1분)으로 단축되며, 포크 비율은 0.33(생성된 블록이 메인 체인에 추가될 확률)이며, 비트코인의 거래 처리 용량은 원래 가치의 26.6배가 됩니다.
GHOST 프로토콜은 온체인 확장으로 인한 포크로 인해 발생하는 보안 문제를 해결합니다.
블록의 구조 유형이 체인에서 트리로 변경됩니다.
GHOST 제안 이후 새로 생성된 블록은 기존의 모든 블록을 가리키는 새로운 아이디어를 제안했습니다. 알려진 포크 엔드 블록, 즉 블록에는 여러 개의 아버지가 있습니다. 이때 블록체인은 하나의 체인에서 여러 개의 포크된 체인으로 구성된 구조로 변경됩니다. 이 체인 구조를 DAG(방향성 비순환 그래프)라고 합니다.
그러자 Yonatan Sompolinsky는 DAG에서 실행되는 포괄적인 프로토콜을 제안했습니다.
안타깝게도 Yonatan Sompolinsky는 나중에 프로토콜을 자세히 소개하고 보완하지는 않았지만 DAG 프로토콜의 새로운 아이디어 - SPECTER.
?위 내용을 읽은 후, 가장 긴 체인 규칙 하에서 포크된 블록은 비트코인의 보안 및 거래량에 기여하지 않으며 컴퓨팅 파워를 낭비한다는 것을 알 수 있으며, GHOST는 포크된 블록 수를 계산하여 체인의 보안을 강화합니다. 그러나 블록 수에 포함되는 것 외에도 블록에 포함된 모든 거래 정보는 폐기됩니다.
?이 새로운 블록 구조는 새로운 기능을 제공합니다. 물론 비트코인의 가장 긴 체인 규칙은 DAG에서도 구현될 수 있지만 보안 및 트랜잭션 처리 기능은 좋지 않으며 GHOST 프로토콜은 보안 및 트랜잭션을 향상시킬 수 있습니다. 처리 능력을 극대화하기 위해 커뮤니티에서는 다양한 프로토콜을 제안했습니다. 다음으로 Yonatan Sompolinsky가 제안한 SPECTER 프로토콜과 국내 커뮤니티에서 제안한 CONFLUX 프로토콜을 소개하겠습니다.
메인체인 개념을 버리고 생성된 모든 블록은 원장을 구성하며 어떤 블록도 폐기되지 않습니다.
? 모든 블록은 유효하며 모든 블록이 집합적으로 원장을 형성하므로 블록체인의 거래 처리 기능이 더욱 향상됩니다. 이 설계의 핵심은 블록체인이 악의적인 공격에 성공적으로 공격받지 않도록 알고리즘을 설계하는 것입니다. ?
?SPECTER 프로토콜은 상대적으로 복잡합니다. 다음에서는 블록을 생성하는 방법, 충돌하는 트랜잭션을 처리하는 방법 및 신뢰할 수 있는 트랜잭션 세트를 생성하는 방법을 설명합니다.
SPECTER 프로토콜에서 블록이 생성되면 모든 이전 포크의 끝 블록을 가리켜야 합니다.
? 아래 그림에서 비트코인이 왼쪽 블록을 생성할 때 포크가 발생하면 그 중 하나를 기준으로 새 블록이 생성되지만, SPECTER에서는 끝 부분을 기준으로 생성됩니다. 모든 포크의 블록은 새로운 블록을 생성합니다. 동시에, 새로운 블록이 생성되면 노드는 즉시 새로운 블록(어떤 블록이 생성되었는지에 따른 정보 포함)을 연결된 노드로 보내야 합니다.
? GHOST 프로토콜에는 포크가 있지만 각 블록은 특정 이전 블록을 기반으로만 생성되는 반면 SPECTER 프로토콜에서는 다음 블록이 알려진 모든 끝 블록을 기반으로 생성됩니다. 현재 노드.
SPECTER 프로토콜은 채굴자가 충돌 없는 거래를 유지해야 한다는 요구 사항을 제거합니다.
?비트코인은 권위 있는 원장과 같습니다. true(포크 및 악의적 공격 무시), SPECTER가 생성한 DAG는 권한이 없는 원장과 같으며 그 안의 트랜잭션 정보가 충돌할 수 있습니다(위 그림 1의 두 1 블록에는 충돌하는 트랜잭션 정보가 포함될 수 있음). ?
?이 계약에 따라 마이닝 노드는 빠른 블록 마이닝(초당 하나의 블록에 도달할 수 있음)만 담당하며 마이닝 단계에서는 충돌하는 트랜잭션에 포함될 수 있는 작업을 수행하지 않습니다. 포크 처리, 트랜잭션 기록 속도를 최대화하여 DAG와 같은 블록체인에 트랜잭션을 처리하는 놀라운 기능을 제공합니다.
?마이닝으로 해결할 수 없는 거래 충돌 문제를 해결해야 할 때입니다. SPECTER의 아이디어는 정직한 블록이 정직한 블록에 투표하고, 후속 정직한 블록이 투표하도록 투표 알고리즘을 설계하는 것입니다. 악의적인 공격이 실패하도록 프런트 스택 컴퓨팅 성능을 제공하며 안전한 컴퓨팅 성능도 51%입니다. ?
?아래 그림에서 블록 X와 Y에는 이중 지출로 이어지는 두 개의 충돌하는 트랜잭션이 포함되어 있습니다. 이때 DAG의 블록은 X와 블록에 투표합니다. Y. 어떤 거래가 유효한지 결정하세요.
투표 규칙은 다음과 같습니다. X에 투표하면 파란색으로 표시되고, Y에 투표하면 빨간색으로 표시됩니다. 단, 해당 거래 정보는 Y에 표시됩니다. 유효하지 않습니다. Yonatan Sompolinsky는 이전 블록을 가리키지 않고 인접 노드로 전송되지 않는 블록을 생성하는 악의적인 공격도 분석했습니다. 투표 규칙에서는 컴퓨팅 성능이 50% 미만인 공격자는 실패합니다.
?
? 투표는 능동적인 중앙 집중식 동작처럼 들리지만 실제로는 그렇지 않습니다. 프로그램은 현재 DAG 블록의 상태를 기반으로 블록 투표 계산 프로세스를 자동으로 완료합니다. DAG 데이터에 두 가지 충돌 정보를 입력하고 규칙 알고리즘을 실행하여 충돌하는 트랜잭션 쌍 중 어느 것이 유효한지 결정합니다.
SPECTER 신뢰할 수 있는 트랜잭션 세트는 현재 6개 블록을 초과하는 비트코인 체인의 트랜잭션 세트와 동일합니다. ?디지털 암호화폐의 관점에서 볼 때, 블록체인은 원장에 있는 거래 정보로부터 각 계정이 소유한 통화를 획득하므로, 변경할 수 없는 특정 거래 정보를 얻는 것이 중요합니다. 신뢰할 수 있는 트랜잭션 세트 생성 프로세스는 다음과 같습니다:
SPECTER는 모든 블록을 정렬하지 않으며 모든 블록은 완전한 선형 순서를 갖지 않으며 일부는 충돌하는 정보의 순서만 결정합니다. ?
?비트코인의 높이는 선형 순서를 나타냅니다. 높이가 낮은 블록의 거래 정보는 높이가 높은 블록의 정보보다 우선합니다. SPECTER는 많은 수의 포크를 가지고 있으며, 블록 높이는 선형적 순서를 나타낼 수 없습니다. 투표 알고리즘에 따르면 블록 투표 알고리즘은 매우 빠르고 포크된 모든 블록을 포함하므로 비트코인이 직면하는 포크 위험이 없으며(6개 블록 대기) 거래 확인 시간이 10초에 달할 수 있습니다.
현시점에서 SPECTER에 대응하는 DAG 블록체인은 비트코인과 비교하여 세 가지 특징을 가지고 있습니다.
SPECTER 프로토콜은 DAG형 디지털 암호화폐에 매우 적합하지만, 이를 사용하게 되면 스마트 계약 시 단점이 드러납니다. 이를 위해 Yonatan Sompolinsky는 DAG 블록에 대한 선형 순서를 형성하기 위해 PHANTOM 프로토콜을 아래에서 자세히 소개합니다.
SPECTER와 PHANTOM은 서로를 보완하는 것이 아닌 두 개의 완전한 독립 프로토콜입니다.
?PHANTOM의 채굴 메커니즘은 SPECTER와 동일하며 동일한 유형의 DAG를 생성합니다. 차이점은 PHANTOM은 블록의 연결성을 분석하여 블록이 정직한지 악의적인지 판단하고 이를 정렬한다는 것입니다. 분류에 따라 블록을 생성하고 DAG 블록에 대해 엄격한 선형 순서를 생성하고 선형 순서를 통해 충돌하는 트랜잭션의 유효성을 판단합니다.
DAG에서 공격자는 두 가지 공격 방법을 사용합니다. 하나는 알려진 종료 블록을 기반으로 하지 않는 블록을 생성하는 것이고, 다른 하나는 생성한 블록을 즉시 게시하지 않는 것입니다. 후자는 다른 노드에서 생성된 블록이 자신의 블록을 가리키지 않는다는 것을 의미합니다. 두 상황 모두 이러한 악성 블록과 다른 블록 간의 연결성이 낮아집니다.
? 최대 네트워크 지연을 고려하면, 정직한 블록은 일정 시간이 지나면 반드시 전체 네트워크에 퍼질 것이며, 다음 블록에서도 반드시 자신을 가리킬 것입니다. 새로운 블록을 생성합니다.
?블록을 가리키는 에지와 블록을 가리키는 에지, 즉 블록의 연결성을 분석하면 최대 네트워크 지연을 고려하면 연결성은 한계값 K를 가지게 됩니다. 이 값보다 낮은 블록은 악성으로 간주되어 정렬에 불리한 위치에 놓이게 됩니다.
다음으로, 블록이 정직한지 악의적인지 판단하는 단계가 가장 중요합니다. 파란색으로 표시된 블록은 정직한 블록으로 간주되고, 빨간색으로 표시된 약한 블록은 악성 블록으로 간주됩니다.
?두 번째 단계는 파란색 블록 세트를 먼저 정렬하고 위상 정렬을 한 다음 빨간색 블록 세트를 정렬하는 것입니다. 빨간색 블록의 순서는 약한 위치에 있어야 합니다. 예를 들어 위 그림의 C는 A와 I 사이에 있으므로 해당 순서는 I 블록보다 먼저 순위가 지정되고 D와 H가 C보다 먼저 순위가 지정됩니다.
연결 값을 설정하기 위한 최대 지연 시간을 고려하여 일반적으로 정직한 노드에 의해 생성된 거의 모든 블록은 파란색으로 표시됩니다.
이 시점에서 PHANTOM 프로토콜은 DAG의 선형 정렬을 구현했습니다. , 선형을 통해 충돌 없는 트랜잭션 세트를 순차적으로 추출한 후 신뢰할 수 있는 트랜잭션 세트를 추출할 수 있습니다. 시간이 오래 걸리지만 스마트 계약의 요구 사항을 충족합니다.
PHANTOM 프로토콜 논문의 마지막 부분에서 Yonatan Sompolinsky는 자세히 소개하지 않고 PHANTOM + SPECTER를 결합하는 가능한 프로토콜을 제안했습니다. 다음 그림은 여러 프로토콜을 비교한 것입니다.
?지금까지 Yonatan Sompolinsky가 처음에는 포크로 인한 불안으로 인해 GHOST를 제안했으며 나중에 DAG를 블록체인에 도입하고 SPECTER 프로토콜을 설계했다고 소개되었습니다. , 스마트 계약을 위해 고려되는 PHANTOM 프로토콜. 다음으로 국내 커뮤니티에서 제안한 CONFLUX 프로토콜을 소개합니다.
?GHOST에는 메인 체인이 있지만 분기된 블록을 버립니다. SPECTER에는 모든 포크를 포함하여 메인 체인이 없지만 선형 순서가 없습니다. PHANTOM에는 메인 체인이 없고 포크를 포함하며 선형 순서가 있으며 CONFLUX는 메인 체인과 DAG가 있습니다. 메인 체인은 DAG를 선형 정렬하는 데 사용됩니다. CONFLUX 프로토콜은 마이닝 메커니즘과 블록 정렬 측면에서 설명됩니다.
CONFLUX 프로토콜은 소스 에지와 참조 에지를 정의합니다. 새 블록은 이전 메인 체인 블록을 기반으로 생성되며, 새 블록은 루트 가장자리(실선)를 사용하여 이전 블록을 가리키고 참조 가장자리(점선)를 사용하여 다른 분기된 블록의 끝을 가리킵니다. 아래 그림에서 실제로 마지막 새 블록은 H를 가리키고 점선은 포크 끝 블록 K를 가리킵니다. 소스 에지는 블록이 어떤 블록을 기반으로 하고 어떤 블록이 컴퓨팅 성능으로 쌓였는지 나타내는 데 사용됩니다. 참조 에지는 이 블록 이전에 생성된 다른 블록의 포크를 나타내는 데 사용됩니다.
마이닝 프로세스는 다음과 같습니다.
소스 에지는 하나만 있을 수 있으며 참조 에지는 여러 개 있을 수 있습니다(상황에 따라 다름)
Take 메인 체인 블록은 분할 지점에서 DAG를 세그먼트로 나누고 세그먼트 간 간단한 정렬 알고리즘을 설계합니다.
CONFLUX 프로토콜에서 생성된 블록체인은 위와 같으며(그림 2) 선형적으로 구성됩니다. 정렬 알고리즘은 다음과 같습니다.
?위 정렬을 통해 DAG는 선형 순서를 갖습니다. 위 그림의 DAG 블록 순서는 Genesis, A, B, C, D, F입니다. E, G, J, I, H 및 K. 다음으로, 선형 시퀀스 블록의 거래 정보를 정렬하여, 블록 내 거래 정보의 순서에 따라 단일 블록에 포함될 수 있는 충돌 거래를 직접 결정하게 됩니다.
이때 CONFLUX는 DAG의 모든 블록에 대해 선형 순서를 생성한 후 블록 내의 트랜잭션 정보를 정렬하여 일정 시간을 초과하는 충돌 없는 트랜잭션 집합을 생성할 수 있습니다. 신뢰할 수 있는 트랜잭션 세트. 메인 체인은 기간을 나누는 기준으로 CONFLUX에는 모든 분기된 블록이 포함되어 있습니다.
GHOST 용지
Inclusive 용지
SPECTER 용지
PHANTOM 용지
CONFLUX 용지
DAGlabs 관련 설명 영상 모음