---
title: "關於 Solana Metaplex，你需要知道的一切"
description: "它是什麼、為何重要，以及運作方式"
---

# 關於 Solana Metaplex，你需要知道的一切

[Metaplex](https://www.alchemy.com/dapps/metaplex) 是一套用於 Solana 的 NFT 標準與工具集合。了解如何使用 Metaplex 進行 Solana NFT 鑄造、NFT 空投、NFT 商店等操作！

## **什麼是 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、舉辦一級/二級市場銷售拍賣，並以標準化方式呈現 NFT。

### **Metaplex 智能合約**

Metaplex 生態系統由四個各自獨立的合約組成，這些合約透過 Metaplex 合約互相溝通，為 Solana 開發者提供建立 NFT 所需的工具。

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

此合約被稱為「mint decorator」，讓 NFT 創作者能夠將 Metadata PDA（Program Derived Address，程式衍生位址）附加到其 mint 上。此關聯的 PDA 包含 NFT 系列的基礎資訊，例如名稱、代號、版稅費用與售出狀態。

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

正如其名，Token Vault 合約可以保管來自任何 mint 存入的 NFT，並支援對該金庫及其中 NFT 進行部分持有。

金庫有兩種狀態：Activated（已啟用）與 Combined（已合併）。

當狀態為「**Activated**」時，金庫中的任何 NFT 都會被鎖定且無法存取。金庫擁有者此時可以在金庫上發行並出售資金份額，藉此對金庫中的 NFT 建立部分持有權。

只有在沒有任何未流通的部分持有份額時，也就是金庫擁有者持有所有份額時，金庫才能轉換為「**Combined**」狀態。若要取回金庫中的 NFT，金庫擁有者必須在市場上買回所有部分持有份額，之後才能「合併（Combine）」該金庫。

#### **3. Auction**

Auction 合約作為 Metaplex 上的拍賣機制，支援 **English Auction** 與 **Open Edition Auction** 兩種格式的 NFT 拍賣。

作為一個簡單的出價與銷售程式，Auction 在運作時不需要了解 NFT 或 Metaplex 生態系統中的其他資源。這種分離大幅降低了故障點，並提升了 Auction 程式的彈性。

#### **4. Metaplex**

Metaplex 合約提供 **AuctionManagers**，用於管理上述三個主要合約。AuctionManager 記錄所有 token metadata 及其對應的拍賣，並讓 Token Metadata、Token Vault 與 Auction 合約之間的帳戶資料能夠順暢轉換。

## **Metaplex 工具與功能**

以下是 Metaplex 最重要的功能，包括它們的作用、使用時機、重要性，以及如何開始使用這些功能進行開發！

### **什麼是 metaplex storefront？**

Metaplex Storefront 是一個一站式的 [NFT marketplace](https://www.alchemy.com/dapps/best/nft-marketplaces)，可透過 Metaplex 合約建立並銷售 NFT。與 [centralized Solana NFT marketplaces](https://www.alchemy.com/overviews/solana-nft-marketplaces)（例如 [Magic Eden](https://www.alchemy.com/dapps/magic-eden)）不同，任何人都可以將 Storefront 建立並自行架設為白牌解決方案，也可以使用現有的品牌 Storefront。

Metaplex Storefront 這項可自行架設的獨特功能，讓使用者能充分享受 Solana 去中心化帶來的優勢，因為他們可以建立自己的 NFT marketplace。

#### **如何使用 metaplex 建立 storefront**

以下是建立 Storefront 的簡要概述，詳細內容請參閱 [Metaplex’s original documentation](https://docs.metaplex.com/)。

首先，你需要在 Github 上複製（clone）並啟動 Metaplex Storefront 的原始碼。

接著，前往 http://localhost:3000/ 並將 Solana 網路切換為 Devnet。

如果你不熟悉 Solana 測試網路，請閱讀我們的 [complete guide to using Solana's devnet](https://www.alchemy.com/overviews/solana-devnet)。

然後，點擊「Init Store」並批准交易，以初始化 Storefront。

<ImageBlock
  src="https://media.alchemy.com/1703524810-metaplex-homepage.png"
  alt="Metaplex Storefront 設定頁面，含 Init Store 按鈕"
  width={1600}
  height={1046}
  caption="Metaplex 首頁"
/>

在 Store configuration 區段中，複製該程式碼並貼到位於 _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 的預設使用者介面，你可以鑄造 NFT 並將其上架銷售，可選擇「Buy Now」即時銷售選項，或以拍賣方式上架。建立 NFT 時，你可以指定描述、版稅與圖片。

由於 Metaplex 的 Storefront NFT 工具是開源且可自訂的，你可以更新 fork 出來的 GitHub 程式碼，以修改使用者介面（UI）並新增新功能，例如建立 NFT 金庫或銷毀 NFT。

### **什麼是 Candy Machine v2？**

Candy Machine（CM）是一套[鏈上生成式 NFT 分發程式](https://www.alchemy.com/overviews/candy-machine-v2)，旨在為買家、賣家與創作者整體簡化 NFT 體驗。

Candy Machine V2 是第二個版本，具備改進與新增的功能。在 CM 出現之前，Solana 上並沒有通用的程式來管理 NFT 的鑄造與銷售，這導致 NFT 創作者與收藏者遇到大量錯誤與不佳的使用體驗，進而促使 Metaplex 開發團隊打造 Candy Machine。

Candy Machine 解決了 NFT 分發中的根本問題，讓使用者與 NFT 的互動更加輕鬆：

- 定義精確的鑄造時間區間
- 只有在 NFT 可被鑄造時才接受買家的資金
- 透過強制執行 metadata 型別，協助程式建立一致性的 NFT

Candy Machine v2 新增了更多功能：

- **不可預測的鑄造索引** - 由於 v1 是依序鑄造，此功能可防止買家搶先鎖定系列中的特定 NFT
- **白名單** - 僅允許特定地址進行鑄造
- **Captcha** - 防止機器人進行鑄造

此外，v2 現已支援更大型的系列、隱藏後揭曉（hide-and-reveal）發行方式，讓 web3 開發者可以隨時更新設定，並暫停正在進行的鑄造。

#### **如何使用 Candy Machine v2**

由於 Candy Machine 是完全在鏈上運作的 NFT 鑄造程式，所有互動都必須以程式化方式進行，雖然有一些使用者介面可以自動化部分功能，但使用者仍需具備基礎的程式設計經驗，才能充分運用 Candy Machine。若要開始使用 CM v2，請參閱 Metaplex 的官方文件。

### **什麼是 gumdrop？**

Gumdrop 是一款新的 beta [Solana 空投工具](https://docs.metaplex.com/airdrops/create-gumdrop)，可以低 gas 成本進行空投。Gumdrop 由 Metaplex 社群開發，透過鏈下方式（例如社群媒體）發送兌換連結，讓大量使用者能夠取得空投。它為專案方提供了一個簡單且低成本的方案，用於分發與 Metaplex 整合的代幣。

與傳統空投機制（代幣直接出現在使用者的 [Solana wallet](https://www.alchemy.com/overviews/solana-wallets) 中）不同，Gumdrop 採用「拉取式」（pull-based）模式，使用者必須主動領取代幣，否則將放棄該筆代幣。Gumdrop 利用 merkle tree 來檢查使用者是否在白名單中，這使得鏈上計算能夠快速完成。

Gumdrop 支援多種 Solana 上的代幣空投類型：

- 代幣空投
- Candy Machine 預售
- Edition 版本印製

在所有情況下，空投都會根據白名單使用者建立 merkle tree，並以鏈下方式分發兌換連結。

#### **如何使用 gumdrop**

你可以以程式化方式使用 Gumdrop，或透過[引導式 Solana 空投使用介面](https://lwus.github.io/metaplex/)進行互動操作。程式化操作步驟請參閱官方文件。若要使用圖形使用者介面（UI），請依照以下指示操作：

<ImageBlock
  src="https://media.alchemy.com/1703525166-gumdrop.jpg"
  alt="Gumdrop airdrop 介面，含 Create、Claim、Close 動作"
  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 頁面：選擇 airdrop claim 方式"
  width={1098}
  height={396}
  caption="Gumdrop airdrop 類型"
/>

接著，選擇一種鏈下分發方式。

<ImageBlock
  src="https://media.alchemy.com/1703525366-off-chain-distribution-method.png"
  alt="Gumdrop Create 頁面：選擇 off-chain 分發方式"
  width={1114}
  height={542}
  caption="Off-chain 分發方式"
/>

根據所選項目，你需要填寫額外的輸入內容，包括 mint 地址，以完成建立。

在 **Claim** 頁面中，使用者可以發起空投的領取，此操作會透過 Solana 空投白名單的 merkle tree 進行驗證。

<ImageBlock
  src="https://media.alchemy.com/1703525518-airdrop-claim-initiation.png"
  alt="Gumdrop Claim 頁面，用於發起 airdrop claim"
  width={942}
  height={1250}
  caption="Airdrop claim 發起"
/>

在 **Close** 頁面中，創作者可以透過提供私鑰與 mint 地址來刪除一筆 Gumdrop 空投。

一旦關閉，使用者將無法再領取該空投的代幣。

<ImageBlock
  src="https://media.alchemy.com/1703525625-delete-airdrop.png"
  alt="Gumdrop Close 頁面，用於刪除現有 airdrop"
  width={1132}
  height={562}
  caption="刪除 airdrop"
/>

### **什麼是 AuctionHouse？**

AuctionHouse 是一套**鏈上、無需託管（escrow-less）的 NFT 銷售程式**，讓創作者與鑄造者能夠順暢地拍賣與銷售 NFT。AuctionHouse 與自行架設的前端 Storefront 網站是不同的概念——它是一個部署在鏈上的程式，接受 SOL 以及任何 SPL token。透過使用 AuctionHouse，開發者可以省去自行撰寫 NFT 銷售程式時的複雜性與錯誤。

任何 Solana NFT marketplace 都可以實作 AuctionHouse 協定，藉此享有其功能，例如針對 NFT 上架自動配對買賣雙方。

與其他常見拍賣流程中買家需要「領取」NFT 不同，銷售交易會自動執行所有必要的互動。換句話說，AuctionHouse 將所有非必要步驟簡化為終端使用者直覺的操作，同時為開發者提供一套標準化的程式。

AuctionHouse 提供多種可設定的參數。舉例來說，賣家可以為某個 Solana NFT 系列建立部分銷售訂單，並自訂手續費與資金流向目的地，也可以要求所有交易必須經過拍賣行簽署。AuctionHouse 也可以選擇接受特定或所有 SPL token。

AuctionHouse 也會保存所有 NFT 交易憑證的歷史紀錄（例如上架、出價與銷售）。

#### **如何使用 AuctionHouse**

目前，AuctionHouse 僅提供以 TypeScript 撰寫的 [CLI library](https://github.com/metaplex-foundation/metaplex/tree/master/js/packages/cli/src)，圖形使用者介面（GUI）的實作即將推出。

首先，複製（clone）包含 AuctionHouse library 的全功能 Metaplex 專案。

接著，在 _metaplex_ 資料夾中的 CLI（JS）子資料夾內安裝必要的套件。

最後，使用現有的 keypair，即可建立一個 AuctionHouse。

交易成功後，你的命令列應該會顯示以下訊息。

注意：你的 auction house key 會有所不同

更多 CLI 操作流程，請參閱官方文件。

### **什麼是 sugar？**

Sugar 是 Candy Machine v2 命令列的替代方案，效能更佳，也為開發者簡化了操作步驟。它為 Solana NFT 開發者提供一個互動式流程，讓他們能夠部署 Candy Machine v2，而無需經歷原本 Command Line Interface（CLI）中的諸多複雜與麻煩。

根據其文件記載，Sugar 相較於 CM v2 CLI 提供了許多優勢：

- 上傳媒體/metadata 檔案時效能更佳
- 利用 _cargo_ 簡化建置與安裝流程
- 更完善的錯誤處理與輸入驗證
- 更具參考性的錯誤訊息

#### **如何使用 sugar 進行 Solana NFT 發行**

首先，使用 cargo 安裝 Sugar library。

接著，以你想使用的 [Solana RPC node provider](https://www.alchemy.com/overviews/solana-rpc) 及你的 keypair 修改 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 wallet 將資金分發給成員錢包的示意圖"
  width={441}
  height={521}
  caption="來源：Hydra Docs"
/>

Hydra 錢包的生命週期分為三個階段：

1. Creation（建立）
1. Member Addition（新增成員）
1. Distribution（分發）

#### **1. 建立階段**

在建立階段，你（創作者，即 Authority）可以建立一個 Hydra 錢包。這裡有多種可自訂的面向，例如成員模型、名稱、接受的代幣（SOL 或任何 SPL token），以及成員資格的總份額。

由於其運作與需求較為複雜，建立一個 Hydra 錢包的成本可能高達數百 SOL。

#### **2. 新增成員階段**

在新增成員階段，你可以將一個帳戶新增為 Hydra 錢包的成員。你可以新增一般錢包（使用者）、NFT，以及代幣，其中代幣的資金份額計算方式較為複雜。

#### **3. 分發階段**

在分發階段，Hydra 錢包會被多次呼叫，依照各成員的份額，將資金分發給每一位成員。

每一次分發呼叫都必須指定接收的成員，而 Hydra 錢包在其生命週期中預期會被多次呼叫。這種「每次呼叫對應一名成員」的設計，讓錢包在處理大量成員時，仍能維持較低的處理與記憶體成本。

#### **如何使用 hydra**

Hydra 是另一個部署在鏈上、可被呼叫互動的程式。

Hydra 的程式 ID 如下：

- _Mainnet_：hyDQ4Nz1eYyegS6JfenyKwKzYxRsCWCriYSAjtzP4Vg
- _Devnet_：hyDQ4Nz1eYyegS6JfenyKwKzYxRsCWCriYSAjtzP4Vg

官方文件提供了簡短的程式碼範例，說明如何與 Hydra 錢包互動並建立錢包。你可以這樣建立一個錢包：

你也可以只用幾行程式碼新增新的成員（他們的地址）。以下是將某個錢包地址新增為成員的範例。

### **什麼是 amman？**

Amman 是一套工具組，透過執行本地驗證節點（local validator）來測試 Solana SDK library 與應用程式。此工具組由 Metaplex Foundation 開發，用於提升需要高頻更新與測試的專案的開發體驗。

儘管 gas 費用低廉，在 mainnet 上部署複雜的 Solana 程式仍可能成本過高。因此，為了快速部署與測試應用程式及 SDK library，開發者可以選擇使用 Solana devnet、testnet，或本地驗證節點。

由於 testnet/devnet 需要持續進行空投，並反覆進行部署與等待的流程，因此若要快速、無需網路連線地進行部署與測試，較建議使用本地驗證節點。

此外，執行本地驗證節點可保證測試期間 100% 的正常運行時間，而 testnet/devnet 在此過程中可能會發生離線的情況。

Amman CLI 包含 _relay_、_validator interface_ 與 _mock storage server_，這三者共同構成一個驗證節點。

Amman Client 則包含 _asserts_、_address labeling_、_transaction interface_，以及一個連接 _relay_ 的客戶端，這些都應用於測試與瀏覽器中，以連接本地驗證節點。

#### **如何使用 amman**

[Amman Github repo](https://github.com/metaplex-foundation/amman) 提供了一份詳盡的指南，說明如何執行 Amman。你需要複製（clone）該儲存庫，才能開始使用 Amman。

若要執行 Amman CLI，你需要建立一個設定檔。Amman GitHub repo 中提供了一份範例。

有了設定檔後，你可以使用以下指令啟動並在之後停止本地驗證節點：

Amman Client repository 提供許多可用於測試腳本或網頁瀏覽器中的 TypeScript 檔案。

### **什麼是 metaboss？**

[Metaboss](https://metaboss.rs/overview.html) 被譽為 Metaplex 的「瑞士刀工具」，它提供許多圍繞 Metaplex 打造的功能，讓開發者能夠輕鬆在此生態系統中進行開發。

由於 Metaplex 是一個嶄新且快速演進的系統，開發者往往需要自行實作與 Metaplex 互動的功能。Metaboss 透過提供一致且標準化的功能，協助簡化這個過程，造福整個生態系統。

**Metaboss 提供的部分功能包括：**

- 解碼 token mint 帳戶的 metadata
- 從 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 APIs](https://www.alchemy.com/docs/reference/solana-api-quickstart)，並附有市面上最完善的免費方案，讓開發者能夠立即開始建置。

想在 Alchemy 上部署你的 Metaplex NFT 專案嗎？[Sign up for a free Alchemy account](https://alchemy.com/solana?a=7f82338b3d) 立即開始建置！
