aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/genesis.go1
-rw-r--r--core/vm/gas_table.go4
-rw-r--r--core/vm/logger_json.go6
3 files changed, 9 insertions, 2 deletions
diff --git a/core/genesis.go b/core/genesis.go
index c96cb17a3..62cde87b5 100644
--- a/core/genesis.go
+++ b/core/genesis.go
@@ -183,6 +183,7 @@ func SetupGenesisBlockWithOverride(db ethdb.Database, genesis *Genesis, constant
newcfg := genesis.configOrDefault(stored)
if constantinopleOverride != nil {
newcfg.ConstantinopleBlock = constantinopleOverride
+ newcfg.PetersburgBlock = constantinopleOverride
}
storedcfg := rawdb.ReadChainConfig(db, stored)
if storedcfg == nil {
diff --git a/core/vm/gas_table.go b/core/vm/gas_table.go
index df79f86ec..9203e10a7 100644
--- a/core/vm/gas_table.go
+++ b/core/vm/gas_table.go
@@ -121,7 +121,9 @@ func gasSStore(gt params.GasTable, evm *EVM, contract *Contract, stack *Stack, m
current = evm.StateDB.GetState(contract.Address(), common.BigToHash(x))
)
// The legacy gas metering only takes into consideration the current state
- if !evm.chainRules.IsConstantinople {
+ // Legacy rules should be applied if we are in Petersburg (removal of EIP-1283)
+ // OR Constantinople is not active
+ if evm.chainRules.IsPetersburg || !evm.chainRules.IsConstantinople {
// This checks for 3 scenario's and calculates gas accordingly:
//
// 1. From a zero-value address to a non-zero value (NEW VALUE)
diff --git a/core/vm/logger_json.go b/core/vm/logger_json.go
index ac3c40759..ff379a4ef 100644
--- a/core/vm/logger_json.go
+++ b/core/vm/logger_json.go
@@ -34,7 +34,11 @@ type JSONLogger struct {
// NewJSONLogger creates a new EVM tracer that prints execution steps as JSON objects
// into the provided stream.
func NewJSONLogger(cfg *LogConfig, writer io.Writer) *JSONLogger {
- return &JSONLogger{json.NewEncoder(writer), cfg}
+ l := &JSONLogger{json.NewEncoder(writer), cfg}
+ if l.cfg == nil {
+ l.cfg = &LogConfig{}
+ }
+ return l
}
func (l *JSONLogger) CaptureStart(from common.Address, to common.Address, create bool, input []byte, gas uint64, value *big.Int) error {