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}