從零搭建NFT去中心化交易所:合約與前端開發指南

從零構建NFT去中心化交易所

閱讀過前面幾篇文章的讀者應該了解,對於ERC-20協議代幣,我們可以通過某DEX等去中心化交易所進行交易。那麼對於ERC-721協議,也就是NFT來說,如何實現去中心化交易呢?

目前主流的NFT交易平台多採用掛單方式交易,類似於將商品陳列在超市貨架上,買家覺得價格合適就可以購買。

本文將通過編寫智能合約和簡單前端頁面,實現NFT的去中心化交易。需要注意的是,本文內容僅供學習參考,不適用於生產環境。

Web3新手系列:從零實現一個NFT DEX

NFT(非同質化代幣)

NFT即非同質化代幣,遵循ERC-721協議,每個Token都是獨一無二的。通常NFT在錢包中會顯示不同的圖片,並且每組NFT都有唯一的ID用於區分。

由於NFT的特性,無法像ERC-20那樣通過價格曲線設定價格。目前比較常見的交易方式是通過訂單簿形式。

Web3新手系列:從零實現一個NFT DEX

訂單簿交易

訂單簿模式簡單來說就是人爲設定商品價格,區別於某些DEX通過價格曲線計算價格的方式。訂單簿一般有兩種交易模式:

  1. 定價單:賣家設定出售價格,買家覺得合適就可以購買。

  2. 求購單:買家發出求購訂單,賣家覺得價格合適就可以出售。

通常求購單價格會低於定價單。本文只介紹第一種定價方式。

Web3新手系列:從零實現一個NFT DEX

NFT DEX的基本功能

一個NFT DEX應該包含以下基礎功能:

  1. 上架商品:將NFT按定價上架
  2. 購買商品:根據NFT定價進行購買
  3. DEX手續費:按成交價格比例收取手續費

上架商品

上架商品需要完成:

  1. 前端:用戶選擇NFT並設定價格,點擊上架。
  2. 合約:用戶授權合約操作NFT。

合約中需維護用戶上架商品價格Map,可以放在中心化服務中以減輕合約負擔,本文中將保存在合約內。

購買商品

購買商品時會發生:

  1. 前端:用戶選擇想購買的NFT,點擊購買。
  2. 合約:將買家資金轉給賣家,NFT轉給買家。

Web3新手系列:從零實現一個NFT DEX

實現NFT DEX

我們將從零開始實現一個NFT DEX。

1. 創建NFT

爲測試需要,我們可以通過Remix快速創建一個ERC-721協議的NFT。也可以跳過此步驟,直接使用現有NFT。

Web3新手系列:從零實現一個NFT DEX

2. 合約編寫

合約方法應包含:

2.1 賣家上架NFT

流程:

  1. 用戶選擇NFT
  2. 設置價格(可用穩定幣或ETH計價)
  3. 授權NFT給合約

上架方法需要:

  1. 校驗NFT所有權
  2. 添加上架記錄
  3. 觸發上架事件

Web3新手系列:從零實現一個NFT DEX

2.2 買家購買NFT

合約執行步驟:

  1. 讀取NFT數據
  2. 計算並扣除手續費
  3. 轉移NFT給買家
  4. 觸發購買事件

Web3新手系列:從零實現一個NFT DEX

2.3 取消上架

將上架記錄的isActive字段設爲false。

2.4 提取手續費

DEX可在每筆交易中收取手續費,存入合約或轉至指定地址。本文採用存入合約方式。

Web3新手系列:從零實現一個NFT DEX

3. DEX前端開發

使用工具:

  • Ant Design Web3:連接錢包和展示NFT卡片
  • Wagmi:與錢包交互
  • Nextjs + Vercel:部署項目

前端包含三個頁面:Mint、Buy和Portfolio。

3.1 連接錢包

使用Ant Design Web3的連接組件實現錢包連接。

Web3新手系列:從零實現一個NFT DEX

3.2 Mint

使用wagmi的useWriteContract方法實現NFT鑄造。

Web3新手系列:從零實現一個NFT DEX

3.3 Portfolio

展示用戶NFT,支持上架和下架操作。使用opensea API獲取NFT列表,通過合約判斷是否已上架。

Web3新手系列:從零實現一個NFT DEX

3.4 Buy

展示已上架NFT,支持購買操作。調用purchaseNFT方法完成交易。

Web3新手系列:從零實現一個NFT DEX

至此,一個具備基礎功能的NFT DEX前端頁面就完成了,可部署到Vercel上。

Web3新手系列:從零實現一個NFT DEX

查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 8
  • 轉發
  • 分享
留言
0/400
空投猎手王vip
· 08-09 19:23
gas炒到天上了 别研究这些了
回復0
Crypto凤凰vip
· 08-08 21:10
底部区间真就是最佳开发时机啊 耐心等待开花结果
回復0
LiquidityOraclevip
· 08-07 16:48
哈?又造一个nft交易所?
回復0
GateUser-afe07a92vip
· 08-07 02:57
终于能把存着的猴子出手了
回復0
LiquidityWitchvip
· 08-07 02:56
酿造一些禁忌的去中心化交易魔法... 不得不说,这个市场结构确实需要一个黑暗仪式的升级。
查看原文回復0
Blockblindvip
· 08-07 02:51
开发不开发的 就是卖呗
回復0
瞎猫碰到死老鼠vip
· 08-07 02:50
啊哈 终于有人讲这个了
回復0
MEV猎人老王vip
· 08-07 02:45
哎呀又一个纸上谈兵的教程
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)