@@ -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,10 @@ 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+ .collect { case (_, GenesisAccount (_, _, Some (code), _, _)) => code }
174+ .foreach { code => blockchain.storeEvmCode(kec256(code), code).commit() }
178175
179176 private def storeGenesisAccountStorageData (accounts : Map [String , GenesisAccount ]): Unit = {
180177 val emptyStorage = domain.EthereumUInt256Mpt .storageMpt(
@@ -185,9 +182,9 @@ class TestService(
185182 .flatMap(pair => pair._2.storage)
186183 .map(accountStorage => accountStorage.filterNot { case (_, v) => v.isZero })
187184 .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)))
191188 }
192189
193190 def mineBlocks (request : MineBlocksRequest ): ServiceResponse [MineBlocksResponse ] = {
0 commit comments