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)
}
import (
"encoding/json"
- "fmt"
"github.com/golang/protobuf/proto"
"github.com/tendermint/tmlibs/common"
)
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
}
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 {
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))
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")
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()