푸사카 포크는 1D, 열 기반 데이터 가용성 샘플링을 도입할 것이며, 각 샘플은 모든 블롭의 셀과 증명으로 구성된 열입니다. 푸사카 이후, 열의 전파를 개선하는 것은 블롭 처리량을 더욱 높이는 주요 방법 중 하나이며, 이를 위해 제안된 도구들은 지금까지 푸시 기반 가십에서 알림 및 풀/푸시 하이브리드로 이동하고, RS나 RLNC와 같은 일종의 코딩을 도입하는 것이었습니다. 이 게시물에서는 개별 셀을 전파의 기본 단위로 만들면서 후자를 수행하는 다양한 방법을 탐구합니다. 토론과 피드백에 감사드립니다. @asn, @dankrad, @potuz, @MarcoPolo, @vbuterin.
(이하 생략, 전체 번역 가능)원칙적으로 모든 노드에서 계산을 반복하지 않을 수 있습니다. kzg_commitments는 HeaderSidecar에 확장 커밋먼트를 포함한 *모든* 커밋먼트를 포함할 수 있습니다. 이러한 커밋먼트는 원래 커밋먼트와의 일관성을 확인해야 하지만, 임의의 스칼라 벡터 r을 선택하고 r^TC' = (r^T M_{RS}) \cdot C를 확인함으로써 재계산보다 더 빠르게 수행할 수 있습니다. 이는 G1에서 128포인트 MSM 두 개만 필요로 하며, 약 2ms가 소요됩니다. 물론 대역폭과의 절충이 필요하며, 이는 HeaderSidecar에 약 6KB가 추가됨을 의미합니다.
계산 비용
가장 비용이 많이 드는 작업은 *원래 증명을 보간하여 확장 증명을 계산하는 것*입니다. 각 열에 대해 이는 KZG 커밋먼트 확장에 대해 논의한 것과 정확히 동일한 작업으로, G1에서 128포인트 MSM 128개(증명당 하나)를 수행하여 \pi_j' = M_{RS} \cdot \pi_j를 계산합니다. 여기서 \pi_j = (\pi_{1j}, \dots, \pi_{128j})는 열 j에 대한 원래 증명 벡터입니다. 제안자는 *중요 경로에서 모든 열에 대해 이를 수행*해야 하거나, 다른 말로 *증명당* 하나의 128포인트 MSM을 수행해야 합니다. **이는 prohibitively 비싸 보입니다**. 왜냐하면 128 \times 256 = 32768 증명을 계산해야 하기 때문입니다. zka.lc의 수치를 사용하면 이미 멀티스레드로 약 34초가 소요됩니다. M_{RS}로의 곱셈을 2개의 FFT로 대체하면 추가로 약 3배의 속도 향상을 얻을 수 있지만, 여전히 허용 가능한 비용에서 멀어집니다. 더욱이 단일 패킷에 CellSidecar를 맞추는 아이디어를 포기하더라도 128개 열보다 낮출 수 없으며, 이는 비용을 절반으로만 줄일 것입니다.
게시 단계에서 이러한 높은 계산 비용을 제거하는 것이 바로 원래 블롭에 대한 증명 계산을 tx 발신자에게 아웃소싱하여 중요 경로에서 제거한 이유입니다. 반면에 수직 확장에 대한 증명 계산은 *메모풀에서 블롭을 받기 때문에 아웃소싱하거나 미리 계산할 수 없으며*, *모든 블롭*이 블록에 들어가야 이를 수행할 수 있습니다.
(이하 생략)RLNC + KZG
우리는 원래의 KZG 행 커밋먼트와 연결된 재조합된 청크의 검증 가능성을 유지하면서 열 전파를 위해 RLNC를 가능하게 하기 위해 KZG 커밋먼트와 증명의 선형성 특성을 활용할 수 있습니다:


