forked from polkadot-evm/frontier
-
Notifications
You must be signed in to change notification settings - Fork 4
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 (#83)
* Introduce external account provider into `pallet_evm` (#61) * Introduce AccountProvider interface * Apply account provider logic for tests and template * Fix docs for remove_account method * Fix missing docs * Improve docs for account provider trait * Fix docs for native system account provider * Move account provider logic to separate mod * Add details docs for methods * Move `AccountProvider` interface into `fp-em` (#71) * Move account provider interface into fp-em * Implement AccountProvider interface for EvmSystem * Revert formatter * Move NativeSystemAccountProvider to pallet-evm
- Loading branch information
1 parent
7bf03a1
commit 2792dc0
Showing
9 changed files
with
101 additions
and
27 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
//! 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 index (aka nonce) type. | ||
/// | ||
/// The number that helps to ensure that each transaction in the network is unique | ||
/// for particular account. | ||
type Index: 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::Index; | ||
/// 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