aboutsummaryrefslogtreecommitdiffstats
path: root/cmd
diff options
context:
space:
mode:
Diffstat (limited to 'cmd')
-rw-r--r--cmd/clef/main.go10
-rw-r--r--cmd/geth/main.go16
-rw-r--r--cmd/geth/usage.go1
-rw-r--r--cmd/utils/flags.go30
4 files changed, 35 insertions, 22 deletions
diff --git a/cmd/clef/main.go b/cmd/clef/main.go
index 519d63b3c..e2b85288d 100644
--- a/cmd/clef/main.go
+++ b/cmd/clef/main.go
@@ -49,12 +49,6 @@ import (
"gopkg.in/urfave/cli.v1"
)
-// ExternalAPIVersion -- see extapi_changelog.md
-const ExternalAPIVersion = "4.0.0"
-
-// InternalAPIVersion -- see intapi_changelog.md
-const InternalAPIVersion = "3.0.0"
-
const legalWarning = `
WARNING!
@@ -479,8 +473,8 @@ func signer(c *cli.Context) error {
}
ui.OnSignerStartup(core.StartupInfo{
Info: map[string]interface{}{
- "extapi_version": ExternalAPIVersion,
- "intapi_version": InternalAPIVersion,
+ "extapi_version": core.ExternalAPIVersion,
+ "intapi_version": core.InternalAPIVersion,
"extapi_http": extapiURL,
"extapi_ipc": ipcapiURL,
},
diff --git a/cmd/geth/main.go b/cmd/geth/main.go
index 0a6616312..dca02c82e 100644
--- a/cmd/geth/main.go
+++ b/cmd/geth/main.go
@@ -62,6 +62,7 @@ var (
utils.BootnodesV5Flag,
utils.DataDirFlag,
utils.KeyStoreDirFlag,
+ utils.ExternalSignerFlag,
utils.NoUSBFlag,
utils.DashboardEnabledFlag,
utils.DashboardAddrFlag,
@@ -293,13 +294,14 @@ func startNode(ctx *cli.Context, stack *node.Node) {
utils.StartNode(stack)
// Unlock any account specifically requested
- ks := stack.AccountManager().Backends(keystore.KeyStoreType)[0].(*keystore.KeyStore)
-
- passwords := utils.MakePasswordList(ctx)
- unlocks := strings.Split(ctx.GlobalString(utils.UnlockedAccountFlag.Name), ",")
- for i, account := range unlocks {
- if trimmed := strings.TrimSpace(account); trimmed != "" {
- unlockAccount(ctx, ks, trimmed, i, passwords)
+ if keystores := stack.AccountManager().Backends(keystore.KeyStoreType); len(keystores) > 0 {
+ ks := keystores[0].(*keystore.KeyStore)
+ passwords := utils.MakePasswordList(ctx)
+ unlocks := strings.Split(ctx.GlobalString(utils.UnlockedAccountFlag.Name), ",")
+ for i, account := range unlocks {
+ if trimmed := strings.TrimSpace(account); trimmed != "" {
+ unlockAccount(ctx, ks, trimmed, i, passwords)
+ }
}
}
// Register wallet event handlers to open and auto-derive wallets
diff --git a/cmd/geth/usage.go b/cmd/geth/usage.go
index 1579134f9..0b5c6fd90 100644
--- a/cmd/geth/usage.go
+++ b/cmd/geth/usage.go
@@ -145,6 +145,7 @@ var AppHelpFlagGroups = []flagGroup{
Flags: []cli.Flag{
utils.UnlockedAccountFlag,
utils.PasswordFileFlag,
+ utils.ExternalSignerFlag,
},
},
{
diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go
index a3602182a..bf20abe81 100644
--- a/cmd/utils/flags.go
+++ b/cmd/utils/flags.go
@@ -427,7 +427,11 @@ var (
Usage: "Password file to use for non-interactive password input",
Value: "",
}
-
+ ExternalSignerFlag = cli.StringFlag{
+ Name: "signer",
+ Usage: "External signer (url or path to ipc file)",
+ Value: "",
+ }
VMEnableDebugFlag = cli.BoolFlag{
Name: "vmdebug",
Usage: "Record information useful for VM and contract debugging",
@@ -990,11 +994,15 @@ func setEtherbase(ctx *cli.Context, ks *keystore.KeyStore, cfg *eth.Config) {
}
// Convert the etherbase into an address and configure it
if etherbase != "" {
- account, err := MakeAddress(ks, etherbase)
- if err != nil {
- Fatalf("Invalid miner etherbase: %v", err)
+ if ks != nil {
+ account, err := MakeAddress(ks, etherbase)
+ if err != nil {
+ Fatalf("Invalid miner etherbase: %v", err)
+ }
+ cfg.Etherbase = account.Address
+ } else {
+ Fatalf("No etherbase configured")
}
- cfg.Etherbase = account.Address
}
}
@@ -1093,6 +1101,10 @@ func SetNodeConfig(ctx *cli.Context, cfg *node.Config) {
setNodeUserIdent(ctx, cfg)
setDataDir(ctx, cfg)
+ if ctx.GlobalIsSet(ExternalSignerFlag.Name) {
+ cfg.ExternalSigner = ctx.GlobalString(ExternalSignerFlag.Name)
+ }
+
if ctx.GlobalIsSet(KeyStoreDirFlag.Name) {
cfg.KeyStoreDir = ctx.GlobalString(KeyStoreDirFlag.Name)
}
@@ -1274,8 +1286,12 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *eth.Config) {
// Avoid conflicting network flags
checkExclusive(ctx, DeveloperFlag, TestnetFlag, RinkebyFlag, GoerliFlag)
checkExclusive(ctx, LightServFlag, SyncModeFlag, "light")
-
- ks := stack.AccountManager().Backends(keystore.KeyStoreType)[0].(*keystore.KeyStore)
+ // Can't use both ephemeral unlocked and external signer
+ checkExclusive(ctx, DeveloperFlag, ExternalSignerFlag)
+ var ks *keystore.KeyStore
+ if keystores := stack.AccountManager().Backends(keystore.KeyStoreType); len(keystores) > 0 {
+ ks = keystores[0].(*keystore.KeyStore)
+ }
setEtherbase(ctx, ks, cfg)
setGPO(ctx, &cfg.GPO)
setTxPool(ctx, &cfg.TxPool)