Accepted answer

The block system and API in Backdrop is very different from Drupal's. In Backdrop, as in Drupal, modules can define blocks in code (in fact some of the API at this level is the same, with hook_block_info(), hook_block_view() etc.).

In Drupal module blocks are stored in the block table (Drupal reads all the block definitions and stores them in that table).

In Backdrop, custom blocks are stored as json files, and blocks defined by modules are stored within the layout json file once they are placed into a layout region. For example, take a look at the file layout.layout.default.json in the files folder. They are not stored in the DB (therefore there is no use for _block_rehash()). In that layout json file, block identifiers are those long strings (UUIDs). There are references to those both under "positions" and under "content". 

Some helpful resources:

 

Comments

The block system and API in Backdrop is very different from Drupal's. In Backdrop, as in Drupal, modules can define blocks in code (in fact some of the API at this level is the same, with hook_block_info(), hook_block_view() etc.).

In Drupal module blocks are stored in the block table (Drupal reads all the block definitions and stores them in that table).

In Backdrop, custom blocks are stored as json files, and blocks defined by modules are stored within the layout json file once they are placed into a layout region. For example, take a look at the file layout.layout.default.json in the files folder. They are not stored in the DB (therefore there is no use for _block_rehash()). In that layout json file, block identifiers are those long strings (UUIDs). There are references to those both under "positions" and under "content". 

Some helpful resources: