Skip to content

Latest commit

 

History

History
118 lines (78 loc) · 3.64 KB

JC13043DB.md

File metadata and controls

118 lines (78 loc) · 3.64 KB
timezone
Asia/Shanghai

{Jimmy Ou}

  1. 自我介绍 我是 Jimmy Ou,現職嵌入式系統開發。對區塊鏈技術充滿興趣,特別希望能深入學習 Ethereum 的底層技術架構。
  2. 你认为你会完成本次残酷学习吗? 會的

Notes

2025.02.06

看完 week0

學習
1.Merkle tree
2.P2P Network
3.Distributed Systems


Merkle Tree 可以將檔案分成多個區塊。然後逐個下載/檢查。

在這種情況下,您的來源將為您提供一個稱為 Merkle Root 的雜湊。這個單一雜湊即構成檔案的每個資料區塊。但 Merkle Root 使驗證資料變得更加容易。 為簡單起見,假設我們使用 8GB 的檔案來分成八個區塊。叫用不同的片段 A 到 H。每個片段隨後傳遞一個雜湊函數,得到八個不同的雜湊。

image

將8個雜湊進行組合,然後將其雜湊在一起。得到雜湊 hA + hB、hC + hD、hE + hF 和 hG + hH。最終得到四個雜湊值。我們隨後對這些進行另一輪雜湊處理,最終得到兩個。最後,我們對剩下的兩個進行雜湊處理以獲得主雜湊 – Merkle Root

image

一種方便的方法可以讓我們檢查哪個片段有問題,假設是 hE區塊資料被竄改。

檢查流程如下: Merkle Root Hash --> hABCD,hEFGH --> hEF,hGH --> hE,hF -->hE

找到hE區塊異常後再重新下載區塊

2025.02.07

請假

2025.02.08

請假

2025.02.09

學習 Kademlia分散式哈希表

閱讀week1相關資料

Unix哲学:

簡單性
模塊化
程序只做好一件事
程序應該能協同工作

Ethereum繼承了Unix哲學提出設計原則
1.簡潔性:保持设计肩擔明了
2.普遍性:系统應該保持通用
3.模塊化:组件可以獨立工作
4.非歧視:系统對所有用戶一視同仁
5.敏捷性:能够適應變化

相關資料

  1. Inevitable Ethereum - World Computer
  2. Ethereum in 30 minutes
  3. Ethereum.org docs(資料太多只看了一小部份)
  4. Asymmetric cryptography

2025.02.10

學習Kademlia分散式雜湊表

觀看 Week2 Ethereum Execution Layer Overview影片(看到一半)

STF(State Transition Function)

1.用來驗證新的區塊是否符合規範
2.驗證通過時更新狀態 \

verifyHeader 驗證區塊標頭

1.Extra 不超過 32 bytes
2.Nonce 符合共識機制規則
3.UncleHash 必須是 EmptyUncleHash
4.時間戳 , 必須 大於 parent.Time
5.Difficulty header.Difficulty 必須與 beaconDifficulty 相等
6.GasLimit header.GasLimit 不能超過 params.MaxGasLimit
7.GasUsed header.GasUsed 不能超過 header.GasLimit \

newPayload 用來檢查區塊是否有效

build 負責區塊構建

1.從交易池中選擇交易,執行並驗證
2.確保交易不超過 Gas 限制,並持續處理直到交易池為空或達到 Gas 限制
3.最後透過 core.Finalize() 產生新區塊 \

Process 核心部分, 執行區塊內的所有交易,並將結果寫入 statedb

1.驗證區塊基本資訊
2.初始化 Gas 池(GasPool)
3.執行 DAO 硬分叉邏輯
4.建立 EVM 虛擬機,準備執行智能合約 \

TransitionDb 處理交易的狀態轉換,確保交易符合以太坊的共識規則,否則拒絕執行

1.preCheck 負責交易的 基本驗證,確保交易符合共識規則
2.Tracing (交易追蹤) 用於記錄 Gas 消耗,幫助調試 \