오브젝트 및 NFT 생성 - Encode Club Sui 시리즈 #3
총 6개의 교육 동영상 중 세 번째 동영상에서는 Sui 네트워크에서 NFT를 생성하는 방법을 알아보세요.
인코드 클럽의 Sui 시리즈의 세 번째 동영상에서는 Sui 에서 객체의 특성을 살펴보고 대체 불가능한 토큰(NFT)을 생성하는 데 필요한 단계를 안내합니다.
Sui 재단은 Encode Club과 제휴하여 6개의 개발자 중심 동영상 시리즈를 제공합니다. 이 시리즈는 Sui 의 기본 사항부터 Sui 의 스마트 컨트랙트 구축 및 객체 작업에 대한 튜토리얼까지 다양합니다.
학습 하이라이트
Sui의 데이터 모델은 네트워크에서 객체를 생성하는 것을 코딩의 기본으로 삼습니다. 여기에서는 네 가지 객체 모델, 고유 식별자의 구성 요소, NFT를 생성하는 방법을 보여주는 코드 스니펫을 제공합니다.
개체 검토
이전 세션에서 살펴본 내용을 간단히 요약하면 Sui 의 객체는 가장 기본적인 저장소 단위입니다. 객체는 네 가지 범주 중 하나에 속합니다:
주소 소유 개체
struct ObjectA has key { id: UID }
public entry fun create_object_owned_by_an_address(ctx: &mut TxContext) {
transfer::transfer({
ObjectA { id: object::new(ctx) }
}, tx_context::sender(ctx))
}
개체 소유 개체
struct ObjectB has key, store { id: UID }
public entry fun create_object_owned_by_an_object(parent: &mut ObjectA, ctx: &mut TxContext) {
let child = ObjectB { id: object::new(ctx) };
ofield::add(&mut parent.id, b"child", child);
}
공유 개체
struct ObjectC has key { id: UID }
public entry fun create_shared_object(ctx: &mut TxContext) {
transfer::share_object(ObjectC { id: object::new(ctx) })
}
불변 객체
struct ObjectD has key { id: UID }
public entry fun create_immutable_object(ctx: &mut TxContext) {
transfer::freeze_object(ObjectD { id: object::new(ctx) })
}
오브젝트 및 NFT
기술적으로 Sui 에서 객체와 NFT 사이에는 차이가 없습니다. 아래 코드 스니펫을 사용하여 Sui 표준 라이브러리의 option.move에서 고유 식별자(UID)에 대한 정의를 살펴봅시다.
/// Globally unique IDs that define an object's ID in storage. Any Sui object, that is a struct
/// with the `key` ability, must have `id: UID` as its first field.
/// These are globally unique in the sense that no two values of type `UID` are ever equal, in
/// other words for any two values `id1: UID` and `id2: UID`, `id1` != `id2`.
/// This is a privileged type that can only be derived from a `TxContext`.
/// `UID` doesn't have the `drop` ability, so deleting a `UID` requires a call to `delete`.
struct UID has store {
id: ID,
}
Sui 새 개체가 생성될 때마다 전역적으로 고유한 ID가 생성되므로, 나머지 필드가 동일하더라도 두 개체가 진정으로 대체 가능한 개체는 없습니다.
에서 NFT 생성 Sui
Sui의 객체 중심 접근 방식 덕분에 아래 코드 스니펫에서 볼 수 있듯이 NFT를 생성하는 것은 비교적 간단합니다.
struct NFT has key, store {
id: UID,
name: String,
description: String,
url: Url,
// ... Additional attributes for various use cases (i.e. game, social profile, etc.)
}
하지만 위의 예시는 초보적인 예시입니다. SuiNFT의 고유한 프로그래밍 모델은 사실상 무한한 사용 사례를 가능하게 합니다. NFT 표준에 대한 아이디어를 제공하거나 다음 단계로 발전시킬 수 있는 방법에 관심이 있으신 분은 공식 개발자 포럼( Sui )을 방문하시기 바랍니다!