3.4 以太坊架構詳解

尹成發表於2018-11-08

1.以太坊總體架構 

  1. 以太坊詳細架構 
    1. 賬戶設計 
      1. 外部賬戶:一般意義上的賬戶
      2. 合約賬戶:它是一種可程式設計的賬戶,合約存在以太坊的區塊鏈上,它是程式碼和資料的集合。合約受程式碼控制並由外部所有賬戶啟用
      3. 在以太坊中,區塊鏈被作為一個通用的管理物件狀態轉換的去中心化平臺,賬戶就是有狀態的物件。外部所有賬戶的狀態就是餘額,而合約賬戶的狀態可以是餘額、程式碼執行情況,以及合約的儲存。以太坊網路的狀態就是所有賬戶的狀態,該狀態由每個區塊的交易來更新,同時需要在全網形成共識。使用者和以太坊的互動需要通過對賬戶的交易來實現。
      4. 以太坊外部賬戶由公、私鑰對定義。地址是公鑰的後20位
      5. 金鑰檔案儲存在以太坊的資料目錄中的keystore目錄下面
      6. 合約賬戶可以執行圖錄完備的計算任務,也可以在合約賬戶之間傳遞訊息,合約編譯成以太坊虛擬機器位元組碼,記錄在區塊鏈上面 。
    2. 區塊鏈設計 
      1. 以太坊區塊鏈的每個區塊不僅儲存著交易清單,還儲存著最新的狀態。
      2. 以太坊的狀態包含了一個鍵值表,鍵是地址(address),值是賬戶裡宣告的所有變數,包括餘額,隨機數,程式碼和賬戶的儲存(儲存也是以一顆樹的形式來組織)
      3. 對於以太坊的Merkel-Patricia樹,鍵被編碼成向下訪問樹的
      4. 在以太坊區塊鏈的區塊報文頭中,存放了3個根雜湊:Merkel根雜湊值,狀態的根雜湊值,收據的根雜湊值
    3. POW機制 
      1. 以太坊的POW演算法叫做Ethash演算法,該演算法主要尋找一個隨機數作為輸入,使得運算結果小於一個特定的難度門檻。
      2. 以太坊通過動態調節難度來達到平均15秒在全網中找到一個新的區塊。每15秒的“心跳”基本上是全網更新系統狀態的節奏,並保證當攻擊者的計算能力不超過全網計算能力的一半時,攻擊者無法改寫交易記錄或進行分叉。
      3. 以太坊的POW中加入了記憶體難度,使得僅僅依靠算力來進行挖礦的方式行不通
      4. 叔區塊:批符合難度條件,但是區塊裡的交易不被確認的區塊。
      5. 每個區塊最多能連結兩個叔區塊
    4. 計算和圖錄完備 
      1. 以太坊的計算環境是圖錄完備的
    5. EVM高階語言 
      1. Solidity
      2. Serpent
      3. LLL
    6. 以太坊P2P網路 
      1. RLPx協議 
        1. 以太坊網路節點間的通訊採用P2P線上協議。節點間採用RLPx編碼及認證的通訊傳輸協議來傳輸訊息包,即提供 傳送和接收訊息的協議功能。
        2. 節點可以自由的在任何TCP商品釋出和接受連線,預設的商品是30303.
        3. 正式版RLPx功能如下: 
          1. 單一協議的UDP節點發現
          2. ECDSA簽名的UDP
          3. 加密握手、認證
          4. 節點永續性
          5. 加密/認證TCP
          6. TCP幀處理
        4. P2P節點採用RLPx的發現協議DHT來實現鄰節點的發現。
        5. RLP(遞迴長度字首):將二進位制的資料進行任意巢狀的陣列編碼。在以太坊中,RLP是對物件編碼的主要方法
      2. Whisper協議 
        1. 它是DAPP之間通訊的通訊協議。
        2. Whisper結合了DHT和資料包訊息系統(如UDP),因此同時具有兩種協議的特性。
        3. Whisper是一個線標誌的訊息系統,提供了一個低層次但又簡易使用的API,不需要記憶底層的硬體屬性。
        4. Whisper提供多索引,非單一的記錄,也就是說同一個記錄可以有多個鍵,不同鍵之間的記錄可能是一樣的
        5. Whisper是為需要大規模的多對多資料發現,訊號談判,最少的傳輸通訊,完全的隱私保護的下一代DAPP而設計的
        6. 使用場景 
          1. DAPP需要把少量的資訊傳送出去,而這些釋出的訊息需要保留相當一段時間
          2. DAPP需要把訊號發給其它的DAPP,希望他們參與對某個交易的協同
          3. DAPP之間需要提供非實時的提示或通訊
          4. DAPP需要提供暗通訊,也就是通訊雙方除了知道對方的雜湊值之外,不知道對方更多的底細。
    7. 事件 
      1. 以太坊中的事件是一個以太坊日誌和事件監測協議的抽象 。
      2. 日誌記錄提供合約的地址
      3. 事件則利用現有的ABI功能來解析日誌記錄

 

相關文章