이더리움 가상머신(EVM) 2.0: 이더리움의 심장이 교체된다

등록 : 2018년 10월 2일 10:32 | 수정 : 2018년 10월 2일 10:33

이미지=getty images bank

 

이더리움의 심장부에는 가상 컴퓨터가 있다. 바로 이더리움 가상머신, 즉 EVM(Ethereum Virtual Machine)이다. EVM은 플랫폼을 이루는 수만 개의 노드에 저장되어 있으며, 이더리움을 구성하는 수많은 토큰과 분산 애플리케이션 댑(dapp), 탈중앙화 자율조직 DAO, 크립토키티의 실행을 책임진다.

EVM은 이더리움 전체를 작동하는 엔진으로 “EVM 바이트코드(bytecode)”라는 언어를 사용한다. EVM 바이트코드는 (플랫폼이 스스로 부과하는 한계인 가스의 범위 내에서) 조합 가능한 모든 계산을 수행할 수 있는 256비트의 원시 문자열 정보로 구성된다.

대단히 효과적이고 중요한 것처럼 들리는가? 함부로 다루면 큰일 날 것 같지 않은가?

그런데 이더리움의 핵심이라 할 수 있는 이더리움 가상머신이 곧 전면 개정될 예정이다. 이더리움 개발자 레인 레티그는 코인데스크와의 인터뷰에서 이렇게 말했다.

“EVM은 처음부터 설계를 크게 고려해서 개발된 것이 아니라는 점을 강조하고 싶습니다. EVM은 그냥 툴이었습니다. 말하자면 스위스 아미 나이프 같은 거죠. 이것저것 할 수 있는 건 많지만 아주 정밀하지는 않아요.”

현재의 EVM을 eWASM이라는 이름의 새로운 가상머신으로 교체하려는 이유가 바로 여기에 있다. eWASM은 WASM 코드의 이더리움 버전이다. WASM은 웹어셈블리(WebAssembly)의 약자로, 웹의 유지와 표준화를 담당하는 개발자 집단인 월드와이드웹 컨소시엄(W3C)이 개발했다.

“EVM과 비교하면, WASM은 고액 연봉을 받는 굉장히 숙련된 기술자들이 수천 시간을 쏟아부어 개발한 것”이라고 레티그는 말했다. 레티그도 eWASM 개발에 참여 중이다.

eWASM을 사용하면 개발자들은 이더리움 전용 언어인 솔리디티(Solidity) 외에도 여러 종류의 프로그래밍 언어로 코딩할 수 있게 되며, 성능 향상도 기대할 수 있다. 또 EOS, 트론, 카르다노 등 이더리움의 경쟁 화폐 일부가 이미 WASM 코드를 사용하여 프로젝트별 가상머신을 도입하였거나 혹은 도입할 계획이라는 사실은 이더리움의 결정을 더욱 부추기고 있다.

이더리움은 수년 안에 “샤스퍼(Shasper)”라 불리는 몇 가지 업데이트와 개선 작업을 동시에 진행할 계획이다. 샤스퍼는 확장성 해결 방안인 샤딩(Sharding)과 지분증명 채굴방식을 도입하는 캐스퍼(Casper)를 합친 신조어다. 정확히 언제 샤스퍼를 시행할지 아직 결정되지 않았지만, eWASM 개발은 빠른 진전을 보이고 있으며, 10월에 프라하에서 열리는 이더리움 개발자 콘퍼런스인 데브콘 4에서 테스트넷을 출시하기 위해 박차를 가하고 있다.

기존 머신을 대체하는 이번 결정을 레티그는 이렇게 비유했다.

“이더리움이 대충 못질해서 농장 안에서 타고 다니던 투박한 달구지였다면, 이제는 고속도로를 쌩쌩 달리고 지붕도 열리는 스포츠카로 변신하는 단계에 온 것입니다.”

 

‘혹투성이’ EVM

EVM은 최초로 공격을 예방하는 기능을 갖춘 분산형 컴퓨팅 솔루션을 제공한다는 측면에서 혁신적인 기술이다. 그러나 그렇다고 결코 흠이 없는 것은 아니다. 이러한 자각이 eWASM으로 전환하는 계기가 되었다.

예를 들어 댑 개발자 대부분은 이더리움의 솔리디티로 프로그램을 작성한다. 솔리디티는 EVM 바이트코드로 호환 가능하며 자동으로 EVM 코드로 적용되는 높은 수준의 프로그래밍 언어이다.

레티그의 설명에 따르면, EVM은 “대단히 광범위한 명령어”를 사용하기 때문에 간단한 연산과 같은 사소한 작업을 할 때도 복잡한 256비트 문자열로 변환하는 번거로운 과정을 거쳐야 한다. 이렇게 불필요하게 시스템 코드에 포함된 작업이 더 많은데, 잘 알려진 해시 함수 SHA-3도 그중 하나다. 레티그는 EVM을 이런 이유로 “혹투성이”라고 묘사한다.

이더리움의 핵심 개발자인 닉 존슨도 이에 동의하며, 자신도 이더리움에 처음 합류했을 때 EVM 개발자들이 컴퓨터 공학에는 능통했을지언정 편리하게 사용할 수 있는 제품을 개발하는 데 필요한 경험과 통찰이 부족했음을 바로 알아보았다고 말했다.

존슨은 도구로서의 EVM이 “상용화보다 순수 이론에 적합”하다고 강조했다.

“EVM의 레지스터는 거대하지만 모두 일치하고, 또 내부적 일관성을 유지하고 있습니다. 하지만 현실 세계에서 구현할 목적으로 개발된 것은 아니에요.”

 

‘하드웨어에 더 가깝게’

반면에 WASM 코드는 처음부터 대량 생산을 염두에 두고 개발됐다. 우선 WASM은 하드웨어에 더 가깝다. 다시 말해 WASM의 코드는 실제 하드웨어 명령어와 유사하며, 서로 다른 코딩 로직을 번역하는 단계를 거치지 않아도 된다.

“WASM 명령어는 실제 하드웨어 명령어를 굉장히 정교하게 모방하고 있습니다. WASM 명령어와 실제 장치 운영 명령어를 일대일로 대응시킬 수도 있습니다. 그래서 적어도 이론상으로는 굉장한 성능 개선을 기대할 수 있습니다.”

레티그의 설명이다.

개발자들은 다양한 언어를 사용하여 이더리움을 개발할 수 있게 된다. 보안에 특히 뛰어난 언어를 포함하여 무엇이든 자신에게 가장 편한 언어로 작업할 수 있는 것이다.

레티그는 eWASM의 가장 큰 장점으로 “프리컴파일(precompile)”이라는 과정이 잠재적으로 없어지리라는 점을 꼽았다. 일부 개발자들은 “eWASM으로 전환하는 핵심 동기”가 프리컴파일 과정을 제거할 수 있어서라고 말할 정도다.

EVM은 길고 복잡한 코드로 구성되기 때문에 일부 연산은 시스템 안에 포함되어야 한다. 그렇지 않으면 연산이 가스 비용을 초과하는 상황이 발생하게 된다. 이러한 연산을 네트워크상에서 계속 사용할 수 있게 해 주는 것이 프리컴파일인데, 이는 전체 시스템 업그레이드, 즉 하드포크를 해야만 가능한 일이다. 하지만 익히 알려진 바와 같이 하드포크의 실행은 복잡하고 위험하다. 그러나 eWASM을 사용하면 하드포크를 하지 않아도 스마트계약으로 연산을 간단히 작성할 수 있다고 개발자들은 주장한다.

“eWASM을 사용하면 대부분 프리컴파일 작업은 필요치 않게 되고, eWASM 계약만으로 교체될 수 있기 때문에 연산 효율성이 높아집니다.”

 

실의에 빠지다

그러나 탈중앙화 생태계에 근본적 변화를 도입하려는 시도에는 언제나 비판의 목소리도 따른다. EVM 폐기 또한 마찬가지다.

일례로 수년간 EVM 유지관리를 담당해 온 이더리움 핵심 개발자 그렉 콜빈은 기존 코드를 포기하는 것이 전혀 달갑지 않다. 콜빈은 EVM 코드를 보완하는 새로운 버전 EVM 1.5를 직접 개발해 왔는데, 이 EVM 1.5는 원래 이더리움 가상머신의 미래가 될 예정이었다. 하지만 아무런 예고도 없이 비영리단체인 이더리움 재단은 지원 금액을 삭감했다.

“화가 났죠.”

콜빈의 말이다. 콜빈은 이더리움의 기술 진보를 목적으로 하는 토의 그룹 이더리움 마법사 위원회(Council of Ethereum Magician)의 출범을 도운 바 있다.

“좀 기다려 보라고 하더니, 근무 시간을 35시간에서 20시간으로 줄이고, 그것도 모자라서 시간당 8.4달러씩 주던 것도 안 주겠다는 거예요. 그러니까 이걸 왜 하고 있나 싶고. 그러고 나니 자원봉사를 하고 있을 수만은 없는 거죠.”

하지만 콜빈이 eWASM에 반대하는 이유는 단순히 자존심 때문만이 아니다. 콜빈은 eWASM에도 기술적 문제가 존재한다고 주장한다. 예를 들어 다양한 언어 지원을 허용하는 특성 때문에 eWASM의 코드는 “컴파일러”에 크게 의존하는데, 콜빈은 이것이 공격을 받을 때 단일 장애 요소가 될 수 있다고 지적한다. 또한, 콜빈은 eWASM 스마트계약으로 프리컴파일이 사라진다는 전망도 허점이 있다고 꼬집었다.

설계 측면에 관한 콜빈의 비판에는 레티그도 일부 동의했다. 두 개발자는 어떤 이유에서인지 더 비효율적인 기술이 보통 성공한다고 입을 모은다. 자바스크립트가 대표적 예이다. 자바스크립트는 가장 널리 사용되는 프로그래밍 언어 중 하나지만, 동시에 형편없는 언어로도 알려져 있다.

“기술 및 컴퓨터 공학 분야에서는 가장 멋지게 만들어진 것들이 1등을 차지하지 못할 뿐만 아니라 오히려 부진한 성적을 내는 경향이 있는 것 같아요.”

콜빈은 또한, WASM의 이면에서 투입되는 모든 개발작업을 고려할 때 WASM 코드가 미개척 분야에서는 아직 제대로 검증되지 않았다는 사실 역시 간과할 수 없다고 지적했다.

“우리가 왜 새로운 실험의 얼리 어댑터가 되려는 건지 모르겠어요. 우리는 이미 우리 자신이 만든 실험의 얼리 어댑터인데 말이죠.”

 

불확실성

여러 논란에도 많은 이더리움 개발자 사이에서 eWASM은 점점 힘을 얻고 있다. 개발자들은 11월로 예정된 이더리움 개발자 회의 데브콘4에 앞서 eWASM을 테스트넷으로 출시할 계획이다.

하지만 그렇다고 새로운 가상머신을 곧 만날 수 있는 것은 아니다. EVM을 대체하기에 앞서 eWASM은 먼저 하나의 샤드 또는 사이드체인에 적용될 예정이고, eWASM 공개는 샤스퍼(Shasper) 업그레이드와 연동해 진행될 것이다. 공개 시기는 개발자들이 전환에 대비한 마지막 보강 작업을 한 후에야 정할 수 있을 것으로 보인다. 이 작업이 시간이 얼마나 걸릴지는 지금으로서는 예측하기 어렵다.

사실 이런 종류의 코드 업그레이드를 둘러싼 불확실성은 언제나 플랫폼을 기반으로 하는 이더리움 개발자들 사이에서 혼란의 근원이 되어 왔다. 레티그는 말했다.

“새로운 클라이언트를 만드는 작업에는 많은 혼란이 따릅니다. eWASM을 개발해야 할까, EVM을 개발해야 할까, 둘 다 개발해야 할까, 아니면 완전히 다른 것을 개발해야 할까 하고 말이죠.”

콜빈이 크게 불만을 느꼈던 이유도 이 불확실성 때문이었다. 현재의 EVM은 성능 문제가 있기는 하지만 쉽게 문제를 개선할 수 있는데, 갑자기 로드맵에서 지워졌기 때문이다.

“실망스럽죠. eWASM도 물론 실현 가능성이 있지만, EVM 1.5는 기댈 곳이 없는데도 가능성은 더 크거든요. 지금도 가능성은 충분해요. 하지만 우선순위에서 완전히 밀려났고, 저는 1년을 허비한 셈이죠.”

 

많을수록 좋다?

하지만, 레티그와 콜빈 둘 다 이러한 불확실성이 중심 리더가 없는 오픈소스 프로젝트에 도움이 됨을 인정한다. 콜빈은 이렇게 말했다.

“커뮤니티가 굉장히 중요해요. 일반 회사였으면 저는 진작 떠났을 거예요.”

또한, 레티그는 이더리움 발전과 관련된 문제에서 시간 낭비란 존재하지 않는다고 선을 그었다. 이더리움을 더 작고 관리하기 쉬운 조각으로 나누는 기술인 샤딩 업그레이드의 특성을 고려하면 결국 여러 대의 가상머신이 이더리움에 구현되리라는 것이다.

“바뀐 이더리움에는 단일 이더리움, 단일 로드맵, 단일 권한 같은 것은 존재하지 않을 겁니다. 이더리움은 커뮤니티이자 기술 가족입니다. 하나의 체인이 모든 것을 지배하는 미래는 오지 않을 겁니다.”

이와 동시에 eWASM은 여러 네트워크에서 동시에 쓸 수 있는 상호운용성의 새 장을 열 것이다. 한가지 예를 들자면 eWASM은 월드와이드웹에 최적화된 언어로 작성될 것이며, 따라서 일반 고객에게 브라우저 내장 지원을 추가하는 일 정도는 순식간에 가능할 것이다.

eWASM은 또 블록체인 간에 아직 구현된 적 없는 상호운용성을 발전시키는 첫걸음이 될 수도 있다. 레티그는 eWASM의 가능성을 이렇게 정리했다.

“이쪽에서는 2차 샤딩이 적용되고, 또 이쪽에서는 플라즈마, 그리고 일부 겹치는 구간도 가능할 수 있겠죠. 코스모스와 폴카도트를 통해서 비트코인과 소통 중인 이더리움 체인에 디피니티가 연결해올 수도 있고요. 다만 아직 확실한 것은 없습니다. 그러니 그게 무엇이건 표준화 로드맵이라는 것에 얽매이지 않아도 됩니다.”

번역: 뉴스페퍼민트

This story originally appeared on CoinDesk, the global leader in blockchain news and publisher of the Bitcoin Price Index. view BPI.