GCR Structure
The following schema shows the internal database structure of the GCR. The GCR Is comprised of three tables and a metatable.
global_change_registry
This is the primary table where the essential properties of a Demos account within the network are stored. Note that thedetails row, which is stored in an optimized JSONB format, contains the foundational properties linked to a Demos address.
The extended property simplifies tracking tokens, NFTs, and cross-context properties and operations linked to an address. It is a JSONB field too, allowing for efficient data management and lower overhead.
global_change_registry_subnets_txs
This table is responsible for holding and indexing all the transactions that happens in a Subnet. Note thattx_data contains the encrypted data for that specific Subnet’s tx and can only be decrypted by partecipants of the Subnet itself. See how-are-l2ps-transactions-handled.md for more informations.
gcr_tracker
This table contains the hashes of each user’sglobal_change_registry entry. Each time a GCR entry is modified, for example after a transaction, its gcr_tracker is updated too with the current hash of that table. This allows for fast, efficient and optimized tracking of the changes in the GCR.
gcr_hashes
This table is separate from the GCR data. As a metadata table, it stores the combined hashes of theglobal_change_registry_subnets_txs and gcr_tracker tables to generate a GCR Status hash. This is crucial for verifying the consistency of GCR statuses during synchronization and consensus processes.