TLDR : 社群共識交給各位,Smart Contract 交給 TeahouseTLDR : 社群共識交給各位,Smart Contract 交給 Teahouse
前言
最近 NFT 實在太熱,由於中國對區塊鏈態度不正面,台灣成為華文 NFT 發展重鎮,Phanta Bear 交易量超過 Bayc,有許多 floor 價格與銷量非常誇張的案子都由台灣本土發行,實在是繼半導體以來的台灣科技奇蹟。很不幸的是,Defi Protocol 被 hack 就不說了,現在 NFT 的項目方更是各種低級錯誤連發,真的是只能用貴圈真亂來形容。
行情好的時候大家會自動忽略很多問題,反正有錢賺大家一起 #WAGMI 跟著喊,正如同我在 12 月的區塊鏈愛好者年會反覆提到的:沒錯,現在募資很容易,錢很好拿,我更重視的是拿到錢的項目方的 Integrity。我想要強調,我不是在指說項目方惡意捲款而逃或是故意做出各種不公不義的事,我打從心裡的相信區塊鏈需要共識機制,NFT 的價值需要社群的理解。但是這些善意需要科技的支持,視而不見 NFT 項目糟糕的發行除了變相鼓勵既得利益者以外,更會把成本轉嫁到真正的支持者身上,最後只會使整體行情消失,幣價下跌,最後整件事就真的變成詐騙,完全違背區塊鏈精神。
與其笑買的人是韭菜,罵項目方作弊,重點是我們面對這些問題怎麼提出正面的建設性作法來幫助團隊正確的發行 NFT,來預防錯誤發生,讓區塊鏈社群能夠更正面,#WAGMI。為了不讓整件事變成我個人在 fb 上笑鬧的日常,成為台灣區塊鏈產業最好笑的 21 人,Teahouse Finance 決定提出發行 NFT 的正確流程:
專注在解決三個大方向問題
如果我們只是 mint 出 NFT 以後丟到 Opensea 上賣,那老實說能做的事情不多,也不會有什麼問題。不過現在主流發行不是這樣,會遇到的問題霸主Paradigm的研究員Hasu也已經整理過,我也有寫過 medium。市場經過一段時間的 playout 後,Teahouse Finance 更是進一步的整理最需要注意的三大問題,並提出建議作法。
建立白名單 Obtaining Whitelists
由於市場很熱,要買的人遠遠的大過販賣的 NFT 數量,為了對抗機器人與科學家的各種海克斯閃現,建立白名單變成項目方第一個重要規劃,一般來說有以下方法:
- 要求用戶根據某 blocktime 持有一定數量的 token,或是 staking 到項目方提供的合約中。優點是超級簡單執行,超級容易了解,適合世界性的專案 NFT。缺點是沒辦法想到一個「 真正公平 」的要求 token 數量,因為項目方要求很多 token 就無法阻止「 富者越富 」,要求太少 token 也會被有心人士買一堆 token 然後分到大量錢包 sybil attack,或是項目方從NFT出發還沒有 token。有的時候的做法就會出其不意的宣布 snapshot 時間讓大家沒辦法多帳號,一般 defi protocol 的 airdrop 也會這樣做。
- 要求用戶在 on-chain 上做過一些事,不論是自己的項目或是別人的,token airdrop 常見,以後一定也會變成 NFT airdrop。
也是常見又好理解,機器人科學家也沒有辦法預先知道 ( 除了項目方知情人士,但是一旦發生就會被認定是項目方的問題,所以也不太會發生 ),問題是不太適合藝術性或是還在早期階段的項目。 - 要求用戶做 off-chain verification
註冊 email,Proof of Human,曾經是其他 web2.0 服務的會員,買過演唱會門票等等各種規則。優點是科學家沒有辦法 counter,可以更確保 NFT 被真正的支持者買入。缺點就是非常中心化,然後很吃時間資源,反而是真正的中心化巨獸才能辦到。( 想像台灣大哥大給你一個貼心提醒簡訊:通過 kyc 的貴賓,您的大哥大 NFT 已經放在以下錢包,私鑰如下,歡迎自由轉移或由台灣大哥大錢包為您服務⋯⋯) - 先到先得加上抽籤
只有先到先得實在太慘烈了,通常項目方會需要分配一些白名單名額出去給已經有合作的 KOL 或 DAO,然後剩下的「 大多數 」會用抽籤的,這裡重要的是項目方本身公開給出多少白名單。沒設白名單又賣不完的現象已經非常少見 ( 遙想我大羊駝財經 )。驗證給出去的白名單我們可以使用 Merkle Tree,可以大幅下降驗證地址是否正確的 gas fee,然後只增加了一點點點點的 minting 成本。
抽籤的問題就比較大,只是拿兩個地址 hash 起來的結果就會像 2018 年 FOMO3D 的 airdrop 被攻破,因為所有人都會知道你是拿哪兩個東西去 hash,所以大家都可以預先去試,如果結果不好就不 mint 出來。所以抽籤跟隨機數的機制重點在如何公開說明自己會用什麼 random number,但是連自己都不能預先知道:
- a) 選一個 256 bits 的隨機數 r ,選定一個「 未來 block 」 的block hash , s
- b) 公布 r 跟 s 給大家檢驗,Teahouse Finance 會多看幾眼
- c) 計算 x = keccak256 ( r + s + 來抽籤的地址 )
- d) 公布 x 的結果,可以用數值最小的前 n 名就是抽到的人
這裡面會用 Chainlink VRF 的項目方也可以用 $LINK 來取得隨機數,會簡單一點。重點還是在網站上公布可檢驗的合約,計算 x 如果在 chain 上做太耗時耗 gas 了,所以 off-chain 做然後公布一個 read-only 的 Javascript 以昭告天下,您就已經做得比 99.9% 的項目來的好了。
這邊呼籲有興趣發行 NFT 的項目方多看看 Merkle Tree 和 VRF,現在太多「只帶有區塊鏈風味」的項目方已經一點密碼學都沒有了,拜託不要開直播用 excel 抽,大樂透都起碼還有妹子和律師。
抽NFT盲盒 On-the-fly NFT minting
NFT 盲盒有兩種不同的類型,一種是 10k PFP project 裡面比較稀有屬性,與 rarity score 相關的分配,另外一種是 gamefi project 抽寶箱那種手遊常見的隨到隨抽機制。
- Commit / Reveal
項目方 pre-mint,先畫好 assign 好,用戶買了盲盒以後通常會在 OpenSea 上看到 ??? 的盲盒,然後這些盲盒在透過剛剛前面講的取得隨機數的方法,把不同的 feature / drip / attribute 分配到用戶的盲盒。也是一樣 off-chain 做,提供可以後設驗證的方式就好。 - On-the-fly
另外一種隨到隨抽 gamefi 的無限盲盒,因為牽扯到 NFT 本身的設計的數量,就稍微複雜一點。因為如果項目方先 assign 好,稀有的就是那些,那如果稀有的被抽掉了,就會像柑仔店那種大獎已經被抽走就沒人要抽的福袋或刮刮樂,所以通常的作弊方式就是根本沒有大獎或是公布機率是假的 ( 苦主–丁特 ) 。
項目方還是可以用 Chainlink VRF 來提供 random seed,要確認每次都要用不同的隨機數,隨到隨抽盲盒我們還是可以用類似第一種型態的 Commit / Reveal,但是就很難阻止項目方自己「 試mint 」把最好的都留給指定錢包,如果沒有公正的第三方驗證方式,用戶就只能選擇,我「 相信 」這個項目方重是大家的權益,在利益上沒必要特別服務什麼人,所以我購入項目方 NFT,不相信就不要買。
避免捲款 Avoid ETH soft rug
這一點是 Teahouse Finance 提出來維護生態系的重大關鍵。公正需要用科技來維護,而 NFT 社群共識需要用公眾利益的 roadmap 來維護,項目方拿到大家 ETH,第一件事就是把 ETH 換成台幣,不就跟 2017 ICO 一樣嗎?等於變相地把 ETH HODL 拿去賣掉,然後給你一個 JPEG 所以沒有法律問題。當然,要做事需要法幣,做個帽T總是都要錢,但是如果項目方能夠自我約束,不會第一時間拿去 dump,不是更顯得有長久在虛擬貨幣經營的決心嗎?Teahouse 建議方法如下:
- 提供一個建議的 Time-lock 智能合約,可以自由設定每個月可以拿走 10% – 20% 的 ETH,事先講好就好。
- 提供一個給 NFT 社群的投票智能合約,當項目方完成 roadmap 上的特定 milestones 時,NFT 持有者可以投票確認,再發出特定比例的 ETH 給項目方。這個投票可以自由設定成比較難的「達到才給」,或是像是罷免的「除非超過特定比例不同意,不然都會自動給」。
當然,項目方自我約束幫大家 HODL ETH,如果大家都這麼做,ETH 幣價一定只會往上 #WAGMI。當 ETH 卡在合約裡時,為了發揮更大的資金效益,可以在鎖定之前先放到 AAVE 拿到 aETH ( 有利息的 ETH ) 然後再鎖定 aETH 就好,這些當然是 Teahouse 的專長^^
NFT Fair Launch
那麼長一篇當然必須要有配合的項目方,Teahouse 將與 Zombie Club 合作,確保受到關注的明星 NFT 項目能夠以公平公開的方式交付到支持者手上。如果有任何想要涉足 NFT 卻苦無技術背景的團隊,也歡迎與 Teahouse 或 Zombie 合作,我們將會盡我們所能分享,#WAGMI。