2017 Projects
These are 2017 projects. We're not accepting applications for these projects.
Project 1: Deploy Fabric on Kubernetes Using Cello
Description: Cello is a Hyperledger project used to deploy blockchain services, which can be used to easily create, manage and stop a blockchain system. Currently it supports platforms as baremetal and docker swarm. As another important orchestration tool in container world, Kubernetes is widely accepted by lots of cloud providers. The initial idea of the intern project is to add Kubernetes support for Cello.The project will enhance Cello by providing a user interface which would allow system administrators to edit their desired topology and resources of a blockchain system, generating a Kubernete config file and calling Kubernetes APIs to deploy such system.
Additional Information:
Desirable Skills:
Familiar with Python and golang.
Know about Docker and Kubernetes.
Fluent Mandarin will be prefered
Learning Objectives:
Knowledge of working with open source community.
Architecture and basic features of Cello, Fabric and Kubernetes.
How to design, develop and test a feature.
Expected Outcome: Running feature, UI and tests
Level of Difficulty: Medium
Mentor(s): Jiang Feihu, Huawei, jiangfeihu@huawei.com
Project 2: Contract-based Business Process Execution / Hyperledger as a Business Process Execution Engine
Description:
Many systems rely on process-based execution logic (banks, insurance companies, etc.). Also there are a growing number of applications where data originated from sensors and other physical data sources are transformed and processed in a workflow-like manner. BPMN is a standard for describing business processes, also extended by other standards (e.g. DMNN) to describe decision logic behind individual process steps.
Traditional process engines assume there is a central entity responsible for all execution/management tasks like starting a process instance, passing data (represented by tokens) among components implementing different tasks of a process (e.g. validate data, initiate an asynchronous transaction, sending a confirmation email, etc.).
This engine is a bottleneck in terms of performance, robustness and also assumes that a trusted central entity with no external control exists.Process monitoring tools often rely on the status of processes under execution returned by the execution engine in the form of events or log entries.
The aim of the internship is to create a mapping from business process execution semantics (formalized from BPMN model fragments) to smart contracts of Hyperledger. This way, Hyperledger will serve as a process execution engine. Blockchain can also serve as an audit log provider to check compliance of external executions (e.g. to verify whether a particular actor in a financial ecosystem executed its process properly).
The intern will perform the following suggested tasks with the help of the mentor:
define a subset of BPMN language which will be mapped to smart contracts
create sample but representative case studies which are complex enough to cover relevanr combinations of BPMN model elements
create test definitions (input data and required output) for these models
define a mapping from model elements to smart contract fragments over Hyperledger
create example contracts and validate the concept
define and create automated transformation for contract generation
execute and evaluate pre-defined tests to (informally) validate the correctness of the approach and the transformations
optional: re-use and adapt existing modelling frameworks (e.g. model.io) to serve as a “design GUI” over blockchain-based process execution
Additional Information:Similar research has already begun over Ethereum, see e.g., DOI: 10.1007/978-3-319-45348-4
Desirable Skills:
Ability to model things, basic understanding of business processes
BPMN knowledge
Coding experience (preferably in Java)
Advantage: previous knowledge in model storage/manipulation techniques (e.g. XML transformations, Eclipse EMF and related technologies)
Ability to read scientific papers or technology descriptions in English
Basic understanding of blockchain concepts
Solid English knowledge
Ability to work and make decisions individually (under supervision)
Learning Objectives:
Technical learning objectives:
Understanding of smart contracts and Hyperledger
Experience in building Hpyerledger-based applications
Advanced knowledge on BPMN modeling
Experience in formal methods (e.g. dataflow networks)
Model transformation/generation technologies (e.g. Xtext)
Understanding of business process monitoring and compliance check and their role in financial applications
Experience in scientific literature review
Mentoring will be primarily carried out remotely (e.g. Skype) with daily consultation if needed.
We are currently checking the possibility for officially hosting the intern.Please be advised that we expect not to be able to cover travel costs.
Expected Outcome:
Report on BPMN mapping definition, incl. example models and required behavior
Report on the implementation and experiments
Code (at a Proof of Concept level):
Smart contract patterns to represent BPMN behavior
Generator code to a)retrieve relevant information from BPMN models and b)generate the corresponding smart contracts
Simple execution environment where the pre-defined case study can be implemented(sample data, workload generator, test evaluator)
Test cases defined, executed and evaluated in order to (practically) prove the correctness of the transformation/generated smart contracts
Level of Difficulty: Medium
Mentor(s): László Gönczy, Budapest University of Technology and Economics, Department of Measurement and Information Systems, Fault Tolerant Systems Research Group, gonczy@mit.bme.hu
Project 3: Anonymous Transactions in Iroha
Description: For many use cases involving distributed ledger, the ability to hide the sender and recipient of digital assets, while still being able to verify that the assets exist and are not being double spent, is required. To realize this in Hyperledger Iroha, a scheme involving secure multiparty computation or dining cryptographer (DC) networks should be implemented as a prototype and studied.
Additional Information: Reading the following documents might be useful: https://en.wikipedia.org/wiki/Dining_cryptographers_problemhttps://en.wikipedia.org/wiki/Oblivious_transfer
Desirable Skills: C++11 and above, basic knowledge of cryptography.
Learning Objectives:Interns can learn about applied cryptography, distributed ledgers, and managing financial assets and contracts. Our company works with many financial institutions in Japan, so it can be interesting to learn about many of the problems that financial institutions face and how to solve them using technology.
Expected Outcome: Prototype of anonymous transfers in Hyperledger Iroha.
Level of Difficulty: Difficult
Mentor(s): Makoto Takemiya and Bogdan Vaneev, Soramitsu, info@soramitsu.co.jp
Project 4: Preserving Privacy with Sawtooth Lake
Description:
Privacy is a very active area of research in distributed ledgers. Privacy can be considered from a number of aspects including commonly: transaction logic, assets, and transactor (user) participation.
Hyperledger Sawtooth Lake is a distributed ledger designed to apply across the deployment spectrum from publicly available networks to closed consortium networks. This project will explore privacy techniques applicable across that spectrum with a preference for the most difficult deployments where information is generally visible across the network.
The intern will work with Sawtooth Lake developers, including senior developers and researchers from Intel Corporation, to prototype new or refine existing privacy mechanisms. Mechanisms may include cryptographic techniques such as zero knowledge proofs and trusted execution such as SGX.
Additional Information:
Desirable Skills:
Research or development experience with anonymous credential systems
Graduate level understanding of Abstract Algebra
Fluency with at least one programming language.
Experience with Python will be helpful but not required
Learning Objectives:
Learning how to contribute in a large open source project.
Learning to define security requirements in an addressable way.
Learning to implement security and privacy features in distributed systems.
Learning state of the approaches to privacy.
Expected Outcome:
New software module or capability to provide privacy in blockchains
A report designing a new privacy capability for blockchains
Other substantive deliverable options can be discussed.
Level of Difficulty: Difficult
Mentor(s): Dan Middleton, Intel, dan.middleton@intel.com
Project 5: Design and Implement Blockchain Clustering Platform for Hyperledger
Description: Cello is a Hyperledger project that can manage thousands of blockchains and provide them to developers. It's designed and implemented in Python. Currently we are designing and implementing new features (e.g., better scheduling performance, better UI) to support Hyperledger Fabric, Hyperledger Sawtoothlake and Hyperledger iroha better. Anyone who's interested in Blockchain techniques, clustering, cloud computing, UI design, or Python coding, is always welcome.
Additional Information: Existing project is at github.com/hyperledger/cello
Desirable Skills:
For backend developers: You'd better know a little about Python. And cloud knowledge (e.g., docker, distributed system) is welcome;
For frontend developers: HTML+javascript, and some basic knowledge on popular frameworks, e.g., react.
Learning Objectives:You will learn how to work inside open-source community, the key techniques in those large-scale system (e.g., cloud computing, clustering), blockchain. It's limitless, with more effort to pay, more you will learn.
Expected Outcome: Hyperledger Cello with new features.
Level of Difficulty: Medium
Mentor(s): Baohua Yang, IBM,yangbaohua@gmail.com and Haitao Yue, IBM, hightallyht@gmail.com