동적 필드 및 컬렉션 - Encode Club Sui 시리즈 #4

총 6개의 교육용 동영상 중 네 번째 동영상에서는 Sui 에서 객체를 프로그래밍할 때 동적 필드와 컬렉션의 중요성에 대해 알아봅니다.

동적 필드 및 컬렉션 - Encode Club Sui 시리즈 #4

Encode Club의 Sui 시리즈 네 번째 동영상에서는 매우 유용한 두 가지 기능인 동적 필드와 컬렉션에 대해 설명합니다. 이 기능들은 Sui의 객체 데이터 모델에 상당한 유연성을 더해줍니다.

Sui 재단은 Encode Club과 제휴하여 6개의 개발자 중심 동영상 시리즈를 제공합니다. 이 시리즈는 Sui 의 기본 사항부터 Sui 의 스마트 컨트랙트 구축 및 객체 작업에 대한 튜토리얼까지 다양합니다.

학습 하이라이트

Sui의 개체 데이터 모델은 큰 강점이 있지만, 이러한 개체를 프로그래밍 프레임워크에 맞도록 조작하고 설계하는 데는 나름의 어려움이 있습니다. 동적 필드와 컬렉션이라는 두 가지 기능을 사용하면 Sui 에서 개체를 정의할 때 훨씬 더 유연하게 사용할 수 있습니다.

검토: 객체 래핑

객체는 Sui 에서 다른 객체를 소유할 수 있지만, 객체가 다른 객체를 래핑하는 것은 다른 개념입니다.

struct A has key {
	id: UID,
	b: B
}

struct B has key, store { id: UID }

위의 예시에서는 유형 B의 객체가 유형 A의 객체로 래핑되어 있습니다. 객체 래핑을 사용하면 래핑된 객체(이 예시에서는 객체 B)는 최상위 객체로 저장되지 않습니다. 따라서 객체 ID를 통해 액세스할 수 없으며, 따라서 이 객체와 상호 작용하는 모든 API(예: 프론트엔드를 통해)는 객체 B에 직접 액세스할 수 없습니다.

이 접근 방식에는 몇 가지 단점이 있습니다:

  • 객체에는 한정된 수의 필드가 있습니다. 이것이 구조체 선언의 필드입니다.
  • 다른 물체를 감싸는 물체는 매우 커질 수 있으므로 가스 요금이 더 많이 부과될 수 있습니다. 물체 크기에도 상한선이 있습니다.
  • 객체 래핑을 통해 이질적인 객체(다양한 유형의 객체) 컬렉션을 저장하는 것은 불가능합니다. Move 벡터 유형은 단일 유형 T로 인스턴스화해야 하므로 벡터를 사용하는 이기종 컬렉션은 지원되지 않습니다.

동적 필드

동적 필드는 앞서 언급한 문제를 해결합니다. 동적 필드는 임의의 이름을 가지며 수시로 추가 및 제거할 수 있습니다. 가스와 관련해서는 액세스한 것에 대해서만 비용을 지불하고 액세스할 수 있는 것에 대해서는 비용을 지불하지 않습니다. 또한 동적 필드는 이기종 유형을 지원하므로 특정 개체 내에 유사하지 않은 유형을 저장할 수 있습니다.

동적 필드는 필드와 개체 필드의 두 가지 종류가 있습니다. 필드는 store를 사용하여 모든 값을 저장할 수 있습니다. 이러한 필드는 독립형 개체가 아니므로 외부 API에서 ID를 통해 액세스할 수 없습니다. 반면에 객체 필드는 구조체 선언 뒤에 key,store가 있어야 합니다. 후자의 장점은 객체가 동일한 객체 ID를 유지하며 외부 API에서 계속 읽을 수 있다는 것입니다.

자세한 설명은 동적 필드에 대한Sui 문서를 참조하세요.

컬렉션

동적 필드는 기존 개체를 확장하는 방법을 도입했으며, 컬렉션은 이를 한 단계 더 발전시켰습니다. 컬렉션은 동적 필드를 기반으로 구축되며, 컬렉션에 포함된 항목 수를 계산하고 비어 있지 않은 항목이 실수로 삭제되지 않도록 보호하는 추가 지원이 가능합니다.

컬렉션은 동종 및 이기종 값을 모두 지원합니다. 동종 컬렉션 유형은 Table입니다. Table에 저장된 모든 값은 동일한 유형이어야 합니다. 이기종 컬렉션 유형은 Bag입니다. Bag에 저장된 값은 모든 유형이 될 수 있습니다. 동적 필드 및 동적 객체 필드와 유사하게, 테이블 및 가방은 객체 전용 버전인 object_table 및 object_bag도 제공합니다. table 및 bag의 모든 값에는 store만 있어야 하는 반면, object_table 및 object_bag의 모든 값에는 key,store가 있어야 합니다.

자세한 설명은 컬렉션에 대한Sui 문서를 참조하세요.

베트남 빌더 하우스에 참여하세요

Sui 에 대해 자세히 알아보고 설립자 및 다른 개발자들과 네트워크를 형성하세요! Sui 재단은 2023년 3월 18일부터 19일까지 베트남에서 다음 빌더 하우스를 개최합니다. 교육 프레젠테이션, 상금이 걸린 챌린지 및 기타 재미있는 활동을 기대하세요.

정원에 도달하기 전에 지금 등록하세요!

전체 시리즈 보기

  1. Sui?
  2. 스마트 계약
  3. 오브젝트 및 NFT 생성
  4. 동적 필드 및 컬렉션
  5. RPG 빌드 기본 사항
  6. 블록체인에 게임 배포