我對 Web3 的第一印象
作者:moxie
盡管我自認為是一名密碼學家,但我對“加密”(crypto)卻并不特別感興趣。我不記得自己是否真的說過“滾出我的地盤”這句話,但與其點擊最新的NFT發布信息,我更傾向于瀏覽那些懷舊風的“佩珀里奇農場記得”(PepperidgeFarmRemembers)味兒的梗圖,感嘆“crypto”過去意味著“密碼學”(cryptography)的美好時光。
另外,坦白講,我并不認同那種將生活的方方面面都轉移到一個工具化經濟中的代際興奮感。
即便僅從技術層面來看,我也還沒能成為一名信徒。因此,鑒于最近對所謂Web3的廣泛關注,我決定更深入地探索這個領域的一些發展,看看自己是否錯過了什么。我對Web1和Web2的看法
Web3是一個相對模糊的術語,這使得嚴格評估Web3的目標變得困難。但總體的觀點(https://a16zcrypto.com/posts/article/why-web3-matters/)似乎是,Web1是去中心化的,Web2將一切都集中到平臺上,而Web3將再次去中心化。Web3應該能夠在去中心化的基礎上為我們提供與Web2相同的豐富體驗。
首先,弄清楚為什么會出現中心化平臺是件好事,在我看來,解釋非常簡單:
1.人們不想運行自己的服務器,也永遠不想運行。Web1的前提是互聯網上的每個人都是內容的生產者和消費者,也是基礎設施的生產者和消費者。我們都有自己的網絡服務器,有自己的網站,有自己的郵件服務器,有自己的狀態消息服務器,有自己的chargen服務器,有自己的字符生成服務器。然而,我認為這再怎么強調也不為過:這不是人們想要的。人們不想運行自己的服務器。
即使是極客們,現在也不想自己運行服務器。即使是全職開發軟件的組織,現在也不愿意自己運行服務器。如果有一件事可以總結我們對世界的認知,那就是:人們不想自己運行服務器。那些提供服務器托管服務的公司因此獲得了成功,而那些基于這些網絡的可能性不斷迭代新功能的公司則更加成功。
2.協議的演進速度遠遠慢于平臺(https://signal.org/blog/the-ecosystem-is-moving/)。經過30多年,電子郵件仍然未實現加密;而與此同時,WhatsApp在一年內就從未加密轉向了全面的端到端加密。人們仍在嘗試標準化通過IRC可靠地共享視頻;而Slack可讓你根據自己的臉部創建自定義反應表情符號。
這并不是資金問題。如果某樣東西是真正去中心化的,那么改變它會變得非常困難,往往會停滯不前。而這對技術來說是個問題,因為生態系統的其他部分正在快速發展,如果跟不上步伐,就會失敗。有整整一個平行產業專注于定義和改進像敏捷開發(Agile)這樣的方法論,試圖找出如何組織龐大的團隊以盡可能快速地行動,因為這至關重要。
當技術本身更傾向于停滯而非發展時,這就是一個問題。一個被驗證成功的做法是,將一個停滯在90年代的協議中心化,然后快速迭代。
但Web3想要與眾不同,讓我們來看看。為了快速了解這個領域并更好地理解未來可能的發展,我決定構建幾個dApp并創建一個NFT。制作一些去中心化應用程序
為了感受Web3世界,我制作了一個名為AutonomousArt(https://autonomous.graphics/)的dApp,任何人都可以通過為NFT做出視覺貢獻來鑄造Tokens。隨著時間的推移,做出視覺貢獻的成本會增加,貢獻者支付的鑄幣資金會分配給所有之前的藝術家(將這種財務結構可視化為類似金字塔的形狀)。在撰寫本文時,已經投入了超過38,000美元來創作這件集體藝術作品。
我還制作了一個名為FirstDerivative(https://firstderivative.market/)的dApp,它允許你創建、發現和交換追蹤基礎NFT的NFT衍生品,類似于跟蹤基礎資產的金融衍生品?。
兩者都讓我感受到了這個領域的運作方式。需要明確的是,這些應用程序本身并沒有什么特別“分布式”的東西:它們只是普通的React網站。“分布式”是指狀態以及更新狀態的邏輯/權限所在的位置:在Blockchain上,而不是在“中心化”數據庫中。
加密領域讓我感到奇怪的一件事就是,缺乏對客戶端/服務器界面的關注。當人們談論Blockchain時,他們會談論分布式信任、無領導共識以及所有運作機制,但往往掩蓋了客戶端最終無法參與這些機制的現實。所有網絡圖都是服務器的,信任模型是在服務器之間,一切都與服務器有關。Blockchain旨在成為一個對等網絡,但并非設計成讓你的移動設備或瀏覽器真正成為這些對等網絡之一。
隨著向移動端的范式遷移,我們現在生活在一個由客戶端和服務器組成的世界里,前者完全無法替代后者:這些問題對我來說比以往任何時候都重要。與此同時,Ethereum實際上將服務器稱為“客戶端”,因此甚至沒有一個詞來描述必須存在的實際的、不可信的客戶端/服務器接口,而且也沒有意識到如果成功,最終客戶端的數量將比服務器多出數十億個(!)。
例如,無論是在移動設備還是Web上運行,像AutonomousArt或FirstDerivative這樣的dApp都需要以某種方式與Blockchain交互,以便修改或呈現狀態(集體創作的藝術作品、其編輯歷史、NFT衍生品等)。不過,這實際上不可能從客戶端執行,因為Blockchain無法存在于你的移動設備上(或實際上存在于你的桌面瀏覽器中)。因此,唯一的選擇是通過在某個服務器上遠程運行的節點與Blockchain交互。
服務器!!!但是,眾所周知,人們不想運行自己的服務器。碰巧的是,一些公司已經出現,它們出售他們作為服務運行的Ethereum節點的API訪問權限,同時提供分析、在默認EthereumAPI之上構建的增強API以及對歷史交易的訪問權限。這聽起來……很熟悉。目前,基本上有兩家公司。幾乎所有dApp都使用Infura或Alchemy與Blockchain進行交互。事實上,即使你將像MetaMask這樣的錢包連接到dApp,并且dApp通過你的錢包與Blockchain交互,MetaMask也只是在調用Infura!
這些客戶端API不使用任何東西來驗證Blockchain狀態或響應的真實性。結果甚至沒有簽名。像AutonomousArt這樣的應用程序會說“嘿,這個智能合約上這個視圖函數的輸出是什么”,Alchemy或Infura會用JSONblob響應“這是輸出”,然后應用程序會呈現它。
這讓我很驚訝。人們投入了大量的工作、精力和時間來創建一個免信任的分布式共識機制,但幾乎所有希望訪問它的客戶端都只是簡單地信任這兩家公司的輸出,而無需進行任何進一步的驗證。這似乎也不是最好的隱私情況。想象一下,每次你在Chrome中與網站互動時,你的請求都會先發送到Google,然后再路由到目的地并返回。這就是Ethereum今天的狀況。所有寫入流量顯然已經在Blockchain上公開,但這些公司還可以查看幾乎所有dApp中幾乎所有用戶的幾乎所有讀取請求。
Blockchain的支持者可能會說,如果出現這種類型的中心化平臺,那也沒什么,因為Blockchain上可以查看狀態,因此如果這些平臺行為不當,客戶可以簡單地轉移到其他地方。然而,我認為這是對平臺發展動態的一種非常粗淺的看法。
讓我給你舉個例子。制作NFT
我還想創建一種更傳統的NFT。大多數人在想到NFT時都會想到圖像和數字藝術,但NFT通常不會將數據存儲在鏈上。對于大多數圖像的大多數NFT來說,這太昂貴了。
NFT并不將數據存儲在鏈上,而是包含一個指向數據的URL。該標準讓我感到驚訝的是,URL上的數據沒有哈希承諾。縱觀流行市場上許多以數十、數百或數百萬美元出售的NFT,該URL通常只是指向某個地方運行Apache的VPS。任何有權訪問該機器的人、任何將來購買該域名的人或任何破壞該機器的人都可以隨時將NFT的圖像、標題、描述等更改為他們想要的任何內容(無論他們是否“擁有”該Tokens)。NFT規范中沒有任何內容告訴你圖像“應該”是什么,甚至允許你確認某些東西是否是“正確”的圖像。
因此,作為一個實驗,我制作了一個會根據查看者而變化的NFT,因為提供圖像的Web服務器可以根據請求者的IP或用戶代理選擇提供不同的圖像。例如,它在OpenSea上看起來是這樣的,在Rarible上看起來是另一種樣子,但當你從加密錢包購買并查看它時,它總是會顯示為一個大?表情符號。你出價的不是你得到的。這個NFT沒有什么不尋常的,而是NFT規范的構建方式。許多價格最高的NFT隨時可能變成?表情符號;我只是明確表示了這一點。
不過,我發現最有趣的是,在OpenSea刪除了我的NFT后,它也不再出現在我設備上的任何加密錢包中。但是,這是Web3,這怎么可能呢?
MetaMask、Rainbow等加密錢包是“非托管”的(密鑰保存在客戶端),但它與我上面的dApp有同樣的問題:錢包必須在移動設備或瀏覽器中運行。與此同時,Ethereum和其他Blockchain的設計理念是它是一個對等網絡,但并沒有設計成讓你的移動設備或瀏覽器真正成為這些對等網絡之一。
像MetaMask這樣的錢包需要做一些基本的事情,比如顯示你的余額、最近的交易和NFT,以及更復雜的事情,比如構建交易、與智能合約交互等。簡而言之,MetaMask需要與Blockchain交互,但Blockchain的構建方式使得像MetaMask這樣的客戶端無法與其交互。因此,就像我的dApp一樣,MetaMask通過向在這個領域整合的三家公司發出API調用來實現這一點。
例如,MetaMask通過對etherscan進行API調用來顯示你最近的交易:
GET https://api.etherscan.io/api?module=account&address=0x0208376c899fdaEbA530570c008C4323803AA9E8&offset=40&order=desc&action=txlist&tag=latest&page=1 HTTP/2.0
…通過向Infura發出API調用來顯示你的帳戶余額:
POST https://mainnet.infura.io/v3/d039103314584a379e33c21fbe89b6cb HTTP/2.0{ "id": 2628746552039525, "jsonrpc": "2.0", "method": "eth_getBalance", "params": [ "0x0208376c899fdaEbA530570c008C4323803AA9E8", "latest" ]}
…通過向OpenSea發出API調用來顯示你的NFT:
GET https://api.opensea.io/api/v1/assets?owner=0x0208376c899fdaEbA530570c008C4323803AA9E8&offset=0&limit=50 HTTP/2.0
同樣,就像我的dApp一樣,這些響應沒有經過某種方式的身份驗證。它們甚至沒有簽名,因此你以后無法證明它們在撒謊。它會對你錢包中的所有賬戶重復使用相同的連接、TLS會話票證等,因此如果你在錢包中管理多個賬戶以保持某種身份分離,這些公司就會知道它們是關聯的。
MetaMask實際上并沒有做太多事情,它只是對這些集中式API提供的數據的視圖。這不是MetaMask特有的問題:他們還有其他選擇嗎?Rainbow等的設置方式完全相同。(有趣的是,Rainbow擁有他們自己的數據,用于他們正在錢包中構建的社交功能:社交圖譜、展示等,并且選擇在Firebase而不是Blockchain上構建所有這些。)
所有這些意味著,如果你的NFT從OpenSea中移除,它也會從你的錢包中消失。從功能上講,我的NFT是否永久地存在于Blockchain的某個地方并不重要,因為錢包(以及生態系統中越來越多的其他東西)只是使用OpenSeaAPI來顯示NFT,而對于查詢我的地址擁有的NFT,它開始返回304NoContent!重塑這個世界
考慮到Web1變成Web2的歷史,我覺得Web3奇怪的是,像Ethereum這樣的技術在構建時就帶有許多與Web1相同的隱含特征。為了使這些技術可用,該領域正在圍繞平臺進行整合。再次強調。人們將為你運行服務器,并迭代出現的新功能。Infura、OpenSea、Coinbase、Etherscan。
同樣,Web3協議的發展也很緩慢。在構建FirstDerivative時,如果能將衍生品的鑄造價格定為標的價值的百分比,那就太好了。這些數據不在鏈上,但它在OpenSea會提供給你的API中。人們對NFT版稅感到興奮,因為它們可以讓創作者受益,但ERC-721中沒有規定版稅,現在改變它已經太晚了,所以OpenSea有自己的配置版稅的方式,這種方式存在于Web2空間中。在中心化平臺上快速迭代已經超越了分布式協議,并將控制權整合到平臺中。
考慮到這些動態,我認為我們已經處于這樣的境地:你的加密錢包對NFT的看法就是OpenSea對NFT的看法,這并不奇怪。我認為我們不應該對OpenSea不是一個可以取代的純粹“觀點”感到驚訝,因為它一直在忙于迭代平臺,超越嚴格遵循不可能/難以改變的標準所能達到的范圍。
我認為這與電子郵件的情況非常相似。我可以運行自己的郵件服務器,但從功能上講,它對隱私、抗審查或控制無關緊要,因為GMail無論如何都會出現在我發送或接收的每封電子郵件的另一端。一旦分布式生態系統為了方便而圍繞一個平臺中心化,它就會變成兩全其美的結果:中心化控制,但仍然足夠分散,以至于隨著時間的推移而陷入困境。我可以建立自己的NFT市場,但如果OpenSea調解人們使用的錢包(以及生態系統中的所有其他應用程序)中所有NFT的視圖,它就不會提供任何額外的控制。
這不是對OpenSea的抱怨,也不是對他們所建立的東西的指責。恰恰相反,他們在嘗試構建一個可行的東西。我認為我們應該預期這種平臺整合會發生,并且鑒于這種情況的必然性,我們應該設計出能在這種組織方式下為我們提供所需功能的系統。然而,我的感覺和擔憂是,Web3社區期望的結果與我們目前所看到的有所不同。現在還為時過早
“還處于早期階段”是我在Web3領域看到的最常見說法,尤其是在討論類似問題時。從某種意義上來說,Crypto未能突破相對初步的工程階段,正是讓人們能夠將這一時期視為“早期階段”的原因,因為客觀上,它已經存在了十年或更長時間。
然而,即使這只是一個開始(而且很有可能就是!),我也不確定我們是否應該認為這是安慰。我認為事實可能恰恰相反;我們似乎應該注意到,從一開始,這些技術就傾向于通過平臺進行集中化,以便實現它們,這對生態系統的速度幾乎沒有負面影響,而且大多數參與者甚至不知道或不關心它正在發生。這可能表明,去中心化本身實際上對下游的大多數人來說并不具有直接的實際或緊迫性,人們想要的唯一去中心化程度是某物存在所需的最低程度,如果沒有非常有意識地考慮到這一點,隨著時間的推移,這些力量將使我們離理想結果越來越遠,而不是更接近理想結果。但你無法阻止淘金熱
仔細想想,如果所有Web3部分都消失了,OpenSea實際上會“更好”得多。它會更快、更便宜,而且更容易使用。例如,要接受對我的NFT的出價,我將不得不支付超過80到150美元以上的Ethereumgas費。這為所有出價設置了一個人為的門檻,否則你會因為接受低于gas費的出價而虧損。信用卡支付費用通常讓人感覺很貴,但與此相比卻很便宜。如果人們想要公開交易、報價、出價等記錄來驗證他們的會計記錄,OpenSea甚至可以發布一個簡單的透明日志。
然而,如果他們建立了一個名義上不基于Crypto的圖像買賣平臺,我認為它不會流行起來。不是因為它不是分布式的,因為我們已經看到,讓它發揮作用所需的很多東西已經不是分布式的。我認為它不會流行,因為這是一場淘金熱。人們通過Crypto投機賺錢,這些人有興趣以支持他們的投資同時提供額外回報的方式,來花費這些Crypto,因此這定義了財富轉移市場的背景。
排在隊伍末端、倒賣NFT的人從根本上并不關心分布式信任模型或支付機制,但他們關心錢在哪里。因此,錢吸引人們進入OpenSea,他們通過構建一個在Web2空間中迭代底層Web3協議的平臺來改善體驗,他們最終提供了通過OpenSea本身而不是通過你自己的智能合約來“鑄造”NFT的能力,最終這一切都為Coinbase打開了大門,通過你的借記卡,他們自己的平臺提供對經過驗證的NFT市場的訪問。這為Coinbase通過Coinbase持有的暗池自己管理Tokens打開了大門,這有助于消除交易費用,并使得完全避免與智能合約交互成為可能。最終,所有Web3部分都消失了,你有一個用借記卡買賣JPEGS的網站。由于市場動態,該項目無法以Web2平臺的形式開始,但同樣的市場動態和中心化的基本力量可能會促使它最終走向那里。
在堆棧的末端,NFT藝術家對這種進展感到興奮,因為這意味著對他們的藝術有更多的投機/投資,但如果Web3的目的是為了避免Web2的陷阱,那么我們應該擔心,這已經是這些應該提供不同未來的新協議的自然趨勢。
我認為這些市場力量可能會持續下去,在我看來,它持續多久的問題在于,大量積累的Crypto最終是處于引擎內部還是漏水桶中。如果流經NFT的資金最終被引導回加密空間,它可能會永遠加速下去(無論它是否只是Web2x2)。如果它大量涌出,那么這將是一個曇花一現。就我個人而言,我認為目前已經賺了足夠多的錢,有足夠的水龍頭來維持它的發展,這不會只是一個曇花一現。如果是這樣的話,似乎值得考慮如何避免Web3成為Web2x2(Web2但隱私性更低)。創造力可能還不夠
我只是初涉Web3領域。然而,通過這些小型項目來看,我很容易明白為什么這么多人認為Web3生態系統如此美好。我不認為它會讓我們擺脫中心化平臺,我不認為它會從根本上改變我們與技術的關系,我認為隱私問題已經低于互聯網的標準(這是一個相當低的標準!),但我也理解為什么像我這樣的極客會興奮地為它構建。至少,這是極客層面的新事物:它為創造力/探索創造了空間,讓人想起早期的互聯網時代。具有諷刺意味的是,部分創造力可能源于使Web3如此笨重的限制。我希望我們看到的創造力和探索將產生積極的結果,但我不確定這是否足以阻止互聯網的所有相同動態再次展開。
如果我們確實想改變我們與技術的關系,我認為我們必須有意識地這樣做。我的基本想法大致如下:
1.我們應該接受這樣一個前提,即人們不會通過設計無需分布式基礎設施即可分配信任的系統來運行自己的服務器。這意味著架構可以預期并接受相對集中的客戶端/服務器關系的必然結果,但使用加密技術(而不是基礎設施)來分配信任。盡管Web3是建立在“加密”之上的,但令我感到驚訝的是,它似乎很少涉及加密技術!
2.我們應該努力減輕開發軟件的負擔。目前,軟件項目需要大量的人力。即使是相對簡單的應用程序也需要一群人每天坐在電腦前八小時,日復一日,永無止境。情況并非總是如此,曾經有一段時間,50個人從事一個軟件項目并不被認為是一個“小團隊”。只要軟件需要如此協調一致的精力和如此多高度專業化的人力關注,我認為它就會傾向于服務于每天坐在那個房間里的人的利益,而不是我們可能認為的更廣泛的目標。我認為改變我們與技術的關系可能需要讓軟件更容易創建,但在我的一生中,我看到了相反的情況。不幸的是,我認為分布式系統往往會加劇這種趨勢,使事情變得更復雜、更困難,而不是更簡單、更輕松。
原文鏈接:https://moxie.org/2022/01/07/web3-first-impressions.html