Implement storing latest block hash in blockpool storage
This commit is contained in:
parent
5e48c0d176
commit
6d50f37a12
@ -13,6 +13,7 @@ import (
|
|||||||
const (
|
const (
|
||||||
DefaultBlockPrefix = "block_"
|
DefaultBlockPrefix = "block_"
|
||||||
DefaultBlockHeaderPrefix = "header_"
|
DefaultBlockHeaderPrefix = "header_"
|
||||||
|
LatestBlockKey = "latest_block"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -59,6 +60,28 @@ func NewBlockPool(path string) (*BlockPool, error) {
|
|||||||
return pool, nil
|
return pool, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (bp *BlockPool) SetLatestBlock(hash []byte) error {
|
||||||
|
return bp.dbEnv.Update(func(txn *lmdb.Txn) error {
|
||||||
|
return txn.Put(bp.db, []byte(LatestBlockKey), hash, 0)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func (bp *BlockPool) GetLatestBlock() ([]byte, error) {
|
||||||
|
var hash []byte
|
||||||
|
err := bp.dbEnv.View(func(txn *lmdb.Txn) error {
|
||||||
|
data, err := txn.Get(bp.db, []byte(LatestBlockKey))
|
||||||
|
if err != nil {
|
||||||
|
if lmdb.IsNotFound(err) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
hash = data
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
return hash, err
|
||||||
|
}
|
||||||
|
|
||||||
func (bp *BlockPool) StoreBlock(block *types2.Block) error {
|
func (bp *BlockPool) StoreBlock(block *types2.Block) error {
|
||||||
return bp.dbEnv.Update(func(txn *lmdb.Txn) error {
|
return bp.dbEnv.Update(func(txn *lmdb.Txn) error {
|
||||||
data, err := cbor.Marshal(block)
|
data, err := cbor.Marshal(block)
|
||||||
|
Loading…
Reference in New Issue
Block a user