목차
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 오입금 사고는 이러한 구조적 문제 때문에 일어났다. 공격자가 임의의 토큰을 생성해 업비트 지갑으로 입금했을 때, 이벤트 발생 주체를 파악하는 과정에서 버그가 발생하여 오입금이 이루어졌던 것이다.
출처: 트위터(@Definalist)
리소스를 재귀적으로 구성하는 데에 어려움과 비효율적인 리소스 관리의 문제점이 Move 언어에서 지적되었다. 이러한 문제를 해결하기 위해, Aptos는 AIP-10을 통해 'Move Objects'를 제안했다. 이 새로운 접근 방식은 기존에 단일 계정에만 저장되던 리소스의 한계를 넘어서, 전역적 접근이 가능한 데이터 모델을 가능하게 했다. 기존의 리소스 모델에서는 새 리소스를 생성하거나 저장할 때 해당 계정의 서명이 반드시 필요했다. 그러나 Object 모델에서는 서명을 필요로 하지 않고 계정 주소만으로 이를 대체할 수 있게 되었다. 이는 Aptos가 AIP-10을 채택함으로써 리소스 운용과 소유권 관리를 더욱 효율적으로 할 수 있는 새로운 기능들을 제공하게 됨을 의미한다. 다음은 Object 모델이 가져오는 변화들이다:
1. 데이터의 접근성: 항상 접근이 가능하지 않음 → 참조자(reference)를 이용한 접근성 보장
2. 데이터의 타입: any 타입을 이용한 제너릭 타입핑 → 명시적인 Object 저장소 주소 활용
3. 데이터의 확장성: 모듈별 제한적 API 활용 → 모듈에 상관없이 전역 접근 가능
4. 데이터의 효율성 : 리소스 로딩 시 오버헤드 발생 → 개별 리소스 로딩 불필요
기존 Aptos의 리소스 기반 데이터 모델은 Move 내의 저장 능력을 강조하였다. 저장소는 체인 상에 저장되는 어떠한 값이든 담을 수 있게 해준다는 점에서 유연성을 가지지만 위와 같은 명확한 단점을 가지고 있었고 Object 모델로의 전환을 통해 일부 해소하는 것이 가능해졌다. Object 모델에 대한 스펙은 커뮤니티에서 활발하게 논의되고 있는 상태로 새로운 기능이 추가 될 수 있도록 유연하게 구현되어 있다. 이어 Aptos는 Object 모델로의 전환을 성공적으로 마치고 Move 스마트 컨트랙트를 활용한 새로운 디지털 자산 표준을 만들기 위한 제안을 내었다.
3-3. Aptos의 디지털 자산 표준(Digital Asset Standard)
Aptos는 디지털 자산을 크게 Fungible Asset(이하 FA)과 Non-Fungible Digital Asset(이하 DA) 두 가지로 나누어 설명한다. 이는 AIP-11을 통해 제공되며 Object를 이용하여 자산을 표현하게 된다.
우선 FA의 경우에는 일반적인 대체 가능한 토큰이 제공하는 기능들을 포함하고 있으며 Move의 리소스를 Object 내에 포함시키는 형태로 구현된다. FA와 관련된 Object 타입은 아래 두 가지가 있다.
Object<Metadata>
: FA의 이름, 심볼, 단위 등을 포함한 메타데이터 정보를 가진 ObjectObject<FungibleStore>
: FA를 보관하는 저장소 정보를 가진 Object
출처: aptos
그림은 FA가 어떻게 Object들 간의 관계를 시각화하는 지를 보여준다. 예를 들어, Alice가 USDC 토큰 정보를 사용해 메타데이터를 생성하면, 이 정보를 바탕으로 자신이 소유한 다양한 토큰을 저장하는 FungibleStore를 만들 수 있음을 나타낸다. FA는 리소스 모델을 사용하여 제너릭 타입을 활용해 코인을 구별하는 대신, 메타데이터를 활용해 더 일반적인 방식으로 코인을 식별하도록 개선했다. 각 FungibleStore는 메타데이터 정보를 보유하고 있어, 같은 종류의 코인을 담고 있을 경우 FA를 쉽게 합치거나 나누거나 전송할 수 있도록 설계되었다. FA가 ERC-20이라면 DA는 ERC-721과 ERC-1155에 정의된 특성들을 포함하고 있다. 여기에는 NFT의 이름, 설명, URI, 공급량 등이 포함된다. EVM 기반 체인의 NFT 자산을 Aptos로 이전하는 과정에서 이더리움 NFT와의 인터페이스 호환성을 추구하는 점을 볼 수 있다.
Object를 사용하기 전보다 NFT 관리 방식을 더 유연하게 커스터마이징할 수 있도록 개선하고, 다른 NFT와 결합해 새로운 형태로 구성될 수 있도록 하는 결합성, 그리고 뛰어난 확장성을 가질 수 있도록 설계된 병렬성과 같은 아이디어들이 제안되었다. 토큰의 라이프 사이클 동안 필요한 다양한 인터페이스를 기본적으로 제공함으로써, 어플리케이션 개발에 있어 노코드 솔루션을 지원하고 있다. 예를 들어, NFT 컬렉션을 생성하기 위한 인터페이스는 다음과 같이 설계될 수 있다.
public entry fun create_collection(creator: &signer) {
let collection_constructor_ref = &collection::create_unlimited_collection(
creator,
"My Collection Description",
"My Collection",
royalty,
"https://mycollection.com",
);
let mutator_ref = collection::get_mutator_ref(collection_constructor_ref);
// Store the mutator ref somewhere safe
}
컬렉션을 생성할 때 MutatorRef
를 활용하면, NFT 정보를 안전하게 변경할 수 있는 권한이 있는 상태에서만 값을 변경할 수 있다. 이는 리소스 모델에서 소유자만이 리소스 값을 변경할 수 있었던 제한을 넘어, Object 모델에서는 적절한 참조자(reference)를 통해 계약 상에서 권한이 부여되면 누구나 유연하게 값을 변경할 수 있게 한 점이 특징이다. Aptos 디지털 자산 표준의 등장으로 Move 언어의 활용성은 크게 향상되었다.
4. 표준 정립의 의의와 앞으로의 방향성
아이러니하게도 Non EVM 체인들은 첫 번째 큰 숙제는 EVM과의 호환성을 갖추는 것이다. 특히, 현재 스마트 컨트랙트 기반의 자산 대부분이 ERC-20을 기반으로 하고 있기 때문에, 이러한 호환성은 Non-EVM 체인이 활성화되기 위해 필수적이다. 이를 위해 CosmWasm의 CW-20이나 Move의 디지털 자산 표준이 개발되었다. 또 다른 문제는 EVM에 비해 상대적으로 작은 커뮤니티의 크기이다. 새로운 컨트랙트 언어와 내부 동작을 이해하고 새로운 Dapp을 개발하는 것은 경험이 많은 개발자에게도 도전적인 일이며, 언어나 플랫폼의 인기에 따라 개발자들의 노력이 무의미해질 수 있다. 이러한 이유로 많은 EVM 킬러 서비스들이 시장에서 살아남지 못하면 주목 받지 못하는 이유이다.
그렇기에 Aptos의 이런 Move에 대한 표준 정립은 단순히 커뮤니티를 확장하는 것 이상으로 생존을 위해 필수적으로 선행이 되어야 한다. Aptos가 디지털 자산을 위한 컨트랙트 표준을 만드는 것은 새로운 언어(Move)의 과도한 복잡성을 줄이고 학습 비용을 줄여 개발자들의 진입 장벽 낮추기 위한 작업이기도 하다. 동시에 Move가 제공하고자 하는 ‘안전한 스마트컨트랙트’라는 철학을 잊지 않는 것이 숙제일 것이다. 현재 Move 커뮤니티는 Aptos가 가장 선두에서 이끄는 만큼 앞으로의 횡보가 더욱 기대된다.
5.맺으며
필자는 특이하게도 CosmWasm과 Move와 같은 Non-EVM 진영에서 지속적인 개발을 진행해 왔다. 경험에 비추어 볼 때 Non-EVM 진영은 매번의 업데이트마다 브레이킹 체인지(breaking changes)가 있을 만큼 빠르게 변화를 하고 있다. 이런 상황은 개발자로 하여금 지속적인 학습과 빠른 적응을 요구하며, 변화하는 트렌드를 따라잡는 일은 개발자 스스로의 책임이다. 간혹 상대적으로 안정적이고 주류를 이끌어가고 있는 EVM 진영이 부러울 때도 있지만, Web3의 대중적 수용을 위한 안전하고 효율적인 스마트 컨트랙트 개발이라는 측면에서 EVM의 한계는 분명하다고 볼 수 있다.
최근 비트코인 가격 상승에 힘입어 Solana의 강세도 두드러지고 있다. 현재 Solana는 Non-EVM 생태계 중 가장 발전된 모습을 보여주고 있으며, 이제는 안정기에 접어들었다고 볼 수 있다. Move 생태계는 초기 Solana가 그러했듯 형성 단계에 있으며, Move의 표준이 점차 자리 잡아가고 있다. 이는 초기 Move 생태계에 참여하기에 적절한 시기로, 다음과 같은 분들에게 Move를 배워볼 것을 권장한다:
초기 Move 커뮤니티에 기여하고 싶은 사람
Non-EVM 진영에서 개발을 진행하고자 하는 사람
안전하고 효율적인 스마트 컨트랙트를 통해 web3의 대중적인 사용을 이끌고자 하는 사람
프로그래밍 언어 역시 상황에 따라 다른 수 백 가지가 있는 만큼 스마트 컨트랙트 역시 상황 별에 맞는 새로운 언어로 개발되어야 한다고 믿고 있다. Move가 Solidity를 꺾고 새로운 강자가 될 수 있을 지를 지켜봐주길 바란다.