diff --git a/blockdag/dag.go b/blockdag/dag.go index 67d2bca23..f545e59f4 100644 --- a/blockdag/dag.go +++ b/blockdag/dag.go @@ -593,13 +593,6 @@ func (dag *BlockDAG) saveChangesFromBlock(node *blockNode, block *util.Block, vi return err } - // Add the block hash and height to the block index which tracks - // the main chain. - err = dbPutBlockIndex(dbTx, block.Hash(), node.height) - if err != nil { - return err - } - // Update the UTXO set using the diffSet that was melded into the // full UTXO set. err = dbPutUTXODiff(dbTx, virtualUTXODiff) diff --git a/blockdag/dagio.go b/blockdag/dagio.go index af265cbd4..db36e465d 100644 --- a/blockdag/dagio.go +++ b/blockdag/dagio.go @@ -36,14 +36,6 @@ var ( // block headers and contextual information. blockIndexBucketName = []byte("blockheaderidx") - // hashIndexBucketName is the name of the db bucket used to house to the - // block hash -> block height index. - hashIndexBucketName = []byte("hashidx") - - // heightIndexBucketName is the name of the db bucket used to house to - // the block height -> block hash index. - heightIndexBucketName = []byte("heightidx") - // dagStateKeyName is the name of the db key used to store the DAG // tip hashes. dagStateKeyName = []byte("dagstate") @@ -352,58 +344,6 @@ func dbPutUTXODiff(dbTx database.Tx, diff *UTXODiff) error { return nil } -// ----------------------------------------------------------------------------- -// The block index consists of two buckets with an entry for every block in the -// main chain. One bucket is for the hash to height mapping and the other is -// for the height to hash mapping. -// -// The serialized format for values in the hash to height bucket is: -// -// -// Field Type Size -// height uint32 4 bytes -// -// The serialized format for values in the height to hash bucket is: -// -// -// Field Type Size -// hash daghash.Hash daghash.HashSize -// ----------------------------------------------------------------------------- - -// dbPutBlockIndex uses an existing database transaction to update or add the -// block index entries for the hash to height and height to hash mappings for -// the provided values. -func dbPutBlockIndex(dbTx database.Tx, hash *daghash.Hash, height uint64) error { - // Serialize the height for use in the index entries. - var serializedHeight [8]byte - byteOrder.PutUint64(serializedHeight[:], height) - - // Add the block hash to height mapping to the index. - meta := dbTx.Metadata() - hashIndex := meta.Bucket(hashIndexBucketName) - if err := hashIndex.Put(hash[:], serializedHeight[:]); err != nil { - return err - } - - // Add the block height to hash mapping to the index. - heightIndex := meta.Bucket(heightIndexBucketName) - return heightIndex.Put(serializedHeight[:], hash[:]) -} - -// dbFetchHeightByHash uses an existing database transaction to retrieve the -// height for the provided hash from the index. -func dbFetchHeightByHash(dbTx database.Tx, hash *daghash.Hash) (int32, error) { - meta := dbTx.Metadata() - hashIndex := meta.Bucket(hashIndexBucketName) - serializedHeight := hashIndex.Get(hash[:]) - if serializedHeight == nil { - str := fmt.Sprintf("block %s is not in the main chain", hash) - return 0, errNotInDAG(str) - } - - return int32(byteOrder.Uint32(serializedHeight)), nil -} - type dagState struct { TipHashes []*daghash.Hash LastFinalityPoint *daghash.Hash @@ -458,20 +398,6 @@ func (dag *BlockDAG) createDAGState() error { return err } - // Create the bucket that houses the chain block hash to height - // index. - _, err = meta.CreateBucket(hashIndexBucketName) - if err != nil { - return err - } - - // Create the bucket that houses the chain block height to hash - // index. - _, err = meta.CreateBucket(heightIndexBucketName) - if err != nil { - return err - } - // Create the buckets that house the utxo set, the utxo diffs, and their // version. _, err = meta.CreateBucket(utxoSetBucketName) diff --git a/blockdag/process.go b/blockdag/process.go index c996a1113..993c7fdbe 100644 --- a/blockdag/process.go +++ b/blockdag/process.go @@ -48,24 +48,6 @@ func (dag *BlockDAG) BlockExists(hash *daghash.Hash) (bool, error) { err := dag.db.View(func(dbTx database.Tx) error { var err error exists, err = dbTx.HasBlock(hash) - if err != nil || !exists { - return err - } - - // Ignore side chain blocks in the database. This is necessary - // because there is not currently any record of the associated - // block index data such as its block height, so it's not yet - // possible to efficiently load the block and do anything useful - // with it. - // - // Ultimately the entire block index should be serialized - // instead of only the current main chain so it can be consulted - // directly. - _, err = dbFetchHeightByHash(dbTx, hash) - if isNotInDAGErr(err) { - exists = false - return nil - } return err }) return exists, err