블록체인 기술 한계 넘으려면? "트랜잭션 순서에 주목하라"

디사이퍼가 코어 기술에 접근하는 방법

컴퓨팅입력 :2018/08/16 08:23    수정: 2018/08/16 14:58

분산된 여러 노드(컴퓨터)가 네트워크를 이루고 있는 블록체인은 필연적으로 이중지불 문제를 안고 있다. A 매장에서 한번 쓴 디지털 화폐를 B매장에서 또 쓰는 게 이중지불이다.

먼저 발생한 거래요청(트랜잭션)만 인정하면 될 텐데, 이중지불 문제는 왜 생기는 걸까. 분산된 네트워크에선 어떤 트랜잭션이 먼저 발생했는지, 그 순서를 알기 어렵기 때문이다.

한 노드에서 발생한 첫번째 트랜잭션(T1이라고 부르자)이 전체 노드에 충분히 전파되기 전에 다른 노드에서 두번째 트랜잭션(T2라고 부르자)이 발생해 전파되고 있을 수 있다. 이럴경우 어떤 노드는 T1을, 어떤 노드는 T2를 먼저 받게 된다. 각 노드 입장에서 먼저 받은 트랜잭션이 다르게 된다.

그렇다면 어떤 트랜잭션을 인정해줘야 할까? 전체 네트워크가 트랜잭션 순서를 어떻게 통일할까?

트랜잭션 순서를 정하는 방식에 대한 노드 간의 합의 방식이 결국 블록체인 합의 알고리즘이다. 비트코인은 컴퓨팅 파워를 많이 쓴 노드가 순서를 정하는 작업증명(PoW) 방식을 택했다. 이렇게 생각하면 블록체인 기술은 곧 트랜잭션을 순서를 해결하는 기술이라고 볼 수 있다.

지난 11일 서울대학교에서 블록체인 기술 컨퍼런스 디퍼런스가 열렸다. 이날 디사이퍼 회장 김재윤 씨는 '블록체인 디자인을 위한 코어 기술'이라는 주제로 발표했다.

서울대학교 블록체인 연구회 디사이퍼 내 '블록체인 코어 팀'은 이런 관점에서 블록체인을 바라보고 있다. 블록체인이 풀어야 할 문제는 결국 "중앙화된 주체가 없는 P2P네트워크에서 누가 어떻게 트랜잭션 순서를 결정하는가"로 귀결된다는 게 이들이 내린 결론이다.

블록체인 기술이 당면한 문제 '트랜잭션 순서'를 명확히하고, 이 문제를 풀 새로운 블록체인을 설계에도 돌입했다.

최근 디사이퍼가 개최한 기술 컨퍼런스(디-퍼런스)에서 디사이퍼 회장이자 블록체인 코어 팀 소속 김재윤 씨는 연구결과를 소개하며 "블록체인 성능을 결정하는 확장성 확보와 즉시결제(Zero-confirmation)도 트랜잭션 순서 초점을 맞춰 접근할 필요가 있다"고 강조했다.

블록체인의 모든 개념, 트랜잭션 순서를 중심으로 다시 정의해 보자

김재윤 씨는 "블록체인의 모든 개념을 트랜잭션 순서의 관점에서 설명할 수 있다"고 말했다.

그의 설명에 따르면 "합의 알고리즘도 트랜잭션 순서를 정하는 방법에 대한 노드 간 합의 방법"이라고 정의할 수 있다.

각 합의 알고리즘도 이렇게 재정의 해볼 수 있다. "작업증명(PoW)은 컴퓨팅 파워를 많이 쓴 노드가 순서를 정한다. 지분증명(PoS)은 디지털 자산이 많은 도느가 순서를 정한다. 위임지분증명(DPoS)은 선출된 대표자가 순서를 정한다. 권한증명(PoA)은 권한을 가진 한 노드가 순서를 정한다."

노드들이 비동기화된 순서를 가진 방식도 있다. DAG 자료구조가 그것이다. 노드들이 합의해 순서를 동기화한 게 아니니, 합의알고리즘이라고 부르진 않는다. "DAG은 이미 발생한 트랜잭션 뒤에 새 트랜잭션을 붙여서 순서를 정하는 방법"이라고 정의할 수 있다.

트랜잭션 순서 관점으로 블록체인 기술을 이루는 모든 개념을 재정의할 수 있다.

블록체인 성능 향상, 트랜잭션 순서로 접근해 보면...

지금 블록체인 기술이 당면한 가장 중요한 문제는 성능이다. 비자카드나 페이스북은 초당 수만건의 트랜잭션이 발생하지만, 사용자들이 서비스를 이용할 때 어떤 불편함도 느끼지 못한다. 하지만 블록체인에선 병목현상이 일어난다. 대량의 트랜잭션이 발생하면 원활하게 처리할 수 있는 능력이 아직 부족하다.

김재윤 씨는 먼저 블록체인 성능 문제를 "확장성과 즉시결제로 크게 분류해 볼 수 있다"고 설명했다.

확장성은 트랜잭션 처리 능력인 초 당 거래량(TPS)를 향상시키는 방법에 대한 것이다. 즉시결제는 거래가 번복되지 않는다고 확정하는 시간을 단축하는 방법에 대한 것이다.

예컨대 비트코인은 초 당 거래량(TPS)가 3~7에 불과하고, 거래가 번복되지 않는다고 확정할 수 있는 시간도 수십분 걸린다.(블록 한 개에 생성되는데 10분이 걸리고, 보통 6개의 블록이 연결되어야 거래가 바뀌지 않는다고 확정한다. 거래소는 1개~3개 블록만 연결돼도 거래를 확정한다.)

확장성과 즉시결제 문제가 해결되야 실제 사용자가 체감하는 성능향상이 가능하다.

김재윤 씨는 확장성과 즉시결제도 트랜잭션 순서로 접근해 설명했다. 그의 설명에 따르면 확장성 향상은 "트랜잭션 순서를 결정하는 속도를 높이는 방법"을 찾는 일이다. 즉시결제는 "트랜잭션이 블록에 담기고 이 블록의 순서가 더 이상 바뀌지 않을 것이 확정되는 시간"을 즉시에 가깝게 줄이는 일이다.

지금 나와 있는 솔루션들의 한계

이미 확장성 문제와 즉시결제를 달성하려는 프로젝트들을 다수 나와 있다. 하지만 완벽한 해결책이 아직 없다는 게 김재윤 씨의 생각이다.

그는 확장성 문제를 풀려는 방법 중 샤딩은 "네트워크를 나눠서 각 파티션 마다 다른 트랜잭션 순서를 정하고 나중에 순서를 합치는 방법"이라고 정의했다.

사이드체인은 "소규모 네트워크를 만들어 그 안에서 트랜잭션 순서를 정하고 결과값을 메인 체인에 올리는 방법"으로, 스테이트채널은 "핫라인으로 연결된 노드끼리 트랜잭션 순서를 정하고 그 결과값을 메인 체인에 합치는 방법"으로 설명했다.

김재윤 씨는 이런 방법들이 모두 "네트워크를 쪼개 전파 속도 높이고 병렬적으로 트랜잭션 순서를 결정해 성능을 증가시킨다"고 설명했다.

하지만 "네트워크를 쪼개면 구성하는 노드 수가 줄어들어 공격이 쉬워지는 문제가 발생할 수 있다"고 한계도 지적했다.

즉시결제를 위한 아이디어로는 비트코인캐시와 DAG를 들었다. 하지만 "비트코인캐시는 블록이 전파되지 않아도 트랜잭션이 전파되면 인정하는 방식으로 속도를 높였지만 불안한 요인이 있고 DAG는 이중지불에 취약하다는 문제가 있다"며 "즉시결제에 대한 완벽한 해결책을 가진 솔루션은 아직 없다"고 설명했다.

관련기사

디사이퍼 블록체인 코어 팀은 확장성과 즉시결제를 갖춘 새로운 블록체인을 직접 설계하고 있다. 아이디어는 구체화한 상태고, 곧 작동하는 모델을 만들어 공개할 예정이다.

김재윤 씨는 "우리는 순서가 바뀌는 것을 어느 정도 허용하면서 성능 이득을 가져갈 수 있는 방식을 택했다"고 아이디어를 설명했다. 또 직접 블록체인을 설계하는 이유에 대해 "직접 만들어봐야 코어 기술에 대한 이해가 더 깊어질 것이라 기대하기 때문"이라고 말했다.