Paradigm 與 Hasu 最新研究:NFT 高效啓動機制設計指南
鏈聞 - ChainNews 2021-10-19 00:00
從 Loot、Meebit 等啓動示例入手分析,一個好的 NFT 啓動應該滿足什麼指標?
撰文: Hasu 和 Anish Agnihotri,前者爲著名加密貨幣研究者、Uncommon Core 播客主持人 ,後者爲區塊鏈投資機構 Paradigm 副研究員
編譯:Perry Wang
區塊鏈徹底顛覆了開源軟件的募資方式,但並非一切新模式都能從一開始就運轉良好。事實上,2016-2018 年的首次代幣發行(ICO)多數淪爲非常糟糕的案例,項目創始人可以在未交付任何產品之前就能兌現籌集獲得的財富。加密社區從那以後吸取了很多教訓,當前的項目在代幣發行、發幣激勵使用和去中心化治理之前,都會先拿出一個可運行的產品。
事實證明,非同質化代幣(NFT)是另一個明顯很契合加密產品市場的產品,但它們正在經歷自己的成長陣痛。每個 NFT 的生命週期都始於 NFT 的啓動(有時也稱爲鑄造 / mint 或空投 / drop)。具體到 NFT 啓動,首先是創建新的系列 NFT,將其出售並分發給買家,然後買家決定持有它或在二級市場上進行交易。
與任何首次發售的商品一樣,NFT 的啓動面臨着定價挑戰:如何爲以前從未定價過的商品定價。但與多數其他商品銷售不同的是,NFT 在高度對抗性環境中發生的難度更大,這些環境(公有鏈)的大量特質已經將沒有經驗的用戶拒之門外。 因此,開發者必須設計對開發工作有效且健全的機制。
本文從真實世界的啓動示例(都曾傷害了自己的用戶)入手分析,以確定一個好的 NFT 啓動應該滿足什麼指標。我們接下來將啓動的構想拆解爲單獨的步驟,探索每個步驟的設計空間。最後,我們提供了一個自認爲設計良好的啓動機制,供社區使用和日趨完善。
損害用戶的實例
隨着時間推移,我們開始注意到,NFT 啓動中的某些設計模式會始終給用戶帶來糟糕的結果。
作弊
當 NFT 新系列啓動時,用戶可以與其智能合約進行交互,以創建具有隨機屬性集的 NFT。這些屬性往往具有不同的稀缺性,使某些組合比其他組合更稀有和更有價值。 例如,10,000 個 CryptoPunks 中只有 9 個具有超稀有的「外星人」屬性,其中最便宜的一個現在的市場掛牌價爲 35,000 ETH。
不同的人出於各種原因參與新 NFT 的鑄造,很多人享受的是買盲盒和抽中隱藏稀有款的興奮。從這個意義上說,NFT 鑄造只是模擬世界(例如,交易卡遊戲的補充包)和數字世界(例如,視頻遊戲中的裝備箱)中流行的扭蛋(盲盒)機制的延續。
參加扭蛋遊戲的人往往會做出一個重要的假設:他們從隨機分佈的物品中抽取,並且有實際(儘管很小)機率獲得非常罕見品種。不幸的是,過去的 NFT 鑄幣項目經常無法滿足這一假設並創造真正的隨機性。在實踐中,具備高度技術性和積極性高的團體能夠利用作弊機制、狙擊藏品最稀有的品類,將它們從誠實的參與者手中奪走。
我們將分享兩個 NFT 鑄幣項目被通過這種模式盤剝的案例。兩次漏洞盤剝事件都依賴於相同的兩步過程:
- 盤剝者提取集合的元數據,使其單個稀有度得分表中展示出所有特徵的相對頻率。使用這一得分表,他們可以迅速找出集合中價值最高的 NFT。
- 然後,盤剝者打破鑄造合約的隨機性,只鑄造他們想要的價值最高的稀有 NFT。
Loot 衍生品和鏈上原數據盤剝
最近,一個名爲 Loot 的項目以颶風之勢席捲了 NFT 世界。該項目看似簡單,但包含 8,000 個戰利品袋,由胸甲、足甲、手甲、頭盔、頸部、戒指、腰部和不同稀有度的武器裝備組成。
每個項目槽的所有屬性都直接存儲在合約中,鑄幣者收到了一個僞隨機 Bag,Bag ID 被用作哈希值。雖然只要以太坊存在,這些裝備就永久存在,但鏈上存儲的元數據也將 Loot 的僞隨機性暴露給了作弊者。他們通過在本地模擬隨機化函數,快速抓取了所有 8,000 個 Bag 的元數據,獲取了整個系列的圖片(和衍生品的稀有度)。有了這些信息,他們只需要利用合同最後剩下的弱點:能夠準確地鑄造他們想要的 ID,並只狙擊最稀有的裝備 Bag。
不過,儘管這種漏洞攻擊很簡單,但有理由相信,沒有人能真正盤剝原始的 Loot 所鑄成的 NFT:
來源 : https://github.com/Anish-Agnihotri/blog-effective-nft-launches-data/tree/master/01-exploitable-fairness/loot
我們一直觀察裝備袋的稀有性,直到鑄幣結束的最後一刻,我們發現,稀有物品在鑄幣的整個時間範圍內分佈良好,這表明,沒有一場嚴重的盤剝案例。
Loot 沒有被盤剝,有兩種可能的解釋:
- 這是一份全新的合約,因此人們還沒有準備好或沒有時間發現漏洞。
- 鑄造 Loot 的可提取價值(EV)尚不清楚,因爲該藏品的價值幾天後纔在二級市場上爆炸式上漲。這一 nNFT 系列花了 2.5 小時才全部售完,進一步支持了這一假設。
然而,隨着 Loot 價格不斷上漲, More Loot 和 Extension Loot 等一系列衍生項目開始出現,其中大部分只是原始 Loot 合約的小型分叉。新的 NFT 系列繼承了 Loot 的薄弱環節,但具有更高的市場價值,並吸引了更高的的關注度。這些所鑄 NFT 的公平性(或缺乏公平性)產生了很大的影響。
More Loot
依據鑄造時間對 More Loot 中稀有物品的分佈與原始 Loot 之間進行比較,可以發現,More Loot 中存在作弊的跡象變得非常明顯。 僅僅幾個區塊之後,所有稀有的 NFT 都已被鑄造出來,之後的鑄造者只能喫到殘羹剩飯,他們基本上不知道老練的用戶已經對這次 NFT 啓動動了手腳。
來源: https://github.com/Anish-Agnihotri/blog-effective-nft-launches-data/tree/master/01-exploitable-fairness/mLoot
下圖:紅線表示 Anish 在 Twitter 上公開 他的稀有度分數的時間點,爭奪可用稀有包的競賽隨之揭開序幕。
來源 : https://github.com/Anish-Agnihotri/blog-effective-nft-launches-data/tree/master/01-exploitable-fairness/mLoot
此外,由於 More Loot 的供應量不斷膨脹,因此可以預期作弊者會對未來登場的裝備 dai 進行預先評分,並競相鑄造高分裝備袋。
Extension Loot
與 More Loot 類似, Extension Loot 有一個單一地址可以鑄造最稀有十個裝備袋中的五個(所有鑄造的 NFT 紅色高亮顯示)。獨特的是,這些鑄幣隱藏在近處視線中,因爲作弊者會隨着時間分發它們和可用的裝備袋,然後再連續瞄準稀有裝備袋。
來源 : https://github.com/Anish-Agnihotri/blog-effective-nft-launches-data/tree/master/01-exploitable-fairness/xLoot
Meebit NFT 和鏈下原數據作弊
Meebits 曾是備受期待的 NFT 鑄幣項目,由 CryptoPunks 的創建者 Larva Labs 提供的 20,000 個獨特 3D 角色組成。
Larva Labs 知道精明的用戶可以使用元數據集來計算稀有性並狙擊稀有 NFT。 爲了解決這個問題,他們設計了自己的網站,讓買家可以看到每個 Meebit NFT 的完整元數據,但這些數據只能在它被鑄造出來之後。
雖然該網站明確隱藏了未鑄造的 Meebit,但有人檢查了源代碼,發現 Larva Labs 從 IPFS 中提取了元數據。 他們使用這些信息抓取 IPFS 以提取未鑄造的 Meebit NFT 的元數據,從中找出最想要的 NFT 個體。
不過,Larvalabs 仍然沒有讓開發者輕鬆得逞:與 Loot 不同,用戶無法創建特定的 Meebit ID。相反,利用鏈上隨機性生成哈希(理論上仍可被礦工作弊)使這一特定用戶更難鑄造稀有的 Meebit。
然而,作弊者「魔高一丈」。他們寫了一份 購買 Meebit NFT 的合約,查看他們的 ID,然後「刷初始」。 具體來說,Meebit 合約是一個帶有 mint() 函數的 ERC721 標準合約,它返回一個隨機的 Meebit ID。 開發者的合約會調用 mint,根據他們的稀有度列表檢查返回的 Meebit ID,如果它沒有超過某個稀有度分數,則還原交易(示例代碼)。使用這個技巧,他們只需支付大約 0.03 ETH 來檢查每個 ID,而不是花費 2.5 ETH 直接購買每個 Meebit。
雖然攻擊者在這一過程中消耗了許多失敗的交易,並因此產生了 gas 費用,但他們卻獲得了約 400 ETH 的利潤。 今天,同一個作弊者可以通過 Flashbots 捆綁發送他們的交易,並且只有在獲得他們想要的 ID 之一時才向礦工付款——使得交易還原完全免費。
攻擊者鑄造並出售了 Meebit #16647,後者具有超級稀有的「訪客」特徵
Gas 拍賣
9 月時,以太坊每 Gas 的基本費用曾在七個 epoch 超過了 1,250 gwei。令人震驚的是,所有這七起事件都是因爲備受期待的 NFT 發佈而導致以太坊網絡癱瘓。
從左到右:G’EVOLS, The Sevens, Sipher, Galaxy Eggs, Omnimorphs + ArtBlocks Democracity, Galactic Apes, King Frogs
這些 NFT 啓動大多采用固定價格、先到先得 (FCFS) 機制。 由於價格低廉且需求過多,獲取此類 NFT 的競爭從合約銷售變爲內存池中的 Gas 拍賣競爭。
其中一個例子是 The Sevens NFT 空投事件,這是一個備受期待的 7,000 張反烏托邦角色的頭像 NFT 集合。 每個 NFT 的初始價格爲 0.07 ETH,熱切的參與者急於訪問合約。在短短 6 分鐘內,Gas 價格達到 12,246 gwei 的峯值,參與者中位數爲每個 NFT 支付了約 1.49 ETH,而最高的 5% 個人僅爲從合約中鑄造 NFT 就用 爲每個 NFT 支付了超過 2.44 ETH 的 Gas 費用。
在 Sevens NFT 鑄造期間,區塊基礎費用快速飛漲
Gas 拍賣的問題不僅在於使得以太坊的使用更具挑戰性,而且通過以這種方式「濫用」公共內存池,它們爲所有以太坊用戶創造了負面的外部性。還強迫用戶爲同一個 NFT 支付不同的金額,因投標不足而導致數以千計的交易失敗,對用戶造成傷害。
高技能用戶的優勢
正如我們之前充分見識到,以太坊是一片黑暗森林(備註:鏈聞翻譯版),高技能的對抗性角色總是在四處尋找暴利機會。 NFT 鑄幣項目,尤其是買家希望在鑄幣後在二級市場獲得溢價的稀有鑄幣項目,爲技術嫺熟的各方提供了跑贏普通參與者的有利可圖機會。
這些參與者通過機器人和自動化策略直接與 NFT 鑄幣合約交互,通常繞過前端,有時甚至繞過內存池。
TIMEPieces NFT 空投就是一個很好的現實例子。操縱先進機器人的黑客在 NFT 鑄造過程之前檢查了 nft.time.com 前端源代碼。通過這種方式,他們能夠在主網上找到已部署的鑄幣合約,並提前數小時構建機器人。因此這些機器人在 NFT 鑄造期間具有顯著的搶跑優勢,這批 NFT 在不到三分鐘的時間內完全售罄。當普通參與者連上他們的錢包並提交交易時,已經顆粒無收。
此外,部分參與方使用 Flashbots 來繞過以太坊公共內存池,提交直接到礦工的交易。雖然 TIMEPieces 合約限制參與者每個地址最多鑄造 10 個 NFT,但機器人操縱者 0x35…ce5 提前計劃,將資金分配到五個錢包,在單個 Flashbots 包中狙擊了 50 個 NFT。即使向礦工支付了 20 ETH 的小費(使他們的平均鑄幣成本達到每個 NFT/0.5 ETH),當這批 NFT 開始進入二級市場時,這一機器人運營商仍能獲利近 120 ETH。
這一捆綁包包括來自五個不同地址的鑄幣交易,繞過了每個地址只能鑄造 10 個 NFT 的限制
此外,由於該參與者使用了 Flashbots (可以以零成本復原失敗的交易),因此他們不會受到我們在前文演示的失敗交易的影響。其他近 10,962 名參與者則大不不同,他們在 100 個區塊中進行了 12,743 次還原,因爲他們的嘗試未成功,他們累計損失了 252.62 ETH (近 800,000 美元)的交易費用。
追求公平而導致 Gas 費用高企及效率低下
一個高效的 NFT 鑄造機制,意味着對所有參與者來說都很容易使用——理想情況下,只需幾個步驟和簡單的實現。實施 先到先得分發模式替代方案的鑄幣項目,其中一個常見陷阱是它們引入了複雜性,增加了用戶必須進行的鏈上交易數量。
一個例子是在 Miso 上的 Jay Pegs Auto Mart $DONA 的拍賣。雖然這一鑄幣活動開創了批量拍賣 NFT 分發,有效地展示了公平的元數據生成在實踐中的樣子,但這樣做是以高 Gas 費用和犧牲交易效率爲代價的。
要參與該 NFT 鑄造過程,用戶必須在八天內至少進行四次鏈上交易:
- 最開始,用戶在不知道他們會收到多少 DONA 代幣的情況下,將 ETH 提交給 Miso 批量拍賣(取決於最終清算價格)
- 拍賣結束後,用戶必須領取他們的 $DONA 代幣
- 此時,所有用戶獲得的代幣要麼太少,無法鑄造 NFT,要麼剛好夠,要麼太多。根據對參與的 1,363 名鑄幣者的調查結果,我們發現 273 人得到太少,0 人剛好夠用,1,090 人太多(鑄造一個代幣剩的多餘部分)。
- 代幣太少的用戶必須進行交易才能從 Sushiswap 獲得必要的盈餘。
- 擁有過多代幣的用戶可以選擇批准 $DONA 代幣進行交易,然後通過 Sushiswap 進行交易,以出售他們的盈餘代幣。
- 當用戶有足夠的 DONA 來鑄造一個 NFT 時,他們可以批准 NFT 合約來花費他們的 DONA,然後將其 DONA 代幣銷燬來鑄造 NFT。
- 最後,元數據將批量分配給 NFT,無法單方面透露一個人的 NFT 具體內容。
雖然這種機制力求公平,但它使用戶參與變得非常困難,且 gas 成本高、效率低下。
排他性鑄幣
Obenbenbenne 項目追求公平的方式是由 NFT 收藏家和愛好者評估收藏價值,這是藉助其社區的實力。通常這牽扯到衡量持幣者之間代幣的集中度。理想的收藏境況往往集中度較低,有利於個人參與者,而不是被巨鯨掌控。
不過,在最近的鑄幣項目中,出現了引入批量鑄幣的新趨勢,參與者可以在一次交易中同時鑄造一個以上的代幣。通過這種機制,巨鯨鑄造者完全可以以更少的 Gas 開銷來鑄造許多 NFT。
實踐中的一個例子是 Stoner Cats 空投,這是一個可收藏的 NFT 鑄幣項目,用於支持好萊塢女影星 Mila Kunis 和她的朋友製作動畫短片,允許一次鑄造多達 20 個 NFT。 鑑於此功能的存在,其中 89% 的 NFT 是通過批量鑄造功能鑄造的,近 31% 的 Stoner Cats 全部是由單次鑄造 20 個 NFT 的有錢人批量生產而出。
此外,所有以固定價格出售的 NFT 都隱含地將出資能力低於清算價格的人羣擋在門檻之外。考慮到鑄造成本高昂,這降低了分配的公平性,讓那些財力更爲雄厚的人羣受益。
受信任的運營者
無論是實施中心化搖號機制以防止 Gas 戰爭,還是通過 Chainlink 以提高公平性,一個常見的權衡是對第三方引入信任假設。NFT 鑄幣項目必須依賴的鏈下基礎設施越多,用戶就需要對中心化的鏈下實體有越多信任。
完美啓動的小目標
通過觀察這些啓動活動並分析人們在實踐中遇到的問題,我們現在可以得出我們所認爲的 NFT 啓動的六個理想屬性。我們不奢求這是一個盡善盡美的清單,但這是一個起點。
無法作弊的公平性:NFT 啓動必須具有真正的隨機性,以確保作弊用戶不能以犧牲欠成熟用戶的利益爲代價來狙擊最稀有的物品。
不設競爭條件: 每當 NFT (或實際上是任何商品)以低於其公允市場價格的價格出售時,它就會變成以太坊聯合創始人 Vitalik Buterin 所說的「其他手段的拍賣」。在實踐中,買家競相讓自己的交易儘快被挖到區塊中,或附上大筆賄賂來激勵礦工。任何以其他手段拍賣的人都對區塊鏈有深入瞭解,並可以使用機器人等動力工具、Flashbots 或 Eden 等私人中繼,甚至直接提交給礦工。
不受時區制約: 通常「先來先得」的模式在特定區塊高度發佈,然後在短時間內售罄。無論選擇什麼區塊高度,它總是會對當前正處於睡眠時間或忙於工作的其他時區用戶不利。因此,發佈時間跨度不應太短,使人們可以在不改變日常生活的情況下參與其中。
節省 Gas 費用: 在鏈上交易(尤其是在以太坊上)的成本非常昂貴,因此一個好的 NFT 啓動,應該儘量減少用戶必須進行的交易數量。
包容性和抗 sybil 攻擊: 通常,確保 NFT 創作者的最佳利益是確保發佈對不同的持幣者羣體開放,即使它最初導致市場清算速度略低。這是因爲,一個充滿活力的社區最終會推動收藏品在二級市場上的價值。
無需信任:當然,綜上所述,啓動機制應該能夠保持底層區塊鏈的屬性。這意味着它必須提供上述好處,而不會遭遇監管,或需要對運營商進行過多的信任假設。
「不公開即安全」不應是啓動機制糟糕設計的藉口
大多數 NFT 啓動理論上存在上述一個或幾個問題,但在實踐中,同時出現這些問題的需求不足。 這是一個「不公開即安全」的示例。
例如,如果一個新 NFT 系列的市場感知價值較低,則可能不存在導致內存池中競標戰的競爭條件,不需要購買優先區塊空間,掠奪性用戶也沒有對其作弊的動機。同樣,如果一個新 NFT 系列有太多需求,那麼該系列可能會很快售罄,以至於沒有時間爲其編寫定製軟件或對其公平性進行作弊。
雖然安全需求太少是個問題,但我們認爲,人們應該始終將其 NFT 啓動設計爲在所有市場條件下都保持穩健,尤其不要過於依賴快速售罄的產品系列,作爲保護它們免受作弊的一種手段。
NFT 啓動細節拆解
雖然我們現在知道,我們需要一個出色的發佈,但仍然不知道如何實現。可以通過拆解幕後實際發生的事情,來慢慢揭示這條路徑(或者,正如我們將看到的,會有很多路徑)。
每次 NFT 啓動都包含四個步驟:
- 競標 : 銷售激活,用戶向運營商(可以是智能合約)提交出價。
- 清算 : 運營商將收集到的投標競標與剩餘供應進行匹配,確定清算價格,並選擇中標者。
- 分發 : 競標贏家可以領取他們新鑄造的 NFT (或從運營商處接收)。
- 原數據披露 : 運營商披露 NFT 屬性數據。
以 Loot 爲例。Loot 的先來先得銷售在 13,108,877 區塊高度上線。該收藏品的創作者 dom 在智能合約中將銷售價格設置爲零,但用戶仍然必須通過 gas 競標拍賣。每個區塊,礦工都會對剩餘供應清算的新出價,決定誰贏誰輸。用戶競標成功時,會在同一筆交易中收到了該 NFT。
大多數用戶在收到 NFT 後才瞭解 NFT 的具體屬性。不過,在實踐中,一個高技能用戶可以在鑄造之前從智能合約中讀取 NFT 的屬性,使得他們可以狙擊收藏中最稀有的物品。這表明,無論其他步驟是順序發生還是連續發生,必須在物品被購買並最終清算後,才能顯示元數據。
接下來,我們將探索 NFT 開發者在四個步驟中每個步驟中所擁有的選項。我們討論每個選項對理想屬性的影響,從而篩選掉壞的選擇,優選出好的設計選擇。
步驟 1: 競標
在這一階段,運營商從其用戶中收集競標(例如,求購請求)。
連續 vs. 順序清算
首先,運營商必須決定他們是否希望在相同或兩個非重疊階段內連續進行競標和清算。
任何先來先得、固定價格銷售(迄今爲止大多數 NFT 啓動是這些形式)都是持續清算的一個例子。每個區塊,礦工都會查看競標,並根據剩餘供應量進行清算。
這種機制存在幾個問題:如果運營商高估了 NFT 的清算價格,則 NFT 價格太貴,可能賣不完。如果運營商低估了 NFT 的清算價格,則這些 NFT 價格太便宜,用戶會通過速度(誰最直接訪問區塊空間)或 Gas 價格(誰可以爲其交易向礦工支付最多費用)展開競爭。正如前文所討論的,這會導致因交易失敗導致大量經濟損失,並極大地有利於高技能參與者。如果必須的話,第一種選擇可以通過將所有用戶交易路由到 Flashbots RPC,並讓拍賣在失敗交易沒有成本的環境中進行來予以緩解。
當採用第二種選擇時,投標和清算髮生在兩個不重疊的階段。在實踐中,運營商首先收集所有投標,然後將它們與可用供應進行匹配,以公平的價格清算。這種方法包括批量拍賣或搖號等機制。這種方法的一個例子是 Jay Pegs Auto Mart,它給了用戶一週的時間在市場清算之前提交他們的出價。
順序方法有多個好處,與我們所闡述的目標一致:
- 不設競爭條件:用戶有足夠時間提交他們的出價,結果取決於用戶願意支付多少,而不是其速度或技能。
- 不受時區約束:這一方法尊重在其他時區工作或生活的人。
此外,由於沒有 Gas 競拍,因此對其他網絡用戶不存在負外部性。
不過,這種方法存在缺點,例如需要更多的鏈上交易(取決於拍賣設計)或降低了參與者的樂趣,因爲他們現在不得不等待更長的時間。我們建議不要讓投標期太長,以減輕後一種擔憂,也許最好不超過 48 小時。
鏈上競標 vs. 鏈下競標
在決定了連續清算還是順序清算之後,下一個選擇是用戶是在鏈上還是鏈下提交他們的競標。
我們將看到,當前的 NFT 啓動通常會在鏈上收集投標,因爲它最簡單,可以高效地讓礦工爲中標者清算,並讓宣告其餘投標失敗。如果我們假設網絡本身是未經審查的,也意味着有強有力的保障,不會從銷售中遺漏任何有效的出價。
不過,在鏈下收集競標同樣是可能的。在這個過程中,用戶使用自己的私鑰簽署一條消息,其中包含他們的鏈上地址、他們想要購買的代幣或門票的數量、自己的最高出價等信息。他們將此消息發送給運營商而不在鏈上執行,使用他們的簽名來證明其有效性。
不過,運營商可以使用這些出價來爲鏈下市場清算,或將中標交易捆綁並將其提交給合約,以在鏈上執行。 無論採用哪種方法,都需要買家對運營商有一定程度的信任,才能確保正確的投標得到執行。
最後一種方法結合鏈下收集競標與鏈上篩選中標者,將穩健、Gas 效率高且靈活的方式實現相結合。用戶唯一需要相信的是,他們在鏈上提交投標時,運營商不會遺漏任何投標——這是一個相對較弱的假設。
誰被允許參與競標?
要做出的第三個決定是允許誰出價,以及允許多少人蔘與。正如在包容性和抗 sybil 攻擊的目標中所討論的,項目方可能希望確保不同的用戶羣體購買他們的物品。 就此而言,他們對向具有特定特徵的用戶提供的 NFT 數量進行限制,或者專門爲現有 NFT 社區的持幣者保留一部分 NFT。
當競標發生在鏈下時,這樣的 KYC 規則很容易實現——只需要求用戶在向服務器提交簽名之前證明某些信息。鏈上 KYC 則更爲複雜,但 Gitcoin 的 隱私保護證明 等項目正在取得進展。
即使一個項目不想要任何形式的 KYC,他們仍然可以採取措施,以保證大用戶和小用戶可以用同樣的資金購買相同數量的代幣。當合約允許用戶在同一筆交易中購買或領取許多 NFT 時,這一原則通常會遭到破壞,因爲巨鯨可以通過購買更多代幣上分攤同一筆 gas 費用,因此與小用戶相比,他們爲每個代幣支付的費用更少。爲了緩解這種情況,限制每個地址或每個交易購買的代幣數量通常是一個好主意。
競標成本
此外,運營商必須決定用戶何時必須爲 NFT 代幣付款——連同投標一起,還是在市場清算之後?
在後一種情況下,用戶只需在投標階段保留代幣等待市場清算,然後他們就可以在一定的時間窗口內完成購買。使用這種方法結合鏈下競標的一個項目是 Parallel。 雖然它在一片更爲安靜的市場中運作良好,但當需求非常高時,這種模式可能會變成一種競爭條件,用戶希望保留儘可能多的代幣,因爲這樣做是沒有成本的。
爲了減輕競爭條件問題,投標本身應該與成本掛鉤。這裏最好的解決方案是讓用戶只有在鎖定來自同一地址的智能合約中的資金後才提交出價。然後如果投標不成功,運營商可以決定是退還資金(類似於交易所的限價訂單)還是保持投標(類似於未兌付的抽獎券)。
競標顆粒度
最後,必須決定他們希望用戶用出價表達多少顆粒度。當出現失敗的投標(因爲需求超過供應)時,必須進一步決定:怎樣才能成爲贏家,怎樣會是輸家。 以下是三個可行的選擇:
-
「傻瓜式」批量拍賣」: 人們在無需進一步指示的情況下承諾了一定數量的 ETH。在清算階段,NFT 數量除以提交的 ETH 總量,每個人都會收到 ERC-20 形式的碎片化代幣,之後可以兌換爲 ERC-721 NFT。Jay Pegs Auto Mart 使用了這種方法,它的好處是沒有失敗的出價。不過,它的缺點是需要三筆額外的鏈上交易——兩筆用於出售或購買代幣以達到有用的數量(例如,一個「完整的」ERC-20 代幣),一筆交易用於贖回 NFT。最重要的是,這種方法不允許買家表達爲想要的一定數量代幣的出價——而幾乎每個市場都期望有這個功能。
-
「智能」批量拍賣:多年前, SpankChain 在其 ICO 中使用了一種類似方法,但甚至可以說更好。與 Jay Peg 不同的是,SpankChain 收集了對指定代幣數量每個代幣價格的出價。在競標階段結束後,他們計算出一個鏈下的執行價格,並將其與中標價一起提交給智能合約,中標的人們可以提取 SPANK,如果未中標,則可以提取 ETH。這種方法的缺點是要匹配所有出價,其計算複雜度非常巨大,以至於只能在鏈下完成,這需要對運營商有一定的信任。
-
「搖號」:最後,人們可以進行搖號或樂透模式,用戶通過購買門票或預訂進行競標。然後從所有門票池中隨機選擇獲勝者。通過這種方式,用戶或者會收到一個完整的代幣,或者一無所獲,從而節省了像 Jay Peg 的 $DONA 三筆額外交易所需的 Gas 費用。這意味着財力較爲薄弱的用戶也可以入場。但是,它在銷售中引入了隨機性,有些用戶可能更喜歡,而另一些則不喜歡。
步驟 2: 清算
在這一階段,運營商(或以運營商名義操作的某人) 對競標和可供應量進行匹配,決定誰會買到 NFT,誰買不到 NFT。
鏈上清算 vs 鏈下清算
最後一個主要節點是誰可以從所有出價池中選擇獲勝者。在先來先得模式中,這是由礦工完成的,我們已經解釋過,它在幾個方面容易出現腐敗。
在 Jay Peg 的清算機制中,計算複雜度很低,低到足以用完全去信任的方式在鏈上進行。
在 SpankChain 的模型中,獲勝者是完全在鏈下選出的。雖然投標人無法以高於他們想要的價格成交(智能合約確保了這一點),但他們仍然必須相信運營商不會將他們推到他們的最高成交價,類似於對去中心化交易所的三明治攻擊的工作原理。
「搖號」方法最容易清算,因爲您只需要一個隨機數(例如,來自 Chainlink VRF)。不過也要求隨機性也引入了另一個信任假設:產生這種隨機性的人可能會偏愛自己的出價而不是其他人。相反,當獲勝的出價只是最高的出價時,這是不可能出現的。
步驟 3: 分發
市場清算後,運營商必須鑄造代幣,將它們交給用戶,他們如果是採用這種模式,需要將所有失敗出價的資金返還。這一步通常都是牽扯到 Gas 效率和阻止競爭條件。
同時 vs. 間隔結算
如果運營商想防止自己的用戶同時認領 NFT,導致 gas 費用飆升,他們可以重複使用與清算過程中相同的隨機性,讓人們分批認領。這解決了集體行動導致 Gas 費用飆升的問題,因爲用戶最好不要同時認領所有 NFT。儘管如此,好奇心無處不在,希望瞭解它們元數據,以及誰會成爲第一個在二級市場上轉手賣出 NFT 的人,無論如何總可能會造成競爭條件。這意味着,間隔結算也會增加用戶的等待時間。
認領 vs. 收到 NFT 代幣
在分發中唯一要提到的另一件事是:用戶是否必須自己認領代幣,還是運營商可以隨着時間推移簡單地將其發送給他們。後者是間隔結算的一種變體,但有額外的好處,即用戶不需要做任何事情。前面提到的 Parallel 啓動就使用了這種方法,效果很好,只是要求用戶在最初爲 NFT 付款時添加「運費」。
步驟 4: 披露原數據
最後,NFT 代幣一旦分發完事,就可以顯示其元數據。在 NFT 啓動的四個階段中,這一步必須放在最後。它也不能與其他步驟共享最後一步(例如,通過在同一交易中捆綁支付、分發和原數據顯示,就像 Meebit 所做的那樣),因爲不良分子可以通過回覆交易來「刷初始」,破壞公平性進行作弊。付款和元數據展示之間必須至少有一個區塊的差距,以使交易回滾成爲不可能,儘管您也可以選擇加大這一差距,以防止重組攻擊。
何時披露元數據
我們現在已經確定,鑄造 NFT 和披露其元數據不能在同一筆交易中發生,這引發了何時披露的問題。這不僅對保障公平很重要,對於用戶體驗和 gas 效率也很重要。一般來說,有以下三種選擇:
全集披露:在全集披露中,運營商會等到該集合的所有 NFT 都已鑄造完成,然後再披露元數據。這種方法具有很高的 gas 效率,只需要一個隨機數,然後就可以使用該隨機數來打亂工單 ID 的元數據,而無需用戶進一步採取行動。
但是,它有明顯的缺點。也就是說,用戶必須等到所有 NFT 都被鑄造出來才能查看其代幣的元數據。如果設置了何時公開元數據的上限(例如,24 小時),一些用戶可能仍然無法及時鑄造,從而導致 NFT 收藏品無法售罄。
NFT 逐一披露 : 爲了改善全集披露的 UX,運營商還可以允許用戶針對 NFT 逐一展示隨機性。這更具吸引力,因爲用戶可以在購買後不久「打開」自己的 NFT。 它還允許「未開封」的 NFT 在二級市場進行交易(這在 MTG 等交易卡牌遊戲中很流行)。
不過,這種方法帶來了要求用戶進行額外鏈上交易的負擔,例如調用 Chainlink VRF 並將隨機數應用於自己的 NFT。 即使對於不特別急於披露元數據,或對交易未開封 NFT 不感興趣的用戶,這也是不可避免的費用。
批量披露: 我們提出了批量披露的概念,作爲一個潛在的中間地帶。在這種方法中,用戶可以無限期地鑄造,但如果他們願意,也可以在下一個區塊中披露其 NFT 的元數據。收到請求的每個新隨機數都會自動披露所有鑄造和待分配 NFT 的元數據,以幾乎相同的恆定成本披露它們。
因此,具有高時間偏好的用戶可以選擇支付額外的鏈上交易以披露元數據,這使他們之前的所有用戶都會受益。如果沒有用戶選擇披露,運營商也可以按照某個時間表進行,例如每一個小時。
隨機性來源
在決定何時披露元數據之後,剩下的問題是從哪裏獲得隨機性。我們建議的兩個選項是使用 Chainlink VRF 或 commit-reveal scheme 機制。
使用前者,您可以按需訪問可驗證的鏈上隨機源。使用任何披露機制,您都可以調用 Chainlink 來請求隨機性,一旦滿足,就使用隨機生成的數字作爲元數據計算的輸入值。這將確保它對每個 NFT 都是隨機的。
對於後者機制,運營商可以在銷售之前創建一個隨機數(用於完全披露)或多個隨機數(用於每個 NFT 或批量披露)並預先提交其哈希值。一旦鑄造了 NFT,運營商就可以透露這些數字,讓任何人都可以通過哈希驗證其真實性。儘管如此,這種方法需要對運營商有一定的信任,信任他們不會利用對隨機數的提前洞悉來創造最好的 NFT。爲了儘量減少對信任的需求,我們建議仍然按鑄造順序進行一些獨立的隨機化。
此外,對於鏈下元數據,運營商可以選擇提交完整元數據的哈希(所有 NFT 的 id 相關屬性),而不是提交隨機數。這確保元數據是預先確定的,並且在鑄造過程中或之後不會被篡改。儘管如此,鑄造順序中的獨立隨機化對於防止運營商利用知情權作弊,也是很有必要的。
我們的實操參考手冊
我們提供了一份 實操參考手冊 ,在這份手冊中,我們考慮了所有屬性之間的良好平衡,並且易於理解和調整。
競價 : 在我們的實操參考手冊中,用戶可以通過購買抽獎券進行競價。抽獎時間由運營商決定(我們建議 24-48 小時)。每張門票的價格包括 gas 費用,以及運營商指定的每個 NFT 的價格。後者充當「保證金」,並在市場清算後退還所有競標失敗者的門票。 抗 Sybil 攻擊是通過三種方式產生:每筆交易的 gas、鎖定資金的資本成本,以及每個地址的最大票數。
清算 : 競拍期結束後,必須從所有門票池中抽取與可用 NFT 數量相等的中獎者。首先,任何人都可以調用 collectEntropy(), 從 Chainlink VRF 中獲取一個隨機數。這種隨機性用於「shuffleEntries()」,它採用了 Fisher-Yates 搖號機制。任何人都可以調用此函數,以保證活躍度,並使 gas 成本可社會化(例如,由巨鯨負擔)。
分發 : 在所有中獎者都被抽中之後,用戶可以無限期地從他們的中獎彩票中領取 NFT,他們輸掉的彩票會收到退款。兩者都發生在同一個交易中。運營商現在可以開始提取中獎彩票的收益。
元數據披露 : 用戶可以在認領 NFT 後一區塊披露其 NFT 元數據。任何人都可以請求一個新的隨機數,它會自動披露所有已鑄造和待分配 NFT 的元數據。時間偏好高的用戶可以立即付費,以披露元數據,使所有用戶受益。
總結
在本文中,我們給出了真實世界的示例,以展示設計不佳的 NFT 啓動如何導致用戶獲得了次優結果。但是,當一個項目清楚地定義他們的目標,並花時間去解構發佈實際上有哪些步驟時,很多設計成爲可能——而且幾乎所有設計都比當前我們習以爲常的固定價格、先到先得、網絡擁擠的 NFT 銷售要好得多。
如果您想從本文中能有任何收穫,請遵循以下三個規則:
- 不可作弊的公平性是具有隨機元數據的 NFT 啓動的最關鍵屬性。使用強大的隨機性,在 NFT 被購買和結算之前永遠不要透露它的元數據。
- 競爭條件會傷害用戶,包括參與鑄幣的用戶和未參與的用戶。使用順序投標和清算(例如,搖號抽獎或批量拍賣)來解決這個問題。
- 從第一分鐘開始就考慮成本效益。一直不斷問自己:當前發生在鏈上的任何步驟是否也可能在鏈下發生,以便爲您的用戶省錢。假設用戶可以對運營商建立一定程度的信任,鏈下步驟可以包括競標和市場清算。在元數據披露階段考慮進行批量披露。
我們很樂意看到 NFT 開發者開始嘗試其中的一些想法,從而在現實中推出更多種類的產品。最後,我們想大聲感謝那些大 V 一直與 NFT 社區分享他們的建議,幫助改善 NFT 啓動質量:
-
Vitalik—感謝他對 FCFS 固定價格銷售問題的解釋
-
FairDrop—分享他們的公平抽獎概念驗證設計
- dotta—對於打造出色前端的建議
- Jay Pegs Auto Mart 和 SpankChain—測試新穎的拍賣方法
- Parallel—充分展示了鏈下搖號的最佳實踐
- 0xmons—有關設計公平啓動的建議和工具
感謝 : Robert Miller (Flashbots), Dom Hofmann
暢行幣圈交易全攻略,專家駐群實戰交流
▌立即加入鉅亨買幣實戰交流 LINE 社群(點此入群)
不管是新手發問,還是老手交流,只要你想參與虛擬貨幣現貨交易、合約跟單、合約網格、量化交易、理財產品的投資,都歡迎入群討論學習!
- 從零開始學合約系列講座熱烈報名中
- 掌握全球財經資訊點我下載APP
文章標籤
上一篇
下一篇