Cardano의 트랜잭션 처리량 증가

Increasing the transaction throughput of Cardano - IOHK Blog

image

최근 Cardano에서 스마트 계약이 활성화되면서 사용자 활동이 크게 증가했습니다. 동시에 코드를 전달하는 스크립트 트랜잭션으로 인해 평균 트랜잭션 크기가 증가했습니다. 이제 Cardano 에코시스템에 배포된 최초의 분산 금융(DeFi) 애플리케이션을 통해 이러한 추세가 계속될 것으로 예상합니다. 이러한 증가된 수요를 유지하려면 시스템의 현재 트랜잭션 처리량이 증가해야 합니다.

트랜잭션 처리량을 늘리는 확실한 방법은 블록당 더 많은 트랜잭션에 맞도록 블록 크기 제한을 늘리는 것입니다. 블록 크기는 올해 이미 64kB에서 현재 80kB로 25% 증가했으며 추가 증가가 예상됩니다. 그러나 블록 생산 속도를 현재 수준으로 유지하려면 원장 합의 프로토콜로 얼마나 큰 블록을 안전하게 유지할 수 있는지에 한계가 있습니다. 시스템 보안을 손상시키지 않고 높은 처리량을 달성하려면 추가 조치가 필요합니다. 그 이유를 이해하려면 원장 합의가 일반적으로 어떻게 작동하는지 자세히 살펴볼 필요가 있습니다.

원장 합의 프로토콜은 두 가지 시간 매개변수가 특징입니다.

Δp, 새로운 블록이 네트워크의 95%에 도달하기 위한 최대 네트워크 지연(예: 네트워크의 95%)
Δb, 두 개의 새로운 블록 생성 사이의 (예상) 시간
일반적인 프로토콜에서 합의에 대한 일관성을 주장하려면 최소한 대부분의 경우 다음 블록이 생성되기 전에 이전 블록의 전파가 완료되어야 합니다. 따라서 Δb는 Δp보다 다소 크게 선택됩니다. Cardano에서는 Δp=5s(초) 및 Δb=20s가 있습니다.

이제 이러한 조건에서 블록이 전송할 수 있는 데이터의 양은 얼마입니까? 이를 확인하려면 Δp 내에서 정확히 달성해야 하는 것이 무엇인지 더 자세히 조사해야 합니다.

그림 1. Δp=5s 예산 내에서 네트워크 확산 및 검증 차단

네트워크에서 블록 전파가 어떻게 작동하는지 단순화된 방식으로 묘사한 위의 그림 1을 고려하십시오. 블록 생산자는 새 블록 헤더를 Peer 1(흰색 h-box)로 보내고 흰색 h-box로 표시된 시간 범위 동안 두 노드의 네트워크 링크를 점유합니다. 그런 다음 피어 1은 헤더의 유효성을 검사합니다(회색 hv-box로 표시된 시간 범위 동안 로컬 계산 포함). 헤더가 유효한 경우, 즉 헤더가 적격한 블록 리더십 등을 증명하는 경우, 블록 본문은 피어 1(흰색 b-box)에 의해 다운로드되어 다시 두 노드의 네트워크 링크를 차지합니다. 마지막으로 Peer 1은 블록 본문(회색 bv-box)의 유효성을 검사하고, 블록 본문도 유효한 경우에만 Peer 1은 방금 설명한 내용을 따라 다른 피어에게 블록을 전파할 준비가 됩니다.

이 작동 모드의 불행한 부작용은 단일 노드의 CPU 및 네트워크 링크가 Δp=5s의 작은 부분 동안만 활용되고 나머지 (예상되는) Δb=20초 동안 (대부분) 유휴 상태로 유지된다는 것입니다.

구체적으로 블록에 담을 수 있는 데이터의 양은 블록의 P2P 네트워크 지연과 필요한 유효성 검사 시간에 의해 결정됩니다. 둘 다 블록 크기에서 대략 선형적으로 성장합니다. 즉, 모든 노드의 95%에 도달하는 데 필요한 최대 홉 수를 곱한 것입니다. 측정 결과 Δp=5s 내에서 네트워크 전파를 보장하려면 블록 크기가 2MB를 초과해서는 안 됩니다. 계산량이 많은 스크립트를 고려할 때 유효성 검사 시간은 훨씬 더 낮은 제한을 부과할 수도 있습니다.

좋은 소식은 이러한 제약 조건 내에서 P2P 네트워크 및/또는 합의 계층에 변경 사항을 적용하여 트랜잭션 처리량을 초과할 수 있다는 것입니다. 아래에서 이러한 기술에 대해 설명합니다.

확산 파이프라이닝
그림 1을 다시 고려하면 모든 노드의 작업이 엄격한 순서로 수행되므로 Δp는 단일 노드에 필요한 시간에 피어 투 피어 경로의 홉 수를 곱한 값에 맞춰야 합니다. 우리는 이것이 네트워크 전송에 필요하지만 블록 검증에는 필요하지 않다는 것을 관찰했습니다.

그림 2를 고려하십시오. 전체 유효성 검사가 수행되기 전에 블록이 전파되도록 허용하면 전파 경로에서 본문 유효성 검사를 제외(반복)할 수 있습니다. 피어 1은 블록 바디(b-box)를 수신하자마자 이미 블록 바디 등을 검증하기 위해 동시에 블록 전파를 시작할 수 있습니다.

그림 1의 계획과 달리 Δp 예산은 이제 신체 검증을 한 번만 설명하면 됩니다. 그 결과 P2P 네트워크 전송 및/또는 본문 유효성 검사에 더 많은 시간 예산이 소요되어 더 높은 트랜잭션 처리량을 허용합니다(그림 1과 쉽게 비교할 수 있도록 이 이득은 더 큰 본문 유효성 검사(‘bv’ ) 예산).

아래에 설명된 이유 때문에 다음 두 가지 유효성 검사 검사가 전파 경로에서 완전히 복제된 상태로 유지되는 것이 중요합니다.

헤더 정확성, 즉 블록이 이전 블록을 올바르게 참조하고 올바른 블록 리더십(VRF(verifiable-random-function) 및 블록 서명 검증).
블록 완성도, 즉 수신된(그러나 아직 검증되지 않은) 본문은 실제로 헤더의 본문 해시에 의해 참조됩니다.
확산 파이프라이닝(위에서 설명한 대로)이 합의 및 네트워크 계층의 보안에 어떤 영향을 미칠 수 있습니까?

먼저, 합의 계층은 이 변경 사항의 영향을 받지 않습니다.

정직한 블록은 항상 유효합니다. 블록 리더는 새 블록과 새 블록 자체에 의해 추가될 체인을 완전히 검증하고,
불완전한 블록은 전파되지 않으며(위의 2번 항목으로 인해),
유효하지 않은(완전한) 블록은 네트워크를 통해 전파될 수 있지만 바디 유효성 검사 후에 항상 정직한 노드에 의해 폐기됩니다.
둘째, 네트워크 계층에 대한 DoS(Denial-of-Service) 공격과 관련하여 공격자가 잘못된 블록을 확산하여 시스템 혼잡을 시도할 수 있습니다. 그러나 올바른 블록 리더십은 여전히 ​​확인되며(포인트 1로 인해), 이러한 블록은 적이 계획한 경우에만 전파될 것임을 의미합니다. 즉, 이 블록 리더가 정직한 경우보다 더 많은 부하가 생성되지 않습니다(예외 시스템의 처리량에 기여하지 않는 블록). 또한 무효 블록을 생성하는 SPO(Stake-Pool Operators)를 쉽게 식별하고 처벌할 수 있으며 실제로 이 기능을 정확히 수행하기 위한 위반 관리 시스템이 현재 개발 중입니다.

결론적으로, 확산 파이프라이닝은 Δp 제한 내에서 블록 전파 및 검증 시간에 대한 예산을 증가시켜 더 큰 블록을 허용하고 이에 따라 트랜잭션 처리량을 증가시키는 동시에 합의 규칙은 변경하지 않습니다. 시스템에 대한 최소 침입 변경으로 달성할 수 있는 동안 처리량을 크게 증가시킬 것을 약속하므로 단기간에 구현하기에 탁월한 후보입니다. 그러나 파이프라이닝(단독)의 영향은 제한적이며 우리의 야망은 여기서 멈추지 않습니다.

다음으로 더 높은 트랜잭션 처리량을 달성할 수 있지만 더 극적인 프로토콜 변경이 필요한 더 강력한 기술에 대한 요약을 제공합니다.

비동기식 검증
확산 파이프라이닝의 이면에 있는 아이디어인 지연된 바디 유효성 검사는 극단적으로 받아들일 수 있습니다. 새 블록은 여전히 Δp 내에 도착해야 하지만 Δp 내에서 바디 유효성 검사를 완료할 것을 요구하지는 않습니다. 이를 AV(비동기 유효성 검사)라고 합니다.

그림 3을 고려하십시오. 바디 유효성 검사는 본질적으로 나머지 (예상되는) Δb 예산(블록 전송 및 헤더 유효성 검사 외에)을 소비하도록 허용되어 노드의 CPU를 영구적으로 로드합니다. 그러나 네트워크 링크와 CPU는 다른 작업(예: mempool 동기화)에도 할당됩니다. 즉, 본문 유효성 검사에 나머지 Δb를 모두 사용하고 싶지 않고 이러한 다른 작업에 몇 초만 할당합니다. 작업.

이것은 눈에 띄는 부작용이 있습니다. 확산 파이프라이닝과 달리 원장 유효성 검사는 일반적으로 체인 헤드보다 뒤쳐집니다. 특히, 이제 정직한 블록 리더라도 새 블록으로 이어지는 트랜잭션 내역의 유효성 검사를 완료하지 않았을 수 있으므로 이제 (부분적으로) 유효하지 않은 블록을 생성할 수 있습니다.

이 부작용에 대처하려면 원장 규칙을 조정해야 합니다. 정직한 블록이 항상 합의의 보안에 기여하도록 보장하기 위해 유효하지 않은 거래를 수행하는 블록은 여전히 ​​유효한 체인 확장으로 간주되어야 합니다. 유효하지 않은 거래는 원장 검증 중에 간단히 폐기할 수 있습니다.

확산 파이프라이닝에 비해 상당히 개선되었지만 AV는 훨씬 더 개선될 수 있습니다. 그 이유는 일반적으로 Δb 기간의 전체 나머지 기간 동안 CPU를 최대화할 수 있는 충분한 유효성 검사 작업을 생성하기 위해 Δp 동안 충분한 데이터가 확산되지 않기 때문입니다. AV의 이점을 최대한 활용하기 위해 다음 블로그 게시물에서 설명할 입력 보증자의 메커니즘과 결합할 것입니다.

영향
파이프라이닝 및 AV가 처리량에 어떤 영향을 미칠 수 있습니까? 악의적인 적(프로토콜을 최대한 방해하려는 시도)의 경우에 엄격한 분석을 제공하는 것이 다소 관련되기 때문에 이 질문에 대한 정확한 답을 찾는 것은 여전히 ​​우리 네트워크와 연구 팀에서 진행 중인 작업입니다. 그래도 첫 번째 추정치를 제공하기 위해 모든 SPO가 정직하게 행동하는 낙관적인 경우에 대한 처리량 분석을 아래에 제공합니다. 즉, 악의적인 경우에 대한 결과가 크게 벗어나지 않을 것으로 예상됩니다(위반 관리 시스템의 존재도 감안할 때). 그러나 시스템의 실제 처리량은 주어진 추정치와 다를 수 있습니다.

표 1에는 이러한 처리량 추정치가 나와 있습니다(초당 트랜잭션 수, TPS). 처리량은 트랜잭션 크기와 유효성 검사 시간에 따라 다릅니다. 크기/검증-시간 쌍을 선택하기 위해 모든 트랜잭션이 동일한 특성을 가지고 있다고 가정하고 각각의 처리량 번호를 제공합니다. 네 가지 프로토콜을 비교합니다.

Praos: Cardano의 현재 배포된 프로토콜(블록 크기 80kB)
Praos Max: 안전하게 유지될 수 있는 가능한 최대 블록 크기를 가진 Praos(위의 가정 하에서)
확산 파이프라이닝
AV(Δb 예산의 20%가 할인되고 다른 작업을 위해 예약됨)
다양한 크기와 검증에 필요한 시간을 가진 4가지 다른 트랜잭션 유형을 고려합니다. 단순 결제 트랜잭션은 0.5kB/0.5ms 범주 근처에 있는 반면 스크립트 트랜잭션은 다른 유형 중 하나에 속할 수 있으므로 더 큰 크기와 유효성 검사에 더 많은 노력이 필요합니다. 네트워크 지연에 비해 검증 시간이 상당히 길어지는 마지막 열(2 kB / 32 ms)도 주목하십시오. 검증이 이미 시간 예산을 초과했기 때문에 블록 크기를 증가(Praos에서 Praos Max로)해도 처리량 향상에 도움이 되지 않습니다. 결과적으로 파이프라이닝과 AV는 검증 시간 예산을 증가시키기 때문에 이러한 경우에 정확히 강력한 상대적 이득을 제공합니다.

카르다노 전망
시스템에 더 많은 부하를 허용하면 DoS 공격 기회가 발생할 수 있으므로 무허가 블록체인의 처리량을 높이는 것은 보안에 중요합니다. 따라서 시스템에 미치는 영향을 주의 깊게 관찰하면서 이러한 변경을 일련의 작은 단계로 수행하는 것이 좋습니다.

이러한 첫 번째 단계 werOutlook for Cardano
시스템에 더 많은 부하를 허용하면 DoS 공격 기회가 발생할 수 있으므로 무허가 블록체인의 처리량을 높이는 것은 보안에 중요합니다. 따라서 시스템에 미치는 영향을 주의 깊게 관찰하면서 이러한 변경을 일련의 작은 단계로 수행하는 것이 좋습니다.

이러한 첫 번째 단계는 블록 크기 제한(및 Plutus 스크립트 메모리 단위)을 64kB에서 80kB로 높임으로써 지난 12월과 올해 2월에 수행되었습니다(John Woods의 최근 블로그 참조).

앞으로 몇 달 동안 네트워크 수요와 용량 제약에 따라 이러한 매개변수를 계속 면밀히 모니터링하고 조정할 것입니다. 확산 파이프라이닝의 구현으로 추가 개선 사항이 제공될 것입니다. 입력 보증자를 포함한 기타 합의 최적화는 아직 개발 중이며, 실행 방법에 대한 자세한 내용은 적절한 시기에 발표될 예정입니다.

Cardano Basho 시대의 최적화 노력은 네트워크 및 합의 계층을 넘어 확장되며 Plutus 스크립트 향상과 오프체인 처리가 포함됩니다. Tim Harrison의 최근 블로그를 참조하십시오. 특히 개발 중인 레이어 2 프로토콜 제품군인 Hydra는 블록 크기 제한(및 Plutus-script 메모리 단위) 64kB ~ 80kB(John Woods의 최근 블로그 참조).

앞으로 몇 달 동안 네트워크 수요와 용량 제약에 따라 이러한 매개변수를 계속 면밀히 모니터링하고 조정할 것입니다. 확산 파이프라이닝의 구현으로 추가 개선 사항이 제공될 것입니다. 입력 보증자를 포함한 기타 합의 최적화는 아직 개발 중이며, 실행 방법에 대한 자세한 내용은 적절한 시기에 발표될 예정입니다.

Cardano Basho 시대의 최적화 노력은 네트워크 및 합의 계층을 넘어 확장되며 Plutus 스크립트 향상과 오프체인 처리가 포함됩니다. Tim Harrison의 최근 블로그를 참조하십시오. 특히 개발 중인 레이어 2 프로토콜 제품군인 Hydra는 트랜잭션을 오프체인에서 실행할 수 있도록 하여 총 트랜잭션 처리량을 획기적으로 개선할 수 있는 또 다른 경로를 제공합니다.