Data Structure
Blockchain is a good way to order block of sequential data that can be validated by others. Countless real-world examples show that it scales pretty well.
In our apps, We are testing the use of a blockchain for storing "application data" local-only. The app is a work-in-progress proof-of-concept and experimental. It is an investigation into creating a distributed and decentralized app. This could be considered and over-engineered solution to CRDT.
Unlike traditional blockchains, the sole purpose of this blockchain is to keep messages between peers in sync. The implementation is far from finished. The blockchain is entirely in javascript running in a browser.
Tables needed:
- device
- profile
- preferences
- contacts
- blockchain
device object:
id
: unique identifier for the devicename
: name of the device
profile object:
id
: unique identifier for the profilename
: name of the profileavatar
: URL to the profile avatar imagedevices
: array of device IDs associated with the profilepublicKey
: public key for encryptionprivateKey
: private key for encryption (stored securely)symmetricKey
: symmetric key for encryption (stored securely)
preferences object:
enable notifications
: boolean to enable/disable notificationstheme
: string to store the selected theme (e.g., "light", "dark")language
: string to store the selected languageprivacy settings
: object to store privacy-related settings (e.g., "show online status", "read receipts")
contacts object:
id
: unique identifier for the contactname
: name of the contactavatar
: URL to the contact's avatar imagedevices
: array of device IDs associated with the contactid
: ID of the device associated with the contactpublicKey
: public key for encryptionprivateKey
: private key for encryption (stored securely)symmetricKey
: symmetric key for encryption (stored securely)
blockchain object:
id
: unique identifier for the blockchain entryname
: name of the blockchainchain
: array to store the blocks in the blockchainstorage
: object to store the blockchain data (e.g., messages, transactions)