첫 번째 Move 모듈
Aptos 블록체인은 개발자들이 안전하게 설계된 Move 언어로 튜링 완전한 스마트 컨트랙트(“모듈”이라고 함)를 작성할 수 있게 해줍니다. 스마트 컨트랙트는 사용자가 블록체인으로 돈을 보낼 수 있게 할 뿐만 아니라, 게임까지도 포함한 임의의 코드를 작성할 수 있게 해줍니다! 모든 것은 배포된(“게시된”) Move 모듈을 저장할 계정을 생성하는 Aptos CLI에서 시작됩니다.
이 튜토리얼은 최소한의 Aptos 환경을 설정한 다음, Aptos 블록체인에서 Move 모듈을 컴파일, 테스트, 게시 및 상호작용하는 방법을 안내하여 Move 모듈을 이해하는 데 도움이 됩니다. 다음을 배우게 됩니다:
- 환경 설정, CLI 설치
- 데브넷 계정 생성 및 자금 조달
- Move 모듈 컴파일 및 테스트
- Aptos 블록체인에 Move 모듈 게시(또는 “배포”)
- 모듈과 상호작용
- Aptos로 계속 구축하기 (다음 단계)
1. 설정
섹션 제목: “1. 설정”블록체인에 대한 변경 사항을 “거래”라고 하며, 네트워크 수수료(“가스 수수료”)를 지불할 계정이 필요합니다. 그 수수료를 지불하고 게시된 컨트랙트를 소유할 수 있는 APT가 있는 계정을 만들어야 합니다. 이를 위해 Aptos CLI를 사용해야 합니다.
-
Aptos CLI 설치
Aptos CLI 설치 (아직 설치하지 않았다면).
-
새 터미널 열기
새 터미널 창이나 탭을 여세요.
-
설치 확인
aptos --version
을 실행하여 설치되었는지 확인하세요.Terminal window aptos --versionaptos 4.6.1
과 같은 응답을 볼 수 있어야 합니다. -
프로젝트 폴더 생성
다음을 실행하여 이 튜토리얼을 위한 새 폴더를 만드세요:
Terminal window mkdir my-first-module -
프로젝트 폴더로 이동
cd my-first-module
을 실행하여 새 폴더로 이동하세요. -
계정 초기화
aptos init
을 실행하고 각 설정 단계에서 ‘enter’를 눌러devnet
에서 테스트 계정을 만드세요.다음과 같은 성공 메시지를 볼 수 있어야 합니다:
Terminal window ---Aptos CLI is now set up for account 0x9ec1cfa30b885a5c9d595f32f3381ec16d208734913b587be9e210f60be9f9ba as profile default!{"Result": "Success"} -
계정 자금 조달
테스트 계정에 자금을 조달하세요:
Terminal window aptos account fund-with-faucet --account default성공하면 다음과 같은 메시지를 볼 수 있습니다:
Terminal window {"Result": "Added 100000000 Octas to account 0x9ec1cfa30b885a5c9d595f32f3381ec16d208734913b587be9e210f60be9f9ba"}
2. Move 모듈 만들기
섹션 제목: “2. Move 모듈 만들기”이제 첫 번째 Move 모듈을 만들어보겠습니다.
-
Move 패키지 초기화
Move 패키지를 초기화하세요:
Terminal window aptos move init --name hello_blockchain이렇게 하면 다음과 같은 폴더 구조가 생성됩니다:
my-first-module/├── Move.toml└── sources/ -
첫 번째 Move 모듈 작성
sources/
폴더에hello_blockchain.move
라는 새 파일을 만드세요:module hello_blockchain::message {use std::error;use std::signer;use std::string;use aptos_framework::event;/// 메시지가 너무 긴 경우 오류 코드const E_MESSAGE_TOO_LONG: u64 = 1;/// 메시지의 최대 길이const MAX_MESSAGE_LENGTH: u64 = 1000;/// 메시지 리소스struct MessageHolder has key {message: string::String,}/// 메시지 변경 이벤트#[event]struct MessageChangeEvent has drop, store {account: address,from_message: string::String,to_message: string::String,}/// 메시지 설정 함수public entry fun set_message(account: signer, message: string::String)acquires MessageHolder {let account_addr = signer::address_of(&account);assert!(string::length(&message) <= MAX_MESSAGE_LENGTH,error::invalid_argument(E_MESSAGE_TOO_LONG),);if (!exists<MessageHolder>(account_addr)) {move_to(&account, MessageHolder {message,})} else {let old_message_holder = borrow_global_mut<MessageHolder>(account_addr);let from_message = old_message_holder.message;event::emit(MessageChangeEvent {account: account_addr,from_message,to_message: copy message,});old_message_holder.message = message;}}/// 메시지 읽기 함수#[view]public fun get_message(account_addr: address): string::Stringacquires MessageHolder {assert!(exists<MessageHolder>(account_addr), error::not_found(E_MESSAGE_NOT_FOUND));borrow_global<MessageHolder>(account_addr).message}}
3. 모듈 컴파일 및 테스트
섹션 제목: “3. 모듈 컴파일 및 테스트”-
모듈 컴파일
Move 모듈을 컴파일하세요:
Terminal window aptos move compile성공하면 다음과 같은 출력을 볼 수 있습니다:
Terminal window Compiling, may take a little while to download git dependencies...INCLUDING DEPENDENCY AptosFrameworkINCLUDING DEPENDENCY AptosStdlibINCLUDING DEPENDENCY MoveStdlibBUILDING hello_blockchain{"Result": ["9ec1cfa30b885a5c9d595f32f3381ec16d208734913b587be9e210f60be9f9ba::message"]} -
모듈 게시
컴파일된 모듈을 블록체인에 게시하세요:
Terminal window aptos move publish성공하면 거래 해시와 함께 성공 메시지를 볼 수 있습니다.
축하합니다! 첫 번째 Move 모듈을 성공적으로 작성하고 Aptos 블록체인에 배포했습니다! 🎉