Users should have a better control over their own data and there should be more transparency about who access each piece of that information and data providers should get benefit and be hold responsible for it.
What it does
Lets data producers attach data to users that can be consumed by other entities that they will monetize, while the user keeps control over who access it.
For example, a company that wants to know if you are over 21 to sell you alcohol can query your smart contract and receive all the information from different providers that have attached that information to you, only if you have decided that you want for that company to access that information.
When the requesting company accepts or rejects a piece of data (trust/distrust), the system will distribute the cost of this transaction among the providers that gave better or more accurate information.
How we built it
We used solidity contracts communicating between themselves and also with a browser/user using web3/truffle.
3 different smart contracts where developed:
- DataProducer (e.g. government/marketing company/employer)
- Gets money every time that its data is trusted.
- Sets typed data into DataHolder contracts (e.g. people)
Keeps a record of the companies that trusted it or not in the past regarding the information provided, so that future consumers of the data generated can determine if they want to trust it or not.
DataHolder (e.g. person/entity)
Stores all the information given by any DataProducer.
Receives query request to access such data from DataConsumers and approves/disapproves those requests.
Holds money (escrow) to ensure that the consumer gives feedback to the network to decide how to share the money across the providers of the data
DataConsumer (e.g. companies interested in users data)
Request data to an specific DataHolder from any topic
Pays for each transaction query request.
Gives feedback on trustworthiness of data received.
This given feedback is used to determine a score of how reliable a DataProducer has been in the past and predict how good it will be in the future.
Challenges we ran into
Blockchain technology in general is in is infancy. Very rudimentary dev tools, outdated documentation, unstable libraries... Also is a big change is needed in the way you should think about a problem, security, data transfer, etc.
Accomplishments that we're proud of
We’ve designed a mechanism and first implementation of a system that will incentivize the creation of data while giving users the control over how it is used and provides a useful and reliable way for companies to access that data.
Its a challenging concept that can really change how the players interact with each other.
What we learned
How the limitations and strengths of blockchain technologies come into play when developing a software solution.
What's next for Alma
Improve it’s design and implementation and create an ERC to involve the community. Utilizing the new features given by zsnarks for storing/verifying the stored data without giving access to it using the new Byzantium fork .