## 2 State of the Art
### Regulatory Compliance Regarding to Data Privacy  
Despite the potential use cases of blockchain in fields like education, healthcare or industry, the concern of privacy and regulatory compliance of DLTs is a relevant problem that is currently under discussion [78; 79]. For instance, according to the GDPR, storing data in permanent storage subsystems (e.g., IPFS, OrbitDB, DLTs), even if encrypted, is forbidden. To tackle this problem, authors like [PERSON] et al. [68] propose to use NFTs as keys to access the stored academic information. With such a mechanism, storing private data (e.g., grades, names and surnames) on-chain is avoided and the blockchain smart contracts are used to define the NFTs. Thus, the academic institution is able to limit the access to the shared information with third parties according to the students' preferences. The source of the data keeps being at the university's centralized database, so the approach of this solution is compatible with existing systems. Zero-Knowledge Proofs (ZKPs) [80] can enhance blockchain by enabling privacy-preserving verification without revealing data, resolving many identification processes while keeping sensitive information confidential [81]. As a result, ZKPs have unlocked many new applications in decentralized systems [82]. The proof-of-concept presented in this article was designed to be easily enhanced by ZKPs, as it is described as follows:Let the case where a third-party wants to confirm that a student completed his/her degree. The student wants to prove that \"the Computer Science degree was successfully completed\" without revealing other personal details included in the AR:  
* The full Academic Record (i.e., Name: Alice,..., DegreeCompleted: true). Thus, \(AR\) can be structured as: \[AR=\text{Alice}\ \mid\ldots\mid\text{true}\]
* A cryptographic hash function (e.g., SHA-256). \(H=K(AR)\): The hash of the AR. For instance: \[H=K(AR)=\text{3 ac225168 df54212a25c1c0}\ldots\]  
The hash \(H\) is published on the blockchain. Then a student may need to prove the following statement without revealing any other part of \(AR\):  
\"I know an academic record \(AR\) such as that \(K(AR)=H\) and \(AR_{\text{DegreeCompleted}}=\text{true}\).\"  
A Zero-Knowledge Proof \(p\) is generated that proves this statement:  
\[p=\text{Prove}(AR,H,AR_{\text{DegreeCompleted}}=\text{true})\]  
The student or institution publishes:  
The AR hash \(H=K(AR)\)  
The Zero-Knowledge Proof \(p\)  
The public statement: \"The committed AR indicates that the degree is completed.\"  
Then anyone can verify:  
That the proof \(p\) is valid,  
That it corresponds to the commitment \(H\),  
That it confirms that the DegreeCompleted field is true,  
Without learning anything else in \(AR\)  
\[\text{Verify}(p,H,\text{``DegreeCompleted}=\text{true}^{\text{\emph{\text{ \text{\text{\text{\text{\text{\text{\text{\text{\text{\text  
* **Decentralized App**. The application enables users and professors to interact with the blockchain through a simple interface. Students can see the current state of their ARs, whereas administrators have the ability to update them. In addition, this subsystem provides an input field that can be used by any user that wants to verify an AR easily. * **Blockchain**. It keeps the traceability of the students' ARs through their hashes. With this strategy, the amount of information stored in the blockchain is significantly reduced, but it requires keeping raw information outside the chain (off-chain). This increases transaction speed and cost savings, since operational cost decrease (e.g., the gas spent on Ethereum-based applications is reduced). * **Decentralized Database**. This database stores the private information of professors and students in a decentralized manner, as well as their public keys. The DApp interacts with this database in order to log in students and administrators, and allows for detecting new changes in the ARs.