Etherlink: road to Mainnet
This meta-milestone centralizes the Tezos core development efforts in producing the first ever EVM solution on Tezos, relying on smart rollups: Etherlink. It can be seen as a continuation of %EVM on 2023Q4: the EVM Rollup MVP is safe and ready for low latency.
When starting this milestone, Tezos already enjoyed a strong smart rollup infrastructure used to run an already existing EVM kernel node with no sequencers, meaning that Etherlink's observable latency for a user is that of Tezos layer 1.
We are now targeting a first version of a finished product that will be deployed on Mainnet, where the user experience must be as smooth as possible so as to attract activity.
Thus, we direct our work on three main topics:
-
%Etherlink: EVM compatibility so that Etherlink supports most, and hopefully all Ethereum dApp toolchains; - %Etherlink: sequencers to provide an excellent latency, which is expected by a large portion of the EVM community;
- %Etherlink: releases and operations to build a release plan (Ghostnet and Mainnet);
-
%Etherlink: stabilization for stabilization work.
- Reviewing the whole tick model has its dedicated milestone: %Etherlink: tick model hardening.
In particular, we're working on closing all the tasks needed for the Beta rollout: #7032 (closed).
Also, this milestone is used as a backlog for low-priority issues and requests we probably won't tackle before Mainnet launch:
-
#6766 (closed): resume experiments to use
revm
instead ofSputnik
as a backend. -
#6820: migrate test scenarios to
tezos/tezos
. -
#6830: low gas for the
blake2f
precompiled contract. - #6886 (closed): refactor and cleanup.
- Implement warm/cold storage accesses that are behind a feature flag right now (!11729 (merged)).
- Implement gas refunds on
SELFDESTRUCT
andSSTORE
(EIP-3529). -
Add Tezt tests for the net_version
,eth_blockNumber
,eth_getCode
andeth_getTransactionByHash
RPCs: !12121 (merged).- Very low priority, since these RPCs are already supported, as show the commands below whose results are all OK.
curl -i -X POST -H 'Content-Type: application/json' --data '{"jsonrpc":"2.0","method":"net_version"}' http:/node.ghostnet.etherlink.com curl -i -X POST -H 'Content-Type: application/json' --data '{"jsonrpc":"2.0","method":"eth_blockNumber"}' http:/node.ghostnet.etherlink.com curl -i -X POST -H 'Content-Type: application/json' --data '{"jsonrpc":"2.0","method":"eth_getCode","params":["0xB1Ea698633d57705e93b0E40c1077d46CD6A51d8","latest"]}' http:/node.ghostnet.etherlink.com curl -i -X POST -H 'Content-Type: application/json' --data '{"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["0x8bfc8164c3a7c20d0a0b4f8f4c6331f864d05703cc64c2c06db987aba9784246"]}' http:/node.ghostnet.etherlink.com
- Very low priority, since these RPCs are already supported, as show the commands below whose results are all OK.
- Add a block not found error for
eth_getBlockByHash
. As of writing, it fails with aEvm_node_lib_dev.Durable_storage.Make(Reader).Invalid_block_structure(\"Couldn't decode bytes\")
error. (eth_getBlockByNumber
correctly fails withEvm_node_lib_dev.Durable_storage.Make(Reader).Invalid_block_index
.)$ curl -i -X POST -H 'Content-Type: application/json' --data '{"jsonrpc":"2.0","method":"eth_getBlockByHash","params":["0x0b48350376875e05fc87c3635fa6b57be2f10f72fe22973c5b36580097c239df",false]}' http:/node.ghostnet.etherlink.com [...] [{"kind":"temporary","id":"failure","msg":"Evm_node_lib_dev.Durable_storage.Make(Reader).Invalid_block_structure(\"Couldn't decode bytes\")"}]
- Test and document in the validation plan all the supported EIPs officially declared along Ethereum versions.
- Fix the RLP encoding for options: #6969, #6981.
- Low priority with regards to the Beta rollout, as the encoding is not exposed to users.
- Reimburse freed storage space.
-
Refine error messages when reverting (#7027 (closed)). - Fix the error when a called method does not exist: right now it either returns a gas estimation error or plainly crashes. (Example: when interfacing an OFTV2 token with a V1 endpoint.)
- Support the
debug_traceTransaction
RPC. - Support the Dencun Ethereum amendment.
-
EVM transactions posted through Delayed Inbox should not pay da-fee (!12401 (merged)). -
eth_getBlockByNumber
does not have abaseFeePerGas
field in the result. This may be why Etherlink is not seen as EIP-1559 compatible by some tools.- It's not specified in the official developers' API, but it is in the official execution API
😕 - Can be a good reason to introduce encoding versions.
- More generally, we should have a look at the official execution API to check that we're compatible with it (
maxPriorityFeePerGas
and other missing fields for EIP-1559 for instance).
- It's not specified in the official developers' API, but it is in the official execution API
- More can be found in %Etherlink: Backlog.