코인 용어 · 조회 5

Move 언어

Move 언어는 블록체인에서 디지털 자산을 안전하게 표현하고 실행하기 위해 만들어진 스마트 컨트랙트 언어이다. 수이에서는 Sui Move라는 형태로 사용되며, 객체 중심 데이터 모델을 통해 NFT, 게임 아이템, 토큰, DeFi 포지션 같은 온체인 자산을 객체 단위로 관리한다.

1. 개요

Move 언어는 블록체인에서 스마트 컨트랙트를 작성하기 위해 만들어진 프로그래밍 언어이다.

Move는 특히 디지털 자산을 안전하게 표현하는 데 초점을 맞춘다.

일반적인 프로그래밍 언어에서는 숫자나 객체를 복사하거나 삭제하는 것이 자유로운 경우가 많다.

하지만 블록체인에서 토큰, NFT, 게임 아이템, 담보 포지션 같은 자산이 마음대로 복사되거나 사라지면 심각한 문제가 발생한다.

Move는 이러한 문제를 줄이기 위해 자산을 일반 데이터가 아니라 특별한 리소스로 다룬다.

즉 Move에서는 어떤 값이 복사될 수 있는지, 버려질 수 있는지, 저장될 수 있는지, 온체인 저장소의 핵심 자산이 될 수 있는지를 언어 차원에서 제한한다.

이러한 구조는 블록체인 스마트 컨트랙트에서 자산 안전성을 높이는 데 도움이 된다.

Move는 처음 Meta의 Libra, 이후 Diem 프로젝트에서 개발되었다.

Diem은 글로벌 결제 네트워크를 목표로 했던 프로젝트였고, Move는 그 안에서 디지털 자산과 접근 권한을 안전하게 다루기 위한 언어로 설계되었다.

Diem 프로젝트는 종료되었지만, Move 언어는 이후 여러 블록체인에서 사용되었다.

대표적으로 수이와 앱토스가 Move 계열 언어를 사용한다.

수이에서는 Move를 그대로 사용하는 것이 아니라 수이의 객체 중심 구조에 맞게 확장한 Sui Move를 사용한다.

Sui Move는 수이 블록체인에서 스마트 컨트랙트, 토큰, NFT, 게임 아이템, DeFi 포지션, 온체인 앱을 만들 때 사용된다.

수이에서 Move 언어를 이해할 때 중요한 개념은 다음과 같다.

  • 리소스
  • 능력
  • 모듈
  • 패키지
  • 객체
  • UID와 ID
  • 소유 객체
  • 공유 객체
  • 불변 객체
  • 객체가 소유한 객체
  • Programmable Transaction Block
  • Sui Framework

Move 언어는 단순히 “수이에서 쓰는 코딩 언어”가 아니다.

수이의 핵심 구조인 객체 모델, 병렬 실행, 자산 소유권, NFT, 게임 아이템, DeFi 시장이 모두 Sui Move와 깊게 연결된다.

2. Move 언어란

Move 언어는 스마트 컨트랙트 개발을 위한 프로그래밍 언어이다.

스마트 컨트랙트는 블록체인 위에서 실행되는 프로그램이다.

Move는 이러한 스마트 컨트랙트가 디지털 자산을 안전하게 다룰 수 있도록 설계되었다.

Move의 핵심 목표는 다음과 같다.

  • 디지털 자산을 안전하게 표현
  • 토큰과 NFT의 임의 복사 방지
  • 자산의 소유권 이동을 명확하게 표현
  • 권한과 접근 제어를 코드로 안전하게 구현
  • 스마트 컨트랙트 오류를 줄이기 위한 타입 시스템 제공
  • 블록체인별 실행 환경에 맞게 확장 가능

Move에서는 자산이 단순한 숫자가 아니라 특별한 값으로 취급된다.

예를 들어 토큰이나 NFT는 마음대로 복사되거나 버려지면 안 된다.

Move는 이런 자산을 리소스처럼 다루며, 값의 복사·삭제·저장·전송 가능 여부를 언어 차원에서 제한한다.

이 때문에 Move는 자산 지향 프로그래밍 언어라고 설명되기도 한다.

3. Sui Move란

Sui Move는 수이 블록체인에서 사용하는 Move 언어의 변형이다.

원래 Move는 계정 중심 모델을 기반으로 설계되었다.

반면 수이는 객체 중심 데이터 모델을 사용한다.

이 차이 때문에 수이는 Move를 수이의 구조에 맞게 확장했다.

Sui Move의 가장 큰 특징은 객체이다.

수이에서는 온체인 자산과 데이터가 객체 단위로 관리된다.

예를 들어 다음과 같은 것들이 모두 객체가 될 수 있다.

  • SUI 코인
  • NFT
  • 게임 아이템
  • 캐릭터
  • 티켓
  • 멤버십
  • DeFi 유동성 포지션
  • 대출 포지션
  • DAO 금고
  • 마켓플레이스
  • 오더북
  • 설정 객체

Sui Move는 이러한 객체를 만들고, 전송하고, 수정하고, 공유하고, 조합하는 데 사용된다.

Sui Move는 일반 Move와 비교해 다음 점이 중요하다.

  • 객체 중심 모델 사용
  • 객체마다 고유 ID 존재
  • 객체의 소유권이 명확하게 표현됨
  • 소유 객체와 공유 객체를 구분
  • 객체가 다른 객체를 소유할 수 있음
  • 트랜잭션에서 여러 객체를 입력값으로 사용 가능
  • 병렬 실행과 연결됨

4. Move가 만들어진 배경

Move는 Meta의 Libra 프로젝트에서 시작되었다.

Libra는 이후 Diem으로 이름이 변경되었다.

이 프로젝트는 블록체인 기반 글로벌 결제 네트워크를 목표로 했다.

결제 네트워크에서는 디지털 자산을 안전하게 다루는 것이 매우 중요하다.

토큰이 마음대로 복사되거나, 잘못 삭제되거나, 권한 없는 사용자가 이동시킬 수 있으면 결제 시스템은 신뢰를 잃게 된다.

Move는 이러한 문제를 해결하기 위해 만들어졌다.

Move는 자산을 일반 데이터와 다르게 취급한다.

자산은 복사할 수 있는지, 삭제할 수 있는지, 저장할 수 있는지, 글로벌 저장소의 핵심 값이 될 수 있는지를 명확히 제한한다.

이러한 구조는 토큰과 NFT, 담보 자산, 게임 아이템 같은 디지털 자산을 다루는 데 적합하다.

Diem 프로젝트는 종료되었지만, Move 언어는 수이, 앱토스, 스타코인, 무브먼트 등 여러 프로젝트에서 계속 사용되고 있다.

5. 핵심 특징

5.1 자산 지향 언어

Move의 가장 큰 특징은 자산 지향성이다.

일반적인 스마트 컨트랙트 언어에서는 토큰 잔액을 숫자로 저장하는 경우가 많다.

예를 들어 어떤 주소가 100개의 토큰을 가지고 있다고 하면, 컨트랙트 내부에는 주소 → 잔액 형태의 기록이 있을 수 있다.

Move에서는 자산을 더 엄격하게 다룬다.

자산은 마음대로 복사하거나 삭제할 수 없는 값으로 표현된다.

이 구조는 다음 문제를 방지하는 데 도움이 된다.

  • 토큰이 중복 발행되는 문제
  • NFT가 임의로 복사되는 문제
  • 자산이 실수로 삭제되는 문제
  • 권한 없는 사용자가 자산을 이동시키는 문제
  • 컨트랙트가 사용자 자산을 임의로 조작하는 문제

5.2 리소스 모델

Move의 리소스 모델은 자산을 특별한 값으로 다루는 방식이다.

리소스는 일반 데이터처럼 자유롭게 복사하거나 버릴 수 없다.

이 개념은 실제 세계의 물건과 비슷하다.

예를 들어 지갑 속 1만 원권 지폐는 복사해서 두 장으로 만들 수 없다.

또한 아무 이유 없이 사라지면 안 된다.

Move는 디지털 자산도 이와 비슷하게 다루려 한다.

리소스 모델은 토큰, NFT, 담보, 권한 증서, 게임 아이템 같은 온체인 자산을 안전하게 표현하는 데 유리하다.

5.3 능력 시스템

Move에는 능력이라는 개념이 있다.

영문으로는 Ability라고 한다.

능력은 어떤 타입의 값이 어떤 행동을 할 수 있는지를 정한다.

대표적인 능력은 네 가지이다.

  • copy
  • drop
  • store
  • key

이 네 가지 능력은 Move에서 자산을 안전하게 다루는 핵심 장치이다.

값이 copy 능력을 가지면 복사할 수 있다.

값이 drop 능력을 가지면 사용하지 않고 버릴 수 있다.

값이 store 능력을 가지면 저장소 안에 저장될 수 있다.

값이 key 능력을 가지면 온체인 저장소에서 핵심 객체나 리소스가 될 수 있다.

수이에서는 key 능력을 가진 구조체가 객체로 사용된다.

5.4 모듈 기반 구조

Move 코드는 모듈 단위로 구성된다.

모듈은 함수, 구조체, 상수, 이벤트, 권한 로직을 담는 코드 단위이다.

예를 들어 토큰을 만드는 모듈에는 다음 내용이 들어갈 수 있다.

  • 토큰 타입 정의
  • 발행 함수
  • 소각 함수
  • 전송 함수
  • 관리자 권한
  • 이벤트
  • 초기화 로직

Move에서는 특정 타입을 정의한 모듈이 그 타입의 핵심 권한을 관리한다.

이 구조는 자산의 생성과 변경 권한을 명확히 하는 데 도움이 된다.

5.5 패키지

수이에서 Move 코드는 패키지 단위로 배포된다.

패키지는 여러 모듈을 묶은 배포 단위이다.

예를 들어 하나의 게임 프로젝트는 다음과 같은 모듈을 포함한 패키지를 배포할 수 있다.

  • 캐릭터 모듈
  • 아이템 모듈
  • 전투 모듈
  • 마켓 모듈
  • 보상 모듈
  • 관리자 설정 모듈

패키지가 수이에 배포되면 온체인 패키지 객체가 된다.

수이 공식 자료에서는 스마트 컨트랙트 패키지가 불변 객체로 존재한다고 설명한다.

즉 배포된 패키지는 일반적으로 임의로 바뀌지 않는다.

다만 수이는 패키지 업그레이드 기능도 제공하며, 업그레이드 권한과 정책에 따라 새 버전으로 발전할 수 있다.

5.6 객체 중심 모델

Sui Move의 가장 중요한 차별점은 객체 중심 모델이다.

수이에서 거의 모든 자산과 데이터는 객체로 표현된다.

객체는 다음 요소를 가진다.

  • 고유 ID
  • 타입
  • 소유자
  • 버전
  • 데이터
  • 이전 트랜잭션 기록

이 구조는 NFT, 게임 아이템, 티켓, 멤버십, DeFi 포지션 같은 자산을 표현하기에 적합하다.

예를 들어 게임 캐릭터 객체가 있고, 그 캐릭터 객체가 검, 방패, 지도 같은 아이템 객체를 소유할 수 있다.

이런 구조는 게임과 디지털 자산을 표현하는 데 자연스럽다.

5.7 병렬 실행과 연결

Sui Move의 객체 모델은 수이의 병렬 실행과 연결된다.

서로 다른 객체를 사용하는 트랜잭션은 서로 충돌하지 않을 수 있다.

예를 들어 다음 두 거래가 동시에 발생한다고 가정할 수 있다.

  • A가 자신의 NFT를 B에게 전송
  • C가 자신의 게임 아이템을 업그레이드

두 거래가 서로 다른 객체만 사용한다면 같은 전역 상태를 기다릴 필요가 적다.

수이는 이런 거래를 병렬로 처리할 수 있다.

반면 DEX 유동성 풀처럼 여러 사용자가 동시에 접근하는 공유 객체는 합의와 순서 결정이 필요하다.

따라서 Sui Move에서 객체를 어떻게 설계하느냐는 앱 성능과 직접 연결된다.

6. copy

copy는 값을 복사할 수 있는 능력이다.

어떤 타입이 copy 능력을 가지면 그 값을 복사할 수 있다.

예를 들어 숫자나 주소 같은 단순 값은 복사되어도 문제가 없다.

하지만 토큰이나 NFT 같은 자산은 복사되면 안 된다.

따라서 자산형 타입에는 보통 copy 능력을 주지 않는다.

copy 능력이 잘못 부여되면 자산이 중복될 수 있기 때문에, Move에서는 타입별 능력을 명확히 관리한다.

7. drop

drop은 값을 사용하지 않고 버릴 수 있는 능력이다.

어떤 타입이 drop 능력을 가지면 해당 값을 사용하지 않아도 프로그램이 끝날 수 있다.

일반 데이터는 버려도 문제가 없을 수 있다.

하지만 토큰이나 NFT 같은 자산이 아무 처리 없이 버려지면 안 된다.

그래서 자산형 타입에는 보통 drop 능력을 주지 않는다.

이 구조는 중요한 자산이 실수로 사라지는 문제를 줄인다.

8. store

store는 값을 저장소 안에 저장할 수 있는 능력이다.

Sui Move에서 어떤 값이 객체 내부에 저장되려면 보통 store 능력이 필요하다.

store는 자산을 다른 객체 안에 넣거나, 온체인 상태로 보관하는 데 중요하다.

예를 들어 게임 캐릭터 객체 안에 아이템 목록을 저장하거나, 금고 객체 안에 특정 데이터를 저장할 때 store 능력이 필요할 수 있다.

9. key

key는 온체인 저장소에서 핵심 객체가 될 수 있는 능력이다.

수이에서는 key 능력을 가진 구조체가 객체가 될 수 있다.

Sui Move에서 객체를 만들려면 보통 UID 필드를 가진 구조체에 key 능력을 부여한다.

예를 들어 다음과 같은 구조를 생각할 수 있다.

```move
public struct Sword has key, store {
id: UID,
level: u64,
power: u64,
}

인기 문서
최근 업데이트