Closed
Milestone Jul 17, 2023–Sep 30, 2023

An upgradable EVM-compatible community rollup is used on Mainnet

Goal

The primary goal of this project is to be able to deploy the EVM rollup on mainnet, with a safe and sound implementation.

Required for MVP

L1/L2 Communication

Target: September 25th

  • Implement the withdrawal in the EVM rollup.
    • Introduce precompiled contract to produce the withdrawals in the L2 ( #6193 (closed))
    • Implement the withdrawal entrypoint in the bridge contract ( #6192 (closed))
    • Add an E2E integration test to deposit and withdraw assets
  • Implement the bridge contract for dailynet.
  • Move from ctez to tez in the bridge
  • Add an entrypoint to the bridge to upgrades, instead of dictator in the L2.
  • Support migration of bridges.
  • Add user documentation on how to deposit and withdraw on the rollup (for dailynet and ghostnet).

Release process

Target: Nothing to be done blocking the MVP

  • Add versioning in the kernel, and runs migration after an upgrade.
  • Changelog are produced for every version.
  • Documentation on how to use the EVM rollup is written.

Gasometer #6091 (closed)

Target: October 2nd

  • Relationship between gas and tick is defined.
  • We have an idea on what should approximately be a good gas limit per block, to cap the number of transactions per block.
  • Additional ticks of kernel’s computations are benchmarked and predictable.

Transaction UX is complete

Target: October 9th

  • Invalid nonces are not pending forever #5959 (closed)
    • Only accept valid nonce !9679 (merged)
    • Only accept valid chainId !9752 (merged)
  • Transaction hash is replaced by the proper implementation #5962 (closed)
  • Logs are supported by the EVM node #5740 (closed)
  • Support all kinds of transactions (not necessarily the specific semantics).
    • Refactoring of EthereumTransactionType !9590 (merged)
    • EIP-2930 support !9555 (merged)
    • EIP-1559 support !9596 (merged)
  • The EVM proxy needs to have a pool of operations:
    • The EVM proxy accept transactions with higher nonces.
    • The batcher has an economic incentive to post the transactions on the L1, i.e. is reimbursed.
    • Transactions can be canceled or speed-up (potentially future work)

Reboot scheduling is safe and sound

Target: October 6th

The following list is more about testing and auditing. Reboot is important, deciding when to reboot and the persistence across reboots is critical.

  • The kernel never goes above the tick limit.
  • The kernel produces the same state when it reboots or not, i.e. rebooting has no impact on transactions.
  • The inbox is persistent across levels, a transaction cannot be lost (in particular deposits).
  • The reboot is stress tested against very high numbers of transactions.

High confidence in EVM compatibility

Target: Unknown

  • The EVM compatibility is tested against reference tests.

Gas model and EVM gasometer

Target: October 15th

These problems needs solution for security/safety:

  • Contract storage cost (when creating new contracts)
  • Refund limit on transactions
  • Upper limit on gas for nested transaction calls (63/64 of current gas)

Backlog (not required for MVP):

  • Refund support for the outcome of run_transaction
  • Refund of cost of durable storage
  • Refund contract storage cost on SELFFDESTRUCT
  • Hot/cold addresses for contract lookup instructions (decides price of lookup)
  • Access list for transactions (what contracts start out as "hot")
  • Price for transaction access list
  • Upgrade SputnikVM version (and primitive_types)
  • Accounting for burned L2XTZ. Count the amount of money spent on transactions
  • Empty address check for contract creation. To make sure we cannot create a contract for an address in use (especially important for CREATE2 instruction)
  • EIP1559 is supported - Fees market
  • Robust EVM node
  • Low-latency sequencer
  • Relationship between gas, tick and time computed on a reference machine to set the gas limit. Also used to pick the reference machine for Etherlink (and users).
  • Benchmarks are run in a CI to keep track of ticks' consumption
  • The EVM rollup infrastructure can be launched with a docker-compose.

Members

  • @picdc
  • @rodibozman
  • @pe.cornilleau
  • @thomas.pecseli
  • @Pilou097
  • @ilya.peresadin
  • @hantang.sun
  • @alocascio
  • Work items 60
  • Merge requests 140
  • Participants 7
  • Labels 15
Loading
Loading
Loading
Loading
100% complete
100%
Start date
Jul 17, 2023
Jul 17
-
Sep 30 2023
Due date
Sep 30, 2023 (Past due)
60
Work items 60 New issue
Open: 0 Closed: 60
1
Total weight
1
140
Merge requests 140
Open: 0 Closed: 15 Merged: 125
0
Releases
None
Reference: tezos/tezos%"An upgradable EVM-compatible community rollup is used on Mainnet"