雖然“比特币”和“以太坊”這兩個術語通常成對出現,但是它們之間實際上有着天壤之别。以太坊和比特币之間的唯一共同之處在于,它們都是在區塊鍊上運行的加密資産。
以太坊不像比特币那樣隻是一種加密貨币,它還存在其它特征,使其成為了一個巨大的分布式計算機。
要想理解以太坊,就必須理解區塊鍊的工作方式。
什麼是區塊鍊?
簡言之,區塊鍊就是數據庫。它是特定數據的數據庫,裡面的數據不斷增長,具有非凡特性:
一旦數據存儲于數據庫,永遠都無法被修改或删除。區塊鍊上的每個記錄會被永久保存下來。
沒有單獨的個人或組織能維護該數據庫。必須要上千個人才行,每個人都有數據庫的副本。
要想理解人們是如何讓自己的數據庫副本與其他人同步的,想象一下有一個包含10個人的網絡。每個人都有一個空的文件夾和一個空白頁。無論這個網絡中的何人在何時做了什麼重要的事,如轉賬等,會廣播給該網絡中的所有人。
每個人都會在自己的頁面上記錄公告,直到該頁面填滿為止。頁面填滿之時,每個人必須通過解決一個數學難題來将頁面内容封存。如此可以确保每個人的頁面具有相同内容,且這些内容永遠無法修改。第一個解決這一數學難題的人會得到一些加密貨币的獎勵。頁面一經封存,就會添加至文件夾中,然後出現新頁面,這一過程永遠循環往複。
-區塊鍊-
随着時間的推移,這些包含重要記錄(交易)的頁面(區塊)就會逐一加入文件夾(鍊),因而形成數據庫(區塊鍊)。
區塊鍊存儲的是什麼?
區塊鍊可用于存儲任何類型的數據,存儲在區塊鍊上的數據類型會賦予區塊鍊價值。比特币的區塊鍊存儲的是金融交易記錄,因此讓比特币成為類似于一種像美元或英鎊那樣的貨币。比特币的用處與美元一樣。以太坊則不同。
以太坊不隻是一種類似美元、英鎊或比特币的貨币。以太坊有一個比貨币更強的用處。以太坊就是:
以太坊從根本上來說是一個巨大的計算機!但是,它運行起來極其緩慢——比如今的普通計算機的運行速度緩慢約5至100倍——而且成本很高。這個“以太坊計算機”與罕見的90年代智能手機功能相同;因此隻能做些微不足道的小事。
這聽起來實在不怎麼樣,那以太坊為什麼能如此火爆呢?問得好。以太坊如狂風暴雨般席卷了這個世界,因為它是一個分布于全世界的完全去中心化計算機。理解了以太坊區塊鍊如何運作,就能知道以太坊這一世界計算機是如何運行的。
以太坊是如何運作的?
與其它區塊鍊一樣,以太坊需要幾千人在自己的計算機上運行一個軟件,為該網絡提供動力。網絡中的每個節點(計算機)運行一個叫做以太坊虛拟機(EVM)的軟件。将以太坊虛拟機想象成一個操作系統,它能理解并執行通過以太坊特定編程語言編寫的軟件。由以太坊虛拟機執行的軟件/應用程序被稱為“智能合約”。
要在這一世界計算機上做任何事都需付費。不過,付的不是美元或英鎊等普通貨币,而是該網絡自帶的加密貨币,叫做以太币。以太币與比特币大緻相同,除了一點,即以太币可以為在以太坊上執行智能合約而付費。
在以太坊上,無論是人還是智能合約都可作為用戶。人類用戶能做的事,智能合約也能做,而且還遠不止如此。
在網絡中,智能合約的表現和其他人類用戶完全一樣。二者都可像收發其他貨币一樣收發以太币。
但是,不同于人類用戶的是,智能合約也可以執行預定義的計算機程序,在程序被觸發時執行各種操作。讓我們通過以下這個例子理解智能合約的力量。
智能合約的力量
想象一下,我們倆關于明天的天氣打個賭。我賭明天天晴,你賭明天下雨。我們約定輸家必須給赢家100美元。我們如何打這個賭,還要确保輸家會履行諾言呢?我能想出以下三種不同方法:
1.互相信任
最簡單的方法是互相信任。如果我們已經是老朋友了,很容易信任對方。我知道你的家庭住址而你知道我的黑曆史。然而,如果我們是陌生人的話,那就難辦多了。你沒理由信任我,我也沒理由信任你。
2.簽署法定合同
另一個可行的方法是根據我們之間的賭約制定一份法定合同。我們雙方會簽署一份詳細規定了賭約條款的合同——包括關于輸家違約的規定。該合同會讓我們有向赢家支付賭金的法律義務,卻不具實用性。因為如果通過法律途徑強迫對方履行合同,其代價高出賭金本身。
3.尋求共同朋友的幫助
我們可以找一個雙方都信任的共同朋友,各交100美元在他/她那裡保管。第二天,他/她會查看天氣情況,将這200美元都交給赢家。這種方式簡單明了,除非出現一種情況:要是這位可信的朋友卷款而逃該怎麼辦呢?
現在我們有三種不同的打賭方法,不過各有都缺陷。因為我們是陌生人,無法互相信任。迫使對方履行法定合同的成本太高,此舉并不可行。尋求共同朋友的幫助又會引發信任問題。
以太坊的智能合約在這種情況下就可以派上用場了。智能合約就像是尋求共同朋友的幫助,不過是被編寫成了代碼。通過以太坊,我們可以編寫一款軟件,向兩方各收取價值100美元的以太币。第二天打開接入天氣應用的API查看天氣情況,并将總價值為200美元的以太币轉給赢家。
智能合約一旦完成,無論如何都無法被編輯或修改。因此,可以肯定的是不管合約中有何規定,無論如何都會被執行。
不過,智能合約是如何執行的?又是如何與區塊鍊相聯系的?
智能合約與區塊鍊有何關聯?
不管智能合約于何時執行,它都記錄了在區塊上執行的交易的信息。從很高的層面上看來,以太坊區塊鍊上的交易如下:
這些字段都好理解,除了最後一個。其中,“數據(data)”一項賦予了以太坊獨特力量,用于創建記錄和執行智能合約(也就是交易)。以太坊區塊鍊上的任何給定區塊都可以包含以下三種交易:
1.人類用戶和用戶之間的常見以太币轉賬
這些都是網絡中的常見交易,類似比特币交易。如果你直接将以太币送給朋友,“數據”項就會留空。
2.無接收方的以太币轉賬
在進行沒有接收方的交易時,這就意味着該交易的目的是在網絡中利用“數據”項的内容創建一個智能合約。“數據”項中包含軟件代碼,該代碼會像網絡中的其它用戶一樣進行操作。
3.用戶和智能合約之間的以太币轉賬
無論用戶(或智能合約)何時想要執行智能合約,他/她/它需要與智能合約進行一次交易,将執行指令置于“數據”項中。
就像在其它區塊鍊上一樣,不管上述三個事件中任一個在何時發生,都會發布在整個網絡之中,每個人都會記錄下來。除了記錄之外,每個節點也會執行收到指令的智能合約,讓以太坊虛拟機的狀态與餘下的網絡同步。
每個節點執行軟件的一部分,因此使整個網絡充當巨大(卻運行緩慢)的分布式計算機。之後,每次執行都會存儲在區塊鍊上,從而達到永久存儲的目的。
等等,聽說有個叫gas的東西——那是什麼?
我說過使用智能合約的用戶必須支付一定費用去執行該合約。該費用支付給實際使用内存、硬盤、計算和電力執行這一智能合約的節點。
為了計算智能合約的費用,每個語句都有指定的成本。例如,如果你的是執行使用節點内存的語句,這類語句有特定成本。如果你執行的是使用節點硬盤存儲器的語句,這類語句有附加的特定成本。特定成本的單位被稱作Gas。最終,Gas通過一定的兌換率轉換成以太币。
無論你何時執行智能合約,你必須确定要消耗的最大Gas量。當合約執行完成之時,或是達到Gas限制之時,都會停止執行該合約。這麼做是為了避免智能合約陷入無限循環之中,以防該程序反複執行一組語句,二部繼續執行其他合約。
之所以會出現該情況是因為程序員的疏忽。每重複一次都會消耗一些特定的Gas,因此會将無限循環變為有限。因為程序員的失誤讓節點陷入反複執行之中是毫無意義的。Gas的概念解決了這一問題。
女士們先生們,接下來就是以太坊了
以太坊不隻是一種用于交易的加密貨币。其真正的價值在于其目的。以太坊的目的是讓擁有以太币的人能使用通過幾千個節點提供動力的分布式世界計算機。
當然,因為每個微小的語句必須由網絡中的每個節點執行,去中心化的分布式計算機運行緩慢且成本高昂。但是這裡所說的慢的參照系是什麼?參照的是雖然更快但是由中心控制的服務器。
為了享受使用中心化計算機的低成本,我們給它們控制我們的力量。如果中央計算機(服務器)出故障或被黑了,就會連累與其連接的所有用戶。隻有當每個節點都出故障之時,去中心化計算機才會出故障,因此這台計算機能夠一直工作下去。有網絡之處就有以太坊。
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!