@@ -155,10 +155,10 @@ class TestService(
155
155
// load the new genesis
156
156
val genesisDataLoader = new GenesisDataLoader (blockchain, newBlockchainConfig)
157
157
genesisDataLoader.loadGenesisData(genesisData)
158
-
159
158
// save account codes to world state
160
159
storeGenesisAccountCodes(genesisData.alloc)
161
160
storeGenesisAccountStorageData(genesisData.alloc)
161
+
162
162
// update test ledger with new config
163
163
testLedgerWrapper.blockchainConfig = newBlockchainConfig
164
164
@@ -168,13 +168,9 @@ class TestService(
168
168
SetChainParamsResponse ().rightNow
169
169
}
170
170
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.map(pair => pair._2.code).collect { case Some (code) => code }
173
+ .foreach { code => blockchain.storeEvmCode(kec256(code), code).commit() }
178
174
179
175
private def storeGenesisAccountStorageData (accounts : Map [String , GenesisAccount ]): Unit = {
180
176
val emptyStorage = domain.EthereumUInt256Mpt .storageMpt(
@@ -185,9 +181,9 @@ class TestService(
185
181
.flatMap(pair => pair._2.storage)
186
182
.map(accountStorage => accountStorage.filterNot { case (_, v) => v.isZero })
187
183
.filter(_.nonEmpty)
188
- for { storage <- storagesToPersist } {
189
- storage.foldLeft(emptyStorage) { case (storage, (key, value)) => storage.put(key, value) }
190
- }
184
+
185
+ // the identity map is needed to trigger an implicit conversion from UInt256 to BigInt
186
+ storagesToPersist.foreach(storage => emptyStorage.update( Nil , storage.toSeq.map { case (a,b) => (a,b) }))
191
187
}
192
188
193
189
def mineBlocks (request : MineBlocksRequest ): ServiceResponse [MineBlocksResponse ] = {
0 commit comments