Kim Seogyu
Blockchain

Aptos Move Structure

Move 구조체, ability, 전역 저장소, signer 권한 모델을 실무 관점으로 정리합니다.

Published 2025년 12월 27일2 min read294 words

Aptos Move Structure

Aptos의 Move는 "리소스의 안전한 소유권"을 강하게 강제하는 언어입니다. 이 글은 구조체, ability, 전역 저장, signer, acquires 같은 핵심 문법이 실제 설계에서 왜 중요한지 정리합니다.

1. Move 구조체의 기본 전제

Move struct는 데이터 컨테이너입니다.

  • 구조체 안에 메서드를 넣지 않습니다.
  • 상속이 없습니다.
  • 한 번 온체인에 배포된 구조체의 필드 정의는 바꿀 수 없습니다.

즉, "타입 안정성"을 강하게 잡는 대신, 업그레이드 유연성은 모듈 레벨에서 관리합니다.

2. Ability로 권한을 모델링한다

Move 타입은 아래 ability 조합으로 동작 범위를 제한합니다.

  • copy: 값 복제 가능
  • drop: 값 폐기 가능
  • store: 다른 구조체 내부나 전역 저장소에 저장 가능
  • key: 계정 전역 저장소의 최상위 리소스로 저장 가능

토큰/NFT 설계에서 실수가 자주 나는 지점은 copy입니다. 희소성이 필요한 자산 타입에 copy를 열면 설계 자체가 무너집니다.

3. 전역 저장소와 소유권

Aptos 계정은 전역 저장소를 갖고, key 리소스를 소유합니다. 핵심은 다음입니다.

  • 리소스 소유자는 계정이다.
  • 리소스를 읽고 분해하고 수정할 권한은 "그 타입을 정의한 모듈"이 통제한다.
  • 따라서 소유권(계정)과 조작권(모듈 권한)이 분리된다.

이 분리가 Move의 보안 모델 핵심입니다.

4. signer는 권한 토큰이다

entry fun의 첫 파라미터 &signer는 트랜잭션 서명자 권한을 나타냅니다.

  • signer로 계정 주소를 얻을 수 있습니다.
  • 주소만으로는 signer를 만들 수 없습니다.
  • 그래서 "임의 주소를 넣어 남의 자산 조작" 같은 패턴이 어렵습니다.

실무에서는 리소스 계정 + SignerCapability로 모듈 자율 실행 권한을 위임하는 패턴을 자주 씁니다.

5. acquiresmove_to를 정확히 쓰자

  • 전역 리소스를 읽거나 수정하는 함수는 acquires 선언으로 의도를 명확히 합니다.
  • 신규 리소스를 계정에 배치할 때는 move_to를 사용합니다.

이 두 지점을 명확히 써두면 코드 리뷰에서 권한 경계를 빠르게 확인할 수 있습니다.

실무 체크리스트

  1. 자산 타입의 ability(copy, drop, store, key)를 표로 먼저 정의합니다.
  2. entry fun이 요구하는 권한(&signer, capability)을 명시합니다.
  3. 전역 리소스 접근 함수에 acquires를 일관되게 선언합니다.
  4. 리소스 생성/폐기 경로를 모듈 내부로만 강제합니다.
Share

Related Articles

Comments

이 블로그는 제가 알고 있는 것들을 잊지 않기 위해 기록하는 공간입니다.
직접 작성한 글도 있고, AI의 도움을 받아 정리한 글도 있습니다.
정확하지 않은 내용이 있을 수 있으니 참고용으로 봐주세요.

© 2026 Seogyu Kim