...
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 conflict 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 Wikipedia article on ORM: https://en.wikipedia.org/wiki/Object%E2%80%93relational_mapping
Learning Objectives
- Mastering the open-source workflow
- Managing issues, pull requests, development branches, and repository content
- Being part of an open community, navigating and utilizing different forums
- Working in a team
- Covering a broad spectrum of software development skills
- Conducting unsupervised research for state-of-the-art solutions
- Designing/implementing functionally rich, testable, maintainable software components
- Introduction to model-driven software engineering approaches
- Documentation and presentation skills
- Developer documentation
- User documentation
- To-the-point, coherent presentation
Expected Outcome
- Survey existing (including DLT-independent) ORM solutions
- Define a methodology for translating data models to a key-value store-compatible scheme
- Explore/identify various possible strategies for storing entities on the ledger
- Implement the workflow for generating data access layer for Java chaincodes based on the input models
Relation to Hyperledger
The project aims to enhance the chaincode development experience for the Hyperledger Fabric platform.
Mentee Skills
Education Level
At least an ongoing M.Sc. study in software engineering is recommended.
Technical Skills
Required skills:
- Basic understanding of version control and git
- Some experience with Java
- Intermediate verbal and writing skills in English
- High-level understanding of Hyperledger Fabric consensus and chaincode development
Nice-to-have skills (the mentee can learn these during the internship):
- Advanced git usage (upstream repositories, branching, rebasing, etc)
- Familiarity with Visual Studio Code or similar IDE
- Experience in software modeling approaches
- Writing documentation in markdown
- Capability for unsupervised learning
Mentee Open Source Contribution Experience
Future plans
- The project results can significantly lower the entry barrier for chaincode development, independently of the use case. Thus it would be highly beneficial for the community, for example, in the form of a hl-lab project after the mentorship.
- Moreover, the project targets the Java language, but it can be extended later to support the other chaincode development languages.
- Also, such functionality could be integrated into IDEs (such as VS Code) to support rapid chaincode prototyping.
Mentor(s) Names and Contact Info
Attila Klenik, research fellow, klenikattila.attila@vikklenik@vik.bme.hu, Budapest University of Technology and Economics, Dept. of Measurement and Inf. Systems, Critical Systems Research Group (ftsrg)
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 (ftsrg)