github.com/prysmaticlabs/prysm@v1.4.4/validator/db/kv/genesis.go (about)

     1  package kv
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  
     7  	bolt "go.etcd.io/bbolt"
     8  )
     9  
    10  // SaveGenesisValidatorsRoot saves the genesis validator root to db.
    11  func (s *Store) SaveGenesisValidatorsRoot(ctx context.Context, genValRoot []byte) error {
    12  	err := s.db.Update(func(tx *bolt.Tx) error {
    13  		bkt := tx.Bucket(genesisInfoBucket)
    14  		enc := bkt.Get(genesisValidatorsRootKey)
    15  		if len(enc) != 0 {
    16  			return fmt.Errorf("cannot overwite existing genesis validators root: %#x", enc)
    17  		}
    18  		return bkt.Put(genesisValidatorsRootKey, genValRoot)
    19  	})
    20  	return err
    21  }
    22  
    23  // GenesisValidatorsRoot retrieves the genesis validator root from db.
    24  func (s *Store) GenesisValidatorsRoot(ctx context.Context) ([]byte, error) {
    25  	var genValRoot []byte
    26  	err := s.db.View(func(tx *bolt.Tx) error {
    27  		bkt := tx.Bucket(genesisInfoBucket)
    28  		enc := bkt.Get(genesisValidatorsRootKey)
    29  		if len(enc) == 0 {
    30  			return nil
    31  		}
    32  		genValRoot = enc
    33  		return nil
    34  	})
    35  	return genValRoot, err
    36  }