I'm looking for feedback on whether the following idea for 'smart data access' could be of any use for DApp development. It combines off-chain data storage with on-chain authenticated access controls. Smart contracts control the access rights to data stored in a 'vault' on any compatible private server, whether that's a home server, company server or cloud storage service. DApps send read/write requests directly to the server and authenticate using the user's key. The server queries the blockchain for the access rights before servicing or rejecting the requests. The life-cycle of the data in a vault is controlled by the vault's smart contract, which the DApp developer would write for the specific use case. Being a state machine the smart contract can be transacted with to, say, grant and revoke access for specific users or to transition through a pre-defined service life-cycle.
It's a simple concept but I think it has powerful applications. Would a generic off-chain storage solution like this that offered authenticated read/write/delete access be of use? I'd appreciate any feedback you have.
---
Some example uses:
Blogging Dapp: a user's posts could be stored on a server of the user's choosing and the DApp could allow the user to grant and remove access for their friends.
Paywall: access to web content is granted and removed based on payment to the smart contract that controls the content's vault.
Online Service: access to different pieces of a user's data is granted to different companies in a supply chain, granting and revoking access throughout the life cycle of the service and finally deleting the data when the service is complete, perhaps after a legal retention period. The state of the service life-cycle is visible to all parties at all times and transitions are visible as blockchain transactions.
Company Storage: a company can hold all its documents and communications privately on its own servers while making the data accessible to DApps run by authenticated users.
GDPR Compliance: customer data can be held on a company's servers and access to update and delete the data is granted to the customer. Alternatively, the data could be held in the customer's own vault and access granted temporarily to the company.
https://github.com/Datona-Labs/datona-lib