Summary
To define a procedure to implement and maintain as many EIPs as possible on BSC to reduce migration issues and interoperability with other projects, such as bridges and L2s.
Abstract
Over the last year, the blockchain community has definitely become more mature with many projects wishing to go multichain. These include DEXs, games and even node clients. However, while BSC and Ethereum mainly were aligned in terms of EVM behavior, in a couple of recent upgrades Ethereum and BSC have started to diverge significantly, making it very difficult for the projects to easily support the 2 blockchains, especially for the node clients.
In this thread, I would like to discuss the rationale behind transforming BSC as a superset of Ethereum. That is all the EIPs (or as many as possible) will be supported and integrated into BSC and the additional BSC-specific BEPs, will be oriented around providing added value to the community and not breaking the integrated EIPs.
The situation will result in a situation where Ethereum-based projects will be able to easily migrate to BSC, without breaking anything while enjoying the added BEPs implemented exclusively on BSC.
Additionally, there are many infrastructure projects such as bridges and scalability L2s, which become very reliant on specific EIPs. While there may be no breaking changes, the fact that BSC is not backwards compatible with Ethereum forces the projects to undergo extensive regression testing of the whole codebase - a lengthy and expensive endeavor.
Motivation
The main motivation is to reduce migration hurdles for projects and protocols to support BSC. Also, as most of the EIPs are integrated in BSC anyway, as presented in the list below, it’s worthwhile to make the operation as a rule, rather than an optional discussion.
Recent Ethereum Upgrades
Shanghai History and Forks of Ethereum | ethereum.org (everything besides beacon chain related eip-4895)
- EIP-3860: Limit and meter initcode BEP(idea) implement EIP-3860: Limit and meter initcode
- EIP-3855: PUSH0 instruction BEP(idea) implement EIP-3855: PUSH0 instruction
- EIP-6049: “SELFDESTRUCT” phased out BEP(idea) implement EIP-6049: “SELFDESTRUCT” phased out
- Warm COINBASE EIP-3651: Warm COINBASE
London History and Forks of Ethereum | ethereum.org (everything besides Ethereum PoS merge related eip-3554)
- Prevent deploying contracts starting with 0xEF: BEP-228: Prevent deploying contracts starting with 0xEF by Mister-EA · Pull Request #228 · bnb-chain/BEPs · GitHub
- Add BASEFEE opcode: BEP-227: BASEFEE opcode by Mister-EA · Pull Request #227 · bnb-chain/BEPs · GitHub
- Enable EIP-1559 with base fee of 0: BEP-226: Enable EIP-1559 with base fee of 0 by Mister-EA · Pull Request #226 · bnb-chain/BEPs · GitHub
- Reduction in Refunds: BEP-212: Reduction in Refunds by bnb-tw · Pull Request #212 · bnb-chain/BEPs · GitHub
Berlin History and Forks of Ethereum | ethereum.org (fully)
- EIP-2718 Typed Transaction Envelope BEP(idea) Implement EIP-2718 Typed Transaction Envelope
- EIP-2565: ModExp Gas Cost BEP(idea) Implement EIP-2565 ModExp Gas Cost
- EIP-2929 Gas cost increases for state access opcodes BEP(idea) Implement EIP-2929 Gas cost increases for state access opcodes
- EIP-2930: Optional access lists BEP(idea) Implement EIP-2930: Optional access lists