테크 #기술분석
블록체인보다 더 많이, 더 빠르게, DAG 분산원장
2019년 주목할 블록체인 기술 톱10 ⑥DAG
강민승
등록일: 2019-04-12  수정일: 2019-04-14


이더리움의 창시자인 비탈린 부테릭은 최근 인터뷰에서 응용기술이 2019년에 다시 올 것으로 예상되는 암호화폐 붐을 이끌 것이라고 밝힌 바 있습니다. 작년부터 시작된 ICO 열풍이 사그라들고 거래량도 감소하면서 블록체인 업계가 보릿고개에 시달리고 있지만 한편으로는 이를 계기로 좀더 유용하고 의미있는 기술을 개발하자는 움직임에도 힘이 실리고 있습니다. 디스트리트는 블로코가 추진중인 기업용 블록체인 프로젝트 아르고와 함께 2019년 주목할 블록체인 기술 톱10을 선정해 분석하는 기획 연재를 시작합니다. 이번 기획이 블록체인과 암호화폐 업계의 뱃길을 비추는 작은 등대가 되기를 소망합니다. <편집자 주>


“블록체인이 분산원장을 구현하는 유일한 방법은 아니다. 기존 블록체인은 단일 연결 지점을 통해 데이터를 투입하는 선형구조이기 때문에 트랜잭션을 대량 처리하는데는 불리하다. 블록체인 게임인 크립토키티가 이더리움의 트래픽을 크게 차지해 전체 네트워크가 느려진 사례가 대표적이다. 때문에 거래 처리 속도와 확장성을 높이기 위해 블록 크기의 확장, 오프체인 솔루션 추가, 샤딩 등 데이터 분할 처리를 위한 여러 방법들이 논의되고 있다. 특히 DAG 구조로 분산 원장을 설계해 확장성 문제를 애초에 해결하려는 연구도 활발하게 진행중이다.”


이경태 아르고 수석연구원은 방향성비순환그래프(DAG) 자료형으로 구축한 분산원장의 특장점을 강조하며 이같이 말했다. 블록체인으로 구축한 현 분산원장은 많은 경우 느리고 비싼 단점이 있다. 블록체인의 속도나 데이터 처리량을 개선하기 위한 솔루션이 여럿 등장했지만 현재 완벽하지 않다. 분산원장을 애초에 새롭게 설계하려는 시도도 등장했다. 원장 자체에서 블록을 없애고 트랜잭션 처리량과 속도를 높이는 DAG 프로젝트가 주목받고 있다. DAG 자료 구조는 가볍고 빠르며 확장성이 높기 때문이다.


블록없이 점과 모서리로 ‘탈중앙화 가능’

분산원장을 만들기 위해 꼭 블록체인을 사용할 필요는 없다. 분산원장을 만들기 위해 별도의 자료형을 사용해 독자적인 프로토콜을 만들어내는 시도도 많다. 블록체인의 자료구조를 뒤엎는 접근 방식은 완전 새로운 방식은 아니며 이전부터 있어왔다. 블록체인이 아닌 트리 자료형을 토대로 비트코인을 개조한 고스트 프로토콜이 유명하다.


트리 자료형 외에도 DAG는 블록체인을 사용하지 않고도 분산 원장을 효율적으로 구현할 수 있어 주목받고 있다. DAG를 이해하려면 먼저 그래프 자료형을 이해해야 한다. 컴퓨터 과학에서 말하는 그래프는 주로 객체 사이의 관계를 표현하는데 사용된다. 컴퓨터 과학에서 객체란 값을 갖는 모든 것들을 말한다. 객체는 점으로 표현되며 객체의 상호 관계는 선으로 그려넣는다. DAG 분산원장도 그래프의 특성에 기초해 트랜잭션을 점으로 나타내고 이전 트랜잭션과 이후 트랜잭션을 선으로 연결해 전후 맥락을 표현한다.



DAG에서는 모든 트랜잭션이 기차 놀이 하듯 꼬리에 꼬리를 물고 연결된다. DAG 자료구조에서는 트랜잭션을 동시에 병렬로 연결할 수 있는 장점이 있다. 그렇다고 데이터를 저장하는 방식이 무작위로 점을 흩뿌리는 것처럼 규칙이 아예 없는건 아니다. 엣지 화살표가 돌고 돌아 원점으로 돌아오면 그래프는 무한반복하게 되는데 이는 반드시 막아야한다. 


DAG를 기반해 만든 코인은 여럿 있지만 암호화폐를 원장에 적용한 방법은 천차만별이다. DAG를 토대로한 분산원장에서는 송금 기능과 자산 관리 기능을 주로 구현하며 대다수가 스마트 컨트랙트를 현재 지원하지 않는다.


한편 DAG는 분산원장 뿐만 아니라 실생활에도 많이 도입돼 있다. 자동차의 네비게이션 길찾기 알고리즘에 쓰이며 소프트웨어 버전 관리 프로그램인 깃도 DAG로 구현돼 있다.


사물인터넷 전용 DAG 아이오타

DAG 분산원장 프로젝트 중에서 아이오타(IOTA)는 사물인터넷(IoT)에 집중한다. 아이오타는 IoT 기기의 펌웨어에 설치돼 기기 간 광범위한 토큰 전송 기능을 구현하는 게 목표다. 아이오타가 주목받는 이유에는 앞으로 2021년까지 116억개의 사물인터넷 기기가 사용될 것이라는 예측도 한 몫 한다. 아이오타는 독자적으로 개발한 DAG 자료구조인 탱글에 기반하고 있다. DAG로 만든 코인은 블록체인으로 만든 코인에 비해 프로토콜 수수료가 매우 낮거나 없다. 아이오타의 경우 무료다.


탱글에는 블록이 없다. 블록 안에 트랜잭션을 줄세우는 채굴자도 없다. 대신 아이오타에는 트랜잭션을 정렬하고 승인하는 독특한 규칙이 있다. 아이오타에 자신의 트랜잭션을 전송하려면 남의 트랜잭션이 승인되도록 먼저 도와야 한다. 새로운 트랜잭션은 이전 트랜잭션 두개를 승인해야 탱글에 포함된다. 승인이 없으면 후속 트랜잭션이 승인해주기를 계속 기다리게 된다. 아이오타는 가까운 미래에 IoT 노드가 매우 많아지면 트랜잭션이 북적북적 많아질 것이고 이로써 서로가 서로를 돕는 선순환이 끊임없이 일어날 것으로 예상한다. 


아이오타 DAG 탱글 자료형

탱글에서 코인이 발행되는 최초의 트랜잭션을 제네시스 트랜잭션이라고 한다. 탱글은 제네시스 트랜잭션부터 최신 트랜잭션까지 사슬처럼 모두 연결한다. 참여자는 누군가의 트랜잭션에 다가가 자신의 트랜잭션을 붙이는데 이는 해당 트랜잭션과 그 이전 트랜잭션을 모두 승인한다는 의미가 된다. 하지만 어떤 트랜잭션을 승인할지 말지 참여자 마음대로 결정 할 수는 없다. 담합에 의한 네트워크 공격이 발생하거나 보안상 취약점을 만들 우려가 있기 때문이다.

승인은 일반적으로 두 가지 방식이 있다. 랜덤 확률에 의한 선택과 중요도 점수에 의한 선택이 그것이다. 먼저 완전한 랜덤 선택을 하도록 방치해두면 운이 나쁜 참여자의 트랜잭션은 승인을 받기 위해 상당 시간을 대기해야할 수도 있다. 승인받기 어려운 트랜잭션에 연결되면 데이터가 유실된 것과 사실상 마찬가지다. 뿐만 아니라 오로지 확률에 의한 선택은 최근 거래를 우선하지 않고 매우 오래된 트랜잭션을 또다시 승인하는 끝점을 만들어낼 수 있어 문제다. 이 경우 트랜잭션이 새롭게 추가된 트랜잭션을 돕지 않아 네트워크의 일손이 낭비되는 효과가 생긴다.


반면 중요도 점수만을 기준으로 트랜잭션을 접착하면 포크가 필연적으로 발생하게 되는 문제가 있다. 탱글에서 임의의 트랜잭션의 중요도는 직간접적으로 승인한 트랜잭션의 개수로 정한다. 포크가 많아지면 탱글의 가지를 너무 많이 만들어 승인을 처리하는 속도를 떨어뜨려 비효율적이기 때문에 중요도 점수만을 우선할 수는 없다. 아이오타의 탱글은 둘을 절충해 중요도를 반영하되 확률을 토대로 구동되는 알고리즘을 탑재했다. 즉 어떤 트랜잭션을 승인할지 자신이 직접 고를 수는 없고 탱글의 알고리즘이 정해주는 트랜잭션을 승인하게 된다. 


이렇게 연결 지점을 정해주는 알고리즘을 끝점 선택 알고리즘이라고 부른다. 탱글에 갓 들어온 트랜잭션은 끝점으로 투입된다. 끝점은 아직 승인 된 적 없는 트랜잭션을 말한다. 끝점 선택 알고리즘은 제네시스 트랜잭션에서 끝점까지 이르는 체인 가닥을 만들어가는 과정이다. 이렇게 연결된 끝점 제네시스부터 뻗어나온 고유의 가닥을 갖게 된다.

끝점 선택 알고리즘이 실행돼 끝점이 탱글에 포함되면 제네시스부터 해당 트랜잭션까지 이르는 경로에 있던 모든 트랜잭션의 중요도를 1씩 증가시킨다. 중요도는 시간이 지나며 계속 누적된다. 중요도와 확률을 토대로 끝점 선택 알고리즘을 구동하는 방식을 가중 무작위 행보(웨이티드 랜덤 워크)라고 한다.


보통 블록체인에서 트랜잭션의 완결성은 트랜잭션이 포함된 블록 뒤에 연결된 블록의 수에 따라 확률적으로 결정되지만 탱글에서는 완결성 대신 확정신뢰도라는 용어를 사용한다. 확정신뢰도는 끝점 선택 알고리즘을 100번 실행했을 때 해당 트랜잭션이 어느 정도의 비율로 선택받아 승인되는지 나타내는 지수다. 확정 신뢰도가 높으면 이중 지불 등의 공격 등으로 거래가 변경될 가능성이 적다.


최적 알파값을 찾아라

탱글에서 자주 선택된 경로는 작은 가지들까지 포함해 점점 굵은 가지로 성장해 더 견고한 네트워크를 만들게 된다. 탱글은 무작위적인 모양새가 아니라 자라는 방향이 있으며 전체적으로 볼 때 굵은 철심을 꼬아놓은 모양처럼 자라나게 된다. 특히 끝점 선택 알고리즘에서 변수값 알파를 조절하면 끝점을 선택하는 방식이 바뀌고 탱글 모양새도 바뀐다.


알파값은 트랜잭션이 선택되는 확률을 결정할 때 중요도를 얼만큼 반영할지 결정한다. 알파값이 0이면 중요도는 아예 무시되며 완전 랜덤선택이 수행된다. 이때 네트워크는 비슷한 중요도를 갖는 줄기가 많아져 여러 방향으로 뻗어 나가는 모양새가 된다. 이 경우 트랜잭션 처리가 운에 맞겨져 분산원장 네트워크의 안정성이 사실상 위협받게 된다. 


반대로 알파값을 크게 높이면 1~2개의 정해진 경로에 있는 끝점만을 선택하게 된다. 때문에 탱글은 블록체인과 비슷한 모양새를 지니게 되고 승인받지 못하는 비주류 트랜잭션도 여럿 발생하게 된다. 때문에 아이오타의 탱글은 최적의 알파값을 찾는 게 가장 중요한 연구과제다.


부족한 트랜잭션 승인을 대신하는 코디네이터

아이오타에서 트랜잭션이 실시간으로 승인되려면 초기 사용자가 많아야 한다는 제약조건이 따른다. 사용자가 적으면 자신의 거래가 언제 승인될 지 장담할 수 없다. 아이오타에는 사용자가 생각보다 많지 않아 트랜잭션이 표류하다 승인되지 못하는 경우가 현재 발생하고 있다. 아이오타는 트랜잭션이 표류하는 걸 방지하고 거래의 완결성을 부여하기 위해 코디네이터 개념을 도입해 개발팀이 관리중에 있다. 


코디네이터는 2분마다 특별한 트랜잭션을 전송한다. 특별한 트랜잭션은 승인이 현재 안 된 끝점을 승인하는 역할을 한다. 트랜잭션을 전송하고 싶다면 일단 남을 도와야 한다는 가정이 성립하지 않기에 자원봉사자를 두는 셈이다. 아이오타는 사용자 수가 많아질 때까지 코디네이터를 유지할 예정이다. 하지만 코디네이터의 소스코드는 최근까지 비공개 상태였으며 외부자가 임의로 생성한 안전하지 않은 끝점까지 승인할 우려가 있어 보안상 문제가 있다는 지적이 나오기도 했다. 아이오타는 지난 10일 코디네이터를 오픈소스로 전환했다. 아이오타는 약 500정도의 초당트랜잭션(TPS)을 현재 처리할 수 있다.


눈송이처럼 커지는 트랜잭션, 바이트볼

바이트볼은 아이오타와 유사하게 DAG를 사용하지만 작동 방식은 다르다. 하나의 트랜잭션은 눈송이와 같지만 바이트볼 DAG에 기록되면 트랜잭션이 연결돼 눈덩이처럼 커져 외부에서 해킹하기 어렵다는 의미에서 바이트볼이라는 이름이 붙었다. 자금이 들어있는 하나의 트랜잭션은 빙산의 일각이며 값을 수정하려면 트랜잭션의 자식 트랜잭션의 값까지 수많은 값을 모두 바꿔야만 한다. 자식 트랜잭션을 생성한 개인키를 모두 탈취해야만 하기에 현실적으로 공격이 어렵다.


아이오타가 각 길목에서 확률과 점수체계를 통해 트랜잭션 가닥을 만들어간다면 바이트볼은 특수한 트랜잭션을 중간에 끼워넣어 가닥을 더 견고하게 만든다. 이를 위트니스 트랜잭션이라고 부른다. 위트니스 트랜잭션은 해당 트랜잭션 가닥이 얼만큼 유효한지 표현하는 신뢰의 증표와도 같다. 위트니스 트랜잭션이 많이 포함된 가닥은 정직하고 비정상적인 행위가 없는 안전한 가닥으로 인정받는다.


반면 위트니스 트랜잭션이 없는 가닥은 접합되는 분기점이 발생하는 상황에서 버려질 가능성이 크다. 때문에 위트니스를 선정하는 작업이 매우 중요한데 바이트볼은 이를 관리할 12곳을 선정해 운영할 계획이다. 하지만 아직까지는 개발사가 독점적으로 위트니스를 현재 운영 중이다. 바이트볼은 위트니스가 비정상적인 행위를 저지르면 금융이나 오프라인에서도 명성이 손상될 뿐만 아니라 은행 잔고를 차압하는 등 현실적인 처벌을 할 계획이다.


바이트볼에서는 아이오타처럼 거래를 승인해주는 코디네이터 같은 구조는 없다. 대신 바이트볼은 거래의 완결성을 보장하기 위해 메인체인(MC)이라는 가상의 트랜잭션 체인 가닥을 고안했다. 바이트볼에서 MC는 불변하는 체인 가닥이며 위트니스가 많은 쪽을 따라가며 생성된다. MC와 거리가 가까울수록 트랜잭션은 완결될 가능성이 높기에 MC는 트랜잭션을 끌어당기는 성질이 있다. 한편 MC는 공격자의 이중지불을 걸러내는 장치로도 기능한다. 트랜잭션이 이중지불 형식으로 두 번 전송되면 MC와 먼 곳의 트랜잭션은 무효화돼 버려진다.


바이트볼의 간단 스마트 컨트랙트

DAG 분산원장의 대다수가 간단한 송금 기능에 집중해 스마트 컨트랙트를 지원하지 않는 반면 바이트볼은 스마트 컨트랙트도 지원한다. 바이트볼의 스마트 컨트랙트는 사용자 간 간단한 조건적인 결제를 지원한다. 사용자는 개발 언어를 몰라도 주어진 템플릿 문장의 빈칸을 완성하면 스마트 컨트랙트를 만들어 배포할 수 있다. 다만 바이트볼의 처리 성능은 비트코인보다 약간 더 나은 10TPS 수준에 머물러있다.


바이트볼 스마트 컨트랙트에 외부 데이터를 참조해 가져오는 오라클 솔루션을 사용할수 있다. 예를 들어 비행기가 연착되면 보험료를 지급하는 스마트 컨트랙트를 작성할 때 연착된 여부를 공항 서버로 연동해 제공받는 식이다. 수수료가 무료인 여러 DAG 분산원장과 달리 바이트볼에는 수수료가 있다. 트랜잭션의 바이트로 환산한 물리적 용량값을 기준으로 수수료를 책정하며 트랜잭션의 용량이 크면 더 많은 수수료를 지불해야 한다.


나만의 블록체인을 만드는 블록레티스

나노는 레일블록이라고도 불리며 블록레티스라는 독자적인 자료구조로 DAG 분산원장을 설계했다. 나노의 참여자들은 자신의 입출력 잔고를 기록하는 블록레티스 블록체인을 개별적으로 소유하게 된다. 블록레티스에서는 블록과 트랜잭션을 같은 개념으로 사용한다. 블록레티스는 모든 참여자의 개별 블록체인을 병렬로 줄세우고 연관된 블록을 화살표로 모두 연결한 DAG 형태다.

 

예를 들어 앨리스가 밥에게 송금할 경우 앨리스는 송신 블록을 만들어 자신의 체인에 마지막 블록으로 연결한다. 앨리스가 토큰을 전송하면 자신의 계정에서 잔고를 차감하고 네트워크에 송신 블록을 전파한다. 이때 네트워크는 계정의 잔고를 검증하는 역할을 수행한다. 수신자는 송신 블록을 감지하고 자신의 체인에 수신 블록을 연결한다. 수신 블록이 연결되면 밥은 네트워크에 전파하고 자신의 잔고를 늘린다. 송금 과정에서 발생하는 수수료는 없으며 상대방이 오프라인 상태로 블록을 즉각 만들지 않아도 거래가 비동기적으로 수행되는 특징이 있다. 나노의 송금 거래는 잔고를 확인하는 작업을 포함해 보통 3초 이내로 이뤄진다. 


비동기적으로 빠른 거래가 가능한 이유는 개인의 블록에는 관련없는 다른 참가자들이 생성한 번들 트랜잭션을 포함하지 않기 때문이다. 블록레티스 블록 하나에는 송신 트랜잭션이나 수신 트랜잭션 등 하나의 트랜잭션만 담긴다. 또 블록레티스로 만든 개인의 블록체인은 흔히 생각하는 블록체인과 달리 거래를 승인하기 위한 채굴 작업이 필요하지 않다. 더욱이 나노의 트랜잭션은 비트코인의 트랜잭션과 달리 가벼워 빠른 전송이 가능하다. 나노는 테스트 환경에서 7000TPS를 작년 달성한 바 있다.


나노는 내부적으로 트랜잭션을 합의하는 과정에서 위임형지분증명(dPoS)를 사용한다. 모든 사용자는 자신의 계정에 대리인을 설정할 수 있다. 대리인은 나노에서 이중지불이나 비정상행위가 발생하면 문제가 있는 블록을 투표를 통해 제거하는 역할을 한다. 한편 나노에서는 적은 금액을 무분별하게 전송해 네트워크를 장악하는 스팸 공격을 방지하기 위한 용도로 최소한의 작업증명(PoW) 알고리즘을 사용한다.


“인센티브, 보안성, 안정화” 등 실속 필요

DAG는 블록체인 기술을 사용하지 않고도 분산원장을 만드는 새로운 시도로 평가받고 있다. DAG 분산원장에는 PoW 구조가 대부분 없으며 있어도 스팸이나 시빌 공격을 방지하기 위한 용도로 사용돼 PoW 연산이 최소화된다. 때문에 사용자 수수료도 최소화되며 컴퓨팅 자원 낭비도 적다. DAG의 PoW는 트랜잭션을 만들어 보내는 시간이 너무 짧으면 이를 받는 서버에 부담이 되기에 트랜잭션을 만들때 PoW 문제를 풀며 시간을 보내게 하는 식이다. 뿐만 아니라 가벼운 프로토콜을 토대로 확장성을 최대한으로 끌어올릴 수도 있다. 한편 아이오타는 탱글이 양자컴퓨팅에 저항성을 가진다고 주장하기도 한다.


DAG 자료구조를 사용하는 분산원장 프로젝트의 경우 독창적인 합의 알고리즘을 사용하는 경우도 많다. 헤데라 해시그래프의 경우 트랜잭션을 소문처럼 퍼뜨리는 가십프로토콜로 거래를 검증하고 승인한다. 다만 해시그래프의 핵심 동작은 특허가 적용돼 있고 소스 코드도 비공개 상태다. 이밖에도 팀로켓이 만든 아발란슈 프로토콜은 DAG 분산원장에서 가상의 익명 투표를 집행해 트랜잭션을 승인하기도 한다. 


이경태 수석연구원은 DAG 분산원장이 아직까지는 성숙이 더 필요한 단계라고 말한다. 그는 “분산원장의 새로운 구조인 DAG는 검증이 아직 덜 됐고 운영을 위한 독소 요소도 포함돼 사용에 주의가 필요하다”고 진단한다. 비트코인이나 이더리움 등 기존의 탈중앙화 시스템의 내부에는 실제로 인센티브가 내재돼 있어 참여자의 행동을 경제적으로 촉진하고 있지만 DAG 에는 이같은 구조가 없다는 점도 극복해야 할 점으로 꼽힌다. 이경태 수석연구원은 “시스템을 작동하도록 하는 보상이 없어 사용자의 행위를 촉진할 사용자의 동기를 자극할 새로운 메커니즘이 필요할 것”이라고 말한다.


DAG는 블록체인의 느린속도와 데이터 처리량 등이 낮아 발생하는 확장성 문제를 해결하기 위한 방안으로 부상했다. 이 연구원은 DAG가 블록체인을 대신해 분산원장에서 트랜잭션을 더욱 더 많이 처리하고 기록하기 위해 등장한 기술이지만 이를 안정적으로 유지하기 위해 오히려 트랜잭션의 유치를 고민해야 한다는 점이 역설적이라고 평가한다. 때문에 서비스 안정화나 최적화 작업에 앞서 활용처를 더욱 확보하는 노력이 앞으로 필요하다고 그는 지적한다.


이 연구원은 “DAG 분산원장이 보안과 기밀성의 수준을 높여 명실상부한 퍼블릭 분산원장의 영역으로 들어오기 위해서는 많은 보완이 필요할 것”이라고 진단한다. 실제로 DAG에서 등장하는 알파값을 수학적으로 최적화하는 작업, 아이오타의 경우 코디네이터 사용 문제, 네트워크 참여자 확보, 바이트볼의 경우 위트니스 등 여러 고민이 필요하다고 그는 말한다.


이경태 수석연구원은 티맥스 소프트웨어에서 SQL 엔진을, 비트나인에서 그래프 데이터베이스를 개발한 바 있다. 블로코에는 2017년 합류해 아르고의 스마트 컨트랙트를 개발하고 있다.


[강민승 기자]


디스트리트 커뮤니티 광고
북마크
좋아요 : 2
공유
https://dstreet.io/news/view-detail?id=N20190329185937963575
URL복사
댓글 0
댓글쓰기
댓글 쓰기
에어드랍코리아