EIP-5283: A Semaphore for Parallelizable Reentrancy Protection

Hi! I’d like to open the discussion over EIP-5283.

Re your comment here:

yes, transient opcodes are better from the EVM “purity” standpoint. But I haven’t heard of any use for the transient opcodes apart from mutexes. I will add the discussions tag, where we should be chatting.

There are many use cases, which are discussed in the discussion thread of EIP-1153. Here is one of them from Arbitrum. Here is the primary motivation, which is much more than just reentrancy locks. Another use case is communicating information from nested callbacks (we do this in the Uniswap V3 router to return the computed amount in for exact output swaps, which are executed in reverse and involve nested callbacks).

IMO this EIP has no advantages over transient storage.

I also prefer transient opcodes over my proposal (edit: the new EIP-1153 does interact with reverts).

But EIP 1153 was created 4 years ago. There is a high chance it is activated in another 2 years, and maybe it is never activated. There are many drawbacks pointed out in EIP-1153 discussion thread. Meanwhile, everybody is creating contracts that are not scalable with fine-grained parallel transaction processing.
My proposal is to do something very simple and low risk now to improve the blockchain forever. Not having a better mutex mechanism now will have a negative impact in millions of future transactions.
It’s not a technical trade-off, but a community trade-off.

But EIP 1153 was created 4 years ago. There is a high chance it is activated in another 2 years, and maybe it is never activated. Meanwhile, everybody is creating contracts that are not scalable with fine-grained parallel transaction processing.

Please help advocate to have transient storage included in Shanghai! I think the benefits to parallelization have been so far under-emphasized.

Also, work to implement this everywhere is already being done or contracted by Uniswap Labs, tracked publicly here. Hopefully come Shanghai there is no reason not to include it.

1 Like