開心生活站

位置:首頁 > 綜合知識 > 

tb電子商務推廣實訓標題優化,小白也能懂的Web3技術入門指南

寫在前面

tb電子商務推廣實訓標題優化,小白也能懂的Web3技術入門指南

一直醞釀着要寫這樣一篇文章。這是一篇寫給非技術同學看的技術文。但本文企圖做得比大多數科普文更深入一些:我們探討以太坊的技術本質,希望讓具有大衆計算機使用水平的同學對以太坊的技術框架有一個初步的明確概念。

如讀者不是隻想了解幾個時髦的Web3詞彙作爲談天的資本,而是準備投身擁抱Web3,那麼無論本職工作是否做技術,能對以太坊的底層原理有本質性一些的理解,肯定不是壞事。

作者開始深入Web3和以太坊的時候,作爲技術出身的人, 也深感這個世界衆多基礎概念的全新性。

當然,也見過一些才學過人的朋友,比如團隊的產品經理帥哥,從零入門到成長爲Web3區塊鏈的專家完全無障礙,不僅做得一手好產品設計,還能衝在最前線替技術部門做技術難點攻關。

但這樣的人實在太少了。對於大多數人,作者認爲Web3的入門學習曲線可能是比較陡峭的。許多人或許還停留在知其然不知其所以然的階段。

因此,萌生了這個想法,寫一篇給所有非技術背景而需要真正理解Web3區塊鏈的朋友們,把非技術背景的朋友們值得了解的技術知識點, 用一種能聽得懂的方式講出來。寫這樣的技術內容,還指望寫得深入淺出不枯燥, 挑戰真的很大。但如果它確實小小幫助了那些不做技術的朋友們更深入的理解了以太坊,本文目的就達到了。

以太坊是一個計算機

以太坊是什麼?

當然,已經有很多的文章講以太坊,讀者多少了解過的話,應知道以太坊是第二代區塊鏈網絡(有別於第一代比特幣網絡),以太坊的通用貨幣叫做以太幣。在以太坊之上能運行以智能合約爲基礎的分佈式應用(dapp)。

先看看百度百科上以太坊的詞條:以太坊(英文Ethereum)是一個開源的有智能合約功能的公共區塊鏈平臺,通過其專用加密貨幣以太幣(Ether,簡稱“ETH”)提供去中心化的以太虛擬機(Ethereum Virtual Machine)來處理點對點合約。

這個解釋沒問題。大家也都知道以太坊是一個公共區塊鏈平臺。

但如果從技術角度深入一點點去理解以太坊,以太坊的本質本質,可能會讓讀者有些意外:以太坊本質上是一個世界性的通用計算機。而基於它的全球分佈式特性,它無疑是世界性的。

爲什麼說以太坊是計算機?

以太坊的締造者們從一開始就希望把以太坊網絡打造用於通用計算目的。這是一個非常美好的設想:使用分佈式網絡構建一個全世界人們都可以參與的通用計算系統。注意,和現在的主流互聯網體系不同,以太坊分佈式網絡是統一的單一整體。在計算機科學上,我們說以太坊整體是一個圖靈完備的狀態機。

“圖靈完備”這詞太學究了,讀者只需瞭解,這代表了可以進行通用計算的能力。這點以太坊和第一代比特幣網絡是完全不同的:比特幣網絡沒有通用計算能力。

另外,所謂“狀態機”又是什麼呢?

這個更好理解,用個人計算機做類比:當計算機運轉時,CPU從內存載入指令和數據進行運算,計算完畢後把中間運算結果保存在內存(更新“狀態”),然後進行下一次的載入和計算。類似這種需要保存狀態的邏輯機器就是狀態機。

儘管上面的解釋把計算機的運行方式做了特別簡化的描述,但現在的計算機系統本質上就是一個“計算-保存狀態-再計算”的所謂圖靈完備狀態機。

那麼以太坊呢,說它是一個通用計算機,也就是說以太坊整體上也是一個“計算-保存狀態-再計算”的邏輯機器。

只是和個人計算機把狀態保存在機器的內存(進而記錄在硬盤) 不同,以太坊的“狀態”,記錄在分佈全球的數以萬計的節點上。

以太坊的突破性創新在於,它把存儲程序計算機這樣的通用目的計算架構與去中心化區塊鏈相結合,因此創建了一個分佈式的單體狀態世界計算機。

無論以太坊的程序運行在任何地方,都能夠產生一致的狀態,通過全體共識規則確保數據正確和安全。

以太坊的數據記錄方式是在每個節點上都保存同一份信息。

也就是說,任意一個以太坊節點, 都記錄着以太坊網絡的全部信息。特別形象的,這樣的節點叫做“全節點”。這意味着以太坊網絡的全部狀態信息都完整同步在每一個節點上。

只要不是所有的全節點同時被摧毀,以太坊就可以重生。這是多麼強的生命力。

要裝下以太坊整個網絡的信息,全節點需要有多大呢,這個量級遠比讀者想象的要小得多:今天,以太坊全部區塊信息的總大小是345GB。這個容量相對於今天個人計算機動則好幾個TB的硬盤容量實在是小意思。

以太坊的總信息容量每天都在不斷的增加,但速度不算特別快,因爲在以太坊網絡記錄信息需要支付非常不菲的費用,這也是以太坊的重要特點:所有的運算操作和數據記錄都是要花真金白銀的。

前面提到,“圖靈完備”這個詞描述了以太坊系統的通用計算特性。以太坊可以跑用戶定義的通用代碼,這些代碼就是所謂的智能合約,這是以太坊區別於第一代比特幣網絡的根本創新。

正由於智能合約的支持,以太坊可以完成個人計算機所能完成的通用計算任務,從計算機科學理論看,以太坊就是通用計算機,也就是那種“計算-記錄狀態-再計算”的狀態機。

既然說以太坊是“狀態機”,不妨繼續問兩個問題:什麼時候以太坊的狀態會更新呢? 以太坊是不是像《終結者》裏的天網那樣自動運行呢?

答案或許又讓讀者意外了。以太坊雖然是世界計算機,全節點遍天下,但它的運行機制是徹底不併行的。以太坊是一個不折不扣的單線程系統。也就是說,以太坊計算機先把一個任務計算完畢,然後計算結果“狀態”更新到全世界各個節點,它纔會再繼續下一個任務。

以太坊用戶可以併發(Concurrency)的提交交易申請, 但以太坊不是並行(Parallelism)處理的。所有交易都試圖改變整個全局狀態,以太坊選擇逐個處理交易。

讀者也許聽說過以太坊網絡上越來越嚴重的擁堵排隊問題,現在可以理解了:這是以太坊的單線程任務處理機制的鍋。在以太坊上執行的任務,只能乖乖排隊按順序來,用的人多了不堵纔怪。

如何解決以太坊的擁堵問題,是當今區塊鏈技術研究的一個熱點。比如大家可能聽過的Layer2/側鏈等新詞,主要目的都是爲了規避以太坊的主鏈擁堵問題(以及高昂的運行費用)。

回頭來看,從任務的執行機制角度,以太坊可比讀者手頭正在用的個人計算機甚至手機系統都簡單多了。

現在的個人計算機系統都是各種實時多任務,各種後臺前臺程序併發運行;以太坊除了信息狀態同時存於分佈世界的各節點,在系統運行方式上,反而是特別簡單的單線程模式。

另外,以太坊底層有一個持續運作的所謂操作系統嗎,這個世界計算機是不是有點類似《終結者》裏的天網那樣自動和智能化呢? 或者,至少有個類似計算機的操作系統來控制整體運行?

答案是:非也。

以太坊上完全沒有“背後自動運行”這種說法。以太坊的所有計算任務都以“交易”來驅動,交易由用戶持有的以太坊地址賬戶發起,只有成功和不成功兩種結果。交易成功, 則在以太坊記錄全局狀態更新; 交易不成功, 則全局狀態保持不變。

值得再重複一下, 以太坊是一個全局的單體狀態機,交易是唯一能夠讓這臺狀態機向前推進並改變狀態的東西。以太坊上的智能合約代碼不會自動運行。以太坊也不會在“後臺”運行。所有這一切,都是由用戶交易觸發的。

所以, 儘管同爲通用計算機,但以太坊的運行模式和個人計算機系統是很不同的。

至於以太坊計算機是否有神祕的人工智能, 甚至有沒有“天網”的雛形, 讀者也可以直接回答了:以太坊沒有任何自動運行機制,更不說人工智能;它不是天網,只是一個很好的分佈式平臺。從任務執行的底層機制來看,它恐怕比你桌面上的筆記本電腦還要簡單很多。

去中心化的本質和基礎

我們總說,以太坊爲代表的Web3網絡是去中心化的網絡。那麼什麼是去中心化?爲什麼能去中心化?誰來保證去中心化交易的可信和安全呢?

所謂中心化,在當前的互聯網模式意義上,是指在互聯網上進行的用戶之間的互動,都基於一個可信的公司維護的互聯網服務。從技術上,就是典型的服務器-客戶端模式。

比如一個看似簡單的點對點轉賬:用戶A通過手機微信或支付寶給另外一個用戶B當面掃碼轉賬100塊。實際上,需要A和B都信任的騰訊或螞蟻金服的後臺服務器來操作雙方賬戶,服務器把用戶A的賬戶金額減少100塊,把用戶B的賬戶金額增加100塊,並確保這兩個操作一起發生。因爲微信支付或者支付寶已經有足夠廣泛的使用,用戶“信任”它們的後臺服務器不會出差錯。

我們能看到,當前互聯網模式下,互聯網服務的特點是: