Web3新手系列:从零实现一个NFT DEX

Odaily星球日报发布于2025-05-20更新于2025-05-20

文章摘要

本文将通过编写智能合约和一个简单的前端页面,实现 NFT 的去中心化交易。

看过前面几篇文章的用户应该知道,对于 ERC-20 协议的代币,我们可以通过以 Uniswap 为代表的 DEX 进行交易,做到去中心化。那么对于 ERC-721 协议,也就是 NFT 来说,如何做到去中心化交易呢。

目前主流的一些 NFT 交易所,采用的是挂单的方式进行交易,就像是把一件件商品列到超市的货架上一样,购买者觉得价格合适,就可以把商品带回家。

本文将通过编写智能合约和一个简单的前端页面,实现 NFT 的去中心化交易。注意本文只供学习使用,并不能真实用在生产环境。

NFT(Non-Fungible Token)

NFT 也就是非同质化代币,即每一个 Token 都是非同质的,不一样的,它遵循 ERC-721 协议。一般来说每一个 NFT 在钱包里面会展示不一样的图片,并且每一组 NFT 都会有一个独一无二的 ID 来区分。

Web3新手系列:从零实现一个NFT DEX

由于 NFT 的特性,它没有办法和 ERC-20 一样通过价格曲线来设定价格——因为每一个 Token 都是不一样的。所以目前比较常见的交易方式是通过订单簿的形式。

订单簿交易

订单簿模式简单来说就是商品的价格是人为设定的,有别于 Uniswap 这种通过价格曲线计算价格的方式。订单簿一般来说会分为两种交易模式,一种是定价单,即卖家设定一个自己心里的出售价格,如果有买家觉得价格合适,就可以由买家进行购买。另一种是求购单,即买家根据自己的需求,发出一笔求购订单,当卖家觉得价格合适时,就可以由卖家进行出售。

一般来说,求购单的价格会低于定价单的价格。本文只介绍第一种定价方式。

NFT DEX 的功能

一个 NFT DEX 的基础功能应该包含以下基本的功能:

  1. 上架商品:将一个 NFT 按照定价进行上架

  2. 购买商品:根据 NFT 的定价进行购买

  3. DEX 手续费:根据成交的价格按比例收取手续费

上架商品

上架商品需要做以下几件事情:

  1. 前端:用户选择自己的 NFT,并且设定一个价格,点击上架。

  2. 合约:用户需要给合约设置权限,可以操控用户的 NFT。

这样商品就算上架完了。在合约中,需要维护一份用户的上架商品价格 Map,这部分数据一般来说是可以做到中心化的服务中,以减少合约的负担,但是在本文中这部分 Map 数据会维护在合约里面。

购买商品

购买商品的时候会发生一下几件事情:

  1. 前端:用户选择一个想要购买的 NFT,点击购买。

  2. 合约:调用合约,将用户的钱转到 NFT 的卖方,并将 NFT 转到买方。

实现一个 NFT DEX

在本章节,我们将会从零开始实现一个 NFT 的 DEX,这是笔者已经部署好的 DEX 地址 nft-dex-frontend.vercel.app。

Web3新手系列:从零实现一个NFT DEX

1. 创建一个 NFT

为了测试需要,我们最好是能够有一个自己的 NFT。我们可以通过 Remix 快速搭建一个 ERC-721 协议的 NFT,它提供了对应的模板。

Web3新手系列:从零实现一个NFT DEX

我们按照模板可以方便地部署一个 NFT。当然你也可以跳过这一个步骤,直接使用我们准备好的 NFT。

2. 合约编写

我们的合约方法应该包含一下几个方法:

2.1. 卖家上架 NFT

卖家需要指定要售卖的 NFT 以及对应的价格。在上架时,用户需要签署 NFT 的授权方法,让我们的智能合约有权限操作这个 NFT,这样当有买家购买之后,这笔交易可以自动成交。

所以流程应该是这样的: 1. 用户选择自己的 NFT;2. 设置价格,这里的计价可以是稳定币 USDT、USDC,也可以是 ETH;3. 授权 NFT 给到合约。

之后就可以调用合约的上架方法了,该方法需要做以下几件事情:

  1. 对 NFT 的所有权进行校验

  2. 添加上架记录

  3. 触发上架的事件

Web3新手系列:从零实现一个NFT DEX

2.2. 买家购买 NFT

买家在购买 NFT 的时候,用户只需要选择自己想要的 NFT,并支付相应的代币即可。合约层面会执行以下几个步骤: 1. 从「 listings 」中读取到对应的 NFT 数据;2. 根据 NFT 的价格,计算手续费,并从成交价中扣除这部分;3. 转移 NFT 到买家手中;4. 触发购买的事件

Web3新手系列:从零实现一个NFT DEX

2.3. 取消上架

当然,卖家可能会觉得价格不合适,会选择取消上架。可以看到我们在保存上架信息的地方,保留了一个 isActive 的字段,用于表明该商品是否有效,因此在取消上架的时候,我们只需要将这个字段设置为 false 即可。

Web3新手系列:从零实现一个NFT DEX

2.4. 提取手续费

DEX 可以在每一笔的交易中收取手续费,这个手续费即可以存到合约里,也可以转存到另一个你自己的地址中去,本文采取存到合约里的方式。

Web3新手系列:从零实现一个NFT DEX

到此为止,我们的合约基本功能就算完整了。

3. DEX 前端开发

在开始之前,我们需要准备一些工具,包含如下几个工具:

  1. Ant Design Web3:用于钱包的连接以及 NFT 卡片的展示。

  2. Wagmi:用于和钱包进行交互。

  3. Nextjs + Vercel:部署我们的项目。

我们的前端应用应该包含三个页面,Mint、Buy 以及 Portfolio,Mint 是为了让用户能够 Mint 我们的 NFT,仅仅用于演示,Buy 的话是我们的 DEX 商城,用户可以在里面购买我们的 NFT,Portfolio 里面用户可以对 NFT 进行上架和下架操作。

3.1. 连接钱包

连接用户的钱包,使用 Ant Design Web3 实现

连接用户的钱包的过程非常简单,使用 Ant Design Web3 提供的连接组件即可。

首先我们在项目的外层包一个 Provider, 这样在后续的代码里面我们就能用到 Ant Design Web3 的能力。另外由于我们需要连接 sepolia 测试链,为了速度考虑,建议使用一些节点服务来提高数据查询的速度,我这里使用的是 ZAN 的 endpoint,它非常适合在亚太环境下使用,速度快并且价格非常划算,支持的链也很丰富。

Web3新手系列:从零实现一个NFT DEX

之后在需要连接钱包的地方放置一个连接按钮:

Web3新手系列:从零实现一个NFT DEX这样就算是搞定了,非常的简单。

3.2. Mint

Mint 一个 NFT,获得测试代币可以前往 https://zan.top/faucet/ethereum

在 Mint 页面我们可以 Mint 测试用的 NFT。Mint 是一个写合约的操作,这里我们要用到 wagmi 里面的 useWriteContract 方法。我们需要指定好合约地址、合约的 ABI 以及合约参数即可。

Web3新手系列:从零实现一个NFT DEX

之后在钱包里面进行确认就可以 Mint 成功了。

3.3. Portfolio

管理用户的 NFT

在这里需要展示用户所有的 NFT。我们可以使用一些 NFT API 来获取,这里使用 opensea 的 API,因为支持 sepolia 测试链的 NFT API 并不多。

在获取到用户的 NFT 列表之后,需要判断是否已经是上架了的,未上架的支持上架,已上架的支持下架。判断的方式是通过 DEX 合约里面「 getSellerListings 」方法里面获取用户已经上架的 NFT,然后根据这些 NFT 的「 isAlive 」字段来判断是否正在上架。

Web3新手系列:从零实现一个NFT DEX

上架的时候需要调用「 listNFT 」合约方法,在取消的时候需要调用「 cancelListing 」方法。在上架之前,需要额外调用 NFT 的授权方法,将 NFT 授权给合约,这样在后续交易成交之后,这个 NFT 就可以自动转给买方。

Web3新手系列:从零实现一个NFT DEX

3.4. Buy

在 Buy 里面可以购买 NFT

首先我们需要对已经上架的 NFT 进行展示。类似于 Portfolio 里面的展示用户已有的 NFT,这里不同点在于一个是全局的,不再是某个用户,另一个是只需要展示 isAlive 的 NFT。

购买的时候使用「 purchaseNFT 」方法,在调用这个方法的时候,需要用 ETH 来支付售价。

Web3新手系列:从零实现一个NFT DEX

这里的这个「 value 」就是买家需要支付的 ETH。

这样一个包含所有基础能力的 DEX 前端页面就完成了,我们可以将其部署在 vercel 中。

本文由 ZAN Team(X 账号 @zan_team) 的 Yeezo(X 账号 @GaoYeezo 75065 )撰写。

热门币种推荐

你可能也喜欢

BTC市场脉搏:第27周

比特币市场在27周延续跌势,价格一度跌破6万美元,后在5.8万美元附近获得支撑,周末稳定在6万美元左右。尽管下行势头较本月早前的抛售有所缓和,但买家迄今缺乏推动持续复苏的信心,价格仍在局部低点附近区间震荡。 市场结构持续调整,资金仍在收缩,参与者转向防御姿态。现货市场交易活动增加,但净卖出持续,表明当前流动性主要用于减持而非增持比特币。 衍生品市场杠杆持续缩减,未平仓合约减少,交易者更偏好下行保护而非方向性敞口。期权偏斜远超历史区间,显示对冲需求旺盛;资金费率相对低迷,反映市场在价格趋稳下仍保持谨慎。 机构情绪同样疲软。美国现货ETF整体转为未实现亏损状态,持续净流出表明机构投资者不愿增加敞口。ETF高交易量显示活跃度高,但资金流向仍呈净流出。 链上指标较为均衡。实体调整后的转账量回升,表明大规模资金持续流动;网络手续费需求低迷,暗示底层网络活动平淡。同时,热资本占比上升,意味着更多供应由短期价格敏感投资者持有,增加了市场的波动风险。综合来看,比特币看似在6万美元区域企稳,但在现货订单流、衍生品头寸和机构需求均呈防御态势的情况下,持续复苏可能需要买方信心实质性地回归。

insights.glassnode4小时前

BTC市场脉搏:第27周

insights.glassnode4小时前

交易

现货

热门文章

什么是Altura NFT ?

成长学院:学习“Altura NFT“ ,瓜分5000 USDT代币奖励

6.0k人学过发布于 2024.06.11更新于 2024.06.12

什么是Altura NFT ?

GoMining: NFT让比特挖矿变得更简单

GoMining NFT(也称为数字矿机或NFT矿机)提供了一种由特定数量算力(以TH为单位)支持的智能且可扩展的解决方案。

6.2k人学过发布于 2024.07.15更新于 2024.07.15

GoMining: NFT让比特挖矿变得更简单

什么是 AINFT

EternaFi 代理与 $AINFT:Web3 生态系统中 AI 驱动的 NFT 基础设施的全面分析 人工智能(AI)与区块链技术的交汇点正在迅速发展,建立创新平台,重新定义所有权模型和经济参与。EternaFi 代理及其原生代币 $AINFT 体现了通过非同质化代币(NFT)对 AI 基础设施进行代币化的突破性方法。该项目由 Nova Club 的开发团队于 2025 年 7 月推出,EternaFi 将 AI 的进步与区块链的去中心化金融机制相结合,为 Web3 生态系统内的参与者提供了独特的投资机会。本文旨在对 EternaFi 代理进行深入评估,涵盖其核心组成部分、功能及其在加密领域的重要性。 介绍与项目概述 EternaFi 代理是区块链技术如何民主化访问先进 AI 能力的显著例子。该项目旨在通过多样化经济参与,重塑 AI 所有权的范式,使复杂的 AI 系统能够被更大范围的利益相关者所接触。项目的核心是对 Nova Club 开发的专有大型语言模型(LLM)进行代币化,使 NFT 持有者能够获得该模型经济表现的部分收益。 通过利用代表 LLM 权益的 NFT,EternaFi 代理促进了一种模式,使利益相关者不仅参与 AI 服务的消费,还能分享平台所产生的经济回报。这种变革性的方法使 AI 服务的发展能够建立可持续的收入模型,同时促进广泛的社区参与并促进透明的治理。 什么是 EternaFi 代理? EternaFi 代理代表了一个 AI-NFT 基础设施项目,旨在将 AI 的能力与区块链技术融合在一个连贯的生态系统中。该项目的基本特征是创建作为金融工具的 NFT,代表 Nova Club 专有 AI 基础设施的所有权份额。每个 NFT 象征着对基础 AI 系统经济表现的直接接触,为投资者提供了丰厚的机会。 该项目运行在 Base 区块链 上,以其可扩展性和高效性而闻名,从而确保可管理的交易成本,同时促进无缝的操作体验。一个显著的特点是收入分享机制,NFT 持有者可以获得由平台提供的 AI 服务所产生的部分订阅收入。这种创新的方法在 AI 服务的成功与分配给持有者的经济红利之间建立了联系,从而确保社区内利益的一致性。 EternaFi 代理的创造者是谁? EternaFi 代理的创作力量是 Nova Club,一个位于新加坡的开发团队,擅长将 AI 和区块链技术结合在一起。他们在 AI 开发和加密货币分析方面的先前经验为该项目增添了可信度,为 EternaFi 代理的创建贡献了广泛的专业知识。Nova Club 的使命是民主化对尖端 AI 技术的访问,同时建立可持续的经济模型,使用户和开发者都能受益。 他们对透明度、社区治理和创新的承诺体现在 EternaFi 平台的设计和实施中,旨在建立一个独特的生态系统,促进积极的参与和长期价值创造。 EternaFi 代理的投资者是谁? 关于支持 EternaFi 代理的投资者或投资组织的具体细节并未公开。然而,EternaFi 通过向公众出售 NFT 采取了包容性的方法来资助其开发,允许各种参与者投资于该生态系统。该项目的架构确保核心基础设施得到负责任的资金支持,同时允许社区成员参与 AI 服务所产生的所有权和经济回报。 这种模式通过使投资者和项目开发者的利益一致,强调了社区参与,创造了一个鼓励长期参与的合作环境。 EternaFi 代理是如何运作的? EternaFi 代理通过一个多层次的生态系统运作,其中 NFT 作为项目内所有权表示的主要手段。每个 NFT 持有者有权分享由基础 AI 驱动的平台产生的每月订阅收入,从而将 NFT 所有权定位为一种丰厚的投资工具。 收入生成机制 EternaFi 平台的主要收入来源于与提供的 AI 服务相关的订阅费用。用户可以访问各种分级服务,从基本市场分析工具到全面的 AI 辅助交易解决方案。这些服务被货币化,并形成收入分享框架的基础,通过自动化智能合约将利润分配给 NFT 持有者。 EternaFi 生态系统的一个创新特点是透明的收入分享机制,确保奖励根据 AI 平台运营的可验证指标进行分配。这在 AI 服务的表现与社区投资者可获得的回报之间建立了直接联系,从而建立了可持续的经济模型。 质押和归属机制 EternaFi 的参与者可以通过质押他们的 NFT 来解锁额外的经济利益。归属计划旨在促进参与者的长期承诺,奖励那些持续支持项目的人。这确保了利益的一致性,并培养了实现项目长期目标所必需的社区参与感。 透明治理 EternaFi 代理拥抱去中心化治理,允许 NFT 持有者在平台的发展和未来方向的决策中发挥积极作用。治理结构包括社区投票机制,为 NFT 持有者提供了影响重大决策的机会,促进了项目增长的合作方式。 EternaFi 代理的时间线 EternaFi 代理的发展轨迹展示了在满足社区参与者需求的同时,建立可持续 AI 基础设施的系统化方法。以下是该项目历史上重要里程碑的时间线: 2025 年 7 月: EternaFi 代理的推出,包括 NFT 的公开销售和 $AINFT 代币在 Base 区块链上的部署。 2025 年第四季度: 建立市场基础设施,包括流动性池和为 NFT 持有者推出质押仪表板。 2026 年: 启动社区参与计划,扩展 AI 能力,并与跨链技术集成。 2026 年第四季度: 实施红利分配系统,使 NFT 持有者能够从其投资中获得经济利益。 这些里程碑标志着专注于建立一个功能性和参与性生态系统,同时确保持续演变以满足市场需求。 技术基础设施与区块链集成 EternaFi 代理基于一个先进的技术框架,将 AI 系统与区块链能力相结合。该项目运行在 Base 区块链上,利用可扩展性和低交易成本的优势。基础智能合约架构管理 NFT 所有权、收入分享和社区管理功能,确保效率和透明度。 AI 系统开发 支撑 EternaFi 代理的专有大型语言模型是独立开发的,旨在满足无需依赖外部专有框架的收入生成应用。这一努力反映了创建一个多功能和适应性强的 AI 基础设施的承诺,能够为用户提供有意义的服务,从而为投资者创造经济价值。 安全措施 EternaFi 安全基础设施的稳健性至关重要。定期审计和严格的安全措施确保 AI 系统和区块链机制的完整性,保护免受潜在漏洞的影响,同时增强参与者的信心。 结论 EternaFi 代理在人工智能和区块链技术领域标志着一项创新,开启了社区所有权和经济参与先进 AI 能力的途径。该项目通过 NFT 对 AI 基础设施进行代币化的全面策略为未来的去中心化生态系统树立了先例。 通过将技术复杂性与以用户为中心的经济模型相结合,EternaFi 不仅促进了参与,还为社区参与者生成了可持续的收入分享框架。EternaFi 的重要性远不止于其运营成功,它还展示了区块链如何民主化尖端 AI 技术,为未来在这一交叉领域的冒险铺平道路。 EternaFi 代理的演变可能预示着一个新的 AI 发展时代的到来,特征是参与者驱动的治理、可持续的经济模型和透明的验证,最终有助于更广泛地民主化 AI 和技术在各行业的可及性。

1.9k人学过发布于 2025.08.14更新于 2025.08.14

什么是 AINFT

相关讨论

欢迎来到HTX社区。在这里,您可以了解最新的平台发展动态并获得专业的市场意见。以下是用户对NFT(NFT)币价的意见。

活动图片