테크 #백서리뷰#기술분석#이더리움
비탈릭 부테린도 칭찬한 '플라즈마 운영자 독단 막는 법'
온더, 플라즈마의 데이터 가용성 문제 해결한 관리 솔루션 '컨티뉴어스 리베이스' 개발
비탈릭 부테린, 서울 이더리움 밋업서 "엑싯 절차 줄이고 UX 단순화해 실용적"
강민승 기자
등록일: 2019-04-22  수정일: 2019-04-24


“데이터 가용성 문제는 제너럴라이즈 플라즈마를 구현하는데 있어 가장 큰 허들로 꼽히지만 컨티뉴어스 리베이스를 사용하면 데이터 가용성 문제를 극복해 튜링 완전한 범용적인 플라즈마를 만들어낼 수 있고 이로써 플라즈마에서도 디앱을 구동할수 있게 된다.”


박정원 온더 연구원(사진)은 이달 초 서울 강남의 구글캠퍼스에서 개최된 서울 이더리움 밋업에서 플라즈마 토카막의 성과를 강조하며 이같이 말했다. 이번 서울 이더리움 밋업에는 이더리움의 창시자인 비탈릭 부테린이 연사로 참여했으며 온더, 해치랩스, 수호가 개발한 솔루션 제품을 피드백하는 자리도 마련됐다.


플라즈마 현 기술 스펙

플라즈마는 이더리움을 닮은 자식체인을 만들어 이더리움 메인넷에 연결하는 이더리움의 세컨드레이어(layer2) 확장성 솔루션이다. 이더리움 메인넷과 플라즈마는 서로 스마트 컨트랙트를 통해 연결되어 있고, 사용자는 필요시 이를 통해 양 체인을 드나들 수 있다. 일반적으로 플라즈마에서는 주기적으로 내부 거래내역을 취합해 메인체인에 기록한다. 플라즈마 체인을 운영하는 오퍼레이터는 이러한 거래 내역을 취합하여 기록하는 역할을 수행한다. 


플라즈마 체인을 도입해 거래나 연산을 수행하고 그 결과값을 메인체인에 전송하면 수수료를 절감하고 거래의 속도를 전반적으로 향상시키는 효과가 있다. 플라즈마는 부모체인, 혹은 루트체인에 의해 상태변화가 강제되기 때문에 플라즈마 체인 내부에 별도의 합의 알고리즘을 필요로 하지 않는다. 


플라즈마의 프로토콜은 블록에 담긴 내역을 오퍼레이터가 주기적으로 메인체인에 기록하고 플라즈마의 데이터가 잘못된 경우 부모체인에 기록된 증거를 바탕으로 토큰을 삭감하는 등 처벌하는 절차를 따른다. 플라즈마 체인이 비정상적인 사용자를 이같이 처벌할 수 있는 이유는 플라즈마는 사용자의 상태 변경을 강제하는 메커니즘에 기반하고 있기 때문이다. 다만 현 사용자는 자신의 토큰을 도둑맞지 않도록 적극적으로 감시해야 하는 위치에 놓이게 되며 거래 절차도 복잡해 토큰의 출금에도 일주일이 걸리는 등 사용자경험(UX)이 좋지 않다는 점이 단점으로 지적된다.


실제로 플라즈마는 비탈릭 부테린이 제시한 최소기능 플라즈마(MVP)를 비롯해 플라즈마 캐시, 플라즈마 데빗 등 다양한 버전이 현재 존재한다. MVP는 1000TPS을 목표로 등장했지만 사용자가 전체 사용자의 거래 내역을 모두 확인해야만 하는 부담이 있었다. 거래 내역은 사용자가 REST 응용프로그래밍인터페이스(API)를 통해 오퍼레이터의 데이터베이스에 질의를 전송하며 확인할 수 있다.


MVP를 시작으로 이더리움 확장성을 높이기 위해 플라즈마의 연구가 전세계적으로 활발히 진행중이다. 하지만 대다수 플라즈마 프로젝트는 비트코인처럼 토큰을 단순히 빠르게 전송하는 데만 초점을 둔다. 일반적인 연산을 부분적으로 지원하는 플라즈마 프로젝트는 있어도 제너럴 컴퓨팅을 완전 지원하는 플라즈마는 아직 없다.


그 이유는 현 플라즈마는 컨트랙트 코드를 컴파일하고 실행하는 이더리움가상머신(EVM)이 탑재되지 않았고 스마트 컨트랙트를 배포하기 어려운 미사용트랜잭션아웃풋(UTXO) 자료형에 애초에 기반하고 있기 때문이다. 범용 플라즈마가 구현되면 플라즈마 체인에 디앱(dApp), 스마트 컨트랙트 배포 등 일반적인 프로그램 연산을 할수 있게 해 주목받고 있다. 범용 플라즈마가 구현되면 여러 기능을 플라즈마에 손쉽게 확장할 수 있게 된다.


특히 플라즈마 초기 문서에는 플라즈마의 확장성을 높이는 방식으로 레이어드 플라즈마 개념을 언급하고 있다. 즉 플라즈마가 할아버지 체인, 부모 체인, 손자 체인 등으로 확장되는 구조다. 예를 들어 1000개의 플라즈마 체인을 배포하고 자손 플라즈마 체인이 1초당 1000개의 트랜잭션을 요약해 전송하면 이론적으로는 100만 초당트랜잭션(TPS)를 성취할 수 있게 된다. 하지만 플라즈마에 플라즈마를 겹겹 쌓는 레이어드 플라즈마는 기술적으로 아직 불가능하다. 플라즈마에는 EVM이 없어 컨트랙트를 배포할 수 없기 때문이다.


제너럴 플라즈마 솔루션의 허들, 데이터 가용성 문제

국내 블록체인 연구개발회사인 온더는 이더리움 클라이언트를 플라즈마에 그대로 붙일 수 있도록 플라즈마 EVM을 개발했다. 온더는 플라즈마에 EVM을 이식하는 프로젝트를 진행해 작년 10월 플라즈마 EVM의 소스 코드를 공개했다. 또 온더의 플라즈마는 UTXO대신 기존 이더리움과 같이 상태 변경이 자유로운 스테이트 모델을 사용한다. 때문에 온더의 플라즈마 EVM을 사용하면 플라즈마 내 디앱 구동, 레이어드 플라즈마의 구현 등 제약없이 다양한 연산을 할 수 있게 된다. 


일반 상태 연산을 위한 기술적 장벽을 제거하는 코어 기술이 플라즈마에 탑재되도 사용자들이 이를 비정상적인 의도로 악용하면 여러 문제가 발생할 수밖에 없다. 특히 그중에서 데이터가용성(DA) 문제는 범용 플라즈마 솔루션을 운영하는데 있어 가장 큰 위협 요소로 꼽히는데 이를 제어하는 추가적인 장치가 반드시 필요하다. 데이터 가용성 문제란 플라즈마의 오퍼레이터가 블록을 공유하지 않아 사용자가 거래 내역을 증명할 수 없는 문제를 말한다. 예를 들어 플라즈마 운영자가 블록 데이터를 참여자들로부터 악의적으로 숨기는 데이터 인질 공격 등이 그것이다.


데이터 가용성 문제는 플라즈마를 비롯해 여러 세컨드레이어 확장성 솔루션에서 흔히 발생하는 악명 높은 문제로 평가받고 있다. 데이터 가용성 문제가 치명적인 이유는 오퍼레이터가 자신이 만든 블록의 내용을 공유하지 않을 때 플라즈마 내부에서 악의적인 행위가 발생해도 이를 처벌하거나 중재할 근거가 없어진다는 데 있다. 거래내역이 올바르지 않음에도 불구하고 이를 증명할 수 없다면 사용자가 자산을 잃게 될 위험이 뒤따르게 된다. 때문에 아무리 성능이 좋은 범용 플라즈마 솔루션이라고 해도 데이터 가용성 문제를 해결하지 못하면 공격에 취약해질 수밖에 없다.


DA 풀어낼 플라즈마 제어장치 ‘플라즈마 토카막’

플라즈마의 데이터 가용성 문제를 풀기 위한 연구는 이전부터 있었다. 플라즈마 캐시는 데이터 가용성 문제를 풀기 위해 UTXO 자료형 관리에 희소 머클 트리(SMT)를 도입한 바 있다. UTXO 모델의 경우 데이터 변경 주체, 방법에 따라 데이터 변경 제약을 많이 부여하는 특징이 있다. 때문에 UTXO 모델에서는 데이터 가용성 문제를 해결하기도 그나마 쉬운 편이다.


한편 플라즈마 캐시는 ERC-721 토큰 규격을 사용해 사용자가 모든 거래를 확인해야하는 구조에서 자신의 토큰만 검증할 수 있도록 UX를 단순화했다. ERC-721 토큰은 각기 다른 시리얼 숫자를 지니고 있고 사용자는 해당 토큰의 거래 내역을 추적해 관리할 수 있는 특성이 있다.


반면 플라즈마 EVM에서는 UTXO 대신 이더리움 메인체인과 유사하게 스테이트 모델을 사용하는데 스테이트의 경우 자료값의 변경이 UTXO에 비해 매우 자유로워 데이터 가용성 문제를 풀기 어려운 단점이 따른다. 플라즈마의 오퍼레이터가 블록 상태를 악의적으로 변경하고 네트워크에 알리지 않을 경우의 수가 많아지기 때문이다.


컨티뉴어스 리베이스, 플라즈마 체인서 DA 문제 해결

온더는 플라즈마 체인에서 DA 문제를 해결하기 위해 플라즈마 EVM에 컨티뉴어스 리베이스 솔루션을 최근 추가했다. 일반적으로 이더리움에서 발생하는 트랜잭션은 이더리움의 코드 실행기인 EVM의 작동 시간을 일정 부분 점유하게 된다. 컨티뉴어스 리베이스는 이를 응용해 플라즈마 EVM에서 데이터 처리 과정을 몇 가지 단계로 나누고 플라즈마 체인에서 블록을 생성하는 방식에 차이를 둔다.


토카막 플라즈마의 블록 구조도 기존 플라즈마와 차이가 있다. 플라즈마 블록은 부모체인에 기록을 전송하는 리퀘스트블록(RB), 부모체인에는 요청하지 않으나 플라즈마에는 기록하는 논리퀘스트블록(NRB), 탈출 블록(EB) 등으로 구성된다. 특히 EB, RB는 토카막 플라즈마에 새롭게 추가된 것으로 이로써 토카막 플라즈마의 오퍼레이터는 기존과 달리 메인체인에 기록하는 블록이 두배가 되기에 지불해야 할 수수료도 두배가 된다.


플라즈마 EVM에 컨티뉴어스 리베이스가 추가되면서 플라즈마 체인은 플라즈마 EVM의 작동 절차를 4가지 단계로 구분해 주기별로 데이터 가용성 문제에 각각 대응한다. 단계마다 데이터 가용성 문제가 발생하면 플라즈마 사용자는 비상 탈출을 요청할 수 있으며 플라즈마 체인은 이상이 없는 블록을 기준으로 체인을 재구성하는 채굴 작업을 또 한 번 수행하게 된다. 


특히 컨티뉴어스 리베이스는 단일 오퍼레이터로 운영되는 플라즈마에서 오퍼레이터가 문제를 독단적으로 발생시켜도 문제없이 블록을 재마이닝 할 수 있는 특징이 있다. 오퍼레이터가 아닌 다른 사용자가 탈출 블록을 제출할 수 있기 때문이다. 또 컨티뉴어스 리베이스는 오퍼레이터가 응답하지 않는 최악의 경우 플라즈마를 폐쇄하는 셧다운 기능까지도 탑재하고 있다. 


컨티뉴어스 리베이스를 포함한 플라즈마 EVM, 플라즈마 수수료 대행 모델, 플라즈마 토큰 이코노미 모델을 모두 포함하는 플라즈마를 온더의 토카막 네트워크라고 부른다. 토카막이라는 이름은 핵발전소의 플라즈마 제어장치에서 따 왔다. 토카막 네트워크는 현 이더리움과 완전 동일한 기능과 구조를 가진다. 토카막 플라즈마는 이더리움의 현 스펙과 일치하도록 개발돼 이더리움의 개발 도구도 그대로 쓸 수 있는 장점이 있다. 또 토카막 플라즈마는 고이더리움(geth), 패리티 등 기존 클라이언트를 통해 구축할 수 있다.


콘스탄티노플 최신 기술 접목된 리퀘스터블 컨트랙트

플라즈마 EVM에서는 플라즈마 체인에 스마트 컨트랙트를 구동할 수 있기에 토큰이나 여러 컨트랙트도 배포할 수 있다. 즉 자산 등을 다루는 모든 컨트랙트나 암호화폐 거래소의 사실상 표준 규격인 기존 이더리움 ERC-20 토큰을 플라즈마에서도 사용할 수 있는 셈이다. 다만 이를 위해서는 그에 알맞는 변환이 필요하다. 사용자는 리퀘스터블 컨트랙트를 플라즈마와 메인체인 모두에 배포하거나 기존 컨트랙트에 리퀘스터블 컨트랙트를 상속해서 사용할 수 있다. 리퀘스터블 컨트랙트의 코드는 플라즈마 EVM 솔루션에 포함돼 있다.


리퀘스터블 컨트랙트는 토큰이나 기존의 모든 컨트랙트를 토카막 네트워크와 호환될 수 있도록 변환하는 어댑터와 같다. 다만 리퀘스터블 컨트랙트 배포시 플라즈마와 이더리움 메인넷 양쪽의 코드해시는 반드시 동일해야 한다. 리퀘스터블 컨트랙트가 이렇게 올바르게 배포되면 플라즈마와 메인체인의 값을 언제든 동시에 추적할 수 있게 된다. 코드 해시가 같으면 스토리지 레이아웃이 같아 데이터를 스토리지에서 추가, 변경할 때 같은 규칙이 적용돼 값의 추적이 용이해진다. 


한편 콘스탄티노플 하드포크로 업데이트된 크리에이트2 기능을 사용하면 배포될 컨트랙트의 주소를 미리 알 수 있어 이같은 설정을 손쉽게 할 수 있다. 크리에이트2를 사용하면 플라즈마에 배포될 컨트랙트와 이더리움 메인체인에 배포될 컨트랙트의 주소를 미리 동일하게 지정해 배포할 수도 있다. 예를 들어 플라즈마 체인의 제네시스 블록에 리퀘스터블 컨트랙트의 주소값을 미리 포함시키면 개발 절차가 줄어들게 된다. 크리에이트2는 이밖에도 스테이트 채널 등 오프체인 솔루션에서 쓰임새가 특히 많다.


컨티뉴어스 리베이스의 작동 과정

컨티뉴어스 리베이스의 작동은 크게 4가지 단계로 구분된다. 프리커밋(pre-commit), 데이터 가용성 문제 확인(DA check), 커밋(commit), 챌린지(challenge) 등이다. 컨티뉴어스 리베이스는 블록을 재구성하는 과정을 주기적으로 반복하며 지속적으로 실행한다는 의미에서 컨티뉴어스라는 말이 붙었다. 


먼저 1단계인 프리커밋 단계는 사용자들이 이상을 감지하는 경계 기간에 해당하며 이때 오퍼레이터는 트랜잭션을 모두 수집해 부모체인에 기록한다. 2단계인 데이터 가용성 문제 체크 단계는 사용자가 데이터 가용성 문제를 확인하고 탈출요청을 보내는 실제적 행동 단계에 해당한다.


사용자가 탈출을 요청하면 플라즈마로 토큰을 예치했던 거래가 취소되며 토큰은 이더리움 메인 계좌 잔고에 그대로 반환된다. 사용자 중 한명이라도 탈출을 요청하면 플라즈마에는 탈출 블록이 생성된다. 탈출 블록에는 탈출 트랜잭션과 토큰 예치를 취소하는 트랜잭션이 포함된다. 이때 탈출 블록을 요약하는 스테이트 루트, 트랜잭션 루트, 리시트 루트는 부모체인으로 제출된다.


3단계인 커밋 단계부터는 플라즈마의 블록 재구성이 본격적으로 시작된다. 만약 커밋을 진행한 결과값이 다르거나 이스케이프 블록이 잘못된 경우 사용자는 챌린지를 제출해 해당 블록의 완결을 막을 수 있다. 4단계인 챌린지는 연산 결과를 검증하는 절차를 말하며 검증 연산에는 오픈소스 프로젝트인 솔리디티이더리움가상머신(solEVM)이 도구로 사용될 예정이다. 챌린지가 발생하지 않았거나 오퍼레이터가 제출한 챌린지에 문제가 없을 경우 블록은 정상적으로 완결된다. 


컨티뉴어스 리베이스에서는 플라즈마의 트랜잭션 루트가 모든 단계에서 항상 사용된다. 트랜잭션 루트란 트랜잭션을 저장하고 묶어서 해시함수로 압축한 자료형을 말한다. 트랜잭션 루트가 사용되는 이유는 문제가 발생하는 상황에도 플라즈마 체인의 트랜잭션 루트값은 변하지 않는 특성 때문이다. 트랜잭션 루트에 적힌 명령어를 모아 블록 데이터에 적용하면 이전값과 이후값을 계산할 수 있어 블록 재구성에 효과적이다.


한편 데이터 가용성 문제가 발생한다 해도 사용자의 탈출이 필수적이지는 않다. 다만 비상탈출이 꼭 필요한 경우는 프리커밋 상태에서 최초의 데이터 가용성 문제가 발생한 경우다. 데이터 가용성 문제가 플라즈마 체인의 프리커밋 단계에서 최초로 발생하면 네트워크에 알려진 블록 데이터가 사실상 없게 된다. 이 경우 컨티뉴어스 리베이스가 진행돼도 블록 재생성이 제대로 수행됐는지 검증할 방법이 없어 사용자들의 주의가 요구된다. 때문에 사용자들은 재생성이 시작되기 전에 탈출 리퀘스트를 제출해 적극적으로 탈출해야만 한다.


반면 재생성이 처음이 아닐 경우 마지막 재생성 블록을 토대로 재구성된다. 사용자가 원할 경우에는 플라즈마에 남아 거래를 계속할 수도 있다. 한편 플라즈마의 오퍼레이터가 커밋단계에서 비정상적인 블록을 플라즈마 체인에 넣는 공격도 발생할 수 있는데 이때는 챌린지를 통해 블록을 취소하면 된다. 


비탈릭 부테린 “컨티뉴어스 리베이스의 잠금 장치도 필요”

세컨드 레이어 솔루션에서 데이터 가용성 문제는 해결이 결코 쉽지 않은 난제다. 데이터의 내용을 모르면서 해당 데이터를 받지 않았음을 증명하기란 매우 어렵기 때문이다. 많은 경우 데이터 가용성 문제가 실제로 발생했는지, 발생하지 않았는지 판단할 방법도 없는 게 현실이다.


사용자의 탈출 요청은 이같은 데이터 가용성 문제가 발생했을 때 이를 극복하기 위한 비상탈출 장치로 작용한다. 정직한 사용자의 피해를 방지하기 위한 탈출구인 셈이다. 하지만 데이터 가용성 문제를 극복하기 위해 만들어놓은 비상탈출 버튼을 문제가 없을 때도 눌러 트랜잭션을 마음대로 취소할 수 있다는 것은 보완해야 한다. 또 비상탈출로 인해 플라즈마 체인에서 발생한 거래의 즉각적인 완결성을 보장할 수 없는 한계도 존재한다.


사용자의 입장에서도 플라즈마에서 거래를 하려면 이더리움과 플라즈마 풀노드를 동시에 지켜봐야 해 사용이 아직 쉽지 않은 문제도 고려해야 한다. 네트워크 장애나 불의의 사고 등 플라즈마 참여자가 온라인 상태를 항상 유지하기란 현실적으로 어렵기 때문이다. 이같은 플라즈마의 사용자경험(UX)를 개선하기 위해 풀노드가 아닌 라이트 클라이언트에서도 데이터 가용성 문제를 포착할 수 있도록 하는 등 연구가 추가적으로 필요하다.



비탈릭 부테린(사진)은 서울 이더리움 밋업에서 토카막 플라즈마의 설명을 듣고 “대다수 플라즈마 커뮤니티들은 현재 구현된 기능을 구동하는데만 집중하고 있어 플라즈마의 복잡성을 낮추려는 시도는 상당히 드물다”고 호평했다. 이어 “토카막 네트워크의 컨티뉴어스 리베이스 기능을 사용하면 다른 플라즈마 체인에서 일주일이 걸려가며 수행하던 복잡한 엑싯 절차를 줄이고 UX를 단순하게 만들 수 있어 실용적”이라고 말했다. 


다만 부테린은 “즉각적인 완결성이 없고 컨티뉴어스 리베이스의 주기인 24시간 내에서 트랜잭션을 사용자가 마음대로 취소할 수 있다는 것이 단점”이라고 지적했다. 예를 들어 플라즈마로 구현된 탈중앙화거래소(DEX)에서 코인 구매 주문을 한 사용자가 몇시간 뒤에 거래를 일방적으로 취소할 수 있다는 것이다. 플라즈마 블록의 이같은 재구성이 가능한 이유는 검증 사이클 내에서 플라즈마 블록이 아직 완결되지 않은 상태로 오랫동안 존재하기 때문이다.


부테린은 이어 “플라즈마 참여자라면 누구나 제한없이 해당 플라즈마 체인의 리베이스를 강제로 발생시킬 수 있다는 단점이 있기에 예를 들어 특정 오퍼레이터에 의해서만 비상장치를 구동하도록 권한을 부여하거나 리베이스가 필요없는 경우를 설정하는 등 보완이 추가적으로 필요할 것”이라고 조언했다.


정순형 온더 대표는 “트랜잭션을 사용자가 취소할 수 있다는 점이 반드시 문제는 아니다라며 트랜잭션을 취소할 수 있는 기능은 신용카드사가 실행하는 사용자 구제 절차와도 같다”고 말했다. 실제로 카드 사용자가 물건을 구입해도 카드를 분실하거나 오결제가 발생하면 실제 구매여부와 관계없이 취소후 구제 절차를 진행하게 되는데 이 시스템과 유사하다는 것이다. 그는 “중요한 건 취소할 수 있다는 사실 자체가 아니라 거래 당사자의 신뢰 문제와 거래 이후 사용자 구제의 문제에 집중해야 한다는 것”이라고 덧붙였다.


박정원 온더 연구원은 “컨티뉴어스 리베이스의 현 주기인 24시간에서 빠른 확정을 위해 검증 시간을 더 줄일수도 있지만 위험에 취약해질 수 있어 점진적으로 줄여나갈 계획”이라며 “플라즈마 토카막의 최소기능제품(MVP)를 이번달 내로 선보일 것”이라고 말했다.


[강민승 기자]

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