aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzelig <viktor.tron@gmail.com>2015-03-25 23:45:56 +0800
committerzelig <viktor.tron@gmail.com>2015-03-27 03:00:18 +0800
commit11d2ebc06ffffa8846d5d55cae5663fac6f685f1 (patch)
treeb8be3aaf5d35bd8a87f0468bd051a16e485a3ae0
parent4ec38e39320ee9abccd96da765a9c65fccd04151 (diff)
downloaddexon-11d2ebc06ffffa8846d5d55cae5663fac6f685f1.tar.gz
dexon-11d2ebc06ffffa8846d5d55cae5663fac6f685f1.tar.zst
dexon-11d2ebc06ffffa8846d5d55cae5663fac6f685f1.zip
unlocking coinbase without knowing address
- accounts: remove Manager.getKey - cli: for -unlock coinbase, use account manager Coinbase()
-rw-r--r--accounts/account_manager.go18
-rw-r--r--cmd/ethereum/main.go9
2 files changed, 10 insertions, 17 deletions
diff --git a/accounts/account_manager.go b/accounts/account_manager.go
index f063f8ca5..392518703 100644
--- a/accounts/account_manager.go
+++ b/accounts/account_manager.go
@@ -36,9 +36,8 @@ import (
"bytes"
"crypto/ecdsa"
crand "crypto/rand"
- "os"
-
"errors"
+ "os"
"sync"
"time"
@@ -101,17 +100,6 @@ func (am *Manager) firstAddr() ([]byte, error) {
return addrs[0], nil
}
-func (am *Manager) getKey(addr []byte, keyAuth string) (*crypto.Key, error) {
- if len(addr) == 0 {
- var err error
- addr, err = am.firstAddr()
- if err != nil {
- return nil, err
- }
- }
- return am.keyStore.GetKey(addr, keyAuth)
-}
-
func (am *Manager) DeleteAccount(address []byte, auth string) error {
return am.keyStore.DeleteKey(address, auth)
}
@@ -130,7 +118,7 @@ func (am *Manager) Sign(a Account, toSign []byte) (signature []byte, err error)
// TimedUnlock unlocks the account with the given address.
// When timeout has passed, the account will be locked again.
func (am *Manager) TimedUnlock(addr []byte, keyAuth string, timeout time.Duration) error {
- key, err := am.getKey(addr, keyAuth)
+ key, err := am.keyStore.GetKey(addr, keyAuth)
if err != nil {
return err
}
@@ -143,7 +131,7 @@ func (am *Manager) TimedUnlock(addr []byte, keyAuth string, timeout time.Duratio
// stays unlocked until the program exits or until a TimedUnlock
// timeout (started after the call to Unlock) expires.
func (am *Manager) Unlock(addr []byte, keyAuth string) error {
- key, err := am.getKey(addr, keyAuth)
+ key, err := am.keyStore.GetKey(addr, keyAuth)
if err != nil {
return err
}
diff --git a/cmd/ethereum/main.go b/cmd/ethereum/main.go
index 6bbe1044f..8983b85a6 100644
--- a/cmd/ethereum/main.go
+++ b/cmd/ethereum/main.go
@@ -294,7 +294,7 @@ func unlockAccount(ctx *cli.Context, am *accounts.Manager, account string) (pass
var err error
// Load startup keys. XXX we are going to need a different format
// Attempt to unlock the account
- passphrase := getPassPhrase(ctx, "", false)
+ passphrase = getPassPhrase(ctx, "", false)
err = am.Unlock(common.FromHex(account), passphrase)
if err != nil {
utils.Fatalf("Unlock account failed '%v'", err)
@@ -310,7 +310,11 @@ func startEth(ctx *cli.Context, eth *eth.Ethereum) {
account := ctx.GlobalString(utils.UnlockedAccountFlag.Name)
if len(account) > 0 {
if account == "coinbase" {
- account = ""
+ accbytes, err := am.Coinbase()
+ if err != nil {
+ utils.Fatalf("no coinbase account: %v", err)
+ }
+ account = common.ToHex(accbytes)
}
unlockAccount(ctx, am, account)
}
@@ -420,6 +424,7 @@ func accountExport(ctx *cli.Context) {
}
am := utils.GetAccountManager(ctx)
auth := unlockAccount(ctx, am, account)
+
err := am.Export(keyfile, common.FromHex(account), auth)
if err != nil {
utils.Fatalf("Account export failed: %v", err)