Skip to content

Latest commit

 

History

History
51 lines (31 loc) · 2.31 KB

cip-0050.md

File metadata and controls

51 lines (31 loc) · 2.31 KB
cip title author discussions-to status type category created license
50
Optional Replay Protection
Gastón Ponti (@gastonponti)
Final
Standards Track
Ring 0
2021-11-18
Apache 2.0

Simple Summary

Revert one of the changes added in the CIP-35 which made the replay protection (see EIP-155) mandatory

Abstract

This CIP will revert the changes made in CIP-35 and makes it optional flag to configure.

Motivation

Making the replay protection mandatory breaks our compatibility with Ethereum. EIPs such as EIP-1820 depend exclusively on not having that limitation. If our biggest concern was to avoid errors or confusion between chains, that should be checked by our tooling or RPC API calls, not an EVM limitation.

Specification

This change requires activation as part of a hard fork. As of FORK_BLOCK_NUMBER clients MUST accept transactions that had not set the chainId. This CIP will be included in Espresso Hardfork - CIP 41

Rationale

If we want to be completely compatible with Ethereum, the issue, as explained in the Motivation section should be addressed. The CIP35 changed that without being completely conscient on how that would affect EVM compatibility.

Backwards Compatibility

This CIP is proposed as part of Espresso Hardfork and therefore will be backwards incompatible. Hardforks in general are backwards incompatible.

Test Cases

TBD

Implementation

Security Considerations

This will bring again the possibility of a replay attack. Even if the majority of the tools generates transactions with chainIds, we could add some restrictions from the client side, to avoid common mistakes. For example, set a client to just allow protected transactions (as Ethereum has) or add a new rpc endpoint that will be the only way to push an unprotected tx.

License

This work is licensed under the Apache License, Version 2.0.