什麼是以太坊

文章以及資料(開源):github地址

定義

以太坊(英語:Ethereum)是一個開源的有智能合約功能的公共區塊鏈平台。通過其專用加密貨幣以太幣(Ether,又稱「以太幣」)提供去中心化的虛擬機(稱為「以太虛擬機」Ethereum Virtual Machine)來處理點對點合約。

特點

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

  • 智能合約(smart contract):存儲在區塊鏈上的程序,由各節點運行,需要運行程序的人支付手續費給節點的礦工或權益人。
  • 分佈式應用程序:以太坊上的分佈式應用程序不會停機,也不能被關掉。
  • 代幣(tokens):智能合約可以創造代幣供分佈式應用程序使用。分佈式應用程序的代幣化讓用戶、投資者以及管理者的利益一致。代幣也可以用來進行首次代幣發行。
  • 叔塊(uncle block):將因為速度較慢而未及時被收入母鏈的較短區塊鏈併入,以提升交易量。使用的是有向無環圖的相關技術。
  • 權益證明(proof-of-stake):相較於工作量證明更有效率,可節省大量在挖礦時浪費的電腦資源,並避免特殊應用集成電路造成網絡中心化。(測試中)

第二層功能

除了在主鏈上運行的各種功能,為了支持智能合約所需的高運算量以及資料容量,以太坊也積極開發第二層功能來減輕主鏈的負擔,擴展其實用規模。目前的主要方案包括以下:

  • 支鏈:用較小的分支區塊鏈運算,只將最後結果寫入主鏈,可提升供單位時間的工作量。
    • Plasma支鏈:2020年6月起由OMG測試中
    • Rollup支鏈:2019年開發團隊將重心由Plasma轉移至Rollup,目前正在開發中
  • 狀態通道(state channels):原理類似比特幣的閃雷網絡,可提升交易速度、降低區塊鏈的負擔,並提高可擴展性。尚未實現,開發團隊包括雷電網絡(Raiden Network)和移動性網絡(Liquidity Network)
  • 分片(sharding):減少每個節點所需紀錄的資料量,並透過平行運算提升效率(尚未實現)

以太幣

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

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

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

智能合約

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

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

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

以太坊組件

p2p網絡

以太坊運行在Ethereum Main Network上,這是一個通過TCP 30303端口尋址的網絡,網絡層運行的協議名為-D ΞVp2p

共識規則

以太坊的共識規則,由以太坊黃皮書(見後文中的「擴展閱讀」)中的參考標準進行精確定義

交易

以太坊交易是一個網絡消息,主要包含交易的發送方、接收方、價值和數據載荷

狀態機

以太坊的狀態轉換由以太坊虛擬機(EVM)處理,這是一個基於棧的虛擬機,執行bytecode(位元組碼指令)。被稱為「智能合約」的EVM程序採用高級語言(例如Solidity)編寫,並編譯為通過EVM執行的位元組碼。

數據結構

以太坊的區塊鏈以數據庫(通常採用Google的LevelDB)的方式保存在每一個節點之上,區塊鏈內包含了交易和系統的狀態,經過哈希處理的數據保存在Merkle Patricia Tree數據結構之內。

經濟安全性

以太坊當前使用名為Ethash的工作量證明算法,這個算法遲早將被放棄,並切換到PoS。

擴展閱讀

以太坊黃皮書://ethereum.github.io/yellowpaper/paper.pdf

黃皮書的簡單版本://github.com/chronaeon/beigepaper

DΞVp2p網絡協議://github.com/ethereum/wiki/wiki/ÐΞVp2p-Wire-Protocol

以太坊虛擬機相關資源://github.com/ethereum/wiki/wiki/Ethereum-Virtual-Machine-(EVM)-Awesome-List

MPT規範://github.com/ethereum/wiki/wiki/Patricia-Tree

casper第一版協議://github.com/ethereum/research/wiki/Casper-Version-1-Implementation-Guide

《深入理解以太坊》