您現在的位置是:首頁 > 人文

吊炸天的Web3,到底是個啥

由 特大牛 發表于 人文2022-10-13
簡介”我的理解是,現在是Web3的早期時代,一切都還很粗糙,以太坊儲存很貴,IPFS又還沒有普及開來,現在只是最重要的資料在區塊鏈上,還有很多資料仍然是中心化的

aabb什麼什麼的看

吊炸天的Web3,到底是個啥

本文作者:衛劍釩丨原標題:《Hi,兄弟,Web3到底是怎麼回事》

致正在一知半解的朋友:本文的知識,你如果自己去摸索,可能需要半年、一年甚至更長時間才能搞明白。本文儘可能讓你在半小時內建立起靠譜的認知。

另:本文對區塊鏈的舉例主要是以太坊,有時會混用這兩個詞。請自行鑑別。

Q:Hi,兄弟,Web3現在很火,我在網上看了很多文章,總還是弄不明白什麼是Web3,你給我講講唄。

你看不懂那些文章,是因為那些文章大多都是宣介性質的,他們並沒有講很基礎的東西。

本質上,Web3是一個技術上的東西,需要一些技術性的解釋。

如果你始終停留在表面,那你就始終抓不住實質。

Q:那麼,老兄,Web3到底是個啥啊,我記得以前有Web3。0的,它們有關係嗎?

現在(2022年)人們說的Web3,不再是前些年曾經被提出過的Web3。0。顯然,自從Web2。0出來以後,很多技術都自稱是Web3。0的,其中有一些不乏名人背書。

曾經比較流行的說法有:Web3。0是語義網;Web3。0是物聯網;Web3。0是網際網路+人工智慧;Web3是網際網路+虛擬現實等等,但由於沒有任何一個獲得實質性的成功,這些說法後來基本都隱退了。

這兩年人們說的Web3。0,基本上就是指網際網路+區塊鏈+ DApp(去中心化應用)了,而且,可能是為了撇清和以前Web3。0的關係,現在的叫法基本就是Web3。

(事實上,小版本號也沒有什麼用)

Q:我說呢,那這個Web3怎麼感覺有點要火啊。

Web3和前面的Web1(網頁展示)、Web2(使用者貢獻內容)的主要區別就是,使用者對自己的數字資產有了安全感:

除非本人同意,自己的資料資產,任何人都拿不走、改不了。

而以前,對於使用者的資料,大公司和政府是有控制權的。畢竟資料是在公司那裡,理論上,他們想怎麼改就怎麼改,想怎麼刪就怎麼刪,使用者是沒有辦法的。

而且,對於網站的霸王條款,使用者往往是弱者,沒有討價還價的能力,網站利用你的創作吸引了客戶和流量,而你卻不能分享其中的利益,或者只能拿到微薄的回報。

從這點講,Web3是有革命性的:

在Web3,公司不僅不再能控制你的資料,而且也不能控制你的收益。

如此有價值的東西,而且處於初期,你說人們能不興奮嗎。

Q:為什麼會這樣?網站難道不再能控制它的資料了?

因為最主要的資料,已經不在網站的資料庫中了。

最主要的資料,在區塊鏈上。

區塊鏈的資料安全性,想必你是知道一點的,一是誰也改不了資料,二是沒有私鑰就轉移不了資產。

而私鑰只在你手裡。

(你自己要保管好啊,長點心眼!)

Q:網站為什麼願意把資料放在區塊鏈上?存在自己資料庫裡它不香嗎?

如果有兩個提供同樣功能的網站,一個是傳統技術,一個提供可信的資料資產保護,還能讓人們得到收益,你說人們會選擇哪個?

這就是OpenSea。io會脫穎而出的原因。

Q:OpenSea是怎麼做到這點的?

使用者上傳自己創作的圖片,給它標價(list),或等待他人出價(offer)。

如果有人買,OpenSea收取成交價格的2。5%作為手續費。

圖片作者,除了首次交易獲利外,後續這個作品再被出售時(不管多少次),仍能每次抽成2。5%(這個值可以設定高達10%)。

OpenSea本身的業務邏輯,都寫成智慧合約放在區塊鏈上,所以資料的安全性由區塊鏈保護。

圖片所有者的權益,由私鑰保護。

而且,所有交易,都能在區塊鏈上公開查詢。

採用傳統技術的網站,是做不到這些的。

OpenSea仍然會有業務邏輯漏洞或者網站技術漏洞,但區塊鏈保護了最重要的東西。

Q:私鑰長什麼樣子啊,給我看一眼?

0x96e716aac85c9bb67adcdff650379304cb2caf9df3cb88b39aedfd58da530db9

這個私鑰僅僅是我臨時生成的,不要把這個私鑰匯入你的錢包,因為它已經曝光了。

Q:私鑰這麼長?這怎麼記啊

私鑰一般是用錢包(比如MetaMask這樣的)來管理的,你不用記。

關於私鑰的備份或者恢復這類事情,有很多成熟方案和注意事項,這裡就不講了。

Q:就這些?這能讓人興奮嗎?

什麼事能讓人興奮?

突如其來的巨大好處。

Web帶來了什麼好處?

一是DApp的所有底層資料都公開給大眾,而且還能防篡改。

二是區塊鏈自帶激勵機制,你不僅能保護數字資產,還能兌換token。

以前可沒有這等好事,也就這幾年才有。

Q:我不裝了,我是搞技術的,我搞過開發,你能給我講講Web3在系統架構上和以前有什麼不同嗎?

你搞過開發,那麼下圖的左邊你一看就明白是啥吧:

吊炸天的Web3,到底是個啥

如果你懂以太坊,右邊是不是也很好懂?

圖片來源見參考文獻

1

2

Q:哦,明白了,前臺和以前沒太大不同,後臺變成以太坊了唄。

對,就像我前面說的,最核心的資料在以太坊。

Q:那我怎麼呼叫以太坊的資料和程式碼呢,我從來沒有寫過這樣的程式。

以太坊所謂的

去中心化

,其實就是很多節點一起維護資料而已,上面不僅有資料,而且還有程式碼,程式碼也就是人們常說的智慧合約。

每個節點都可以廣播

交易

請求,然後,其他節點會執行該交易,並將產生的資料變化(術語叫狀態變化)記錄在區塊鏈上。

你的前臺想與區塊鏈互動,要求能發出交易,為了做到這點,要麼你自己維護一個節點,要麼你與其中一個節點互動。

一般人都懶得自己搭節點(費時費力費儲存),

所以大多使用第三方服務如Infura或Alchemy提供的節點服務,讓這些服務幫助發出交易。

當然,這涉及到一個是否信任他們的問題,後面還會說到。

Q:那我怎麼使用Infura這些服務呢?我可當過程式設計師的,你稍微詳細說一說唄。

你去Infura或者Alchemy的網站,註冊個賬號,然後他們會給你個連結(

provider

)讓你用。

比如一個provider長這個樣子:

https://etheruem-mainnet。infura。io/v3/491234567abced4456abcaabbcdee

(上面這個是我瞎編的,不要直接用它,自己申請一個)

然後你安裝

Web3。js

這種庫(或者用Web3。py庫,這種可以和區塊鏈通訊的庫都可以被理解為Web3 API),和provider建立連線,做好交易包,發給這個連線就好了(本質上是個json-rpc呼叫)。

這個provider會把你的交易廣播到以太坊上,並把結果返回給你。

Q:您說的是傳送交易,那區塊鏈上的資料我怎麼讀呢?

一樣的,還是使用Web3的API,你可以讀取區塊和交易的具體資料。

你還可以對智慧合約的Event進行監聽(比如用Web3。js監聽,並指定回撥函式,一旦發生事件就可自動處理)。

此外,還有一種叫“The Graph”的API,程式設計師可以用GraphQL作為查詢語言,方便快捷地查詢區塊鏈上的各類資料。The Graph會把各種資料都準備和索引好,你就不用自己費力去啃生肉(讀原始資料並解析)了。

Q:啊啊,就這麼簡單啊,說的我都蠢蠢欲動了,我是不是應該開發個DApp了?

在足夠簡單的情況下,你可能開發一個頁面就能實現一個DApp。

Q:那使用者登入會不會有所不同?

你太聰明瞭,的確如此,你不再需要儲存使用者名稱和密碼資訊(除非你很想這麼做),讓他們用錢包登入就好了。

另外,錢包也具備provider功能,你可以不用去連Infura或者Alchemy,你讓頁面指令碼直接連使用者的錢包,讓使用者錢包和區塊鏈通訊。

不過,要知道,MetaMask背後用的也是Infura。

Q:什麼是錢包?幹什麼用?長什麼樣子?

對於

crypto

(加密技術、區塊鏈愛好者)而言,錢包指的就是加密錢包,它幫你生成私鑰,生成地址。

使用者的私鑰是儲存在錢包裡面的,所以進入錢包需要一個口令保護,否則別人接觸你電腦就拿走私鑰了。

一個DApp如果涉及改動資料,就需要呼叫使用者的錢包,在使用者的確認下,對交易做

簽名

,然後發出。

比如最流行的錢包MetaMask,長得是這個樣子:

吊炸天的Web3,到底是個啥

現在,你可以在腦海裡建立這樣的架構:

吊炸天的Web3,到底是個啥

Q:還有一點,聽說Web3喜歡把東西存在IPFS上,這是什麼意思,為什麼不是存在以太坊上?

以太坊上存東西很貴的,所以只存最重要的資料。

如果是圖片、文件、音影片這種比較大的資料,現在很多還是使用傳統技術儲存。

當然,為了“去中心化”,可以把資料放在IPFS上。IPFS是一個去中心化的儲存協議,使用、借鑑了BT(BitTorrent)、Git(版本管理)、DHT(分散式雜湊表)等技術,可以說,在檔案分散式儲存方面,集合了一些最先進也是最好用的技術。

和Web1、Web2不一樣的是,在IPFS網路上,檔案的CID(hash)決定了它的URI(連結),也就是說,相同的檔案有相同的連結。這和以前是完全不一樣的,

比如BAYC之1號猿的IPFS地址為:

ipfs://QmeSjSinHpPnmXmspMjwiXyN6zS4E9zccariGR3jxcaWtq/1

還有一個叫SWARM的,也是去中心化儲存,和IPFS的關鍵技術是類似的,但又不太一樣。由於是以太坊基金會主導的,所以也備受關注,這裡就不多說了。

Q:你一直在說去中心化,為什麼crypto都這麼喜歡去中心化呢,這難道真的很好嗎?

其實,提倡“去中心化”,就是對現行“中心化”網際網路的一種不放心、不信任,就是對資料安全的極度關心。

中心化的架構下,使用者的資料儲存在公司那裡,萬一哪天它倒閉了怎麼辦?

比如你在一個繪圖網站辛辛苦苦做了1000張圖,結果突然某天網站說:“不好意思,資料丟失”,你怎麼辦?

比如你在一個影片APP上,辛辛苦苦上傳了10000個影片,結果某天該公司說,不好意思,我們放棄此產品,你怎麼辦?

你只能認了。因為在使用者服務協議上,公司對於資料丟失和停止服務,都安排得明明白白的。

比如,某著名APP在“使用者協議”裡是這麼說的:

“您理解並同意,公司為了整體服務運營、平臺運營安全的需要,有權視具體情況決定服務/功能的設定及其範圍修改、中斷、中止或終止本軟體及相關服務。”

“您理解並同意,本軟體及相關服務可能會受多種因素的影響或干擾,公司不保證軟體及相關服務完全適合使用者的使用要求;不保證軟體及相關服務不受干擾,及時、安全、可靠或不出現錯誤;不保證軟體及相關服務中任何錯誤都將能得到更正。”

這就是說,你在使用時,已經劃勾同意了:

公司隨時可以中止服務,公司也不保證服務不出現錯誤,也不保證錯誤都能修復。

公司還可以根據自己的標準,刪除使用者的資料,拒絕使用者的釋出:

“如果公司有理由認為您的行為違反或可能違反上述約定的,公司可獨立進行判斷並處理,且在任何時候有權在不事先通知的情況下終止向您提供服務,並依法追究相關責任。”

此外,公司還能用你的作品掙錢,而且還不給你錢。

你看,在Web2裡面,在中心化的模式下,什麼都是公司說了算,使用者為了使用公司的服務,一般只能接受,有什麼辦法呢。

這頗有點像員工和公司的關係,公司讓你996,你就996唄,換工作也挺不容易的,而且換了也是996。

於是有人就想出了“去中心化”的東西,使用者的資料,不是一個實體(人)管,而是1000個人管。

而且這1000個人,嚴格按照協議行事,要想改資料,得大多數人都同意才成!

這1000個人,天涯海角,素昧平生,共同保護了使用者資料的可用性和完整性。

Q:我看您提到可用性和完整性,那資料的“保密性”呢?

我之所以沒說保密性,是因為區塊鏈其實更強調公開、透明。

如果需要提供保密性,那也不難。

你想,crypto建立的世界,還用發愁這事嗎?

Q:但Web3世界也發生了很多駭客事件啊,你能說它安全嗎?

程式都是人寫的,人寫的就會有Bug,道理就是這麼簡單。

但BTC和ETH這種基礎性的東西,已經在早期非常少數的幾次攻擊之後,非常健壯地運行了多年。

雖然都會有問題,但從安全性上看,Web1、Web2和Web3是沒法比的。

Q:這1000個人憑什麼就要為大家服務呢?

所有的crypto技術,在設計協議時,都會考慮其激勵模型,也就是如何讓幹活的人得到好處。

所以,你會看到形形色色的加密貨幣、代幣、Token這些。

只要你按照區塊鏈的協議幹事,為資料安全做了貢獻,你就會得到好處。

而使用者,也可以在DApp裡面做貢獻,賺Token。

所以,在區塊鏈裡,所有參與者是共享生態和收益的。

這個以前是有很大不同的

(這裡不多說了)

Q:可現在所謂的去中心化,哪裡能真正做到呢,infura和alchemy不就是中心化的嗎,你們這麼多人都用。

Signal創始人Moxie在他的一篇文章

3

4

中說:

“幾乎所有DApp都使用Infura或Alchemy來與區塊鏈互動,而且沒有使用任何東西來驗證區塊鏈狀態或響應的真實性。這讓我很驚訝。建立一個去信任的分散式共識機制已經投入了大量的工作、精力和時間,但幾乎所有希望訪問它的客戶都是透過簡單地信任這兩家公司的輸出來實現的。”

“區塊鏈的支持者可能會說,如果出現這些型別的中心化平臺也沒關係,因為區塊鏈上的資料是完整可用的,如果這些平臺行為不端,客戶可以簡單地轉移到其他地方。”

嗯,他發現了問題,然後自己回答了問題,回答得很好。

Q:像我這種從來沒有接觸過Web3的人,怎麼能夠切身感受一下呢?

用chrome瀏覽器,或者firefox瀏覽器,裝個MetaMask錢包。

然後開啟OpenSea,先感受一下NFT。

這是一個典型的Web3應用。

Q:可OpenSea不也是中心化的嗎?你就敢信任它?

OpenSea只是一個前端,前端的中心化不足為懼,因為這種中心化可以被打破。

OpenSea後端的資料是在區塊鏈上,這才是人們最關心的。

Q:衛sir你以前說過,NFT的圖片其實並不在區塊鏈上的,這也不好吧。

是的,我在《用直觀抓住NFT》這篇文章裡說過這件事。

Moxie也發現了這點,他是這麼說的:

“NFT不是將資料儲存在鏈上,而是包含一個指向資料的URL。看看流行市場上以數十、數百萬美元出售的許多NFT,該URL通常只是指向某個執行Apache的VPS。任何有權訪問該機器的人、將來購買該域名的任何人或任何破壞該機器的人都可以隨時將NFT的影象、標題、描述等更改為他們想要的任何內容(無論是否不是他們“擁有”該NFT)。”

我的理解是,現在是Web3的早期時代,一切都還很粗糙,以太坊儲存很貴,IPFS又還沒有普及開來,現在只是最重要的資料在區塊鏈上,還有很多資料仍然是中心化的。

就先這樣吧,飯要一口一口吃,關鍵看未來的發展。

你喜不喜歡它,要看你的認知,你覺得它是寶貝也可以,你覺得它是狗屎也可以。

這就好比,30年前的人,第一次看到Web1的網際網路,覺得這玩意能有什麼用呢?

畢竟,Moxie這篇文章的標題是:My first impressions of Web3。

Q:看上去,後端都可以去中心化了,那網站前臺能去中心化嗎?

當然可以,網站前臺無非也就是一些html/css和指令碼檔案嘛,放到去中心化儲存系統上就好了。

現在,Web3架構可以想象成這樣:

吊炸天的Web3,到底是個啥

Q:還有一點,我聽人說,以太坊上的gas費很貴,然後速度又很慢,每秒可容納的交易很少,這怎麼可以用呢?

嗯,這確實是個大問題,gas費貴是因為大家都想用,那就出價高的先用。

單位時間容納的交易筆數少,是因為每個區塊的大小是有限制的,目前最大也就30Mgas,平均出塊時間也就 15秒左右,每筆交易花大約幾萬到幾十萬gas,你說能有多少筆交易呢(不用算了,每秒十幾筆)。

所以現在有很多人致力於二層技術,就是想在二層解決這個問題,雖然一層的eth2也在致力於解決這個問題。

Rollup技術(包括optimistic rollups、zk rollups)是目前二層方案中最有前景的,Arbitrum One、Optimism、Metis等解決方案是optimistic rollups技術的優秀代表;zkSync和StarkEx則是zk rollup的優秀代表,而且這些二層方案本身也都是去中心化的。

“顧名思義,Rollup技術就是把一堆交易捲起來變成一個rollup交易,所有節點接收到這個rollup交易之後,不去執行被捲起來的邏輯,而只去接受這些邏輯的執行結果。因此這個rollup交易所需要的gas會遠小於執行這些交易的gas。”

5

二層的每秒交易數可達數千筆,這就大大解決了一層的擁堵和昂貴問題。智慧合約可以直接部署在二層,DApp也可以直接呼叫二層,一層更多就是在用堅實的演算法保證資料安全。

這個架構圖你可以腦補一下

(在provider和ethereum中間再加一層)

Q:他們真的能去中心化地解決容量問題嗎?

放心吧,計算機和網路技術發展這麼多年,我就沒見過解決不了容量問題的。

CPU、記憶體、儲存、網速,哪一個的容量問題沒有解決呢。

這些年唯一沒解決的,是電池容量。

Q:我問最後一個問題,人們對Web3真的有需求嗎?

可以換個問法:人們真的需要保護自己的資料資產嗎?

文|衛劍釩

參考文獻

The Architecture of a Web 3。0 application(https://www。preethikasireddy。com/post/the-architecture-of-a-web-3-0-application)

阿法兔

:Web3應用程式架構

My first impressions of Web3(https://moxie。org/2022/01/07/web3-first-impressions。html)

Signal 創始人:開發兩個去中心化應用後,我發現 Web3 可能是偽命題(https://www。chaincatcher。com/article/2068727)

什麼是Rollup(https://zhuanlan。zhihu。com/p/367736563)

推薦文章