목차
1. 들어가며
2. Move 혼돈의 시대
3. Aptos의 새로운 토큰 모델
3-1. Move의 리소스 모델
3-2. Object 모델로의 전환
3-3. Aptos의 디지털 자산 표준(Digital Asset Standard)
4. 표준 정립의 의의와 앞으로의 방향성
5. 맺으며
1. 들어가며
결국 살아남은 자가 강한 것일까? EVM(Ethereum Virtual Machine) 킬러를 자처하던 대부분은 모습을 감추고, 'Layer 2'라는 키워드와 함께 이더리움 생태계의 독주가 이어지고 있다. 그런 흐름 속에서도 묵묵히 Non-EVM 체인을 개발하고 있는 팀이 있다. 바로 Aptos다. 그들은 왜 수십 년간 발전해온 EVM과 방대한 개발자 커뮤니티를 뒤로하고 다른 길을 선택했을까? 그리고 새로운 언어인 Move를 개발하게 된 이유는 무엇일까? Move는 기존 스마트 컨트랙트 언어의 다음과 같은 문제점들을 지적하며 등장했다:
1. 스마트컨트랙트 언어가 플랫폼 간의 호환을 지원하지 않는다
2. 스마트컨트랙트 언어는 충분히 안전하지 않다
3. 스마트컨트랙트 언어의 실행 레이어가 빠르지 않다
4. 언어 생태계가 성숙하지 않다
5. 개발 및 사용자 경험이 나쁘다
Move는 단순히 프로토콜과의 호환성이나 비즈니스 로직 구현을 넘어 이 같은 문제들에 대한 근본적인 해결을 목표로 설계되었다. 예를 들어, Cairo는 영지식 증명을 효율적으로 처리하기 위해 등장했으며, Solana나 Cosmos는 프로토콜에 적합한 스마트 컨트랙트 플랫폼을 구현하기 위해 Sealevel이나 CosmWasm을 지원하고 있다. 하지만 Move는 프로토콜에 의존적이지 않은 (protocol-agnostic) 방식으로 설계되었으며, 차세대 스마트 컨트랙트 언어를 목표로 등장했다. 기본적으로 대중적인 채택(Mass Adoption)을 염두에 두고 개발되었다. 필자도 이 새로운 언어의 이상에 매료되어 주의 깊게 지켜보고 있다. 그런 가운데 Aptos에서 흥미로운 발표가 있었다는 소식을 전하고자 한다.
본 리포트는 Move의 현황과 Aptos가 설정한 Move의 디지털 자산 표준에 대해 간략히 소개한다. 또한 Aptos가 이런 표준을 세우게 된 배경과 그 의미에 대해 설명하고, 앞으로의 발전 방향에 대해 예측해보고자 한다.
2. Move 혼돈의 시대
Move를 사용하는 대표적인 프로토콜로 Aptos와 Sui가 있다고 알려져 있다. 하지만 사실 이들의 Move는 개별적으로 관리된다. 순정 MoveVM을 각 프로토콜에서 포크하여 커스텀한 형태로 사용하고 있는 것이다. 그 결과 각 체인에서 Move로 컨트랙트를 개발할 때 Move 표준 라이브러리가 다르게 제공되며, 특히 Sui는 전역 저장소(global storage) 개념이 없어 더욱 큰 차이를 보인다. 이로 인해 DApp 개발자들은 Aptos에 있는 Move 컨트랙트를 Sui에 배포하거나 그 반대의 경우에는 컨트랙트를 수정해야 하는 번거로움을 겪고 있으며, 이는 Move 커뮤니티가 분열될 위험을 만들고 있다. Solidity를 뛰어넘는 새로운 스마트 컨트랙트 언어로 자리 잡기 위해서는 이 문제가 반드시 해결되어야 한다.
그런 상황에서 Aptos는 지난 8월 AIP-10, 11을 통해 디지털 자산(Digital Asset)과 대체 가능 자산(Fungible Asset)에 대한 표준을 발표했다. 기존에는 Move를 사용한 코인 발행 방법을 설명할 때 예시 코드가 제공되었지만, '표준'이라는 용어를 사용한 적은 없었다. 이는 개발자들이 새로운 언어의 방향성을 설정하려는 의도로 볼 수 있다.
3. Aptos의 새로운 토큰 모델
3-1. Move의 리소스 모델
Move는 리소스 모델이라는 특별한 방식을 사용한다. 리소스란 블록체인의 특정한 계정에 저장되어있는 최상위 객체를 말한다. EVM과 비교해 볼 때, EVM이 '계정 기반 상태 관리'를 지향하는 반면, Move는 '리소스 기반 상태 관리'를 지향한다. 리소스는 데이터를 단순히 사용하는 것이 아니라, 유저의 계정 내에서 존재하며, 해당 리소스를 소유한 사용자만 값에 대한 변경 권리를 가지게 한다.
EVM과 Move의 방식을 좀 더 쉽게 설명하자면 EVM은 사용자 간의 거래를 장부에서 숫자를 바꿔가면서 잔고를 추적해 나가는 것이라고 한다면 Move는 사용자들이 자신이 갖고 있는 토큰을 직접 전달해 주는 것으로 설명할 수 있다. 아래 그림은 MoveVM과 EVM 상에 어떤 식으로 상태가 저장되는 지를 보여주고 있다.
출처: Certik
리소스는 저장되고 있는 계정의 권한 없이는 복사되거나 삭제되는 것이 불가능하다. 이 소유권과 무결성을 중시하는 특징 때문에 리소스는 코인이나 NFT 같은 중요한 자산들을 표현하는데 사용이 된다. 리소스 모델은 복잡하지만 사용성을 제한하여 컨트랙트 상의 버그로 인해 발생할 수 있는 문제들을 줄이는데 큰 도움을 준다.
3-2. Object 모델로의 전환
Move는 리소스 모델을 사용하는 특징 때문에 설계 자체가 자산을 관리하는 스마트 컨트랙트에 특화되어있다. 하지만 안정성을 보장하는 대신 사용성 측면에서는 안타깝게도 몇 가지 문제들을 가지고 있다.
우선 Move 컨트랙트에서 모든 사용자 정보를 관리하는 것이 어려운 점이 있다. Move에서는 데이터가 사용자의 리소스로 저장되어 전체 데이터를 일괄적으로 관리하는 것이 복잡하다. 예를 들어, NFT를 발행했을 때 해당 NFT를 소유하고 있는 사용자들을 지속적으로 조회하며 추적해야 하는데 어떤 사용자에게 이동했는 지를 아는 것이 쉽지 않다. 또한, Move에서는 입출금과 토큰 발행과 같은 '이벤트'를 데이터 중심이 아닌 계정 기반으로 처리하는 구조를 가지고 있는데, 이로 인해 일부 문제가 발생할 수 있다. 실례로, 지난 9월 24일에 발생한 업비트에서의 Aptos 오입금 사고는 이러한 구조적 문제 때문에 일어났다. 공격자가 임의의 토큰을 생성해 업비트 지갑으로 입금했을 때, 이벤트 발생 주체를 파악하는 과정에서 버그가 발생하여 오입금이 이루어졌던 것이다.