原文標題:
原文標題:二級標題
原文標題:
一級標題
一級標題
概況
概況
一級標題概況二級標題
此頁面
二級標題
二級標題
DAO 分叉
DAO 分叉
二級標題代表性硬分叉解讀DAO 分叉
DAO 分叉
決定攻擊將這部分資金轉移到新的智能合約,允許投資者提款。此次分叉產生了Ethereum Classic,也引發了大量的社會爭論。
攻擊
根據
根據,造成了拒絕服務(DOS)。由於EXTCODESIZE 操作碼所消耗的實際系統資源遠高於攻擊者所需支付的手續費,攻擊者反複調用該操作碼,造成全網大多數節點無法追上最新區塊。開發者們一面協調礦池和全節點啟用受影響較小的Parity 客戶端,一面協商降低區塊gas(從5 M 降低至1.5 M)。最終,借助Tangerine Whistle 和Spurious Dragon 兩次硬分叉調整了相關操作碼的價格,並做了狀態清理,才緩解了DOS 攻擊的影響。這次硬分叉還帶來了後續影響,由於對EIP-161(納入在Spurious Dragon 中)的實現不當(Go-ethereum 和Parity 各自錯誤地做了實現),造成了共識分叉。雙堡奇兵根據根據
ChainSecurity 的報告
,EIP-1283 會為部分合約引入重入攻擊的風險。 TrailOfBits 給出了更詳盡的分析並提供了可能受影響的合約列表。在硬分叉激活前32 小時,以太坊基金會發文提醒節點升級或降級以推遲君士坦丁堡升級,隨後發布新版本引入彼得堡硬分叉,客戶端需要將「雙堡」配置在同一塊高或禁用君士坦丁堡硬分叉。
拆彈危機
為什麼Muir Glacier 和Istanbul 兩次硬分叉之間只有26 天,這是因為核心開發者們錯誤計算了難度炸彈的爆炸時間,導致在Istanbul 中未納入推遲難度炸彈的提案。等到發現難度炸彈即將要對網絡產生影響時,
第76 次核心開發者會議EIP-1679硬分叉決策流程變更
Martin Holst Swende 提出了硬分叉是如何決定的?實際上以太坊長期缺少成文文檔,更多依賴「社會共識」(如果我錯了請改正)。 EIP-233 試圖規範分叉的正式流程,但並未被接受。定義(簡稱HFM-1679)。HFM-2070,而是Martin Holst Swende 提出了EIP 為中心的硬分叉流程
,其核心觀點是將EIP 的接受與硬分叉剝離,核心開發者聚焦於單個EIP 的認可、實現和測試,當單個EIP 被接受後,後續的硬分叉可選擇納入該EIP。儘管在寫作過程中尚未找到該流程是如何被以太坊核心開發者接受的,但是Berlin 硬分叉棄用了,而是》
移除EIP-2315:以太坊柏林昇級前的緊急剎車
研究報告研究報告。
EIP 深入分析
不是改變的改變
研究報告
研究報告
EIP 深入分析
這些EIP 對以太坊究竟造成了什麼影響,又是誰影響著以太坊的決策呢。本文整理了以太坊硬分叉中納入的所有EIP(不包含元提案),詳見鏈接。
EIP 都在做什麼
納入硬分叉的EIP 的類型主要包含計費模型變更、新操作碼引入、難度炸彈、經濟模型、預編譯、安全考慮等。
計費模型變更
計費模型變更是數量最多的EIP,共有10 個,佔25.6%。其通過增減操作碼的單價,以平衡gas 消耗和實際佔用系統資源的不匹配,可消除系統被DOS 攻擊的隱患,或是有利於特定類型應用的部署。一部分DOS 隱患是因為對系統資源的錯誤估計造成的,EIP-150 和EIP-160 解決了這個問題;而另一部分DOS 隱患則是系統的固有特性,伴隨著狀態數據增長,訪問狀態數據的實際資源消耗也隨之增長,因此需要定期調整相應操作碼的單價,典型的有EIP-1884(我認為寫得最好的EIP 之一)。
共有9 個EIP 為以太坊虛擬機引入了新的操作碼(不含EIP-1884),佔23.08 % 。其中比較有影響力的包括EIP-7 (DELEGATECALL), EIP-1014(CREATE2), EIP-3198(BASEFEE) 等。經濟模型。
經濟模型
難度炸彈
共有6 個EIP 在推遲難度炸彈,佔15.4 % 。有2 次硬分叉伴隨著經濟模型的調整,即降低新區塊獎勵。其中有3 次僅為了推遲難度炸彈而實施的分叉,即名字中帶有Glacier 的硬分叉。有關難度炸彈的歷史,可見
經濟模型
預編譯
其它
其它
有4 個EIP 將一些密碼學操作預編譯,因此無需在EVM 中執行,提昇運行效率。包括EIP-152, EIP-196, EIP-197, EIP-198。
安全考慮
其它
共有43 人,77 人次參與了這些EIP 的撰寫,其中參與2 個以上(含) EIP 的作者有11 個。 Vitalik Buterin 參與撰寫的最多,共17 個,佔43.6 %。 Martin Swende 和Christian Reitwiessner 各參與5 個,Alex Beregszaszi 和James Hancock 各參與3 個,其餘人參與的個數均不超過2 個。
總結
總結
Martin Swende 是以太坊基金會安全負責人,Go-ethereum 工程師,EIP 為中心的硬分叉流程的提出者;Christian Reitwiessner 是Solidity 語言的發明者。
總結
一級標題
https://github.com/ethereum/execution-specs
https://www.ethereum.cn/the-history-of-ethereum-hard-forks
https://etherscan.io/chart/gaslimit
https://github.com/ethereum/go-ethereum/pull/3341/files#r89548312
https://blog.ethereum.org/2019/01/15/security-alert-ethereum-constantinople-postponement
https://ethereum-magicians.org/t/hardfork-meta-eip-2070-berlin-discussion/3561
https://notes.ethereum.org/@holiman/S1ELAYY7S?type=view
總結
本文介紹了以太坊歷史上的歷次硬分叉,解讀了幾次硬分叉背後的代表性事件,並詳細描述了以太坊硬分叉決策流程向EIP 為中心的轉變。文章還深入分析了歷次硬分叉中的EIP 所發揮的作用以及他們背後的貢獻者。


