EVM compatibility improvements coming in Zilliqa v9.3.4
The next network upgrade will include several enhancements to EVM compatibility.
The Zilliqa infrastructure team is working to enhance the network’s implementation of EVM compatibility in line with feedback raised by both users and projects building within the community.EVM (Ethereum Virtual Machine) is the software platform used to build applications on Ethereum and other protocols that have implemented EVM compatibility, including Zilliqa.
In line with our infrastructure development strategy, we are enhancing our EVM compatibility implementation to improve the ability to deploy and reliably interact with contracts and transactions on the Zilliqa network.
The next network upgrade, Zilliqa v9.3.4, will include several changes that will improve the development experience on the network, in addition to fixes for specific bugs related to EVM compatibility.
By resolving outstanding issues and delivering a series of improvements to EVM compatibility, the upcoming network upgrade aims to make the process of developing applications and interacting with smart contracts on Zilliqa EVM easier and more reliable than ever before.
Issues to be resolved in Zilliqa v9.3.4
The list of issues that the Zilliqa infrastructure team aims to resolve with the upcoming network upgrade has been made publicly available so users and developers can track the progress being made in real-time.
Each of the bugs listed below includes a link to its corresponding issue on GitHub, and the team aims to fix these in the next network upgrade:
- Issue #3927 - Gas estimation seems to return a low result, causing transactions to revert when they should not.
- Our investigation is ongoing and our team is actively working on reproducing and finding tailored solutions for the gas estimation issues reported by our partners and community members. For those that can be resolved without a full network upgrade, we are exploring potential API improvements. If a change necessitates a full network upgrade, commonly referred to as a hard-fork, this will be implemented with the migration to Zilliqa 2.0.
- Issue #3928 - Log events for EVM transactions are occasionally duplicated.
- This was a cosmetic issue which showed up in the otterscan UI; Zilliqa v9.3.4 will include code changes that remove the duplicate transaction hashes from the list returned by ots_searchTransactionsBefore/ots_searchTransactionAfter.
- Issue #3929 - eth_getTransactionCount() does not support pending block number, making it impossible to submit more than one transaction per block using certain frameworks.
- Zilliqa v9.3.4 will introduce code changes that will result in the nonce also being queried by the mempool in addition to the account state when eth_getTransactionCount is called, returning the greatest between them. This should resolve the issue for the vast majority of cases.
- Issue #3930 - eth_getLogs() eventually stops supplying logs after being regularly called for some time.
- The design of Zilliqa 1 does not allow us to replay transactions, and keeping logs for every transaction, forever, is not practical, so there is a timeout after which logs for a transaction cease to be available. Zilliqa 9.3.4 extends the timeout from 100 blocks to 48 hours.
- Issue #3932 - eth_call() can't execute contract transfer calls.
- This occurred because some tools still use the “input” field when making calls to eth_call(), not “data” . Zilliqa v9.3.4 will now look in “input” if “data” is not specified.
- Issue #3933 - Calling a ZRC-2 contract from a ERC-20 contract results in an incorrect gas estimation as the Scilla gas fees are not accounted for.
- We discovered that the Foundry framework does not utilise the eth_estimateGas RPC method to calculate the necessary gas limit, and its built-in estimations are inadequate for contracts that make use of the EVM <-> Scilla interoperability. This issue lies within the tool itself, not the Zilliqa API. Consequently, there are no relevant fixes available in Zilliqa v9.3.4. Our workaround involves specifying the gas limit in the Forge script parameters using a multiplier of 10x.
In addition to the above, we have received further feedback from the Zilliqa community that will be addressed in more improvements to EVM compatibility delivered by the migration to Zilliqa 2.0.
We are currently aiming to roll out the Zilliqa v9.3.4 network upgrade to mainnet on Monday, May 20th 2024. Note that this is not a full network upgrade or hard-fork, and therefore no action is required by node operators.
Developers can track the public list of issues flagged on the Zilliqa network on the project’s GitHub page.
For the latest updates on the development of Zilliqa, stay tuned to our socials and subscribe to the official blog.