为什么以太坊不仅仅是一个加密货币
為什么以太坊不僅僅是一個加密貨幣
盡管比特幣(Bitcoin)和以太坊(Ethereum)是經常被一起提及的兩個詞,但實際上,比特幣與以太坊有著很大的區別。它們唯一的共同點是,以太坊也是一個在區塊鏈之上運行的加密資產。
與比特幣僅僅是一個加密貨幣不同,以太坊還有很多其他特性。正是這些特性,才使得以太坊成為了一個去中心化的超級電腦。
在理解?以太坊?之前,我們必須要理解區塊鏈是如何工作的。如果你已經了解了區塊鏈,或者讀過?理解區塊鏈終極指南,可以直接進入下一節。
什么是區塊鏈?
簡單點說,區塊鏈就是一個數據庫。它是一個不斷增長的數據庫,里面存儲著特定類型的數據,并且有著一些獨特的屬性:
為了理解為什么幾個人能夠持有一份拷貝,并且能夠與其他人進行同步,讓我們來假設現在網絡里面有 10 個人,每個人的面前都有一個空的文件夾,并且有著一頁空的紙。無論何時,網絡中任何一個人做了一些事情,比如轉賬,他們必須要將這件事告訴網絡里面的其他人。
每個人都會在紙上記錄這件事,直到填滿這張紙。這個時候,每個人都必須通過解決一個數學難題來封裝這頁紙。通過解決數學難題,保證了每個人手中的紙都有著同樣的內容,并且無法被修改。誰第一個解出了題,誰就會得到一定數量的加密貨幣的獎勵。更多內容可見:the ultimate guide to understand blockchain.
一旦封裝完畢,這一頁就會被加到文件夾里面,然后拿出新的一頁,繼續重復上述過程。
隨著時間不斷增長,這些包含了重要記錄(也就是交易,transaction)的頁(也就是區塊,block)不斷地被加入到文件夾(鏈)里面,最終形成了數據庫(區塊鏈)。
區塊鏈存儲了什么?
區塊鏈可以用于存儲各種類型的數據,它所存儲的數據,賦予了區塊鏈價值。比特幣區塊鏈存儲的是金融交易,因此,看起來像是美元或者英鎊這樣的貨幣。除了跟美元所承載的功能以外,比特幣沒有任何額外的功能。但是,以太坊則不同。
以太坊不僅僅是一個像美元,英鎊或者比特幣一樣的貨幣。以太坊的目標不僅是成為一個貨幣,更是成為下圖中的事物:
以太坊實際是一個巨型電腦!但是,它是一個非常慢的電腦 – 大概比今天的普通電腦慢上 100 倍,并且非常昂貴。“以太坊電腦” 有著跟?90 年代智能手機?類似的境遇。除了一些非常簡單的事情以外,它幾乎做不了任何事情。
這聽起來好像并不怎么吸引人,那么,為什么以太坊還有這么多人趨之若鶩呢?這是一個非常好的問題。不夸張的說,以太坊正在席卷整個世界,因為它是一個完全去中心化的電腦,分布在世界各地。理解以太坊區塊鏈是如何工作的,就會看出它是如何承擔了一個世界電腦的角色。
以太坊是如何工作的?
與其他所有的區塊鏈一樣,以太坊需要數以千計的人在他們的個人電腦上運行一個軟件來支撐整個網絡。網絡中的每個節點(電腦),運行一個叫做以太坊虛擬機(Ethereum Virtual Machine, EVM)的東西。可以把 EVM 想象成是一個操作系統,它能夠理解并且執行用以太坊上特定的編程語言編寫的軟件。由 EVM 所執行的軟件或者應用叫做 “智能合約(Smart Contract)”。
為了在這臺世界電腦上做一些事情,你需要進行付出一定的費用。但是,你并不是付美元或者英鎊這樣普通的貨幣。而是通過叫做以太(ether,ETH)的以太坊網絡原生的加密貨幣,來支付相關費用。以太跟比特幣幾乎一模一樣,唯一不同的是它被用于支付在以太坊上執行智能合約的費用。
無論是一個人,還是一個智能合約,都被視作為以太坊上的用戶(user)。一個人可以以太坊上做什么,一個智能合約就可以做什么。
智能合約看起來就跟網絡的其他任何人一樣。它們都可以發送或者是接收以太,就跟其他的貨幣一樣。
但是智能合約又不是完全跟人類相同。跟人類用戶不同的是,智能合約也可以執行一個預先定義好的計算機程序來執行各種操作,執行的操作可以根據事件進行觸發。為了感受一下智能合約的威力,讓我們來考慮一個例子:
智能合約的威力
假設你和我對明天的天氣進行打賭,我打賭明天是晴天,但是你打賭是雨天。雙方同意輸的一方必須給贏的一方 100 美元。那么,我們如何才能夠做到這一點,并且確保輸的一方不會耍賴呢?我可以想到三種不同的方式:
1. 信任對方
最簡單的方式是信任對方。如果我們是老朋友了,那么信任對方是非常容易的。我知道你住哪兒,你也知道關于我的各種糗事。但是如果我們是完全不認識的陌生人,事情就會變得復雜的多。我沒有理由去信任你,你也沒有理由去信任我。
2. 簽一個法律協議
另一個貌似可行的方案是,將我們的賭約正式形成一個有法律效力協議。我們雙方簽署一個定義了賭約所有細節的協議 – 包括如果輸的一方違反協議會怎樣。
這個協議將會使得我們有義務付給贏的一方,但是它沒有任何實用性,因為通過合法途徑強制協議執行的成本,要比這個賭約的價值高得多。
3. 請一個共同的朋友幫忙
我們可以找一個雙方都信得過的朋友,然后各給這個朋友 100 美元進行保管。第二天,他會檢查天氣,然后把全部的 200 美元給打賭贏的一方。非常簡單和方便,除了有一點:如果這個雙方都信任的朋友把錢卷走了怎么辦?
現在,我們有了三種不同的方案來實施賭約,但是每種方案都有缺點:
- 因為是陌生人,所以我們無法信任彼此。
- 強制執行一個協議是如此的昂貴,以至于不具有任何實用性。
- 求助一個共同的朋友同樣又會遇到信任的問題。
以太坊的智能合約就是為了解救這個問題。一個智能合約就像是可信賴的共同的朋友,只不過是用代碼寫的而已。我們可以在以太坊上寫一個合約,這個合約從我們雙方獲得 100 美元的輸入,然后在第二天,通過開放的天氣 API 來檢查天氣,并將所有的以太轉給贏的一方。
一個合約寫好以后,就無法再被編輯或者修改。因此,你可以保證無論合約的內容是什么,它都會無條件執行。
但是,智能合約是如何執行?跟區塊鏈又有什么關系呢?
智能合約是如何與區塊鏈關聯的?
無論智能合約何時被執行,它都會在一個區塊上被記錄為一個交易。概括來講,一筆以太坊上的交易看起來就像是這樣:
除了最后的?Data,其他字段相信大家一眼就能看出來是干什么的。也正是這個?data?字段,才使得以太坊與眾不同。data?用于記錄智能合約的創建和執行,就像記錄交易一樣。在以太坊區塊鏈上,任何一個塊都可能包含以下三種交易:
1. 從一個人轉移到另一個人的普通交易
這些普通交易,就像是比特幣交易。如果你直接發送以太給你的朋友,那么 data 字段就是空的,這樣的交易就是普通交易。
2. 只有發送方卻沒有接收方
如果一筆交易中沒有接收方,這意味著此次交易是用?data?字段的內容在網絡中創建一個智能合約。data?字段包含了代碼,這些代碼就像是網絡中的其他用戶一樣。
3. 將以太轉到一個智能合約
無論何時,只要一個用戶(或是一個智能合約)想要執行一個智能合約,他/她/它 都會創建一個智能合約的交易,并在?data?字段放置執行指令。
與其他區塊鏈一樣,無論上面提到的三種事件何時發生,都會被公布到網絡中,并且網絡中的每個人都會對它進行記錄。除了記錄,每個節點還會執行智能合約,來使得他們的 EVM 狀態與網絡的其他部分同步。
每個節點都執行軟件的一部分,因此,使得整個網絡像一個巨大(但是緩慢)的分布式電腦。每次無論多么小的執行,都會被記錄到區塊鏈上,永久存在。
等一下,Gas 是什么東西?
如果用戶想要使用和執行智能合約,就必須要為執行該智能合約付出一定費用。這筆費用是給了實際花費了內存,存儲,計算和電力等資源來執行合約的節點。
為了計算智能合約的費用,合約中的每條語句都有收費標準。比如,如果執行的語句用到了節點的內存,這個語句會有一個價格。如果執行一個語句用到了節點的硬盤存儲,這些語句又是另一個價格。在這里,定義成本的單位就叫做 Gas。最終,Gas 會通過匯率轉換成以太(ETH)。
無論何時執行一個智能合約,你都必須要定義一個可以花費的 Gas 的最大值。當智能合約執行完成,或是達到了 Gas 的限額,就會停止執行。這是為了避免在智能合約中出現無限循環,防止出現一些反復執行的語句導致程序停滯。
因為程序員的一些錯誤,很可能會導致這樣的事情發生。所以每次重復執行時,都會消耗掉一些分配的 Gas,因此使得不會出現無限循環這樣的事情。沒有必要因為程序員的錯誤,導致一個節點在執行時崩潰。使用 Gas 就解決了這個問題。
這就是以太坊
以太坊不僅僅是一個用于交易的加密貨幣,它的實際價值在于其目的 – 以太坊的目的,是為了讓人們使用由幾千個節點支撐的分布式世界電腦。
當然,由于每條語句必須被網絡的中每個節點所執行,去中心化的分布式電腦會變得很慢,而且很貴。不過,這里所說的慢是跟誰相比較呢?是跟更快,但是由中心化控制的服務器。
為了能夠享受中心化電腦帶來的低成本,我們交出了我們的控制權。但是如果中心化服務器宕機或是被黑客攻擊,那么所有與它連接的客戶端都會掛掉。而一個去中心化的分布式電腦,只有在每個節點都停止工作的情況下,才會掛掉。換句話說,這使得它永遠不會宕機。無論在哪里,只要有網絡,就有以太坊。
總結
以上是生活随笔為你收集整理的为什么以太坊不仅仅是一个加密货币的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 这位中国小伙 6个月用比特币攒了125个
- 下一篇: 小心!智能合约再爆高危漏洞,两大加密货币