IOG : 카르다노 네트워크 최적화
최적화된 카르다노
네트워크 최적화의 길엔 단계별 조정에 있습니다
Cardano(카르다노)는 지분 증명(Proof of Stake) 블록체인으로 네트워크 장애에 대한 높은 보안성과 복원성이 있도록 탄력적으로 구축되었습니다 우로보로스 지분증명(Ouroboros PoS) 합의 알고리즘, 공식적인 방법을 사용하는 내장 Haskell 및 피어 리뷰 학술 연구에 의해 주도하되는 카르다노는 분산되고 확장성이 뛰어나 전세계적으로 수백만 건의 트랜잭션을 처리할 수 있는 견고한 환경을 제공하도록 설계되었습니다.
이전 게시물(https://excessive-raft-f52.notion.site/2021-10-22-Cardano-19171b0f4ddd4e8e979378947e334ff8)에서 우리는 트랜잭션 처리와 확인(Verifying), 서명시 시스템이 전체적으로 어떻게 작동하는지를 포괄하는 네트워크 성능에 대해 논의했었습니다. 장기적으로 시스템을 구축하려면 초기 설계 단계에서 이를 올바르게 수행하는 것이 중요합니다. 그러나 네트워크 용량은 중요한 자원이므로 가장 효율적인 성능 측정 기준을 위해서는 계산(컴퓨테이션) 메모리, 스토리지(저장 공간) 및 네트워크 자원을 효과적으로 소비하는 것이 필수적입니다.
카르다노는 그 토대가 유연하게 제작되었습니다. 증가하는 수요에 대해 대응하고 처리량을 최대화합니다. 네트워크가 확장됨에 따라 가격 변동에 맞게 조정해 확장성과 처리량 속성을 확장하기 위해 프로토콜 파라미터(매개 변수)를 조정하고 있습니다. 이제 시간이 지남에 따라 네트워크 성능을 최적화하는 방법을 자세히 알아봅시다.
네트워크 혼잡성에 대한 정의
블록체인 용어에서 혼잡(Congestion)이란 네트워크가 과포화된 상태에서 많은 양의 트랜잭션을 처리하고 관련 블록에 서명할 때 어려움을 겪는다는 것을 의미합니다.
평균적으로 카르다노 블록에서는 주어진 Epoch에서 약 25%가 사용되고, 이는 일반적으로 네트워크가 혼잡하지 않게 하고 훨씬 더 많은 수의 트랜잭션을 처리할 수 있는 상당한 여유 공간이 있다는 것을 나타냅니다. 카르다노는 포화 상태에서도 공정성을 잃지 않으면서 탄력적으로 회복하도록 뛰어나게 설계되었습니다. 현재 매개 변수 설정에 대해 계획된 향후 최적화를 살펴보겠습니다. 현재 성능 측정 항목은 다음 측정값에 따라 달라집니다.
- Throughput(처리량), 전송된 데이터 볼륨. 현재 카르다노의 단일 블록 크기는 64KB로 설정되어 있습니다. 단일 플루터스 스크립트 트랜잭션은 현재 16KB로 제한되어 있고 간단한 트랜잭션은 일반적으로 300bytes를 차지합니다. 이러한 설정은 트랜잭션 대기시간을 최소화하면서 양호한 네트워크 활용도를 보장하기 위해 균형을 맞추었습니다. 사용자가 한 번에 크게 증가하면 블록 채택 시간이 지연됩니다. 이는 처리량과 Timeliness(시기적절성)이 서로 긴장(Tension) 관계로 있기 때문입니다. 처리량을 최대화하면 네트워크 성능이 분명 향상되지만, 시스템이 포화 상태가 되었을 때는 지연이 증가한다는 대가를 치르게 됩니다.
- Timeliness(시기적절성), 위에서 말했듯. 이것은 블록 채택 시간입니다. 블록 채택을 위한 총 '예산 시간'은 플루터스 스크립트에 사용할 수 있는 약 50밀리세컨드의 예산을 책정하고 있고, 블록이 네트워크를 통해 전파되는 데 필요한 시간은 5초(지분의 95%)로 설정되었습니다. 이 모든 과정은 블록이 스크립트와 단순 트랜잭션을 모두 포함할 수 있도록 설계되었습니다.
최근 사용자들은 대규모 NFT(Non Fungible Token, 대체 불가능 토큰)민팅으로 인해 트랜잭션 처리 대기 시간이 증가했다고 말했습니다. 이러한 과잉 포화의 원인은 많은 양의 NFT가 한꺼번에 방출되어 다음 내용을 유발했기 때문입니다.
- 많은 수의 동시 발행 NFT 트랜잭션
- 여러 사용자가 동일한 NFT를 민팅(구입)하여 동시에 트랜잭션을 처리하려고 시도
- NFT를 놓치거나 구매하지 못한(또는 이상 오류) 사용자에 대한 동시 환불 트랜잭션
이 모든 3개의 시나리오는 NFT 세일즈(판매)에 대한 네트워크 부족 현상을 초래했고 서비스에 대한 엄청난 수요(무려 공급의 43,000%)가 발생했습니다.
하지만 이 '혼잡한' 기간이 1시간 미만으로 지속되었다는 점도 주목할 필요가 있습니다. 이것은 성장하는 시작이고 NFT 제작자는 이미 이러한 네트워크 혼잡이 사용자 경험에 미치는 영향을 최소하기위 해서 프로세스를 반복하기 시작했습니다. 아직 초기이고 우리 모두는 빠르게 학습하고 있습니다. NFT를 발행하는 프로세스는 완벽하게 병렬화가 가능합니다. 이것은 이 프로세스에 대해 제한이 없다는 것을 의미합니다. 단기에서 중기적으로 네트워크 도로를 잠깐 넓히는 것보다 효율적인 교통 체계를 구축하는 것이 관건입니다. 일부 개발자는 이미 효율적인 NFT 민팅을 위해 그러한 시스템을 생산하고 있습니다.
탈중앙화 거래소 (Decentralized Exchanges, DEX)
카르다노를 기반으로 구축된 많은 초기 dApp들은 DEX가 주입니다. 그리고 일부 애플리케이션에서 사용자가 트랜잭션을 요청하는 동안 경합이 발생하는 경향이 있습니다. 즉 전체 상태가 여러 UTxO에 분산되지 못하고 하나의 UTxO 내에 유지되는 dApp의 설계의 전제 조건 때문에 이전 트랜잭션 출력에 대한 미래 트랜잭션의 의존성이 발생합니다. 그리고 이것은 동시성 이슈(Concurrency Issue) 라는 단어로 널리 언급되어 있습니다.
그러나 이것은 이슈가 아닙니다. 영국이나 일본이 왼쪽으로 운전하는 것이 이슈가 아닌 것처럼 이것도 이슈가 아닙니다. 이것은 학습 곡선이 필요하지만 궁극적으로는 일을 수행하는 또다른 방법일 뿐입니다. 본질적으로 더 복잡한 것도 아닙니다. 단지 다른 접근 방식이 필요할 뿐입니다.
카르다노의 eUTxO 모델은 어카운팅 기반 모델과는 다릅니다. 카르다노를 기반으로 구축된 dApp은 단일 스레드 상태 스타일에서 벗어나 eUTxO 그래프에서 동시 엣지를 포함하는 솔루션을 구성해야 합니다. 서로 다른 UTxO 집합을 사용해 시스템의 처리량을 향상시키고 개별 운영 성능을 동일하게 유지하는 병렬화를 시행해야 합니다. 이더리움의 접근 방식(어카운팅 모델)에 익숙한 모든 개발자는 기존 사고방식의 전환과 인식 변화가 필요합니다.
병렬화 기술을 올바르게 사용하면 사용자는 처리량과 확장성 면에서 향상된 결과를 누릴 수 있고, 오프체인 솔루션을 UTxO 원장에 더 잘 적용됩니다. 자세한 내용은 동시성 게시물(https://iohk.io/en/blog/posts/2021/09/10/concurrency-and-all-that-cardano-smart-contracts-and-the-eutxo-model/)과 확장 가능한 플루터스 디앱을 구축하는 방법을 참조하십시오. 모델을 최대한 활용하기 위한 추가 지침을 제공하기 위해 머지않은 시기에 추가 내용을 발표할 예정입니다.
네트워크 최적화 로드맵
런칭 당시 우리의 초점은 최적화하기 전에 핵심 기능과 정확성을 제공하는 것이 목적이었습니다. 이것이 우리의 항상 명시된 목표였고, 퍼포먼스와 벤치마크 조정을 지속적으로 모니터링했습니다. 네트워크가 성장하고 카르다노가 더 높은 용량에서 사용됨에 따라 우리는 네트워크 수요를 충족시키기 위해 매개 변수를 조정할 것입니다. 이러한 업그레이드는 네트워크 요구사항을 충족하고 다른 특성에 영향을 미치지 않도록 하기 위해 향후 몇 개월 동안 단계별로 점진적으로 업그레이드됩니다.
우리는 광범위한 분석을 수행하고 데이터 확산 시간을 정확히 측정하는 노드매트릭을 구현하기 시작했습니다. 여기서 데이터 확산이란 블록체인을 검증하는 노드 간에 트랜잭션과 블록을 배포하는 프로세스를 말합니다. 합의 알고리즘은 결정을 내릴 수 있도록 노드에 필요한 정보를 제공하는 것이 필수적입니다. 트랜잭션 제출부터 채택까지 평균 대기 시간을 구현할 것입니다. 이와 함께 다음을 포함해 장기간에 걸쳐 네트워크 성능을 반복적으로 향상시킬 수 있는 시나리오를 조사하고 있습니다.
- 블록 크기 늘리기. 블록 크기가 증가하면 확실히 블록에서 더 많은 트랜잭션이 발생합니다. 장점은 역시 포화된 네트워크 기간 동안 블록이 트랜잭션을 채택하는 대기 시간이 줄어든다는 것입니다. 여기에 절충안이 있습니다. 큰 블록일수록 네트워크를 통해 전파하는데 시간이 상대적으로 오래 걸립니다. 이것은 노드가 트랜잭션을 확인하는데 더 많은 시간이 필요하다는 것을 의미합니다. 블록 크기 증가는 네트워크 성능을 높이는 데엔 확신하지만 이러한 변경은 주의해야 합니다. 이 크기 증가가 블록 채택 시간(Timeliness)을 손상시키지 않도록 하기 위해 우리는 매개변수를 점진적으로 변경하고 높은 포화도를 가진 기간 동안 결과를 평가할 것입니다. 이것은 단계적 업데이트가 아닌 명확한 결과를 제공하고 가장 효율적인 조정을 보장하는 데 도움이 되는 반복 접근 방식입니다.
- 멤풀 크기. 현재 mempool 크기는 현재 블록크기의 2배인 128KB로 설정되어 있습니다. 멤풀은 네트워크 버퍼로 작동하고 트랜잭션을 블록에 포함시킬 때 짧은 지연이 발생할 수 있습니다. 하지만 멤풀의 크기를 늘린다고 네트워크 처리량이 향상되는건 아닙니다. 트랜잭션 대기열은 여전히 똑같이 유지되고, 멤풀은 랜더마이즈 알고리즘에 의해 선택된 생성 노드를 기반으로 새로운 트랜잭션의 공정한 채택을 허용합니다.
- 스크립트 압축. 현재 트랜잭션 크기는 16KB로 설정되어 있으므로 프로토콜이 투명한 방식으로 압축(zip)할 수 있도록 압축 작업을 계속하고 있습니다. 이는 크기가 줄어들어 한 블록에 스크립트 트랜잭션이 더 많아진다는 의미를 같습니다. 개발자는 16KB 이하로 압축된 더 정교한 코드를 제출할 수 있으며 이는 다른 트랜잭션을 위한 더 많은 공간이 남게 됩니다.
eUTxO를 위한 아키텍처
이전 동시성 게시물에서도 설명했듯이 카르다노의 eUTxO 모델은 DeFi 애플리케이션을 설정할 때 모든 종류의 문제를 제거합니다. 트랜잭션을 병렬로 처리하는 eUTxO의 기본 기능 외에도 모델의 결정론적 특성은 개발자와 사용자가 낭비하는 'GAS(가스)'가 없도록 합니다. 즉, eUTxO 모델은 어카운팅 기반 모델과 동일하지 않습니다. 카르다노의 eUTxO 모델을 위해 특별히 설계된 애플리케이션은 최고의 사용자 환경을 제공합니다.
우리는 개발자가 처리를 최적화할 수 있는 방법에 대한 심층적인 기술 정보를 발표할 예정입니다. 예를 들어, 이것은 UTxO 모델에 적용됩니다.
반복과 개선
계속해서 발전하고 반복하는 과정으로 무대 뒤에서는 많은 작업이 진행도티고 있습니다. 네트워크 성능을 지속적으로 평가하고 그에 따라 매개 변수를 조정할 것입니다. 단기적으로는 지분과 보상 배분 계산을 고르게 분산시켜 NFT 민팅 드랍을 완화할 것입니다. 이를 통해 블록 크기를 늘리고 Epoch 경계에서 일시 중지나 정체를 제거하며, 블록 전파 속도 늦춤 현상을 제거할 수 있습니다.
점진적인 블록 크기 증가를 통해 네트워크 성능에 대한 최상의 사례를 평가할 수 있고 이러한 결과는 곧 네트워크에서 확인할 수 있게 됩니다. 또한 스크립트 압축, 온체인 공유 기능 구현과 함께 온체인에서의 로드는 완화하기 위해 원장 상태(Ledger state)를 디스크 스토리지로 이동할 계획입니다. 이것이 완료되면 네트워크가 크게 보완될 것입니다. 중기적으로는 Hydra는 추가적인 기능을 제공하게 됩니다. 장기적으로 팀은 트랜잭션 처리량을 증가시키기 위해 가격 책정 프레임워크에 관한 매커니즘을 계속 연구하고 Ouroboros(우로보로스) 프로토콜을 개선합니다. 이에 대한 자세한 내용은 역시 향후 게시물에서 다룹니다.
이제 2개월
카르다노에서 스마트 컨트랙트 시대가 시작된 지 이제 두 달이 되었습니다. 런칭에 대한 기대와 그 무게가 무엇이든 간에 이것은 한 번 만에 이루어지는 업그레이드가 될 수 없었습니다. 네트워크에 대한 수요가 증가함에 따라 적응하는 기간은 항상 있어왔습니다. 우리는 언제나 여정에 올라있으며 커뮤니티의 피드백을 면밀히 관찰하고 이해하는 것을 최우선으로 합니다.
개발자로서 공개 세션에 대한 안내와 지원 채팅을 원한다면 디스코드나 텔레그램 개발자 커뮤니티에 입장하시길 바랍니다. 이 게시물을 준비하는 데 지원과 피드백을 준 John Woods, Vitor Silva, Kevin Hammond, Duncan Coutts, Romain Pellerin, Michael Peyton Jones, Jean-Frederic Etienne, Olga Hryniuk에게 감사드립니다.
https://iohk.io/en/blog/posts/2021/11/10/optimizing-cardano/
'Cardano' 카테고리의 다른 글
월드모바일 : CEO 미키 왓킨스 첫 AMA 대담 (0) | 2021.11.19 |
---|---|
11월 14일 찰스 : 돌아온 묵상 AMA 요약 (0) | 2021.11.14 |
IOG : Alephium과 DigiByte는 최근 UTxO 동맹에 참여했습니다 (0) | 2021.11.10 |
PAB 통합 베타 버전 출시 (0) | 2021.11.06 |
IOG : 가나에서 신세대 혁신가들에게 힘을 싣습니다 (0) | 2021.11.06 |
댓글