以太坊虛擬機
區塊 Gas 上限
區塊 gas 上限是單一區塊中所有交易可消耗的 gas 總量上限。如果 gas 衡量運算工作,那區塊 gas 上限就是這個區塊「工作預算」的大小——一旦塞進區塊的交易加總到達上限,就再也裝不下,其餘的只能等未來的區塊。它是最終掌控以太坊吞吐量的旋鈕。
在以太坊主網上,這個上限約為 3,000 萬 gas,而 EIP-1559 的 gas 目標設在其一半(約 1,500 萬),正是基礎費用所導向的水準。驗證者並非被綁在一個固定值上:每個提議者相對於父區塊,至多可把上限上下微調 1/1024(約 0.1%),這個投票機制讓上限能在許多區塊間,漂向驗證者集體所偏好的任何值。這正是社群多年來不靠硬分叉就抬高上限的方式。
這個上限是在三難困境各項相互競爭的好處之間取得平衡。提高它能讓每個區塊容納更多交易,提升吞吐、緩解費用——但較大的區塊在網路上傳播得較慢、執行與驗證的成本較高,並加速每個節點都必須儲存的狀態增長。訂得太高,較弱的節點會落後,網路向少數強大機器集中;訂得太低,費用居高不下、容量被浪費。因此這個上限是一個刻意保守的旋鈕。
由於 gas 衡量的是工作量而非位元組數,區塊 gas 上限一舉限制了好幾樣東西:它同時限制一個區塊能承載多少運算、多少儲存寫入、多少 calldata。這也是何以單一交易永遠不能超過區塊 gas 上限——它必須裝進一個區塊——以及何以極度繁重的操作必須拆分到多筆交易中。
Gas 上限不等於以位元組計的區塊大小。一個塞滿廉價 calldata 的區塊,和一個塞滿昂貴儲存寫入的區塊,可能都觸及相同的 gas 上限,但原始位元組大小卻相差懸殊。
另见