Skip to content

Commit a7bcf3a

Browse files
author
Aurélien Richez
committed
[ETCM-846] review fixes
1 parent faf3422 commit a7bcf3a

File tree

2 files changed

+14
-19
lines changed

2 files changed

+14
-19
lines changed

src/main/scala/io/iohk/ethereum/blockchain/data/GenesisDataLoader.scala

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,8 @@ class GenesisDataLoader(blockchain: Blockchain, blockchainConfig: BlockchainConf
137137
nonce = genesisAccount.nonce
138138
.getOrElse(blockchainConfig.accountStartNonce),
139139
balance = genesisAccount.balance,
140-
codeHash = genesisAccount.code.map(codeValue => crypto.kec256(codeValue)).getOrElse(Account.EmptyCodeHash),
141-
storageRoot = genesisAccount.storage.map(computeStorageRootHash).getOrElse(Account.EmptyStorageRootHash)
140+
codeHash = genesisAccount.code.fold(Account.EmptyCodeHash)(codeValue => crypto.kec256(codeValue)),
141+
storageRoot = genesisAccount.storage.fold(Account.EmptyStorageRootHash)(computeStorageRootHash)
142142
)
143143
)
144144
.getRootHash
@@ -152,12 +152,9 @@ class GenesisDataLoader(blockchain: Blockchain, blockchainConfig: BlockchainConf
152152
new SerializingMptStorage(new ArchiveNodeStorage(new NodeStorage(EphemDataSource())))
153153
)
154154

155-
val storageTrie = storage.foldLeft(emptyTrie) { (trie, tuple) =>
156-
val (key, value) = tuple
157-
if (value.isZero)
158-
trie
159-
else
160-
trie.put(key, value)
155+
val storageTrie = storage.foldLeft(emptyTrie) {
156+
case (trie, (key, UInt256.Zero)) => trie
157+
case (trie, (key, value)) => trie.put(key, value)
161158
}
162159

163160
ByteString(storageTrie.getRootHash)

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

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -155,10 +155,10 @@ class TestService(
155155
// load the new genesis
156156
val genesisDataLoader = new GenesisDataLoader(blockchain, newBlockchainConfig)
157157
genesisDataLoader.loadGenesisData(genesisData)
158-
159158
//save account codes to world state
160159
storeGenesisAccountCodes(genesisData.alloc)
161160
storeGenesisAccountStorageData(genesisData.alloc)
161+
162162
// update test ledger with new config
163163
testLedgerWrapper.blockchainConfig = newBlockchainConfig
164164

@@ -168,13 +168,11 @@ class TestService(
168168
SetChainParamsResponse().rightNow
169169
}
170170

171-
private def storeGenesisAccountCodes(accounts: Map[String, GenesisAccount]): Unit = {
172-
for {
173-
code <- accounts.map(pair => pair._2.code).collect { case Some(code) => code }
174-
} {
175-
blockchain.storeEvmCode(kec256(code), code).commit()
176-
}
177-
}
171+
private def storeGenesisAccountCodes(accounts: Map[String, GenesisAccount]): Unit =
172+
accounts
173+
.map(pair => pair._2.code)
174+
.collect { case Some(code) => code }
175+
.foreach { code => blockchain.storeEvmCode(kec256(code), code).commit() }
178176

179177
private def storeGenesisAccountStorageData(accounts: Map[String, GenesisAccount]): Unit = {
180178
val emptyStorage = domain.EthereumUInt256Mpt.storageMpt(
@@ -185,9 +183,9 @@ class TestService(
185183
.flatMap(pair => pair._2.storage)
186184
.map(accountStorage => accountStorage.filterNot { case (_, v) => v.isZero })
187185
.filter(_.nonEmpty)
188-
for { storage <- storagesToPersist } {
189-
storage.foldLeft(emptyStorage) { case (storage, (key, value)) => storage.put(key, value) }
190-
}
186+
187+
//the identity map is needed to trigger an implicit conversion from UInt256 to BigInt
188+
storagesToPersist.foreach(storage => emptyStorage.update(Nil, storage.toSeq.map { case (a, b) => (a, b) }))
191189
}
192190

193191
def mineBlocks(request: MineBlocksRequest): ServiceResponse[MineBlocksResponse] = {

0 commit comments

Comments
 (0)