mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
feat: add impl From GenesisAccount to Account (#10256)
This commit is contained in:
@ -35,16 +35,6 @@ impl Account {
|
||||
self.bytecode_hash.map_or(true, |hash| hash == KECCAK_EMPTY)
|
||||
}
|
||||
|
||||
/// Makes an [Account] from [`GenesisAccount`] type
|
||||
pub fn from_genesis_account(value: &GenesisAccount) -> Self {
|
||||
Self {
|
||||
// nonce must exist, so we default to zero when converting a genesis account
|
||||
nonce: value.nonce.unwrap_or_default(),
|
||||
balance: value.balance,
|
||||
bytecode_hash: value.code.as_ref().map(keccak256),
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns an account bytecode's hash.
|
||||
/// In case of no bytecode, returns [`KECCAK_EMPTY`].
|
||||
pub fn get_bytecode_hash(&self) -> B256 {
|
||||
@ -129,6 +119,16 @@ impl Compact for Bytecode {
|
||||
}
|
||||
}
|
||||
|
||||
impl From<&GenesisAccount> for Account {
|
||||
fn from(value: &GenesisAccount) -> Self {
|
||||
Self {
|
||||
nonce: value.nonce.unwrap_or_default(),
|
||||
balance: value.balance,
|
||||
bytecode_hash: value.code.as_ref().map(keccak256),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<AccountInfo> for Account {
|
||||
fn from(revm_acc: AccountInfo) -> Self {
|
||||
let code_hash = revm_acc.code_hash;
|
||||
|
||||
@ -225,8 +225,7 @@ pub fn insert_genesis_hashes<'a, 'b, DB: Database>(
|
||||
alloc: impl Iterator<Item = (&'a Address, &'b GenesisAccount)> + Clone,
|
||||
) -> ProviderResult<()> {
|
||||
// insert and hash accounts to hashing table
|
||||
let alloc_accounts =
|
||||
alloc.clone().map(|(addr, account)| (*addr, Some(Account::from_genesis_account(account))));
|
||||
let alloc_accounts = alloc.clone().map(|(addr, account)| (*addr, Some(Account::from(account))));
|
||||
provider.insert_account_for_hashing(alloc_accounts)?;
|
||||
|
||||
trace!(target: "reth::cli", "Inserted account hashes");
|
||||
|
||||
@ -45,10 +45,8 @@ pub fn insert_genesis<DB: Database>(
|
||||
|
||||
// Hash accounts and insert them into hashing table.
|
||||
let genesis = chain_spec.genesis();
|
||||
let alloc_accounts = genesis
|
||||
.alloc
|
||||
.iter()
|
||||
.map(|(addr, account)| (*addr, Some(Account::from_genesis_account(account))));
|
||||
let alloc_accounts =
|
||||
genesis.alloc.iter().map(|(addr, account)| (*addr, Some(Account::from(account))));
|
||||
provider.insert_account_for_hashing(alloc_accounts).unwrap();
|
||||
|
||||
let alloc_storage = genesis.alloc.clone().into_iter().filter_map(|(addr, account)| {
|
||||
|
||||
@ -48,10 +48,8 @@ fn insert_genesis<DB: Database>(
|
||||
|
||||
// Hash accounts and insert them into hashing table.
|
||||
let genesis = chain_spec.genesis();
|
||||
let alloc_accounts = genesis
|
||||
.alloc
|
||||
.iter()
|
||||
.map(|(addr, account)| (*addr, Some(Account::from_genesis_account(account))));
|
||||
let alloc_accounts =
|
||||
genesis.alloc.iter().map(|(addr, account)| (*addr, Some(Account::from(account))));
|
||||
provider.insert_account_for_hashing(alloc_accounts).unwrap();
|
||||
|
||||
let alloc_storage = genesis.alloc.clone().into_iter().filter_map(|(addr, account)| {
|
||||
|
||||
Reference in New Issue
Block a user