以最簡(jiǎn)明的方式創(chuàng)造新世界:關(guān)于以太坊,非技術(shù)的你值得了解的所有技術(shù)細(xì)節(jié)

2 評(píng)論 3558 瀏覽 14 收藏 50 分鐘

“以太坊是什么坊、挖礦挖的是什么礦......”,很多人對(duì)Web 3感興趣,但被許多新名詞新概念攔住了步伐,作為對(duì)技術(shù)沒有太多了解的非技術(shù)人群,看完這篇科普文,也許能讓你對(duì)以太坊的技術(shù)框架有一個(gè)初步的明確概念。歡迎閱讀~

寫在前面

一直醞釀著要寫這樣一篇文章,一篇寫給非技術(shù)同學(xué)看的技術(shù)文。

但本文企圖做得比大多數(shù)科普文更深入一些:我們探討以太坊的技術(shù)本質(zhì),希望讓具有大眾計(jì)算機(jī)使用水平的同學(xué)對(duì)以太坊的技術(shù)框架有一個(gè)初步的明確概念。

寫得很吃力,結(jié)果也不一定討好,初心倒是明確的。

如讀者不是只想了解幾個(gè)時(shí)髦的Web3詞匯作為談天的資本,而是準(zhǔn)備投身擁抱Web3,那么無論本職工作是否做技術(shù),能對(duì)以太坊的底層原理有本質(zhì)性一些的理解,肯定不是壞事。

作者開始深入Web3和以太坊的時(shí)候,作為技術(shù)出身的人,也深感這個(gè)世界眾多基礎(chǔ)概念的全新性。

當(dāng)然,也見過一些才學(xué)過人的朋友,比如團(tuán)隊(duì)的產(chǎn)品經(jīng)理帥哥,從零入門到成長(zhǎng)為Web3區(qū)塊鏈的專家完全無障礙,不僅做得一手好產(chǎn)品設(shè)計(jì),還能沖在最前線替技術(shù)部門做技術(shù)難點(diǎn)攻關(guān)……

但,這樣的人實(shí)在太少了。

對(duì)于大多數(shù)人,作者認(rèn)為Web3的入門學(xué)習(xí)曲線可能是比較陡峭的。許多人或許還停留在知其然不知其所以然的階段。

因此,萌生了這個(gè)想法,寫一篇給所有非技術(shù)背景而需要真正理解Web3區(qū)塊鏈的朋友們,把非技術(shù)背景的朋友們值得了解的技術(shù)知識(shí)點(diǎn), 用一種能聽得懂的方式講出來。

寫這樣的技術(shù)內(nèi)容,還指望寫得深入淺出不枯燥,挑戰(zhàn)真的很大。

想起從學(xué)生時(shí)代就很尊敬的一位臺(tái)灣技術(shù)專家作者,能把一本純技術(shù)書籍寫得如有小說一般的蕩氣回腸之感。不敢期望本文達(dá)到如許高度,但如果它確實(shí)小小幫助了那些不做技術(shù)的朋友們更深入的理解了以太坊,本文目的就達(dá)到了。

01 以太坊是一個(gè)計(jì)算機(jī)

以太坊是什么?

當(dāng)然,已經(jīng)有很多的文章講以太坊,讀者多少了解過的話,應(yīng)知道以太坊是第二代區(qū)塊鏈網(wǎng)絡(luò)(有別于第一代比特幣網(wǎng)絡(luò)),以太坊的通用貨幣叫做以太幣。在以太坊之上能運(yùn)行以智能合約為基礎(chǔ)的分布式應(yīng)用(dapp)。

先看看百度百科上以太坊的詞條:

以太坊(英文Ethereum)是一個(gè)開源的有智能合約功能的公共區(qū)塊鏈平臺(tái),通過其專用加密貨幣以太幣(Ether,簡(jiǎn)稱“ETH”)提供去中心化的以太虛擬機(jī)(Ethereum Virtual Machine)來處理點(diǎn)對(duì)點(diǎn)合約。

這個(gè)解釋沒問題。大家也都知道以太坊是一個(gè)公共區(qū)塊鏈平臺(tái)。

但,如果從技術(shù)角度深入一點(diǎn)點(diǎn)去理解以太坊,以太坊的本質(zhì)本質(zhì),可能會(huì)讓讀者有些意外:以太坊本質(zhì)上是一個(gè)世界性的通用計(jì)算機(jī)。

這句話完全就是字面上的意思。沒看錯(cuò),以太坊本質(zhì)上是一個(gè)計(jì)算機(jī),而基于它的全球分布式特性,它無疑是世界性的。

為什么說以太坊是計(jì)算機(jī)?

以太坊的締造者們從一開始就希望把以太坊網(wǎng)絡(luò)打造用于通用計(jì)算目的。

這是一個(gè)非常美好的設(shè)想:使用分布式網(wǎng)絡(luò)構(gòu)建一個(gè)全世界人們都可以參與的通用計(jì)算系統(tǒng)。

注意,和現(xiàn)在的主流互聯(lián)網(wǎng)體系不同,以太坊分布式網(wǎng)絡(luò)是統(tǒng)一的單一整體。在計(jì)算機(jī)科學(xué)上,我們說以太坊整體是一個(gè)圖靈完備的狀態(tài)機(jī)。

等等,“圖靈完備”這詞太學(xué)究了,讀者只需了解,這代表了可以進(jìn)行通用計(jì)算的能力。這點(diǎn)以太坊和第一代比特幣網(wǎng)絡(luò)是完全不同的: 比特幣網(wǎng)絡(luò)沒有通用計(jì)算能力。

另外,所謂“狀態(tài)機(jī)”又是什么呢?

這個(gè)更好理解,用個(gè)人計(jì)算機(jī)做類比:當(dāng)計(jì)算機(jī)運(yùn)轉(zhuǎn)時(shí),CPU從內(nèi)存載入指令和數(shù)據(jù)進(jìn)行運(yùn)算,計(jì)算完畢后把中間運(yùn)算結(jié)果保存在內(nèi)存(更新“狀態(tài)”),然后進(jìn)行下一次的載入和計(jì)算。類似這種需要保存狀態(tài)的邏輯機(jī)器就是狀態(tài)機(jī)。

盡管上面的解釋把計(jì)算機(jī)的運(yùn)行方式做了特別簡(jiǎn)化的描述,但現(xiàn)在的計(jì)算機(jī)系統(tǒng)本質(zhì)上就是一個(gè)“計(jì)算-保存狀態(tài)-再計(jì)算” 的所謂圖靈完備狀態(tài)機(jī)。

那么以太坊呢,說它是一個(gè)通用計(jì)算機(jī),也就是說以太坊整體上也是一個(gè) “計(jì)算-保存狀態(tài)-再計(jì)算”的邏輯機(jī)器。

只是和個(gè)人計(jì)算機(jī)把狀態(tài)保存在機(jī)器的內(nèi)存(進(jìn)而記錄在硬盤) 不同,以太坊的“狀態(tài)”,記錄在分布全球的數(shù)以萬計(jì)的節(jié)點(diǎn)上。

以太坊的突破性創(chuàng)新在于,它把存儲(chǔ)程序計(jì)算機(jī)這樣的通用目的計(jì)算架構(gòu)與去中心化區(qū)塊鏈相結(jié)合,因此創(chuàng)建了一個(gè)分布式的單體狀態(tài)世界計(jì)算機(jī)

無論以太坊的程序運(yùn)行在任何地方,都能夠產(chǎn)生一致的狀態(tài),通過全體共識(shí)規(guī)則確保數(shù)據(jù)正確和安全。

以太坊的數(shù)據(jù)記錄方式是在每個(gè)節(jié)點(diǎn)上都保存同一份信息。

也就是說,任意一個(gè)以太坊節(jié)點(diǎn),都記錄著以太坊網(wǎng)絡(luò)的全部信息。特別形象的,這樣的節(jié)點(diǎn)叫做“全節(jié)點(diǎn)”。這意味著以太坊網(wǎng)絡(luò)的全部狀態(tài)信息都完整同步在每一個(gè)節(jié)點(diǎn)上。

只要不是所有的全節(jié)點(diǎn)同時(shí)被摧毀,以太坊就可以重生。這是多么強(qiáng)的生命力。

要裝下以太坊整個(gè)網(wǎng)絡(luò)的信息,全節(jié)點(diǎn)需要有多大呢,這個(gè)量級(jí)遠(yuǎn)比讀者想象的要小得多:今天,以太坊全部區(qū)塊信息的總大小是345GB。

這個(gè)容量相對(duì)于今天個(gè)人計(jì)算機(jī)動(dòng)則好幾個(gè)TB的硬盤容量實(shí)在是小意思。

以太坊的總信息容量每天都在不斷的增加,但速度不算特別快,因?yàn)樵谝蕴痪W(wǎng)絡(luò)記錄信息需要支付非常不菲的費(fèi)用,這也是以太坊的重要特點(diǎn):所有的運(yùn)算操作和數(shù)據(jù)記錄都是要花真金白銀的。

前面提到,“圖靈完備”這個(gè)詞描述了以太坊系統(tǒng)的通用計(jì)算特性。以太坊可以跑用戶定義的通用代碼,這些代碼就是所謂的智能合約,這是以太坊區(qū)別于第一代比特幣網(wǎng)絡(luò)的根本創(chuàng)新。

正由于智能合約的支持,以太坊可以完成個(gè)人計(jì)算機(jī)所能完成的通用計(jì)算任務(wù),從計(jì)算機(jī)科學(xué)理論看,以太坊就是通用計(jì)算機(jī),也就是那種“計(jì)算-記錄狀態(tài)-再計(jì)算”的狀態(tài)機(jī)。

既然說以太坊是“狀態(tài)機(jī)“,不妨繼續(xù)問兩個(gè)問題:

什么時(shí)候以太坊的狀態(tài)會(huì)更新呢?

以太坊是不是像<終結(jié)者>里的天網(wǎng)那樣自動(dòng)運(yùn)行呢?

答案或許又讓讀者意外了。

以太坊雖然是世界計(jì)算機(jī),全節(jié)點(diǎn)遍天下,但它的運(yùn)行機(jī)制是徹底不并行的。以太坊是一個(gè)不折不扣的單線程系統(tǒng)。

也就是說,以太坊計(jì)算機(jī)先把一個(gè)任務(wù)計(jì)算完畢,然后計(jì)算結(jié)果“狀態(tài)”更新到全世界各個(gè)節(jié)點(diǎn),它才會(huì)再繼續(xù)下一個(gè)任務(wù)。

以太坊用戶可以并發(fā)(Concurrency)的提交交易申請(qǐng),但以太坊不是并行(Parallelism)處理的。所有交易都試圖改變整個(gè)全局狀態(tài),以太坊選擇逐個(gè)處理交易。

讀者也許聽說過以太坊網(wǎng)絡(luò)上越來越嚴(yán)重的擁堵排隊(duì)問題,現(xiàn)在可以理解了:這是以太坊的單線程任務(wù)處理機(jī)制的鍋。在以太坊上執(zhí)行的任務(wù),只能乖乖排隊(duì)按順序來,用的人多了不堵才怪。

如何解決以太坊的擁堵問題,是當(dāng)今區(qū)塊鏈技術(shù)研究的一個(gè)熱點(diǎn)。比如大家可能聽過的Layer2/側(cè)鏈等新詞,主要目的都是為了規(guī)避以太坊的主鏈擁堵問題(以及高昂的運(yùn)行費(fèi)用)

回頭來看,從任務(wù)的執(zhí)行機(jī)制角度,以太坊可比讀者手頭正在用的個(gè)人計(jì)算機(jī)甚至手機(jī)系統(tǒng)都簡(jiǎn)單多了。

現(xiàn)在的個(gè)人計(jì)算機(jī)系統(tǒng)都是各種實(shí)時(shí)多任務(wù),各種后臺(tái)前臺(tái)程序并發(fā)運(yùn)行;以太坊除了信息狀態(tài)同時(shí)存于分布世界的各節(jié)點(diǎn),在系統(tǒng)運(yùn)行方式上,反而是特別簡(jiǎn)單的單線程模式。

另外,以太坊底層有一個(gè)持續(xù)運(yùn)作的所謂操作系統(tǒng)嗎,這個(gè)世界計(jì)算機(jī)是不是有點(diǎn)類似《終結(jié)者》里的天網(wǎng)那樣自動(dòng)和智能化呢? 或者,至少有個(gè)類似計(jì)算機(jī)的操作系統(tǒng)來控制整體運(yùn)行?

答案是:非也。

以太坊上完全沒有“背后自動(dòng)運(yùn)行”這種說法。以太坊的所有計(jì)算任務(wù)都以“交易”來驅(qū)動(dòng),交易由用戶持有的以太坊地址賬戶發(fā)起,只有成功和不成功兩種結(jié)果。交易成功, 則在以太坊記錄全局狀態(tài)更新; 交易不成功, 則全局狀態(tài)保持不變。

值得再重復(fù)一下,以太坊是一個(gè)全局的單體狀態(tài)機(jī),交易是唯一能夠讓這臺(tái)狀態(tài)機(jī)向前推進(jìn)并改變狀態(tài)的東西。以太坊上的智能合約代碼不會(huì)自動(dòng)運(yùn)行。以太坊也不會(huì)在“后臺(tái)”運(yùn)行。所有這一切,都是由用戶交易觸發(fā)的。

所以,盡管同為通用計(jì)算機(jī),但以太坊的運(yùn)行模式和個(gè)人計(jì)算機(jī)系統(tǒng)是很不同的。

至于以太坊計(jì)算機(jī)是否有神秘的人工智能,甚至有沒有“天網(wǎng)”的雛形,讀者也可以直接回答了:以太坊沒有任何自動(dòng)運(yùn)行機(jī)制,更不說人工智能;它不是天網(wǎng),只是一個(gè)很好的分布式平臺(tái)。從任務(wù)執(zhí)行的底層機(jī)制來看,它恐怕比你桌面上的筆記本電腦還要簡(jiǎn)單很多。

02 去中心化的本質(zhì)和基礎(chǔ)

我們總說,以太坊為代表的Web3網(wǎng)絡(luò)是去中心化的網(wǎng)絡(luò)。

先來個(gè)三連:什么是去中心化?為什么能去中心化?誰來保證去中心化交易的可信和安全呢?

所謂中心化,在當(dāng)前的互聯(lián)網(wǎng)模式意義上,是指在互聯(lián)網(wǎng)上進(jìn)行的用戶之間的互動(dòng),都基于一個(gè)可信的公司維護(hù)的互聯(lián)網(wǎng)服務(wù)。從技術(shù)上,就是典型的服務(wù)器-客戶端模式。

比如一個(gè)看似簡(jiǎn)單的點(diǎn)對(duì)點(diǎn)轉(zhuǎn)賬:用戶A通過手機(jī)微信或支付寶給另外一個(gè)用戶B當(dāng)面掃碼轉(zhuǎn)賬100塊。實(shí)際上,需要A和B都信任的騰訊或螞蟻金服的后臺(tái)服務(wù)器來操作雙方賬戶,服務(wù)器把用戶A的賬戶金額減少100塊,把用戶B的賬戶金額增加100塊,并確保這兩個(gè)操作一起發(fā)生。因?yàn)槲⑿胖Ц痘蛘咧Ц秾氁呀?jīng)有足夠廣泛的使用,用戶“信任”它們的后臺(tái)服務(wù)器不會(huì)出差錯(cuò)。

我們能看到,當(dāng)前互聯(lián)網(wǎng)模式下,互聯(lián)網(wǎng)服務(wù)的特點(diǎn)是:

  • 服務(wù)由特定的公司運(yùn)營。如果服務(wù)器宕機(jī),用戶服務(wù)就可能中斷。當(dāng)然,無數(shù)工程師嘔心瀝血確保了各種互聯(lián)網(wǎng)中心化服務(wù)的穩(wěn)定性。
  • 基于這些服務(wù),用戶之間的交互,即使看起來是完全個(gè)人對(duì)個(gè)人的,都通過一個(gè)中心服務(wù)器完成。這背后的底層邏輯是,用戶“信任”這些公司服務(wù)器是公正的,它們按照所承諾的方式服務(wù)用戶。
  • 這也是當(dāng)前大公司提供的互聯(lián)網(wǎng)服務(wù)看起來比小公司更“可靠”更有“信譽(yù)”的原因。因?yàn)榇蠊井?dāng)前的用戶體量,服務(wù)的技術(shù)和運(yùn)營能力更可能贏得用戶“信任”。

所以,在本質(zhì)上,當(dāng)前的互聯(lián)網(wǎng)應(yīng)用模式,是提供服務(wù)的公司做了保證,使用服務(wù)的用戶選擇了相信。

那“去中心化”是什么?最基本的一點(diǎn),就是沒有中心化服務(wù)器。

以太坊上并沒有一個(gè)架設(shè)在眾生(眾節(jié)點(diǎn))之上的總服務(wù)器,也沒有任何提供特定服務(wù)的服務(wù)器?;蛘哒f,以太坊上,并沒有面向特定應(yīng)用的服務(wù)器的概念。只有完全平等的“全節(jié)點(diǎn)”,每一個(gè)都保存著全網(wǎng)絡(luò)的信息狀態(tài)。

在以太坊上,任何用戶都可以直接發(fā)起和另一個(gè)用戶的交易,這個(gè)交易的合法性和正確性不需要一個(gè)大公司服務(wù)器來保證;而也正是因?yàn)橛脩艋?dòng)可以徹底的點(diǎn)對(duì)點(diǎn)化,Web3用戶再也無需把自己的賬戶信息交由某個(gè)大公司保管以完成服務(wù)。

用戶的賬戶信息完全在自己手中,當(dāng)用戶A和B發(fā)生了交易比如以太幣轉(zhuǎn)賬,這個(gè)操作由以太坊網(wǎng)絡(luò)整體確保正確完成。

前面說過,以太坊網(wǎng)絡(luò)本質(zhì)上是一個(gè)通用計(jì)算機(jī);用戶發(fā)起的交易,是唯一驅(qū)動(dòng)這個(gè)世界計(jì)算機(jī)產(chǎn)生“狀態(tài)變化”的機(jī)制。

但前面也說過,以太坊并沒有超越的人工智能;或更明確的,在以太坊上沒有任何掌控全局的程序來擔(dān)任互聯(lián)網(wǎng)的服務(wù)器仲裁者的角色。

那么,問題來了:沒有人或AI去監(jiān)管,又做到了交易的完全可信賴性。這么妙不可言的事情,究竟是怎么實(shí)現(xiàn)的呢?

答案是,依靠的不是“信任”,更不是魔法,而是一種基礎(chǔ)和絕對(duì)可信的科學(xué) — 數(shù)學(xué)。

哈哈,讀者不必?fù)?dān)心,本文不會(huì)指望大家一起重溫?cái)?shù)學(xué),以下用一種簡(jiǎn)單的解釋來講一下,數(shù)學(xué)如何從最底層支持了這個(gè)美妙的去中心化系統(tǒng)。

有一種很有趣的數(shù)學(xué),叫做非對(duì)稱密碼學(xué)

大家稍微記住幾個(gè)名詞:

  • 公鑰,一個(gè)大的數(shù)字,一般用一串16進(jìn)制數(shù)來表示。
  • 私鑰,一個(gè)更大的數(shù)字,用一串更長(zhǎng)的16進(jìn)制數(shù)字來表示。
  • 數(shù)字簽名,是一種信息加工方式 ,把任意二進(jìn)制信息通過“私鑰”進(jìn)行數(shù)學(xué)運(yùn)算處理,得到了一個(gè)被稱之為數(shù)字簽名的字符串。

簡(jiǎn)單類比一下,可以把公鑰看做是賬戶號(hào)碼,號(hào)碼對(duì)外公開;私鑰是密碼,只有用戶自己知道。公鑰和私鑰一一配對(duì)。

一個(gè)奇妙的屬性是,知道私鑰,可以很簡(jiǎn)單推出公鑰;但反過來不行,知道公鑰,是無法推導(dǎo)出私鑰的。這也是“”非對(duì)稱“的來源。

“非對(duì)稱密碼學(xué)” 這種美妙的數(shù)學(xué)理論保證了一個(gè)結(jié)果:任何一個(gè)拿到公鑰和數(shù)字簽名信息的人,都能通過標(biāo)準(zhǔn)的數(shù)學(xué)方法來確認(rèn),這個(gè)數(shù)字簽名是這個(gè)公鑰所對(duì)應(yīng)的私鑰加工或者說“簽名”而成的;并且數(shù)學(xué)理論確保了,只有這個(gè)私鑰才能得出這個(gè)數(shù)字簽名結(jié)果。

所以,數(shù)學(xué)理論給我們保證了,這個(gè)帶有數(shù)字簽名的信息,確實(shí)是由擁有對(duì)應(yīng)私鑰的人“簽名”發(fā)出來的,其他人無法偽造。

有點(diǎn)意思,但和我們說的去中心化交易有什么關(guān)系呢?

在以太坊體系里,我們每個(gè)人的賬戶地址,是一個(gè)公鑰。這不是比喻,而是字面意義上的。

如果讀者使用過以太坊相關(guān)軟件,都知道以太坊的賬戶是以十六進(jìn)制地址來表示的,這個(gè)地址不是別的,正是密碼學(xué)意義上的公鑰。

那么,用戶的私鑰在哪里呢?

事實(shí)上,每個(gè)第一次使用以太坊的人都會(huì)被Web3賬戶管理軟件提示,要記住一串助記詞,并會(huì)被軟件反復(fù)提醒,不要告知任何人助記詞,更不要丟失助記詞,否則賬戶再也找不回來。這個(gè)助記詞,就是私鑰的某種映射;簡(jiǎn)單一點(diǎn)來理解,這一串助記詞是私鑰本身。

Web3的賬戶管理軟件,也就是所謂的Web3“錢包”,正是替用戶在本地儲(chǔ)存管理私鑰,以及幫用戶生成經(jīng)過私鑰數(shù)字簽名的交易請(qǐng)求發(fā)到以太坊,從而成為用戶Web3網(wǎng)絡(luò)的事實(shí)入口。

(這里還有個(gè)小細(xì)節(jié),用過MetaMask等Web3錢包的讀者會(huì)知道,要額外設(shè)置一個(gè)密碼進(jìn)入錢包。但一定要注意,這個(gè)密碼并不是以太坊的密碼。以太坊賬戶沒有密碼,用戶的私鑰就是訪問賬戶的唯一和最高憑證。這個(gè)密碼僅僅用來保護(hù)在本地儲(chǔ)存的以太坊賬戶私鑰信息,甚至密碼本身都不做聯(lián)網(wǎng)儲(chǔ)存同步:私鑰信息本身不會(huì)同步到服務(wù)器,錢包密碼就沒有任何理由做線上同步了。錢包工具是一個(gè)本地化軟件。)

當(dāng)一個(gè)以太坊賬戶對(duì)另外一個(gè)賬戶發(fā)起交易時(shí),這個(gè)交易請(qǐng)求的所有信息會(huì)被賬戶的私鑰進(jìn)行數(shù)字簽名,簽名信息連同交易請(qǐng)求數(shù)據(jù)本身以及賬戶地址(也就是公鑰),被一起廣播到以太坊上。

在以太坊上,這個(gè)發(fā)出來的交易請(qǐng)求并沒有任何中心化的服務(wù)器來負(fù)責(zé),大量收到廣播請(qǐng)求的全節(jié)點(diǎn)會(huì)同時(shí)確認(rèn)這個(gè)交易的合法性。

(這里又隱藏了一點(diǎn)點(diǎn)細(xì)節(jié):只有那些希望獲得系統(tǒng)獎(jiǎng)勵(lì)的全節(jié)點(diǎn)才會(huì)主動(dòng)去驗(yàn)證用戶交易合法性,并以工作量贏得系統(tǒng)獎(jiǎng)勵(lì)的以太幣 – 這正是所謂的“挖礦”。)

以太坊交易的驗(yàn)證方式正是用了前面介紹的密碼校驗(yàn)機(jī)制:

發(fā)起者的賬戶地址信息是公鑰,同時(shí)又有了聲稱從這個(gè)地址發(fā)起的交易請(qǐng)求信息和賬戶私鑰對(duì)交易信息所做的數(shù)字簽名。那么,任何一個(gè)全節(jié)點(diǎn)都可以通過公鑰+數(shù)字簽名的校驗(yàn),來確認(rèn)交易請(qǐng)求確實(shí)來自于這個(gè)以太坊賬戶。

也就是說,以太坊任何一個(gè)節(jié)點(diǎn)都可以非常篤定的確認(rèn)一個(gè)交易不是被偽造的而是真實(shí)來自于賬戶擁有者。確認(rèn)這一點(diǎn)后,每個(gè)以太坊全節(jié)點(diǎn)都可以愉快的按照交易請(qǐng)求去執(zhí)行操作,并把新的狀態(tài)結(jié)果記錄在以太坊數(shù)據(jù)鏈上了。

如果讀者到這里還沒暈,那么恭喜,你已經(jīng)明白了以太坊區(qū)塊鏈最核心的密碼學(xué)通信機(jī)制。

這種建立在密碼學(xué)理論上的可信賴通信機(jī)制,從根本上做到了無需中間商,噢,不,無需中心服務(wù)器也能讓任意兩個(gè)賬戶完成交易。

確實(shí)無需第三方的信任,所有操作都是點(diǎn)對(duì)點(diǎn)的;或者說,這個(gè)點(diǎn)對(duì)點(diǎn)交易的“可信任”,是由數(shù)學(xué)理論所支持的。

數(shù)學(xué)保證了,在以太坊上有人說給你一筆錢(發(fā)起一個(gè)交易),你能立刻判斷,這是一個(gè)騙子,還是天上掉了個(gè)餡餅。

最后我們可以相信的,不是承諾,而是數(shù)學(xué):)

03 以太坊賬戶里究竟有什么

上一節(jié)已經(jīng)提到了以太坊賬戶。如果對(duì)上一節(jié)關(guān)于 “以太坊建立在密碼學(xué)基礎(chǔ)上的可信賴通信” 不覺厭煩,甚至還和作者這般,有種“竟如此巧妙”的愉悅之感,那不妨再多聊幾句以太坊賬戶。

以太坊賬戶里放著什么?一句話回答,以太坊賬戶里基本沒什么內(nèi)容。

以太坊的賬戶有兩種:

  • 一種是人用的,叫外部賬戶;
  • 一種是智能合約用的,叫合約賬戶。

“智能合約”這個(gè)詞實(shí)在是顯得高深莫測(cè),但實(shí)際上所謂智能合約就是一段代碼,而且在以太坊的機(jī)制下,智能合約代碼一般非常的短 ,數(shù)百行的智能合約就已經(jīng)是龐然大物。

無論外部賬戶還是合約賬戶 ,在以太坊上都用一個(gè)地址來表示。

對(duì)于外部賬戶,即人所用的賬戶,里面只有一個(gè)數(shù)據(jù)字段,那就是這個(gè)賬戶所擁有的以太幣數(shù)額。

而對(duì)于智能合約賬戶,數(shù)據(jù)稍多了一點(diǎn)點(diǎn),除了以太幣數(shù)額字段(沒錯(cuò),智能合約賬戶本身也獨(dú)立擁有以太幣) 還有數(shù)據(jù)字段儲(chǔ)存智能合約的代碼本身,以及這個(gè)智能合約所需的數(shù)據(jù)儲(chǔ)存區(qū)。

噢,是了。除了以太幣數(shù)額之外,以太坊賬戶里還有一個(gè)內(nèi)部計(jì)數(shù),叫做nonce,這是賬戶交易次數(shù)的統(tǒng)計(jì),每次交易后遞增加1。

這個(gè)計(jì)數(shù)很重要,用來防止“可重用攻擊”。

簡(jiǎn)單的說,如果別有用心的人把這個(gè)賬戶曾經(jīng)發(fā)出的交易數(shù)據(jù)復(fù)制一次再發(fā)出來,因?yàn)閿?shù)據(jù)包里的公鑰和簽名都為真,若用戶賬戶里沒有這個(gè)單向遞增的交易計(jì)數(shù)供校驗(yàn),交易就有可能被重復(fù)執(zhí)行多次。

以太坊賬戶的體系結(jié)構(gòu)特別簡(jiǎn)潔,正如以太坊區(qū)塊鏈網(wǎng)絡(luò)是由最簡(jiǎn)明的密碼學(xué)通信連接起來一樣。

智能合約的代碼也很簡(jiǎn)潔,不過智能合約的強(qiáng)大之處還在于,整個(gè)以太坊的代碼都可以“為我所用”:每個(gè)智能合約代碼都可以自由調(diào)用另一個(gè)智能合約。

這特別類似搭樂高積木,每塊積木看起來平淡無奇,但無數(shù)積木組合在一起,可以構(gòu)建一個(gè)輝煌的大廈。

以太坊這樣的架構(gòu)讓人想起了螞蟻的社群組織。每一個(gè)螞蟻所能做到的很有限,但整個(gè)蟻群在一起,仿佛就有了一個(gè)更高等級(jí)的智慧化存在。這存在不是人工智能意義上的,而是社會(huì)學(xué)意義上的。

以太坊的締造者們一定是一群理想主義的人,只有這樣的人,才會(huì)執(zhí)著于構(gòu)造出一個(gè)新世界,讓這個(gè)世界基于最簡(jiǎn)明的規(guī)則來運(yùn)作,卻能自行衍生出復(fù)雜而強(qiáng)大的社會(huì)功能邏輯。

在深入了解以太坊的過程中,我們將一次又一次的感受到這一點(diǎn)。

04 以太幣,gas

前面多少涉及到了以太坊貨幣(簡(jiǎn)稱“以太幣”)概念,這里繼續(xù)再掰掰清楚。

以太幣現(xiàn)在的價(jià)值不菲,一個(gè)以太幣要好幾千美金。誠然,這個(gè)價(jià)值波動(dòng)比較大,也有很多關(guān)于區(qū)塊鏈幣的價(jià)值真實(shí)性討論。但作者可以判斷,這個(gè)價(jià)值會(huì)波動(dòng),但以太幣的價(jià)值存在不會(huì)消亡。原因有很多種,這里只討論一個(gè)技術(shù)性和根本性的:以太坊幣最基本的功能是用來做什么。

是的,以太幣是以太坊生態(tài)上的通用貨幣,它現(xiàn)在可以購買很多虛擬物品,也可以兌換現(xiàn)實(shí)世界的貨幣,但以太幣的內(nèi)在價(jià)值,在技術(shù)層面上,是設(shè)計(jì)為以太坊網(wǎng)絡(luò)的計(jì)算資源購買力。

這里需要談到以太坊運(yùn)作的一個(gè)核心概念,運(yùn)作需要支付相應(yīng)費(fèi)用。

大家已經(jīng)知道,在以太坊上,每個(gè)用戶可以自由發(fā)起全網(wǎng)同步的運(yùn)算即“交易”。只是,這個(gè)交易消耗全網(wǎng)絡(luò)計(jì)算資源,對(duì)應(yīng)的費(fèi)用,由發(fā)起賬戶支付。

以太坊用一個(gè)單位gas(英文意思是汽油,特別形象)來衡量執(zhí)行具體操作所要花費(fèi)的計(jì)算和儲(chǔ)存資源。

和當(dāng)前互聯(lián)網(wǎng)生態(tài)里用戶基本免費(fèi)的網(wǎng)絡(luò)服務(wù)使用理念南轅北轍,任何以太坊用戶希望發(fā)起一次交易,都需要先支付對(duì)應(yīng)的gas費(fèi)。對(duì)于特定操作gas費(fèi)是個(gè)固定值,比如:

  • 相加兩個(gè)數(shù)值需要消耗 3gas
  • 計(jì)算一個(gè)哈希值需要消耗 30gas
  • 發(fā)送一個(gè)交易請(qǐng)求需要消耗 21000gas

以太坊上用來購買gas的不是其他東西,正是以太幣。有趣的是,以太幣購買gas費(fèi)的“匯率”還是浮動(dòng)的。

因此,如果我們確信以太坊網(wǎng)絡(luò)有運(yùn)轉(zhuǎn)下去的價(jià)值,那么以太幣就永遠(yuǎn)有價(jià)值,因?yàn)樗鼘?duì)標(biāo)了以太坊網(wǎng)絡(luò)的運(yùn)算資源。

聊到這里,讀者有沒有想過,為什么以太坊上的運(yùn)算設(shè)計(jì)為需要付費(fèi)呢?

天下沒有免費(fèi)的午餐,使用者付費(fèi)也算天經(jīng)地義。不過,這里還有另外一層原因:以太坊是一個(gè)世界通用計(jì)算機(jī),而一個(gè)通用計(jì)算機(jī)的運(yùn)算是可以進(jìn)入死循環(huán)的。

如果個(gè)人計(jì)算機(jī)循環(huán)死鎖了,那么可以簡(jiǎn)單拔插頭重來。

但是以太坊網(wǎng)絡(luò)可沒有插頭啊,怎么避免以太坊的運(yùn)作被惡意的循環(huán)死鎖呢?

除了在底層設(shè)計(jì)上一再注意,最重要的就是引入gas費(fèi)用,每次運(yùn)算操作都需要支付費(fèi)用,這樣,無論如何都會(huì)有費(fèi)用花完的那一刻,死循環(huán)計(jì)算也就自然而然終止了。

gas是以太坊極其重要的組成部分。創(chuàng)建交易的用戶需要表明他愿意為交易執(zhí)行所付出的價(jià)格,防止網(wǎng)絡(luò)中無意或者惡意的無限循環(huán)以及其他形式的計(jì)算資源浪費(fèi)。

一個(gè)美妙的設(shè)計(jì),不需要設(shè)置復(fù)雜的規(guī)則來約束,只需要談?wù)劺妗?/p>

人性就是趨利的,這也是某種人性的弱點(diǎn)。以太坊的設(shè)計(jì)反過來利用了人性來保證系統(tǒng)的運(yùn)轉(zhuǎn)。這個(gè)設(shè)計(jì)思路在整個(gè)以太坊系統(tǒng)設(shè)計(jì)里不止一次的體現(xiàn)。

人欲即天理,以太坊真正實(shí)踐了這句話。

05 錢包,遠(yuǎn)程客戶端

Web3錢包是區(qū)塊鏈網(wǎng)絡(luò)用戶每天都打交道的工具,它是事實(shí)上的Web3入口。

第一次接觸Web3錢包的人,大概率都會(huì)顧名思義把它類比成微信支付錢包或者支付寶錢包,即一個(gè)服務(wù)端支持的存著某種貨幣的系統(tǒng)。

這是對(duì)Web3錢包的最大誤解。Web3錢包是一個(gè)本地化的區(qū)塊鏈賬戶管理工具,本地化意味著它并不聯(lián)網(wǎng)儲(chǔ)存?zhèn)€人賬戶數(shù)據(jù)。

有耐心看到這里的讀者應(yīng)該很清楚,用戶在以太坊上的所有活動(dòng)都是通過自己的以太坊地址賬戶向以太坊網(wǎng)絡(luò)發(fā)送交易請(qǐng)求來驅(qū)動(dòng)的。

那誰來幫用戶做這個(gè)事情呢,正是web3錢包軟件。

比如,當(dāng)用戶打開了OpenSea(當(dāng)今最大的NFT交易市場(chǎng)) ,下單購買一個(gè)NFT時(shí),網(wǎng)頁會(huì)調(diào)起瀏覽器的MetaMask錢包插件。這個(gè)MetaMask插件里儲(chǔ)存著用戶的以太坊賬戶地址私鑰,MetaMask錢包幫助用戶打包好交易請(qǐng)求數(shù)據(jù),并和用戶確認(rèn)所需費(fèi)用,然后把這個(gè)交易請(qǐng)求信息發(fā)到以太坊網(wǎng)絡(luò)上以完成交易。

有讀者會(huì)問,萬一用戶丟失了以太坊私鑰怎么辦,答案是……涼拌。

如果還記得,私鑰是以一串助記詞的方式呈現(xiàn)給用戶的,如果這串助記詞丟了,而本地儲(chǔ)存密鑰的錢包軟件也不小心刪除了,對(duì)應(yīng)的以太坊地址賬戶就永遠(yuǎn)無法訪問了。

那么,是否有可能出現(xiàn)一個(gè)中心化的服務(wù)來托管用戶密鑰呢?

這樣的好處是,用戶還有機(jī)會(huì)通過傳統(tǒng)的身份找回方式把自己的賬戶密鑰從服務(wù)器恢復(fù)回來。從易用性上考慮這是可行的,也已經(jīng)有一些Web3產(chǎn)品比如MetaNotey.IO 正在在做這個(gè)事情 – 向用戶提供Web3賬戶的托管服務(wù)。

畢竟web3錢包也是有使用門檻的,托管之后用戶的Web3學(xué)習(xí)曲線會(huì)更平滑; 另一方面,如果允許一個(gè)中心化服務(wù)器托管自己的Web3賬戶,則又回到了傳統(tǒng)互聯(lián)網(wǎng)的命題,失去了100%的隱私安全。

隱私性和易用性很可能是無法同時(shí)100%被滿足的。我們終有取舍。

此外,類似MetaMask這樣的賬戶管理工具有另外一個(gè)名稱:遠(yuǎn)程客戶端。

在以太坊這樣的區(qū)塊鏈網(wǎng)絡(luò)上,所有的節(jié)點(diǎn)都是所謂的客戶端(這名字也不盡準(zhǔn)確,因?yàn)槿?jié)點(diǎn)也承載了對(duì)以太坊用戶服務(wù)的功能)。各全節(jié)點(diǎn)在以太坊里的地位是平等的,都包含著整個(gè)以太坊的完整信息。

但是,很多用戶并不想成為一個(gè)全節(jié)點(diǎn),而只想訪問使用以太坊網(wǎng)絡(luò)。于是就衍生出了遠(yuǎn)程客戶端的概念。遠(yuǎn)程客戶端不需要本地儲(chǔ)存整個(gè)以太坊網(wǎng)絡(luò)的信息,它們對(duì)以太坊的信息都是通過訪問其他全節(jié)點(diǎn)完成的。遠(yuǎn)程客戶端負(fù)責(zé)把賬戶發(fā)起的交易向以太坊廣播并接收結(jié)果。

MetaMask這樣的Web3錢包,本質(zhì)上是一個(gè)遠(yuǎn)程客戶端。

06 代幣

“代幣”是一個(gè)經(jīng)常被提起的概念。是的,又一個(gè)語義上不容易理解的詞。

代幣是英文token的直接翻譯,指的是以太坊上用戶可以通過智能合約自行發(fā)布的虛擬幣。只要接口滿足一個(gè)協(xié)議ERC20標(biāo)準(zhǔn),任何智能合約都能成為某個(gè)代幣的發(fā)行方。

為什么常說所謂發(fā)幣是“空氣幣”和“割韭菜行為”呢?道理其實(shí)很簡(jiǎn)單,因?yàn)槊總€(gè)人都可以自由打造智能合約,去“發(fā)行”某種代幣。

“發(fā)行”是個(gè)聽起來很高級(jí)的詞,但在技術(shù)層面上,代幣合約做的事情可以非常簡(jiǎn)單,就是幾句代碼聲明某個(gè)數(shù)量的一種代幣,并且通過標(biāo)準(zhǔn)的ERC20接口,把代幣授予不同的以太坊賬戶。

這里有個(gè)非常有趣的值得討論的細(xì)節(jié):

前面說過,每個(gè)以太坊帳戶都有一個(gè)字段記錄著這個(gè)帳戶的以太坊幣數(shù)額。那么,這些授予的代幣數(shù)額,是不是也記錄在用戶自己的以太坊帳戶里呢?

情理上貌似應(yīng)該如此,但答案會(huì)出乎你的意料:并不是。

你的以太坊賬戶里唯一一種數(shù)額記錄就是以太幣數(shù)額。而各種各樣的代幣授予以太坊各賬戶的代幣額度,只記載在創(chuàng)造了這個(gè)代幣的智能合約的數(shù)據(jù)區(qū)里。

讀者可以想象一下,在這個(gè)代幣智能合約的數(shù)據(jù)儲(chǔ)存區(qū)里有一個(gè)表格,表格里的每一行都記錄著 “地址xxxxxx: 擁有xx個(gè)代幣”。

對(duì),僅此而已,不可思議的簡(jiǎn)單,甚至可以說有點(diǎn)簡(jiǎn)陋。

但這就是全部的真相,代幣合約以一個(gè)最直觀的方式,把每個(gè)賬戶的代幣額度記錄在一個(gè)公開可見的表格里。

如果深究一下,這種甚至并不記錄在個(gè)人賬戶里的代幣數(shù)額,為什么能夠得到公眾認(rèn)可呢?

這也得益于以太坊的數(shù)據(jù)公開性和不可篡改性。

基于ERC20協(xié)議的代幣合約代碼公開,任何人都可以閱讀驗(yàn)證;而代幣的數(shù)據(jù)記錄在技術(shù)上也是確定不可修改的。盡管數(shù)據(jù)只記錄在了智能合約賬戶的數(shù)據(jù)區(qū)里,但數(shù)據(jù)公開可見且不可篡改,所以也無所謂。以太坊網(wǎng)絡(luò)的數(shù)據(jù)特性再一次幫助全體用戶認(rèn)可了合約“發(fā)行”代幣這個(gè)操作的有效性。

當(dāng)然,這指的是技術(shù)意義上的有效性,而不是經(jīng)濟(jì)學(xué)意義上的。

講到代幣,則肯定要再提一下現(xiàn)在炙手可熱的話題:NFT。

NFT是個(gè)很大的話題,足以開一個(gè)系列文章來談。這里只做一點(diǎn)簡(jiǎn)單的技術(shù)探討。

NFT是 Non-Fungible Token(非同質(zhì)化代幣)的縮寫。

所以本質(zhì)上,NFT也是一種代幣。這句話背后的一個(gè)意思是,NFT也是由某智能合約創(chuàng)建和記錄的“虛擬幣”。

和上面所討論的代幣不同,每一個(gè)NFT代幣都是不一樣的,這個(gè)“不一樣”在技術(shù)上的理解是,每個(gè)NFT都有自己獨(dú)特的元數(shù)據(jù)(metadata),指向不同的虛擬物品(一張頭像圖片,一個(gè)游戲裝備,等等)且協(xié)議上不支持分割。

所有的“同質(zhì)化”代幣,以及以太幣都可以拆分成小于1的額度比如0.01個(gè)來交易。這也容易理解:在數(shù)據(jù)記錄層面上,以太幣和各種代幣都只是某個(gè)數(shù)字額度,這個(gè)額度可以支持小數(shù)點(diǎn)后的計(jì)數(shù)。

而NFT是不支持拆分的。

值得提一下的是,有兩種主要的NFT協(xié)議。

一種是ERC721,主要用來生成單個(gè)NFT;這也是現(xiàn)在大多數(shù)NFT的生成協(xié)議。

還有另一種NFT協(xié)議,是為了解決類似游戲物品的交易需求而生。

游戲內(nèi)的虛擬物品,很多是稱斤論打的,比如說一組20個(gè)藥水,10個(gè)草藥原材料,等等。ERC721在支持這樣成組的虛擬物品上有些吃力,因?yàn)樗枋龅腘FT都是單個(gè)生成的。因此另外一個(gè)協(xié)議 ERC1155被提出來,用來支持這種不同品類批量生成NFT。

NFT除了名字和“代幣”有關(guān)系,其他方面并沒有多少關(guān)聯(lián)。NFT的核心認(rèn)知其實(shí)是“權(quán)證”,這個(gè)權(quán)證使用一串字符,或者更學(xué)究一點(diǎn),一串哈希值來對(duì)應(yīng)某個(gè)虛擬物品,比如一個(gè)頭像圖或者一個(gè)視頻,甚至現(xiàn)實(shí)的物品比如一雙襪子等等。這種對(duì)應(yīng)關(guān)系由數(shù)學(xué)算法生成。

一個(gè)NFT質(zhì)疑者常挑戰(zhàn)的問題是:虛擬物品(更不用說現(xiàn)實(shí)世界的物品)的“所有權(quán)”如何和NFT元數(shù)據(jù)里的一串字符產(chǎn)生100%不可分割的關(guān)系?

這個(gè)問題并沒有答案。

目前也沒有任何國家法律來保證NFT所對(duì)應(yīng)的物權(quán)。NFT的當(dāng)前價(jià)值仍是基于所有人對(duì)于NFT的共識(shí),以及公開交易市場(chǎng)上所呈現(xiàn)的真金白銀上。

作者私以為,支持Web3的人不會(huì)過多爭(zhēng)論NFT的“價(jià)值”是什么,正如游戲玩家從來不會(huì)懷疑虛擬裝備有沒有價(jià)值一樣。

價(jià)值本質(zhì)是一種“群體共識(shí)”,只要足夠多的人認(rèn)可NFT作為“Web3時(shí)代的流通商品”的定位,只要特定NFT能和某種稀缺性的無形價(jià)值相關(guān)聯(lián),再加上NFT本身的流通性,熱度還是會(huì)持續(xù)的。

07 智能合約,DAO

智能合約是以太坊的精髓所在。

支持用戶自行發(fā)布可執(zhí)行代碼,智能合約機(jī)制讓以太坊上的應(yīng)用(所謂分布式應(yīng)用dapp)蓬勃生長(zhǎng)。

以當(dāng)前互聯(lián)網(wǎng)生態(tài)來對(duì)比智能合約,相同的地方是,所有用戶都可以開發(fā)自己的應(yīng)用并發(fā)布到網(wǎng)絡(luò)(移動(dòng)app V.S. 智能合約);前者發(fā)到應(yīng)用商店,后者直接部署到智能合約賬戶里。

但有個(gè)很不同的地方是,智能合約代碼是完全公開的,且具有相互調(diào)用的能力。這在當(dāng)前封閉的移動(dòng)互聯(lián)網(wǎng)模式下是不能想象的。我來調(diào)用一下微信app的內(nèi)部能力? 呵呵。

以太坊智能合約的這種聯(lián)動(dòng)模式,有點(diǎn)類似AWS的發(fā)家史。最早的時(shí)候,亞馬遜了打通全公司技術(shù)能力,強(qiáng)制推行各后臺(tái)技術(shù)團(tuán)隊(duì)以統(tǒng)一接口開發(fā)模塊,并在公司范圍內(nèi)允許互相之間調(diào)用,這就是AWS云服務(wù)的雛形。

這是典型的積木式體系構(gòu)建思路。而以太坊更進(jìn)一步,因?yàn)榇a的公開特性,整個(gè)以太坊生態(tài)技術(shù)的迭代都以一種特別透明和合作的方式呈現(xiàn)在世人面前。

在技術(shù)上沒有可以藏著掖著的地方,需要了解別人怎么做就直接去看看對(duì)方的智能合約代碼。在這種極致透明的設(shè)定下,一種全新的社區(qū)共創(chuàng)的技術(shù)文化正在欣欣向榮發(fā)展起來。

關(guān)于智能合約有個(gè)熱點(diǎn)值得單提出來講講, 就是熱門新潮概念 DAO。

DAO這個(gè)詞很多人第一次聽說是源于紅杉在twitter發(fā)了一個(gè)推,要all in DAO。

未來是不是屬于DAO的,下定論還有點(diǎn)早,但DAO(去中心化自治組織)是一個(gè)有趣的概念, 雖然名字(又)有點(diǎn)繞,但其核心概念是容易理解的。

DAO把組織的管理和運(yùn)營執(zhí)行規(guī)則寫進(jìn)了智能合約代碼,這個(gè)智能合約發(fā)行的代幣很類似公司股票,不僅有經(jīng)濟(jì)價(jià)值,也有股權(quán)價(jià)值。所有擁有DAO合約代幣的用戶通過合約代碼所約定的投票機(jī)制來決定一個(gè)執(zhí)行結(jié)果,這就是所謂基于智能合約的治理。

此外,智能合約賬戶本身也擁有著以太坊幣額度,所以DAO智能合約完全可以看做一個(gè)有資金池和嚴(yán)格的投票治理制度的虛擬公司組織。這個(gè)組織的程序執(zhí)行基于以太坊機(jī)制,確保沒有人可以破壞既定的組織規(guī)則。

根據(jù)以太坊的特性,智能合約一旦部署就不能更改,這意味著這個(gè)“智能合約”DAO公司的運(yùn)營機(jī)制必須在部署之前完全確認(rèn)。任何的代碼疏漏都可能成為未來的問題。

這其實(shí)不是DAO的問題,而是以太坊網(wǎng)絡(luò)所有智能合約所必須面對(duì)的挑戰(zhàn)。

有趣的是,正因?yàn)橛羞@樣的“一次部署必須完全準(zhǔn)確”的挑戰(zhàn),以太坊上的智能合約代碼都以一種特別簡(jiǎn)單明了的方式來構(gòu)筑:既然越復(fù)雜的代碼越容易出錯(cuò),那不妨就盡可能簡(jiǎn)單些。

從現(xiàn)實(shí)利益出發(fā),以太坊機(jī)引導(dǎo)了所有參與構(gòu)建的開發(fā)者去遵循締造者的思路:最簡(jiǎn)明的方式創(chuàng)造新世界。如不遵循這樣的設(shè)計(jì)思路,則要承擔(dān)更高概率出錯(cuò)且無可挽回的風(fēng)險(xiǎn)。

用人性和利益而非教條來驅(qū)動(dòng)社區(qū)共同遵循一個(gè)方向,我們又一次看到了這種天才的構(gòu)思。

08 共識(shí)機(jī)制和挖礦

共識(shí)機(jī)制,本文最后一個(gè)玄乎的詞。

在了解以太坊的各種細(xì)節(jié)后,為什么還要聊共識(shí)機(jī)制? 因?yàn)檫@是以太坊的決策基礎(chǔ)。

在一個(gè)沒有中心化管理的分布式網(wǎng)絡(luò)里,要讓整個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)達(dá)成統(tǒng)一的意見,比如決定一個(gè)新的數(shù)據(jù)區(qū)塊由誰生成,應(yīng)該怎么辦?

這就是“共識(shí)機(jī)制”發(fā)揮作用的地方。

在計(jì)算機(jī)科學(xué)里,“共識(shí)”這個(gè)術(shù)語比“區(qū)塊鏈”出現(xiàn)得更早,它泛指了在各種分布式系統(tǒng)里的不同參與者對(duì)單個(gè)狀態(tài)達(dá)成一致。

共識(shí)是以太坊的關(guān)鍵屬性,它之所以那么關(guān)鍵,是因?yàn)檫@個(gè)承載著真金白銀的系統(tǒng),并沒有某個(gè)人某個(gè)組織或者團(tuán)隊(duì)“掌控”;或者說,控制權(quán)分布在廣泛的參與者之間。共識(shí)的終極目的是打造一個(gè)嚴(yán)格按照規(guī)則來運(yùn)行且沒有單一控制者的系統(tǒng)。

這簡(jiǎn)直是技術(shù)的理想國。

共識(shí)算法非常底層,遠(yuǎn)比智能合約的抽象概念更加底層。對(duì)于讀者來說,不一定要理解其工作原理才能使用以太坊,正如使用互聯(lián)網(wǎng)也不需要理解路由原理一樣。但簡(jiǎn)單了解共識(shí)這個(gè)機(jī)制順便可以幫助讀者進(jìn)一步理解什么是“挖礦”,一個(gè)大家聽得很多的概念。

最早區(qū)塊鏈(比特幣)的創(chuàng)造者發(fā)明了一種叫做工作量證明(Proof of Work,PoW)的共識(shí)算法,工作量證明的一個(gè)通俗表述就是“挖礦”。

挖礦多有被誤解,很多人都以為挖礦的目的就是從系統(tǒng)獲得新的區(qū)塊鏈貨幣,但事實(shí)上,挖礦操作的本質(zhì)目的是為了保證整個(gè)區(qū)塊鏈系統(tǒng)的去中心化,保證整個(gè)系統(tǒng)以一種共識(shí)機(jī)制來運(yùn)行。而遵循這個(gè)機(jī)制“挖礦”得到的獎(jiǎng)勵(lì)則是區(qū)塊鏈所鑄造的貨幣。

這個(gè)機(jī)制有隱含的懲罰機(jī)制,如果不遵循共識(shí)規(guī)則來得到區(qū)塊獎(jiǎng)勵(lì),則挖礦上花費(fèi)的電力就有可能血本無歸。這種實(shí)際利益驅(qū)動(dòng)的規(guī)則遵循機(jī)制是各種共識(shí)算法的核心思想。

有意思的是,PoW工作量證明盡管比較容易理解(……真的嗎?),但它不是歷史上首個(gè)被提出的共識(shí)算法。在PoW出現(xiàn)之前,有人就提出基于抵押金的共識(shí)算法,就是所謂的權(quán)益證明(Proof of Stake,PoS)。

共識(shí)機(jī)制都通過系統(tǒng)的獎(jiǎng)勵(lì)和懲罰來讓驗(yàn)證者遵守共識(shí)規(guī)則:

PoW工作量證明的懲罰是外部的,花費(fèi)電力做了無用功沒有得到以太坊獎(jiǎng)勵(lì)

PoS權(quán)益證明的懲罰是區(qū)塊鏈內(nèi)在性的,即失去了質(zhì)押的以太幣。

很有意思,嚴(yán)謹(jǐn)?shù)挠?jì)算機(jī)科學(xué)又一次利用了人性,區(qū)塊鏈分布式網(wǎng)絡(luò)上最核心的需要全體維護(hù)的“共識(shí)規(guī)則”,其校驗(yàn)機(jī)制用人性來確保:遵守者獲益,違反者被懲罰。

從最初,以太坊的創(chuàng)始者就希望有一天以太坊的共識(shí)機(jī)制能切換到權(quán)益證明,因?yàn)楣ぷ髁孔C明有一些明顯的缺點(diǎn),比如浪費(fèi)現(xiàn)實(shí)世界的能源。

所以,以太坊在創(chuàng)建之初埋下了一個(gè)“難度炸彈”機(jī)制,目的是迫使以太坊的PoW挖礦變得越來越難,最終不得不讓網(wǎng)絡(luò)轉(zhuǎn)向PoS。而在本文發(fā)出之時(shí),以太坊的PoW時(shí)代已是終章,以太坊正在過渡到它的PoS時(shí)代。

這個(gè)切換并不容易,已經(jīng)數(shù)次推遲。最新的消息是以太坊網(wǎng)絡(luò)將在今年內(nèi)正式切換到PoS模式,到時(shí)候,以太坊的“挖礦”將不復(fù)存在。

以太坊上龐大的應(yīng)用體量對(duì)底層架構(gòu)的性能和可擴(kuò)展性的要求越來越高,這也是以太坊下定決心向PoS機(jī)制過渡的重要原因。

無論礦工對(duì)現(xiàn)在的以太坊有多么留戀,以太坊網(wǎng)絡(luò)將以不可逆的方式降下挖礦的帷幕。

寫在最后

如果讀者還能堅(jiān)持看到最后,對(duì)以太坊這個(gè)Web3時(shí)代最重要的基礎(chǔ)設(shè)施的技術(shù)概念應(yīng)該有了一些初步的理解。

以太坊的技術(shù)構(gòu)建,在每個(gè)細(xì)節(jié)上都閃耀著技術(shù)理想主義的光芒。

以太坊的締造者期望用一種簡(jiǎn)潔明了的方式,構(gòu)造一個(gè)所有用戶都能平等參與,自由構(gòu)建的Web3新世界。

這個(gè)理想國新世界構(gòu)筑在嚴(yán)謹(jǐn)?shù)臄?shù)學(xué)理論和簡(jiǎn)明的邏輯結(jié)構(gòu)之上。無數(shù)技術(shù)天才正在為這個(gè)理想國添磚加瓦。了解越多,則會(huì)越傾向于相信,這個(gè)網(wǎng)絡(luò)將擁有一個(gè)非凡和長(zhǎng)久的價(jià)值。

作者:城主;來源公眾號(hào):Web3天空之城(ID:Web3SkyCity)

原文鏈接:https://mp.weixin.qq.com/s/tMwgIhdPC252V7YQjR1VFg

本文由@Web3天空之城 授權(quán)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來自Unsplash,基于CC0協(xié)議

該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 謝謝,看了一些,這篇講的好好懂。以太坊是公認(rèn)的智能契約交易處理機(jī)

    來自上海 回復(fù)
  2. 大佬試圖在教會(huì)我,我嘗試假裝自己看懂了

    來自廣東 回復(fù)