Description
In Hyperledger Fabric, there can be a significant mismatch between the simple key-value ledger storage abstraction and the data representation style used for developing chaincode – i.e., Java has classes and objects, not keys and values. Currently, there aren’t really good tools for facilitating the “object-key-value mapping” (at least anything approaching classic Object-Relational Mapping – ORM). This not only complicates chaincode development, but a less than systematic approach with the mapping can lead to performance problems (through logically unnecessary MVCC transaction invalidations). Additionally, an explicit object-oriented ledger data model would enable imposing data-centric constraints on the ledger content, either for runtime checking, or development time verification and validation.
The goal of the mentorship is to design and implement an object-key-value mapper with the following functionality:
- Generating key-value storage models from UML ledger data models
- Application of storage strategies during the mapping (as we explored in the report referenced below)
- Generating a chaincode-internal Java data access/persistence layer, “parameterized” by the storage model
- Demonstration on a representative example (e.g., our earlier work on faithfully implementing TPC-C to Fabric)
- (If we have time): declaring OCL (Object Constraint Language) constraints on the models and enforcing them in the data access layer
Additional Information
A report exploring key related problems on the storage model side: https://tdk.bme.hu/VIK/DownloadPaper/Alkalmazasi-szintu-ateresztokepesseg
As a motivating example, our ACM SAC DAPP 2022 paper on TPC-C over Fabric: https://arxiv.org/pdf/2112.11277.pdf
The Wikipedia article on ORM: https://en.wikipedia.org/wiki/Object%E2%80%93relational_mapping
Learning Objectives
Expected Outcome
Relation to Hyperledger
Mentee Skills
Mentee Open Source Contribution Experience
Future plans
Mentor(s) Names and Contact Info
Attila Klenik, research fellow, klenik.attila@vik.bme.hu, Budapest University of Technology and Economics, Dept. of Measurement and Inf. Systems, Critical Systems Research Group
Imre Kocsis, assistant professor, kocsis.imre@vik.bme.hu, Budapest University of Technology and Economics, Dept. of Measurement and Inf. Systems, Critical Systems Research Group