feat: Duplicate Withdrawal and move try from impls to rpc-compat (#4186)

This commit is contained in:
Supernovahs.eth
2023-09-19 22:27:32 +05:30
committed by GitHub
parent 57c10e5b65
commit 801294252e
20 changed files with 480 additions and 317 deletions

View File

@@ -15,6 +15,9 @@ use reth_rpc_types::engine::{
ForkchoiceUpdated, PayloadAttributes, PayloadId, PayloadStatus, TransitionConfiguration,
CAPABILITIES,
};
use reth_rpc_types_compat::engine::payload::{
convert_payload_input_v2_to_payload, convert_to_payload_body_v1,
};
use reth_tasks::TaskSpawner;
use std::sync::Arc;
use tokio::sync::oneshot;
@@ -84,7 +87,7 @@ where
&self,
payload: ExecutionPayloadInputV2,
) -> EngineApiResult<PayloadStatus> {
let payload = ExecutionPayload::from(payload);
let payload = convert_payload_input_v2_to_payload(payload);
let payload_or_attrs = PayloadOrAttributes::from_execution_payload(&payload, None);
self.validate_version_specific_fields(EngineApiMessageVersion::V2, &payload_or_attrs)?;
Ok(self.inner.beacon_consensus.new_payload(payload, None).await?)
@@ -280,7 +283,7 @@ where
let block_result = inner.provider.block(BlockHashOrNumber::Number(num));
match block_result {
Ok(block) => {
result.push(block.map(Into::into));
result.push(block.map(convert_to_payload_body_v1));
}
Err(err) => {
tx.send(Err(EngineApiError::Internal(Box::new(err)))).ok();
@@ -311,7 +314,7 @@ where
.provider
.block(BlockHashOrNumber::Hash(hash))
.map_err(|err| EngineApiError::Internal(Box::new(err)))?;
result.push(block.map(Into::into));
result.push(block.map(convert_to_payload_body_v1));
}
Ok(result)
@@ -836,8 +839,11 @@ mod tests {
random_block_range(&mut rng, start..=start + count - 1, H256::default(), 0..2);
handle.provider.extend_blocks(blocks.iter().cloned().map(|b| (b.hash(), b.unseal())));
let expected =
blocks.iter().cloned().map(|b| Some(b.unseal().into())).collect::<Vec<_>>();
let expected = blocks
.iter()
.cloned()
.map(|b| Some(convert_to_payload_body_v1(b.unseal())))
.collect::<Vec<_>>();
let res = api.get_payload_bodies_by_range(start, count).await.unwrap();
assert_eq!(res, expected);
@@ -875,7 +881,7 @@ mod tests {
if first_missing_range.contains(&b.number) {
None
} else {
Some(b.unseal().into())
Some(convert_to_payload_body_v1(b.unseal()))
}
})
.collect::<Vec<_>>();
@@ -894,7 +900,7 @@ mod tests {
{
None
} else {
Some(b.unseal().into())
Some(convert_to_payload_body_v1(b.unseal()))
}
})
.collect::<Vec<_>>();