Cardano 확장성의 미래는 무엇입니까

https://cexplorer.io/article/what-is-the-future-of-cardano-scalability

이 기사에서는 Cardano의 현재 확장성을 살펴보고 입력 엔도서가 이를 얼마나 향상시킬 수 있는지 고려할 것입니다. Cardano 확장을 위한 Hydra 또는 기타 옵션은 다루지 않습니다. 첫 번째 레이어의 확장성에 가장 가까운 개선 사항은 입력 엔도서(Input Endorser)입니다(그 전에 부분적인 개선이 있을 수 있음).

Cardano의 현재 확장성
TPS(초당 트랜잭션 수)는 특정 기간 동안 얼마나 많은 사람들이 네트워크를 사용할 수 있는지를 알려줍니다. TPS는 최대 네트워크 처리량입니다.

Cardano의 경우 TPS는 적합한 측정항목이 아닙니다. UTxO를 기반으로 한 회계 모델을 사용하면 단일 거래로 여러 자산을 여러 수신자에게 보낼 수 있습니다. 이러한 거래는 100명의 수신자에게 자산을 보낼 수 있으며 네트워크가 100개의 개별 거래를 처리해야 하는 경우보다 훨씬 적습니다.

Cardano가 현재 처리하고 있는 거래 유형을 살펴보세요. 대략 60%는 SC 트랜잭션이고, 35%는 단순 트랜잭션(Alice가 Bob에게 자산을 보냄), 5%는 메타데이터를 사용한 트랜잭션이라는 것을 알 수 있습니다.

단순화를 위해 기사에서는 TPS 측정항목을 사용하며 대부분의 경우 간단한 트랜잭션만 고려합니다.

TPS를 계산하는 것은 비교적 쉽습니다. 대략적인 추정을 위해서는 블록 크기, 평균 거래 크기 및 블록 빈도만 알면 됩니다.

Cardano는 20초마다 새로운 블록을 생성합니다. 블록 및 트랜잭션의 최대 크기는 다음 프로토콜 매개변수에 의해 정의됩니다.

  • 최대 블록 크기: 90,112바이트
  • 최대 TX 크기: 16,384바이트

간단한 Cardano 거래의 크기는 250~500바이트입니다. 대부분의 경우 300바이트의 트랜잭션이 표시됩니다. SC 트랜잭션이나 입력이나 출력이 여러 개인 트랜잭션은 물론 그 규모가 더 큽니다.

트랜잭션의 입력과 출력이 많을수록 그 크기도 커집니다. 일반적으로 하나의 큰 입력을 사용하여 두 개의 출력이 생성됩니다. 하나의 출력은 수신자가 수신하고 다른 출력은 자산의 일부를 발신자에게 다시 반환합니다. 트랜잭션에는 감시(100-200바이트)가 포함되어야 합니다.

블록에 300바이트 크기의 트랜잭션만 있다고 생각하면 그 중 300개가 블록에 들어갈 수 있습니다. 이 숫자를 20초(블록 발행 빈도)로 나누면 TPS는 15가 됩니다.

블록에 16,000바이트 크기의 거대한 SC 트랜잭션만 있다고 생각한다면 대략 6개가 블록에 들어갈 것입니다. TPS는 0.3에 불과합니다.

그러나 하나의 대규모 SC 트랜잭션에는 대략 250명의 수신자가 포함될 수 있으므로 1,500명의 수신자가 한 블록에 서비스를 제공하게 됩니다. TPS를 거래가 아닌 수신자 기준으로 계산하면 75가 됩니다.

현재 거래 유형을 고려할 때 현재 Cardano의 최대 처리량은 대략 초당 40-50명의 수신자입니다. 이는 TPS와 단순 트랜잭션만 고려한 경우보다 약 3배 더 많은 수치입니다.

카르다노 블록의 크기는 다른 블록체인에 비해 상대적으로 작다는 점을 인식할 필요가 있습니다.

비트코인 블록의 이론적 최대 크기는 4MB입니다(SegWit). 보다 현실적인 블록의 최대 크기는 2MB입니다. 작년 평균은 약 1.6MB입니다. 비트코인은 평균 10분마다 새로운 블록을 채굴합니다. 비트코인은 대략 7 TPS를 처리할 수 있습니다.

이더리움은 평균 12초마다 새로운 블록을 생성합니다. 이더리움의 블록 크기는 고정되어 있지 않으며(바이트 단위의 블록 크기로 제한되지 않음) 오히려 각 블록에 포함된 트랜잭션에서 사용되는 GAS의 양에 따라 달라집니다. GAS 한도(트랜잭션 실행의 복잡성)에 따라 블록 크기가 결정됩니다. 동적으로 조정할 수 있습니다. 현재 GAS 한도는 15M로 설정되어 있습니다. 최근 몇 달 동안 블록 크기는 140~170KB입니다. 이더리움은 하루에 약 7,200개의 블록을 주조하고 약 100만 개의 거래를 확인합니다. 블록에는 약 140개의 트랜잭션이 있습니다. 평균 이더리움 거래량은 약 1000바이트입니다. 현재 이더리움은 용량 한계 근처에서 운영되고 있으며 TPS는 12입니다.

알고랜드의 블록 크기는 5MB이고 블록 시간은 3.3초입니다. 6000TPS를 수행할 수 있으며 팀은 이를 10,000TPS로 향상시킬 계획입니다.

비트코인은 블록타임이 길지만, 덕분에 큰 블록 사이즈를 가질 수 있습니다. TPS는 주로 블록 시간에 의해 제한됩니다. 이더리움은 Cardano보다 블록 시간이 약 절반 더 짧고 동시에 블록 크기는 약 2배 더 큽니다. 그럼에도 불구하고 현재 TPS는 12입니다. 500바이트라는 단순한 트랜잭션만 계산하면 TPS는 약 30이 될 수 있습니다. 이는 Cardano보다 대략 2배 더 많은 수치입니다.

알고랜드는 블록 크기가 크고 동시에 블록 시간이 매우 짧습니다. 이것이 TPS가 높은 이유 중 하나입니다. 우리는 입력 엔도서(Input Endorsers)와 관련하여 이 프로젝트에 대해 더 자세히 이야기할 것입니다.

Cardano 블록의 크기는 180KB로 증가할 가능성이 높으며, 블록 생성 빈도는 성능에 부정적인 영향을 주지 않고 15초로 설정할 수 있습니다. 이 경우 TPS는 Ethereum보다 약간 높은 40이 됩니다.

그러나 10TPS 증가는 큰 차이를 가져오지 않습니다. 블록체인은 몇 년 내에 수천 TPS 수준으로 확장될 수 있어야 합니다. 일부 네트워크에서는 이미 이를 수행할 수 있다고 합니다. Cardano의 임무에는 비슷한 숫자가 필요합니다. Cardano는 입력 엔도서를 통해 거기에 도달할 수 있나요?

입력 엔더서
입력 승인자는 합의를 기다리지 않고 트랜잭션을 지속적으로 스트리밍할 수 있으므로 Cardano의 처리량과 속도를 높일 수 있습니다. Cardano는 거래 데이터를 포함하는 하나의 블록 대신 순위 블록, 보증 블록 및 입력 블록의 세 가지 유형의 블록을 갖습니다. 거래는 입력 블록에서만 이루어집니다. 보증 블록은 여러 입력 블록을 참조합니다.

이는 알고랜드가 이미 구현한 것과 매우 유사한 개념입니다. 이를 블록 파이프라이닝이라고 합니다. 알고랜드는 트랜잭션 참조 개념을 사용하며 이는 TPS가 높은 이유 중 하나입니다(물론 이것이 유일한 이유는 아닙니다). 입력 엔도서에 대해 알아보기 전에 알고랜드에서 블록 파이프라이닝이 어떻게 작동하는지 간략하게 설명하겠습니다.

알고랜드 네트워크는 각 블록에 대해 사용자 위원회를 무작위로 선택한 후 단일 라운드에서 블록을 제안하고 투표합니다.

알고랜드에는 키 블록과 마이크로블록이라는 두 가지 유형의 블록이 있습니다. 키 블록은 네트워크에서 합의를 달성하는 데 사용됩니다. 다른 것(제안자, 위원회 등에 대한 정보) 외에도 키 블록은 여러 마이크로블록을 참조합니다. 마이크로블록은 거래 데이터를 저장하는 데 사용됩니다.

위원회는 마이크로블록이 아닌 핵심 블록에만 투표합니다. 마이크로블록은 키 블록에 포함되기 전에 참여 노드에 의해 검증됩니다.

알고랜드는 원장의 전체 상태가 아닌 주요 블록의 상태 변경에 대한 참조만 포함합니다. 참조는 블록에서 발생한 상태 변경의 32B 해시일 뿐입니다. 해시는 전체 상태를 저장하는 것보다 훨씬 작습니다. 이렇게 하면 키 블록의 크기가 줄어들고 네트워크 전체에 걸쳐 블록을 더 빠르게 전파하고 확인할 수 있습니다.

입력 엔도서와 블록 파이프라이닝에는 많은 유사점이 있습니다.

  • 두 기능 모두 블록을 두 부분으로 나눕니다. 하나는 합의용이고 다른 하나는 거래용입니다.
  • 두 기능 모두 합의 프로세스에 관계없이 트랜잭션 블록의 지속적인 스트리밍을 가능하게 합니다.
  • 두 기능 모두 블록 전파 시간을 줄이고 더 높은 트랜잭션 속도를 허용하여 네트워크의 처리량과 속도를 높이는 것을 목표로 합니다.

IOG 팀은 이미 실제로 작동하고 있는 유사한 솔루션을 구현하고 있다고 말할 수 있습니다. 반면에 두 솔루션에는 차이점도 있습니다. 가장 큰 차이점은 아마도 알고랜드의 블록 파이프라이닝이 단일 레이어의 보증 블록에 의존하는 반면, Cardano의 입력 보증자는 입력, 보증 및 순위 블록의 계층 구조에 의존한다는 점일 것입니다.

입력 엔도서(Input Endorsers) 기능이 제공된 후 Cardano에서 사용될 블록을 설명하겠습니다. 위에서(네트워크 합의)부터 아래(데이터)까지 설명합니다.

  • 순위 블록은 Cardano 네트워크에서 합의를 달성하는 데 사용됩니다. 트랜잭션 데이터가 포함되어 있지 않다는 점을 제외하면 현재 블록과 유사합니다. 대신, 서로 호환되는 보증 블록 세트에 대한 참조를 포함합니다. 또한 모든 순위 블록에는 이를 생성한 블록 생산자의 서명이 포함되어 있습니다. 순위 블록은 지분에 따라 프로토콜에 의해 무작위로 선택된 슬롯 리더에 의해 생성됩니다. 순위 블록은 블록체인의 보안과 최종성을 유지하는 역할을 담당합니다. 15~30초마다 생성될 수 있습니다.
  • 보증 블록에는 단일 입력 블록에 대한 참조와 이를 생성한 입력 보증자의 서명이 포함됩니다. 이는 입력 보증인에 의해 생성 및 스트리밍되며 블록 생산자의 유효성 검사를 받습니다. 보증 블록에는 체인의 마지막 순위 블록인 상위 블록이 있으며 여러 개의 (호환 가능한) 하위 블록이 있을 수 있습니다. 5~10초마다 생성될 수 있습니다.
  • 입력 블록에는 거래 데이터가 포함됩니다. 이는 멤풀에서 트랜잭션을 선택하고 네트워크를 통해 전파할 수 있는 무작위로 선택된 이해관계자인 입력 보증자에 의해 생성되고 스트리밍됩니다. 입력 블록에는 상위 또는 하위 블록이 없으며 합의 프로세스에 참여하지 않습니다. 이는 단순히 트랜잭션을 네트워크에 브로드캐스팅하는 방법일 뿐입니다. 0,2-2초마다 생성될 수 있습니다.

보증 블록에는 하나의 입력 블록에 대한 참조만 포함됩니다. 보증 블록은 호환되는 다른 보증 블록에서 참조될 수 있습니다.

예를 들어, 보증 블록 EB-1이 입력 블록 IB-1을 참조하고 다른 보증 블록 EB-2가 입력 블록 IB-2를 참조하고 IB-1과 IB-2 모두 충돌하는 트랜잭션이 없는 경우 EB- 2는 EB-1을 상위 블록으로 참조할 수 있습니다. 이렇게 하면 EB-2가 EB-1의 하위 블록이 되고, EB-1과 EB-2가 모두 서로 호환됩니다. 이를 통해 각 분기는 다음 순위 블록을 통해 원장에 포함될 수 있는 다양한 트랜잭션 집합을 나타내는 트리형 보증 블록 구조를 생성할 수 있습니다.

보증 블록에 대해 여러 하위 블록을 갖는 목적은 각 순위 블록에 대해 호환 가능한 보증 블록 세트를 찾을 가능성을 높이는 것입니다. 순위 블록은 서로 호환되는 일련의 보증 블록을 참조할 수 있습니다. 즉, 참조된 입력 블록에 충돌하는 트랜잭션이 없음을 의미합니다. 보증 블록에 대해 여러 하위 블록을 가짐으로써 블록 생산자는 원장에 포함될 수 있는 거래 수를 최대화하는 최상의 분기를 선택할 수 있습니다.

입력 엔도서(Input Endorser)에 대해서는 다른 글(그림 포함)에서 더 자세히 설명하겠습니다. 이 글에서는 기본 개념을 명확히 하고 싶었습니다.

주목해야 할 가장 중요한 점은 트랜잭션이 포함된 블록이 본질적으로 지속적으로(0.2-2초마다) 생성(스트리밍)될 수 있다는 것입니다. 이는 20초마다 하나의 데이터 블록을 생성하는 대신 동시에 10~100개의 입력 블록을 생성할 수 있음을 의미합니다. 입력 블록 생성 빈도가 높아도 네트워크 합의를 방해하지 않습니다.

이제 확장성의 잠재적인 증가에 초점을 맞춰 보겠습니다.

하나의 Cardano 블록은 300개의 단순 거래를 저장할 수 있습니다. 입력 블록의 블록 시간을 2초로 설정하면 20초 안에 10개의 블록이 생성되며 이는 3000개의 트랜잭션에 해당합니다. 0.2초로 설정하면 30,000건의 트랜잭션이 포함된 100개의 블록이 생성됩니다.

그러면 TPS는 150~1500으로 올라갈 것입니다.

네트워크 계층에서 입력 블록의 크기를 늘릴 수 있다면 TPS에 긍정적인 영향을 미칠 것입니다. 입력 블록을 180KB로 늘리면 Cardano의 TPS는 약 300~3000이 될 수 있습니다.

확장성 증가는 확산 파이프라이닝, 미스릴 등과 같은 다른 많은 네트워크 품질 및 기술에 따라 달라집니다. 다른 개별 네트워크 속성이 개선될 수 있으면 입력 엔도서 기능을 더 효과적으로 사용할 수 있습니다.

우리가 제시하는 TPS는 단지 참고용일 뿐이라는 점을 언급하는 것이 중요합니다. 실제로는 거래 간에 충돌이 발생하므로 특정 라운드에서 보증 블록의 일부만 순위 블록에 들어갈 가능성이 있습니다.

입력 승인자가 가져올 수 있는 확장성의 잠재적인 증가는 입력 블록(및 그 안의 트랜잭션 수)뿐만 아니라 블록 순위에 관한 것이기도 합니다.

순위 블록은 프로토콜 규칙과 합의 매개변수를 준수하는지 확인해야 하는 블록 생산자의 유효성 검사를 받습니다. 더 많은 트랜잭션을 확인해야 하므로 유효성 검사에는 리소스가 더 많이 요구됩니다. 순위 블록은 크기와 발행 빈도도 제한되어 있습니다. 순위 블록에 포함할 수 있는 참조 수와 생성할 수 있는 빈도(15-30초)를 결정합니다. 따라서 확장성은 입력 블록뿐만 아니라 블록 순위에 의해서도 제한됩니다.

블록체인 네트워크는 엄청난 양의 데이터를 생성하므로 트랜잭션을 무제한으로 생성할 수 없습니다. 데이터 가용성은 블록체인 확장성의 중요한 측면 중 하나입니다. 분산형 네트워크에서는 전 세계에 있는 노드에서 유효성 검사가 이루어집니다. 확인하려면 데이터를 사용할 수 있어야 합니다.

블록 크기가 클수록 블록에서 더 많은 트랜잭션을 처리할 수 있지만 노드에서 더 많은 대역폭과 스토리지가 필요합니다. 블록 시간이 짧을수록 거래 확인 속도가 빨라지지만 포크 및 고아 블록의 위험도 높아집니다.

팀은 분산화와 확장성의 균형을 신중하게 유지해야 합니다. 확장성을 높이면 네트워크 합의에 참여할 수 있는 노드의 수와 다양성이 줄어들고 특정 노드의 권한이 다른 노드에 비해 높아질 수 있으므로 분산화에 부정적인 영향을 미칠 수 있습니다.

결론
입력 엔도서는 Cardano 프로토콜의 마지막 개선 사항이 아닐 수도 있습니다. 높은 확장성을 위해서는 샤딩이 필수적이라고 흔히 말합니다. 그러나 샤딩에는 주로 샤드 간의 통신 및 동기화가 필요하다는 단점도 있습니다. Cardano는 입력 엔도서가 구현된 후 샤딩을 가질 수 있습니다. 하나의 샤드는 입력 엔도서를 갖춘 Cardano 네트워크와 거의 유사한 TPS를 가질 수 있습니다. 따라서 10개의 샤드가 있는 Cardano의 TPS는 약 20,000이 될 수 있습니다. 그러나 이는 매우 먼 미래의 이야기이며 많은 기술적 세부 사항이 해결되어야 합니다. 예를 들어 스토리지 수준의 샤딩, 미스릴 개선 및 라이트 클라이언트 보유, 정리(오래된 트랜잭션 폐기) 고려 등이 있습니다.