---
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 是一个基于 Trifle 程序构建的 NFT 组合性功能，允许 NFT 根据各个组成部分被重新组装或重新排列。Trifle 程序是 [Metaplex](https://www.alchemy.com/overviews/metaplex) 最常用的程序之一 Token metadata 的扩展**。借助 Token metadata，Trifle 增加了灵活性、构建复杂 NFT 所有权模型的能力，并为 NFT 项目添加了链上追踪等功能。

### **什么是可组合 NFT？**

**可组合 NFT 是一种灵活的 NFT，允许各个 NFT 组成部分被重新排列以构建复杂的模型。**

一个典型的组合性例子是乐高积木——它的结构允许与其他乐高积木连接，进而形成复杂的模型。因此，组合性指的是各组成部分之间相互支持或允许建立关联，从而被重新组装或排列，形成更复杂结构的能力。可组合 NFT 建立在 Trifle 程序之上。

### **metaplex 的 fusion 有哪些应用场景？**

**Metaplex 的 Fusion 在游戏、NFT 和去中心化金融等多个加密生态系统中都有应用场景。**

#### **1. 游戏**

Fusion 的灵活性和组合性功能非常适合现代 web3 游戏中的资产游戏化。游戏内资产可以实时组合以形成其他 Token。例如，如果游戏中有两颗星星，且这两颗星星的价值等于 1 颗钻石，你可以将两个 Token 组合在一起，并对其进行链上追踪。

#### **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 获得原本赋予创作者的权益和功能，以及链上追踪等其他功能。

### **什么是 Token 所有权规则？**

创作者可以为 Token 所有权设定三种类型的规则和限制——none、Metaplex certified collections 和 Token set。其他所有限制条件都归属于这三种主要类型之下。

#### **1. None**

当不需要任何要求或规则时设置此项，它允许任何 Token 的转移。可以将其理解为允许来宾在没有门票的情况下进入活动现场。

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

当 Token 被要求属于某个特定 collection 时设置此项。

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

当被铸造的 Token 被要求与 set 中的某个 Token 相匹配时设置此项。

## **fusion 使用哪些 Solana 账户？**

Metaplex Fusion 使用两种账户——escrow constraint model 账户（它是 Token metadata 程序/合约的扩展）和 Trifle 账户。

### **什么是 escrow constraint model 账户？**

**escrow constraint model 账户规定了在某条指令可以用于访问 Trifle 账户之前必须满足的要求。** Escrow 账户使用 hashmap 来实现其数据结构，通过哈希函数将键映射到值。

在 escrow model 账户中，键是 Constraint/slot 的名称，而值是约束类型（只能是 None/Collection 或 TokenSet）以及 Token 上限（escrow 账户中允许的最大 Token 数量）。

constraint model 账户的一个独特功能是：用于相似用途的 NFT 可以连接到同一个 escrow constraint model。此外，该 constraint model 还可以作为一个"银行"，用于存储 Trifle 用户为每条指令支付的费用。

### **什么是 trifle 账户？**

**Trifle 账户管理并追踪存储在链上 COE 账户中的 Token，并在执行过程中与 Escrow constraint 账户相关联。** Trifle 账户使用 hashmap 来管理这些 Token。

#### **与 escrow constraint 和 trifle 账户相关的指令：**

1. **Create Escrow Constraint Model Account** - 用于创建一个 escrow model 账户
1. **Create Trifle Account** - 用于创建一个 Trifle 账户
1. **Transfer In** - 用于将 Token 转入由 Trifle 账户管理的 COE
1. **Transfer Out** - 用于将 Token 从由 Trifle 账户管理的 COE 中转出

transfer in 指令会检查 constraint model，以验证即将转入的 Token 是否满足指定要求；transfer out 指令会检查 constraint model，以验证即将转出的 Token 是否满足指定要求。

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

在程序层面，使用 Fusion 涉及三个步骤：创建父 NFT、定义 NFT 的 schema，以及设置 Trifle 账户。

### **第一步：创建父 NFT**

以下是一个创建父 NFT 的典型代码示例。

**以下是代码所做的事情：**

#### **A. 生成一个新的 KeyPair 对象**

KeyPair 对象由一个公钥和一个私钥组成，并将其赋值给 nftMint 变量。它将被用作该 NFT 的 mint（发行方）。

#### **B. 调用 findTriflePda 函数**

接下来，以 nftMint 对象的公钥和 updateAuthority 对象作为参数调用 findTriflePda 函数。findTriflePda 函数会返回一个程序地址，该地址将被用作该 NFT 的 Trifle 账户。

#### **C. 调用 NFT 的 create 方法**

调用 Metaplex 对象中 NFTs 属性的 create 方法，并传入一个包含以下属性的对象作为参数：

- **URI** - 一个字符串，将用作该 NFT 的静态 URI
- **name** - 一个字符串，表示该 NFT 的名称
- **sellerFeeBasisPoints** - 一个数字，表示该 NFT 的卖方费用，以 basis points 为单位
- **useNewMint** - nftMint 对象，将被用作该 NFT 的 mint（发行方）

**注意**：URI 字符串是通过将以下各项用斜杠连接而构成的：

- METAPLEX_BUCKET 常量
- TrifleAddress 数组的第一个元素
- 字符串 ".json"

调用 create 方法后，它会返回一个代表该父 NFT 的值。

### **第二步：定义 schema**

schema 是数据在数据库中组织方式的蓝图。在 Fusion 中，constraint model 有一个字段/slot 叫做 **schema** 字段，它决定了 NFT 的某些属性的组织方式。

#### **以下是每个 schema 属性所代表的含义：**

- **type** - 表示该 schema 的类型
- **layers** - 表示 Trifle 账户中的不同 slot
- **defaults** - 表示在比较和组合 Fusion 元数据时所使用的默认元数据

### **第三步：设置 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) 节点账户！
