stub out tx root check, fix block hash calculation

This commit is contained in:
realbigsean
2023-01-27 11:39:26 +01:00
parent 1dd9812f62
commit dd512cd82a
3 changed files with 31 additions and 12 deletions

View File

@@ -1037,14 +1037,20 @@ impl<T: BeaconChainTypes> BeaconChain<T> {
);
}
return Err(Error::InconsistentPayloadReconstructed {
slot: blinded_block.slot(),
exec_block_hash,
canonical_payload_root: execution_payload_header.tree_hash_root(),
reconstructed_payload_root: header_from_payload.tree_hash_root(),
canonical_transactions_root: execution_payload_header.transactions_root(),
reconstructed_transactions_root: header_from_payload.transactions_root(),
});
if execution_payload_header.transactions_root()
!= header_from_payload.transactions_root()
{
//FIXME(sean) we're not decoding blobs txs correctly yet
} else {
return Err(Error::InconsistentPayloadReconstructed {
slot: blinded_block.slot(),
exec_block_hash,
canonical_payload_root: execution_payload_header.tree_hash_root(),
reconstructed_payload_root: header_from_payload.tree_hash_root(),
canonical_transactions_root: execution_payload_header.transactions_root(),
reconstructed_transactions_root: header_from_payload.transactions_root(),
});
}
}
// Add the payload to the block to form a full block.

View File

@@ -36,12 +36,15 @@ impl<T: EthSpec> ExecutionLayer<T> {
None
};
let rlp_excess_data_gas = payload.excess_data_gas().ok();
// Construct the block header.
let exec_block_header = ExecutionBlockHeader::from_payload(
payload,
KECCAK_EMPTY_LIST_RLP.as_fixed_bytes().into(),
rlp_transactions_root,
rlp_withdrawals_root,
rlp_excess_data_gas,
);
// Hash the RLP encoding of the block header.
@@ -75,12 +78,15 @@ pub fn rlp_encode_withdrawal(withdrawal: &JsonWithdrawal) -> Vec<u8> {
pub fn rlp_encode_block_header(header: &ExecutionBlockHeader) -> Vec<u8> {
let mut rlp_header_stream = RlpStream::new();
rlp_header_stream.begin_unbounded_list();
map_execution_block_header_fields_except_withdrawals!(&header, |_, field| {
map_execution_block_header_fields_except_withdrawals_excess_data_gas!(&header, |_, field| {
rlp_header_stream.append(field);
});
if let Some(withdrawals_root) = &header.withdrawals_root {
rlp_header_stream.append(withdrawals_root);
}
if let Some(excess_data_gas) = &header.excess_data_gas {
rlp_header_stream.append(excess_data_gas);
}
rlp_header_stream.finalize_unbounded_list();
rlp_header_stream.out().into()
}