@@ -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,10 @@ 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
173
+ .collect{ case (_, GenesisAccount (_, _, Some (code), _, _)) => code }
174
+ .foreach { code => blockchain.storeEvmCode(kec256(code), code).commit() }
178
175
179
176
private def storeGenesisAccountStorageData (accounts : Map [String , GenesisAccount ]): Unit = {
180
177
val emptyStorage = domain.EthereumUInt256Mpt .storageMpt(
@@ -185,9 +182,9 @@ class TestService(
185
182
.flatMap(pair => pair._2.storage)
186
183
.map(accountStorage => accountStorage.filterNot { case (_, v) => v.isZero })
187
184
.filter(_.nonEmpty)
188
- for { storage <- storagesToPersist } {
189
- storage.foldLeft(emptyStorage) { case (storage, (key, value)) => storage.put(key, value ) }
190
- }
185
+
186
+ val toBigInts : (( UInt256 , UInt256 )) => ( BigInt , BigInt ) = { case (a,b) => (a,b ) }
187
+ storagesToPersist.foreach(storage => emptyStorage.update( Nil , storage.toSeq.map(toBigInts)))
191
188
}
192
189
193
190
def mineBlocks (request : MineBlocksRequest ): ServiceResponse [MineBlocksResponse ] = {
0 commit comments