-
Notifications
You must be signed in to change notification settings - Fork 486
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
Support external account provider #1329
Support external account provider #1329
Conversation
Some context: this implementation has been used by the Humanode network for a while now, and we got tired of maintaining these patches in our own fork. It is our hope to merge this in the upstream such that:
|
Totally understand. I think it would be possible to accept the changes that abstract the operations related to the account into a pallet config(trait), but it makes no sense to include the |
This would work for us. The reason why we are adding So, the main rationale for merging both is to actually ensure the code doesn't break. There are a lot of other things we'd suggest upstreaming, like a custom |
@boundless-forest @crystalin @koushiro any updates ? Will be ready to rebase after getting your feedback as I would like to merge it. |
I reviewed your solution regarding the
As for the chains with H160 account systems as the default, since they do not require account mapping, your solution does not change the way they operate. The Frontier repo lacks reviewers and maintainers. I'm also quite frustrated about this. We need more people involved in the issue and PR discussions. |
There is a huge difference in that with separate account systems there is no trying to retrofit AccountId20 into AccountId32, and also no possibility of the confusing interactions between other pallets and EVM - EVM accounts are completely isolated in their own system, with only explicitly implemented pathways to interact with the native system.
This is not intended to be deployed to either preexisting chains - neither for the ones using the mixed accounts in the system table with the EVM address mappings, not for the ones using the EVM-native AccountId20 as AccountId. This is for the new chains, and for Humanode which is running this setup in mainnet for a couple years now.
This solution does not replace the account mappings though - they can still be used; we wanted it explicitly because we dislike the mappings system and the implications of mixing those with respect to the RPCs and our (Huamnode) chain's sybil-attack mechanisms.
Yep. For the mixed accounts too - this adds an entirely new way to set things up. You can inspect how this works in practice at Humanode chain:
Upstreaming this is really important to us, as we plan to further expand our investment into Frontier codebase and having too many custom patches is starting to slow us down. For instance, we'd be interested in working on proper EVM tracing support - but currently we're stalled by this upstreaming.
We could aid acting act in this capacity at some point in the future as our involvement in Frontier and resource capacity grows. |
Considering that many chains have been setup based on the current path and have been running in production for several years. I suggest we merge these traits so your team doesn't need to maintain and pick during the frontier upgrade process. For the I suggest submitting an issue to gather feedback from the community members regarding your team's solution the evm-system and evm-balances. If many believe this is a preferable, we can consider including it in this repo. |
@boundless-forest @MOZGIII Just merged master including conflict resolution. Looks like we've agreed on merging account abstraction. For the |
157661e
to
6c97cbc
Compare
This reverts commit d21ddc2.
The goal of this PR is to expose account related logic that
pallet_evm
required to control accounts existence in the network and their transactions uniqueness. By default, the pallet operates native system accounts records thatframe_system
provides.The interface allow any custom account provider logic to be used instead of just using
frame_system
account provider. The accounts records should store nonce value for each account at least.Related to #1331
cc @MOZGIII