diff --git a/rskj-core/src/main/java/org/ethereum/config/blockchain/upgrades/ConsensusRule.java b/rskj-core/src/main/java/org/ethereum/config/blockchain/upgrades/ConsensusRule.java index 36ae79b5ebf..d2cf3f1838b 100644 --- a/rskj-core/src/main/java/org/ethereum/config/blockchain/upgrades/ConsensusRule.java +++ b/rskj-core/src/main/java/org/ethereum/config/blockchain/upgrades/ConsensusRule.java @@ -95,7 +95,9 @@ public enum ConsensusRule { RSKIP417("rskip417"), RSKIP428("rskip428"), RSKIP434("rskip434"), - RSKIP438("rskip438") + RSKIP438("rskip438"), + RSKIP453("rskip453") + ; private String configKey; diff --git a/rskj-core/src/main/java/org/ethereum/vm/program/Program.java b/rskj-core/src/main/java/org/ethereum/vm/program/Program.java index 9edacb01d14..7d78e19a5e5 100644 --- a/rskj-core/src/main/java/org/ethereum/vm/program/Program.java +++ b/rskj-core/src/main/java/org/ethereum/vm/program/Program.java @@ -684,12 +684,24 @@ private ProgramResult getProgramResult(RskAddress senderAddress, byte[] nonce, D this, "No gas to return just created contract", storageCost)); + + if (activations.isActive(ConsensusRule.RSKIP453)) { + track.rollback(); + stackPushZero(); + return programResult; + } } else if (codeLength > Constants.getMaxContractSize()) { programResult.setException( ExceptionHelper.tooLargeContractSize( this, Constants.getMaxContractSize(), codeLength)); + + if (activations.isActive(ConsensusRule.RSKIP453)) { + track.rollback(); + stackPushZero(); + return programResult; + } } else { programResult.spendGas(storageCost); track.saveCode(contractAddress, code); diff --git a/rskj-core/src/main/resources/expected.conf b/rskj-core/src/main/resources/expected.conf index 18a0eb82706..3eb062e4f87 100644 --- a/rskj-core/src/main/resources/expected.conf +++ b/rskj-core/src/main/resources/expected.conf @@ -97,6 +97,7 @@ blockchain = { rskip428 = rskip434 = rskip438 = + rskip453 = } } gc = { diff --git a/rskj-core/src/main/resources/reference.conf b/rskj-core/src/main/resources/reference.conf index cb42c94872f..f7ecf8f1221 100644 --- a/rskj-core/src/main/resources/reference.conf +++ b/rskj-core/src/main/resources/reference.conf @@ -82,6 +82,7 @@ blockchain = { rskip428 = lovell700 rskip434 = arrowhead631 rskip438 = lovell700 + rskip453 = lovell700 } } gc = {