Skip to content

Commit f826bc5

Browse files
author
Aurélien Richez
committed
make getBlockByNumber private in blockchain reader
1 parent 3056b0d commit f826bc5

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
@@ -107,7 +107,7 @@ class BlockchainImpl(
107107
override def isInChain(hash: ByteString): Boolean =
108108
(for {
109109
header <- blockchainReader.getBlockHeaderByHash(hash) if header.number <= blockchainReader.getBestBlockNumber()
110-
hash <- blockchainReader.getHashByBlockNumber(header.number)
110+
hash <- blockchainReader.getBestBranch().getHashByBlockNumber(header.number)
111111
} yield header.hash == hash).getOrElse(false)
112112

113113
override def getChainWeightByHash(blockhash: ByteString): Option[ChainWeight] = chainWeightStorage.get(blockhash)
@@ -230,7 +230,7 @@ class BlockchainImpl(
230230
val latestCheckpointNumber = getLatestCheckpointBlockNumber()
231231

232232
val blockNumberMappingUpdates =
233-
if (blockchainReader.getHashByBlockNumber(block.number).contains(blockHash))
233+
if (blockchainReader.getBestBranch().getHashByBlockNumber(block.number).contains(blockHash))
234234
removeBlockNumberMapping(block.number)
235235
else blockNumberMappingStorage.emptyBatchUpdate
236236

@@ -299,7 +299,7 @@ class BlockchainImpl(
299299
): BigInt =
300300
if (blockNumberToCheck > 0) {
301301
val maybePreviousCheckpointBlockNumber = for {
302-
currentBlock <- blockchainReader.getBlockByNumber(blockNumberToCheck)
302+
currentBlock <- blockchainReader.getBestBranch.getBlockByNumber(blockNumberToCheck)
303303
if currentBlock.hasCheckpoint &&
304304
currentBlock.number < latestCheckpointBlockNumber
305305
} 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
@@ -372,7 +372,7 @@ class TestService(
372372

373373
val blockOpt = request.parameters.blockHashOrNumber
374374
.fold(
375-
number => blockchainReader.getBlockByNumber(number),
375+
number => blockchainReader.getBestBranch.getBlockByNumber(number),
376376
blockHash => blockchainReader.getBlockByHash(blockHash)
377377
)
378378

@@ -411,7 +411,10 @@ class TestService(
411411
def storageRangeAt(request: StorageRangeRequest): ServiceResponse[StorageRangeResponse] = {
412412

413413
val blockOpt = request.parameters.blockHashOrNumber
414-
.fold(number => blockchainReader.getBlockByNumber(number), hash => blockchainReader.getBlockByHash(hash))
414+
.fold(
415+
number => blockchainReader.getBestBranch.getBlockByNumber(number),
416+
hash => blockchainReader.getBlockByHash(hash)
417+
)
415418

416419
(for {
417420
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
@@ -305,7 +305,7 @@ class BlockImport(
305305
private def removeBlocksUntil(parent: ByteString, fromNumber: BigInt): List[BlockData] = {
306306
@tailrec
307307
def removeBlocksUntil(parent: ByteString, fromNumber: BigInt, acc: List[BlockData]): List[BlockData] =
308-
blockchainReader.getBlockByNumber(fromNumber) match {
308+
blockchainReader.getBestBranch.getBlockByNumber(fromNumber) match {
309309
case Some(block) if block.header.hash == parent || fromNumber == 0 =>
310310
acc
311311

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)