閱讀408 返回首頁    go 阿裏雲 go 技術社區[雲棲]


以太坊是什麼鬼?!媲美比特幣的加密幣大揭秘


image

了解為什麼以太幣不僅僅隻是另一種加密貨幣的終極指南。

“比特幣”和“以太坊”是常常結對出現的術語,實際上他們之間有著天壤之別。 兩者唯一的共同點就是他們均為基於區塊鏈運作的加密資產。

相比於僅僅是單純的加密貨幣,比如比特幣,以太坊還有著一些其他的功能性,使得它某種意義上成為一個巨大的去中心化式計算機。

要了解以太坊,就必須明白區塊鏈是怎麼回事。 如果你已經對它非常熟悉,或已看過我的《區塊鏈終極指南》,請直接跳轉下一小節。

注:《區塊鏈終極指南》https://hackernoon.com/wtf-is-the-blockchain-1da89ba19348

什麼是區塊鏈?

一個區塊鏈,簡單地說,就是一個數據庫。 它是一個不斷增長地含有特定種類數據的數據庫,具有非常顯著的特性:

  1. 一旦數據存儲在數據庫中,它就永遠不會被修改或刪除。 區塊鏈上的每一個記錄都是永久保存的。

  2. 不是一個人或一個組織機構在維護這個數據庫,而是成千上萬的人在做這事,每一個人都有自己的數據庫副本。

要想了解人們是如何能夠將其擁有的數據庫副本與其他人保持同步的,我們先來想象一下十個人在網絡中的情形。 每個人麵前都有一個空白文件夾和一個空白頁麵。 每當網絡中有人做了重要的事情,比如轉賬匯款,網絡中的每個人都會收到公告。

image


每個人都在他們的頁麵上記錄這些公告,直到頁麵填滿。當頁麵被填滿後,每個人都必須通過解決一個數學難題來加密頁麵。 解決這個數學難題是為了確保每個人的頁麵都具有相同的內容,而且永遠不會被修改。 誰先完成這個過程,誰就會獲得一些加密貨幣作為獎勵。

一旦頁麵被密封加密,該頁麵將會被添加到文件夾中,一個新的頁麵會隨之產生,該過程將循環往複永遠持續。


image

隨著時間的流逝,包含重要記錄(交易信息)的這些頁麵(區塊)將不斷地被添加到文件夾中(鏈),從而形成數據庫(區塊鏈)。

區塊鏈存儲的究竟是什麼?

任何種類的數據都是可以用區塊鏈來存儲的,而區塊鏈的價值也正是由其所存儲的數據的類型來賦予的。 比特幣的區塊鏈就是用於存儲金融交易記錄的,因此其成為了類似於像美元或英鎊這樣的貨幣。 比特幣擁有和美元完全一樣的功能和特性,而以太坊則不同。

以太坊不僅僅是一種像類似美元、英鎊或者比特幣這樣的貨幣。相較於成為一種貨幣,以太坊有著更高的目標使命。 以太坊如同下圖:

image


以太坊基本上本質上就是一台巨大的計算機! 然而,這是一個非常慢的計算機——比當今的普通電腦慢五到一百倍——而且非常昂貴。 “以太坊計算機”與90年代罕見的智能手機的能力相同, 大致隻能做一些非常微不足道的事情。

這聽起來並不是會有大作為的樣子,為什麼以太坊的熱度會這麼高? 這是一個很好的問題。 以太坊正在如暴風般席卷世界的原因是,它是一種可分布式部署在全球的完全去中心化的計算機。 了解以太坊區塊鏈的運行原理將會揭示它如何作為一個世界級計算機來運行。

以太坊是如何運行的?

像任何其他的區塊鏈一樣,以太坊需要幾千人在他們的計算機上運行一個軟件來為網絡供以動力。網絡中的每個節點(計算機)都運行著一個被稱為Ethereum Virtual Machine(EVM)的腳本語言。 EVM可以被看做是一個操作係統,它可以理解並執行用以太坊特定編程語言編寫的軟件。而 這些用Ethereum Virtual Machine執行的軟件或應用程序則被稱為“智能合同”(smart contracts)。

不管你要在這台世界級計算機上做什麼,你都需要付出一定的報酬。 不過,你並不需要用像美元或英鎊這樣的常規貨幣來支付,一切都必須以一種網絡的本地加密貨幣來支付,稱為ether(以太幣)。 Ether(以太幣)和比特幣幾乎是完全一樣的性能,除了它也可以用來支付執行以太坊的智能合同(smart contracts)。


image


無論是一個人還是一個智能合同 (smart contracts),在以太坊上都被看作是用戶。 人類用戶可以做什麼,智能合同(smart contracts)也可以做同樣的事情,兩者都可以像流通其他貨幣一樣支付和接收以太幣(ether)。


image

但與人類用戶不同的是,智能合同還可以執行預定義的計算機程序,在被觸發時執行各種操作。 為了理解智能合同的威力,我們來舉一個例子。

智能合同的威力

想象一下,我們來打賭明天的天氣。 我押明天是晴天而你押明天下雨,輸家必須給贏家100美金。 我們如何來完成這個賭約,並確保輸家將履行自己的承諾呢? 我可以想到三種方法:

1.相互信任

最簡單的做法就是選擇相互信任。 如果我們長期以來一直是朋友,相互信任是相當容易的。 我知道你住在哪裏,而你知道有關我的任何糗事。 但如果我們之間完全是陌生人,那麼事情就會變得比較困難。 你沒有理由相信我,而我也沒有理由去相信你。

2.簽一個法律協議

另一個貌似可行的方法是將我們的賭注製定為一個法律協議,雙方都要簽署這個協議。協議詳細規定了關於我們賭注的各項條款,包括如果輸家違反協議將會發生什麼。

這個協議使我們有法律義務去向贏家支付賭金,但它其實不具有任何實際意義,因為使用法律手段去製定這個協議的成本,將比這個賭注本身貴得多。

3.尋求我們共同朋友的幫助

我們可以尋求一位我們都十分信任的朋友,分別給她/他100美金來保管。第二天,她/他根據天氣結果給勝者200美金。很簡單吧,除非出現意外,比如這位被信任的朋友卷款逃跑。

目前我們有三種不同的方法來完成賭約,每一種選項都有它的缺點。因為我們互為陌生人,我們無法相信彼此;強製達成一個法律協議太過昂貴以至於難以實行;尋求共同朋友的幫助再次引發信任問題。

以太坊的智能合約能夠解決這類問題。智能合約就像共同信任的朋友,隻不過寫在代碼中。以太坊允許我們開發一款向雙方收取價值100美金的以太幣的軟件,第二天通過開源天氣API來查詢天氣結果,將價值200美金的以太幣都轉交給勝者。

image


簽署,它無論如何都不可能被修改。因此,你可以確保它在任何情況下被執行,無論合約發出了什麼指令。

但是智能合約如何被執行呢?它如何關聯區塊鏈呢?

智能合約如何與區塊鏈關聯?

當智能合約被執行時,它會將執行信息作為一次交易記錄在區塊上。從一個很高的層麵來看,在以太坊的區塊鏈上的一次交易執行如下:


image

這些字段除了一個地方外,都較好理解。“data”字段賦予了以太坊特殊性,它用來記錄一次交易中智能合約的創建與執行。任何以太坊的區塊鏈上的區塊能夠包含三種交易:

1.在一個用戶和另一個用戶之間常見的轉移交易

這些都是網絡中常見的類似比特幣的交易。如果你直接將以太幣發給你的朋友,那麼“data”字段將置空。

image

2.將以太幣從一個賬戶發送出來,但目標賬戶為空

當沒有目標賬戶的交易進行時,意味著交易的目的是使用“data”字段中的內容在網絡中創建一個新的智能合約。“data”字段包含的軟件代碼使它看起來就像網絡中的另一個用戶 。

image


3.將以太幣從一個賬戶發送到一份智能合約

每當一個賬戶用戶(或一個智能合約)想要執行一份智能合約時,他/她/它就需要與智能合約進行交易,並在“數據”字段中存儲執行指令。


image

就像其他的區塊鏈,無論上文提及的三種交易在任何時間發生,都會向全網發出通知,每個賬戶用戶都會記下。除了注意到記錄,每個節點都會執行指定的智能合約,使得EVM狀態與網絡其他節點保持同步。

每個節點執行軟件中的一部分,從而使整個網絡充當一個巨大的(但速度較慢)的去中心化計算機。為了永久化,每一次執行都會存儲到區塊鏈中。

等會兒,我聽說聽到有個詞叫GAS,這是什麼?

我剛告訴你執行智能合約的賬戶必須付一定的費用。它付給那些消耗了內存、存儲空間、計算能力和電力來執行智能合約的節點。

為了計算智能合約的費用,每一條語句都有一個指定的費用。舉例來說,如果你執行的這條語句使用了節點的內存,這種語句就有一個特定的費用。如果你執行的語句使用那個節點的磁盤空間,這種語句就有附加的具體的費用。這種費用就叫做Gas。最終,Gas通過一定的匯率轉變成以太幣。

當你執行智能合約,你必須預定義要消耗的Gas的最大值。當Gas達到這個值時,執行將被終止。這是為了避免智能合約中出現無限循環,使得程序重複一個語句集合時而不再往下執行。

這種情況往往是因為編程者粗心大意。每一次重複消耗一些指定的Gas,這使得無限循環成為有限。因為一個編程者的失誤而使得節點執行停滯沒有任何意義。Gas的概念解決了這個問題。

同學們,這就是以太坊

以太坊不僅僅用於交易加密貨幣,它真正的價值存在於它的使命。以太坊的使命是讓用戶能夠使用包含數千個動力節點的世界級去中心化計算機。

當然,由於每一個簡單的語句都被網絡中的每一個節點執行,去中心化、分布式電腦計算機會變得緩慢而昂貴。但是慢的反麵是什麼?是更快的,但是中央化控製的服務器。

為了享受使用中央計算機帶來的較低消耗,我們給予它們控製我們的權利。如果中央計算機(服務器)宕機或者被攻擊,它將連累所有連接的用戶。而一台去中心化的計算機隻有在所有節點都被攻克後才會宕機,所以它總是能工作的。隻要有網絡,就有以太坊。

原文發布時間為:2017-09-12
作者 | Mohit Mamoria
編譯 | 吳雙,Happen,卞崢
Elaine,Yawei Xia
本文來自雲棲社區合作夥伴“大數據文摘”,了解相關信息可以關注“大數據文摘”微信公眾號

最後更新:2017-09-12 15:02:45

  上一篇:go  JavaScript Event Loop機製詳解與Vue.js中nextTick的實踐應用
  下一篇:go  訪談|奧迪(中國)執行副總裁梅薩德:智能駕駛為我們每天提供第25個小時