BLOG
블록체인 성능 향상을 위한 루프체인의 트랜잭션 병렬 처리(Parallel Execution of Transactions)
2022.07.18
안녕하세요, 파라메타(PARAMETA)입니다.
블록체인은 실행하고자 하는 코드를 트랜잭션(Transaction, TX) 형식으로 호출하고 이 트랜잭션들을 모아 하나의 블록(Block)을 생성하며, 해당 블록을 여러 노드(Validator)에서 실행한 뒤 그 결과를 합의해 저장하는 시스템입니다. 이때 블록 내 트랜잭션들이 정해진 순서에 따라 순차적으로 실행되며 블록체인 내의 상태 데이터를 갱신하게 됩니다. 전체 블록들이 체인 형태로 연결되어 있기 때문에 전체 트랜잭션의 순차적 실행은 불가피할 수밖에 없는데요, 이러한 순차적 실행이 블록체인 성능 향상의 가장 큰 걸림돌입니다.
블록체인에서 트랜잭션의 순차적 실행은 모든 노드에서의 실행 결과가 동일함을 보장하는 방법 중 하나입니다. 이는 실행 순서가 달라지면 결과 또한 달라질 수 있기 때문인데요, 따라서 블록체인에서는 블록 생성의 권한을 가진 노드(Miner, 검증자) 선정이 매우 중요합니다. 한 번에 하나의 블록만 생성 또는 선택될 수 있도록 하는 것은 블록체인 합의 알고리즘의 주요 기능이며, 블록체인에 있어 가장 중요한 역할 중 하나인 트랜잭션의 순차적 실행을 수정하기란 쉬운 일이 아닙니다.
이처럼 트랜잭션의 순차적 실행은 블록체인의 태생적 특징이나, 이 한계를 극복하지 않고서는 블록체인 성능의 급격한 향상을 기대하기 어려운 것 또한 사실입니다. 실제 빠른 합의가 특징인 PBFT(Practical Byzantine Fault Tolerance, 프랙티컬 비잔틴 장애 허용) 합의 알고리즘 기반 블록체인의 경우에도, 하드웨어 및 네트워크 성능에 따른 차이는 있겠으나 통상 2000TPS(Transaction Per Second)가 이론적인 선에서의 최대 성능으로 알려져 있습니다.
성능 문제의 해결책은 ‘병렬 실행’
– 샤딩, DAG, 그리고 루프체인의 트랜잭션 병렬 처리(Parallel Execution of Transactions)
어떤 영역에서든 성능의 급격한 향상을 위해서는 병렬화를 적용합니다. 귀성객이 급증하는 명절에 버스와 기차 운행을 늘리는 것, 순간 접속자가 몰리는 인기 공연 티켓 예매 시 서버의 수를 늘리는 것 등이 그 예입니다. 동시 처리 가능한 방법이 늘면 그만큼 많은 양을 처리할 수 있어 성능이 급격히 향상되는 것이죠.
블록체인 역시 병렬화 적용을 통해 성능 문제를 해결할 수 있습니다. 그럼 지금부터 대표적 병렬 실행 방식인 샤딩(Sharding)과 DAG(Directed Acyclic Graph), 그리고 파라메타가 자체 개발한 루프체인(loopchain)의 트랜잭션 병렬 처리(Parallel Execution of Transactions) 기술에 대해 알아보도록 하겠습니다.
[병렬 실행 방식 1] 샤딩(Sharding)
이더리움의 경우 거래 속도 향상을 위해 샤딩(Sharding)을 적용할 계획이라고 합니다. 샤딩이란 데이터나 네트워크를 작은 조각으로 분할해 분산 저장·관리하는 기술을 뜻하는데요, 이를 블록체인에 적용해 트랜잭션이나 주소를 기준으로 나누어 각각 다른 체인에 기록하고 실행되게 하는 방식입니다. 각기 다른 체인에 기록된다는 자체가 트랜잭션 병렬 실행의 기반으로 작용하게 되는 것입니다. 일반적으로 타 블록체인에서는 멀티채널(Multi-Channel), 멀티체인(Multi-Chain), 사이드체인(Side Chain)과 같은 형식으로 구현되는 경우도 있습니다.
이러한 멀티체인 접근 방식의 경우, 상태 데이터가 각 체인별로 나뉘어 기록되므로 결국 체인 간 호환성이 떨어지게 됩니다. 블록체인은 해당 체인 내에서만 데이터 검증이 유효하고 해당 체인을 벗어날 경우 오프체인(Offchain)과 동일하기 때문에 상호 호환이 어렵습니다. 이더리움에서는 비콘 체인(Beacon Chain)을 통해 샤드 체인의 보안이나 체인 간 통신을 담당하게 하기도 하나, 단일 체인일 때와 비교하면 성능은 떨어질 수밖에 없습니다.
이더리움 샤딩(Sharding)
* 출처: Ethereum Sharding, https://github.com/ethereum/sharding
[병렬 실행 방식 2] DAG(Directed Acyclic Graph)
또 다른 대표적 병렬 실행 방식은 DAG(Directed Acyclic Graph)인데요, 이를 채용하고 있는 프로젝트로 아발란체(Avalanche) 블록체인을 들 수 있습니다. DAG 기술은 모든 트랜잭션들이 순차적으로 연결되는 것이 아니라 부분적으로 연결되면서 그 순서가 한 방향을 향해 트랜잭션 간의 선후 관계를 명확히 할 수 있도록 구현되는 것이 특징입니다. 이 방식 역시 어느 한 지점에서 여러 트랜잭션이 각기 독립적으로 실행될 수 있는 구조이므로 병렬 실행의 한 예라 볼 수 있습니다. 보통 DAG 기술 적용 시 자산 이체에 대한 처리는 용이하나 스마트 컨트랙트(Smart Contract) 실행에는 다소 어려움이 있는 것으로 알려져 있습니다.
DAG(Directed Acyclic Graph)
* 출처: Avalanche Blockchain Consensus, https://docs.avax.network/overview/getting-started/avalanche-consensus#dags-directed-acyclic-graphs
[병렬 실행 방식 3] 파라메타의 자체 개발 병렬 실행 기술인 루프체인(loopchain)의 트랜잭션 병렬 처리(Parallel Execution of Transactions)
파라메타는 독자 개발 블록체인 코어 엔진인 루프체인(loopchain)에 샤딩이나 DAG가 아닌 자체 개발 병렬 실행 기술인 ‘트랜잭션 병렬 처리(Parallel Execution of Transactions) 기술을 적용, 획기적으로 블록체인의 성능을 향상하고 있습니다. 지금부터 본 기술에 대해 자세히 알아보도록 하겠습니다.
루프체인은 기본적으로 멀티채널을 지원합니다. 정책에 따라 트랜잭션과 컨트랙트를 각 채널별로 나누어 처리할 수 있도록 설계 가능해, 이론적으로 채널의 수만큼 성능이 배가되죠. 채널 간 통신은 자체 인터체인 기술인 BTP(Blockchain Transmission Protocol, 블록체인 전송 프로토콜)를 이용해 수행할 수 있어 채널끼리의 유기적 연결 또한 가능합니다.
루프체인에서의 멀티채널
하지만 BTP를 이용한 통신 역시 체인 간의 통신이므로 오버헤드가 있으며, 스마트 컨트랙트의 경우 하나의 체인에서 실행해야 하는 경우도 발생할 수 있어 또 다른 접근 방법이 필요합니다.
루프체인에서는 각 트랜잭션의 독립적 실행이 가능할 경우 이를 병렬로 실행할 수 있는 ‘트랜잭션 병렬 처리’ 기술을 적용하고 있습니다. 하나의 블록에 TX1, TX2, TX3가 들어 있다고 한다면, 일반적으로 블록체인 노드들은 이 트랜잭션을 순차적으로 실행하면서 상태 데이터를 갱신하게 됩니다. 하지만 TX1은 A에서 B로, TX2는 C에서 D로 이체할 경우 이 두 트랜잭션은 순차적으로 실행될 필요 없는 각기 독립적인 트랜잭션입니다.
루프체인에서는 트랜잭션들이 관여하는 계정이 서로 독립적일 경우 이를 병렬로 실행할 수 있는 처리 기술을 적용함으로써, TX1과 TX2가 병렬로 실행되게끔 하여 한 블록의 트랜잭션을 실행하는 데 소요되는 시간을 획기적으로 줄였습니다. 병렬로 실행할 수 있는 TX가 많으면 많을수록 해당 블록의 전체 실행 시간은 줄어들게 됩니다. 단순한 자산 이체뿐 아니라 스마트 컨트랙트 실행에 있어서도 TX가 호출하는 스마트 컨트랙트 함수가 독립적으로 실행 가능한 경우라면 병렬로 실행할 수 있습니다. (루프체인에서는 독립적으로 실행 가능함을 지정해 주는 ‘isolated’ directive를 사용합니다.)
또한 이 방식은 하나의 체인 내에서 실행되어 하나의 상태 데이터 내에서 처리되므로, 체인 간 통신이 야기하는 오버헤드도 없습니다.
루프체인의 트랜잭션 병렬 처리(Parallel Execution of Transactions)
트랜잭션 병렬 처리 기술을 적용한 결과, 병렬 처리하는 프로세스의 수(Concurrency Level, 동시성 수준)을 높일 때마다 성능(TPS)이 급격히 향상됨을 확인할 수 있었습니다. 병렬 처리 기술을 적용하지 않은 블록체인의 경우 프로세스가 늘어도 성능이 향상되지 않지만, 병렬 처리 기술을 적용한 블록체인은 프로세스가 늘어날수록 성능이 눈에 띄게 향상되었습니다.
트랜잭션 병렬 처리에 따른 루프체인의 성능 향상
블록체인의 성능의 한계를 뛰어넘기 위해서는 병렬 실행 방식의 적용이 필수적이며, 여러 블록체인에서 각기 다양한 방식의 병렬 실행 기술을 적용하고 있습니다. 파라메타는 루프체인에 멀티채널 기술과 더불어 자체 개발한 트랜잭션 병렬 처리 기술을 적용함으로써 주목할 만한 성능 향상을 실현했습니다.
여기에 병렬 실행 시 최적의 효과를 낼 수 있도록 블록 생성 단계에서 수집된 트랜잭션들을 재배치하는 기술을 더한다면, 단일 체인 내에서 상당한 수준의 성능 향상을 이루어 낼 수 있을 것으로 기대합니다.