---
title: "什么是 dynamic NFT（dNFT）？"
description: "dNFT 是什么，以及如何创建"
---

# 什么是 dynamic NFT（dNFT）？

非同质化代币（NFT）已在数字艺术、游戏、体育卡牌、音乐等领域创造了数十亿美元的销售额。大多数人一提到 NFT，想到的通常是静态的图片、视频或多媒体资产。

但是，[动态 NFT](https://www.alchemy.com/docs/alchemy-quickstart-guide)（dNFT）正日益受到重视。本文将介绍什么是动态 NFT，dNFT 现有及潜在的应用场景，以及想要构建 dNFT 的开发者如何利用预言机获取经过信任最小化处理的链下数据和计算。

## 什么是动态 NFT？

**动态 NFT 是一种能够根据特定情形发生变化的非同质化代币。** 由于能够响应外部事件和数据进行适配和变化，dNFT 正在拓展 NFT 所能处理的设计空间。

目前，NFT 最常见的用途是数字艺术：艺术家创建一个代表数字艺术作品的代币，例如[单版 NFT（1-of-1 NFT）](https://www.alchemy.com/overviews/solana-1-of-1-nfts)，收藏者购买该代币以证明所有权。新铸造的 NFT，其 tokenID 不会改变。

需要注意的是，你并不一定要为 NFT 提供描述、图片或其他属性等信息。从最基本的层面看，NFT 就是一个可转移的、带有唯一标识符（称为 tokenID）的代币。

这种静态 NFT 模式在多个方面帮助了全世界的数字艺术家。此前，数字艺术家无法阻止甚至无法追踪其原创作品的非法传播，因为任何两个文件之间都无法被区分。这意味着无法保留单一的原始文件。

这是互联网历史上第一次，创作者能够在证明所有权的前提下，向粉丝出售数字艺术作品。粉丝也能证明自己拥有一件原创作品，即便底层的图片可以被复制。

如今，静态 NFT 被广泛用于[生成式 NFT 艺术项目](https://www.alchemy.com/overviews/solana-generative-nfts)、边玩边赚（play-to-earn）游戏以及数字收藏品。除了这些应用场景外，它们对房产证书、专利等现实世界资产及其他唯一标识物的数字化，也提供了一种独特的价值主张。

但这种方式存在局限：静态 NFT 一旦上链便无法更改，其元数据也无法修改。以下是一些人们希望 NFT 能够支持数据更新的例子：

- 现实世界资产的代币化
- 制作可持续推进剧情的视频游戏
- 在区块链上构建梦幻体育联赛
- 以及更多其他场景

动态 NFT 使 NFT 既能保留其唯一 ID，又能获得更新后的信息。

动态 NFT 是指能够响应外部事物而发生变化的 NFT。dNFT 中的变化通常意味着智能合约修改了元数据。之所以能够实现这一点，是因为 NFT 智能合约内置了自动更新机制，用以告知底层 NFT 其信息应在何时、以何种方式发生变化。

## 动态 NFT（dNFT）是如何运作的？

支撑这一技术的是智能合约，它使动态 NFT 得以同时利用链下和链上计算来实现增长。当用户请求某个 NFT 时，智能合约会同时查看链下和链上数据，以决定向用户返回什么内容。

1. 首先，NFT 请求被发送到智能合约
1. 智能合约在区块链上查找信息
1. 合约向预言机请求不在链上的信息
1. 智能合约随后返回一份或两份媒体内容

这意味着，正是智能合约使 NFT 能够随时间发生变化。因此，智能合约会同时利用链下和链上数据来判断某个非同质化代币是否应该发生变化，如果需要变化，则更新该动态 NFT 的元数据。

## 预言机在动态 NFT 中是如何使用的？

除了元数据更新之外，还可能出现动态特性。例如，当增强现实应用中的某个隐藏位置被发现时，可以生成相应的动态 NFT。

除了信息本身，dNFT 还可能带有“隐藏特性”，只有在用户与之交互时才会显现出来。像 NFT 这样完全独一无二、可以以不同方式配置的代币，其编程方式几乎是无穷无尽的。

不过，大多数 dNFT 仍需要包含某种元数据变化，以便不擅长技术的用户也能“看到”这些变化。dNFT 设计中一个经常被忽视的部分，是如何获取实现安全、公平且自动化的 dNFT 流程所需的数据和功能。

链上和链下的外部变量，都可能以多种方式改变 dNFT 的元数据。然而，区块链本身无法访问或处理链外的数据。

预言机通过提供多种可用于触发 dNFT 更新的链下数据和计算服务，绕过了这些限制。预言机充当了链上与链下两个世界之间的桥梁，使得构建自动化、去中心化、甚至“有趣”的 dNFT 流程成为可能——随着 dNFT 生态系统的发展，NFT 也将与现实世界产生更紧密的联系。

## 如何创建动态 NFT（教程）

在开始制作自己的动态 NFT 之前，先确定你的项目、其变量，以及你想使用的链。

例如，你可能想创建一个 Ethereum NFT，让它根据 ETH 价格变换图片：当 ETH 价格上涨时，NFT 图片显示为牛市图案；当 ETH 价格下跌时，NFT 图片显示为熊市图案。

确定方案后，就该搭建你的开发环境了。

### 创建 dNFT 所需的工具

在开始之前，请确保你已具备以下所需工具：

- [免费的 Alchemy 账户](https://alchemy.com/?a=990c6ced09)
- IDE
- 访问 [dNFT 教程的 Github 仓库](https://github.com/zeuslawyer/chainlink-dynamic-nft-alchemy)
- IPFS companion
- 一个水龙头（faucet）以及测试网代币

环境搭建完成后，以下是使用 Alchemy 构建 dNFT 的基本步骤。

### 创建动态 NFT 的步骤

以下是 Alchemy [动态 NFT 教程](https://www.alchemy.com/docs/alchemy-quickstart-guide)的简要概述，该教程会根据市场价格改变 NFT 的样式。

1. 设置 ERC721 代币
1. 在 IPFS URI 中上传 NFT 图片链接
1. 完成编译检查
1. 使 NFT 合约“兼容 Keepers”
1. 让智能合约与 [Chainlink](https://www.alchemy.com/dapps/chainlink) 价格预言机（Price feeds）交互，使 NFT 能根据你定义的变量（在本例中为市场价格）发生变化
1. 测试你的 dNFT，检查其是否按预期动态更新
1. 铸造并部署你的 dNFT！

以上是创建 dNFT 的简化流程。完整版本请阅读我们的分步指南。

## 常见的动态 NFT 案例

LaMelo Ball 是一名职业篮球运动员，已发行了八款不同的 **LaMelo Ball NFT**。他的每一款 dNFT 都会追踪他不同的数据指标，例如篮板、助攻和得分，并根据其比赛数据发生变化。

例如，如果他在一场比赛中拿下 10 次助攻，NFT 的背景颜色可能会随之改变。根据 LaMelo 持续的表现，动态 NFT 持有者可以获得参加专属抽奖以及其他仅限 NFT 持有者享有的权益的机会。

在这八款 NFT 中，有一款名为 **Gold Change NFT**，附带一个条件：如果 LaMelo Ball 在 2021 NBA 赛季获得最佳新秀奖，该 NFT 将发生变化。在 LaMelo 获奖后，这枚 NFT 变成了一张完全不同的图片。

另一个例子是 **Regenerative Resources（RRC）**，这是一家生态系统服务公司，致力于将受损土地转变为具有盈利能力的海洋环境。

RRC 宣布发行由知名艺术家创作的五部 Short Film NFT。销售所得资金将用于通过 RRC 现有项目种植和培育 1 亿棵红树林。每部 Short Film NFT 最初只会显示一帧画面。当该 NFT 被买卖时，短片会逐帧展示，直到持有者能够看到完整的影片内容。
