OSDN Git Service

Recovery walletDB support standard txs (#296)
authoryahtoo <yahtoo.ma@gmail.com>
Wed, 17 Jan 2018 02:48:04 +0000 (10:48 +0800)
committerPaladz <yzhu101@uottawa.ca>
Wed, 17 Jan 2018 02:48:04 +0000 (10:48 +0800)
blockchain/wallet.go
blockchain/wallet/wallet.go
cmd/bytomcli/commands/key.go

index 6f6fff2..b3a9430 100644 (file)
@@ -22,12 +22,13 @@ func (bcr *BlockchainReactor) walletExportKey(ctx context.Context, in struct {
 }
 
 func (bcr *BlockchainReactor) walletImportKey(ctx context.Context, in struct {
-       Alias    string       `json:"alias"`
-       Password string       `json:"password"`
-       XPrv     chainkd.XPrv `json:"xprv"`
-       Index    uint64       `json:"index"`
+       KeyAlias     string       `json:"key_alias"`
+       Password     string       `json:"password"`
+       XPrv         chainkd.XPrv `json:"xprv"`
+       Index        uint64       `json:"index"`
+       AccountAlias string       `json:"account_alias"`
 }) Response {
-       xpub, err := bcr.wallet.ImportAccountPrivKey(bcr.hsm, in.XPrv, in.Alias, in.Password, in.Index)
+       xpub, err := bcr.wallet.ImportAccountPrivKey(bcr.hsm, in.XPrv, in.KeyAlias, in.Password, in.Index, in.AccountAlias)
        if err != nil {
                return resWrapper(nil, err)
        }
index f476d58..916680e 100755 (executable)
@@ -2,7 +2,6 @@ package wallet
 
 import (
        "encoding/json"
-       "time"
 
        log "github.com/sirupsen/logrus"
        "github.com/tendermint/go-wire/data/base58"
@@ -168,12 +167,13 @@ func (w *Wallet) ExportAccountPrivKey(hsm *pseudohsm.HSM, xpub chainkd.XPub, aut
 }
 
 // ImportAccountPrivKey imports the account key in the Wallet Import Formt.
-func (w *Wallet) ImportAccountPrivKey(hsm *pseudohsm.HSM, xprv chainkd.XPrv, alias, auth string, index uint64) (*pseudohsm.XPub, error) {
-       xpub, _, err := hsm.ImportXPrvKey(auth, alias, xprv)
+func (w *Wallet) ImportAccountPrivKey(hsm *pseudohsm.HSM, xprv chainkd.XPrv, keyAlias, auth string, index uint64, accountAlias string) (*pseudohsm.XPub, error) {
+       xpub, _, err := hsm.ImportXPrvKey(auth, keyAlias, xprv)
        if err != nil {
                return nil, err
        }
-       newAccount, err := w.AccountMgr.Create([]chainkd.XPub{xpub.XPub}, SINGLE, alias, nil)
+
+       newAccount, err := w.AccountMgr.Create([]chainkd.XPub{xpub.XPub}, SINGLE, accountAlias, nil)
        if err != nil {
                return nil, err
        }
@@ -194,7 +194,7 @@ func (w *Wallet) recoveryAccountWalletDB(account *account.Account, XPub *pseudoh
 
 func (w *Wallet) createProgram(account *account.Account, XPub *pseudohsm.XPub, index uint64) error {
        for i := uint64(0); i < index; i++ {
-               if _, err := w.AccountMgr.CreateControlProgram(nil, account.ID, true, time.Now()); err != nil {
+               if _, err := w.AccountMgr.CreateAddress(nil, account.ID, false); err != nil {
                        return err
                }
        }
index ca84d63..17b5e6b 100644 (file)
@@ -101,15 +101,16 @@ var exportPrivateCmd = &cobra.Command{
 }
 
 var importPrivateCmd = &cobra.Command{
-       Use:   "import-private-key <alias> <private key> <index> <password>",
+       Use:   "import-private-key <key-alias> <private key> <index> <password> <account-alias>",
        Short: "Import the private key",
-       Args:  cobra.ExactArgs(4),
+       Args:  cobra.ExactArgs(5),
        Run: func(cmd *cobra.Command, args []string) {
                type Key struct {
-                       Alias    string
-                       Password string
-                       XPrv     chainkd.XPrv
-                       Index    uint64
+                       KeyAlias     string       `json:"key_alias"`
+                       Password     string       `json:"password"`
+                       XPrv         chainkd.XPrv `json:"xprv"`
+                       Index        uint64       `json:"index"`
+                       AccountAlias string       `json:"account_alias"`
                }
 
                privHash, err := base58.Decode(args[1])
@@ -131,10 +132,11 @@ var importPrivateCmd = &cobra.Command{
                }
 
                var key Key
-               key.Alias = args[0]
+               key.KeyAlias = args[0]
                key.Password = args[3]
                key.Index, _ = strconv.ParseUint(args[2], 10, 64)
                copy(key.XPrv[:], privHash[:64])
+               key.AccountAlias = args[4]
 
                data, exitCode := util.ClientCall("/import-private-key", &key)
                if exitCode != util.Success {