-
Notifications
You must be signed in to change notification settings - Fork 476
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Support external account provider (#1329)
* Introduce account provider interface * Use AccountProvider logic at pallet-evm * Remove redundant ower type usage * Fix fmt * Fix clippy * Fix clippy * License at primitives/evm/src/account_provider.rs * Rename NativeSystemAccountProvider to FrameSystemAccountProvider * Formatting corrcetions at account_provider.rs --------- Co-authored-by: MOZGIII <[email protected]>
- Loading branch information
1 parent
80c768f
commit d21ddc2
Showing
13 changed files
with
142 additions
and
45 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
// This file is part of Frontier. | ||
|
||
// Copyright (c) Humanode Core. | ||
// SPDX-License-Identifier: Apache-2.0 | ||
|
||
// Licensed under the Apache License, Version 2.0 (the "License"); | ||
// you may not use this file except in compliance with the License. | ||
// You may obtain a copy of the License at | ||
// | ||
// http://www.apache.org/licenses/LICENSE-2.0 | ||
// | ||
// Unless required by applicable law or agreed to in writing, software | ||
// distributed under the License is distributed on an "AS IS" BASIS, | ||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
// See the License for the specific language governing permissions and | ||
// limitations under the License. | ||
|
||
//! Custom account provider logic. | ||
|
||
use sp_runtime::traits::AtLeast32Bit; | ||
|
||
/// The account provider interface abstraction layer. | ||
/// | ||
/// 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 that `frame_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. | ||
pub trait AccountProvider { | ||
/// The account identifier type. | ||
/// | ||
/// Represent the account itself in accounts records. | ||
type AccountId; | ||
|
||
/// Account nonce type. | ||
/// | ||
/// The number that helps to ensure that each transaction in the network is unique | ||
/// for particular account. | ||
type Nonce: AtLeast32Bit; | ||
|
||
/// Creates a new account in accounts records. | ||
/// | ||
/// The account associated with new created address EVM. | ||
fn create_account(who: &Self::AccountId); | ||
|
||
/// Removes an account from accounts records. | ||
/// | ||
/// The account associated with removed address from EVM. | ||
fn remove_account(who: &Self::AccountId); | ||
|
||
/// Return current account nonce value. | ||
/// | ||
/// Used to represent account basic information in EVM format. | ||
fn account_nonce(who: &Self::AccountId) -> Self::Nonce; | ||
|
||
/// Increment a particular account's nonce value. | ||
/// | ||
/// Incremented with each new transaction submitted by the account. | ||
fn inc_account_nonce(who: &Self::AccountId); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters