aboutsummaryrefslogtreecommitdiffstats
path: root/cmd
diff options
context:
space:
mode:
Diffstat (limited to 'cmd')
-rw-r--r--cmd/bootnode/main.go3
-rw-r--r--cmd/clef/extapi_changelog.md7
-rw-r--r--cmd/clef/main.go10
-rw-r--r--cmd/clef/tutorial.md6
-rw-r--r--cmd/evm/runner.go25
-rw-r--r--cmd/faucet/faucet.go120
-rw-r--r--cmd/geth/chaincmd.go4
-rw-r--r--cmd/geth/main.go2
-rw-r--r--cmd/geth/usage.go2
-rw-r--r--cmd/p2psim/main.go4
-rw-r--r--cmd/puppeth/wizard_dashboard.go2
-rw-r--r--cmd/swarm/main.go6
-rw-r--r--cmd/swarm/run_test.go13
-rw-r--r--cmd/utils/flags.go27
-rw-r--r--cmd/wnode/main.go10
15 files changed, 155 insertions, 86 deletions
diff --git a/cmd/bootnode/main.go b/cmd/bootnode/main.go
index 2e93cc04d..845900865 100644
--- a/cmd/bootnode/main.go
+++ b/cmd/bootnode/main.go
@@ -29,6 +29,7 @@ import (
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/p2p/discover"
"github.com/ethereum/go-ethereum/p2p/discv5"
+ "github.com/ethereum/go-ethereum/p2p/enode"
"github.com/ethereum/go-ethereum/p2p/nat"
"github.com/ethereum/go-ethereum/p2p/netutil"
)
@@ -85,7 +86,7 @@ func main() {
}
if *writeAddr {
- fmt.Printf("%v\n", discover.PubkeyID(&nodeKey.PublicKey))
+ fmt.Printf("%v\n", enode.PubkeyToIDV4(&nodeKey.PublicKey))
os.Exit(0)
}
diff --git a/cmd/clef/extapi_changelog.md b/cmd/clef/extapi_changelog.md
index 2014e90ae..6c2c3e819 100644
--- a/cmd/clef/extapi_changelog.md
+++ b/cmd/clef/extapi_changelog.md
@@ -1,6 +1,13 @@
### Changelog for external API
+#### 4.0.0
+* The external `account_Ecrecover`-method was removed.
+* The external `account_Import`-method was removed.
+
+#### 3.0.0
+
+* The external `account_List`-method was changed to not expose `url`, which contained info about the local filesystem. It now returns only a list of addresses.
#### 2.0.0
diff --git a/cmd/clef/main.go b/cmd/clef/main.go
index f363a86f2..c060285be 100644
--- a/cmd/clef/main.go
+++ b/cmd/clef/main.go
@@ -48,7 +48,7 @@ import (
)
// ExternalAPIVersion -- see extapi_changelog.md
-const ExternalAPIVersion = "2.0.0"
+const ExternalAPIVersion = "3.0.0"
// InternalAPIVersion -- see intapi_changelog.md
const InternalAPIVersion = "2.0.0"
@@ -70,6 +70,10 @@ var (
Value: 4,
Usage: "log level to emit to the screen",
}
+ advancedMode = cli.BoolFlag{
+ Name: "advanced",
+ Usage: "If enabled, issues warnings instead of rejections for suspicious requests. Default off",
+ }
keystoreFlag = cli.StringFlag{
Name: "keystore",
Value: filepath.Join(node.DefaultDataDir(), "keystore"),
@@ -191,6 +195,7 @@ func init() {
ruleFlag,
stdiouiFlag,
testFlag,
+ advancedMode,
}
app.Action = signer
app.Commands = []cli.Command{initCommand, attestCommand, addCredentialCommand}
@@ -384,7 +389,8 @@ func signer(c *cli.Context) error {
c.String(keystoreFlag.Name),
c.Bool(utils.NoUSBFlag.Name),
ui, db,
- c.Bool(utils.LightKDFFlag.Name))
+ c.Bool(utils.LightKDFFlag.Name),
+ c.Bool(advancedMode.Name))
api = apiImpl
diff --git a/cmd/clef/tutorial.md b/cmd/clef/tutorial.md
index d59e08ac7..ed86f4810 100644
--- a/cmd/clef/tutorial.md
+++ b/cmd/clef/tutorial.md
@@ -52,7 +52,7 @@ INFO [02-21|12:14:38] Ruleset attestation updated sha256=6c21d17374
At this point, we then start the signer with the rule-file:
```text
-#./signer --rules rules.json
+#./signer --rules rules.js
INFO [02-21|12:15:18] Using CLI as UI-channel
INFO [02-21|12:15:18] Loaded 4byte db signatures=5509 file=./4byte.json
@@ -153,7 +153,7 @@ INFO [02-21|14:36:30] Ruleset attestation updated sha256=2a0cb661da
And start the signer:
```
-#./signer --rules rules.js
+#./signer --rules rules.js --rpc
INFO [02-21|14:41:56] Using CLI as UI-channel
INFO [02-21|14:41:56] Loaded 4byte db signatures=5509 file=./4byte.json
@@ -190,7 +190,7 @@ INFO [02-21|14:42:56] Op rejected
The signer also stores all traffic over the external API in a log file. The last 4 lines shows the two requests and their responses:
```text
-#tail audit.log -n 4
+#tail -n 4 audit.log
t=2018-02-21T14:42:41+0100 lvl=info msg=Sign api=signer type=request metadata="{\"remote\":\"127.0.0.1:49706\",\"local\":\"localhost:8550\",\"scheme\":\"HTTP/1.1\"}" addr="0x694267f14675d7e1b9494fd8d72fefe1755710fa [chksum INVALID]" data=202062617a6f6e6b2062617a2067617a0a
t=2018-02-21T14:42:42+0100 lvl=info msg=Sign api=signer type=response data=93e6161840c3ae1efc26dc68dedab6e8fc233bb3fefa1b4645dbf6609b93dace160572ea4ab33240256bb6d3dadb60dcd9c515d6374d3cf614ee897408d41d541c error=nil
t=2018-02-21T14:42:56+0100 lvl=info msg=Sign api=signer type=request metadata="{\"remote\":\"127.0.0.1:49708\",\"local\":\"localhost:8550\",\"scheme\":\"HTTP/1.1\"}" addr="0x694267f14675d7e1b9494fd8d72fefe1755710fa [chksum INVALID]" data=2020626f6e6b2062617a2067617a0a
diff --git a/cmd/evm/runner.go b/cmd/evm/runner.go
index 7138a9ddd..962fc021d 100644
--- a/cmd/evm/runner.go
+++ b/cmd/evm/runner.go
@@ -80,13 +80,13 @@ func runCmd(ctx *cli.Context) error {
}
var (
- tracer vm.Tracer
- debugLogger *vm.StructLogger
- statedb *state.StateDB
- chainConfig *params.ChainConfig
- sender = common.BytesToAddress([]byte("sender"))
- receiver = common.BytesToAddress([]byte("receiver"))
- blockNumber uint64
+ tracer vm.Tracer
+ debugLogger *vm.StructLogger
+ statedb *state.StateDB
+ chainConfig *params.ChainConfig
+ sender = common.BytesToAddress([]byte("sender"))
+ receiver = common.BytesToAddress([]byte("receiver"))
+ genesisConfig *core.Genesis
)
if ctx.GlobalBool(MachineFlag.Name) {
tracer = NewJSONLogger(logconfig, os.Stdout)
@@ -98,13 +98,14 @@ func runCmd(ctx *cli.Context) error {
}
if ctx.GlobalString(GenesisFlag.Name) != "" {
gen := readGenesis(ctx.GlobalString(GenesisFlag.Name))
+ genesisConfig = gen
db := ethdb.NewMemDatabase()
genesis := gen.ToBlock(db)
statedb, _ = state.New(genesis.Root(), state.NewDatabase(db))
chainConfig = gen.Config
- blockNumber = gen.Number
} else {
statedb, _ = state.New(common.Hash{}, state.NewDatabase(ethdb.NewMemDatabase()))
+ genesisConfig = new(core.Genesis)
}
if ctx.GlobalString(SenderFlag.Name) != "" {
sender = common.HexToAddress(ctx.GlobalString(SenderFlag.Name))
@@ -156,13 +157,19 @@ func runCmd(ctx *cli.Context) error {
}
initialGas := ctx.GlobalUint64(GasFlag.Name)
+ if genesisConfig.GasLimit != 0 {
+ initialGas = genesisConfig.GasLimit
+ }
runtimeConfig := runtime.Config{
Origin: sender,
State: statedb,
GasLimit: initialGas,
GasPrice: utils.GlobalBig(ctx, PriceFlag.Name),
Value: utils.GlobalBig(ctx, ValueFlag.Name),
- BlockNumber: new(big.Int).SetUint64(blockNumber),
+ Difficulty: genesisConfig.Difficulty,
+ Time: new(big.Int).SetUint64(genesisConfig.Timestamp),
+ Coinbase: genesisConfig.Coinbase,
+ BlockNumber: new(big.Int).SetUint64(genesisConfig.Number),
EVMConfig: vm.Config{
Tracer: tracer,
Debug: ctx.GlobalBool(DebugFlag.Name) || ctx.GlobalBool(MachineFlag.Name),
diff --git a/cmd/faucet/faucet.go b/cmd/faucet/faucet.go
index cfe4e45f1..2ffe12276 100644
--- a/cmd/faucet/faucet.go
+++ b/cmd/faucet/faucet.go
@@ -54,8 +54,8 @@ import (
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/node"
"github.com/ethereum/go-ethereum/p2p"
- "github.com/ethereum/go-ethereum/p2p/discover"
"github.com/ethereum/go-ethereum/p2p/discv5"
+ "github.com/ethereum/go-ethereum/p2p/enode"
"github.com/ethereum/go-ethereum/p2p/nat"
"github.com/ethereum/go-ethereum/params"
"golang.org/x/net/websocket"
@@ -199,6 +199,8 @@ type faucet struct {
keystore *keystore.KeyStore // Keystore containing the single signer
account accounts.Account // Account funding user faucet requests
+ head *types.Header // Current head header of the faucet
+ balance *big.Int // Current balance of the faucet
nonce uint64 // Current pending nonce of the faucet
price *big.Int // Current gas price to issue funds with
@@ -253,8 +255,10 @@ func newFaucet(genesis *core.Genesis, port int, enodes []*discv5.Node, network u
return nil, err
}
for _, boot := range enodes {
- old, _ := discover.ParseNode(boot.String())
- stack.Server().AddPeer(old)
+ old, err := enode.ParseV4(boot.String())
+ if err != nil {
+ stack.Server().AddPeer(old)
+ }
}
// Attach to the client and retrieve and interesting metadatas
api, err := stack.Attach()
@@ -324,33 +328,30 @@ func (f *faucet) apiHandler(conn *websocket.Conn) {
nonce uint64
err error
)
- for {
- // Attempt to retrieve the stats, may error on no faucet connectivity
- ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
- head, err = f.client.HeaderByNumber(ctx, nil)
- if err == nil {
- balance, err = f.client.BalanceAt(ctx, f.account.Address, head.Number)
- if err == nil {
- nonce, err = f.client.NonceAt(ctx, f.account.Address, nil)
- }
+ for head == nil || balance == nil {
+ // Retrieve the current stats cached by the faucet
+ f.lock.RLock()
+ if f.head != nil {
+ head = types.CopyHeader(f.head)
}
- cancel()
+ if f.balance != nil {
+ balance = new(big.Int).Set(f.balance)
+ }
+ nonce = f.nonce
+ f.lock.RUnlock()
- // If stats retrieval failed, wait a bit and retry
- if err != nil {
- if err = sendError(conn, errors.New("Faucet offline: "+err.Error())); err != nil {
+ if head == nil || balance == nil {
+ // Report the faucet offline until initial stats are ready
+ if err = sendError(conn, errors.New("Faucet offline")); err != nil {
log.Warn("Failed to send faucet error to client", "err", err)
return
}
time.Sleep(3 * time.Second)
- continue
}
- // Initial stats reported successfully, proceed with user interaction
- break
}
// Send over the initial stats and the latest header
if err = send(conn, map[string]interface{}{
- "funds": balance.Div(balance, ether),
+ "funds": new(big.Int).Div(balance, ether),
"funded": nonce,
"peers": f.stack.Server().PeerCount(),
"requests": f.reqs,
@@ -520,6 +521,47 @@ func (f *faucet) apiHandler(conn *websocket.Conn) {
}
}
+// refresh attempts to retrieve the latest header from the chain and extract the
+// associated faucet balance and nonce for connectivity caching.
+func (f *faucet) refresh(head *types.Header) error {
+ // Ensure a state update does not run for too long
+ ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
+ defer cancel()
+
+ // If no header was specified, use the current chain head
+ var err error
+ if head == nil {
+ if head, err = f.client.HeaderByNumber(ctx, nil); err != nil {
+ return err
+ }
+ }
+ // Retrieve the balance, nonce and gas price from the current head
+ var (
+ balance *big.Int
+ nonce uint64
+ price *big.Int
+ )
+ if balance, err = f.client.BalanceAt(ctx, f.account.Address, head.Number); err != nil {
+ return err
+ }
+ if nonce, err = f.client.NonceAt(ctx, f.account.Address, head.Number); err != nil {
+ return err
+ }
+ if price, err = f.client.SuggestGasPrice(ctx); err != nil {
+ return err
+ }
+ // Everything succeeded, update the cached stats and eject old requests
+ f.lock.Lock()
+ f.head, f.balance = head, balance
+ f.price, f.nonce = price, nonce
+ for len(f.reqs) > 0 && f.reqs[0].Tx.Nonce() < f.nonce {
+ f.reqs = f.reqs[1:]
+ }
+ f.lock.Unlock()
+
+ return nil
+}
+
// loop keeps waiting for interesting events and pushes them out to connected
// websockets.
func (f *faucet) loop() {
@@ -537,45 +579,27 @@ func (f *faucet) loop() {
go func() {
for head := range update {
// New chain head arrived, query the current stats and stream to clients
- var (
- balance *big.Int
- nonce uint64
- price *big.Int
- err error
- )
- ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
- balance, err = f.client.BalanceAt(ctx, f.account.Address, head.Number)
- if err == nil {
- nonce, err = f.client.NonceAt(ctx, f.account.Address, nil)
- if err == nil {
- price, err = f.client.SuggestGasPrice(ctx)
- }
+ timestamp := time.Unix(head.Time.Int64(), 0)
+ if time.Since(timestamp) > time.Hour {
+ log.Warn("Skipping faucet refresh, head too old", "number", head.Number, "hash", head.Hash(), "age", common.PrettyAge(timestamp))
+ continue
}
- cancel()
-
- // If querying the data failed, try for the next block
- if err != nil {
+ if err := f.refresh(head); err != nil {
log.Warn("Failed to update faucet state", "block", head.Number, "hash", head.Hash(), "err", err)
continue
- } else {
- log.Info("Updated faucet state", "block", head.Number, "hash", head.Hash(), "balance", balance, "nonce", nonce, "price", price)
}
// Faucet state retrieved, update locally and send to clients
- balance = new(big.Int).Div(balance, ether)
+ f.lock.RLock()
+ log.Info("Updated faucet state", "number", head.Number, "hash", head.Hash(), "age", common.PrettyAge(timestamp), "balance", f.balance, "nonce", f.nonce, "price", f.price)
- f.lock.Lock()
- f.price, f.nonce = price, nonce
- for len(f.reqs) > 0 && f.reqs[0].Tx.Nonce() < f.nonce {
- f.reqs = f.reqs[1:]
- }
- f.lock.Unlock()
+ balance := new(big.Int).Div(f.balance, ether)
+ peers := f.stack.Server().PeerCount()
- f.lock.RLock()
for _, conn := range f.conns {
if err := send(conn, map[string]interface{}{
"funds": balance,
"funded": f.nonce,
- "peers": f.stack.Server().PeerCount(),
+ "peers": peers,
"requests": f.reqs,
}, time.Second); err != nil {
log.Warn("Failed to send stats to client", "err", err)
diff --git a/cmd/geth/chaincmd.go b/cmd/geth/chaincmd.go
index 87548865b..562c7e0de 100644
--- a/cmd/geth/chaincmd.go
+++ b/cmd/geth/chaincmd.go
@@ -340,9 +340,9 @@ func importPreimages(ctx *cli.Context) error {
start := time.Now()
if err := utils.ImportPreimages(diskdb, ctx.Args().First()); err != nil {
- utils.Fatalf("Export error: %v\n", err)
+ utils.Fatalf("Import error: %v\n", err)
}
- fmt.Printf("Export done in %v\n", time.Since(start))
+ fmt.Printf("Import done in %v\n", time.Since(start))
return nil
}
diff --git a/cmd/geth/main.go b/cmd/geth/main.go
index 134d5a4c0..fae4b5718 100644
--- a/cmd/geth/main.go
+++ b/cmd/geth/main.go
@@ -130,6 +130,8 @@ var (
utils.NoCompactionFlag,
utils.GpoBlocksFlag,
utils.GpoPercentileFlag,
+ utils.EWASMInterpreterFlag,
+ utils.EVMInterpreterFlag,
configFileFlag,
}
diff --git a/cmd/geth/usage.go b/cmd/geth/usage.go
index a674eca4f..8b0491ce3 100644
--- a/cmd/geth/usage.go
+++ b/cmd/geth/usage.go
@@ -207,6 +207,8 @@ var AppHelpFlagGroups = []flagGroup{
Name: "VIRTUAL MACHINE",
Flags: []cli.Flag{
utils.VMEnableDebugFlag,
+ utils.EVMInterpreterFlag,
+ utils.EWASMInterpreterFlag,
},
},
{
diff --git a/cmd/p2psim/main.go b/cmd/p2psim/main.go
index 6604b671f..f2c1bf970 100644
--- a/cmd/p2psim/main.go
+++ b/cmd/p2psim/main.go
@@ -47,7 +47,7 @@ import (
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/p2p"
- "github.com/ethereum/go-ethereum/p2p/discover"
+ "github.com/ethereum/go-ethereum/p2p/enode"
"github.com/ethereum/go-ethereum/p2p/simulations"
"github.com/ethereum/go-ethereum/p2p/simulations/adapters"
"github.com/ethereum/go-ethereum/rpc"
@@ -285,7 +285,7 @@ func createNode(ctx *cli.Context) error {
if err != nil {
return err
}
- config.ID = discover.PubkeyID(&privKey.PublicKey)
+ config.ID = enode.PubkeyToIDV4(&privKey.PublicKey)
config.PrivateKey = privKey
}
if services := ctx.String("services"); services != "" {
diff --git a/cmd/puppeth/wizard_dashboard.go b/cmd/puppeth/wizard_dashboard.go
index 5f781c415..1a01631ff 100644
--- a/cmd/puppeth/wizard_dashboard.go
+++ b/cmd/puppeth/wizard_dashboard.go
@@ -92,7 +92,7 @@ func (w *wizard) deployDashboard() {
pages = append(pages, page)
}
}
- // Promt the user to chose one, enter manually or simply not list this service
+ // Prompt the user to chose one, enter manually or simply not list this service
defLabel, defChoice := "don't list", len(pages)+2
if len(pages) > 0 {
defLabel, defChoice = pages[0], 1
diff --git a/cmd/swarm/main.go b/cmd/swarm/main.go
index 8967936b6..71d707c2b 100644
--- a/cmd/swarm/main.go
+++ b/cmd/swarm/main.go
@@ -38,7 +38,7 @@ import (
"github.com/ethereum/go-ethereum/internal/debug"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/node"
- "github.com/ethereum/go-ethereum/p2p/discover"
+ "github.com/ethereum/go-ethereum/p2p/enode"
"github.com/ethereum/go-ethereum/swarm"
bzzapi "github.com/ethereum/go-ethereum/swarm/api"
swarmmetrics "github.com/ethereum/go-ethereum/swarm/metrics"
@@ -795,10 +795,10 @@ func setSwarmBootstrapNodes(ctx *cli.Context, cfg *node.Config) {
return
}
- cfg.P2P.BootstrapNodes = []*discover.Node{}
+ cfg.P2P.BootstrapNodes = []*enode.Node{}
for _, url := range SwarmBootnodes {
- node, err := discover.ParseNode(url)
+ node, err := enode.ParseV4(url)
if err != nil {
log.Error("Bootstrap URL invalid", "enode", url, "err", err)
}
diff --git a/cmd/swarm/run_test.go b/cmd/swarm/run_test.go
index 3e766dc10..e2f54c8ff 100644
--- a/cmd/swarm/run_test.go
+++ b/cmd/swarm/run_test.go
@@ -234,6 +234,7 @@ func existingTestNode(t *testing.T, dir string, bzzaccount string) *testNode {
// start the node
node.Cmd = runSwarm(t,
"--port", p2pPort,
+ "--nat", "extip:127.0.0.1",
"--nodiscover",
"--datadir", dir,
"--ipcpath", conf.IPCPath,
@@ -241,7 +242,7 @@ func existingTestNode(t *testing.T, dir string, bzzaccount string) *testNode {
"--bzzaccount", bzzaccount,
"--bzznetworkid", "321",
"--bzzport", httpPort,
- "--verbosity", "6",
+ "--verbosity", "3",
)
node.Cmd.InputLine(testPassphrase)
defer func() {
@@ -284,8 +285,8 @@ func existingTestNode(t *testing.T, dir string, bzzaccount string) *testNode {
if err := node.Client.Call(&nodeInfo, "admin_nodeInfo"); err != nil {
t.Fatal(err)
}
- node.Enode = fmt.Sprintf("enode://%s@127.0.0.1:%s", nodeInfo.ID, p2pPort)
-
+ node.Enode = nodeInfo.Enode
+ node.IpcPath = conf.IPCPath
return node
}
@@ -309,6 +310,7 @@ func newTestNode(t *testing.T, dir string) *testNode {
// start the node
node.Cmd = runSwarm(t,
"--port", p2pPort,
+ "--nat", "extip:127.0.0.1",
"--nodiscover",
"--datadir", dir,
"--ipcpath", conf.IPCPath,
@@ -316,7 +318,7 @@ func newTestNode(t *testing.T, dir string) *testNode {
"--bzzaccount", account.Address.String(),
"--bzznetworkid", "321",
"--bzzport", httpPort,
- "--verbosity", "6",
+ "--verbosity", "3",
)
node.Cmd.InputLine(testPassphrase)
defer func() {
@@ -359,9 +361,8 @@ func newTestNode(t *testing.T, dir string) *testNode {
if err := node.Client.Call(&nodeInfo, "admin_nodeInfo"); err != nil {
t.Fatal(err)
}
- node.Enode = fmt.Sprintf("enode://%s@127.0.0.1:%s", nodeInfo.ID, p2pPort)
+ node.Enode = nodeInfo.Enode
node.IpcPath = conf.IPCPath
-
return node
}
diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go
index 0fecae9aa..b48f37177 100644
--- a/cmd/utils/flags.go
+++ b/cmd/utils/flags.go
@@ -51,8 +51,8 @@ import (
"github.com/ethereum/go-ethereum/metrics/influxdb"
"github.com/ethereum/go-ethereum/node"
"github.com/ethereum/go-ethereum/p2p"
- "github.com/ethereum/go-ethereum/p2p/discover"
"github.com/ethereum/go-ethereum/p2p/discv5"
+ "github.com/ethereum/go-ethereum/p2p/enode"
"github.com/ethereum/go-ethereum/p2p/nat"
"github.com/ethereum/go-ethereum/p2p/netutil"
"github.com/ethereum/go-ethereum/params"
@@ -610,6 +610,17 @@ var (
Usage: "InfluxDB `host` tag attached to all measurements",
Value: "localhost",
}
+
+ EWASMInterpreterFlag = cli.StringFlag{
+ Name: "vm.ewasm",
+ Usage: "External ewasm configuration (default = built-in interpreter)",
+ Value: "",
+ }
+ EVMInterpreterFlag = cli.StringFlag{
+ Name: "vm.evm",
+ Usage: "External EVM configuration (default = built-in interpreter)",
+ Value: "",
+ }
)
// MakeDataDir retrieves the currently requested data directory, terminating
@@ -681,9 +692,9 @@ func setBootstrapNodes(ctx *cli.Context, cfg *p2p.Config) {
return // already set, don't apply defaults.
}
- cfg.BootstrapNodes = make([]*discover.Node, 0, len(urls))
+ cfg.BootstrapNodes = make([]*enode.Node, 0, len(urls))
for _, url := range urls {
- node, err := discover.ParseNode(url)
+ node, err := enode.ParseV4(url)
if err != nil {
log.Crit("Bootstrap URL invalid", "enode", url, "err", err)
}
@@ -1184,6 +1195,14 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *eth.Config) {
cfg.EnablePreimageRecording = ctx.GlobalBool(VMEnableDebugFlag.Name)
}
+ if ctx.GlobalIsSet(EWASMInterpreterFlag.Name) {
+ cfg.EWASMInterpreter = ctx.GlobalString(EWASMInterpreterFlag.Name)
+ }
+
+ if ctx.GlobalIsSet(EVMInterpreterFlag.Name) {
+ cfg.EVMInterpreter = ctx.GlobalString(EVMInterpreterFlag.Name)
+ }
+
// Override any default configs for hard coded networks.
switch {
case ctx.GlobalBool(TestnetFlag.Name):
@@ -1379,7 +1398,7 @@ func MakeChain(ctx *cli.Context, stack *node.Node) (chain *core.BlockChain, chai
cache.TrieNodeLimit = ctx.GlobalInt(CacheFlag.Name) * ctx.GlobalInt(CacheGCFlag.Name) / 100
}
vmcfg := vm.Config{EnablePreimageRecording: ctx.GlobalBool(VMEnableDebugFlag.Name)}
- chain, err = core.NewBlockChain(chainDb, cache, config, engine, vmcfg)
+ chain, err = core.NewBlockChain(chainDb, cache, config, engine, vmcfg, nil)
if err != nil {
Fatalf("Can't create BlockChain: %v", err)
}
diff --git a/cmd/wnode/main.go b/cmd/wnode/main.go
index ae79841f6..97e585201 100644
--- a/cmd/wnode/main.go
+++ b/cmd/wnode/main.go
@@ -41,7 +41,7 @@ import (
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/p2p"
- "github.com/ethereum/go-ethereum/p2p/discover"
+ "github.com/ethereum/go-ethereum/p2p/enode"
"github.com/ethereum/go-ethereum/p2p/nat"
"github.com/ethereum/go-ethereum/whisper/mailserver"
whisper "github.com/ethereum/go-ethereum/whisper/whisperv6"
@@ -175,7 +175,7 @@ func initialize() {
log.Root().SetHandler(log.LvlFilterHandler(log.Lvl(*argVerbosity), log.StreamHandler(os.Stderr, log.TerminalFormat(false))))
done = make(chan struct{})
- var peers []*discover.Node
+ var peers []*enode.Node
var err error
if *generateKey {
@@ -203,7 +203,7 @@ func initialize() {
if len(*argEnode) == 0 {
argEnode = scanLineA("Please enter the peer's enode: ")
}
- peer := discover.MustParseNode(*argEnode)
+ peer := enode.MustParseV4(*argEnode)
peers = append(peers, peer)
}
@@ -747,11 +747,11 @@ func requestExpiredMessagesLoop() {
}
func extractIDFromEnode(s string) []byte {
- n, err := discover.ParseNode(s)
+ n, err := enode.ParseV4(s)
if err != nil {
utils.Fatalf("Failed to parse enode: %s", err)
}
- return n.ID[:]
+ return n.ID().Bytes()
}
// obfuscateBloom adds 16 random bits to the bloom