BTC
ETH
HTX
SOL
BNB
查看行情
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

CryptoPunk世界上最早的去中心化NFT交易市場

十四君
特邀专栏作者
2022-08-15 02:59
本文約3458字,閱讀全文需要約5分鐘
CryptoPunk加密朋克不僅是一個頂級藍籌NFT項目,甚至還在其中內置了一個完全去中心化的交易服務市場,實現3種交易拍賣模式。
AI總結
展開
CryptoPunk加密朋克不僅是一個頂級藍籌NFT項目,甚至還在其中內置了一個完全去中心化的交易服務市場,實現3種交易拍賣模式。

CryptoPunk 加密朋克不僅是一個頂級藍籌NFT項目(地板價為70 ETH 約15 W 刀),更是後續ERC 721 標準協議的靈感來源。

NFT 交易市場,是目前整個區塊鏈行業中除了以太坊本身之外最高收入的賽道,而OpenSea,x2y2,LooksRare 是目前Top 3 平台,其合計交易量佔99% 以上。

今天咱們將解讀CryptoPunk 的區區230 行源碼,其對訂單模型與交易流程的實現,探索其內置的專用NFT 交易市場的優勢缺點一級標題

一級標題

圖片描述

拓展閱讀:一級標題

一級標題

1、Punk 優美的訂單模型

回想一下,咱們在現實中是如何買賣商品的,大概有三類

  1. 賣家報價,買家支付→等於超市選購

  2. 買家報價,賣家同意→等於菜市口砍價

  3. 線下議價,鏈上成交→等於線下公證拍賣

無論哪種,最終達成成交則需要執行交換,既要防止賣家不給貨,也要防止買家不給錢。

區塊鏈技術雖然完美的解決了萬一不給錢的問題,但是也帶來了議價困難的痛點,畢竟“砍一刀價格”都是要上鍊的,肯定不能用拼多多那樣的砍小數點後6 位(- 。-)

Punk 的market 同時支持這3 大類交易形式,既可以賣家報價,也可以買家報價,也可以議價後由合約幫你成交,全程無任何版稅扣取,且230 行簡短的代碼也杜絕了後門的可能

二級標題二級標題

1.1、賣家報價單Offer

與標準NFT 一樣,每個Punk 都有一個唯一ID,因此每個punk 都有一個獨佔的Offer 訂單簿,這個獨佔指的是,如果我重新報價無論是漲價還是降價,都將會替換掉前一個。

這里通過isForSale 標註是否在售,通過onlySellTo 標註指定買家,則是用於鏈下議價鏈上執行成交功能

咱們可以顯著感受到,訂單模型非常的簡單,甚至連常見的訂單有效期都沒有,只要掛單賣家不主動取消的話,就總是有可能被買家以此價格購走

特別說明:這點雖然和opensea 長時間的授權賣單類似,但不會出現異常價成交的情況,因為Punk 在轉移的時候會取消掉歷史的報價單記錄

1.2、買家投標單Bid

投標單也非常簡約,基本等於(我,想買,這個,給多少錢)四元組了。

除了賣家標價等待購買的形式,任何人均可以通過提交投標單,來聲明哪個punk 我願意用x 的金額購買,這裡同樣提供了hasBid 變量用於體現當前這個投標單是否有效

買方隨時可以取消之前的投標單,但是如果沒有更高的價格覆蓋的話,則原始的投標價格會保留(雖然已經無效),這是用於輔助其他買家定價出價的信息共享的設計

1.3、小結

1.3、小結

1.3、小結

看懂其核心的訂單簿結構後就是抓住了老鼠尾巴,其實他對應的各種方法,都是在進行對當前交易是否合理合法的審核,確定合法後,再對訂單數據做增刪查改

比如賣家成交後,會執行修改balanceOf中記錄的用戶累計持有的Punk 總量,也會修改最核心punkIndexToAddress這個記錄哪個PunkID 所有者是哪個的信息

對於標準協議的底層數據意義可拓展閱讀

二級標題

一級標題

二級標題

2.1、賣家先報價,買家再競標

如果我作為持有Punk 的尊貴用戶之一,想要賣出Punk,需3 步

賣家報價->買家提交買單->賣家提取收益

展開看看

賣家報價:賣家執行offerPunkForSale 設置願意以某價格賣掉某nft,而後訂單簿如下

買家購買:執行buyPunk 方法在交易的value 值傳入超過於賣家的minValue 即可購買成功。 **

賣家需要再次調用withdraw 提走自己本次收益(即買家buy 時存入合約的value)

如果賣家突然不想賣了:則調用punkNoLongerForSale 來報價單

二級標題

二級標題

2.2、買家先競標,賣家先確認

如果我並未持有Punk 但對某個ID 情有獨鍾,也能先出價分3 步:

買家報競標單Bid->賣家接受->賣家提取收益

展開看看

買家報價:調用enterBidForPunk,並將eth 作為value,此時錢存於punk 合約內

賣家接受:調用acceptBidForPunk,要明確按買家報價的價格接受此交易,執行後買方已經得到了此朋克NFTID

二級標題

二級標題

2.3、鏈下議價鏈上執行

最後一種更簡單了,就是完全已經談妥了價格,由賣家通過

一級標題

一級標題

3、如何評價Punk 的交易市場?

乍一看,是一個很標準的最小NFT 交易模型,確實可以準確穩定可靠的實現交易的核心環節,但有得有失,他優勢如何,而又少了什麼呢

3.1、GAS 成本低

由於鏈上只存儲了offer和Bid兩種簡約的訂單簿,且只保留最新最高價的部分(對存儲的新增需要高gas,但對修改則gas 低)詳情可見下文文末對以太坊黃皮書中定義gas 計算的解析:【源碼解讀】你買的NFT 到底是什麼?

所以Punk 市場的整體gas 消耗並不高,筆者核算了下完成買賣提取全環節,大致消耗為30 W 的gas(含買賣雙方合計支出)

按成交GAS 排序:Punk< opensea < GEM < Genie < X2Y2< Looksrare

3.2、無需手續費

目前鏈上可見Punk 累計有21 W 交易,如果5 筆交易可成交一單的話,則以及有4 W 次轉移,對於這樣數十億市值的頂級藍籌而言,不收版稅簡直是暴遣天物啊

二級標題

二級標題Punk( 0% )< X2Y2( 0.5% ) < Looksrare( 2% ) < OS( 2.5% )

3.3、對機制的缺點評價

結論1 :買賣機制不利於流動性池

NFT 而言流動性是至關重要的,而每次報價都要上鍊顯然是盆冷水,賣家不缺錢則不樂意動,買家難成交也缺乏動機,所以對報價者即收費且要求鎖定資產到Punk 此舉雖然不會出現扣款失敗的情況,但是也導致買家資產的時間的價值的損失

這點,後來Os 等平台均採用簽名的方式,來鏈下撮合購買意願,報價近乎無需gas 僅成單的時候需要鏈上登記訂單結果來執行轉移

這一擊是中心化與去中心化在效率上的爭奪,顯然現在的市場還是需要效率

結論2 :訂單模型不利於批量操作

Punk 訂單模型的簡約堪稱是交易模型的典範,然而面對批量成交的訴求呢?

  • 賣家:得每個id 每個報單,確定成交

  • 買家:得每個id 每個競價,等待成交

雖然收益的資金有可以累計後批量提取的設計,但不是重點

而批量報價成交,是現在NFT 市場的必爭之地

x2y2和Looksrare 都在這點發力作為針對os 的包圍戰,甚至拉上Gem 等聚合器打通流量池的局限性,而os 最新的SeaPort 協議也實現了捆綁交易的新訂單模型,從而可以任意資產組合對應任意資產組合直接實現市場交易

然而Punk 的源碼太過於超前,缺乏了代扣授權的功能,再也無緣批量成交

結論3 :單一拍賣流程不利於撮合成交與定價

成交是需要妥協的,而NFT 當前的價值也需要通過成交來博弈,如何為NFT 定價一直都是巨大的難題

由此常見有四大拍賣機制:

  1. 英式拍賣。公開競標往上拾價,最高出價者得

  2. 荷式拍賣。價格由高往低降,首個出價者得

  3. 第一價格拍賣。對拍品進行單獨密封報價競品,不知道其他競買人的出價

  4. 第二價格拍賣。與上類似,不同的是最後出價最高者獲勝,但只需按第二高價格支付

而這些拍賣機制(英拍荷拍)是Opensea 的基礎功能,利於促進成交與定價

最終

最終

最終

雖然我吐槽了一堆,但是如此精簡優美的NFT 協議+NFT 交易市場,僅僅使用230 行代碼就在2017 年實現,並且演變為目前世界上最有價值的藍籌NFT 之一,是值得研究的產品

未來未必只有交易市場一頭獨大,更多垂類會在自己NFT 內也內置交易功能如StepN、Axie Infinity、NBA Top Shot,而在Seaport 開源開放後內置市場就未必是功能濃縮版的代言詞了

後續筆者將繼續研究OpenSea,X2Y2,Looksrare,Gem 等頭部NFT 市場平台,從合約出發,看其優勢與局限性,有興趣的看官,速速點贊關注,後續跟進吧~

Web3.0
NFT
歡迎加入Odaily官方社群