热点新闻

最新数字货币、比特币热点资讯

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

2025-05-19 15:21 热点新闻

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

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

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

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

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

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

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

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

    之后在钱包里面进行确认就可以 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

    相关新闻

    优惠注册送USDT