-
Notifications
You must be signed in to change notification settings - Fork 138
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Constructing the EVM with hierarchical addressing [was: hierarchical consensus] #742
Comments
NOTE: we have discussed this model before, but in the past it always involved "proxy" actors. We didn't like that approach because it would mean that EVM accounts didn't have "real" addresses (from the perspective of FVM actors). The novel part of this proposal is to introduce first-class hierarchical addressing. We already have support for multiple address formats, so this isn't quite as daunting as it might seem. But it's still a non-trivial proposal. |
The term "hierarchical consensus" brings in a lot of conceptual baggage that I think confuses things here. I would note that a rollup would have many of the same benefits as using a full hierarchical consensus-like mechanism. But I think there's a simpler proposal about addressing in there (but all messages are landing on the same chain/state). |
Ah, yes. Basically, the idea is to use two parts of hierarchical consensus:
Not to actually use separate chains, rollups, etc. |
We have decided to adopt the flat model, where foreign actors (e.g. EVM smart contracts) are deployed as first-class actors on the FIlecoin chain. This puts them at an equal footing as every other actor, whether native (Wasm) or not, and forces us to introduce protocol advancements to support seamless interoperability across supported runtimes (account abstraction, extensible addressing, etc.) It also makes state management more granular and likely cheaper (every actor has its own state, vs. one massive state subtree containing the subworld of category X of actors). It is subjectively conceptually easier to reason about, prevents hyperspecialisation inside the realm of foreign runtimes, and doesn't require special runtime-level registries or proxies. One such protocol advancement worthy of mention here is "extensible addressing" (spec submission to follow), which draws from some of the notions around hierarchical addressing introduced above. In essence, we propose to introduce the the concept of actor factories that govern actor construction and the binding of addresses under a new |
@Stebalien should we close this discussion now that we've moving ahead with a concrete approach? |
Yep. |
The current EVM proposal is to create one top-level actor per EVM contract. However, this leads to some annoying issues:
One solution to both of these problems is to model the EVM with hierarchical consensus, just without multiple chains. That is:
Pros:
Cons:
In general, interop between the two systems becomes a bit more annoying. On the other hand, we want to solve this issue for hierarchical consensus anyways.
We'll also likely end up with EVM "shim accounts" to support the "create account on send" functionality. When an EVM contract sends to a new address, there's no way to know if that new address will end up being an EVM contract or an account. But that's "fine" as long as:
This also only applies to accounts that don't already exist when an EVM contract first tries to send to them.
The text was updated successfully, but these errors were encountered: