qtumproject / qips

Qtum Improvement Proposals
9 stars 2 forks source link

QIP-7: Upgrade to the Ethereum Constantinople version of EVM #8

Open Earlz opened 5 years ago

Earlz commented 5 years ago

Abstract

This proposal will put Qtum's EVM on the same version as Ethereum's Constantinople version of the EVM

Motivation

Many new features have been added to the EVM from Ethereum. This includes features like dynamic return data sizes and static contract call support. As time goes on, more and more Dapp developers complain about missing features and being required to use non-standard Solidity compiler configurations.

Specification

The new EVM code and all of it's precompiled contracts and other features should be dropped into Qtum. This should not break any backward compatibility.

Rationale

Constantinople is not released yet, but it is best to wait until this later version is released. Forking for Qtum is not something we want to do more often than needed. The version of the EVM for Byzantium has already been integrated into a staging branch of Qtum with minimal difficulty. It is best to wait until Constantinople is released and to see if any bugs or problems happen with the EVM upgrades on that network.

Strategy

This should be implemented in a hard fork

hayeah commented 5 years ago

See: https://github.com/qtumproject/qtum/pull/653

hayeah commented 5 years ago

The version of the EVM for Byzantium has already been integrated into a staging branch of Qtum with minimal difficulty.

Should we consider the Byzantium EVM now that it had been released? One important feature introduced is revert reason

https://eips.ethereum.org/EIPS/eip-140

Without this, it is incredibly painful to debug failed assertions. OpenZeppelin now has support for revert reasons.