Parcourir la source

unlocking coinbase
- extract accounts.getKey method - if given empty address it retrieves coinbase (first account)
- cli -unlock coinbase will unlock coinbase

zelig il y a 10 ans
Parent
commit
fd8d18ec28
2 fichiers modifiés avec 17 ajouts et 3 suppressions
  1. 13 2
      accounts/account_manager.go
  2. 4 1
      cmd/ethereum/main.go

+ 13 - 2
accounts/account_manager.go

@@ -101,6 +101,17 @@ 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)
 }
@@ -119,7 +130,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.keyStore.GetKey(addr, keyAuth)
+	key, err := am.getKey(addr, keyAuth)
 	if err != nil {
 		return err
 	}
@@ -132,7 +143,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.keyStore.GetKey(addr, keyAuth)
+	key, err := am.getKey(addr, keyAuth)
 	if err != nil {
 		return err
 	}

+ 4 - 1
cmd/ethereum/main.go

@@ -134,7 +134,7 @@ Exports the given account's private key into keyfile using the canonical EC form
 The account needs to be unlocked, if it is not the user is prompted for a passphrase to unlock it.
 For non-interactive use, the password can be specified with the --unlock flag:
 
-    ethereum --unlock <passwrdfile> account export <address> <keyfile>
+    ethereum --password <passwrdfile> account export <address> <keyfile>
 
 Note:
 Since you can directly copy your encrypted accounts to another ethereum instance, this import/export mechanism is not needed when you transfer an account between nodes.
@@ -305,6 +305,9 @@ func startEth(ctx *cli.Context, eth *eth.Ethereum) {
 
 	account := ctx.GlobalString(utils.UnlockedAccountFlag.Name)
 	if len(account) > 0 {
+		if account == "coinbase" {
+			account = ""
+		}
 		unlockAccount(ctx, am, account)
 	}
 	// Start auxiliary services if enabled.