Domain: Data transfer – privacy
Problem identification: privacy of data transfer (money, health records, votes,…)
Why Blockchain:
The biggest benefit of the project is the built-in privacy thanks to the distributed storage of data secured with ring signatures. This particular kind of signatures allows the sender to prove non-interactively that he belongs to a specific group, without revealing his identity. Furthermore, the distribution of the backlinked database inherent to the platform allows the maintenance of a transparent history with provable integrity of data. This is a much needed feature in privacy related contexts.
The key problems that the project addresses are:
- privacy preserving provable authenticity in data transfers
- privacy preserving provable integrity of data history
Functional Description
Ring signatures allow verifiers to check that the data transfer was initiated by an agent belonging to a specific group, without discovering his identity. This can be used for voting (I prove that I am one that has the right to vote, but I do not say my identity), for sensitive data (I send my health records for analysis, proving to be a real patient but without revealing which one) or in general for any transaction of sensitive data.
To initiate and store a data transfers (“transactions”) on this blockchain users performs two different actions. In the first one the sender collects the public keys of all (or some) users belonging to a group. The public keys must also include the sender’s key: this ensures that the sender really belongs to the group, since all public keys must be registered as belonging to the group. In fact, by checking the signature you can see which public keys have been used (but not which private keys). In the second step the user signs the transaction with his private key and with all the public keys collected in the previous step.
The data transfers are recorded on a public blockchain similar to that of Bitcoins, from which it derives. The main difference of this platform compared to Bitcoin’s is the signature system that allows the use of transactions with greater privacy. Since it does not present many differences with the Bitcoin blockchain, it is possible to apply the same scalability projects in what is commonly called layer 2. A possible example is Lightning network, a particular network of payment channels that keeps track of recurring off-chain microtransactions.
The system consists of one main component that can have mainly two different variations:
- Monero Full Client: people have to track the Monero blockchain to operate
- Monero Light Clients: smartphone addressing apps that let the user operate without storing the blockchain
Technology used
- Blockchain: Monero
- Software: BitcoinCore (probably, not disclosed)
- Main characteristics of the chosen blockchain
- Public
- Permissionless
- Consensus mechanism: Proof-of-Work
- Smart Contracts
- Available Programming Languages/Platforms: Bitcoin Script, Layer 2 smart contracts
- Chosen Programming Language: Bitcoin Script
Current status
The project’s code repository is public on github, url: https://github.com/monero-project/monero. This project is being developed under the BSD3 LICENSE.
The current Monero version is version 0.15. The Monero v0.15 was released on November, 2018. The last commit was on January 12nd 2020.
Focus point commentary indicating the value of the case study in relation with learning modules
Learning Modules | Focus Points |
Peer-to-Peer database design | Blockchain |
Encryption techniques | public/private key on ECDSA |
Consensus | Proof-of-work |
Digital Signatures | Ring signatures |
Smart Contracts | L2 smart contracts |
Privacy and Property Rights | Privacy applications (health care, AI, voting…) |
Blockchain-based Decentralized Applications | |
Decentralized Autonomous Organizations DAOs |
Limitations:
- Privacy: it is a two-edged sword
Alternatives Approaches:
- there are many ways to achieve privacy
- Zerocoin/zerocash use zero-knowledge interactive proofs: https://z.cash/
References
- github repository: https://github.com/monero-project/monero
- Project address: https://www.getmonero.org/
Monero subreddit used for Q&A: https://www.reddit.com/r/Monero/