1.3 以太坊核心技術
1.3.1 智能合約
以太坊是可編程的區塊鏈。它并不是給用戶一系列預先設定好的操作(例如比特幣交易),而是允許用戶按照自己的意愿創建復雜的操作。這樣一來,它就可以作為通用去中心化區塊鏈平臺。20世紀90年代,Nick Szabo首次提出智能合約的理念。由于缺少可信的執行環境,智能合約并沒有被應用到實際產業中。自比特幣誕生后,人們認識到比特幣的底層技術區塊鏈天生可以為智能合約提供可信的執行環境。以太坊首先看到了區塊鏈和智能合約的契合,并致力于成為智能合約的最佳運行平臺。
從技術方面來看,以太坊利用圖靈完備的虛擬機(EVM)實現對任意復雜代碼邏輯(即智能合約)的解析。開發者能夠使用類似JavaScript(Solidity)或Python(Serpent)的語法創建出可以在以太坊虛擬機上運行的應用。結合點對點網絡,每個以太坊節點都運行著虛擬機并執行相同的指令。因此,人們有時也形象地稱以太坊為“世界電腦”。這個貫穿整個以太坊網絡的大規模并行運算并沒有使運算更高效,而是使在以太坊上的運算比在傳統“電腦”上更慢更昂貴。然而,這種架構可以帶給以太坊極強的容錯性,保證區塊鏈上的數據一致、不可篡改。
從應用方面來看,智能合約是一種用計算機語言取代法律語言去記錄條款的合約。如果區塊鏈是一個數據庫,智能合約就是能夠使區塊鏈技術應用到現實當中的應用層。傳統意義上的合同一般與執行合同內容的計算機代碼沒有直接聯系。紙質合同在大多數情況下是被存檔的,而軟件會執行用計算機代碼形式編寫的合同條款。智能合約的潛在好處包括:降低合約簽訂、執行和監管方面的成本;相比其他合約,智能合約可以極大地降低人力成本。
圖1-2就是一個智能合約模型:一段代碼被部署在分布式共享賬本上,它可以維持自己的狀態,控制自己的資產和對接收到的外界信息或者資產進行回應。

圖1-2 智能合約模型示意
1.3.2 PoS
以太坊另一個重要核心技術就是共識算法的改進。比特幣在區塊生成過程中使用了工作量證明(Proof of Work)共識機制,一個符合要求的區塊哈希由N個前導零構成,零的個數取決于網絡的難度值。要得到合理的區塊哈希需要經過大量枚舉計算,計算時間取決于機器的哈希運算速度。在股權證明(Proof of Stake)共識中,驗證人輪流提議新塊并對下一個塊投票,每個驗證人的投票權重取決于其持幣量的大小(即股權)。驗證人為區塊鏈網絡提供出塊服務,網絡也會給驗證人返回獎勵,而且這種獎勵也實現了對攻擊者的經濟制約。
PoS的明確優點包括安全性、降低集權風險和提高能源效率。PoS可以靈活地、明確地設計對拜占庭行為(即不遵循協議)進行的懲罰。這使得協議設計者能夠對網絡中各種行為的不對稱風險和收益回報情況進行更多的控制。提高安全性的另一個方面是增加網絡攻擊的成本,因此具有明確懲罰(可能在比PoW更嚴重的級別上)的能力可以增加網絡的安全性(意即經濟安全)。在PoS權益證明的情況下,一美元就是一美元。這樣的好處是,你不能通過匯集在一起,使得一美元值得更多。你也不能開發或購買專用集成電路(ASIC),從而在技術上占有優勢。所以,PoS不同于PoW挖礦收入的累計分配方式,采用了比例分配(成熟的去中心化的身份管理服務使得按比例分配收益成為可能)。
以太坊要實現的PoS機制被命名為Capser(名字源于20世紀90年代的一部電影《鬼馬小精靈》),它實際上是由以太坊團隊正在積極研究的兩個主要項目組成,即Casper FFG和Casper CBC。雖然是獨立的兩套實現,但它們有著一樣的目標:將以太坊的工作量證明轉到PoS權益證明。
友好的終結工具Casper FFG又名“Vitalik's Casper”,是一種混合PoW / PoS的共識機制,它是以太坊首個通向PoS權益證明的候選方法。更具體地說,FFG在工作量證明(如以太坊的ethash PoW鏈)的基礎上,實施了權益證明。簡單地說,區塊鏈將用熟悉的ethash PoW算法增加區塊,但是每50塊有一個PoS “檢查點”,通過網絡驗證人來評估區塊的最終有效性。
Casper CBC又稱“Vlad's Casper”,與傳統協議設計的方式不同:①協議在開始階段是部分確定的;②其余部分協議以證明能夠滿足所需/必需屬性的方式得到(通常協議被完全定義,然后被測試以滿足所述屬性)。在這種情況下,得出完整協議的一種方法是實現所預計的安全性(一個理想的對手),或者提出合理的錯誤估計,或者列舉潛在的未來錯誤估計。更具體地說,Vlad的工作側重于設計協議,擴展單個節點對安全性估計的局限視角,以實現共識安全性。
退后一步,FFG更側重于通過多步驟過渡為以太網絡引入PoS。通過以一步一步迭代的方式實現,逐步增加PoS在網絡中的作用。相比之下,CBC著重于通過建設得出安全證明的正式方法。盡管令人困惑,但解決這個問題的不同方法創造了兩個不同的工程。Casper的最終形式可能來自對FFG和CBC的互相學習。
- 黑客攻防從入門到精通(實戰秘笈版)
- Web Development with Django Cookbook
- C語言程序設計
- Learning Python Design Patterns(Second Edition)
- Troubleshooting PostgreSQL
- 用Flutter極速構建原生應用
- MySQL數據庫管理與開發(慕課版)
- SSM輕量級框架應用實戰
- Learning Apache Mahout Classification
- Python Data Analysis Cookbook
- Learning JavaScript Data Structures and Algorithms
- PySide 6/PyQt 6快速開發與實戰
- 編程可以很簡單
- Android Studio Cookbook
- Practical GIS