---
title: "Solana의 Metaplex에 대해 알아야 할 모든 것"
description: "Metaplex란 무엇이고, 왜 중요하며, 어떻게 작동하는가"
---

# Solana의 Metaplex에 대해 알아야 할 모든 것

[Metaplex](https://www.alchemy.com/dapps/metaplex)는 Solana를 위한 NFT 표준과 도구의 모음입니다. Solana NFT 민팅, NFT 에어드롭, NFT 스토어프론트 등에 Metaplex를 사용하는 방법을 알아보세요!

## **Metaplex란 무엇인가?**

Metaplex는 [Solana](https://alchemy.com/solana?a=7f82338b3d) 위에 구축되어 블록체인의 NFT 커뮤니티를 강화하는 컨트랙트 네트워크입니다. 이 생태계는 Token Metadata, Token Vault, Auction, Metaplex 네 가지 컨트랙트로 구성됩니다. Metaplex라는 용어는 종종 이 컨트랙트 생태계 전체를 가리키지만, 이 개요에서는 (네 가지 중 하나인) Metaplex 컨트랙트를 지칭하는 데 사용하겠습니다.

### **Metaplex가 중요한 이유는?**

Metaplex 생태계는 Solana에서 NFT와 상호작용하는 완전히 새로운 방식을 열어주었고, 그 결과 Solana에서 사실상 표준 NFT 도구로 자리 잡았습니다. Metaplex를 통해 사용자는 NFT를 민팅하고, 1차/2차 판매를 위한 경매를 진행하고, 표준화된 방식으로 NFT를 시각화할 수 있습니다.

### **Metaplex 스마트 컨트랙트**

Metaplex 생태계는 네 개의 개별 컨트랙트로 구성되며, 이들은 Metaplex 컨트랙트를 통해 통신하여 Solana 개발자에게 NFT 제작에 필요한 도구를 제공합니다.

#### **1. Token metadata**

"민트 데코레이터"라 불리는 이 컨트랙트는 NFT 제작자가 자신의 민트에 Metadata PDA(Program Derived Address)를 연결할 수 있게 해줍니다. 이 연관된 PDA에는 이름, 심볼, 로열티 수수료, 판매 상태와 같은 NFT 컬렉션의 기본 정보가 담겨 있습니다.

#### **2. Token vault**

이름 그대로, Token Vault 컨트랙트는 어떤 민트에서 예치된 NFT든 보관할 수 있으며, 해당 볼트와 그 안의 NFT에 대한 부분 소유권(fractional ownership)을 가능하게 합니다.

볼트에는 두 가지 상태가 있습니다: Activated와 Combined.

"**Activated**" 상태일 때, 볼트 안의 모든 NFT는 잠기고 접근할 수 없게 됩니다. 볼트 소유자는 이제 볼트에 대한 트레저리 지분을 발행하고 판매할 수 있으며, 이를 통해 볼트 안의 NFT에 대한 부분 소유권을 생성합니다.

볼트는 유통 중인 부분 지분이 하나도 남지 않았을 때, 즉 볼트 소유자가 모든 지분을 보유하고 있을 때만 "**Combined**" 상태로 전환될 수 있습니다. 볼트 안의 NFT를 되찾으려면 볼트 소유자는 시장에서 모든 부분 지분을 다시 사들여야 하며, 그 후에 볼트를 "Combine"할 수 있습니다.

#### **3. Auction**

Auction 컨트랙트는 Metaplex의 경매 메커니즘 역할을 하며, **English Auction**과 **Open Edition Auction** 형식으로 NFT 경매를 지원합니다.

단순한 입찰-판매 프로그램인 Auction은 Metaplex 생태계 내의 NFT나 다른 리소스에 대한 지식 없이 작동합니다. 이러한 분리는 장애 지점을 크게 줄이고 Auction 프로그램의 유연성을 높여줍니다.

#### **4. Metaplex**

Metaplex 컨트랙트는 위에 나열된 세 가지 주요 컨트랙트를 관리하는 **AuctionManagers**를 제공합니다. AuctionManager는 모든 토큰 메타데이터와 그에 대응하는 경매의 기록을 유지하며, Token Metadata, Token Vault, Auction 컨트랙트 간의 계정 데이터 전환을 원활하게 해줍니다.

## **Metaplex 도구와 기능**

Metaplex의 가장 중요한 기능들, 각 기능이 하는 일, 언제 사용해야 하는지, 왜 중요한지, 그리고 해당 기능으로 빌드를 시작하는 방법을 소개합니다!

### **Metaplex Storefront란 무엇인가?**

Metaplex Storefront는 Metaplex 컨트랙트를 통해 NFT를 생성하고 판매할 수 있는 올인원 [NFT marketplace](https://www.alchemy.com/dapps/best/nft-marketplaces)입니다. [Magic Eden](https://www.alchemy.com/dapps/magic-eden)과 같은 [중앙화된 Solana NFT marketplace](https://www.alchemy.com/overviews/solana-nft-marketplaces)와 달리, 누구나 Storefront를 화이트라벨 솔루션으로 직접 만들어 셀프 호스팅하거나 기존의 브랜드화된 Storefront를 사용할 수 있습니다.

Metaplex Storefront 기능의 이러한 독특한 셀프 호스팅 특성은 사용자가 자신만의 NFT marketplace를 만들 수 있게 함으로써 Solana의 탈중앙화 이점을 온전히 누릴 수 있게 해줍니다.

#### **Metaplex로 Storefront 만드는 방법**

이는 Storefront를 만드는 방법에 대한 간단한 개요이며, 자세한 내용은 [Metaplex의 공식 문서](https://docs.metaplex.com/)에서 다루고 있습니다.

먼저, Github에서 Metaplex Storefront 소스 코드를 클론하고 시작해야 합니다.

다음으로, http://localhost:3000/에 접속하여 Solana 네트워크를 Devnet으로 전환합니다.

Solana 테스트 네트워크에 익숙하지 않다면, [Solana의 devnet 사용에 대한 완전한 가이드](https://www.alchemy.com/overviews/solana-devnet)를 읽어보세요.

그다음, "Init Store"를 클릭하고 트랜잭션을 승인하여 Storefront를 초기화합니다.

<ImageBlock
  src="https://media.alchemy.com/1703524810-metaplex-homepage.png"
  alt="Init Store 버튼이 있는 Metaplex Storefront 설정 페이지"
  width={1600}
  height={1046}
  caption="Metaplex 홈페이지"
/>

Store 설정 섹션에서 코드를 복사하여 _js/package/web_에 위치한 _.env_ 파일에 붙여넣습니다.

이제 `yarn start`으로 웹사이트를 재시작합니다.

<ImageBlock
  src="https://media.alchemy.com/1703525040-metaplex-storefront.jpg"
  alt="localhost:3000에서 본 Storefront"
  width={1600}
  height={1046}
  caption="localhost:3000에서 본 Storefront"
/>

이제 여러분의 주소와 연결되어 여러분이 직접 호스팅하는 Storefront가 생겼습니다!

Storefront의 기본 UI를 통해 NFT를 민팅하고 판매를 위해 등록할 수 있으며, "Buy Now"라는 즉시 구매 옵션이나 경매 형태로 등록할 수 있습니다. NFT를 생성할 때 설명, 로열티, 이미지를 지정할 수 있습니다.

Metaplex의 Storefront NFT 도구는 오픈소스이며 커스터마이징이 가능하므로, 포크한 GitHub 코드를 업데이트하여 사용자 인터페이스(UI)를 수정하고 NFT 볼트 생성이나 NFT 소각과 같은 새로운 기능을 추가할 수 있습니다.

### **Candy Machine v2란 무엇인가?**

Candy Machine(CM)은 구매자, 판매자, 제작자 모두에게 NFT 경험을 간소화하도록 설계된 [온체인 생성형 NFT 배포 프로그램](https://www.alchemy.com/overviews/candy-machine-v2)입니다.

Candy Machine V2는 개선되고 새로운 기능이 추가된 두 번째 버전입니다. CM 이전에는 Solana에서 NFT의 민팅과 판매를 관리하는 범용 프로그램이 없었습니다. 이로 인해 NFT 제작자와 수집가들에게 수많은 오류와 나쁜 사용자 경험이 발생했고, 이것이 Metaplex 개발팀이 Candy Machine을 만들게 된 계기가 되었습니다.

Candy Machine은 사용자가 NFT와 상호작용하는 것을 쉽게 만들어주는 NFT 배포의 근본적인 문제들을 해결합니다:

- 정확한 민팅 기간 정의
- NFT를 민팅할 수 있을 때에만 구매자의 자금 수취
- 메타데이터 타입을 강제함으로써 프로그램이 일관된 NFT를 생성하도록 지원

Candy Machine v2는 다음과 같은 기능을 추가했습니다:

- **예측 불가능한 민트 인덱스** - v1이 순차적으로 민팅되었기 때문에 발생했던, 구매자가 컬렉션 내 특정 NFT를 저격하는 것을 방지
- **화이트리스트** - 특정 주소만 민팅할 수 있도록 허용
- **캡차** - 봇의 민팅을 방지

또한 v2는 이제 더 큰 컬렉션, hide-and-reveal 드롭을 지원하며, web3 개발자가 언제든지 설정을 업데이트하고 진행 중인 민팅을 일시정지할 수 있게 해줍니다.

#### **Candy Machine v2 사용 방법**

Candy Machine은 완전한 온체인 NFT 민트 프로그램이므로 모든 상호작용은 프로그래밍 방식으로 이루어져야 하며, 일부 기능을 자동화하는 UI가 있긴 하지만 Candy Machine을 온전히 활용하려면 사용자에게 기본적인 프로그래밍 경험이 필요합니다. CM v2를 시작하려면 Metaplex의 공식 문서를 참고하세요.

### **Gumdrop이란 무엇인가?**

Gumdrop은 낮은 가스 비용으로 [Solana 에어드롭을 위한 도구](https://docs.metaplex.com/airdrops/create-gumdrop)인 새로운 베타 버전입니다. Metaplex 커뮤니티가 개발한 Gumdrop은 소셜 미디어와 같은 오프체인 경로로 상환 링크를 보냄으로써 많은 수의 사용자에게 에어드롭을 실행합니다. 이는 Metaplex와 통합된 토큰을 저렴한 비용으로 배포하려는 프로젝트에 쉬운 해결책을 제공합니다.

토큰이 사용자의 [Solana wallet](https://www.alchemy.com/overviews/solana-wallets)에 그냥 나타나는 전통적인 에어드롭 방식과 달리, Gumdrop은 사용자가 능동적으로 토큰을 청구하지 않으면 잃게 되는 "풀 기반(pull-based)" 방식을 사용합니다. Gumdrop은 머클 트리를 활용해 사용자가 화이트리스트에 포함되어 있는지 확인하며, 이를 통해 체인 상에서 빠른 연산이 가능합니다.

Gumdrop은 Solana에서 여러 유형의 토큰 드롭을 지원합니다:

- 토큰 에어드롭
- Candy Machine 사전 판매
- 에디션 프린트

모든 경우에, 드롭은 화이트리스트에 등록된 사용자로부터 머클 트리를 구성하고 오프체인 방식으로 청구 링크를 배포합니다.

#### **Gumdrop 사용 방법**

Gumdrop은 프로그래밍 방식으로 사용하거나 [가이드형 Solana 에어드롭 UI](https://lwus.github.io/metaplex/)를 통한 대화형 경험으로 사용할 수 있습니다. 프로그래밍 방식의 절차는 공식 문서를 참고하세요. 그래픽 사용자 인터페이스(UI)를 사용하려면 다음 안내를 따르세요:

<ImageBlock
  src="https://media.alchemy.com/1703525166-gumdrop.jpg"
  alt="Create, Claim, Close 작업이 있는 Gumdrop 에어드롭 UI"
  width={1600}
  height={864}
  caption="Gumdrop"
/>

취할 수 있는 세 가지 작업이 있습니다:

1. Create
1. Claim
1. Close

**Create** 페이지에서 청구 방식(에어드롭 유형)을 지정합니다.

<ImageBlock
  src="https://media.alchemy.com/1703525251-airdrop-type.png"
  alt="Gumdrop Create 페이지: 에어드롭 청구 방식 선택"
  width={1098}
  height={396}
  caption="Gumdrop 에어드롭 유형"
/>

다음으로, 오프체인 배포 방식을 선택합니다.

<ImageBlock
  src="https://media.alchemy.com/1703525366-off-chain-distribution-method.png"
  alt="Gumdrop Create 페이지: 오프체인 배포 방식 선택"
  width={1114}
  height={542}
  caption="오프체인 배포 방식"
/>

선택한 항목에 따라 생성을 완료하기 위해 민트 주소를 포함한 추가 입력값을 채워야 합니다.

**Claim** 페이지에서 사용자는 자신의 에어드롭 청구를 시작할 수 있으며, 이는 Solana 에어드롭 화이트리스트의 머클 트리로 검증됩니다.

<ImageBlock
  src="https://media.alchemy.com/1703525518-airdrop-claim-initiation.png"
  alt="에어드롭 청구를 시작하는 Gumdrop Claim 페이지"
  width={942}
  height={1250}
  caption="에어드롭 청구 시작"
/>

**Close** 페이지에서 제작자는 개인 키와 민트 주소를 제공하여 Gumdrop 에어드롭을 삭제할 수 있습니다.

닫힌 후에는 사용자가 해당 에어드롭의 토큰을 청구할 수 없습니다.

<ImageBlock
  src="https://media.alchemy.com/1703525625-delete-airdrop.png"
  alt="기존 에어드롭을 삭제하는 Gumdrop Close 페이지"
  width={1132}
  height={562}
  caption="에어드롭 삭제"
/>

### **AuctionHouse란 무엇인가?**

AuctionHouse는 제작자와 민터가 NFT를 원활하게 경매하고 판매할 수 있게 해주는 **온체인 에스크로가 없는 NFT 판매 프로그램**입니다. AuctionHouse는 셀프 호스팅되는 프런트엔드 Storefront 웹사이트와는 별개의 개념으로, SOL과 모든 SPL 토큰을 받아들이는, 온체인에 배포된 프로그램입니다. AuctionHouse를 사용하면 개발자는 자체 NFT 판매 프로그램을 작성할 때 발생하는 복잡성과 오류를 건너뛸 수 있습니다.

모든 Solana NFT marketplace는 AuctionHouse 프로토콜을 구현하여 NFT 등록에 대한 자동 구매자-판매자 매칭과 같은 기능의 이점을 누릴 수 있습니다.

구매자가 NFT를 "청구"해야 하는 다른 일반적인 경매 과정과 달리, 판매 트랜잭션은 필요한 모든 상호작용을 자동으로 실행합니다. 다시 말해, AuctionHouse는 최종 사용자를 위한 직관적인 동작으로 불필요한 모든 단계를 줄이면서, 개발자에게는 표준화된 프로그램을 제공합니다.

AuctionHouse에는 구성 가능한 다양한 매개변수가 있습니다. 예를 들어, 판매자는 맞춤 수수료와 트레저리 대상을 지정하여 Solana NFT 컬렉션의 부분 판매 주문을 생성할 수 있으며, 모든 트랜잭션에 auction house의 서명을 강제할 수도 있습니다. AuctionHouse는 특정 SPL 토큰 또는 모든 SPL 토큰을 받아들일 수도 있습니다.

AuctionHouse는 또한 모든 NFT 트랜잭션 영수증(예: 등록, 입찰, 판매)의 이력을 보관합니다.

#### **AuctionHouse 사용 방법**

현재 AuctionHouse는 TypeScript로 작성된 [CLI library](https://github.com/metaplex-foundation/metaplex/tree/master/js/packages/cli/src)만 제공하지만, GUI(그래픽 사용자 인터페이스) 구현이 곧 나올 예정입니다.

먼저, AuctionHouse 라이브러리를 포함하는 올인원 Metaplex를 클론합니다.

그다음, _metaplex_ 폴더의 CLI(JS) 서브폴더에서 필요한 패키지를 설치합니다.

마지막으로, 기존 키페어를 사용해 AuctionHouse를 생성할 수 있습니다.

트랜잭션이 성공하면, 커맨드 라인에 다음 메시지가 표시됩니다.

참고: 여러분의 auction house 키는 다를 것입니다

더 많은 CLI 절차는 공식 문서를 참고하세요.

### **Sugar란 무엇인가?**

Sugar는 Candy Machine v2 커맨드 라인의 대안으로, 성능이 더 뛰어나고 개발자를 위한 절차가 단순화되어 있습니다. 이는 기존 커맨드 라인 인터페이스(CLI)의 큰 복잡함과 번거로움 없이 Solana NFT 개발자가 Candy Machine v2를 배포할 수 있는 대화형 프로세스를 제공합니다.

Sugar는 문서에 명시된 것처럼 CM v2 CLI 사용 대비 여러 이점을 제공합니다:

- 미디어/메타데이터 파일 업로드 성능 향상
- _cargo_를 활용한 빌드 및 설치 절차 간소화
- 견고한 오류 처리 및 입력 유효성 검사
- 더 유용한 오류 메시지

#### **Solana NFT 드롭에 Sugar 사용하는 방법**

먼저, cargo로 Sugar 라이브러리를 설치합니다.

다음으로, 원하는 [Solana RPC 노드 제공업체](https://www.alchemy.com/overviews/solana-rpc)와 키페어로 Solana CLI 설정을 수정합니다.

마지막으로, Candy Machine을 배포하기 위한 대화형 세션을 실행합니다.

### **Hydra란 무엇인가?**

[Hydra](https://hydra-docs.glasseaters.xyz/)는 매우 많은 수의 주소 집합에 자금을 분배할 수 있게 해주는, 지갑들의 지갑입니다. 메인 지갑에서 여러 지갑으로 갈라지는 모습을 닮아 "Fanout Wallet"이라고도 불립니다. Hydra는 토큰화된 로열티(즉, 받은 로열티를 멤버들에게 분배)와 토큰 멤버십(예: 손쉬운 스테이킹 보상)과 같은 흥미로운 기능을 가능하게 합니다.

<ImageBlock
  src="https://media.alchemy.com/1703525748-hydra.png"
  alt="멤버 지갑으로 자금을 분배하는 Hydra fanout 지갑 다이어그램"
  width={441}
  height={521}
  caption="출처: Hydra Docs"
/>

Hydra wallet의 라이프사이클에는 세 단계가 있습니다:

1. Creation
1. Member Addition
1. Distribution

#### **1. Creation 단계**

Creation 단계에서 제작자(Authority라고 불림)인 여러분은 Hydra wallet을 만들 수 있습니다. 멤버십 모델, 이름, 허용되는 토큰(SOL 또는 임의의 SPL 토큰), 멤버십의 총 지분 등 다양한 방식으로 커스터마이징할 수 있습니다.

복잡한 연산과 요건 때문에 Hydra wallet을 생성하는 데는 수백 SOL이 소요됩니다.

#### **2. Member Addition 단계**

Member Addition 단계에서는 계정을 Hydra wallet의 멤버로 추가할 수 있습니다. 일반 지갑(사용자), NFT, 토큰을 추가할 수 있으며, 이는 자금 지분을 계산하는 데 더 정교한 접근이 필요합니다.

#### **3. Distribution 단계**

Distribution 단계에서는 Hydra wallet이 여러 번 호출되어 각 멤버의 지분에 따라 멤버십 자금을 각 멤버에게 분배합니다.

각 분배 호출에는 수령할 Member가 포함되어야 하며, Hydra wallet은 그 수명 동안 여러 번의 호출을 예상하고 있습니다. 이러한 멤버 1인당 1회 호출이라는 설계 덕분에 많은 수의 멤버를 다룰 때도 처리 비용과 메모리 비용을 낮게 유지할 수 있습니다.

#### **Hydra 사용 방법**

Hydra는 상호작용을 위해 호출할 수 있는 또 다른 온체인 프로그램입니다.

Hydra의 프로그램 ID는 다음과 같습니다:

- _Mainnet_: hyDQ4Nz1eYyegS6JfenyKwKzYxRsCWCriYSAjtzP4Vg
- _Devnet_: hyDQ4Nz1eYyegS6JfenyKwKzYxRsCWCriYSAjtzP4Vg

공식 문서에는 Hydra wallet과 상호작용하고 생성하기 위한 최소한의 코드 예제가 포함되어 있습니다. 다음과 같이 wallet을 생성할 수 있습니다:

몇 줄만으로 새로운 멤버(주소)를 추가할 수도 있습니다. 다음은 지갑 주소를 멤버로 추가하는 예제입니다.

### **Amman이란 무엇인가?**

Amman은 로컬 validator를 실행하여 Solana SDK 라이브러리와 앱을 테스트하기 위한 툴킷입니다. 이 툴킷은 빈번한 업데이트와 테스트가 필요한 프로젝트의 개발자 경험을 향상시키기 위해 Metaplex Foundation에서 개발했습니다.

낮은 가스 수수료에도 불구하고, mainnet에 복잡한 Solana 프로그램을 배포하는 것은 비용이 많이 들 수 있습니다. 따라서 앱과 SDK 라이브러리를 빠르게 배포하고 테스트하기 위해 개발자는 Solana devnet, testnet, 또는 로컬 validator를 사용할 수 있습니다.

testnet/devnet은 지속적인 에어드롭과 반복적인 배포-대기 과정이 필요하기 때문에, 빠르고 오프라인으로도 가능한 배포와 테스트를 위해서는 로컬 validator가 선호됩니다.

또한, 로컬 validator를 실행하면 테스트 중에 100% 가동 시간을 보장할 수 있는 반면, testnet/devnet은 그 과정에서 오프라인이 될 수도 있습니다.

Amman CLI에는 _relay_, _validator interface_, _mock storage server_가 포함되어 있으며, 이들이 함께 하나의 validator 역할을 합니다.

Amman Client에는 _asserts_, _address labeling_, _transaction interface_, 그리고 _relay_에 연결하는 클라이언트가 포함되어 있으며, 이 모두는 테스트와 브라우저에서 로컬 validator와 연결하는 데 사용해야 합니다.

#### **Amman 사용 방법**

[Amman Github 저장소](https://github.com/metaplex-foundation/amman)는 Amman을 실행하는 방법에 대한 훌륭한 가이드를 제공합니다. Amman을 사용하려면 먼저 이 저장소를 클론해야 합니다.

Amman CLI를 실행하려면 구성 파일을 만들어야 합니다. 예시는 Amman GitHub 저장소에 나와 있습니다.

구성 파일이 있으면, 다음 명령어로 로컬 validator를 시작하고 나중에 중지할 수 있습니다:

Amman Client 저장소는 테스트 스크립트나 웹 브라우저에서 사용할 수 있는 많은 TypeScript 파일을 제공합니다.

### **Metaboss란 무엇인가?**

Metaplex의 "스위스 아미 도구"라 불리는 [Metaboss](https://metaboss.rs/overview.html)는 개발자가 Metaplex 생태계 내에서 쉽게 빌드할 수 있도록 Metaplex를 감싸는 다양한 기능을 제공합니다.

Metaplex는 새롭고 빠르게 진화하는 시스템이기 때문에, 개발자들은 Metaplex와 상호작용하기 위해 각자의 함수를 직접 구현하곤 합니다. Metaboss는 일관되고 표준화된 함수를 생태계에 제공함으로써 이 과정을 돕습니다.

**Metaboss가 제공하는 기능 중 일부는 다음과 같습니다:**

- 토큰 민트 계정의 메타데이터 디코딩
- JSON 파일로부터 새로운 NFT 민팅
- 주어진 Candy Machine ID 또는 update authority에 대한 현재 NFT 보유자의 스냅샷 조회
- 주어진 update authority에 대한 모든 candy machine 상태 및 설정 계정 목록 조회
- NFT의 모든 metadata Data struct 필드 업데이트

#### **Metaboss 사용 방법**

먼저, 다음을 실행하여 Metaboss를 Solana 프로그램의 패키지로 설치합니다:

이제 Metaboss를 사용할 준비가 되었습니다!

공식 문서에는 다양한 예제가 있습니다. 예를 들어, 한 줄의 명령으로 JSON 파일에서 새로운 NFT를 민팅할 수 있습니다.

먼저 NFT를 위한 JSON 파일 _new_nft.json_을 준비합니다.

그런 다음, 다음 명령으로 원하는 개수만큼 이 NFT를 생성할 수 있습니다:

## **Alchemy에서 Metaplex를 시작하는 방법**

Alchemy는 개발자가 바로 빌드를 시작할 수 있도록 가장 강력한 무료 플랜을 갖춘 [Solana API](https://www.alchemy.com/docs/reference/solana-api-quickstart)를 제공합니다.

Alchemy에서 Metaplex NFT 프로젝트를 배포하고 싶으신가요? [무료 Alchemy 계정에 가입](https://alchemy.com/solana?a=7f82338b3d)하고 빌드를 시작하세요!
