From f0cbebb19f3137ee3ba0e66dadd1b5b9dbf98b1c Mon Sep 17 00:00:00 2001
From: Jeffrey Wilcke <jeffrey@ethereum.org>
Date: Tue, 1 Mar 2016 23:32:43 +0100
Subject: core: added basic chain configuration

Added chain configuration options and write out during genesis database
insertion. If no "config" was found, nothing is written to the database.

Configurations are written on a per genesis base. This means
that any chain (which is identified by it's genesis hash) can have their
own chain settings.
---
 common/debug.go                | 16 ++++++++++++++++
 common/registrar/ethreg/api.go | 20 ++++++++++++++++----
 2 files changed, 32 insertions(+), 4 deletions(-)

(limited to 'common')

diff --git a/common/debug.go b/common/debug.go
index fa93d7bda..61acd8ce7 100644
--- a/common/debug.go
+++ b/common/debug.go
@@ -21,8 +21,10 @@ import (
 	"os"
 	"runtime"
 	"runtime/debug"
+	"strings"
 )
 
+// Report gives off a warning requesting the user to submit an issue to the github tracker.
 func Report(extra ...interface{}) {
 	fmt.Fprintln(os.Stderr, "You've encountered a sought after, hard to reproduce bug. Please report this to the developers <3 https://github.com/ethereum/go-ethereum/issues")
 	fmt.Fprintln(os.Stderr, extra...)
@@ -34,3 +36,17 @@ func Report(extra ...interface{}) {
 
 	fmt.Fprintln(os.Stderr, "#### BUG! PLEASE REPORT ####")
 }
+
+// PrintDepricationWarning prinst the given string in a box using fmt.Println.
+func PrintDepricationWarning(str string) {
+	line := strings.Repeat("#", len(str)+4)
+	emptyLine := strings.Repeat(" ", len(str))
+	fmt.Printf(`
+%s
+# %s #
+# %s #
+# %s #
+%s
+
+`, line, emptyLine, str, emptyLine, line)
+}
diff --git a/common/registrar/ethreg/api.go b/common/registrar/ethreg/api.go
index 60a97f4ce..d035616f2 100644
--- a/common/registrar/ethreg/api.go
+++ b/common/registrar/ethreg/api.go
@@ -27,6 +27,7 @@ import (
 	"github.com/ethereum/go-ethereum/core"
 	"github.com/ethereum/go-ethereum/core/state"
 	"github.com/ethereum/go-ethereum/core/types"
+	"github.com/ethereum/go-ethereum/core/vm"
 	"github.com/ethereum/go-ethereum/crypto"
 	"github.com/ethereum/go-ethereum/ethdb"
 	"github.com/ethereum/go-ethereum/logger"
@@ -35,6 +36,7 @@ import (
 
 // registryAPIBackend is a backend for an Ethereum Registry.
 type registryAPIBackend struct {
+	config  *core.ChainConfig
 	bc      *core.BlockChain
 	chainDb ethdb.Database
 	txPool  *core.TxPool
@@ -43,12 +45,22 @@ type registryAPIBackend struct {
 
 // PrivateRegistarAPI offers various functions to access the Ethereum registry.
 type PrivateRegistarAPI struct {
-	be *registryAPIBackend
+	config *core.ChainConfig
+	be     *registryAPIBackend
 }
 
 // NewPrivateRegistarAPI creates a new PrivateRegistarAPI instance.
-func NewPrivateRegistarAPI(bc *core.BlockChain, chainDb ethdb.Database, txPool *core.TxPool, am *accounts.Manager) *PrivateRegistarAPI {
-	return &PrivateRegistarAPI{&registryAPIBackend{bc, chainDb, txPool, am}}
+func NewPrivateRegistarAPI(config *core.ChainConfig, bc *core.BlockChain, chainDb ethdb.Database, txPool *core.TxPool, am *accounts.Manager) *PrivateRegistarAPI {
+	return &PrivateRegistarAPI{
+		config: config,
+		be: &registryAPIBackend{
+			config:  config,
+			bc:      bc,
+			chainDb: chainDb,
+			txPool:  txPool,
+			am:      am,
+		},
+	}
 }
 
 // SetGlobalRegistrar allows clients to set the global registry for the node.
@@ -179,7 +191,7 @@ func (be *registryAPIBackend) Call(fromStr, toStr, valueStr, gasStr, gasPriceStr
 	}
 
 	header := be.bc.CurrentBlock().Header()
-	vmenv := core.NewEnv(statedb, be.bc, msg, header, nil)
+	vmenv := core.NewEnv(statedb, be.config, be.bc, msg, header, vm.Config{})
 	gp := new(core.GasPool).AddGas(common.MaxBig)
 	res, gas, err := core.ApplyMessage(vmenv, msg, gp)
 
-- 
cgit v1.2.3