뉴트론은 퀀텀 재단이 중점적으로 개발하고 있는 기술입니다. 해당 기술은 하드웨어적으로 접근했던 초기의 x86 가상기계 방안을 재구성해서 퀀텀 블록체인에 여러 개의 가상기계를 활용할 수 있게 하는 통합 솔루션입니다. 본문은 올해 말 론칭을 위해 개발되고 있는 뉴트론에 대한 설명입니다.
뉴트론 소개
뉴트론은 통일된 Neutron API를 통해 가상기계와 블록체인을 연결하는 인터페이스를 제공합니다. API를 통해 블록체인의 각 모듈들은 새로운 학습 없이도 서로 하나의 공통 언어로 교류를 할 수 있게 됩니다. 뉴트론을 사용하면 그 외에 다른 모듈들은 특수하거나 이상한 상황을 위해 프로그래밍을 할 필요가 없어집니다. 뉴트론이 안전하고 안정적인 앞선 플랫폼을 제공하여 가상기계들을 통합하기에 개발자들은 가상기계의 코드들을 수정할 필요가 없어집니다.
본격적으로 뉴트론에 대해 알아가기 전에 배경지식이 되는 Rust 언어, 미들웨어의 역할, 그리고 스마트 컨트랙트 저장소 대여에 관한 내용을 우선 알아보도록 하겠습니다.
Rust 언어란?
x86 가상기계를 탑재한 뉴트론 플랫폼은 스마트 컨트랙트 프로그래밍에 Rust 언어를 지원할 예정입니다. Rust는 Mozilia가 2006년에 개발한 C++와 유사한 프로그래밍 언어로 메모리 안전성이 높다는 특징을 갖추고 있습니다[1]. 또한 Rust 언어는 통합된 테스팅 플랫폼과 패킷 매니지먼트 등 개발자의 생산성을 크게 향상시키는 현대적인 툴킷들도 탑재하고 있습니다.
Rust는 퀀텀 스마트 컨트랙트 생태계에 우선적으로 적용될 예정입니다. 초기에 x86을 설계하면서 퀀텀 개발자들은 C, Go, Python 등 여러 가지 언어의 지원을 고려했었고 뉴트론도 지원할 예정이지만 우선적으로 Rust를 지원하기로 결정했습니다. Rust를 우선적으로 지원하는 이유는 쉬운 사용성 때문이고 뉴트론과 관련된 모든 설명 문서들도 Rust 기반으로 소개될 예정입니다. 퀀텀 재단은 스마트 컨트랙트 작성을 위한 Rust API를 제공할 예정이고 퀀텀 스마트 컨트랙트 생태계에서 쉬운 자동화 테스트를 위한 'Cargo test'와 스마트 컨트랙트 사용을 위한 'Cargo Run' 등 대부분의 Rust 기능을 지원할 예정입니다. 물론 추후에 다른 언어와 툴킷들을 추가할 예정이지만 초기에는 Rust 위주로 지원할 예정입니다.
Rust를 선택한 이유는 개발 효율성과 안전성이 높기 때문입니다. 가장 기본적인 'Hello World!'의 Rust 코드는 아래와 같습니다.
미들웨어
2018년 즈음에 라디오나 음악 스트리밍을 들으셨다면 Maren Morris가 불렀던 그래미상 후보곡 'The Middle'이란 노래를 들어봤을 것입니다.
Oh baby, why don’t you just meet me in the middle?
I’m losing my mind just a little.
So why don’t you just meet me in the middle?
In the middle...
인간관계에서 중간 역할을 해주는 사람이 중요하듯이 블록체인 소프트웨어에서도 미들웨어의 역할이 중요합니다. 미들웨어는 상급 기능과 트랜잭션, 블록, 네트워크 레이어 등의 하급 프로토콜을 연결하는 중요한 역할을 하고 있습니다. 좋은 미들웨어가 스마트 컨트랙트를 지원하지 않는다면 개발자들은 더 많은 '인지 부담'을 느낄 수밖에 없습니다. 만족스러운 미들웨어는 개발자들이 개발 과정에서 우려하던 일들을 해결해 줍니다.
뉴트론은 앞으로 퀀텀 블록체인 스택의 중간에서 핵심적인 역할을 하게 될 예정입니다.
저장소 대여
뉴욕 브로드웨이 사람들은 뮤지컬 '렌트'를 1994년 버전의 '해밀턴'으로 간주합니다. 타이틀송 코러스에 아래와 같은 가사가 나옵니다.
Headlines, bread lines
Blow my mind
And now this deadline
“Eviction or pay”
Rent
'렌트'와 '해밀튼'은 모두 당대 브로드웨이 뮤지컬에 대한 돌파구 역할을 해줬듯이 '대여(렌트)' 개념은 뉴트론의 돌파구가 되어줄 블록체인 기술입니다.
대여 기반의 저장소는 블록체인의 저장 공간을 절약해 줄 수 있습니다. 현재 퀀텀 EVM은 스마트 컨트랙트의 '상태'를 저장하는 용량이 일반적인 블록체인 거래의 규모를 넘어섰습니다. 이는 이더리움 데이터 총량이 4TB를 초과한 것에 주요 원인이기도 하여 일반 사용자들의 풀노드를 운영에 제한을 줍니다.
뉴트론은 스마트 컨트랙트용 저장 공간을 대여하는 혁신적인 방법을 제공할 예정입니다. 앞서 개발 중이었던 x86 가상기계의 '임의 길이의 키와 값' 방법을 개선한 저장 공간 대여 모델은 현재 설계는 거의 완료된 상황입니다. 다른 대여 시스템과 비교해서 뉴트론의 대여 시스템은 매우 심플한 설계 구조를 갖추고 있고 실행하기도 용이합니다. 블록체인에 합의에 꼭 필요한 데이터만 저장될 수 있는 인센티브 프로그램도 제공하여 활성화된 스마트 컨트랙트 데이터만 온라인에 저장되고 실제 사용자가 자동적으로 대여 비용을 지불하게 할 것입니다.
위에 그림은 활성화된 바이트코드와 데이터만이 블록체인에 남게 되는지를 보여주고 있습니다. 관리 기능을 포함한 토큰 컨트랙트를 예로 들자면 자주 사용되는 토큰 기능은 활성화되고 자주 사용되지 않는 기능들은 관리자가 다시 사용할 때까지 비활성화 상태를 유지합니다. 비활성화된 코드와 데이터가 필요해질 경우, 블록체인은 '아카이브' 노드에서 해당 데이터를 불러오고 일부 비용을 지불해서 활성화 상태로 전환시키게 됩니다. 컨트랙트 입장에서 이러한 디자인은 '블랙박스'와 같아서 많은 저장 공간을 절약하면서도 개발자에게 추가적인 부담을 주지 않는 이점이 있습니다.
대여 기능을 결합한 뉴트론 데이터베이스를 아래와 같은 장점을 제공합니다.
- 퀀텀 풀노드의 저장 용량을 줄여줍니다.
- 블록체인 풀노드 저장 공간의 증가 속도를 줄여줍니다.
- 사용자들이 스마트 컨트랙트 데이터를 효율적으로 컨트롤할 수 있게 됩니다. 사용자가 천 개의 계좌 상태를 저장하고 있는 ERC20와 같은 스마트 컨트랙트에서 본인 계좌 잔액을 확인해야 할 경우 다른 999개의 계좌가 아닌 본인 계좌에 대한 대여 비용만 지불하면 접근이 가능해집니다.
- 뉴트론 스마트 컨트랙트에선 임의 길이의 키와 값이 가능해져서 스마트 컨트랙트 로직 디자인을 크게 간소화시키고 EVM 스마트 컨트랙트에서 발생했던 잠재적인 버그와 보안 문제도 감소시킬 예정입니다. 또한 컴파일러가 아닌 스토리지 레이아웃을 컨트롤함으로 스마트 컨트랙트의 업그레이드도 매우 쉬워질 예정입니다.
- 일부 (사용하지 않는) 상태가 블록체인에서 삭제되어도 스마트 컨트랙트는 계속해서 실행될 수 있게 됩니다.
- 대용량의 상태 데이터를 조금씩 복원할 수 있게 됩니다. 이는 대용량 컨트랙트 복원이 블록 가스 리밋을 초과하는 이슈나 대용량 트랜잭션을 블록에 포함시키도록 스테이커를 설득하는 어려움도 예방할 수 있습니다.
- 스마트 컨트랙트 상태에 사용되는 SPV 증명 또한 간소화되고 작아질 예정입니다. (이는 스마트폰으로 스마트 컨트랙트 상태를 조회하는데 더 적은 대역폭을 사용한다는 뜻입니다.)
뉴트론의 역할
통상적으로 뉴트론 미들웨어의 역할은 상하 레이어가 별다른 변경 없이 적합하게 맞춰지게 하는 것으로 해당 레이어들이 스택의 변화를 인지하지 못하게 하는 것입니다. 뉴트론 미들웨어 상하의 레이어들은 서로 디커플링 되거나 심지어 자세한 정보를 숨겨서 뉴트론이 중립적인 중재자 역할을 할 수 있도록 해야 합니다.
그럼 뉴트론이 어떻게 상위 레이어 인터페이스와 하위 레이어 프로토콜들을 관리하는지 알아보도록 하겠습니다.
뉴트론 - 상위 레이어 관리
더 나은 개발자 경험
뉴트론 x86 가상기계 스마트 컨트랙트는 Rust 코드와 보다 전통적인 프로그래밍 패러다임을 적용할 예정입니다. 이로 인해 개발자들은 특별한 기술을 배우거나 성숙하지 못한 위험한 프로그래밍 언어(네, 솔리디티 언어를 지칭하는 것입니다)를 사용하지 않고도 쉽게 퀀텀 생태계에 진입할 수 있게 됩니다. Rust는 보안성을 중시하고 개발자의 실수를 엄격하게 통제합니다. Rust의 패러다임은 개발자들을 엄격하게 몰아붙여서 '메모리의 오너 지정'과 같은 콘셉트를 사전에 명확하게 처리하도록 요구합니다. 그래서 Rust는 작성하기 까다로운 언어로 간주되지만 컴파일러를 만족시키기만 한다면 매우 정확하고 버그가 없다는 특징이 있습니다.
안전제일
뉴트론은 EVM이 갖고 있는 무서운 보안 이슈를 해결하기 위해 보안에 집중된 내장 기능들을 갖추고 있어 보안성이 떨어지는 스마트 컨트랙트 작성을 어렵게 하는 동시에 컨트랙트 보안성을 높여주는 개발 툴킷을 제공합니다.
업그레이드가 가능한 스마트 컨트랙트
뉴트론은 여러 안전 이슈를 야기하는 복잡한 '프록시 패턴' 없이 쉽게 스마트 컨트랙트 업그레이드를 관리할 수 있게 도와줄 예정입니다. 이는 소프트웨어를 쉽게 업데이트하거나 버그를 수정할 수 있는 개념으로 스마트 컨트랙트의 바이트코드를 전부 또는 부분적으로 업그레이드할 수 있고 탈중앙화된 거버넌스를 통해 업그레이드를 완성할 수 있게 됩니다.
컨트랙트 외적인 내용에 대한 업그레이드를 위해 이더리움과 퀀텀에서 현재 사용되고 있는 가스 메커니즘을 수정하여 컨트랙트가 하드포크 또는 라이브러리 컨트랙트 업그레이드와 같이 직접 컨트롤할 수 없는 생태계 변화에 적응할 수 있도록 도울 예정입니다. 이 부분에 대해서는 추후에 더 자세한 정보를 공개할 예정입니다.
재진입성 수정
뉴트론은 간단하고 직접적인 해결방안을 통해 재진입성 문제를 수정할 예정입니다. 이를 통해 명확하게 승인을 받은 컨트랙트만이 재진입이 가능해집니다. 현재의 EVM은 재진입성을 제한하는 기능이 없어 (컨트랙트가 실행 과정에서 해당 컨트랙트 자신을 콜 할 수가 있습니다) 예기치 못한 결과들을 야기하곤 합니다. 이 부분은 DAO 또는 다른 많은 불행한 EVM 스마트 컨트랙트의 사례들이 증명하고 있습니다[2]. 뉴트론에서는 재진입을 금지시키거나 재진입에 돌입한 상황을 감지하여 실행을 중지시키는 기능을 포함할 예정입니다.
세그윗과 멀티시그 주소
현재의 EVM에서 스마트 컨트랙트들은 퀀텀 레거시 주소(Q로 시작하는 주소)만 사용할 수 있습니다. 뉴트론에서는 스마트 컨트랙트들이 세그윗, 멀티시그(M 또는 qc1 등으로 시작하는 주소) 등을 포함한 모든 종류의 퀀텀 주소를 활용할 수 있게 됩니다. 해당 기능을 통해 스마트 컨트랙트는 멀티시그 주소와 상호작용할 수 있게 되어 멀티시그 주소를 스마트 컨트랙트 콜의 '보내는 사람'으로 인식하고 직접 코인을 해당 주소로 송부할 수 있게 됩니다.
API
뉴트론 API를 통해 개발자들은 쉽게 기본 인프라에 새로운 가상기계들을 추가할 수 있게 됩니다. 예를 들어 WASM도 앞으로 추가될 예정입니다. 그러면 컨트랙트 실행 전에 소스코드를 WASM과 x86에 맞춰 컴파일해볼 수 있게 되어 미리 바이트코드 사이즈, 실행 비용 등을 확인한 후에 실행할 플랫폼을 결정할 수 있게 됩니다. 또한 DeFi나 확장형 애플리케이션에 대한 최적화와 안전성이 보장된 검증 가능하고 전문적인 튜링 불완전 가상기계들도 쉽게 추가할 수 있게 될 예정입니다.
뉴트론 API와 관련된 더 많은 정보는 아래 링크에서 확인 가능합니다.
https://github.com/qtumproject/neutron-star
NeutronDB
뉴트론은 스마트 컨트랙트 저장 공간으로 NeutronDB로 불리는 새로운 데이터베이스를 제공합니다. NeutronDB는 기존의 퀀텀이 설계한 DeltaDB를 기반으로 하고 있습니다. DeltaDB는 온/오프라인 애플리케이션을 위한 설계로 데이터를 빠르고 확장성 있게 저장할 수 있습니다. 퀀텀에서 EVM 저장소의 '상태'는 LevelDB이고 Merkle Patricia 트리를 통해 모든 '상태'를 하나의 트리에 저장하고 있습니다. NeutronDB는 멀티 트리를 통해 이를 대체하고 최종적인 '세계 상태'를 구축할 예정입니다. 이로 인해 SPV 라이트 지갑의 스마트 컨트랙트 운영은 더 효율적으로 변할 것이고 풀노드 운영에 소요되는 자원도 더 적어질 것입니다.
뉴트론 - 하위 레이어 관리
뉴트론은 UTXO 상태 시스템을 통해 토큰, NFT 또는 기타 '일회성' 상태를 UTXO 형식으로 블록체인에 표시할 예정입니다. 이를 통해 QRC20와 같은 토큰들은 더 많은 애플리케이션에서 기용할 수 있게 되고 라이트닝 네트워크 또는 기타 Layer2 확장성 툴에서도 사용할 수 있게 됩니다. 이 시스템을 통해 풀노드가 트래킹 하는 상태를 줄일 수 있고 토큰 컨트랙트의 개발 방식 또한 개혁할 수 있게 됩니다.
뉴트론은 퀀텀의 UTXO 모델을 스마트 컨트랙트에 공개하여 간단한 에스크로 스마트 컨트랙트의 거래 여부를 공지할 수 있게 됩니다. 이를 통해 컨트랙트는 체크포인트 만족 여부를 확인하여 진행 중인 거래에 대해 담보 청산과 같은 반응을 즉각적으로 할 수 있게 됩니다. 해당 기능은 UTXO 또는 퀀텀 기능을 사용하는 모든 블록체인에 공개될 예정입니다. (100QTUM을 비계약 주소로 송금하면 1,000TKN을 담보 해제한다는 DEX 스왑 컨트랙트를 예로 들면, EVM에서는 컨트랙트로 송금 후 비거래 주소로 보내는 과정이 필요하여 최소 2-3번의 거래를 진행해야 합니다. 뉴트론에서는 스마트 컨트랙트가 해당 자금을 소유할 필요 없이 한 번의 거래로 컨트랙트가 완료될 수 있습니다.)