aboutsummaryrefslogtreecommitdiffstats
path: root/common/registrar/ethreg/api.go
diff options
context:
space:
mode:
authorJeffrey Wilcke <jeffrey@ethereum.org>2016-03-02 06:32:43 +0800
committerJeffrey Wilcke <geffobscura@gmail.com>2016-04-01 07:01:10 +0800
commitf0cbebb19f3137ee3ba0e66dadd1b5b9dbf98b1c (patch)
tree02e31a0e31040980e30e3a835ff9eba73e419439 /common/registrar/ethreg/api.go
parent10d3466c934bd425a8c941270749a652a588527d (diff)
downloaddexon-f0cbebb19f3137ee3ba0e66dadd1b5b9dbf98b1c.tar
dexon-f0cbebb19f3137ee3ba0e66dadd1b5b9dbf98b1c.tar.gz
dexon-f0cbebb19f3137ee3ba0e66dadd1b5b9dbf98b1c.tar.bz2
dexon-f0cbebb19f3137ee3ba0e66dadd1b5b9dbf98b1c.tar.lz
dexon-f0cbebb19f3137ee3ba0e66dadd1b5b9dbf98b1c.tar.xz
dexon-f0cbebb19f3137ee3ba0e66dadd1b5b9dbf98b1c.tar.zst
dexon-f0cbebb19f3137ee3ba0e66dadd1b5b9dbf98b1c.zip
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.
Diffstat (limited to 'common/registrar/ethreg/api.go')
-rw-r--r--common/registrar/ethreg/api.go20
1 files changed, 16 insertions, 4 deletions
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)