// dbFetchBlockByHeight uses an existing database transaction to retrieve the // raw block for the provided height, deserialize it, and return a btcutil.Block // with the height set. func dbFetchBlockByHeight(dbTx database.Tx, height int32) (*btcutil.Block, error) { // First find the hash associated with the provided height in the index. hash, err := dbFetchHashByHeight(dbTx, height) if err != nil { return nil, err } // Load the raw block bytes from the database. blockBytes, err := dbTx.FetchBlock(hash) if err != nil { return nil, err } // Create the encapsulated block and set the height appropriately. block, err := btcutil.NewBlockFromBytes(blockBytes) if err != nil { return nil, err } block.SetHeight(height) return block, nil }