以太坊介紹
HomeArticles

以太坊介紹

初階
4d ago
40m

章節

  1. Ethereum基本原理
  2. Ether的產生背景
  3. Ethereum入門
  4. 可擴展性,ETH2.0和Ethereum發展前景
  5. Ethereum與DeFi(去中心化金融)
  6. 走進Ethereum網路


第一章 Ethereum基本原理

目錄 


以太坊介紹

Ethereum(以太坊)是一個去中心化的計算平臺。你可以把它想象成一臺並不在單一裝置上執行的計算機。也就是說Ethereum可以同時在世界各地的數千臺裝置上執行,而這也就意味不存在唯一擁有者。

Bitcoin和其他加密貨幣一樣,Ethereum也允許進行數字資產轉移。但它的功能應用卻更廣泛——可以配置自己的程式碼,並與其他應用程式進行互動。同時,Ethereum具有的靈活性更是允許各種複雜程式的建立。

簡單來說,Ethereum背後的主要思想是:開發者可在分散式網路上建立和執行程式碼,而並非在中央伺服器上。而這在這就意味著,這些應用程式理論上是不能被關閉或刪改的。


Ethereum與ETH的關係

表面上看之間的聯絡並不那麼直觀,但實際情況是Ethereum(以太坊)的使用單位並不叫做EthereumEthereums。Ethereum指的是協議本身,而作為動力的代幣則被稱為Ether(以太幣ETH)。


進化硬幣


Ethereum的價值所在

之前我們提到Ethereum(以太坊)的程式碼是在分散式系統中執行的。因此,程式不能被外部所篡改。當它們被新增到Ethereum資料庫中(即區塊鏈)後,則程式碼更不可能被修改。此外資料庫的所有人可見則允許你在互動之前進行程式碼審查。

所有這些就意味著,任何人在任何地方都可以發行不能被下線的應用。並且,Ethereum的價值儲存單位Ether則為這些應用程式內的價值轉移設定了條件。我們將構成應用的程式設計稱作Smart Contracts(智慧合約)。大多數情況下,它們可以在無人工介入的情況下執行。

毫無疑問,“可程式設計貨幣”的理念目前吸引了眾多使用者、開發者以及企業的參與。


什麼是區塊鏈?

Blockchain(區塊鏈)不僅是Ethereum的核心,還是儲存協議所含資訊的資料庫。如果你曾閱讀過“Bitcoin簡介”,你就會對區塊鏈的執行機制有基本的瞭解。Ethereum的區塊鏈與Bitcoin(比特幣)的區塊鏈類似,只是在資料的儲存方式以及所儲存的資料方面有所不同。

Ethereum區塊鏈就好似一本可以添頁的書。書中的每一頁被稱為“Blcok(區塊)”,而區塊中則儲存著交易資訊。當我們想要新增新篇頁的時候,我們就需要在頁面頂端計入一個特殊值。該特殊值則表明此新頁是基於前頁按順序新增,而並非隨意加入。

此特殊值就像是頁碼一樣,幫助我們辨別新區塊是否按照順序新增。而我們則是使用“Hashing(雜湊運算)”來完成這一過程。  

雜湊運算獲取一條資料(此時為區塊中的所有資料),並輸出一條唯一的識別符號(也就是雜湊)。兩份資料輸出同一雜湊的可能性非常低,並且該過程也是單向的。這就表明通過雜湊運算可以輕鬆的獲得雜湊,但你並不能通過逆轉雜湊來獲得用於建立該雜湊的資訊。在隨後的章節我們將介紹為何這對挖礦至關重要。

這樣我們就有了將所有頁面按正確順序連線的機制。任何試圖改變順序或移除頁面的操作都將被輕易發現。

想要深入瞭解Blockchain(區塊鏈)?請檢視我們的“區塊鏈技術初學指南”


Ethereum與Bitcoin的不同之處

Bitcoin依賴於區塊鏈技術和金融激勵來構建全球數字現金系統。且所引入的關鍵創新,允許全球使用者在無中央機構的情況下進行協作。Bitcoin允許每位參與者都可在自己的計算機上執行程式,而這就為金融資料在去信任化、去中心化環境中達成一致提供了條件。

Bitcoin被認為是第一代區塊鏈。且並不是作為複雜系統而建立的,而這也造就了它在安全方面的優勢。有意地非靈活性則優化了基礎層的安全性。Bitcoin中智慧合約的語言是受限制的,因此並不能很好的適應交易外的應用程式。

相比之下,第二代區塊鏈的功能則更多。除了金融交易之外,那些平臺還提供了更高程度的可程式設計性。Ethereum為開發者們提供了更多的自由,允許他們可使用自己的程式碼來建立更多的去中心化應用程式(DApps)

Ethereum是第二代區塊鏈浪潮的先驅,目前也是最閃耀的先行者。它與Bitcoin既相似又不同。在某些方面可執行相同的功能,但在其他方面又完全不同,各自都具有各自的優勢。


Ethereum的執行機制

我們可以將Ethereum定義為狀態機(State Machine)。也就是說,在任何給定時間節點你都可以獲得賬戶餘額和智慧合約的當前狀態快照。新的操作會導致狀態更新,就意味著所有的節點都將更新快照來反映更改。


交易單顯示的時間長度將5個牙齒髮送給警報器。

Ethereum中狀態更新。


在Ethereum上執行的智慧合約由交易(來自使用者或其他合約)觸發。當用戶向合約傳送交易時,網路中的每個節點都會執行合約程式碼並記錄輸出。而這一過程是通過Ethereum Virtual Machine(以太坊虛擬機器)來實現的,其中EVM將智慧合約轉換成計算機可以讀取的指令。

為了更新狀態,會採用一種叫做“挖礦”的機制。與Bitcoin類似,“挖礦”也是通過工作證明演算法(POW)來完成的。稍後將進行深入探討。


Smart Contract簡介

Smart Contract(智慧合約)就是程式碼。但該程式碼既不明智,也不是傳統意義上的契約。其中的Smart代表智慧,也就是特定條件下的自我執行。而之所以被視為Contract(合約),是因為它執行雙方之間的協議。

智慧合約概念由電腦科學家Nick Szabo在20世紀90年代末首次提出。他將此概念假象為自動售貨機來解釋,並宣告這將是現代智慧合約的先行者。在這個自動售貨機中,也存在一個簡單合約。也就是當用戶插入硬幣後,機器會根據人們的選擇提供產品。

智慧合約則將此類邏輯應用到數字環境中。也就是說你可以在程式碼中明確規定某種邏輯,例如當合約中收到兩個以太幣時,輸出“Hello, World!”。


hello world 智能合約


在Ethereum中,開發者將對邏輯進行編碼,以便EVM讀取。隨後開發者將它傳送到登記合約的特殊地址。之後任何人都可以檢視和使用合約。除非開發者在編寫合約時設定了條件,否則不能被刪除。

現在,該合約就有了地址。而如果想要與它進行互動,則使用者需要向地址中傳送2個ETH。隨後合約程式碼就被觸發了,且網路上所有的計算機都可執行。當看到支付已經完成,就會記錄輸出(你好,世界!)。

以上是Ethereum可完成過程的最基本示例。而隨著發展,更復雜且涉及更多合約的應用程式逐漸開始構建。


Ethereum之父

2008年,化名Satoshi Nakamoto(中本聰)的開發者(或開發團體)釋出了Bitcoin白皮書。而這也徹底改變了數字貨幣的格局。一位名為Vitalik Buterin的年輕程式設計師對此概念的進一步應用進行了研究和試驗,最後具體化為Ethereum。

以太坊是由Buterin在2013年發表了的一篇部落格中提到的,文章名為《Ethereum—終極智慧合約和去中心化應用平臺》。在文章中,他描述了一個名為“圖靈完備區塊鏈”的概念,表示一個具有足夠時間和資源的去中心化計算機可以執行任何應用程式。  

現如今,可在區塊鏈上配置的應用程式越來越多,而其所屬型別的唯一限制也只有開發者的想象力。Ethereum旨在查明區塊鏈技術是否存在超出Bitcoin設計限制之外的應用範圍。


Ether的發行機制

在2015年Ethereum首次供應了7200萬以太幣(Ether)。其中超5000萬的代幣在首次代幣發行(ICO)公開銷售。屆時參與者則可在交易所內使用法定貨幣或Bitcoin來購買ETH。


The DAO和Ethereum Classic

藉助於Ethereum,互聯網中的開放協作(Open collaboration)也以全新的方式呈現。例如DAOs(去中心化自治組織),類似於計算機程序,完全由計算機代碼控制。

該組織的最早且最宏大的一次嘗試則是“The DAO”項目。“The DAO”是由一些複雜的智能合約組成,並作爲獨立風險基金運作。而DAO代幣則是以ICO形式分配,並授予代幣持有者股份所有權和投票權。

然而,在上市不久之後,它就遭到了黑客的惡意攻擊,三分之一的資金被盜取。更值得一提的是,當時以太幣總供應量的14%都被鎖定在DAO中。毋庸置疑,這對於羽翼未豐的Ethereum網絡來說是一場災難性事件。

在經過緊急磋商之後,決定將Ethereum硬分叉爲兩條鏈。其中一條分叉中惡意交易被逆轉以恢復資金,也就是現在的“Ethereum Blockchain(以太坊區塊鏈)”。另一條分叉中的交易沒被逆轉保持不變,也就是現在“Ethereum Classic(以太坊經典)”。

此事件讓我們明確意識到此技術中所存在的風險,也讓我們體會了將大量財富託付於自治代碼可能的後果。同時向我們展示了在開放式環境中達成集體決策所具有的挑戰。倘若忽略漏洞,則The DAO通過互聯網完美詮釋了智能合約在實現去中心化協作(大規模網絡中)方面的潛力。





第二章—Ether的產生背景

內容導覽 


如何建立新的Ether

之前我們提到過Minging(挖礦)。如果你瞭解Bitcoin,那麼你就會知道挖礦過程對於區塊鏈的安全和更新多麼重要。而Ethereum與Bitcoin的挖礦原一樣都是根據協議對挖礦者進行Ether獎勵。


Ether的供應量

截止2020年2月,Ether的總供應量約為1億1千萬。  

Bitcoin不同,Ethereum的代幣發行計劃在建立前並沒有被設定好。Bitcoin通過限制供應量並降低新面世代幣的數量來保護價值1。而Ethereum則通過代幣為去中心化應用程式(DApps)提供基礎。目前尚未確定何種型別的代幣發行計劃適合此目的,所以Ethereum是無期限的。


Ethereum挖礦的執行機制

Minging(挖礦)對於網路安全至關重要。它確保了區塊鏈可以公平合理的更新,並允許了網路在無單一決策者的情況下執行。在挖礦活動中,節點的子集(也就是礦工)奉獻計算能力來解決加密難題。

他們實際上就是將一組未決交易及其資料進行雜湊運算。為了使區塊有效,雜湊值必須低於協議的規定值。如果一次操作失敗,他們可以修改某些資料進行再嘗試。

由於存在競爭,所以礦工必須以最快速度完成雜湊運算,通常使用雜湊率來衡量礦工的能力。網路上的雜湊算力越高,則加密難題越難解決。當礦工找到真正的解決方案後,他還需向網路中廣播,以便於其他參與者對有效性進行驗證。

高速連續的雜湊運算費用是昂貴的。當礦工在為網路安全付出努力時,就會獲得獎勵。而獎勵則是區塊中所有的交易費用。他們也接收新生成的Ether(在撰寫本文是為2ETH)。


Ethereum Gas簡介

還記得之前提到過的“ Hello, World!”合約麼?該程式非常簡單,且計算費用也不高。並且Ethereum生態系統中的任何人都可執行。

而這就引出了以下問題:當成千上萬人都在運行復雜合約時網路將會怎樣?如果某個人將他的合約設定為持續迴圈的相同程式碼,且每個節點都需要無限期執行它又會是怎樣?很顯然,這些過程佔用了很大資源,並且可能會導致整個系統崩潰。

幸好Ethereum引入了gas來規避這種風險。這就像汽車不能在無燃料的情況下行駛一樣,合約也不能在沒有gas的情況下執行。合約的執行則需要使用者支付一定數量的gas。如果沒有足夠的gas,則合約將終止。  

其實,這就是一種收費機制。將概念應用到交易上就是:礦工的主要動機是收益,因此他們將忽略費用較低的交易。

但請記住Ether與Gas是不一樣的。Gas平均價格的波動很大程式上取決於礦工。當你進行交易時,就要使用ETH來支付gas。並且也會如Bitcoin在收費方面一樣:如果網路擁擠且很多使用者都在試圖交易的話,gas的價格就會上漲。相反,如果網路中沒有太多活動,價格就會下降。

雖然gas的價格會改變,但每次操作所需的gas量是固定的。也就是說,複雜的合約將比簡單的交易消耗更多的gas。因此,gas就成為了算力的度量基礎。並以此來確保系統將根據使用者所使用的Ethereum資源量來收取合適的費用。

因為Gas只是Ether的很小一分部。所以,我們使用更小的單位“gwei”來表示。1gwei相當於十億分之一的Ether。

簡單來說,你的確可以執行一個長時間迴圈的程式,但此操作很快將變得非常昂貴。這樣Ethereum中的節點就可以緩解網路中的垃圾資訊了。


隨時間變化的gas平均價格(以gwei爲單位)

Gas平均價格隨時間推移的變化(單位gwei)。來源:Etherscanio


Gas price和gas limits

假設Alice正在進行一筆交易。她會計算出想要為單位gas支付的費用(可以通過ETH Gas Station),也就是gas price。也許她會設定較高的價格以此來激勵礦工儘快處理她的交易。 

同時她也會設定一個gas limit,用來自我保護。合約出現問題時,會使得所消耗的gas要多於她所計劃的。而gas limit的作用就是確保,當設定gas消耗完時,操作將停止。那時合約也會失效,且Alice最終支付的金額不會超過她最初所允許的支付額。

乍一看,這似乎很難理解。但其實就是告訴你,可以手動設定願為單位gas支付的費用(gas Price),以及該筆交易可消耗的最大gas量(gas limit)。而大多數的錢包都會為你處理該問題。同時gas price決定礦工打包交易的速度,而gas limit則決定你願意為此交易支付的最多gas量。


Ethereum區塊的挖礦時間

將一個新區塊鏈新增到區塊鏈中的平均時間為12-19秒。而如果網路轉變為Proof of Stake(權益證明),那麼速度將會更快。如果想深入瞭解此問題,請檢視《Ethereum Casper解析》


什麼是Ethereum代幣

Ethereum最大的魅力在於可允許使用者在鏈上建立自己的資產,並且這些資產可以像Ether一樣進行儲存和轉移。開發者們可以在智慧合約中對資產管理規則以及代幣引數進行設定。其中包括代幣發行量,代幣發行機制,是否可被分割,是否可替換等。在Ethereum上建立的代幣都需要符合ERC-20技術標準,因此這些代幣也被稱為ERC-20代幣

代幣的功能性為創新者們提供了更廣的試驗平臺,允許他們在金融和技術等前沿領域進行更多的嘗試。從發行應用內統一貨幣,再到生產以實物資產為基礎的獨特代幣,都具有很大的設計靈活性。未來的應用前景將會更加廣泛,且一些最佳用例也會慢慢浮現。





第三章—走進Ethereum

內容導覽 


如何購買ETH?

如何使用信用卡/借記卡購買ETH?

Binance允許你通過瀏覽器無縫購買ETH。操作步驟:


  1. 登陸數字貨幣買賣門戶。  
  2. 選擇你想要購買的加密貨幣(ETH),以及用來支付的貨幣。
  3. 登入Binance(或註冊賬戶)。
  4. 選擇支付方式。
  5. 按照提示輸入卡片資訊,並完成身份驗證。
  6. 搞定!你的幣安賬戶裡面將會存入您所借貸的ETH。


如何在P2P市場購買ETH

你也可以在P2P市場中購買和賣出ETH。通過幣安移動應用程式,您可以從其他使用者那裡購買代幣,操作步驟:


  1. 開啟APP,然後登陸或註冊賬戶。
  2. 選擇“一鍵換幣“,然後點選介面左上角的“購買”。
  3. 在彈出的交易型別中選擇一種,然後點選“購買 “。
  4. 你可以使用其他數字貨幣支付(點選“數字貨幣支付”)或使用法幣支付(點選“法幣支付”)。  
  5. 接著,系統會要求你指定支付方式。
  6. 選擇“購買ETH”
  7. 此時,你需要付款。完成後,點選“標記為已付”並確認
  8. 待賣方把BTC傳送給你,交易即告完成。


購買ETH後有什麼用

Bitcoin不同的是,Ethereum並非僅用於加密貨幣網路。它還可以用來構建去中心化應用程式,而Ether也作為可貿易代幣,成為了該生態系統的燃料。因此,Ether的主要作用則是為Ethereum網路提供動力。

不僅如此,Ether也可與其他傳統貨幣一樣,用來購買商品和服務。


接受ETH作爲付款方式的零售商熱力圖。

接受Ether作為付款方式的零售商熱度圖。來源:cryptwerk.com/coinmap


ETH的功能

人們可以使用Ethereum的原生貨幣ETH來作為數字貨幣或抵押品。也有一些人將ETH視為與Bitcoin一樣的價值儲存手段。但它又與Bitcoin不同,因為Ethereum區塊鏈的高度可程式設計性賦予了ETH更多效用。也就意味著Ether成為了去中心化金融應用程式,去中心化市場、交易所、遊戲以及其他應用的生機之源。  


假如ETH丟失會怎樣

ETH並不基於任何銀行,也就說你將對自己的資金負責。你可以將代幣儲存到交易所,又或者自己的錢包中。但請記住,在使用錢包進行自我保管時,一定要將助記詞妥善保管,以便於在丟失錢包的訪問權時進行資金恢復。


Ethereum交易是否可逆轉

一旦資料被新增到Ethereum區塊鏈,則幾乎無法更改或移除。這就意味著交易被固定前(發出交易指令前),一定要對傳送資金的目標地址和金額進行仔細檢查。在傳送較大金額時,你最好先向該地址中傳送少量資金來進行地址確認。

由於智慧合約遭到黑客攻擊,迫使Ethereum在2016進行了硬分叉,以便逆轉惡意交易。但此種逆轉情況也只是特殊事件的極端措施,而並不是常態。


Ethereum交易是公開的

所有被新增到Ethereum區塊鏈上的交易都是公眾可見的。即使Ethereum地址上並沒有顯示真實姓名,Observer(觀察者)也會通過其他方法來確定你的身份。


利用Ethereum獲益

由於ETH並不是一種穩定的資產,所以它既可能給你帶來收益,也可能帶來損失。一部分人選擇長期持有Ether,並押注該網路在將來會成為全球性的可程式設計結算層。另一部份人則選擇使用Ether來與其他Altcoins(山寨幣)進行交易。而這兩種策略也都存在各自的金融風險

而作為去中心化金融(DeFi)活動的主要支柱,ETH還可以用來放貸、作為貸款的抵押、鑄造合成資產,又或者在將來用作押注等。

有些投資者可能會長期投資Bitcoin(比特幣),且他們的投資組閤中並不包含其他數字資產。而有些投資者則更加靈活,會在投資組閤中混合ETH和其他山寨幣,又或者是將一定比例的資金用於短期交易(例如,日內交易或擺動交易)。市場中並不存在一體通用的賺錢方式,所以每個投資者都應該根據自己的實際情況來選擇最適合自己的策略。


應如何儲存ETH

目前市場上有很多種方式來儲存代幣,而每種方式也都存在它的利弊。正如其他涉風險事物一樣,最好的選方式就是在可用選項中進行多元化選擇。

通常,儲存解決方案要麼是為託管,要麼為非託管託管解決方案意味著你可以將資金委託給第三方保管(例如交易所)。此時,你就需要登入託管方平臺來進行加密資產交易。

非託管解決方案則正好相反——自己使用加密貨幣錢包來掌管資金。加密錢包不會像物理錢包那樣裝入硬幣,而是提供了允許你訪問區塊鏈上資產的加密祕鑰。請謹記:在使用非託管錢包時,務必要備份好你的助記詞


如何向Binance賬戶充值ETH

如果你想把自己的Ether存入Binance,需遵循以下步驟:

  1. 登入Binance賬戶(或註冊Binance賬戶)
  2. 進入現貨賬戶並點選充值
  3. 在代幣列表中勾選ETH。
  4. 選擇主網並向該地址中傳送ETH。
  5. 操作完成。當交易被確認後,Ether就會存入你的Binance賬戶。


如何利用存入Binance中的ETH

你需要將ETH存入Binance賬戶,以便於進行各種交易活動。在Binance上儲存ETH既簡單又安全。並且Binance生態系統還允許你通過貸款、持倉返利空投促銷以及抽獎活動等方式來賺取收入。


如何從Binance中提取ETH

如果你想講Binance賬戶中的ETH提取出來,則需要遵循以下步驟:

  1. 登入Binance
  2. 進入現貨賬戶並選擇提現
  3. 在代幣列表中勾選ETH。
  4. 選擇主網
  5. 輸入收款地址和金額
  6. 通過電子郵件認證。
  7. 操作完成。在交易被確認之後,ETH就將存入你提供的地址當中。


如何將ETH儲存到Ethereum錢包中

如果你想將ETH儲存到自己的錢包中,那麼就有兩種選擇:Hot Wallet(熱錢包)和Cold Wallet(冷錢包)。


Hot Wallet(熱錢包)

以某種方式與網際網路連線的加密貨幣錢包被稱為熱錢包。通常會是一個移動或桌面的應用程式,並允許你檢視餘額,或進行代幣的傳送與接收。由於熱錢包與網路是連線的,所以很容易受到攻擊,但它卻非常便於人們的日常使用。Trust Wallet就一種支援多種貨幣的移動錢包。

Cold Wallet(冷錢包)

冷錢包則是一種不暴露在網際網路當中的加密錢包。由於不存在網路攻擊向量,所以被攻擊的機率就明顯降低了。然而冷錢包卻不如熱錢包那樣便攜易用。硬體錢包紙錢包都屬於冷錢包。而現在很少人會使用過時且具有風險的紙錢包了。

請檢視《解讀加密錢包型別》來深入瞭解錢包的分類明細。


以太坊的標誌和圖案是什麼樣的?

Vitalik Buterin設計了最初的以太坊圖案。它由兩個旋轉的求和符號Σ(希臘字母中的Sigma)組成。而以太坊最終的標誌(基於此圖案)是由菱形(稱為八面體)圍繞,由四個三角形包圍。 與其他加密貨幣類似,以太坊也是由標準的Unicode符號組成,因此在應用程式和網站中可以輕鬆顯示以太坊的價格。 正如美元使用符號$表示一樣,以太幣使用的符號為Ξ。





第四章—擴展性、ETH2.0和Ethereum發展前景

內容導覽 


擴容能力是什麼?

簡單的來說,可擴展性(scalability)就是對系統增長能力的衡量。就比如,在計算中網路或伺服器可以通過不同方法擴容來處理更多的需求。

加密貨幣中的可擴展性指的是區塊鏈可擴充套件容那更多使用者的程度。其中的更多使用者意味著區塊鏈將涉及更多的操作和交易競爭。


Ethereum擴容必要性

Ethereum的擁護者認為網際網路的下一次迭代將會在該平臺上建立。而那時的Web3.0將帶來一種分散式拓補結構,不再需要中間商、會更注重隱私性,並最終轉向資料的自我擁有。而這些基礎屬性將通過分散式儲存/通訊協議和智慧合約式的分散式計算來構建。

而為了實現之這一目標,Ethereum需要在不損害去中心化的前提下,大規模提升網路處理交易的能力。目前,Ethereum並未像Bitcoin那樣通過限制區塊大小來限制交易量。而只是向區塊中納入了gas limit(單一區塊中可容納最大gas量)。

比方說一個區塊的gas limit為100,000gwei,則當向該區塊中提交10筆gas limit為10,000,又或者是2筆gas limit為50,000的交易時,任何其他的交易都需要等待下一個區塊。

對於每個人都在使用的系統來說,這並不理想。而且當未決交易數量超過區塊可用空間,就會很快出現積壓。同時gas price價格也將上漲,此時人們就不得不支付更高價格來使自己的交易被優先處理。也就說繁忙的網路會使得特定用例中的操作變得非常昂貴。

當初風靡一時的CryptoKitties遊戲則是Ethereum網路侷限性很好的示例。2017年,基於Ethereum的遊戲CryptoKitties吸引了大量使用者在網路中進行交易來進行虛擬貓(代表不可替換代幣)的繁殖。而迅速的普及也使得待處理交易火箭式上升,最後導致了網路的極度擁堵。


Blockchain可擴展性三角困局

從表面上來看只要提高區塊的gas limit就可以緩解所有可擴展性問題。也就是上限越高,網路在固定時間範圍內就可處理更多的交易,對吧?

遺憾的是,除非犧牲Ethereum的某些關鍵特性否則這是不可行。Vitalik Buterin提出了Blockchain Trilemma(區塊鏈不可能三角—如下圖)來解釋區塊鏈必須達到的微妙平衡。


區塊鏈三角困局

區塊鏈三角困局:擴容(1)、安全(2)和去中心(3)。


上述三個特性中只能取其二。例如Ethereum和Bitcoin等區塊鏈都將安全性和去中心化放在了首位。它們的共識演算法確保了網路的安全性,但其中的網路是由成千上萬的節點組成,所以降低了網路的可擴展性。由於接收和驗證交易都是由眾多節點來完成的,所以相比於中央式方案要慢的多。

另一種情形則是移除區塊的gas limit,這樣的網路則同時具有安全性和可擴展性,但不再是去中心化。 

此時單一區塊中將包括更多的交易,最後形成更大的區塊。而網路中的節點扔需定期下載和廣播區塊,所以就需要大量的硬體基礎。也就是說,當gas limit提高時,節點驗證、儲存以及廣播區塊的難度將會增加。

在此過程中無法更上節奏的節點將會退出。假如此種方式持續下去,則僅會有少部分強大的節點倖存,而這就導致了系統的更加中心化。最後你會得到一個安全且可擴充套件的區塊鏈,但並會去中心化。

最後一種情況是,區塊鏈選擇了去中心化和可擴展性。也就是網路犧牲了共識演算法來實現更快的速度和去中心化,而結果卻是安全性降低了。


Ethereum的交易處理率

最近這些年,Ethereum的TPS(每秒交易量)很少會超過10。對於一個計劃成為“世界計算機”的平臺來說,這個數字低的驚人。

可擴展性解決方案一直都是Ethereum發展過程中重要部分。而Plasma就是解決方案的一種。該解決方案旨在幫助Ethereum及其他區塊鏈網路提高效率。


Ethereum2.0

Ethereum的確具有很大潛能,但並不能掩飾其存在的侷限性。之前我們也已經討論過在可擴展性方面的侷限性。簡言之,如果Ethereum想成為新經濟體強有力的支柱,則它就必須每秒處理大量的交易。而鑑於網路的分散式特性,導致該問題很難解決,而且多年來Ethereum的開發者們也致力於該難題解決方案研發。

一方面,為了保持網路的去中心化特性,必須設定一定限制。然而當執行節點的操作條件越高,網路中的參與者就會越少,而網路也將逐漸中心化。所以提高Ethereum處理交易的能力時節點的負擔就會增加,從而威脅到網路的完整性。

Ethereum以及其他PoW(工作量證明)加密貨幣的另一弊端是,它們都是資源密集型。也就說為了能在區塊鏈上成功新增區塊,就必須進行挖礦。而此種區塊新增方式則需要大能耗快速計算。

為了解決上述侷限性,遂提出了一系列升級計劃,統稱為Ethereum2.0(或ETH2.0)。一旦全面實施,則將會有效提升網路的效能。


Ethereum分片

通過以上理解我們知道,每個節點都會儲存區塊鏈副本。而每個節點也都將隨著區塊鏈的變化而更新,這一過程將消耗巨大寬頻和可用記憶體。

而如果使用名為“Sharding(分片)”的方法,則該過程就可避免。通過名字就知道該過程是將網路劃分為不同節點子集,也就是所謂的shards(分片)。每一個分片都將處理自己的交易和合約,同時也會按照要求與其他網路的分片進行通訊。並且由於每個分片都將獨立驗證,所以它們不需要儲存其他分片的資料。


無分片網絡和分片網絡

2020年3月的網路VS實施分片的網路


“分片”是一種複雜的擴容方式,需要大量的設計和實施工作。然而,倘若成功實施,則網路的吞吐能力將會以數量級提升。


Ethereum Plasma簡介

Ethereum Plasma是一種鏈下擴容解決方案。顧名思義,也就是將交易脫離區塊鏈以便於提高網路吞吐量。此時的它就與側鏈和支付通道有些相似

通過Plasma,側鏈就可以與Ethereum區塊鏈主鏈錨定,並保持一定程度的通訊。它們的運作大體上是獨立的,也就是使用者依靠主鏈來解決爭端,靠側鏈來完成他們的活動。

Ethereum擴容成功的關鍵在於減少節點必須儲存的資料量。Plasma方案則允許開發者在主鏈的智慧合約中規定“子鏈”的一些規則。之後就可以將主鏈上昂貴的操作(構建應用或處理交易)轉移到“子鏈”完成。

關於Plasma的詳細資訊,請檢視《Ethereum Plasma解讀》


以太坊rollup介紹

Rollups類似於Plasma,他們都是將交易從主鏈中脫離,以此實現以太坊的擴容。那麼,他們都是如何運作的呢?  

通過在主鏈上的單個合約中,持有二級鏈上的所有資金,並保持該鏈當前狀態的加密證明。二級鏈的運營者在主網合約中存入保證金,並確保僅將有效的狀態轉換提交給主網合約。基於當前的思路,由於該狀態是在鏈下維護的,因此無需將資料儲存在區塊鏈上。但是,Rollups與Plasma的主要區別是將交易提交給主鏈的方式。Rollups使用特殊的交易型別,這種方式可以彙總海量交易,並將其捆綁在一起成為特殊的區塊,稱為Rollup區塊。   

有兩種不同型別的rollup:OptimisticZK Rollup。兩者都通過不同方式保證狀態轉換的正確性。  

ZK Rollups 使用一種被稱為零知識證明的密碼學驗證方式進行交易提交。其中一種較為特別的方法被稱為zk-SNARK。我們無法得知它工作的具體細節,但是會明確它的確被Rollups所使用。這是一種可以讓互補認同的雙方互相證明自己所擁有特定的資訊,而又不不需要互相透露該資訊是什麼的方式。 

就ZK Rollups而言,這種資訊是提交到主鏈的狀態過渡。這樣做的一個很大好處是,這個過程幾乎會立即發生,而且幾乎沒有機會提交損壞的狀態。

優化滾動 犧牲了某些可調整性以獲得更大的靈活。通過使用一個名為優化虛擬機器(OVM)的虛擬機器,這些虛擬機器允許智慧合約在二級鏈上執行。 另一方面,這種方式不會有加密證據提交給主鏈,證明該狀態過渡是正確的。 為了緩解這個問題,會稍微將狀態進行延遲,支援使用者質疑和否定提交到主鏈的無效區塊。 


Ethereum權益證明機制(POS)

權益證明(PoS)工作量證明(PoW)替代方案,用來驗證區塊。在PoS系統中新區塊並不是通過挖礦來獲得,而是通過鑄造(有時也被稱為鍛造)來完成。礦工不再需要通過算力來競爭。現在的候選區塊是由週期性隨機選擇出的節點(驗證者)來完成驗證的。如果操作正確,則該節點將會獲得區塊中所有的交易費用,有時也可能根據協議獲得區塊獎勵(增發代幣)。

由於PoS過程中不涉及採礦,所以它被認為是一種環境友好型方案。驗證者消耗的能量相比於礦工要少的多,結果就是可以在消費級硬體上鑄造區塊了。

Ethereum2.0的升級過程中,會通過名為Casper的更新將PoW變革成PoS。目前確切的日期還未知,但第一次迭代可能會在2020年推出。


Ethereum Staking(權益質押)

在PoW協議中,網路的安全性由礦工來保證。其中的礦工並不會作弊,因為作弊只會白白浪費電力而並不會獲得任何獎勵。在PoS中並不存在此種博弈關係,而是通過其他加密經濟學措施來確保網路安全。

在PoS中防止不誠實行為的不是能源浪費風險而是資金損失顧慮。驗證者(Validator)需要抵押一定數量的代幣才可能獲得驗證權。如果節點試圖作弊,則他所質押的代幣(一定量的Ether)將會被銷燬,而如果該節點無響應或離線則質押代幣也將逐漸耗盡。


Ethereum中所需ETH質押量

想獲得驗證權的最低質押量為32ETH。此高額設定可有效的防止51%攻擊


Ethereum中ETH的質押收益率

收益率的大小並不固定。因為收益不僅取決於你抵押的代幣量,還受到網路中總ETH質押量以及通貨膨脹率的影響。粗略估算,目前年收益率大約為6%。當請記住,這個數字也只是現在,並不代表未來。


質押鎖定期

想要取回ETH時,就會被放入到一個取款佇列。如果不排隊的情況下,最短的贖回時間為18個小時,且時間會根據當時正在取款的人數動態調整。


質押安全性

因為你是負責網路完全的驗證者,所以需要將各種風險考慮在內。如果驗證節點長時間離線,則將會損失很大一部分押金。而當你的押金低於16ETH時,就被會被移出驗證者集合。

還存在另一個系統性風險因素。權益證明機制(PoS)之前未在大規模網路上實施,所以不能保證它不會出現崩潰。軟體總是存在缺陷和漏洞的,而且可能會造成毀滅性影響,尤其是質押價值達到數十億美元的時候。





第五章—Ethereum和去中心化金融(DeFi)

內容導覽 


什麼是去中心化金融(DeFi)?

去中心化金融(DeFi)是指一種將金融應用程式去中心化的運動。DeFi將在公有,開源的區塊鏈上構建,並允許所有的網路使用者免費訪問,也就是非許可性的。而正是由於這一特性,可能會吸引數十億人加入到這個全新的世界金融體系當中。  

在DeFi生態系統當中,使用者們可通過P2P網路和去中心化應用程式(DApps)與其他使用者和智慧合約進行互動。DeFi的最大優勢在於提供眾多功能的同時,仍保持使用者享有資金的所有權。  

簡言之,去中心化金融(DeFi)運動旨在構建一個全新的金融系統來擺脫目前體系中的限制。由於DeFi相對較高的去中心化程度和開發者基礎,所以大多數應用都是在Ethereum上構建的。


去中心化金融(DeFi)的應用前景

大家都知道,Bitcoin的最大優點在於並需要任何中央機構來協調網路運作。倘若我們根據此理念來開發可程式設計應用程式將會是怎樣?而這就是DeFi所形成的價值:沒有中央協調機構,不會出現單點故障。  

之前提到過,DeFi的最大優勢在於“開放訪問”。世界上有數十億人無法訪問任何型別的金融服務。再試想一下,在沒有任何金融保障的情況下,你該如何管理你的日常生活。目前就有幾十億人過著此種生活,而DeFi想要服務的物件就是這類人群。


去中心化金融(DeFi)是否會接管世界

之前所說的那些聽起來都很不錯,然而為什麼DeFi還未在世界普及流行呢?其實,目前大多數DeFi應用程式都處在實驗階段,幾乎難以使用且經常崩潰。而這也證明了此生態系統的框架設計是非常困難的,尤其是在分散式的開發環境中。

對於軟體工程師、博弈理論家機制工程師以及其他設計者來說解決DeFi生態系統中存在的挑戰是一條漫長的道路。所以,DeFi應用程式是否會接管世界還未可知。


現存的去中心化金融(DeFi)應用

目前去中心化金融最知名的用例便是穩定幣(Stablecoins)。本質上來講,穩定幣是一種與現實資產(例如法定貨幣)掛鉤的區塊鏈代幣。比方說BUSD,該貨幣就是與USD(美元)掛鉤。而由於這些代幣都是基於區塊鏈的,所以在儲存和轉換方面都非常方便。

在借貸方面的應用也很受歡迎。目前市場中有很多P2P服務允許你進行資金出貸來賺取利息。其中Binance Lending(幣安寶)就比較流行。操作方式很簡單,你只需要將資金存入借貸錢包,第二天賺取利息了。

DeFi應用程式最令人興奮的是,它幾乎可以應用到任何領域。它可以滲透到各種型別的P2P和去中心化市場中,允許使用者進行加密收藏品以及其他數字物品的交易。它們還可以創造合成資產,也就說任何人可以為任何有價值的物品創造市場。現在也開始慢慢進入預測和衍生品市場。


Ethereum上的去中心化交易所(DEXs)

去中心化交易所(DEX)允許交易直接在使用者錢包之間發生。當你在Binance(中心化交易所)中進行交易時,首先需要將資金髮送到平臺,之後再通過內部系統進行交易。

而去中心化交易所(DEX)則不同。你可以通過智慧合約來完成錢包與錢包之間的交易,以此來避免交易所被黑客攻擊等風險。

Binance DEX、Uniswap、Kyber Network、IDEX等都是一些比較知名的去中心化交易所。並且為了達到較高的安全性,一些交易所甚至允許你在硬體錢包中完成交易。


中心化vs去中心化交易所

中心化交易所VS去中心化交易所


我們用上圖來解釋中心化交易所和去中心化交易所之間的區別。在左圖中,你可以看到Binance介於交易雙方之間。所以,當Alice想要使用代幣A與Bob交換代幣B的時,他們首先要將資產存入到交易所中。完成交易後,Binance會按理重新配置他們的賬戶餘額。

右邊是一個去中心化交易所。你會注意到,在交易中並不存在第三方。交易時Alice的代幣通過智慧合約直接轉換成Bob的代幣。此種方式下,合約將會自動執行,且無需信任中間機構。

截止2020年2月,DEXs的使用量穩步上升。然而交易量與中心化交易所相比還相差甚遠。但是,如果開發者和設計者們充實DEX的使用者體驗,那麼它必定會更受歡迎,且有朝一日與中心化交易所抗衡。





第六章—走進Ethereum網路

內容導覽 


什麼是Ethereum Node(以太坊節點)

“Ethereum node”是用來描述與Ethereum網路互動的程式的術語。以太坊節點可以是任何裝置,從簡單的移動手機錢包應用程式到儲存整個區塊鏈副本的計算機。

Ethereum網路中存在很多型別的節點,而每個節點也都已某種方式充當通訊站。


Ethereum node的工作原理

Ethereum不同與Bitcoin,並不存在單一的程式來作為參考實現。在Bitcoin生態系統中,“比特幣核心(Bitcoin Core)”是主要節點軟體,而再Ethereum黃皮書中則存在一系列的單獨程式(但相容)。目前使用最多的是GethParity


Ethereum full nodes(全節點)

如果你想要在Ethereum網路中獨立驗證區塊鏈資料,那麼就需要使用之前提到的軟體來執行全節點(Full nodes)。

該軟體會通過其他節點下載區塊,並驗證其中所包含的交易是否正確。軟體還將執行所有已呼叫的智慧合約,以確保你收到資訊與其他節點相同。如果正常執行,網路中每個節點的裝置上都會存有相同的區塊鏈副本。

全節點對於Ethereum的執行至關重要。如果不存在遍佈全球的眾多節點,則網路將會丟失它的抗審查與去中心化特性。


Ethereum light nodes(輕節點)

全節點的執行允許你直接為網路的健康和安全做貢獻。但是,全節點通常需要單獨的機器來執行和維護。而對於無法執行全節點(或只是不想)的使用者,輕節點則是更好的選擇。

顧名思義,輕節點都是輕量級的——它們需要更少的資源且佔用更小的空間。所以,可以在手機或手提電腦等輕便式裝置上執行。然而這些代消耗也是有代價的——它們並不是完全的自給自足。也就說它們不是整鏈同步,因此就需要全節點來提供相關資訊。

輕節點客戶端在零售商、服務商以及使用者中相當流行。目前已被廣泛用於收付款領域中。

Ethereum挖礦節點

挖礦節點(Minging code)既可以是全節點客戶端也可是輕客戶端。Ethereum網路中“挖礦節點”這個術語的使用並不像在Bitcoin中那樣的深入且廣泛,但也還是用來識別那些參與者。

想要對Ethereum進行挖礦,就需要具備一些特殊的硬體。其中最常見的是構建礦機。使用者通過礦機將多個(GPUs)連結起來進行高速雜湊運算。

通常礦工有兩種挖礦選擇:一種是單獨挖礦。單獨挖礦意味著礦工獨自工作來建立區塊。如果成功,就會獨享挖礦獎勵。另一種則是加入礦池。當礦工加入礦池後,他們就將自己的算力與其他人合併起來。這樣就可以更快地生成區塊,但同時也需要與礦池中的其他成員分享獎勵。


Ethereum節點的執行條件

區塊鏈一個最重要的特性就是開放性。這就意味著任何人都可以執行Ethereum節點,並完成交易和區塊的驗證工作。

Bitcoin一樣,也有很多企業提供了即插即用的Ethereum節點。此種裝置對於那些只想啟動並執行單一節點的人們來說非常便利,單弊端是需要為此便利支付額外費用。

之前提到過,Ethereum中存在很多型別的節點客戶端,諸如GethParity。如果你想要執行自己的節點,就需要掌握這些應用程式的安裝方法。

除非你要執行名為“歸檔節點”的特殊節點,否則消費級的行動式計算機就足夠應付Ethereum的全節點運行了。但最好不要日常工作裝置,因為節點執行會降低電腦速度。  

執行節點時最好保證裝置長期線上。倘若節點離線,那麼再次聯機時就可能花費大量時間來進行同步。因此,最好是選擇低成本且易於維護的裝置。例如,在Raspberry Pi執行輕節點。


Ethereum挖礦條件

不久之後Ethereum網路就將過渡到PoS機制,所以Ethereum挖礦不再是最安全的長期投資方式。也就說明,轉變完成之後,Ethereum的礦工們將面臨轉移到其他網路或賣掉裝置的事實。

但目前此種轉變尚未完成,所以如果想參與到Ethereum挖礦中,則需要持有特殊的硬體,例如GPUs或ASICs等。想要收益可觀,那麼定製礦機和廉價電力環境則是必備的。此外,你還需建立一個Ethereum錢包,並配置挖礦軟體來使用。這一切都需要大量時間和資金,所以在進入該市場前,輕仔細考慮是否做好迎接各種挑戰的準備。  


Ethereum ProgPoW解讀

ProgPow代表Programmatic Proof of Work,是Ethereum挖礦演算法Ethash的擴充套件。它使得GPU相比於ASICs更具競爭力。  

多年來,在Bitcoin和Ethereum社群中,抗ASIC一直是個飽受爭議的話題。目前的Bitcoin網路中,ASIC已經成為一種主要的挖礦力量。  

在Ethereum網路中,雖說存在ASICs,但並不是主流,大部分礦工仍在使用GPUs。然而,隨著越來越多公司將Ethereum ASIC礦機引入到市場,此種狀況很快會有所改變。然而ASICs到底存在什麼問題呢?

一方面,ASICs會明顯降低網路的去中心化。如果GPU礦機無法盈利,那就必須關閉它的挖礦操作,而此時算力只集中在少數礦商手中。此外,ASIC晶片的開發是相當昂貴的,只有少數的公司會具備此能力和資源。而此種現狀可能會導致Ethereum的礦業集中在少數公司手中,形成一定程度的行業壟斷。

自2018年以來,ProgPow的整合問題一直都是飽受爭議。有些人認為它對於Ethereum生態系統是有益的,而也有一些人則表示它可能會導致硬分叉。隨著PoS機制的到來,ProgPoW是否可在網路上實施將逐漸顯現。


Ethereum的軟體開發者

Ethereum網路與Bitcoin是一樣的,都是開源的。任何人都可以參與開發協議,或構建應用程式。而且,Ethereum開發者社群也是區塊鏈領域中最大研發團體。

Andreas Antonopoulos,Gavin Wood的Mastering Ethereum,以及Ethereum.org的Developer Resource等資源都是新進開發者們很好的選擇。  


Solidity簡介

智慧合約的概念是在20世紀90年代被首次提出,而目前在區塊鏈領域中的應用卻帶來了一系列全新的挑戰。2014年由Gavin Wood提出的Solidity已經成為Ethereum上智慧合約開發的主要程式語言。語法與Java、JavaScript以及C++類似。

本質上來說,就是開發者可通過Solidity語言,來編寫可分解為以太坊虛擬機器(EVM)能夠理解的指令程式碼。你可以通過Solidity GitHub來了解該語言的工作原理。

對於Ethereum開發者來說Solidity並不是唯一選擇。還有一種比較流行的語言——Vyper(語法上與Python相似)。