mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
refactor: store plain receipts instead Options in Receipts (#14010)
This commit is contained in:
@ -198,7 +198,7 @@ impl<N: ProviderNodeTypes> ConsistentProvider<N> {
|
||||
let receipt = receipt_iter
|
||||
.next()
|
||||
.ok_or_else(|| ProviderError::ReceiptNotFound(tx_num.into()))?;
|
||||
block_receipts.push(Some(receipt));
|
||||
block_receipts.push(receipt);
|
||||
}
|
||||
receipts.push(block_receipts);
|
||||
}
|
||||
|
||||
@ -1810,8 +1810,7 @@ impl<TX: DbTxMut + DbTx + 'static, N: NodeTypesForProvider> StateWriter
|
||||
));
|
||||
}
|
||||
|
||||
let has_receipts_pruning = self.prune_modes.has_receipts_pruning() ||
|
||||
execution_outcome.receipts.iter().flatten().any(|receipt| receipt.is_none());
|
||||
let has_receipts_pruning = self.prune_modes.has_receipts_pruning();
|
||||
|
||||
// Prepare receipts cursor if we are going to write receipts to the database
|
||||
//
|
||||
@ -1869,26 +1868,21 @@ impl<TX: DbTxMut + DbTx + 'static, N: NodeTypesForProvider> StateWriter
|
||||
|
||||
for (idx, receipt) in receipts.iter().enumerate() {
|
||||
let receipt_idx = first_tx_index + idx as u64;
|
||||
if let Some(receipt) = receipt {
|
||||
// Skip writing receipt if log filter is active and it does not have any logs to
|
||||
// retain
|
||||
if prunable_receipts &&
|
||||
has_contract_log_filter &&
|
||||
!receipt
|
||||
.logs()
|
||||
.iter()
|
||||
.any(|log| allowed_addresses.contains(&log.address))
|
||||
{
|
||||
continue
|
||||
}
|
||||
// Skip writing receipt if log filter is active and it does not have any logs to
|
||||
// retain
|
||||
if prunable_receipts &&
|
||||
has_contract_log_filter &&
|
||||
!receipt.logs().iter().any(|log| allowed_addresses.contains(&log.address))
|
||||
{
|
||||
continue
|
||||
}
|
||||
|
||||
if let Some(writer) = &mut receipts_static_writer {
|
||||
writer.append_receipt(receipt_idx, receipt)?;
|
||||
}
|
||||
if let Some(writer) = &mut receipts_static_writer {
|
||||
writer.append_receipt(receipt_idx, receipt)?;
|
||||
}
|
||||
|
||||
if let Some(cursor) = &mut receipts_cursor {
|
||||
cursor.append(receipt_idx, receipt)?;
|
||||
}
|
||||
if let Some(cursor) = &mut receipts_cursor {
|
||||
cursor.append(receipt_idx, receipt)?;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2283,9 +2277,7 @@ impl<TX: DbTxMut + DbTx + 'static, N: NodeTypesForProvider> StateWriter
|
||||
let mut block_receipts = Vec::with_capacity(block_body.tx_count as usize);
|
||||
for num in block_body.tx_num_range() {
|
||||
if receipts_iter.peek().is_some_and(|(n, _)| *n == num) {
|
||||
block_receipts.push(receipts_iter.next().map(|(_, r)| r));
|
||||
} else {
|
||||
block_receipts.push(None);
|
||||
block_receipts.push(receipts_iter.next().unwrap().1);
|
||||
}
|
||||
}
|
||||
receipts.push(block_receipts);
|
||||
|
||||
@ -207,7 +207,7 @@ fn block1(number: BlockNumber) -> (RecoveredBlock<reth_primitives::Block>, Execu
|
||||
.revert_account_info(number, account2, Some(None))
|
||||
.state_storage(account1, HashMap::from_iter([(slot, (U256::ZERO, U256::from(10)))]))
|
||||
.build(),
|
||||
vec![vec![Some(
|
||||
vec![vec![
|
||||
#[allow(clippy::needless_update)] // side-effect of optimism fields
|
||||
Receipt {
|
||||
tx_type: TxType::Eip2930,
|
||||
@ -220,7 +220,7 @@ fn block1(number: BlockNumber) -> (RecoveredBlock<reth_primitives::Block>, Execu
|
||||
)],
|
||||
..Default::default()
|
||||
},
|
||||
)]]
|
||||
]]
|
||||
.into(),
|
||||
number,
|
||||
Vec::new(),
|
||||
@ -266,7 +266,7 @@ fn block2(
|
||||
)
|
||||
.revert_storage(number, account, Vec::from([(slot, U256::from(10))]))
|
||||
.build(),
|
||||
vec![vec![Some(
|
||||
vec![vec![
|
||||
#[allow(clippy::needless_update)] // side-effect of optimism fields
|
||||
Receipt {
|
||||
tx_type: TxType::Eip1559,
|
||||
@ -279,7 +279,7 @@ fn block2(
|
||||
)],
|
||||
..Default::default()
|
||||
},
|
||||
)]]
|
||||
]]
|
||||
.into(),
|
||||
number,
|
||||
Vec::new(),
|
||||
@ -334,7 +334,7 @@ fn block3(
|
||||
}
|
||||
let execution_outcome = ExecutionOutcome::new(
|
||||
bundle_state_builder.build(),
|
||||
vec![vec![Some(
|
||||
vec![vec![
|
||||
#[allow(clippy::needless_update)] // side-effect of optimism fields
|
||||
Receipt {
|
||||
tx_type: TxType::Eip1559,
|
||||
@ -347,7 +347,7 @@ fn block3(
|
||||
)],
|
||||
..Default::default()
|
||||
},
|
||||
)]]
|
||||
]]
|
||||
.into(),
|
||||
number,
|
||||
Vec::new(),
|
||||
@ -422,7 +422,7 @@ fn block4(
|
||||
}
|
||||
let execution_outcome = ExecutionOutcome::new(
|
||||
bundle_state_builder.build(),
|
||||
vec![vec![Some(
|
||||
vec![vec![
|
||||
#[allow(clippy::needless_update)] // side-effect of optimism fields
|
||||
Receipt {
|
||||
tx_type: TxType::Eip1559,
|
||||
@ -435,7 +435,7 @@ fn block4(
|
||||
)],
|
||||
..Default::default()
|
||||
},
|
||||
)]]
|
||||
]]
|
||||
.into(),
|
||||
number,
|
||||
Vec::new(),
|
||||
@ -507,7 +507,7 @@ fn block5(
|
||||
}
|
||||
let execution_outcome = ExecutionOutcome::new(
|
||||
bundle_state_builder.build(),
|
||||
vec![vec![Some(
|
||||
vec![vec![
|
||||
#[allow(clippy::needless_update)] // side-effect of optimism fields
|
||||
Receipt {
|
||||
tx_type: TxType::Eip1559,
|
||||
@ -520,7 +520,7 @@ fn block5(
|
||||
)],
|
||||
..Default::default()
|
||||
},
|
||||
)]]
|
||||
]]
|
||||
.into(),
|
||||
number,
|
||||
Vec::new(),
|
||||
|
||||
@ -1059,7 +1059,7 @@ mod tests {
|
||||
fn revert_to_indices() {
|
||||
let base: ExecutionOutcome = ExecutionOutcome {
|
||||
bundle: BundleState::default(),
|
||||
receipts: vec![vec![Some(Receipt::default()); 2]; 7].into(),
|
||||
receipts: vec![vec![Receipt::default(); 2]; 7].into(),
|
||||
first_block: 10,
|
||||
requests: Vec::new(),
|
||||
};
|
||||
@ -1270,7 +1270,7 @@ mod tests {
|
||||
|
||||
let mut test: ExecutionOutcome = ExecutionOutcome {
|
||||
bundle: present_state,
|
||||
receipts: vec![vec![Some(Receipt::default()); 2]; 1].into(),
|
||||
receipts: vec![vec![Receipt::default(); 2]; 1].into(),
|
||||
first_block: 2,
|
||||
requests: Vec::new(),
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user