Skip to content

Commit 1560163

Browse files
committed
chain: Modernize EthereumAdapter.block_hash_by_block_number
1 parent 4702444 commit 1560163

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
@@ -1435,42 +1435,39 @@ impl EthereumAdapterTrait for EthereumAdapter {
14351435
})
14361436
}
14371437

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

14761473
fn get_balance(

0 commit comments

Comments
 (0)