Category

Hyperledger Summer Mentorship Program

10 Things to Know about the Hyperledger Summer Mentorship Program

By Blog, Hyperledger Summer Mentorship Program

Last week, we kicked off the 2020 Hyperledger Summer Mentorship Program. This year we have a cohort of 18 mentees working on a diverse array of projects. As they join the ranks of active contributors to the Hyperledger and open source community, it’s a good moment to look at how this program actively contributes to the open source blockchain ecosystem. 

Here are 10 things to know about how this program has grown in size and impact:

  1. The Hyperledger Summer Mentorship Program is its 4th year.
  2. With this year’s cohort, 52 mentees have been accepted into the program since its inceptions. Over 700 students have applied.
  3. More than 70 mentors, including ones from ConsenSys, Oracle, State Street and Wipro and as well as from IEEE, the Linux Foundation and Técnico Lisboa, have designed and managed summer projects.
  4. Mentees have participated from 20 different countries, namely Brazil, Canada, China, Cyprus, France, Hungary, Italy, India, Iran, Mexico, Pakistan, Portugal, Romania, Russia, Singapore, South Korea, Sri Lanka, Sweden, Taiwan and the United States.
  5. They have contributed to 12 of the Hyperledger Projects and Labs. 
  6. Three of our mentees have become mentors.
  7. 13 mentors have participated two or more years.
  8. 20 mentees have traveled to present at Hyperledger events. 
  9. Mentees have gone on to get jobs at a range of companies, including effx, DFINITY, Facebook, Provectus, Red Hat, Salesforce, SAP, Wavestone and White Metrix, while others are pursuing advanced studies in computer science. A couple have founded their own startups.
  10. Hyperledger is committed to growing this program:

“Hyperledger and the whole Linux Foundation are big believers in the value of mentorship in growing community and driving development and adoption of open source innovation,” said Brian Behlendorf, executive director of Hyperledger. “Our goal is to keep expanding our summer mentorship program to help ensure there is a growing and diverse development community with the skills and connections to advance their careers and enterprise blockchain. The demand for open source and blockchain developers will only accelerate from here, and we want to open as many doors as we can, especially for those from underrepresented communities.”

Hyperledger Summer Mentorship Program Returns with 18 Projects

By Blog, Hyperledger Summer Mentorship Program

Now in its fourth year, the Hyperledger Summer Mentorship program has become a valuable on-ramp for college and graduate students looking to gain real world experience and skills in open source development, work closely with technical experts to grow their professional network and enhance their resumes with tangible project contributions. 

Today, Hyperledger kicked off the 2020 Hyperledger Summer Mentorship Program by announcing the 18 projects planned for this year. Each project is an opportunity for a student to be paired with one or more mentors to take on a specific Hyperledger development or research challenge. These paid mentorship opportunities are open to students anywhere in the world and offer the chance to be active participants in developing leading-edge open source blockchain technologies.

The Hyperledger Summer Mentorship program is a hands-on, results-oriented program that starts with active developers designing and proposing mentorship projects that have real impact on advancing Hyperledger technologies. These projects must be approved by the Hyperledger Technical Steering Committee before becoming official mentorship opportunities.

The developers who propose the projects serve as the mentors and work closely with their mentees on developing a project plan, setting milestones and solving problems. Students can expect regular evaluations and feedback as well as a stipend and the chance to travel (with expenses covered) to a technical event where they will present their work to the community.

David Huseby, a member of the Hyperledger Community Architecture team, is a regular mentor in the program. He is enthused by the high impact work done each summer and the role mentorship plays in individual careers and the overall growth of open source development.  “The Hyperledger mentorship program is a fast paced and challenging opportunity to work at the cutting edge of blockchain technology as well as gain experience as a contributor to our global open source community,” says Huseby.

Students who want to know more about the program should check out these recaps from last summer’s mentees: Part I and Part II. For more about the application process, go here. The deadline to apply is April 24. 

Read on for descriptions of some of the projects planned for this year:

Adding Network Fuzzing Capabilities to Hyperledger Umbra

Hyperledger Umbra is a Hyperledger Lab designed to run unmodified versions of our DLT platforms (e.g., Hyperledger Fabric, Hyperledger Iroha) under a simulated environment with software defined networking for the purposes of running experiments (e.g., scaling experiments, consensus algorithm development, etc.) and security audits. Currently Hyperledger Umbra can run unmodified Hyperledger Fabric Docker images and execute a full Fabric network under simulation. Umbra is written in Python and has code for doing virtual network switches and connections. This project is to extend that code to allow for network fuzzing capabilities. The goal is to be able to introduce packet drops, packet delay, packet reordering, as well as unsolicited packets with random/known-bad data. The purpose it be able to test Hyperledger Fabric’s resilience to general network “weather” and intentional attacks coming from the network. 

The expected outcomes of this project include:

  • Hyperledger Umbra gains the capability to manipulate packet transit and the injection of packets either as part of the configuration setup or as an external API that 3rd party tools can call into. If an API is to be created, an SDK and demonstration application is to be created that shows how to use the API through the SDK.
  • A presentation on the use of this new capability to run network fuzzing operations against Fabric.

Create K8 / Openshift Operators for Besu

Hyperledger Besu is an Ethereum client written in Java. Operators are a method of packaging, deploying, and managing a Kubernetes or an OpenShift application. This project aims for the mentee to design, build and test operators for Project Besu. The code to this will then become part of the Besu project and added to the code repository.

The expected outcomes of this project are:

  • Provide the ability to deploy, manage and run the Hyperledger Besu containers.
  • A presentation on the use of this new capability and what it took to the work done.

Rework Data Model Tests of HL Iroha

One of the major current trends of Iroha development is modularization and decoupling. However, there are some base concepts that will persist, such as the data model. Iroha has a set of commands and queries that are extensively covered by tests. But, as we approached the data model decoupling, we found these tests unnecessarily too tightly bound to existing code, rather than only using proper interfaces.

The expected outcome of this project is a reworked set of data model tests that is decoupled from current implementation and will provide us a great help in having pluggable data model modules.

We have already created a replacement test framework and reworked several commands and queries tests with it. But there is more to do in this direction. So, in this project, the mentee will have complete and functional examples of the work that needs to be done, and guidance from a mentor about the architecture and rationale of the changes.

Check out the full list of mentorship projects and start your application today. 

The Hyperledger Summer Mentorship Program is part of the Linux Foundation’s overall commitment to mentoring. The application process is being managed through Community Bridge, a platform created by the Linux Foundations to empower open source developers – and the individuals and organizations who support them – to advance sustainability, security, and diversity in open source technology. Students from diverse communities are encouraged to apply. All are welcome here!

Mentorship in Action: Hyperledger 2019 Summer Program Recap – Part 2

By Blog, Hyperledger Summer Mentorship Program

When we hear about internships and related projects, we often think of the resulting technical contributions. However, when such a project takes place in the context of an open source and international ecosystem, like Hyperledger, the code artifacts are just part of the journey. Accordingly, in this blog post, I would like to focus on the participants and the community aspects of the Hyperledger Summer Mentorship program.

The first thing I would like to emphasize is that this is not just a summer job for the interns. During the internship, they had a chance to get to know the intricacies of different Hyperledger projects. They also worked closely with mentors who guided them throughout their work. But above all else, they became part of an open source community.

If you consider all these aspects, it is a challenging journey in two months. I think this is where the mentorship program of Hyperledger shows its strength. It gradually eases you into a (seemingly) complex environment. And the main goal is not just to get the job done, but to give the interns a toolset that allows them to stay engaged with their project, even after the internship is over. 

The opportunity for interns to present their work during a Hyperledger event (like the Global Forum) is in line with this goal.

Attila Klenik, Hyperledger Summer Intern Program alum and current mentor

Let me share a bit of personal experience with you. I also participated in a Hyperledger internship project in 2016. I was in the mentee role back then, and I was already looking into some Hyperledger projects that could prove useful for my Ph.D. research. However, open source development was new territory for me, and it was a bit intimidating at first (technical skills aside). 

But then I got to present my project work on the next Hyperledger event. That was my first close-up experience with the Hyperledger community, and it opened up a world of possibilities. I met the maintainers of many projects, we exchanged ideas, and they answered many of my questions. And suddenly the open source Hyperledger ecosystem wasn’t intimidating anymore. 

It is safe to say that this whole experience put me on the track to get more involved with specific projects, and later becoming a maintainer of Hyperledger Caliper. And, as the next step on the road, I had the pleasure to mentor a Caliper-related internship project this year.

Of course, with the new role came new challenges. Although I have mentored students before, the setup was different this time. I expected that working around the 8 hours time zone difference will not be easy. However, the fact that Caliper was under active development during that time was an even more significant challenge. The most important lessons (and skills) I learned as a mentor was the proper compartmentalization and scoping of tasks. These insights also shaped the further development of Caliper, intending to make it more contributor friendly. So mentees are not the only ones who learn new things during the internship.

Hopefully, this blog post gave you some ideas about the vital role the Hyperledger Summer Mentorship program plays in the open source community, as well in the development of projects themselves. However, don’t forget to check out the other side of the coin, the technical project results from the latest participants to complete the program:

2019 Summer Mentee Project Update: Design Effective OS to Manage Blockchain Networks

By Blog, Hyperledger Summer Mentorship Program

The 2019 Hyperledger Summer Mentorship program has come to an end. During this program, my project was Design Effective OS to Manage Blockchain Networks. It was an amazing experience to work and get involved with the Hyperledger community and the Cello community. I had a wonderful time working with my mentors and the community members, who were all really helpful during the whole course of this internship.

Goals of Project

This project aimed at:

  • Implementing a new governing module to join blockchain networks together
  • Adding advanced capabilities to manage blockchain networks, including life-cycle, chaincode and permission
  • Developing other open objects that align with the existing roadmap

What was Accomplished

During the internship duration, we were able to implement a fully functional agent that makes Cello even more versatile than earlier. We were able to 

  • Create a base for an operator agent for Fabric in the Cello codebase
  • Create custom resources and APIs for CAs, peer and orderer
  • Implement the operator controllers for CA, peer and orderer
  • Integrate the agent with the Cello API and dashboard
  • Generate documentation for the new agent so that it can be used by the users

Project Progress

During my project, we successfully created an agent for Hyperledger Cello that can be used to create peer, CAs and orderers for Hyperledger Fabric. This agent can handle user inputs from the frontend as well as the certificates needed for running these nodes. The agent was developed using Kubernetes and uses the Operator SDK Framework to create Kubernetes Operators. 

The agent has been linked to the frontend and APIs and documentation has also been created to make sure that it is ready to be worked upon.

What I learned

  • The project used Kubernetes and Golang for its creation, and it was really good to learn the tools needed to complete my projects.
  • I learned to collaborate in an open source project, working remotely and successfully communicating with other members of the community.

Future Plans

  • I’ll be continuing my work with the Cello project, contributing code in the future to help with the other parts of the project.
  • This project has laid the groundwork for additional features that can be added to the agent and Cello itself, which can make it fully ready for the production usage.

For the full details, see my complete project report here.

I am very grateful for the support from my mentors, Baohua Yang, Haitao Yue, Tong Li and Jiahao Chen, as well as Hyperledger and for the opportunity to learn and contribute to open source Hyperledger projects.

I will also be speaking at Hyperledger Global Forum 2020 in Phoenix, Arizona, talking about my project and work and also Hyperledger Cello. Please do come if you’re attending the conference.

2019 Summer Mentee Project Update: Git signing with DIDs Hyperledger Indy

By Blog, Hyperledger Summer Mentorship Program

This year, I had the opportunity to contribute to the open source Hyperledger Indy community as part of the 2019 Hyperledger Summer Mentorship program. This experience also helped me collaborate with other open source communities, mainly the git community.

Project presentation

Currently git supports signing/verifying commits and tags using GPG only. The goal of this project is to make the git signing interface compatible with external signing tools and with DIDs (Distributed Identities) using programs such as bettersign, for example.

This project is the continuation of the work already done by David Huseby on the subject. His previous work is here:

This project’s working fork:

The main sections of the project are updating the user configuration and the command handling when a signing or verifying operation occur. 

Another aspect of the project is getting the changes accepted in the git community:

  • The request for proposal has been sent to the git mailing list and can be tracked here.
  • The commits that will be submitted as a patch can be found here.

What was accomplished

Milestones

The project had many steps involved:

  • Updating the git code base with a new generic signing interface
  • Sending the first RFC to the git mailing list and receiving feedback
  • Incorporating the changes depending on the received feedback
  • Sending a second RFC to the mailing list
  • … Still waiting for feedback
  • Creating wrapper tools for signing (Indy signing tool and a template script)

Challenges

Getting to know the git code base from scratch and figure out which parts needed changing was a challenge at first. But the primary challenge we faced was getting the proposal pushed upstream in the git community. We have sent two RFCs and are still waiting for additional feedback.

Technical Overview

The following figure illustrate modification of git and the expected outcome of the project:

image2019-10-29_17-56-22.png

What comes next

This project can open the door to future signing tools integrations and maybe extended to projects other than git.

The mentorship project can be extended in many ways:

  • Create wrappers for additional signing tools like signify for example
  • Write a wrapper for the Assuan protocol to add support for tools that use the Assuan library (like GPG & GPGSM for example)
  • Broaden the project idea to tools other than git (Docker image signing for example)

David Huseby will be creating a Hyperledger Lab for the continuity of the project. It will be used to track future milestones and help other persons contribute and broaden the project perspective.

For more details, please see my complete project report here.

2019 Summer Mentee Project Update: Hyperledger configuration for project management in construction

By Blog, Hyperledger Summer Mentorship Program

Project Description

Construction management configuration of blockchain is a project of the Hyperledger Summer Mentorship Program 2019 that provides a way to apply Hyperledger technologies to construction and engineering (C&E) since literature research and practical simulation prove Hyperledger Fabric as one of the best platforms for C&E. 

This project was conceived to test the potential of blockchains. To do this, a prototype system is used to model real-world commercial process by defining the properties of participant attributes superimposed with algorithms that describe their trading relationships. These are implemented using so-called smart-contracts that make use of the latest features of Hyperledger Fabric  and Hyperledger Composer to model commercial relations between traders in a trust network.

Using Fabric delivers a variety of benefits. For example, the scheduling, confirmation and commissioning of installed components at a construction site can be recorded and, therefore, managed. But management of a Fabric network is a demanding job and good design is essential to allow confidential trading to take place. The access control list (ACL), included within Composer, provides the tools to create, read, update, or delete elements within the commercial network’s domain model. The project has advanced this control by making use of an application programming interface (API) to connect to Web servers that in turn can provide analysis and management applications. This links to common project management tools, notably Gantt charts and other projects metrics such as individual work rates, cost and budgetary items that can be used in reports and figures. 

Tools: Hyperledger Fabric, Hyperledger Composer, Node.js, javascript.

Analyze real construction process

System architecture

Access control for participants

Accomplishments

  • Created a system design for a construction management blockchain implemented on Hyperledger Fabric and Hyperledger Composer.
  • Built an access control list for manipulating access rights of individuals in the blockchain system.
  • Developed an API for connecting Hyperledger Fabric with web services.
  • Built a website for easily making transaction from customer and exchanging information.
  • Created algorithms that are able to analyze data inside a blockchain and represent results in the form of statistics figures such as Gantt chart, line chart and pipe chart.
  • Developed a tutorial on github for installing and using the system.
  • Wrote science publications.

Plan for the future

  • The project is only implemented in localhost for testing functions of blockchain system because of limited budget and computer power. If the project is funded for a free account of cloud and computers, a blockchain system can be deployed on a cloud by using docker and tested in real conditions.
  • With detailed documents and source code, the project would equip developers to convert business needs to algorithms and implement them to chaincode, generate APIs for exchanging data between user and blockchain system, create user interface, make statistics and apply machine learning algorithm for data in transactions. Furthermore, the project’s system architecture defines a method  to combine blockchain, statistics and machine learning based on smart contracts, which would be helpful for Hyperledger to develop extend modules.

For more details, please see my complete project report here.

2019 Summer Mentee Project Update: Hyperledger Fabric-Based Access Control

By Blog, Hyperledger Summer Mentorship Program

During the last six months, I had the chance to work as a part-time intern for the “Hyperledger Fabric-Based Access Control” project. It was my first contribution to an open source project, which was a great learning experience for me. I believe that contribution to an open source project leads to better understanding and more in-depth knowledge by accessing unlimited resources. I also had the chance to work with two amazing mentors from Universidade Nova de Lisboa, Professor Rui Cruz and  Rafael Belchior. 

Project Introduction and goals

The project goal was to create an attribute-based access control system on top of Hyperledger Fabric. We presented a system architecture with an implementation based on Hyperledger Fabric. We used the Google Cloud Platform to run a Virtual Machine instance and test our application and collect performance analysis data. The proposed solution was validated through a multi-stakeholder use case of independent digital libraries. Our preliminary evaluation based on Hyperledger Caliper shows that the system can achieve around 200 access control requests per second, with a latency of around 0.3 seconds. 

Project accomplishments

  • Developing System modelling and architecture (Figure 1)
  • Implementing the attribute-based access control components as Hyperledger Fabric ChainCode (smart contracts) and creating a simple front-end interface to interact with blockchain application
  • Conducting performance analysis based on Hyperledger Caliper
  • Analyzing performance data and graph visualization using matplot library
  • Presenting the project in the format of academic paper

Figure 1. System architecture

Future works

Currently, our project only addresses the authorization components. This project can be expanded to be integrated with the authentication component as well, for example, it can be integrated with Hyperledger Indy, as Hyperledger Indy provides a powerful structure for decentralized identity and systems authentication. 

I want to thank the Linux Foundation and Hyperledger team for providing this opportunity for me and all the other mentees. I also want to especially thank Min Yu. I greatly appreciate her kind assistance during the whole internship program. Lastly, I want to thank my two fantastic mentors, Professor Rui Cruz and Rafael Belchior. I truly appreciate and value everything I have learned from you. 

For more details, please see my complete project report here.

2019 Summer Mentee Project Update: Hyperledger Fabric SDK for Node.js security extension

By Blog, Hyperledger Summer Mentorship Program

What I worked on

I’m Hengming Zhang, a member of this summer’s Hyperledger Mentorship Program.

The general goal of my project was extending the security scope of the Hyperledger Fabric SDK for Node.js. Key objectives included:

  • Fix integration test failures on various operating systems.
  • Refactor the key store class design by object-oriented method.
  • Enhance the compatibilities of Hardware Security Module (HSM).
  • Construct an applicable offline signing scheme.

After having the first talk with my mentor, David Liu, I set out the milestones and deliverables with this project:

  1. Completing a list of checklist items that were established before the beginning of Hyperledger Mentorship Program. The checklist contains preparing:
    • AWS cloud account
    • Virtual machine snapshot for the on-premise desktop
    • Mobile devices
  2. Fixing  the integration test failures on macOS and Ubuntu by the 1st Quarter Evaluation.
  3. Refactoring Key store class design by the Midterm Quarter Evaluation.
  4. Enhancing HSM compatibility by the 3rd Quarter Evaluation.
  5. Offline signing of a client by the Final Evaluation.

Once I had finished the initial set up from the checklist, I started development for this project. During the development, the proudest of experience were using the right Hyperledger channels:

  • Technology – Hyperledger Fabric, Hyperledger Fabric CA, and Hyperledger SDK for Node.js.
  • Tools – Hyperledger Wiki, Hyperledger Gerrit, Hyperledger Chat and Hyperledger Jira.

By the end of this internship, I had finished 6/7 of the deliverables I had created above.

In conclusion, I think my work on the offline signing scheme could have the most impact on the Hyperledger or larger communities. I have constructed an applicable client offline signing scheme using Flutter as the client for the fabric-client-flutter project and Node as the server for the fabric-server-node project.

At last, there are our mentor and mentee’s information for this summer’s Hyperledger Mentorship Program:

MentorEmailOrganization
David (Yuxiang) Liudavid-khala@hotmail.comMediConCen
MenteeEmailUniversity
Hengming (5sWind) Zhangfiveswind@gmail.comFudan University

What I learned or accomplished

As I mentioned in the “What I worked on” section, the six deliverables I completed include:

  • Setting up an AWS cloud account
  • Creating a virtual machine snapshot for the on-premise desktop
  • Preparing mobile devices
  • Fixing the integration test failures on macOS and Ubuntu
  • Enhancing HSM compatibility
  • Offline signing of client

However, there are no such shortcut path as things moved forward. Below are some of the issues I had to overcome: 

  • Running AWS CloudHSM on EC2 instance: Ubuntu 18 / Windows Server 2019 / Red Hat Enterprise Linux
  • Installing SoftHSM on Windows 10 virtual machine snapshot
  • Constructing a PKCS#8 standard RSA asymmetric keys that can be used to interact with Hyperledger Fabric network as the user’s local key store
  • Constructing a Certificate Signing Request (CSR) using RSA keys on the client side
  • Building an interactive model between Hyperledger Fabric and Flutter mobile client
  • Refactoring current CryptoKeyStore mixin class to an object-oriented class model

Plus, there are also some of the insights I got and lessons I learned from the Hyperledger community:

  1. Communicate with others (e.g., project maintainers, mentors)
  2. Connect and work remotely
  3. Document ideas, issues, and reports
  4. Clean code and use state-of-the-art technologies

So, at this time, I would like to share with you some advice regarding working in an open source community:

  1. Clean code and annotations are necessary: it means when others look at your project, they can quickly understand what your code does.
  2. Communication is important: it can help to deduplicate works, find solutions, and so on.

For example, in my internship experience, leveraging the second piece of  advice, I found out that the community was refactoring the code base that I was working on. Therefore, the duplicated work could be avoided.

What comes next

The ending of the internship journey is not the destination. I have some recommended next steps for the project:

  • Advancing and improving the fabric-client-flutter project, such as extend it to support other platforms: Windows, macOS, and even IoT devices for them to use Hyperledger Fabric.
1 fabric-client-flutter project interface on Android device.
2 fabric-client-flutter project interface on iOS device.
  • Refactoring and improving the fabric-server-node project to common Hyperledger Fabric servers that can be serving any request from any Hyperledger Fabric client.
  • Continuously contributing to the fabric-sdk-node project.

In the future, I would like to be a long-term contributor to the Hyperledger or the larger open source community.

With this internship experience, I hope I can move forward as a recognized engineer and cryptographic researcher.

For more details, see my project report here.

2019 Summer Mentee Project Update – Hyperledger Umbra: Simulating Hyperledger Blockchains using Mininet

By Blog, Hyperledger Summer Mentorship Program

What I worked on

The simulation research internship during the summer of 2018 led to the creation of the Hyperledger Umbra Lab. Due to the overall difficulty of getting Hyperledger blockchain frameworks running under the Shadow simulation tool, work on the Umbra lab had slowed to a crawl. A different network (si)emulation tool called Mininet had been proposed as an alternative to using Shadow with the potential to drastically reduce the startup cost of getting a network simulation tool running Hyperledger blockchains. My research project was to test the feasibility of running Hyperledger blockchains under Mininet for the purposes of running scalability and consensus mechanism experiments.

Project Objectives:

  1. Build reference architecture (Logical View and Process View)
  2. Evaluate Fabric project with reference architecture
  3. Build Stimulus, Monitoring, Dynamics
  4. Build Analysis
  5. Extend architecture to other Hyperledger project(s)
  6. Document the project

What I accomplished

By the end of my project, I had completed the design of a generic event-oriented platform that can be modularly extended  to reproduce any Hyperledger blockchain platform. The main difficulty was getting a clear understanding of working with Fabric as integration with this tool was not well documented. The documentation, especially,for how to create an example of extending Umbra for another blockchain project, is still going on.

Project Deliverables:

  1. Generic platform for running Hyperledger  blockchain platforms 
  2. Reproducible Ad-hoc Hyperledger Fabric Network (main achievement)
  3. Reproducible Ad-hoc Hyperledger Iroha Network (almost finished)
  4. Documentation (ongoing)
  5. Accepted for Hyperledger Global Forum 2020

What comes next

This is the beginning of reproducible academic work on Hyperledger blockchain projects (i.e., the development of comparable methodologies for consensus, gossip, security, etc.). Now, the most interesting work is running Umbra at scale as a cloud with hundreds/thousands of blockchain nodes.

For more details, please see my complete project report here.

Many Thanks to the Hyperledger MentorshipCommunity!

#umbra via labs@lists.hyperledger.org
https://github.com/hyperledger-labs/umbra

Raphael Vicente Rosa
https://intrig.dca.fee.unicamp.br/raphaelvrosa/
https://www.linkedin.com/in/raphaelvrosa


2019 Summer Mentee Project Update: Hyperledger Ursa integration into Hyperledger Iroha

By Blog, Hyperledger Summer Mentorship Program

This year, I had the amazing opportunity to contribute to the open source Hyperledger community as part of the 2019 Hyperledger Mentorship program. Participating in the program also gave me valuable experience in working on open source projects!

What I worked on

I primarily contributed to Hyperledger Iroha, a permissioned decentralized ledger technology. Iroha is capable of creating and managing assets, identity, and more. Behind the scenes, the efficient ed25519 signature scheme is used for securing transactions, blocks, and consensus votes.

I also worked with Ursa, a Hyperledger project that aims to provide a reusable cryptographic library for other projects in the Hyperledger ecosystem.

Working with both the Iroha and Ursa communities was a very rewarding experience. After completing this project, the thought of making contributions to open source projects no longer feels daunting. Additionally, I had extraordinary guidance from my mentor, Andrei Lebedev, who is part of the Iroha team. Without his mentoring, I do not believe my project would have been as successful as it turned out!

What I accomplished

Goal

The main goal of my work was to enable Iroha to call Ursa for verifying and creating cryptographic signatures. 

Accomplishing this goal required the following major steps:

  • Integrating Ursa into Iroha’s build process
  • Interfacing with Ursa’s ed25519 signature functions 
  • Maintaining support for both the original Iroha crypto and Ursa crypto
  • Making it easy to choose a cryptography provider through the configuration file

Challenges

The primary challenge we faced was a slight difference in the original Iroha ed25519 code and the Ursa ed25519 code, preventing Ursa from being a simple drop-in replacement. Overcoming this challenge meant maintaining compatibility with both the existing Iroha crypto library and the Ursa library.

Integration Overview

The following figure illustrates the architecture of the Ursa integration.

What comes next

I’m very excited about the potential of this integration. Moving Hyperledger projects onto a standard cryptographic library is beneficial for increasing security, reducing duplicated efforts, and improving the overall ecosystem. I also hope that my work may serve as a reference for other Hyperledger projects that may be interested in integrating Ursa cryptography.

The internship project can be extended in the following ways:

  • Support compiling Ursa through Iroha’s build system in non-Unix environments
  • Improve documentation for using Ursa cryptography provider
  • Support Ursa-compatible ed25519 in Iroha’s client libraries 

As someone interested in working on distributed systems, cryptography, and other areas related to core blockchain development, this was the perfect internship for me. Working on it only solidified my passion for these areas of software engineering, and I plan to continue my career working on blockchain systems and security.

More details about the implementation of my project are available here; I encourage anybody interested to read more about it!