比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > KuCoin > Info

EIP-3855 如何讓合約更精簡_USH

Author:

Time:1900/1/1 0:00:00

前言

本文將深入介紹EthereumOpcode的最新成員:PUSH0

在過去,我們只能使用PUSH10x00來達成將數值0存入EVM的Stack中,而上海升級中包含諸多EIP之一的EIP-3855提案則引入了PUSH0這項新的Opcode來達成相同的效果。透過節省1Byte的指令空間,減少了智能合約編譯后的Bytecode大小,進一步降低智能合約部署的成本。

而本文將會快速地帶到EVM、Bytecode與Opcode的基本概念,并一步一步地帶你了解PUSH0的核心意義和對現有合約的影響。

文章會從EVM、Opcode到PUSH0詳細說明,若您為區塊鏈開發人員,我們可用一句話函蓋整篇文章:

EIP-3855引入新Opcode:PUSH0來取代PUSH10x00,因減少1Byte指令空間,所以減少了部署智能合約的200Gas,所有合約加總一年大約可省1,362.23ETH。

OP Labs:EIP-4844將大幅降低匯總費用:7月30日消息,OP Labs發推表示,EIP-4844將大幅降低匯總費用,使以太坊能夠在不犧牲去中心化的情況下進行擴展。[2022/7/31 2:48:36]

EVM與Opcode概念

在介紹EIP-3855之前,我們先來簡單了解Ethereum中最重要的EVM概念!

EVM

我們為了讓智能合約在獨立且安全的環境中執行,而從Ethereum節點中會切出一塊具有儲存、執行等功能的運算環境,我們將之稱之為EVM虛擬機。

而這個EVM具備執行智能合約所需的堆疊、記憶體、紀錄Gas費用及儲存下一行指令位址等各種必要元件,以便完成開發人員要求的各種計算。

Bytecode與Opcode

我們用Solidity等語言所撰寫的智能合約,要先編譯成一連串EVMOpcode,這一連串Opcode稱為Bytecode。我們接著來進行一段簡單的操作就會比較清楚!

以太坊社區成員:EIP-1559重新被推遲至2022年:7月22日消息,據以太坊社區成員JimmyRagosa發推表示,EIP-1559或被重新推遲至2022年,因為大多數以太坊核心開發人員報告稱還存在大量的問題未解決。7月21日,OpenEthereum客戶端在Ropsten測試網上發現Bug,go-ethereum協議和Geth客戶端會檢查EIP-1559交易的發送方余額,這種方式會被客戶端拒絕,目前已修復。[2021/7/22 1:09:30]

有興趣的讀者可以透過EtherVM了解更多關于Opocde的介紹。

首先,我們先在Remix上編譯下方這份簡易的加法智能合約,編譯完成后就可從artifacts資料夾中看到包含此智能合約Bytecode與Opcode的Json資訊檔。

智能合約在線編譯工具Remix

與此同時,這個智能合約也已部署到Goerli測試網中,我們可點選在Etherscan上的鈕從Bytecode切換到Opcode觀看模式。這時,即可得知一連串Opcode稱為Bytecode。

Stack Funds首席運營官:以太坊漲勢源自EIP 1559升級引起的興奮:金色財經報道,以太坊在周一早些時候升至創紀錄的3201美元,年初至今的漲幅超過330%。對此,Stack Funds首席運營官Matthew Dibb表示,以太坊的融資率保持平穩,今日早些時候在FTX上達到負數。以太坊的現貨漲勢主要是由于即將到來的EIP 1559升級引起的興奮。[2021/5/4 21:21:23]

這里就只截取這份合約部份的Opcode。

部份Bytecode與Opcode對照表

現在我們有了EVM、Bytecode、Opcode的概念后,那EIP-3855到底要改進什么問題呢?

前面的例子中,我們了解到若想要將一個零的值推到Stack中,這個動作會被編譯成「PUSH0x00」(兩個Byte,分別是0x60及0x00,其中0x00代表零的值,所以0x6000整整占了2個Byte的Storage空間!

聚幣Jubi已將2月EIP溢價回購JT全數銷毀:據官方消息,聚幣Jubi已于2021年2月20日完成一月的EIP回購銷毀,總計銷毀718,439.1361 JT。其中二級市場回購592,002.8009 JT,EIP預約回購126,436.3352 JT。所有回購JT(共計718,439.1361 JT)已轉入官方公示銷毀地址(0x0000000000000000000000000000000000000000)并全數銷毀。JT月通縮率達0.781%。

未來,持有更多JT且持幣時間更久的用戶,將有更多機會獲得高溢價的JT回購額度。在聚幣Jubi全新的EIP回購機制下,JT每月回購價定增35%。3月JT回購價為0.4052USDT(2月JT回購價0.3002USDT*135%)。[2021/3/5 18:19:18]

1ByteBytecode空間需要支付200Gas的費用。

另外,執行1個PUSH1的操作需支付3Gas,而PUSH0也是,所以PUSH0主要是減少編譯后的程序碼大小,但實際上執行時的Gas消耗和PUSH1是一樣的。

聲音 | Eric Conner:下周將寫文章解釋關于EIP-1599中礦工小費等問題:EthHub創始人Eric Conner此前提出了EIP-1599,認為這一提案可以 “修復” 當前以太坊手續費市場上的諸多問題。10月24日,Eric Conner發推稱,人們似乎對EIP-1599存在一些疑問,尤其是關于礦工的“小費”。下周將寫一篇FAQ文章來澄清任何疑惑。據悉,EIP-1559主要由三個部分組成:1. 將區塊Gas上限由800萬調整到1600萬;\u20282. 給每個區塊都設定BASEFEE(字面意義為“基本手續費”),在同一區塊中打包的交易都以BASEFEE作為Gas Price;并且,BASEFEE會根據此前區塊的GAS利用率動態調整,如果利用率低于50%,則降低手續費,如果利用率高于50%,則提高手續費;然而,這些手續費并不會交給礦工,而是會被協議銷毀掉;\u20283. 除了由BASEFEE確定的手續費以外,用戶還可以自定義給礦工的小費(tip)。\u2028據Eric解釋,把手續費燃燒掉是為了防止礦工通過發交易來操控BASEFEE。[2019/10/25]

我們來看一下以下關于Push10x00指令在2020年的統計數據:

Push10x00指令占了2020年全年度智能合約Bytecode的4.57%之多,它被如此常用,以致于幾乎所有的智能合約中都可看到它的身影!

這時,如果我們新增一個Opcode來做和PUSH10x00完全一樣的事,是否就可以再減少1個200Gas的空間消耗?

答案是可以的!EIP-3855即將會在這一次的上海升級中在Opcode中引入一條PUSH0新指令,而這個新指令的編號是0x5F!

會選擇0x5F做為PUSH0的原因,除了0x5F在上海升級前沒有被使用外,而且它也剛好是在PUSH1指令的前一個編號!是一個連續且有意義的指令空間。

0x5F及0x60的Opcode指令編號,圖片來源:https://ethervm.io/

EIP-3855帶來的改變

將0x6000指令瘦身至0x5F有一個最重要的改變,就是部署合約時的Gas費用變便宜了!程式碼中每個使用到PUSH10x00的地方都可以因為這個改變而省下200Gas!

那我們一樣以2020全年度使用340,557,331次0x6000指令來計算,大約需耗費340,557,331x200Gas=68,111,466,200Gas。接著若以1Gas需支付20GWei來計算,也就是可以為整個網路省下整整約1,362.23ETH,而且各個Ethereum節點也可省下不少儲存空間。

此外,對于開發人員來說,也可減少使用一些特殊優化手段來減少PUSH10x00的200Gas開銷,例如使用DUP指令等。使用0x5F代表著可減少開發人員進行各種優化成本與風險,也利于估算智能合約的Gas費用。

結論

帶來的改變有以下兩點。

EIP-3855將減少部署智能合約時的Bytecode大小此外,EIP-3855也可減少過去開發人員在進行各種優化上的成本與風險本文介紹了Ethereum的EVM及Opcode的概念,并且深入探討了EIP-3855改進的重要意義與影響。一旦這次的上海升級完成,就可減少開發人員部署合約時所需的儲存空間費用,而EIP-3855提案和新的特性,也將吸引更多的開發者加入到以太坊的生態中。感謝您閱讀本文!

參考資料

中文以太坊虛擬機https://ethereum.org/zh/developers/docs/evm/英文EIP-3855提案https://eips.ethereum.org/EIPS/eip-3855EIP-3855英文討論區https://ethereum-magicians.org/t/eip-3855-push0-instruction/7014EVMCodes列表https://www.evm.codes/EthereumVirtualMachineOpcodeshttps://ethervm.io/PDF-ethereum-evm-illustratedhttps://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf關于EIP-3855常見問題

1、EIP-3855提案通過后是否可提升TPS?

TPS增長量不大,因為實際在主網上部署合約的交易并不多,假設在一個區塊內有10筆部署合約交易的狀況,若每個合約部署只「一次性」省約25個PUSH0,所以TPS可提升的有限。

2、一般Solidity開發人員如何應用此EIP-3855提案?

一般Solidity開發人員要等到上海升級完成才能享受到程式碼大小變小的好處,EIP-3855主要是讓Solidity編譯器將所有PUSH10x00改為PUSH0,以節省空間、減少gas等好處。

2020年「PUSH」系列指令數量統計表

此表格參考EIP-3855中作者之一HugoDelacruz所統計的2020全年度EthereumOpcode數量表格,并進行延伸計算。

表格鏈接:https://mirror.xyz/0x347c9872A2a1dE370D798f9FE96341A9A0E05af8/mmOWhqg5WUkVD54iS210GPcX728x1kz2XZp94mOMtcE

?

Tags:ODECODCODEUSHYODEcode幣的發行價OVCodeMUSH幣

KuCoin
XT.COM關於DBNB淨買入交易大賽活動結束的公告_HTT

尊敬的XT.COM用戶:XT.COM交易所於2023年03月14日07:00-2023年03月28日07:00舉辦的「DBNB淨買入交易大賽」已圓滿結束.

1900/1/1 0:00:00
新的比特幣價格模型預測公平價格至少為 379,823 美元_比特幣

SwanBitcoin的首席投資官RaphaelZagury開發了一種新的BTC定價模型,目前在基本情況下計算出的公允價格為387,823美元.

1900/1/1 0:00:00
VOLT限時福利 , 完成任務瓜分1,500,000,000 VOLT_COI

尊敬的用戶:VOLT將舉辦“限時福利,完成任務瓜分1,500,000,000VOLT”福利活動,參與可獲得VOLT獎勵.

1900/1/1 0:00:00
萬字解析Curve的演進之路:超越代幣設計的協議可持續之道_Curve

原文作者:0xjeremy原文編譯:Sissi,Leia 「前言」 上一輪加密貨幣牛市中,各種項目如繁花般綻放,不斷涌現出新的敘事,如DeFiSummer、XtoEarn等等.

1900/1/1 0:00:00
ETH能否在上海升級前沖上2000美元?該數據集表明……_BET

ETH即將在上海升級,鼓勵更多大宗交易ETH需求旺盛,但拋售壓力和高杠桿率可能會削弱其2000美元的目標據報道,以太坊的區塊鏈在過去兩周內出現了值得注意的大宗交易激增.

1900/1/1 0:00:00
zkSync Era vs. Polygon zkEVM:用數據說話_zkSync

來自Twitter&Coinmarketcap,作者:21Shares研究分析師TomWanOdaily星球日報譯者|MonizkEVM競爭大幕已經拉開.

1900/1/1 0:00:00
ads