ethereumjs / ethereumjs-monorepo

Monorepo for the Ethereum VM TypeScript Implementation
2.6k stars 759 forks source link

Idea: Add optimism deposit tx support #3255

Open roninjin10 opened 9 months ago

roninjin10 commented 9 months ago

I would like to help add more optimism support to ethereumjs starting with supporting the deposit tx type. If we are interested in this change I'm happy to drive this.

Links

Description

I wish to add deposit transaction. This would be a major step to making ethereumjs able to run op stack chains.

Reasoning

There are two reasons I wish to make this change:

  1. Make Tevm able to fork blocks with tx

I'm currently building Tevm which wraps ethereumjs. It's like anvil but it runs in browser and node.js. It implements JSON-RPC (similar to client package) but uses the pending blocktag to represent 'optimist state' based on the users pending tx.

Currently I have to filter out deposittx when forking OP and building a block here

  1. OP-ethereumjs

I would like to be able to run the entire op stack against ethereumjs and deposit tx is a requirement to be able to do that. It might even be interesting to implement the op stack components in JS.

holgerd77 commented 9 months ago

Hi there, yes, that would be highly interesting since Optimism is so close to mainnet behavior that we can very likely manage the overhead (realistically the only one where we will likely be able)!

So go ahead 🙂, also, if you funding or get paid for this work let me also know, we would likely be able to arrange something!

just seeing that you are also aware about this other PR #2713 where we already discussed this some time ago, guess it's safe to go ahead though. On the referenced PR I also landed with a generic solution of just having the possibility to skip certain tx types during block execution, which is basically fully implemented but for whatever reasons did not get merged yet. Let me know if this would also short-term be useful for you, then we can prioritize merging (guess it will likely still make sense to have this functionality in anyhow, since it is generically useful for similar cases).

holgerd77 commented 9 months ago
* [optimism geth diff](https://op-geth.optimism.io/)

Side note: this is likely the most impressive fork management I have ever seen! 🤯

roninjin10 commented 4 months ago

Just leaving link here this might be useful if at some point we want entire OP stack in js https://hackmd.io/@clabby/B1H79bqkR