以太坊虚拟机

**以太坊**（Ethereum）是一個去中心化的開源的有智慧型合約功能的公共區塊鏈平台。以太幣（ETH 或 Ξ）是以太坊的原生加密貨幣。截至 2021 年 12 月，以太幣是市值第二高的加密貨幣，僅次於比特幣。以太坊是使用最多的區塊鏈。

以太坊的概念首次在 2013 至 2014 年間由程式設計師維塔利克・布特林受比特幣啟發後提出，大意為「下一代加密貨幣與去中心化應用平台」，在 2014 年通過 ICO 眾籌得以開始發展。

以太坊亦被稱為「第二代的區塊鏈平台」，僅次於比特幣。

## 特點

相較於較大多數其他加密貨幣或區塊鏈技術，以太坊的特點包括以下幾點：

* 智慧型合約（smart contract）：儲存在區塊鏈上的程式，由各節點執行，需要執行程式的人支付手續費給節點的礦工或權益人。
* 分散式應用程式：以太坊上的分散式應用程式不會停機，也不能被關掉。
* 代幣（tokens）：智慧型合約可以創造代幣供分散式應用程式使用。分散式應用程式的代幣化讓使用者、投資者以及管理者的利益一致。代幣也可以用來進行首次代幣發行。
* 權益證明（proof-of-stake）：相較於工作量證明更有效率，可節省大量在挖礦時浪費的電腦資源，並避免特殊應用積體電路造成網路中心化。2022 年 9 月 15 日與主鏈合併。
* 燃料（gas）：由交易手續費的概念擴充，在執行各種運算（computation）時需計算燃料消耗量，並繳交燃料費，包括傳送以太幣或者其他代幣也被視為一種運算動作。
* 原丹克分片（Proto-Danksharding）：在部份節點上暫存資料，以提升效率。尚未實作。
* 叔塊：此功能在轉為權益證明後已停用。原本的功能是將因為速度較慢而未及時被收入母鏈的較短區塊鏈併入，以提升交易量。使用的是有向無環圖的相關技術。

### 第二層功能

除了在主鏈上執行的各種功能，為了支援智慧型合約所需的高運算量以及資料容量，以太坊也積極開發第二層功能來減輕主鏈的負擔、提升交易速度、擴展其實用規模。第二層功能大多在 2019~2021 年發展成形，目前的主要方案包括以下：

* 狀態通道（state channels）：原理同比特幣的閃雷網路，將時常交易的一些結點之間的交易給果打包後再把最終結果寫入主鏈。實作的例子包括雷電網路（Raiden）、Connext、Kchannels 等。
* 支鏈：用較小的分支或平行的區塊鏈執行一部份的運算，只將一部份的資料寫入主鏈，以減輕主鏈的負擔
  * 平行鏈：可能使用完全不同的區塊鏈結構和驗證機制，只在開頭和結尾用雙向橋接和主鏈相連。實作的例子有 Skale、xDai、POA 等。
  * Plasma 和 Validium 支鏈：將大部份的合約執行和運算都移到支鏈上進行，只將最後交易結果寫入主鏈。此方案由於交易資料未寫入主鏈，安全性較差，但擴容效果較佳。實作的例子包括 OMG、Polygon、Starkware、Loopring 等。
  * Rollup 支鏈：將鏈上資料複製一份，在鏈外用以太坊虛擬機（EVM）執行合約並確認後，將交易數據壓縮再寫入主鏈。主鏈上另有一系列合約可以驗證結果正確，可再分為 Optimistic 和零知識證明兩種驗證方式。

## 開發歷史

### 起源

以太坊最初由維塔利克・布特林在 2013 年提出。布特林本是一名參與比特幣社群的程式設計師，曾向比特幣核心開發人員主張比特幣平臺應該要有個更完善的程式語言讓人開發程式，但未得到他們的同意，因此決定開發一個新的平臺作此用途。布特林認為很多程式都可以用類似比特幣的原理來達成進一步的發展，在 2013 年寫下了《以太坊白皮書》，說明了建造去中心化程式的目標。然後 2014 年透過網路公開募資得到開發的資金，投資人用比特幣向基金會購買以太幣。

最初以太坊程式是由一間位在瑞士的公司 Ethereum Switzerland GmbH 開發，之後轉移至一個非營利機構「以太坊基金會」（Ethereum Foundation）。在平臺開始發展的最初，有人稱讚以太坊的科技創新，但也有人質疑其安全和可擴展性。

開發計畫分為四個階段：邊境（Frontier，也有「前鋒」的意思）、家園（Homestead）、都會（Metropolis）、寧靜（Serenity）。

### 邊境（2015 年）

以太坊的公共區塊鏈在 2015 年 7 月 30 日啟動，最初的版本稱為「邊境」，用的是工作量證明（proof-of-work）的演算法，但未來預期會轉換成權益證明（proof-of-stake）。啟用後不久進行了第一次分叉，調整未來挖礦的難度，確保未來的使用者會有轉換至權益證明的動機。邊境最初只能挖礦，主要功能是讓使用者有時間加入以太鏈，過了幾天後才能交易和使用智慧型合約。

### 家園（2016 年）

2016 年春季進行了第二次分叉，釋出了第一個穩定版本，稱作「家園」（Homestead）。

2016 年六月，以太坊上的一個去中心化自治組織 The DAO 被駭，造成市值五千萬美元的以太幣被移動到只有該駭客可以控制的「分身 DAO」。因為程式不允許駭客立即提取這些以太幣，以太坊使用者有時間討論如何處理此事，考慮的方案包括取回以太幣和關閉 DAO，而 DAO 去中心化的本質也表示沒有中央權力可以立即反應，而需要使用者的共識。最後在 2016 年 7 月 20 日，以太坊進行硬分叉，作出一個向後不相容的改變，讓所有的以太幣（包括被移動的）回歸原處，而不接受此改變的區塊鏈則成為以太坊經典。這是第一次有主流區塊鏈為了補償投資人，而透過分叉來更動交易記錄。

在分叉以前就持有以太幣的人會同時持有以太幣和以太幣經典（Classic Ether, ETC），存在交易所或線上錢包中的以太幣也不例外。這些線上服務大多選擇只支援其中一種以太幣，並讓使用者領回另一種以太幣。在這次分叉之後，造成了在兩個區塊鏈之間進行重放攻擊的可能，加上其他網路攻擊，讓以太坊和以太坊經典又各自進行了數次分叉來避免攻擊。其中 2016 年 11 月底的分叉因為溝通疏失，短暫造成以太坊的兩個主要使用者端程式 Parity 和 Geth 失去共識而產生意外的分叉，但問題在數小時內即被找出並修正。

### 都會（2017~2019 年）

「都會」的開發遇到許多延遲，升級分成了三次分叉，2017 年 10 月的「拜占庭」、2019 年 2 月的「君士坦丁堡」和「聖彼德堡」、以及 2019 年 12 月的「伊斯坦堡」。這些升級主要改善智慧型合約的編寫、提高安全性、加入難度炸彈以及一些核心架構的修改，以協助未來從工作量證明轉至權益證明。安全性升級包括讓以太坊可以使用零知識證明的 zk-SNARKs 和 zk-STARKs，也能和 Zcash 鏈互通。

在使用方面，2017 年以太坊和比特幣首次進行了原子交換（atomic swap），用智慧型合約讓不同鏈上的加密貨幣互相交易。ERC-20 也在 2017 年成為標準，成千上萬個專案透過以此進行集資，稱作「首次代幣發行」（Initial Coin Offering, ICO）。2019 年 DeFi 和 MakerDAO 等金融商品成為以太鏈上最大的產業。三星手機、Opera 瀏覽器以及微軟都開發了以太坊的相關程式。

在以太幣的價格方面，2017 年從年初的 10 美金開始暴漲，至 2018 年初漲到 1400 美元。然而在 2018 年，人們對區塊鏈的熱潮慢慢退卻，至年底價格又跌至 85 美元。

### 寧靜（2020~ 至今）

「寧靜」又稱為「以太坊 2.0」，主要目標是轉換至權益證明，並開發第二層擴容方案。分成三階段升級：柏林、倫敦、以及雙鏈合併。在完成雙鏈合併後（Merge），則有五個階段：涌升（Surge）、禍害（Scourge）、邊界（Verge）、清除（Purge）、揮霍（Splurge）。

權益證明所需的信標鏈在 2020 年 12 月 1 日上線，並允許權益證明的抵押，但尚不能提領。至 2021 年 11 月，已有 8 百萬以太幣加入權益證明的抵押，約佔總發行量的 7%。2021 年進行了柏林和倫敦分叉，並升級了信標鏈，為未來轉換至權益證明作準備，並透過銷毀手續費和降低區塊獎勵的方式控制總發行量。

2022 年 9 月 15 日，以太坊合併完成，主網與 PoS 共識層信標鏈（Beacon 鏈）結合、將此前 PoW 工作量證明機制轉變為 PoS 權益證明機制，宣布以太坊正式進入 2.0 時代。此舉意味著，以太坊將告別大規模礦機挖礦時代，持有者通過質押以太坊代幣（ETH）即可挖礦，質押門檻為 32 個 ETH。

## 以太幣

以太坊區塊鏈上的代幣稱為以太幣（Ether），代碼為 ETH，可在許多加密貨幣的外匯市場上交易，它也是以太坊上用來支付交易手續費和運算服務的媒介 。以太幣的總發行量不明，因為權益證明的具體運作方式仍在研究中，而雖然難度炸彈限制了工作量證明的挖礦的區塊數量上限，但因為叔塊也有獎勵，而且叔塊的數量並不一定，造成確切數量難以估算。

以太幣對其他實體貨幣的匯率可能在短時間內大幅變化，例如 2016 年 The DAO 被駭時，對美元的匯率從 $21.50 跌至 $15，而 2017 年初到 2018 年初的的一年間從大約 10 美金漲到 1400 美元。

布特林在 2016 年 4 月售出手上持有的四分之一以太幣，造成一些人質疑，而他本人則說這是理財上很合理的分散風險，並參照前比特幣開發員 Gavin Andresen 說這一切都還只是一場實驗，仍有失敗的可能。

## 智慧型合約

以太坊最重要的技術貢獻就是智慧型合約。智慧型合約是儲存在區塊鏈上的程式，可以協助和驗證合約的談判和執行。以太坊的智慧型合約可以數種用圖靈完備的程式語言寫成。紐約時報稱以太坊平臺是一台由眾多使用者構成的網路來運轉的公用電腦，並用以太幣來分配和支付這台電腦的使用權。經濟學人則說明智慧型合約可以讓眾多組織的資料庫得以用低廉的成本互動，並且讓使用者寫下精密的合約，功能之一是產生去中心化自治組織，也就是一間只是由以太坊合約構成的虛擬公司。

因為合約內容公開，合約可以證明其宣稱的功能是真實的，例如虛擬賭場可以證明它是公平的。另一方面，合約的公開性也表示如果合約中有漏洞，任何人都可以立刻看到，而修正程式可能會需要一些時間。The DAO 就是一個例子，無法即時阻止。

智慧型合約的許多細節仍在研究中，包括如何驗證合約的功能。微軟研究院的報告指出要寫出完善的合約可能非常困難，討論了微軟開發的一些可以用來驗證合約的工具，並提到如果大規模分析各個已發佈的合約，可能發現找出大量的漏洞。報告也說可以證明 Solidity 程式和以太虛擬機編碼的等同性。

### 程式語言

Gavin Wood 寫的《以太坊黃皮書》中定義了以太虛擬機的運作流程。智慧型合約可以專門為此開發的 Solidity 程式語言寫成，或是 Python 的一個變體 Serpent，或是 LLL。以太虛擬機也可以在 Mutan 上運行。智慧型合約之後會編譯成位元組碼，然後發佈在以太坊區塊鏈上。

### 運行效率

將所有合約存在區塊鏈上每個結點的作法有好有壞。主要的缺點是所有的結點都同時要運算所有的合約，因此速度較慢。開發人員正研究將資料切分（Sharding）的技術套用至以太坊。2016 年 9 月布特林發表了改善可擴展性的企畫。截至 2016 年 1 月，以太坊每秒可以處理 25 個交易。

## 實作

智慧型合約的潛在應用很多。彭博社商業週刊稱它是「所有人共享但無法篡改的軟體」。更高階的軟體有可能用以太坊建立網路商店。

### 區塊鏈程式

以太坊可以用來建立去中心化的程式、自治組織和智慧型合約，據紐約時報的報導，在 2016 年 5 月已經有數十個可用的程式。預期的應用目標涵蓋金融、物聯網、農田到餐桌（farm-to-table）、智慧型電網、體育賭博等。去中心化自治組織有潛力讓許多原本無法執行或成本過高的營運模型成為可能。目前較知名的應用有：

* 遊戲：CryptoKitties 讓玩家繁殖及交易虛擬貓。
* 類龐氏騙局的賭局遊戲：Fomo 3D，不同於傳統的龐氏騙局，最後一位加入賭局中的人可獲得總資金盤中的 48%
* 虛擬寶物交易平臺：FreeMyVunk。
* 去中心化創業投資：The DAO 用以太幣資金創立，目標是為商企業和非營利機構建立新的去中心化營業模式、The Rudimental 讓獨立藝術家在區塊鏈上進行群眾募資。
* 社會經濟平臺：Backfeed。
* 去中心化預測市場：Augur。
* 物聯網：Ethcore（一間以太坊公司）研發的客戶端、Chronicled（一間區塊鏈公司）發表了以太坊區塊鏈的實物資產驗證平臺；晶片公司、物理 IP 建立者和生產者可以用植入的藍牙或近場通訊進行驗證。Slock.It 開發的智慧型鎖可以在付費後自動開啟，讓使用者在付費後可以幫電動車充電、或是打開租屋的房門。
* 著作權授權：Ujo Music 平臺讓創作人用智慧型合約發佈音樂，消費者可以直接付費給創作人。伊莫珍・希普用此平臺發布了一首單曲。
* 智慧型電網：TransActive Grid 讓使用者可以和鄰居買賣能源。
* 去中心化期權市場：Etheropt。
* 釘住匯率的代幣：DigixDAO 提供與黃金掛鉤的代幣，在 2016 年四月正式營運。Decentralized Capital 提供和各種貨幣掛鉤的代幣。
* 行動支付：Everex 讓移工匯款回家鄉。

### 客戶端軟體

以太坊的 2 個主要的客戶端軟體是 Geth 和 Parity。

#### 企業軟體

企業軟體公司也正測試用以太坊作為各種用途。已知有興趣的公司包括微軟、IBM、摩根大通。

* 德勤和 ConsenSys 在 2016 年宣佈成立數位銀行 Project ConsenSys。
* R3 公司在 Microsoft Azure 上執行私人以太坊區塊鏈，將 11 間銀行連接至一本分散式帳薄（distributed ledger）。
* Microsoft Visual Studio 提供程式開發者使用 Solidity 程式語言。
* 英國政府中負責推動創新的機構 Innovate UK 提供了近 25 萬英鎊給 Tramonex 用以太坊發展跨國支付系統。

### 認許制記帳

目前有許多方案正在研究使用以太坊建立認許制的區塊鏈。

* 摩根大通打算用以太坊上建立一個私人區塊鏈「Quorum」。其功能是洗亂衍生性金融產品及其交易紀錄來保護交易者的隱私，但同時符合金融管制單位在資訊公開上的要求，以期在保障隱私和資訊公開之間找到平衡。
* 蘇格蘭皇家銀行用以太坊的分散式記帳和智慧型合約平臺建立了一個結算交割機制（Clearing and Settlement Mechanism, CSM），可以達成每秒 100 筆交易、類比六間銀行，平均每個 trip 在 3 到 8 秒間完成，這些數值用在於全國的支付系統是可接受的。

## 採用

2016 年五月，紐約時報指出以太坊的採用仍在初期階段，並可能遇到讓成長率減緩的技術或法律問題。許多比特幣支持者認為以太坊比比特幣複雜，所以可能需要面對更多的安全問題。報導也指出這個系統複雜到熟知這個系統的人也很難用普通人的語言來描述它。

微軟和 ConsenSys 合作，在 Microsoft Azure 上提供第三方開發的區塊鏈工具，包括交易股票和跨境支付等用途。

盧森堡交易所在 2016 年 10 月開始提供用以太坊產生的數位簽章來證明檔案的真實性。

新加坡金融管理局使用以太坊將新加坡元數位化。

## 交易以外的用途

因區塊鏈技術難以刪改資料的特質，部分人會運用加密貨幣上傳資料以免被他人刪改。
2018 年 4 月，在北大岳昕事件中，有使用者把岳昕的公開信上載到以太坊的交易記錄，以免被校方刪除。

2019 年 6 月，部分香港警察的個人資料被示威者上載到以太坊的交易記錄，令有關當局難以追查上載者身分及刪除資料。 。

## 參考資料

## 參見

* 加密電子貨幣列表

## 外部連結

* 官方網站
* 以太坊黃皮書（英文） - 加文・伍德
* 以太坊白皮書（中文）