Skip to content

Latest commit

 

History

History
395 lines (332 loc) · 18.2 KB

ricky5932TW.md

File metadata and controls

395 lines (332 loc) · 18.2 KB
timezone
UTC+8

请在上边的 timezone 添加你的当地时区(UTC),这会有助于你的打卡状态的自动化更新,如果没有添加,默认为北京时间 UTC+8 时区

你的名字:ricky5932TW

  1. 自我介绍: hello~~
  2. 你认为你会完成本次残酷学习吗?:
  3. 你的联系方式(推荐 Telegram):gmail: ricky5932

Notes

2025.03.10

  • 傳統架構:
    • 傳統互聯網使用集中式 client-server 模型,由中心服務器處理所有請求與數據存儲。
  • 去中心化概念:
    • P2P(點對點)網絡中,節點間互為數據副本,不依賴單一中心,這是區塊鏈去中心化的核心。

以太坊的雙核心架構

執行層 (Execution Layer)

  • 主要功能:
    • 處理交易與智能合約的執行。
    • 更新網絡狀態(如賬戶餘額、合約存儲等)。
    • 管理 Gas 消耗,確保資源合理使用。

共識層 (Consensus Layer)

  • 主要功能:
    • 確保所有節點就哪些區塊合法達成共識。
    • 由傳統 PoW 過渡到 PoS(質押以太坊)機制,提升能效與安全性。
    • 保障網絡的整體安全與容錯性。

節點與客戶端

  • 節點:
    • 運行以太坊軟體的實例,參與網絡的數據傳遞與驗證。
  • 客戶端:
    • 以太坊的實現版本,根據不同需求可運行不同類型的節點:
      • 全節點(Full Node):
        • 下載並驗證所有區塊與狀態,定期修剪歷史狀態,但仍保留大部分數據。
      • 歸檔節點(Archive Node):
        • 從創世區塊開始存儲所有數據,不刪除任何歷史狀態,適合需要查詢完整歷史的應用。
      • 輕節點(Light Node):
        • 僅下載區塊頭,根據需求從全節點獲取詳細數據,資源消耗更低,適合移動設備或嵌入式設備。

技術細節與創新

  • 比特幣 vs. 以太坊:
    • 比特幣的 UTXO 模型難以支持多階段合約和全局規則。
    • 以太坊引入智能合約,支持更複雜的狀態轉換與應用。
  • 以太坊虛擬機 (EVM):
    • 基於堆疊的圖靈完備虛擬機,負責執行智能合約字節碼。
    • 支持跨合約調用與狀態修改。
  • Gas 機制:
    • 每次交易或操作都需要消耗 Gas,防止資源濫用。
    • EIP-1559 改革引入了動態調整的基礎費用與燃燒機制,平衡網絡供需。

區塊與交易結構

  • 賬戶模型:
    • 外部賬戶(EOA):
      • 由私鑰控制,主要用於發起交易。
    • 合約賬戶:
      • 由合約代碼控制,儲存持久化數據。
  • 狀態轉換系統:
    • 交易引起狀態更新,最終以區塊記錄包含狀態根(基於 Merkle Patricia Tree 的哈希)。
  • 應用場景:
    • 支持各種應用,如 DeFi、NFT、DAO、ENS 等,推動生態系統多樣化發展。

2025.03.11

  • 重點:
    本週主要聚焦於以太坊協議的更深入研究,涵蓋了一些進階技術與設計議題,並探討了如何在實際應用中驗證與優化協議運作。
  • 核心方向:
    • 研究方法與實驗環境的建立
    • 合約與網絡層之間交互的測試策略
    • 針對網絡攻擊、延遲及資源調配進行壓力測試

測試與驗證策略

  • EVM 測試方法論:

    • 字節碼級模擬測試:
      利用 EVM 模擬器逐指令調試合約字節碼,觀察每個操作碼的執行情況。
    • Gas 消耗追蹤:
      建立不同操作碼的基準值(例如 SSTORE 操作的 Gas 消耗),以便分析合約效率。
    • 狀態樹對比:
      比較交易前後的狀態根變化,驗證合約執行是否符合預期。
  • 網絡層整合測試:

    • 模擬不同網絡環境(例如高延遲、丟包等)來測試合約在不穩定環境下的行為。
    • 利用主網分叉測試來重現真實鏈上攻擊模式,確保系統能應對各種異常狀況。

攻擊場景與抗 DDoS 測試

  • 真實攻擊模擬:

    • 利用主網分叉,捕捉並重現真實鏈上的攻擊行為。
    • 建立內存泄漏與壓力測試環境,觀察系統長時間運行下的資源變化。
  • 抗 DDoS 架構設計:

    • 節點負載均衡:
      利用動態調整的 P2P 連接池與交易 Gas 優先級隊列來分散流量壓力。
    • 容錯策略:
      設計多層次的網絡故障注入測試,驗證共識算法在面對各種故障(如丟包、延遲激增、網絡分區)時的恢復能力。

    2025.03.12

執行層概覽

  • 主要任務:
    • 執行所有交易的計算與智能合約操作
    • 生成新的區塊並更新整個以太坊網絡的狀態
    • 與共識層緊密合作,確保網絡運行順暢

執行層的核心功能

  • 交易執行:
    • 包括普通的轉賬交易以及智能合約的調用與執行
  • 狀態更新:
    • 每筆交易執行後,更新賬戶餘額、智能合約存儲等網絡狀態
  • Gas 管理:
    • 為每個交易計算所需的 Gas 費用,防止濫用計算資源

執行層的架構組件

  • 交易池:
    • 存放待處理交易的暫存區
    • 交易經過驗證並打包到區塊後,將從交易池中移除
  • 虛擬機 (EVM):
    • 以太坊虛擬機是核心組件,負責執行智能合約字節碼
    • 作為一個圖靈完備的虛擬機,能夠處理各種邏輯計算
  • 區塊生成與確認:
    • 礦工或驗證者根據交易池中的交易生成新的區塊
    • 利用共識協議將生成的區塊添加到鏈上

執行層與共識層的協同工作

  • 執行層負責具體的交易與狀態更新,而共識層則確保所有節點對新增區塊的合法性達成一致
  • 兩者共同保障網絡的安全性、完整性與高效運行

2025.03.13

本週主題概覽

  • 焦點:
    • 探討以太坊開發的實戰環境與工具
    • 從規範設計、客戶端開發到測試、部署流程的完整開發生命週期
  • 目標:
    • 搭建一致性開發環境
    • 理解如何將協議規範轉化為可運行的客戶端程式碼

開發環境設置

  • 工具與框架:
    • 利用官方或社群主流的以太坊客戶端(如 Geth、OpenEthereum 等)
    • 運用 EVM 模擬器(如 Ganache)進行本地合約部署與調試
  • 配置管理:
    • 詳細記錄節點參數、網絡配置與節點間互動的設置
    • 結合 Docker 或其他容器化技術,確保環境一致性

客戶端開發與測試策略

  • 開發實踐:
    • 分析執行層與共識層客戶端的接口與協同運作模式
    • 針對核心模塊進行代碼實作與性能優化
  • 測試流程:
    • 單元測試:
      測試每個功能模組的正確性,確保邏輯無誤
    • 集成測試:
      模擬整個交易流程,驗證從交易池到區塊生成的全鏈路運作
    • 故障注入測試:
      引入網絡延遲、節點失效等異常情況,測試系統的容錯能力

協作與部署流程

  • 開發流程:
    • 從需求分析、設計到實作、測試再到部署的全流程
  • 協作工具:
    • 使用 Git 進行版本控制,利用 Pull Request 流程確保代碼質量
    • 配合 Issue Tracker 與 CI/CD 工具,實現自動化測試與部署
  • 文檔管理:
    • 持續更新技術文檔與 Wiki,促進團隊間知識分享

小結與未來展望

  • 重點回顧:
    • Week 6 聚焦於開發環境搭建、客戶端實作以及全流程測試
    • 開發者需從設計規範到實際部署,全面掌握協議實踐中的各個環節
  • 未來方向:
    • 探索自動化部署與容器化技術,提升運維效率
    • 深入研究分散式系統的監控與故障排除機制

2025.03.14

客戶端優化與調試

  • 性能監控:
    • 分析內存使用、CPU 負載與網絡延遲
    • 設置監控指標,及時識別性能瓶頸
  • 調試策略:
    • 使用進階日誌與追蹤工具定位潛在 bug
    • 整合性能分析工具,針對性地改進關鍵模塊

高級測試與故障注入

  • 壓力測試:
    • 模擬高負載場景,驗證系統穩定性
    • 測試極端情況下的恢復能力
  • 故障注入:
    • 人為創造網絡延遲、節點失效等故障情境
    • 驗證協議和客戶端在異常狀態下的容錯設計

部署流程與持續集成

  • 自動化部署:

    • 利用 CI/CD 工具實現代碼自動測試與部署
    • 確保每次版本更新都經過嚴格的集成測試
  • 版本管理與協作:

    • 使用 Git 及 Pull Request 流程提升團隊協作效率
    • 持續更新技術文檔,促進知識共享

    2025.03.15

自動化部署流程

  • CI/CD 工具:
    • 利用 Jenkins、GitLab CI 等自動化工具,實現代碼提交後的自動構建與測試。
    • 每次版本更新前都通過嚴格的集成測試,確保部署穩定性。
  • 部署策略:
    • 採用藍綠部署或滾動更新方案,以降低升級風險並保證服務不中斷。
    • 建立參數化配置與環境變數管理,確保開發、測試及生產環境的一致性。

環境一致性與容器化

  • 容器技術:

    • 利用 Docker 將應用封裝成標準化鏡像,保證運行環境一致。
    • 結合 Kubernetes 進行容器編排,提高部署效率與擴展性。

    2025.03.16

安全測試與漏洞掃描

  • 自動化安全工具:
    • 集成 Snyk、Trivy 等工具,定期進行自動化安全掃描,檢查代碼和依賴庫的漏洞。
    • 進行動態安全測試,模擬攻擊情境,驗證系統防禦機制是否有效。
  • 安全審核流程:
    • 從代碼提交到部署前,都必須通過多層次的安全審核,確保漏洞及時修補。

系統監控與告警機制

  • 監控系統:

    • 部署 Prometheus 搭配 Grafana,實時監控系統性能、資源使用率及安全指標。
    • 設置異常告警機制,在發現異常時及時通知運維人員,迅速響應。
  • 效能與安全雙保障:

    • 綜合靜態與動態測試結果,不斷優化系統安全策略與資源管理

    2025.03.17

無縫升級方案

  • 版本管理:
    • 使用 Git 與 Pull Request 流程,確保每次代碼更新都經過嚴格審核。
    • 實施版本號管理,並制定詳細的升級計劃和回滾方案,避免部署失誤導致服務中斷。
  • 升級策略:
    • 採用藍綠部署、滾動更新等策略,使系統升級無縫進行。
    • 定期進行壓力測試與故障演練,檢驗升級後系統的容錯能力。

持續改進與技術優化

  • 持續改進:

    • 收集運維數據與用戶反饋,針對性地調整部署與升級策略。
    • 探索微服務架構與分布式部署方案,提升系統的彈性與擴展性。
  • 技術優化:

    • 定期更新安全策略與性能監控指標,保持系統處於最佳狀態。
    • 通過故障注入測試,不斷驗證並優化系統的穩定性與安全性

    2025.03.18

    功能模組化設計

  • 客戶端功能拆分:

    • 根據功能需求將客戶端分割為獨立模組,便於維護與升級
    • 各模組間通過標準化 API 接口進行數據交換,確保系統協同工作
  • 擴展設計策略:

    • 支持插件式架構,允許第三方擴展客戶端功能
    • 模組化設計有助於根據不同應用場景靈活調整客戶端功能

新功能探索

  • 功能創新方向:

    • 針對不同節點角色(全節點、輕節點、歸檔節點)設計專屬功能
    • 引入新的共識算法或協議優化方案,提升交易處理效率
  • 設計挑戰:

    • 確保功能擴展不影響核心協議安全性與穩定性
    • 在擴展性與性能之間取得平衡,滿足大規模網絡需求

    2025.03.19

    性能數據收集

  • 關鍵指標:

    • 監控 CPU 與內存使用率、網絡延遲、交易處理速率
    • 設置日誌與指標數據,實時跟蹤性能變化
  • 工具應用:

    • 結合 Prometheus、Grafana 等監控工具,實現可視化數據展示
    • 利用 APM(應用性能監控)工具定位性能瓶頸 :contentReference[oaicite:1]{index=1}

優化策略

  • 數據驅動優化:

    • 根據監控數據制定針對性優化方案,調整資源分配與流程設計
    • 持續迭代性能測試,確保每次優化都帶來明顯改進
  • 架構調整:

    • 根據數據分析結果,對關鍵模組進行重構與優化
    • 探索分佈式處理與負載均衡技術,提升整體處理能力

    2025.03.20

合測試策略

  • 測試方法:
    • 單元測試: 確保每個功能模組的正確性
    • 集成測試: 模擬模組間協同運作,檢驗整體流程的穩定性
    • 壓力與故障注入測試: 模擬高負載、網絡延遲及節點故障等情境,驗證系統容錯能力
  • 自動化測試工具:
    • 利用 CI/CD 平台整合自動測試流程,及時捕捉與修復問題

實戰案例分享

  • 案例分析:

    • 分享若干典型案例,講解如何從測試數據中發現問題並進行改進
    • 通過實戰案例說明升級前後性能與安全性的變化
  • 經驗總結:

    • 實戰經驗表明,綜合測試與故障注入能顯著提升系統的穩定性與安全性
    • 持續測試與監控是實現高可用系統的關鍵

    2025.03.21

  • 核心重構:

    • 分析現有客戶端架構,識別性能瓶頸
    • 採用模組化設計,對核心邏輯進行重構,降低耦合度
  • 並發與異步設計:

    • 引入多線程/多進程處理,優化並行交易驗證與數據同步
    • 使用異步 I/O 模式,減少阻塞等待時間
  • 資源管理:

    • 通過細緻的資源監控,動態調整緩存策略與內存分配
    • 利用性能分析工具定位瓶頸,持續迭代優化方案

    2025.03.22

    預編譯合約與內建函式

  • 概念介紹:

    • 預編譯合約提供了針對特定加密算法與計算的高效實現
    • 通常內置於客戶端中,用於處理如椭圓曲線簽名、哈希運算等高耗資源操作
  • 優化策略:

    • 利用預編譯合約減少 EVM 執行複雜運算的負擔
    • 持續優化內建函式的算法與實現,確保高性能與低延遲
    • 結合硬件加速技術(如 GPU 或專用 ASIC),進一步提升運算效率

    2025.03.23

    跨層整合策略

  • 整合模式:

    • 針對執行層、共識層以及網絡層制定跨層協同工作模式
    • 建立標準化接口與數據交換協議,實現各層間高效通信
  • 協同優化:

    • 利用整合後的監控與數據分析工具,實時調整系統參數
    • 針對不同層級的瓶頸進行針對性優化,提升整體網絡效能

    2025.03.24

    • 文獻回顧:追溯自由軟體運動及 FOSS 的發展脈絡
    • 案例研究:對比比特幣與以太坊在設計理念上的異同
    • 強調以太坊協議中的執行層與共識層分離,以及其核心技術創新
    • 分析開放、獨立與協作的文化如何推動以太坊生態系統演化

    2025.03.25

    主要研究議題與發現

  • 共識機制分析:

    • 比較 PoW 與 PoS 在安全性、效率上的優缺點
    • 分析驗證者行為對整體網絡穩定性與安全性的影響
  • 性能與擴展性挑戰:

    • 研究交易吞吐量與延遲問題,識別資源利用率瓶頸
    • 探索分片技術和狀態優化策略的實施可行性
  • 安全性測試:

    • 模擬各類攻擊情境,評估協議防禦機制的有效性
    • 測試預編譯合約與內建函式在提高運算效率方面的作用

    2025.03.26

    • 分析以太坊協議核心設計原理
    • 探討性能、安全性與擴展性面臨的挑戰
    • 建立並驗證創新實驗方法,以推動協議進一步優化

    2025.03.27

    隨著以太坊協議的演進,理論模型和數據驗證成為評估系統性能與安全性的重要手段。

    2025.03.28

    在以太坊協議持續擴展的背景下,安全性問題愈發受到關注。測試各種攻擊情境有助於完善防護機制。

    2025.03.29

    隨著區塊鏈技術及以太坊生態的快速發展,新的技術挑戰和創新需求不斷出現。

    2025.03.30

    week10這部分介紹講座的基本背景與準備工作。講座聚焦於以太坊的 fork-choice 策略,即如何選擇最佳鏈條分支,並探討其演變與未來影響。在開始正式內容之前,建議先回顧前幾週的資料,特別是關於共識層(CL)、Beacon Chain 以及以太坊路線圖的相關知識。同時,提前了解 PoS 演進、Gasper 算法以及相關的安全與性能問題,能幫助更好地理解講座中討論的技術細節與挑戰。

    2025.03.31

    • Gasper 算法回顧:
      講座首先對 Gasper 算法進行了回顧,介紹了其基本原理以及在以太坊共識中的角色,同時指出了現有算法中存在的局限和問題。
  • Gasper 的問題與改進方案:
    詳細分析了 Gasper 算法面臨的安全性和效率問題,並探討了可能的修正方向,如如何通過調整算法設計來減少攻擊面和提升性能。

  • Single Slot Finality(SSF):
    介紹了 SSF 的概念與實現思路,說明其如何幫助提高區塊最終性,從而降低鏈重組風險,並改善用戶體驗。

  • Fork-choice 策略對其他升級的影響:
    討論了 fork-choice 策略如何影響以太坊未來的其他升級,例如在 PeerDAS 和 ePBS 案例中的應用,強調了跨層協同的重要性。

    2025.04.01

  • 附加閱讀與實踐:
    講座鼓勵進一步深入閱讀關於 PoS 演進、Gasper 及 SSF 的相關資料,並通過實際案例來理解各種技術改進方案。學習者可以通過觀看相關視頻和實踐演示來加深理解。

  • 實驗與討論:
    參與者可根據講座內容設計一些實驗,比如模擬不同攻擊情境來測試防護措施,或通過數據分析來驗證改進方案的有效性。

  • 未來挑戰與技術創新:
    隨著以太坊技術的持續發展,講座強調需要關注未來的技術挑戰,包括如何在擴展性、安全性和去中心化之間取得平衡,以及如何推動新的共識算法和協同機制的創新。