FetchBlockRegion returns the raw serialized bytes for the given block region.
For example, it is possible to directly extract Bitcoin transactions and/or scripts from a block with this function. Depending on the backend implementation, this can provide significant savings by avoiding the need to load entire blocks.
The raw bytes are in the format returned by Serialize on a wire.MsgBlock and the Offset field in the provided BlockRegion is zero-based and relative to the start of the block (byte 0).
Returns the following errors as required by the interface contract:
- ErrBlockNotFound if the requested block hash does not exist - ErrBlockRegionInvalid if the region exceeds the bounds of the associated block - ErrTxClosed if the transaction has already been closed - ErrCorruption if the database has somehow become corrupted
In addition, returns ErrDriverSpecific if any failures occur when reading the block files.
NOTE: The data returned by this function is only valid during a database transaction. Attempting to access it after a transaction has ended results in undefined behavior. This constraint prevents additional data copies and allows support for memory-mapped database implementations.
This function is part of the database.Tx interface implementation.