Skip to content

Commit 394e9ac

Browse files
committed
Merge branch 'phase/etc_forks' of https://github.com/input-output-hk/mantis into etcm-28-petersbug-changes
� Conflicts: � src/main/scala/io/iohk/ethereum/extvm/VMServer.scala � src/main/scala/io/iohk/ethereum/vm/BlockchainConfigForEvm.scala � src/main/scala/io/iohk/ethereum/vm/EvmConfig.scala � src/main/scala/io/iohk/ethereum/vm/VM.scala � src/test/scala/io/iohk/ethereum/extvm/VMClientSpec.scala � src/test/scala/io/iohk/ethereum/vm/Fixtures.scala � src/test/scala/io/iohk/ethereum/vm/VMSpec.scala
2 parents 9b1bb44 + 1259ef7 commit 394e9ac

File tree

3 files changed

+13
-7
lines changed

3 files changed

+13
-7
lines changed

src/main/scala/io/iohk/ethereum/vm/VM.scala

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -133,12 +133,11 @@ class VM[W <: WorldStateProxy[W, S], S <: Storage[S]] extends Logger {
133133

134134

135135
private def exceedsMaxContractSize(context: PC, config: EvmConfig, contractCode: ByteString): Boolean = {
136-
val maxCodeSizeExceeded = config.maxCodeSize.exists(codeSizeLimit => contractCode.size > codeSizeLimit)
136+
lazy val maxCodeSizeExceeded = config.maxCodeSize.exists(codeSizeLimit => contractCode.size > codeSizeLimit)
137137
val currentBlock = context.blockHeader.number
138138
// Max code size was enabled on eip161 block number on eth network, and on atlantis block number on etc
139-
maxCodeSizeExceeded &&
140-
(currentBlock >= config.blockchainConfig.eip161BlockNumber ||
141-
currentBlock >= config.blockchainConfig.atlantisBlockNumber)
139+
(currentBlock >= config.blockchainConfig.eip161BlockNumber || currentBlock >= config.blockchainConfig.atlantisBlockNumber) &&
140+
maxCodeSizeExceeded
142141
}
143142

144143
private def saveNewContract(context: PC, address: Address, result: PR, config: EvmConfig): PR = {

src/test/scala/io/iohk/ethereum/extvm/VMClientSpec.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ class VMClientSpec extends FlatSpec with Matchers with MockFactory {
152152
eip150BlockNumber = blockchainConfig.eip150BlockNumber,
153153
eip160BlockNumber = blockchainConfig.eip160BlockNumber,
154154
eip161BlockNumber = blockchainConfig.eip161BlockNumber,
155-
maxCodeSize = ByteString(),
155+
maxCodeSize = blockchainConfig.maxCodeSize.get,
156156
accountStartNonce = blockchainConfig.accountStartNonce)
157157
val expectedHelloConfigMsg = msg.Hello.Config.EthereumConfig(expectedEthereumConfig)
158158
val expectedHelloMsg = msg.Hello(version = "testVersion", config = expectedHelloConfigMsg)

src/test/scala/io/iohk/ethereum/vm/VMSpec.scala

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,21 @@ class VMSpec extends WordSpec with PropertyChecks with Matchers {
5959
result2.world.getStorage(expectedNewAddress).load(storageOffset) shouldEqual secondStoredValue
6060
}
6161

62-
"go OOG if new contract's code size exceeds limit" in new ContractCreation {
62+
"go OOG if new contract's code size exceeds limit and block is after atlantis or eip161" in new ContractCreation {
6363
val codeSize = evmBlockchainConfig.maxCodeSize.get.toInt + 1
6464
val contractCode = ByteString(Array.fill(codeSize)(-1.toByte))
6565

66-
val context = getContext(inputData = initCode(contractCode))
66+
val context = getContext(inputData = initCode(contractCode),
67+
evmConfig = homesteadConfig.copy(blockchainConfig = homesteadConfig.blockchainConfig.copy(eip161BlockNumber = 1)))
6768
val result = vm.run(context)
6869

6970
result.error shouldBe Some(OutOfGas)
71+
72+
val context1 = getContext(inputData = initCode(contractCode),
73+
evmConfig = homesteadConfig.copy(blockchainConfig = homesteadConfig.blockchainConfig.copy(atlantisBlockNumber = 1)))
74+
val result1 = vm.run(context1)
75+
76+
result1.error shouldBe Some(OutOfGas)
7077
}
7178

7279
"fail to create contract in case of address conflict (non-empty code)" in new ContractCreation {

0 commit comments

Comments
 (0)