timezone |
---|
Asia/Shanghai |
- 自我介绍 我是 Jimmy Ou,現職嵌入式系統開發。對區塊鏈技術充滿興趣,特別希望能深入學習 Ethereum 的底層技術架構。
- 你认为你会完成本次残酷学习吗? 會的
看完 week0
學習
1.Merkle tree
2.P2P Network
3.Distributed Systems
Merkle Tree 可以將檔案分成多個區塊。然後逐個下載/檢查。
在這種情況下,您的來源將為您提供一個稱為 Merkle Root 的雜湊。這個單一雜湊即構成檔案的每個資料區塊。但 Merkle Root 使驗證資料變得更加容易。 為簡單起見,假設我們使用 8GB 的檔案來分成八個區塊。叫用不同的片段 A 到 H。每個片段隨後傳遞一個雜湊函數,得到八個不同的雜湊。
將8個雜湊進行組合,然後將其雜湊在一起。得到雜湊 hA + hB、hC + hD、hE + hF 和 hG + hH。最終得到四個雜湊值。我們隨後對這些進行另一輪雜湊處理,最終得到兩個。最後,我們對剩下的兩個進行雜湊處理以獲得主雜湊 – Merkle Root
一種方便的方法可以讓我們檢查哪個片段有問題,假設是 hE區塊資料被竄改。
檢查流程如下: Merkle Root Hash --> hABCD,hEFGH --> hEF,hGH --> hE,hF -->hE
找到hE區塊異常後再重新下載區塊
請假
請假
學習 Kademlia分散式哈希表
閱讀week1相關資料
Unix哲学:
簡單性
模塊化
程序只做好一件事
程序應該能協同工作
Ethereum繼承了Unix哲學提出設計原則
1.簡潔性:保持设计肩擔明了
2.普遍性:系统應該保持通用
3.模塊化:组件可以獨立工作
4.非歧視:系统對所有用戶一視同仁
5.敏捷性:能够適應變化
相關資料
- Inevitable Ethereum - World Computer
- Ethereum in 30 minutes
- Ethereum.org docs(資料太多只看了一小部份)
- Asymmetric cryptography
學習Kademlia分散式雜湊表
觀看 Week2 Ethereum Execution Layer Overview影片(看到一半)
1.用來驗證新的區塊是否符合規範
2.驗證通過時更新狀態 \
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 \
1.從交易池中選擇交易,執行並驗證
2.確保交易不超過 Gas 限制,並持續處理直到交易池為空或達到 Gas 限制
3.最後透過 core.Finalize() 產生新區塊 \
1.驗證區塊基本資訊
2.初始化 Gas 池(GasPool)
3.執行 DAO 硬分叉邏輯
4.建立 EVM 虛擬機,準備執行智能合約 \
1.preCheck 負責交易的 基本驗證,確保交易符合共識規則
2.Tracing (交易追蹤) 用於記錄 Gas 消耗,幫助調試 \