|
|
|
@ -33,6 +33,7 @@ and accounts persistence is derived from stored keys' addresses |
|
|
|
|
package accounts |
|
|
|
|
|
|
|
|
|
import ( |
|
|
|
|
"bytes" |
|
|
|
|
"crypto/ecdsa" |
|
|
|
|
crand "crypto/rand" |
|
|
|
|
|
|
|
|
@ -72,19 +73,22 @@ func NewManager(keyStore crypto.KeyStore2, unlockTime time.Duration) *Manager { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (am *Manager) HasAccount(addr []byte) bool { |
|
|
|
|
accounts, _ := am.Accounts() |
|
|
|
|
for _, acct := range accounts { |
|
|
|
|
if bytes.Compare(acct.Address, addr) == 0 { |
|
|
|
|
return true |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return false |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Coinbase returns the account address that mining rewards are sent to.
|
|
|
|
|
func (am *Manager) Coinbase() (addr []byte, err error) { |
|
|
|
|
// TODO: persist coinbase address on disk
|
|
|
|
|
return am.firstAddr() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// MainAccount returns the primary account used for transactions.
|
|
|
|
|
func (am *Manager) Default() (Account, error) { |
|
|
|
|
// TODO: persist main account address on disk
|
|
|
|
|
addr, err := am.firstAddr() |
|
|
|
|
return Account{Address: addr}, err |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (am *Manager) firstAddr() ([]byte, error) { |
|
|
|
|
addrs, err := am.keyStore.GetKeyAddresses() |
|
|
|
|
if err != nil { |
|
|
|
@ -135,9 +139,7 @@ func (am *Manager) Accounts() ([]Account, error) { |
|
|
|
|
if err != nil { |
|
|
|
|
return nil, err |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
accounts := make([]Account, len(addresses)) |
|
|
|
|
|
|
|
|
|
for i, addr := range addresses { |
|
|
|
|
accounts[i] = Account{ |
|
|
|
|
Address: addr, |
|
|
|
|