---
title: "什麼是 Metaplex 的 Fusion 工具？"
description: "了解 Metaplex 的 Fusion 概觀、運作方式與應用場景"
---

# 什麼是 Metaplex 的 Fusion 工具？

身為 Solana 上的 launchpad，[Metaplex](https://www.alchemy.com/dapps/metaplex) 協助創作者發行並擴展他們的 NFT，而其 Fusion 計畫則在此願景上進一步建構與擴展。Fusion 是 Metaplex 為 Solana 區塊鏈上的創作者帶來更多 [NFT](https://www.alchemy.com/overviews/solana-nft-analytics-tools) 相關功能的計畫之一。本文將詳細介紹 Fusion 計畫的運作方式，以及如何設定它。

## **什麼是 fusion？**

**Fusion 是一項 NFT 可組合性（composability）功能，建構於 Trifle 程式之上，讓 NFT 能依據個別組件重新組裝或重新排列。Trifle 程式是 [Metaplex](https://www.alchemy.com/overviews/metaplex) 最常被使用的程式之一——Token metadata 的延伸**。在 Token metadata 的基礎上，Trifle 增加了彈性、建立複雜 NFT 所有權模型的能力，並為 NFT 專案加入鏈上追蹤等功能。

### **什麼是可組合 NFT？**

**可組合 NFT 是具有彈性的 NFT，允許個別 NFT 組件重新排列以建構出複雜的模型。**

一個典型的可組合性範例是樂高積木——它的結構允許與其他樂高積木連接，進而能組成複雜的模型。因此，可組合性指的是各組件之間能夠彼此支援或允許相互關聯，進而重新組裝或重新排列以形成更複雜結構的能力。可組合 NFT 是建構在 Trifle Program 之上的。

### **metaplex 的 fusion 有哪些應用場景？**

**Metaplex 的 Fusion 在多個加密生態系統中都有應用場景，例如遊戲、NFT 和去中心化金融。**

#### **1. 遊戲**

Fusion 的彈性與可組合性功能非常適合現代 web3 遊戲中的資產遊戲化。遊戲內資產可即時組合成其他代幣。舉例來說，如果遊戲中有兩顆星星，且這兩顆星星的價值等於 1 顆鑽石，你可以將這兩個代幣組合，並在鏈上追蹤。

#### **2. NFT**

透過 Fusion，相容的 NFT 圖片可以被組合成新的圖片。例如，個別 NFT 可以是拼圖碎片，或汽車的零件，這些零件可以組合在一起，創造出全新的 NFT。

#### **3. DeFi**

NFT 現在可以被打包或組合在一起，並在去中心化交易平台上出售。

## **metaplex 的 fusion 如何運作？**

**Fusion 使用 Trifle，這是一個以 Token Metadata 程式為延伸建構的 NFT 可組合性程式。** Fusion 程式由多個不同的 Metaplex 程式組成，這些程式旨在為建構在 Solana 上的 NFT 帶來更多功能。Fusion 可用於強化 [應用程式](https://www.alchemy.com/dapps/top/defi-dapps) 與 NFT 交易市場，同時也讓創作者能夠為 NFT 的交易與所有權設定規則。

## **什麼是 trifle 程式？**

**Trifle 程式是 Metaplex 的 Token Metadata 程式的延伸，透過使用 Creator-Owned Accounts（一種延伸自 Token metadata 程式的 NFT 託管帳戶）來實現 NFT 的可組合性。**

託管帳戶有兩種類型：TOE（Token owned escrow）和 COE（Creator owned escrow）。Trifle 程式使用 COE，並指定一個 [Program Derived Address (PDA)](https://www.alchemy.com/overviews/program-derived-address) 作為該 NFT 的創作者，讓 PDA 獲得創作者所享有的權益與功能，例如鏈上追蹤等其他功能。

### **什麼是代幣所有權規則？**

創作者可以設定三種與代幣所有權相關的規則與限制——none、Metaplex certified collections，以及 Token set。其他所有限制都歸屬於這三種主要類型之下。

#### **1. None**

當不需要任何要求或規則時，會設定此項，並允許轉移任何代幣。可以將其視為允許來賓在沒有入場券的情況下參加活動。

#### **2. Metaplex certified collections**

當代幣必須屬於特定 collection 時，會設定此項。

#### **3. Token set**

當鑄造的代幣必須與該 set 中的某一個代幣相符時，會設定此項。

## **fusion 使用哪些 Solana 帳戶？**

Metaplex Fusion 使用兩種帳戶——escrow constraint model 帳戶（Token metadata 程式/合約的延伸），以及 Trifle 帳戶。

### **什麼是 escrow constraint model 帳戶？**

**escrow constraint model 帳戶說明了在使用某個指令來存取 Trifle 帳戶之前必須滿足的要求。** Escrow 帳戶使用 hashmap 來實作其資料結構，透過雜湊函式將鍵（key）對應到值（value）。

在 escrow model 帳戶中，key 是限制條件／slot 名稱，而 value 則是限制類型（只能是 None、Collection 或 TokenSet）以及代幣上限（escrow 帳戶中允許的最大代幣數量）。

constraint model 帳戶的一項獨特功能是，用於類似用途的 NFT 可以連結到同一個 escrow constraint model。此外，constraint model 也可以作為儲存 Trifle 使用者為每個指令所支付費用的資金庫。

### **什麼是 trifle 帳戶？**

**Trifle 帳戶負責管理與追蹤儲存在鏈上 COE 帳戶中的代幣，並在執行過程中與 Escrow constraint 帳戶連結。** Trifle 帳戶使用 hashmap 來管理這些代幣。

#### **與 escrow constraint 及 trifle 帳戶相關的指令：**

1. **Create Escrow Constraint Model Account** - 用於建立 escrow model 帳戶
1. **Create Trifle Account** - 用於建立 Trifle 帳戶
1. **Transfer In** - 用於將代幣轉入由 Trifle 帳戶管理的 COE
1. **Transfer Out** - 用於將代幣從由 Trifle 帳戶管理的 COE 中轉出

transfer in 指令會檢查 constraint model，以驗證即將轉入的代幣符合指定的要求；transfer out 指令則會檢查 constraint model，以驗證即將轉出的代幣符合指定的要求。

## **如何使用 metaplex fusion**

在程式層級，使用 Fusion 涉及三個步驟：建立父 NFT、定義 NFT 的 schema，以及設定 Trifle 帳戶。

### **步驟一：建立父 NFT**

以下是建立父 NFT 的典型程式碼範例。

**這段程式碼的作用如下：**

#### **A. 產生一個新的 KeyPair 物件**

KeyPair 物件由一個公鑰（public key）和一個私鑰（private key）組成，並將其指派給 nftMint 變數。這將用作該 NFT 的 mint（發行者）。

#### **B. 呼叫 findTriflePda 函式**

接著，以 nftMint 物件的公鑰及 updateAuthority 物件作為參數呼叫 findTriflePda 函式。findTriflePda 函式會回傳一個程式位址，該位址將作為該 NFT 的 Trifle 帳戶。

#### **C. 呼叫 NFT 的 create 方法**

呼叫 Metaplex 物件之 NFT 屬性的 create 方法，並傳入一個具有以下屬性的物件作為參數：

- **URI** - 一個字串，將作為該 NFT 的靜態 URI
- **name** - 一個字串，代表該 NFT 的名稱
- **sellerFeeBasisPoints** - 一個數字，代表該 NFT 的賣家費用（以基點表示）
- **useNewMint** - nftMint 物件，將作為該 NFT 的 mint（發行者）

**注意**：URI 字串是由以下項目以斜線串接組成：

- METAPLEX_BUCKET 常數
- TrifleAddress 陣列的第一個元素
- 字串 ".json"

呼叫 create 方法後，會回傳一個代表父 NFT 的值。

### **步驟二：定義 schema**

Schema 是資料在資料庫中如何組織的藍圖。在 Fusion 中，constraint model 有一個名為 **schema** 的欄位／slot，用於決定 NFT 部分屬性的組織方式。

#### **以下是每個 schema 屬性所代表的意義：**

- **type** - 代表這是哪一種 schema
- **layers** - 代表 Trifle 帳戶中不同的 slot
- **defaults** - 顯示在比較與組合 Fusion 的 metadata 時所使用的預設 metadata

### **步驟三：設定 trifle 帳戶**

最後一步是設定 Trifle 帳戶，但根據 [Metaplex 文件](https://docs.metaplex.com/programs/fusion/getting-started)，設定 Trifle 帳戶的相關說明目前尚未提供。

## **立即開始在 Solana 上開發**

Metaplex 的 Fusion 用於在 Solana 上建立可組合 NFT。若要開始在 Solana 上開發，立即向 Alchemy 註冊免費的 [Solana RPC](https://www.alchemy.com/dapps/list-of/rpc-node-providers-on-solana) 節點帳戶！
