DAG 시스템 블록 크기 및 블록 생성 시간에 대한 대중적인 분석 II
Soteria
2020-03-07 10:36
本文约1920字,阅读全文需要约8分钟
네트워크의 전송으로 인해 지연이 발생하므로 네트워크의 어느 부분에서든 우리가 들을 수 있는 다른 채굴자의 브로드캐스트도 다를 수 있습니다. 블록 다이어그램(Blockdag)은 이전 블록에 포

안녕하세요 여러분, 지난번 공유에서는 블록 크기와 블록 생성 시간 및 확장 간의 관계에 대해 설명했으며, 이 두 변수가 블록체인 시스템에서 어떻게 상호 작용하고 제한하는지 구체적으로 설명했습니다. 오늘 우리는 DAG 시스템에서 이 두 변수 간의 관계와 Soteria DAG 설계에서 이 문제를 처리하는 방법에 대해 자세히 논의할 것입니다.

동시 부모-자식 관계

이전 기사에서 언급했듯이 BlockDAG 블록 다이어그램의 배경에는 승자독식 제한이 없기 때문에 채굴자는 병렬로 채굴할 수 있고 채굴된 블록을 적시에 방송할 수 있습니다. 네트워크의 전송으로 인해 지연이 발생하므로 네트워크의 어느 부분에서든 우리가 들을 수 있는 다른 채굴자의 브로드캐스트도 다를 수 있습니다. 하지만 문제가 되지 않습니다. 수신한 블록에 대해 블록 그래프에 포함하기 위해 최선을 다합니다. 그리고 발굴하려는 다음 새 블록은 블록 그래프에서 참조되지 않은 모든 블록(즉, 리프 노드)을 참조해야 합니다. Burning Goose, 아래 그림과 같은 일부 블록을 받을 수 있으며 참조가 다르며 모두 정직한 노드가 파낸 합법적인 블록임을 알 수 있습니다. 무슨 일이야? 이것은 앞에서 이야기한 블록 크기, 전송 시간 및 블록 시간으로 인해 발생합니다.

위의 상태가 아래 그림에서 노드 B가 관찰한 상태라고 가정합니다. 그러면 수신된 각 블록의 상위 링크가 다른 이유는 정보가 네트워크에서 전파되는 데 다른 시간이 걸리기 때문입니다. 네트워크가 지리적 또는 논리적 링크로 인해 세 개의 전파 영역으로 나뉘고 녹색 영역이 파란색 영역과 파란색 영역 사이에는 녹색 영역에서 빨간색 또는 파란색 영역으로 정보가 전송되는 데 일정 지연이 있으며 파란색과 빨간색 영역 간에 전송되는 정보는 녹색 영역을 통과해야 합니다. , 지연이 더 큽니다. 단순화를 위해 이 교차 지역 대기 시간은 지역 간 대기 시간의 두 배라고 생각합니다. 노드 A, 노드 B, 노드 C는 각각 블록 a, 블록 b, 블록 c를 생성하고(이 블록의 부모 링크는 당분간 논의하지 않음) 네트워크의 모든 방향으로 블록을 즉시 브로드캐스트합니다. 빨간색 영역의 노드 D와 파란색 영역의 노드 E 및 F는 서로 다른 시간에 이러한 블록을 수신합니다. 노드 D와 노드 E/F에 대한 노드 ABC의 네트워크 위치, 대역폭 및 지연이 네트워크에서 다르기 때문에 완전한 블록 abc를 수신하는 시간도 다릅니다. 따라서 특정 순간에 노드 D는 블록 a와 블록 b만 수신하고 블록 c는 아직 진행 중이고 노드 E/F는 블록 b와 블록 c만 수신했으며 블록 a는 아직 진행 중입니다. 노드 B는 블록을 생성한 노드와 가장 가까운 노드이며, 스스로 생성한 블록 b를 제외하고 다른 모든 블록도 수신되었습니다.

노드 D, E, F가 다음 블록을 파기 시작하면 "허용" 원칙에 따라 방금 받은 블록에서 새 블록의 상위 링크를 잠그고 즉시 브로드캐스트합니다. 즉, 노드 D는 블록 a와 블록 b에 연결된 블록 d를 생성하고, 노드 B는 블록 a, b, c에 연결된 블록 b'를 생성하고, 노드 E와 노드 F는 각각 블록 b에 연결된 블록 e와 블록 f를 생성합니다. 및 c가 생성됩니다. 이것이 바로 이전에 본 BlockDAG의 상태입니다. 분명히 블록 a, b', e, f 사이에는 어떤 연결 고리도 있을 수 없습니다. 즉, 모두 같은 세대이거나 모두 형제 자매입니다. 이전 블록체인 구조의 "한 자녀" 정책과 비교할 때, 블록 다이어그램 환경에서는 "더 많은 자녀, 더 많은 축복"의 상황이 있을 것입니다. 블록 크기와 블록 생산 속도를 조정하지 않았기 때문에 자동으로 용량을 확장했습니다. 형제자매의 수는 우리의 확장 능력을 반영합니다. 일단 K라고 하자. K를 과학적으로 설명하기 위해 다음과 같은 식을 제공합니다: 임의의 노드에 대해 시간 t에서 블록 b를 생성하고 블록에 대한 네트워크의 최대 전송 지연은 Dmax, 즉 임의의 두 노드 사이의 시간 표준 크기 블록의 전송을 완료하는 데 필요한 다음 간격:

[t-Dmax, t+Dmax]

전체 시스템에서 생성되는 블록은 블록 B의 형제자매여야 합니다. 이것은 이해하기 매우 쉽습니다. 네트워크 전송으로 인해 시간 t에서 [t-Dmax,t] 기간 동안 생성된 모든 블록이 이 노드로 전송되지 않았으므로 이러한 블록은 B가 생성될 때 고려되지 않습니다. 부모 노드는 연결에 사용됩니다. 마찬가지로 [t, t+Dmax] 기간 동안 채굴을 시작한 노드들은 전송 지연으로 인해 블록 B를 듣지 못했기 때문에 이들 노드에서 생성된 블록은 B를 부모 노드로 간주할 수 없습니다. 그러면 시스템의 블록 생성 속도가 r이면 평균적으로 이 기간 동안 생성되는 블록 수의 상한선은 다음과 같습니다.

(t+Dmax) - (t-Dmax)

——————————

r

그건

2Dmax

———

r

따라서 용량 확장은 여전히 ​​네트워크 전송 지연과 블록 생성 속도에 의해 제한되지만 이번에는 이전 제한이 없습니다. 정말 그런 제한이 없나요? 당연히 아니지. 우선 위의 설명은 매우 근사한 결과이며, 보다 엄밀한 결과는 Phamtom의 논문 4장을 참조할 수 있으며, 더 중요한 것은 엄밀한 결과라 할지라도 엔지니어링 구현 환경에서 더 많은 제한이 있을 것입니다. 수신된 블록의 처리 시간, 블록 그래프 연결 시간, 블록 검증 시간. 이러한 시간은 실제 동작에서 블록 그래프의 연결 특성에 직접적인 영향을 미칩니다. 따라서 실제로 작동할 수 있는 동시 확장 매개변수는 이론적인 값보다 훨씬 작을 수 있습니다. 엔지니어링 관점에서 응용 시나리오에 따라 K를 반전시키는 방법을 채택했습니다. 먼저 필요한 처리량 범위를 결정한 다음 시스템 운영 환경의 네트워크 전송 성능 범위에 따라 Dmax를 결정한 다음 고려합니다. 그것은 Dmax를 기반으로 일부 소프트웨어 지연을 추가하고 마지막으로 시뮬레이션 시스템에서 위의 매개 변수를 여러 번 실행하여 최적화된 계수를 얻습니다.

Soteria
作者文库