Skip to content

Commit ee03efd

Browse files
committed
chain: Modernize EthereumAdapter.block_hash_by_block_number
1 parent cdf90f3 commit ee03efd

File tree

2 files changed

+26
-29
lines changed

2 files changed

+26
-29
lines changed

chain/ethereum/src/adapter.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1133,11 +1133,11 @@ pub trait EthereumAdapter: Send + Sync + 'static {
11331133
/// those confirmations.
11341134
/// If the Ethereum node is far behind in processing blocks, even old blocks can be subject to
11351135
/// reorgs.
1136-
fn block_hash_by_block_number(
1136+
async fn block_hash_by_block_number(
11371137
&self,
11381138
logger: &Logger,
11391139
block_number: BlockNumber,
1140-
) -> Box<dyn Future<Item = Option<H256>, Error = Error> + Send>;
1140+
) -> Result<Option<H256>, Error>;
11411141

11421142
/// Finds the hash and number of the lowest non-null block with height greater than or equal to
11431143
/// the given number.

chain/ethereum/src/ethereum_adapter.rs

Lines changed: 24 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1432,42 +1432,39 @@ impl EthereumAdapterTrait for EthereumAdapter {
14321432
})
14331433
}
14341434

1435-
fn block_hash_by_block_number(
1435+
async fn block_hash_by_block_number(
14361436
&self,
14371437
logger: &Logger,
14381438
block_number: BlockNumber,
1439-
) -> Box<dyn Future<Item = Option<H256>, Error = Error> + Send> {
1439+
) -> Result<Option<H256>, Error> {
14401440
let web3 = self.web3.clone();
14411441
let retry_log_message = format!(
14421442
"eth_getBlockByNumber RPC call for block number {}",
14431443
block_number
14441444
);
1445-
Box::new(
1446-
retry(retry_log_message, logger)
1447-
.redact_log_urls(true)
1448-
.no_limit()
1449-
.timeout_secs(ENV_VARS.json_rpc_timeout.as_secs())
1450-
.run(move || {
1451-
let web3 = web3.cheap_clone();
1452-
async move {
1453-
web3.eth()
1454-
.block(BlockId::Number(block_number.into()))
1455-
.await
1456-
.map(|block_opt| block_opt.and_then(|block| block.hash))
1457-
.map_err(Error::from)
1458-
}
1445+
retry(retry_log_message, logger)
1446+
.redact_log_urls(true)
1447+
.no_limit()
1448+
.timeout_secs(ENV_VARS.json_rpc_timeout.as_secs())
1449+
.run(move || {
1450+
let web3 = web3.cheap_clone();
1451+
async move {
1452+
web3.eth()
1453+
.block(BlockId::Number(block_number.into()))
1454+
.await
1455+
.map(|block_opt| block_opt.and_then(|block| block.hash))
1456+
.map_err(Error::from)
1457+
}
1458+
})
1459+
.await
1460+
.map_err(move |e| {
1461+
e.into_inner().unwrap_or_else(move || {
1462+
anyhow!(
1463+
"Ethereum node took too long to return data for block #{}",
1464+
block_number
1465+
)
14591466
})
1460-
.boxed()
1461-
.compat()
1462-
.map_err(move |e| {
1463-
e.into_inner().unwrap_or_else(move || {
1464-
anyhow!(
1465-
"Ethereum node took too long to return data for block #{}",
1466-
block_number
1467-
)
1468-
})
1469-
}),
1470-
)
1467+
})
14711468
}
14721469

14731470
fn get_balance(

0 commit comments

Comments
 (0)