use crate::types::bytes::Bytes;
use ethereum_types::{Address, Bloom, BloomInput, H256};
use rlp_derive::{RlpDecodable, RlpEncodable};
use serde::{Deserialize, Serialize};
#[derive(
Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize, RlpEncodable, RlpDecodable,
)]
pub struct TransactionLog {
pub address: Address,
pub topics: Vec<H256>,
pub data: Bytes,
}
impl TransactionLog {
pub fn bloom(&self) -> Bloom {
self.topics.iter().fold(
Bloom::from(BloomInput::Raw(self.address.as_bytes())),
|mut b, t| {
b.accrue(BloomInput::Raw(t.as_bytes()));
b
},
)
}
}