From: Paladz Date: Fri, 23 Mar 2018 06:56:53 +0000 (+0800) Subject: edit reset passowrd api (#467) X-Git-Tag: v1.0.5~244 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=3b66854d01b4cbba0dae13191d1c0d4af722bbfc;p=bytom%2Fbytom.git edit reset passowrd api (#467) --- diff --git a/blockchain/hsm.go b/blockchain/hsm.go index 9536a02c..46b0f6bb 100644 --- a/blockchain/hsm.go +++ b/blockchain/hsm.go @@ -66,13 +66,19 @@ func (bcr *BlockchainReactor) pseudohsmSignTemplate(ctx context.Context, xpub ch return bcr.wallet.Hsm.XSign(xpub, path, data[:], password) } +type ResetPasswordResp struct { + Changed bool `json:"changed"` +} + func (bcr *BlockchainReactor) pseudohsmResetPassword(ctx context.Context, ins struct { XPub chainkd.XPub `json:"xpub"` OldPassword string `json:"old_password"` NewPassword string `json:"new_password"` }) Response { + resp := &ResetPasswordResp{Changed: false} if err := bcr.wallet.Hsm.ResetPassword(ins.XPub, ins.OldPassword, ins.NewPassword); err != nil { - return NewErrorResponse(err) + return NewSuccessResponse(resp) } - return NewSuccessResponse(nil) + resp.Changed = true + return NewSuccessResponse(resp) } diff --git a/blockchain/txdb/store.go b/blockchain/txdb/store.go index 9f2b85b2..8ed8bef0 100644 --- a/blockchain/txdb/store.go +++ b/blockchain/txdb/store.go @@ -2,7 +2,6 @@ package txdb import ( "encoding/json" - "fmt" "github.com/golang/protobuf/proto" "github.com/tendermint/tmlibs/common" @@ -16,9 +15,11 @@ import ( ) var ( - blockStoreKey = []byte("blockStore") - blockSeedPrefix = []byte("blockSeed:") - txStatusPrefix = []byte("txStatus:") + blockStoreKey = []byte("blockStore") + blockPrefix = []byte("B:") + blockHeaderPrefix = []byte("BH:") + blockSeedPrefix = []byte("BS:") + txStatusPrefix = []byte("BTS:") ) // BlockStoreStateJSON represents the core's db status @@ -58,7 +59,11 @@ type Store struct { } func calcBlockKey(hash *bc.Hash) []byte { - return []byte(fmt.Sprintf("B:%v", hash.String())) + return append(blockPrefix, hash.Bytes()...) +} + +func calcBlockHeaderKey(hash *bc.Hash) []byte { + return append(blockHeaderPrefix, hash.Bytes()...) } func calcSeedKey(hash *bc.Hash) []byte { @@ -108,6 +113,18 @@ func (s *Store) GetBlock(hash *bc.Hash) (*types.Block, error) { return s.cache.lookup(hash) } +// GetBlockHeader return the block by given hash +func (s *Store) GetBlockHeader(hash *bc.Hash) (*types.BlockHeader, error) { + bytez := s.db.Get(calcBlockHeaderKey(hash)) + if bytez == nil { + return nil, errors.New("can't find the block header by given hash") + } + + bh := &types.BlockHeader{} + err := bh.UnmarshalText(bytez) + return bh, err +} + // GetSeed will return the seed of given block func (s *Store) GetSeed(hash *bc.Hash) (*bc.Hash, error) { data := s.db.Get(calcSeedKey(hash)) @@ -158,6 +175,11 @@ func (s *Store) SaveBlock(block *types.Block, ts *bc.TransactionStatus, seed *bc return errors.Wrap(err, "Marshal block meta") } + binaryBlockHeader, err := block.BlockHeader.MarshalText() + if err != nil { + return errors.Wrap(err, "Marshal block header") + } + binaryTxStatus, err := proto.Marshal(ts) if err != nil { return errors.Wrap(err, "marshal block transaction status") @@ -171,6 +193,7 @@ func (s *Store) SaveBlock(block *types.Block, ts *bc.TransactionStatus, seed *bc blockHash := block.Hash() batch := s.db.NewBatch() batch.Set(calcBlockKey(&blockHash), binaryBlock) + batch.Set(calcBlockHeaderKey(&blockHash), binaryBlockHeader) batch.Set(calcTxStatusKey(&blockHash), binaryTxStatus) batch.Set(calcSeedKey(&blockHash), binarySeed) batch.Write()