區塊鏈給開源軟件的融資帶來了革命性的變化,但并非所有東西在一開始就行得通。事實上,2016—2018年期間的ICO經常是嚴重有問題的機制,它們讓創始人在交付任何產品前就能兌現。此后,我們吸取了許多教訓,今天的項目在發行和分發代幣之前都有一個工作產品,以激勵使用和去中心化治理。
NFT被證明是另一種明確適用于加密貨幣的產品市場匹配,但它們正在經歷自己的成長之痛。每個NFT的生命都開始于一次NFT發行(有時也稱為鑄造或空投)。一次NFT發行意味著有新的收藏品被首次創造、出售和分發給買家,他們隨后會決定是持有還是在二級市場交易。
就像任何首次銷售的商品一樣,NFT的發行面臨著為從未有過價格的東西定價的挑戰。但與大多數其他東西的銷售不同的是,它們還有一個額外的困難,那就是在一個充滿獨特特性的高度對抗性環境中進行,這些特性已經使缺乏經驗的用戶難以接近,這個環境就是公共區塊鏈。因此,開發者必須設計出高效而穩健的機制,以防止被破壞。
本文以在現實世界中那些已經傷害了用戶利益的NFT發行案例開始,以找出好的發行應該滿足哪些目標。接下來,我們把發行分解為一個個的步驟,探索每個步驟的設計空間。最后,我們提供一個我們認為是設計良好的發行機制的參考實現,供社區使用和在其基礎上構建。
損害用戶利益的示例
隨著時間的推移,我們已經注意到,NFT發行的某些設計模式一直給用戶帶來不良結果。
可被破壞的公平性
當一個新的收藏品推出時,用戶可以與其智能合約交互,鑄造一個具有隨機屬性的NFT。這些屬性往往有不同的稀有度,使得有些組合比其他更稀缺和更有價值。例如,10,000個CryptoPunk里只有9個有超稀有的“外星人”特性,其中現在在市場上最便宜的一個標價35,000個ETH。
雖然不同人出于各種原因參與鑄造,但其中很多人享受不知道他們將得到哪款以及稀有度如何的興奮感。從這個意義上說,鑄造NFT只不過是長時間以來在模擬經濟(如集換式卡牌游戲里的增強包)和數字經濟(如電子游戲的戰利品盒/箱)中受歡迎的扭蛋機制的延續。
參與扭蛋游戲的人往往會做出一個重要的假設:他們從物品的隨機分布中抽取,且真的有機會(盡管很小)抽到非常稀有的那個。不幸的是,過去的NFT鑄造經常無法滿足這個假設,無法創造真正的隨機性。在實踐中,這使得熟悉技術和有動機的各方利用鑄造為自己謀利,搶奪收藏品中最稀有的那些,使誠實的參與者無法獲得。
我們分享這種模式的兩個案例,其中NFT鑄造正是以這種方式被破壞。這兩個案例都依賴于相同的兩步過程:
1.搶奪者提取收藏品的元數據,使它們顯示在一個單一稀有度分數中所有屬性的相對頻數。使用這個分數,他們然后可以確定一個收藏品集里最高價值的NFT。
2.然后,搶奪者打破鑄造合約的隨機性,以只鑄造他們想要的稀有、最高價值的NFT。
Loot衍生品以及用鏈上元數據搶奪Loot
最近,一個名為Loot的項目席卷了NFT世界。看似簡單,這個項目包含8,000個戰利品包,由不同稀有度的胸部、足部、手部、頭部、頸部、戒指、腰部和武器物品組成。
每個物品槽的所有屬性都直接存儲在合約里,鑄造者獲得一個偽隨機的戰利品包,以包ID作為哈希值。雖然只要以太坊存在它們就永久存在,但在鏈上存儲元數據也將Loot的偽隨機性暴露給搶奪者。他們通過在本地模擬隨機化函數,快速抓取了所有8,000個包的元數據,獲得了整個系列的圖片(也獲得了稀有度)。有了這些信息,他們只需要利用合約最后剩下的弱點:能夠準確地鑄造他們想要的ID,并只狙擊最稀有的包。
但是,盡管破壞很簡單,但有理由相信沒有人會破壞原始的Loot。
來源:https://github.com/Anish-Agnihotri/blog-effective-nft-launches-data/tree/master/01-exploitable-fairness/loot
如果我們觀察直到鑄造最后戰利品包的稀有度,稀有的物品在整個鑄造過程的分布是良好的。這表明沒有明顯的搶奪案例。
關于為什么Loot沒有被破壞,有兩個可能的解釋:
1.這是一個全新的合約,因此人們還沒準備好或缺乏時間發現漏洞
Paradigm研究員推出Telegram機器人SEAL 911,可在緊急情況下與項目團隊取得聯系:8月8日消息,Paradigm 研究員 Samczsun 推出 Telegram 機器人SEAL 911,任何人都可以在緊急情況下使用它來與某一項目團隊取得聯系,用戶向其發送的任何消息都將自動轉發給對應團隊。
其中為確保響應團隊獲得所需的所有信息,用戶需回答的問題包括:緊急情況是什么?(主動攻擊、漏洞披露、Rug Pull 等);哪個用戶 / 項目受到影響?(網站、Twitter 等等);是否有相關鏈接?(交易記錄、地址、推文等等)。[2023/8/8 21:31:19]
2.鑄造Loot的預期價值并不明確,因為收藏品的價值只會在接下來幾天在二級市場爆發。收藏品大概需要2.5個小時售完,這一點進一步支持這個假設。
然而,隨著Loot的價格不斷上漲,一系列像MoreLoot和ExtensionLoot這樣的衍生品開始出現,它們大多數只是原始Loot合約的小分叉。新的收藏品繼承了Loot的弱點,但市場價值更高,且得到更多的關注。這對這些收藏品鑄造的公平與否產生了很大的影響。
MoreLoot
將稀有物品的分布與MoreLoot和原始Loot之間的鑄造時間進行對比,搶奪的證據變得非常明顯。僅僅幾個區塊之后,所有的稀有NFT已經被鑄造完了,只剩下一些沒有價值的給未來的鑄造者,他們基本上不知道經驗豐富的用戶已經搶奪完了這次的發行。
來源:https://github.com/Anish-Agnihotri/blog-effective-nft-launches-data/tree/master/01-exploitable-fairness/mLoot
下圖:紅線指的是當Anish在推特上公開他的稀有度得分時,開始爭奪稀有包的區塊高度。
來源:https://github.com/Anish-Agnihotri/blog-effective-nft-launches-data/tree/master/01-exploitable-fairness/mLoot
此外,由于MoreLoot的供應量不斷膨脹,因此可以預期搶奪者將對未來可得的包預先評分,并競相鑄造它們。
ExtensionLoot
與MoreLoot類似,ExtensionLoot具有一個單一地址,可以鑄造最稀有的10個袋子里的5個(所有鑄造的NFT都以紅色標示)。獨特的地方在于,這些NFT被隱藏在顯而易見的地方,因為搶奪者在連續瞄準稀有包之前,會慢慢把它們和可得包分發出去。
Source來源:https://github.com/Anish-Agnihotri/blog-effective-nft-launches-data/tree/master/01-exploitable-fairness/xLoot
Meetbits以及用鏈下元數據搶奪Meebit
Meebits是由CryptoPunks的創造者LarvaLabs推出的備受期待的NFT,擁有20,000個獨一無二的3D人物。
LarvaLabs知道精明的用戶可以利用收藏品的元數據來計算稀有度,然后搶奪稀有的NFT。為了解決這個問題,他們以這樣的方式設計他們的網站:他們允許買家看到每個Meebit的完整元數據,但僅在NFT被鑄造完后。
盡管該網站明確隱藏了未鑄造的Meebits,但有人查看源代碼,發現LarvaLabs從IPFS上提取元數據。利用這個信息,他們還是搜刮了IPFS,提取了未鑄造的Meebits的元數據,找出了最想要的那些。
然而,Larvalabs仍然沒有讓搶奪者輕易實現:不同于Loot,用戶不能鑄造特定MeebitID的NFT。相反,鏈上的隨機性被用作哈希值(理論上礦工仍然可以利用),使這個特定用戶更難以鑄造一個稀有的Meebit。
波卡Parity團隊提議推出更多公益平行鏈:8月19日消息,波卡Parity團隊提案計劃推出更多公益平行鏈(Common Good Parachains)。提案表示在技術方面,這項工作涉及到運行時間的改變,允許在XCM上進行更多的表達式互動,并開發可擴展到多個運行時間的測試和發布流程。
注,公益平行鏈由波卡的鏈上治理系統分配,它們被認為是網絡的公共利益,比如作為連接其他網絡或鏈的橋接。它們通常被認定為系統級別的鏈或公用的鏈,沒有一個經濟模型,以及可以幫助從中繼鏈上刪除交易,使得更有效的處理平行鏈。[2022/8/20 12:37:01]
但是,掠奪者知道如何在糟糕情況下取得最好的結果。他們寫了一個購買Meebits的合約,查看它們的ID,然后再“打亂”它們。具體來說,Meebit合約是一個有mint()函數的ERC721,它會返回一個隨機的MeebitID。搶奪者的合約可以調用mint,將返回的MeebitID與它們的稀有度列表進行對比,如果沒有超過一定的稀有度分數,就回滾交易(示例代碼)。用這一招,他們只需支付大約0.03個ETH來查看每個ID,而不用花大約2.5個ETH直接購買Meebit。
盡管攻擊者在這個過程中燒了很多失敗的交易,因此也會燒掉很多gas費用,他們最后獲得大約400個ETH的收益。今天,同樣的掠奪者可以通過Flashbots的交易捆發送交易,如果得到他們想要的ID,就給礦工支付費用——使回滾交易完全免費。
攻擊者鑄造并賣出Meebit#16647,它具有極其稀有的“訪問者”特征。
Gas競拍
在9月,有7個特別時期以太坊每gas的基本費用超過了1,250gwei。令人震驚的是,這7次發生的情況都是因為備受關注的NFT發行擾亂了網絡。
從左到右:G’EVOLS、TheSevens、Sipher、GalaxyEggs、Omnimorphs+ArtBlocksDemocracity、GalacticApes和KingFrogs
大多數這些發行采用的是固定價格、先到先得(FCFS)的機制。由于價格低、需求過大,獲得這些NFT的競爭從合約出售變成了在交易池里的gas競拍。
其中一個例子是TheSevensNFT的空投,這是一個備受關注的收藏品集,有7,000張以反烏托邦人物為主題的收藏品作為個人頭像。由于每張NFT的初始價格為0.07個ETH,熱心的參與者都趕緊到合約上去鑄造。在短短6分鐘內,gas價格達到12,246gwei的峰值,僅在合約鑄造的gas費上面,參與者支付的中位數是每個NFT大約1.49個ETH,而最高的5%的人每個NFT支付了2.44個ETH。
在theSeven鑄造中,快速上漲的區塊基本費用
gas競拍的問題不僅僅是它們在使用上更具挑戰,而是通過以這種方式“濫用”公共交易池,它們為所有以太坊用戶創造了負外部性。他們還迫使用戶為同一個NFT支付不同的金額,導致成千上萬出價不足的交易失敗,傷害了用戶利益。
高技術門檻
正如我們之前看到的,以太坊是一個黑暗森林,有很多高水平的、敵對的行動者總在尋求機會。NFT鑄造,特別是稀有的那些,買家期望在鑄造后能在二級市場獲得溢價,這為技術熟練的各方提供了比普通參與者更多有利可圖的機會。
這些參與者通過機器人和自動化策略與鑄造合約直接交互,往往繞過前端,甚至偶爾繞過交易池。
TIMEPiecesNFT空投是這方面的一個典型例子。高級機器人運行者在開始鑄造前查看nft.time.com的前端源代碼。這樣,他們可以提前幾個小時在主網找到部署了的鑄造合約和建造好的機器人。因此,這些機器人在鑄造中有一個顯著的優勢——三分鐘內全部售出。在普通參與者連接錢包和提交交易時,已經太晚了。
此外,有些人使用Flashbots繞過交易池,直接提交交易給礦工。雖然TIMEPieces的合約限制了參與者每個地址最多鑄造10個NFT,機器人運行者0x35…ce5提前計劃,把資金分到5個錢包,在一個Flashbots交易捆里搶奪了50個NFT。
ParaFi Capital 在 MakerDAO社區發起MIP6提案:DeFi風投ParaFiCapital在MakerDAO社區提出一項MIP6抵押資產引入提案,希望新增bBadger作為MakerDAO抵押資產,目前該提案正在該社區征求回饋意見。[2021/3/21 19:04:37]
這個交易捆包含了5個來自不同地址的鑄造交易,避開了對每個地址鑄造數的限制。
另外,由于這個參與者使用了Flashbots(使得回滾交易的成本為0),他們并沒有遭遇我們在上文例子中的失敗交易情況。這不同于接近10,962名普通技術水平參與者在100個區塊的12,743筆回滾交易里損失了累計252.62個ETH(近800,000美元)的交易費,因為他們的嘗試是失敗的。
低Gas效率
一個有效的NFT鑄造機制應該對所有參與者來說都是易于使用的——最好是步驟少,實現簡單。對于實現不同于先到先得分發模式的NFT鑄造,一個常見的問題是會引入復雜性,增加用戶必須在鏈上進行的交易數。
一個例子是JayPegsAutoMart在Miso上的$DONA拍賣。盡管該鑄造開創了批量競拍NFT分發方式,并有效展示了元數據生成在實踐中的公平性,但它是以犧牲gas和交易效率為代價的。
為了參與鑄造過程,用戶必須在8天內至少進行4次鏈上交易:
1.首先,用戶將ETH提交到一個Miso的批量拍賣中,而不知道他們會收到多少美元的$DONA代幣作為交換(取決于最終的結算價格)
2.一旦拍賣結束,用戶必須領取他們的$DONA代幣
3.此時,所有用戶所處的情況有三種:不夠代幣鑄造一個NFT、剛好夠和有太多代幣。基于參與的1,363名鑄造者的情況,我們發現有273名不夠代幣,0名剛好夠,和1090名代幣太多(超過一個代幣的零頭)。
擁有太少代幣的用戶將不得不交易,以從Sushiswap獲得必要的剩余代幣。
擁有太多代幣的用戶可以選擇同意用$DONA代幣做交易,然后通過Sushiswap進行交易,賣出他們的盈余。
4.當用戶有足夠的$DONA來鑄造一個NFT時,他們可以同意NFT合約花費他們的$DONA,然后燒毀他們的$DONA以鑄造一個NFT。
5.最后,元數據會批量地被分給NFT,不能披露某一個NFT的元數據。
雖然這種機制力求公平,它增加了用戶參與的困難,且要消耗很多gas。
排他的鑄造
NFT收藏者和愛好者評估收藏品價值的一個方法是通過其社區力量。通常情況下,這涉及衡量持有者的代幣集中度。理想的收藏品往往集中度低,有利于個人參與者而不是很多巨鯨。
不過,在最近的鑄造中,出現了引入批量鑄造的新趨勢,即參與者可以在單筆交易里鑄造多于一個代幣。通過這種機制,巨鯨鑄造者會受激勵,以較少的gas開銷鑄造許多NFT。
在實踐中的一個例子是StonerCat的空投,這是一個支持制作MilaKunis和朋友們的動畫短片的收藏品NFT鑄造,允許一次鑄造多達20個NFT。考慮到這個功能,89%的NFT都通過批量鑄造功能鑄造,且接近31%的StonerCats是以最多20個NFT的批量鑄造的。
此外,所有以固定價格出售的NFT都隱含著防止個人參與低于結算價的活動。這減少了分發的公平性,使天平傾向于那些巨鯨,特別是考慮到制造的昂貴程度。
受信任的運營商
無論是執行中心化的抽獎方式來避免gas戰,還是使用Chainlink來提供公平性,一個常見的權衡是引入對第三方的信任假設。如果NFT鑄造必須依賴越多的鏈下基礎設施,用戶就必須對中心化的鏈下實體有更多的信任。
良好發行的目標
通過觀察這些發行并分析人們在實踐中遇到的問題,我們現在可以得出我們所認為NFT發行應有的六個理想特性。我們沒有野心說這份清單是完整的,但它是一個開始。
不可被破壞的公平性:發行必須有真正的隨機性,以確保搶奪性用戶無法以犧牲沒那么熟練的用戶的利益來搶奪最稀有的物品。
Paradigm聯合創始人:比特幣依賴泡沫來激發更廣泛的投資者意識:加密投資公司Paradigm聯合創始人兼管理合伙人Matt Huang研究了比特幣經歷幾個繁榮與蕭條周期時的投資者心理。Huang在這篇論文中提供了一個易于理解的框架,以幫助投資者評估比特幣作為一種新的貨幣資產的價值。由于許多投資者認為比特幣是一個巨大的泡沫,Huang對此亦予以證實。他指出,比特幣歷史上經歷了四個顯著的泡沫時期:2011年:從1美元飆升到31美元,然后又跌回2美元;2013年:從13美元攀升至266美元,隨后暴跌至65美元;2013-2015年:從64美元猛漲至1242美元,之后暴跌至200美元;2017-2018年:從1000美元飆升至19500美元,隨后暴跌至3500美元。Huang進一步強調,比特幣依賴泡沫來激發更廣泛的意識。雖然當比特幣價格暴跌時,投資者可能會感到痛苦,但每一次泡沫都導致了比特幣持有者或長期投資者的增長,他們相信比特幣作為未來價值儲存手段的潛力。(The Daily Hodl)[2020/5/30]
沒有競賽條件:每當一個NFT(或任何商品,真的)以低于其公平的市場價格出售時,它就會變成VitalikButerin所說的用其他方式競拍。實際上,買家競相讓他們的交易盡可能快地被挖出來,或附上一筆大的匯款給礦工。任何“用其他方式競拍”都有利于那些對區塊鏈有更深的認識、和能用到像機器人、如Flashbots或Eden這樣的私人中繼,或甚至是直接與礦工接觸。
不分時間段:常見的情況是,先到先得模式的發行會公布在一個特定的區塊高度,然后在短時間內售罄。無論選擇什么樣的區塊高度,都總是會對目前正在睡覺或工作的其他時區的用戶不利。因此,發行時間不應該太短,這樣人們就可以在不改變日常生活的情況下參與。
節省gas:鏈上交易(特別在以太坊上)是很貴的,因此一個好的發行應該盡量最小化用戶必須進行的交易數。
包容性和抗女巫攻擊:通常情況下,確保NFT的發行對多元的持有者開放是符合NFT創建者的最佳利益的,即使這會導致市場最初的結算價格有點低。這是因為,一個充滿活力的社區是收藏品在二級市場價值的最終驅動力。
無需信任:當然,說了這么多,發行機制應該致力于維護底層區塊鏈的屬性。這意味著它必須提供上述的好處,而不會變成需要托管或對運營商有過多的信任假設。
通過隱匿來實現安全是糟糕的設計
大多數發行在理論上都有一個或幾個上述的問題,但在實踐上,并沒有足夠多的需求使這些問題浮現。這就是通過隱匿來實現安全(securitybyobscurity)。
例如,如果一個新收藏品被感知的市場價值很低,可能沒有導致在交易池里出現競價戰的競賽情況,不需要購買優先區塊空間,且搶奪性用戶也沒有動機利用它。同樣,如果一個新的收藏品的需求過大,那么這個收藏品可能很快就售罄了,以至于沒有時間為它寫定制軟件或破壞其公平性。
雖然需求過少或過多引發的安全問題都值得重視,但我們認為,人們設計的發行應該始終在各種市場條件下都是穩健的,特別是不要依賴于收藏品的快速出售,以此作為保護它們免受搶奪的手段。
分解NFT發行
盡管現在我們知道在一次良好的發行中我們想要什么,但我們仍然不知道如何達成。我們可以通過分解在底層實際發生的事來慢慢揭示這條路(或者,正如我們將看到的,有很多條路)。
每一次的NFT發行,其核心都有四個步驟:
1.出價:出售上線,用戶向運營商提交他們的出價(可以是一個智能合約)。
2.結算:運營商將收集到的出價與剩余的供應量做匹配,確定結算價格,并選擇中標的出價。
3.分發:中標者可以認領他們新鑄造的NFT(或從運營商那里得到它們)。
4.揭示元數據:運營商揭示NFT的屬性。
例如,看看Loot。Loot在區塊13,108,877以先到先得的方式出售。此收藏品的創作者?dom在智能合約上把出售價格設置為0,但用戶仍然需要通過gas來競價。在每個區塊里,礦工根據剩余的供應量結算新的出價,決定誰贏誰輸。當中標時,用戶在同一筆交易里收到物品。
大多數用戶在收到物品后才知道其特性。但是,在實踐中,一個老練的用戶可以在鑄造前從智能合約讀到他們物品的特性,從而使他們能夠搶到最稀有的收藏品。這表明,無論其他步驟是否循序或連續發生,元數據必須在物品被購買并完成最終結算后才會被揭示。
以太坊錢包Parity發布共識安全警告:據Parity官方公告,該團隊發現了一個潛在的共識問題,該問題性質較嚴重,Parity以太坊客戶端1.10.5穩定版和1.11.2-beta版會受到影響。用戶需要盡快把客戶端升級到1.10.6穩定版和1.11.3-beta版。[2018/6/6]
接下來,我們將探討NFT開發者在這四個步驟中每一步的選擇。我們討論每個選擇對理想屬性的影響,將好的設計選擇從壞的中篩選出來。
階段1:出價
在這個階段,運營商從其用戶那里收集出價(例如,購買請求)
連續結算vs.循序結算
在做其他事情之前,運營商必須決定他們希望出價和結算在相同的還是兩個不重疊的階段里進行。
任何先到先得的固定價格出售(這是迄今為止大多數NFT發行的方式)都是連續結算的例子。對于每個區塊,礦工看著出價,根據剩余的供應量對它們進行結算。這個機制有幾個問題:如果運營商高估了NFT的結算價格,該物品定價太高的話可能會賣不出。如果運營商低估了NFT的結算價格,該物品可能太便宜了,用戶通過速度(最能直接訪問區塊空間的人)或gas價格(能給礦工支付最多交易費的人)來競爭。正如所討論的那樣,這導致了交易失敗帶來的凈虧損,并很大程度上有利于技術純熟的參與者。如果你必須這樣做,前者可以通過將所有用戶交易路由到FlashbotsRPC來化解,并讓競拍在一個失敗交易不消耗成本的環境下進行。
當采用第二種方案時,競價和結算分在兩個不重疊的階段進行。在實踐中,運營商首先收集所有的出價,然后將它們與可用的供應相匹配,以公平的價格做市場結算。這種方法包括批量競拍或抽獎等機制。這種方法的一個例子是JayPegsAutoMart,它在市場結算前給用戶一個星期的時間提交它們的出價。
循序法有幾個好處是符合我們上述的目標的:
1.沒有競賽情況:用戶有充足的時間提交他們的出價,且結果是由用戶愿意支付多少來決定的,而不是由他們的速度或技巧。
2.不分時區:這個方法尊重在其他時區工作或生活的人
此外,因為不存在gas競拍,也就沒有對其他網絡用戶的負外部性。
但是,這種方法也是有缺點的,比如需要更多的鏈上交易(取決于競拍的設計)或減少那些現在不得不等待更長時間的參與者的樂趣。我們建議不要讓競價期拉得太長,以減輕后一種憂慮,可能不超過48小時比較合適。
鏈上vs.鏈下出價
在決定了是連續結算還是循序結算后,下一個選擇是用戶在鏈下還是鏈上提交他們的出價。
正如我們將看到的,今天的發行經常在鏈上收集出價,因為這是最簡單的,能有效讓礦工結算中標的出價,讓其余的失敗。如果我們假設網絡本身是不受審查的,那么沒有有效出價會在出售中被漏掉這種情況可以得到有力保證。
但是,在鏈下收集出價同樣是可能的。在這個過程里,用戶用他們的私鑰對一條包含像他們的鏈上地址、令牌數或他們想購買的門票、他們的最高出價等的消息簽名。他們發送這個消息給運營商而不是在鏈上執行,使用他們的簽名來證明其有效性。
然后,運營商可以使用這些出價在鏈下市場做結算,或把中標的出價捆綁起來提交到鏈上的執行合約。無論采用哪種方法,都需要對運行商有一定程度的信任來執行正確的出價。
最后一種方法把鏈下出價收集和鏈上選擇勝出者的方法結合起來,穩健、省gas且靈活。唯一用戶需要信任的是運營商不會在鏈上提交出價時不會有遺漏的——這是一個相對較弱的假設。
誰可以出價
第三個要做的決定是誰可以出價,以及出多少錢。正如在目標包容性和抗女巫攻擊中所討論的,項目可能想確保不同的用戶都可以購買他們的物品。為此,他們可能會限制具有特定特征的用戶可購買的物品數量,或專門為現有NFT社區的持有人保留物品。
當出價發生在鏈下時,這樣的KYC規則很容易執行——你只需要在讓用戶提交他們的簽名到服務器之前讓用戶證明一定的信息。鏈上KYC則更復雜,但Gitcoin的隱私保護措施ProofofPersonhood正在取得進展。
即使一個項目不希望有任何形式的KYC,他們仍然可以采取措施,確保一美元可以為大用戶和小用戶購買相同數量的代幣。這個規則經常在合約允許用戶在同一筆交易里購買或認領很多NFT時被違反,因為巨鯨可以在更多的令牌中攤銷gas費,由此每個令牌比小型用戶支付更少。為了減輕這種影響,為每個地址或每筆交易設置通證數量上限是一個不錯的主意。
出價成本
此外,運營商必須決定用戶何時為令牌付款——與出價一起,還是在市場結算之后?
在后面一種情況,用戶只在出價階段保留代幣,市場結算,然后他們可以在一定的時間窗口內完成購買。Parallel這個項目就是使用這個方式的,加上鏈下出價。盡管它在一個比較安靜的市場運作良好,當需求很高時,這個模型會進入競賽狀態,用戶會想盡可能多地保留令牌,因為這樣做沒有成本。
為了緩解競賽情況的問題,出價本身應該會涉及一項成本。這里最好的解決方法是讓用戶僅在同一地址的智能合約中鎖定資金后才能提交出價。然后,運營商就可以決定如果出價不成功的話是要退還資金(類似于交易所的限價訂單)還是保留出價(類似于沒有支付的抽獎券)。
出價的顆粒度
最后,運營商必須決定他們想要用戶出價表達的顆粒度。當有失敗的出價時(因為供不應求),人們必須進一步決定中標者和未中標者的定義。這里有三個可行的選項:
“傻瓜式”批量競拍:人們提交一定數量的ETH后沒有進一步的指示。在結算階段,物品的數量除以提交的總ETH,然后每個人獲得以ERC-20形式的碎片化令牌,這些令牌之后可以兌換成ERC-721的NFT。JayPegsAutoMart使用了這個方式,它的好處是沒有失敗的出價。但是,它的弊端是需要三筆額外的鏈上交易——兩筆用于出售或購買通證以達到有用的數量(例如,一個”完整的“ERC-20),一筆是用來贖回NFT。最重要的是,這個方式不允許買家表達他們想要一定數量令牌的價格——這幾乎是人們在每個市場上都期待的功能。
”智能的“批量競拍:幾年前,SpankChain在其ICO使用了類似的但可以說是更好的的方法。不同于JayPeg,SpankChain收集允許指定令牌數和令牌單價的出價。在出價階段后,他們計算了一個鏈下執行價,并與勝出的出價一起提到一個智能合約,如果勝出了,人們可以提出SPANK,如果失敗了,人們可以提取ETH。這個方法的缺點是,匹配所有出價的計算非常復雜,以致它只能在鏈下進行,這需要對運營商有一定的信任。
抽獎:最后,運營商可以采用抽獎的方式,用戶通過買票或預定進行出價。隨后在所有票的池里隨機抽出勝出者。這樣,用戶要么獲得一個完整的令牌或什么都得不到,省去了JayPeg的$DONA所需的三筆額外交易。那些難以支付一個完整NFT的小額錢包也可以參與。但是,它在出售中引入了隨機性,有些用戶喜歡,有些則不喜歡。
階段2:結算
在這個階段,運營商(或他們的代表)根據可得供應匹配出價,決定誰可以購買物品,誰不能。
鏈上vs.鏈下結算
最后一個主要節點是誰來從所有出價池里選出中標者。在先到先得的模式里,這由礦工完成,我們已經說明了這個方法有哪些問題。
在?JayPeg的結算機制里,它的計算復雜度低到足以在鏈上以完全去信任的方式進行。
在SpankChain的模式里,中標者完全在鏈下選出。盡管出價者無法以高于他們想要的價格成交(智能合約確保了這一點),他們還是必須信任運行商不會把他們推到最高成交價,類似于去中心化交易所里的三明治攻擊的工作原理。
抽獎方式是最容易結算的,因為你只需要一個簡單的隨機數(例如,Chainlink的VRF)。但是,需要隨機性也引入另一個信任假設:無論誰生成這個隨機性,都可能偏向于自己的出價而不是其他人。相反,勝出的出價就是最高出價這種情況是不可能的。
階段3:分發
結算后,運營商必須鑄造通證,把它們分發給用戶,退回所有失敗的出價,如果他們選擇的是這種模式的話。這一步一般與gas效率和防止競賽情況發生有關。
即時結算vs.間隔結算
如果運營商想要防止他們的用戶同時領取NFT,導致gas費激漲,他們可以再次使用結算過程的隨機性,讓人們分批領取。這解決集體行動問題,因為用戶最好不要全部在同一個時間領取。盡管如此,對元數據的好奇和成為第一個在二級市場出售的想法可能最終還是會產生競賽情況。也就是說,間隔結算的方式也會增加用戶的等待時間。
領取vs.接收令牌
在分發方面唯一要提的是,用戶是否必須自己領取通證,還是運營商可以簡單地在一段時間內將令牌發給用戶。后者是間隔結算的一個變體,但它還有用戶什么都不用做這個額外的好處。在前文提到的Parallel發行使用了這種方式,收效不錯,他們只要求用戶在一開始支付NFT時添加一筆”交付費用(deliveryfee)"。
階段4:揭示元數據
最后,當一個通證被分發出去時,它的元數據就會被揭示。在NFT發行的四個階段里,這一步必須在最后。它也不能在最后與其他步驟一起進行(例如,像Meebit那樣把支付、分發和揭示捆綁在同一筆交易里),因為通過回滾交易對有不良屬性的物品進行重新打亂,公平性會被破壞。在支付和揭示之間必須有至少一個區塊的間隔,使得重新打亂變得不可能,當然你可以選擇增加這個間隔來防止重組。
什么時候揭示原數據
我們現在已經確定了,鑄造NFT和揭示它的元數據不能再同一筆交易里發生,這就提出了應該什么時候揭示的問題。這不僅對公平性很重要,而且與用戶體驗和gas效率也有關。一般來說,有三種選擇:
揭示完整的收藏品:在一個完整的收藏品揭示里,運營商等到收藏品集里所有的NFT都鑄造完成后才揭示元數據。這個方法非常省gas,只需要一個隨機數,然后可以用來混洗票ID的元數據,而不需要用戶進一步的操作。
但是,它有顯著的缺點,即用戶要等到所有的NFT都被鑄造出來才能看到他們令牌的元數據。如果有人設置了什么時候揭示元數據的上限(例如,24小時),有些用戶可能沒來得及鑄造,導致整個收藏品集無法賣出。
逐個NFT揭示:為了改善揭示完整收藏品集的用戶體驗,運營商還可以允許用戶逐個NFT揭示隨機性。這樣更有吸引力,因為用戶購買后馬上可以“打開”他們的物品。它還讓“未打開的”物品在二級市場上交易(這在MTG等交易卡游戲中很流行)。
然而,這種方法帶來的負擔是需要用戶進行額外的鏈上交易,例如調用ChainlinkVRF和對他們的NFT應用一個隨機數。即使對于那些不覺得特別急于揭示或對交易未打開的物品沒那么感興趣的用戶來說,這也是不可避免的。
批量揭示:作為一個潛在的中間地帶,我們提出批量揭示這個概念。在這個方式里,用戶有一段不確定的時間做鑄造,但如果他們想的話也能在下一個區塊揭示。每個請求的新隨機數都會自動揭示所有鑄造了的和等待分發的物品的元數據,揭示它們的成本幾乎是相同和不變的。
因此,注重時間的用戶可以選擇支付額外的鏈上交易來揭示元數據,這對他們之前的所有用戶都是有好處的。如果沒有用戶選擇揭示,運營商也可以根據一定的時間表來揭示,例如每一個小時一次。
隨機性的來源
在決定了何時揭示后,剩下的問題是在哪里獲得隨機性。我們建議的兩個選項是使用ChainlinkVRF或一個提交-揭示方案(commit-revealscheme)。
使用前者,你可以按訪問鏈上可驗證的隨機性來源。使用任何一種揭示機制,你都可以調用Chainlink來請求隨機性,一旦得到了滿足,就使用隨機生成的數字作為你的元數據計算的一項輸入。這將確保它對每個NFT都是隨機的。
對于后者,運營商可以在開售前創建一個隨機數(用于完整揭示)或幾個隨機數(用于逐個NFT或批量揭示),然后提前提交他們的哈希值。當一個NFT被鑄造了,運營商可以揭示這些數字,允許任何人通過哈希值驗證它們的真實性。盡管如此,這個方式也需要對運營商有一定的信任,假設他們不會利用了解隨機數的特權來鑄造最好的那些NFT。為了最小化對信任的需求,我們建議在鑄造順序上還是需要一定的獨立隨機化。
此外,對于鏈下元數據,運營商不是提交一個隨機數,而是選擇提交完成元數據的一個哈希值(所有NFT的id到特性)。這確保了元數據是預先確定的,且不會再鑄造過程中或之后被修改。盡管如此,鑄造順序中的獨立隨機化是必要的,以防止運營商利用他們對順序和特性的了解謀利。
我們給出的參考實現
我們提供了一個參考實現,我們認為它很好地平衡了所有的特性,而且易于理解和調整。
出價:在我們的實現里,用戶可以通過購買抽獎券來出價。抽獎的時長由運營商決定(我們建議24-48小時)。每張券的價格包含gas和每個NFT的價格,由運營商指定。后者作為“保證金”,在市場結算后對所有失敗的券都會進行退還。抗女巫攻擊有三個方式:每筆交易的gas、鎖定資金的資金成本,以及每個地址的券數上限。
結算:一旦出價期結束了,必須從所有券所在的池里抽出與NFT數量相等的勝出者。首先,任何人可以調用collectEntropy(),以從ChainlinkVRF獲得一個隨機數。這個隨機性在?‘shuffleEntries(),’使用,它執行Fisher-YatesShuffle。任何人都可以調用這個函數,保證活性和gas開銷可社會化(例如巨鯨們那樣)。
分發:在所有中標者都被抽出后,用戶有一個不定期限從他們勝出的券領取NFT和獲得失敗券的退款。這種情況都在同一筆交易發生。運營商現在可以開始提取勝券的收益。
揭示元數據:用戶可以在領取后的一個區塊揭示NFT的元數據。任何人都可以請求一個新的隨機數,它會自動揭示所有物品的元數據,這些物品已經被鑄造出來并等待分配。這允許注重時間的用戶為立即揭示付款,但使所有用戶受益。
總結
在這篇文章中,我們舉了一些真實的例子來說明設計不良的NFT發行如何給用戶帶來次優的結果。但是,當有人清晰地定義他們的目標并花時間解構一個發行的實際步驟時,許多設計都變得可能——而且幾乎所有的設計都比我們今天習慣的固定價格、先到先得和網絡擁堵的出售來得好。
如果你從這篇文章沒什么收獲,可以看看以下三條規則:
不可破壞的公平性是具有隨機元數據的NFT發行的最關鍵特性。使用強大的隨機性,且在NFT被購買和結算前,永遠不要揭示一個NFT的元數據。
競賽情況損害用戶利益,無論有沒有參與鑄造。使用循序出價和結算(例如,抽獎或批量競拍)來解決這個問題。
從第一分鐘開始就考慮成本效益。問問目前發生在鏈上的任何步驟是否也可以發生在鏈下,以為你的用戶節省資金。鏈下步驟可以包括出價和市場結算,前提是用戶可以對運營商建立一定程度的信任。可以考慮在揭示階段分批進行。
我們希望看到NFT開發者開始試驗其中的一些想法,從而發展出更多樣的發行。最后,我們想感謝那些一直與NFT社區分享建議,幫助提高發行質量的人:
Vitalik——提供了它對先到先得固定價格出售的釋義文章
FairDrop——分享了他們對公平抽線的概念證明設計
dotta——提供構建一個強大的前端的建議
JayPegsAutoMart和SpankChain——演示新穎的競拍方式
Parallel——演示了鏈下抽獎的最佳實踐
0xmons——提供關于設計公平發行的建議和工具
來源|Paradigm
作者|Hasu&?AnishAgnihotri
元宇宙:一個廣義通證經濟的實踐 一、引?言 “元宇宙”概念起源于NealStephenson的科幻小說《雪崩》,描述了一個人們以數字身份在多維空間中與各種軟件進行交互的世界.
1900/1/1 0:00:002014年,Meta以20億美元的價格收購了頭戴設備制造商Oculus,當時外界紛紛猜測Meta是在為搶占虛擬技術市場做準備,是在為未來買單.
1900/1/1 0:00:0010月14日,由國務院發展研究中心國際技術經濟研究所指導的《非同質化權益白皮書》正式發布。《白皮書》由北京航空航天大學數字社會與區塊鏈實驗室主任蔡維德教授與北京市天元律師事務所合伙人曾雯雯律師聯.
1900/1/1 0:00:00縱觀整個DeFi的發展歷程,DeFi在2019年就已經初露頭角,被定義為DeFi的元年,當時DeFi總鎖倉量為2.7億美元;2020年也延續了這樣的勢頭.
1900/1/1 0:00:00金色財經?區塊鏈11月8日訊?爆紅的“元宇宙”概念實際上也并非多么遙遠或者高大上的概念,其實它最早的起源是源于1992年出版的科幻小說《雪崩》.
1900/1/1 0:00:00頭條 ▌劉慈欣:元宇宙將是整個人類文明的一次內卷11月6日消息,對于近日大火的“元宇宙”概念,被稱為“中國第一位元宇宙架構師”劉慈欣表示,元宇宙將是整個人類文明的一次內卷.
1900/1/1 0:00:00