6 "github.com/bytom/account"
7 "github.com/bytom/asset"
8 "github.com/bytom/blockchain/pseudohsm"
9 "github.com/bytom/errors"
13 func (a *API) walletError() Response {
14 return NewErrorResponse(errors.New("wallet not found, please check that the wallet is open"))
17 // WalletImage hold the ziped wallet data
18 type WalletImage struct {
19 AccountImage *account.Image `json:"account_image"`
20 AssetImage *asset.Image `json:"asset_image"`
21 KeyImages *pseudohsm.KeyImage `json:"key_images"`
24 func (a *API) restoreWalletImage(ctx context.Context, image WalletImage) Response {
25 if err := a.wallet.Hsm.Restore(image.KeyImages); err != nil {
26 return NewErrorResponse(errors.Wrap(err, "restore key images"))
28 if err := a.wallet.AssetReg.Restore(image.AssetImage); err != nil {
29 return NewErrorResponse(errors.Wrap(err, "restore asset image"))
31 if err := a.wallet.AccountMgr.Restore(image.AccountImage); err != nil {
32 return NewErrorResponse(errors.Wrap(err, "restore account image"))
34 a.wallet.RescanBlocks()
35 return NewSuccessResponse(nil)
38 func (a *API) backupWalletImage() Response {
39 keyImages, err := a.wallet.Hsm.Backup()
41 return NewErrorResponse(errors.Wrap(err, "backup key images"))
43 assetImage, err := a.wallet.AssetReg.Backup()
45 return NewErrorResponse(errors.Wrap(err, "backup asset image"))
47 accountImage, err := a.wallet.AccountMgr.Backup()
49 return NewErrorResponse(errors.Wrap(err, "backup account image"))
52 image := &WalletImage{
54 AssetImage: assetImage,
55 AccountImage: accountImage,
57 return NewSuccessResponse(image)