block_core/
account.rs

1use rlp::{Encodable, Decodable, RlpStream, DecoderError, UntrustedRlp};
2use bigint::{H256, U256};
3
4#[derive(Clone, Debug, PartialEq, Eq)]
5pub struct Account {
6    pub nonce: U256,
7    pub balance: U256,
8    pub storage_root: H256,
9    pub code_hash: H256,
10}
11
12impl Encodable for Account {
13    fn rlp_append(&self, s: &mut RlpStream) {
14        s.begin_list(4);
15        s.append(&self.nonce);
16        s.append(&self.balance);
17        s.append(&self.storage_root);
18        s.append(&self.code_hash);
19    }
20}
21
22impl Decodable for Account {
23    fn decode(rlp: &UntrustedRlp) -> Result<Self, DecoderError> {
24        Ok(Self {
25            nonce: rlp.val_at(0)?,
26            balance: rlp.val_at(1)?,
27            storage_root: rlp.val_at(2)?,
28            code_hash: rlp.val_at(3)?,
29        })
30    }
31}