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}