Skip to content

Commit 3c52c04

Browse files
author
Aurélien Richez
committed
make getBlockByNumber private in blockchain reader
1 parent 194965f commit 3c52c04

14 files changed

+41
-36
lines changed

src/main/scala/io/iohk/ethereum/consensus/pow/validators/OmmersValidator.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ trait OmmersValidator {
3030

3131
val getBlockHeaderByHash: ByteString => Option[BlockHeader] = blockchainReader.getBlockHeaderByHash
3232
val getNBlocksBack: (ByteString, Int) => List[Block] =
33-
(_, n) => ((blockNumber - n) until blockNumber).toList.flatMap(blockchainReader.getBlockByNumber)
33+
(_, n) => ((blockNumber - n) until blockNumber).toList.flatMap(blockchainReader.getBestBranch.getBlockByNumber)
3434

3535
validate(parentHash, blockNumber, ommers, getBlockHeaderByHash, getNBlocksBack)
3636
}

src/main/scala/io/iohk/ethereum/domain/Blockchain.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ class BlockchainImpl(
139139
override def isInChain(hash: ByteString): Boolean =
140140
(for {
141141
header <- blockchainReader.getBlockHeaderByHash(hash) if header.number <= blockchainReader.getBestBlockNumber()
142-
hash <- blockchainReader.getHashByBlockNumber(header.number)
142+
hash <- blockchainReader.getBestBranch().getHashByBlockNumber(header.number)
143143
} yield header.hash == hash).getOrElse(false)
144144

145145
override def getChainWeightByHash(blockhash: ByteString): Option[ChainWeight] = chainWeightStorage.get(blockhash)
@@ -309,7 +309,7 @@ class BlockchainImpl(
309309
val latestCheckpointNumber = getLatestCheckpointBlockNumber()
310310

311311
val blockNumberMappingUpdates =
312-
if (blockchainReader.getHashByBlockNumber(block.number).contains(blockHash))
312+
if (blockchainReader.getBestBranch().getHashByBlockNumber(block.number).contains(blockHash))
313313
removeBlockNumberMapping(block.number)
314314
else blockNumberMappingStorage.emptyBatchUpdate
315315

@@ -378,7 +378,7 @@ class BlockchainImpl(
378378
): BigInt =
379379
if (blockNumberToCheck > 0) {
380380
val maybePreviousCheckpointBlockNumber = for {
381-
currentBlock <- blockchainReader.getBlockByNumber(blockNumberToCheck)
381+
currentBlock <- blockchainReader.getBestBranch.getBlockByNumber(blockNumberToCheck)
382382
if currentBlock.hasCheckpoint &&
383383
currentBlock.number < latestCheckpointBlockNumber
384384
} yield currentBlock.number

src/main/scala/io/iohk/ethereum/domain/BlockchainReader.scala

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -50,31 +50,12 @@ class BlockchainReader(
5050
body <- getBlockBodyByHash(hash)
5151
} yield Block(header, body)
5252

53-
/** Returns a block hash given a block number
54-
*
55-
* @param number Number of the searchead block
56-
* @return Block hash if found
57-
*/
58-
def getHashByBlockNumber(number: BigInt): Option[ByteString] =
59-
blockNumberMappingStorage.get(number)
60-
6153
def getBlockHeaderByNumber(number: BigInt): Option[BlockHeader] =
6254
for {
6355
hash <- getHashByBlockNumber(number)
6456
header <- getBlockHeaderByHash(hash)
6557
} yield header
6658

67-
/** Allows to query for a block based on it's number
68-
*
69-
* @param number Block number
70-
* @return Block if it exists
71-
*/
72-
def getBlockByNumber(number: BigInt): Option[Block] =
73-
for {
74-
hash <- getHashByBlockNumber(number)
75-
block <- getBlockByHash(hash)
76-
} yield block
77-
7859
/** Returns MPT node searched by it's hash
7960
* @param hash Node Hash
8061
* @return MPT node
@@ -124,7 +105,26 @@ class BlockchainReader(
124105
getBlockHeaderByNumber(0).get
125106

126107
def genesisBlock: Block =
127-
getBlockByNumber(0).get
108+
getBestBranch().getBlockByNumber(0).get
109+
110+
/** Allows to query for a block based on it's number
111+
*
112+
* @param number Block number
113+
* @return Block if it exists
114+
*/
115+
private def getBlockByNumber(number: BigInt): Option[Block] =
116+
for {
117+
hash <- getHashByBlockNumber(number)
118+
block <- getBlockByHash(hash)
119+
} yield block
120+
121+
/** Returns a block hash given a block number
122+
*
123+
* @param number Number of the searchead block
124+
* @return Block hash if found
125+
*/
126+
private def getHashByBlockNumber(number: BigInt): Option[ByteString] =
127+
blockNumberMappingStorage.get(number)
128128
}
129129

130130
object BlockchainReader {

src/main/scala/io/iohk/ethereum/domain/branch/BestBlockchainBranch.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class BestBlockchainBranch(
2727
override def getBlockByNumber(number: BigInt): Option[Block] =
2828
if (tipBlockHeader.number <= number && number > 0) {
2929
for {
30-
hash <- blockchainReader.getHashByBlockNumber(number)
30+
hash <- getHashByBlockNumber(number)
3131
block <- blockchainReader.getBlockByHash(hash)
3232
} yield block
3333
} else None

src/main/scala/io/iohk/ethereum/jsonrpc/CheckpointingService.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class CheckpointingService(
3636
req.parentCheckpoint.forall(blockchainReader.getBlockHeaderByHash(_).exists(_.number < blockToReturnNum))
3737

3838
Task {
39-
blockchainReader.getBlockByNumber(blockToReturnNum)
39+
blockchainReader.getBestBranch.getBlockByNumber(blockToReturnNum)
4040
}.flatMap {
4141
case Some(b) if isValidParent =>
4242
Task.now(Right(GetLatestBlockResponse(Some(BlockInfo(b.hash, b.number)))))

src/main/scala/io/iohk/ethereum/jsonrpc/EthProofService.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ class EthProofService(
204204

205205
private def resolveBlock(blockParam: BlockParam): Either[JsonRpcError, ResolvedBlock] = {
206206
def getBlock(number: BigInt): Either[JsonRpcError, Block] =
207-
blockchainReader
207+
blockchainReader.getBestBranch
208208
.getBlockByNumber(number)
209209
.toRight(JsonRpcError.InvalidParams(s"Block $number not found"))
210210

src/main/scala/io/iohk/ethereum/jsonrpc/EthTxService.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ class EthTxService(
157157

158158
Task {
159159
val gasPrice = ((bestBlock - blockDifference) to bestBlock)
160-
.flatMap(blockchainReader.getBlockByNumber)
160+
.flatMap(blockchainReader.getBestBranch.getBlockByNumber)
161161
.flatMap(_.body.transactionList)
162162
.map(_.tx.gasPrice)
163163
if (gasPrice.nonEmpty) {

src/main/scala/io/iohk/ethereum/jsonrpc/ResolveBlock.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ trait ResolveBlock {
3333
}
3434

3535
private def getBlock(number: BigInt): Either[JsonRpcError, Block] =
36-
blockchainReader
36+
blockchainReader.getBestBranch
3737
.getBlockByNumber(number)
3838
.toRight(JsonRpcError.InvalidParams(s"Block $number not found"))
3939

src/main/scala/io/iohk/ethereum/jsonrpc/TestService.scala

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,7 @@ class TestService(
367367

368368
val blockOpt = request.parameters.blockHashOrNumber
369369
.fold(
370-
number => blockchainReader.getBlockByNumber(number),
370+
number => blockchainReader.getBestBranch.getBlockByNumber(number),
371371
blockHash => blockchainReader.getBlockByHash(blockHash)
372372
)
373373

@@ -406,7 +406,10 @@ class TestService(
406406
def storageRangeAt(request: StorageRangeRequest): ServiceResponse[StorageRangeResponse] = {
407407

408408
val blockOpt = request.parameters.blockHashOrNumber
409-
.fold(number => blockchainReader.getBlockByNumber(number), hash => blockchainReader.getBlockByHash(hash))
409+
.fold(
410+
number => blockchainReader.getBestBranch.getBlockByNumber(number),
411+
hash => blockchainReader.getBlockByHash(hash)
412+
)
410413

411414
(for {
412415
block <- blockOpt.toRight(StorageRangeResponse(complete = false, Map.empty, None))

src/main/scala/io/iohk/ethereum/ledger/BlockImport.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ class BlockImport(
308308
private def removeBlocksUntil(parent: ByteString, fromNumber: BigInt): List[BlockData] = {
309309
@tailrec
310310
def removeBlocksUntil(parent: ByteString, fromNumber: BigInt, acc: List[BlockData]): List[BlockData] =
311-
blockchainReader.getBlockByNumber(fromNumber) match {
311+
blockchainReader.getBestBranch.getBlockByNumber(fromNumber) match {
312312
case Some(block) if block.header.hash == parent || fromNumber == 0 =>
313313
acc
314314

src/main/scala/io/iohk/ethereum/ledger/BlockValidation.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ class BlockValidation(
4141
val remaining = n - queuedBlocks.length - 1
4242

4343
val numbers = (block.header.number - remaining) until block.header.number
44-
val blocks = (numbers.toList.flatMap(blockchainReader.getBlockByNumber) :+ block) ::: queuedBlocks
44+
val blocks =
45+
(numbers.toList.flatMap(blockchainReader.getBestBranch.getBlockByNumber) :+ block) ::: queuedBlocks
4546
blocks
4647
}
4748
}

src/main/scala/io/iohk/ethereum/ledger/BranchResolution.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ class BranchResolution(blockchain: Blockchain, blockchainReader: BlockchainReade
7474

7575
private def getTopBlocksFromNumber(from: BigInt): List[Block] =
7676
(from to blockchainReader.getBestBlockNumber())
77-
.flatMap(blockchainReader.getBlockByNumber)
77+
.flatMap(blockchainReader.getBestBranch.getBlockByNumber)
7878
.toList
7979
}
8080

src/main/scala/io/iohk/ethereum/testmode/TestEthBlockServiceWrapper.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@ class TestEthBlockServiceWrapper(
7575
.getBlockByNumber(request)
7676
.map(
7777
_.map { blockByBlockResponse =>
78-
val fullBlock = blockchainReader.getBlockByNumber(blockByBlockResponse.blockResponse.get.number).get
78+
val fullBlock =
79+
blockchainReader.getBestBranch.getBlockByNumber(blockByBlockResponse.blockResponse.get.number).get
7980
BlockByNumberResponse(blockByBlockResponse.blockResponse.map(response => toEthResponse(fullBlock, response)))
8081
}
8182
)

src/main/scala/io/iohk/ethereum/transactions/TransactionHistoryService.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class TransactionHistoryService(
3333
val getLastCheckpoint = Task(blockchain.getLatestCheckpointBlockNumber()).memoizeOnSuccess
3434
val txnsFromBlocks = Observable
3535
.from(fromBlocks.reverse)
36-
.mapParallelOrdered(10)(blockNr => Task(blockchainReader.getBlockByNumber(blockNr)))(
36+
.mapParallelOrdered(10)(blockNr => Task(blockchainReader.getBestBranch.getBlockByNumber(blockNr)))(
3737
OverflowStrategy.Unbounded
3838
)
3939
.collect { case Some(block) => block }

0 commit comments

Comments
 (0)