什麼是以太坊

mindcarver發表於2020-10-11

文章以及資料(開源):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。

擴充套件閱讀

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

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

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

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

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

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

《深入理解以太坊》

相關文章