block/
receipt.rs

1use rlp::{Encodable, Decodable, RlpStream, DecoderError, UntrustedRlp};
2use bigint::{Gas, H256};
3use bloom::LogsBloom;
4
5use super::Log;
6
7#[derive(Clone, Debug, PartialEq, Eq)]
8pub struct Receipt {
9    pub state_root: H256,
10    pub used_gas: Gas,
11    pub logs_bloom: LogsBloom,
12    pub logs: Vec<Log>,
13}
14
15impl Encodable for Receipt {
16    fn rlp_append(&self, s: &mut RlpStream) {
17        s.begin_list(4);
18        s.append(&self.state_root);
19        s.append(&self.used_gas);
20        s.append(&self.logs_bloom);
21        s.append_list(&self.logs);
22    }
23}
24
25impl Decodable for Receipt {
26    fn decode(rlp: &UntrustedRlp) -> Result<Self, DecoderError> {
27        Ok(Self {
28            state_root: rlp.val_at(0)?,
29            used_gas: rlp.val_at(1)?,
30            logs_bloom: rlp.val_at(2)?,
31            logs: rlp.list_at(3)?,
32        })
33    }
34}