2018 Projects
These are 2018 projects. We're not accepting applications for these projects.
Project 1: Algorithmic Dispute Resolution in Construction
Project Description: Construction is the second largest global industrial sector. Litigation accounts for approximately 10% of the expenditure. The industry suffers from a dysfunctional relationship between the Architects, project managers, consultants, developers, and clients. The use of Blockchain and AI technologies has been investigated by the CBC @ UCL and identifed numerous areas or themes where a disruptive effect can be achieved. Legal, in particular contracting and dispute resolution are one of the main pillars of this project.This is a phased project which will model the workflows of a major construction project, in partnership with a leading UK contractor/project management company. The aim is to identify all relevant material prior to the contract being signed, automating the discovery phase of litigation, machining the large data set down to a 'hearing bundle' and then assessing 'needs and interests' prior to an automated resolution process. This is the first phase of the project which will identify work flows and identify the relevant documents, files and other digital material and assemble them in the blockchain where authentication can take place and a 'hearing bundle' prepared .
Additional Information: This is a project to build a demonstrator of a project that arises out of a joint paper by Jeremy Barnett and Philip Treleaven ' Algorithmic Dispute Resolution:The automation of professional dispute resolution using AI and Blockchain Technologies'https://academic.oup.com/comjnl/advance-article-abstract/doi/10.1093/comjnl/bxx103/4608879. See also https://www.constructionblockchain.org for full details about the CBC and www.Resilience-Partners.co.uk for more information about smart contract and other key issues.
Learning Objectives: The intern will develop skills in
construction contracting
a comprehensive approach to digital information in the construction sector including BIM ( Building Information Modelling)
The use of AI to identify relevant documents from a large data set.
Expected Outcome: The intern would be expected to prepare a report on the achievements of the individual modules in the project during the course of the internship and make proposals as to how the objectives of the project could best be implemented going forward to the next stage.
Eduction Level: Graduate student preferred
Desirable Skills: Knowledge of Construction Contracting and/or coding for smart contracts
Level of Difficulty: Challenging
Preferred Hours and Length of Internship: Part-time (20 hours a week for 24 weeks starting in summer and ending in fall)
Mentor(s): Jeremy Barnett, Jeremy.Barnett@Resilience-Partners.co.uk
Project 2: Design Effective Operational Platform for Blockchain Management
Project Description: Blockchain networks, itself is a complex distributed system. There are two main challenges right now to adopt blockchain services. 1) Hard to provision, especially for enterprise scenarios with requirements on permissions, data privacy, etc. 2) Difficult to operate, due to the lack of an effective tool. This project targets to design a practical operational management platform for blockchain services based on existing codebase of Hyperledger Cello, including an operator dashboard and user dashboard.
Additional Information: Project repo, Available TODO features
Learning Objectives:
Work closely with community experts and developers to learn the open-source culture and skills
Advanced knowledge inside the blockchain and distributed ledger areas
Expected Outcome:
Enhanced dashboard to operate the blockchain networks
Advanced capabilities to manage blockchain networks, including life-cycle, chaincode, permission
Other open objects that align with the existing roadmap
Eduction Level: Graduate student preferred
Desirable Skills:
Interested with blockchain and distributed system
Backend development skills including Python, Node.Js. Cloud and Docker is a bonus
Frontend skills including javascripts/css/html, experience with vue/react/jquery is a bonus
Level of Difficulty: Medium
Preferred Hours and Length of Internship: Part-time (20 hours a week for 24 weeks starting in summer and ending in fall)
Mentor(s): Baohua Yang, Haitao Yue Tong Li
Project 3: Extended Functionality/Support for EVM Smart Contracts and Tooling in Hyperledger Fabric
Project Description: Hyperledger Burrow has created an EVM implementation that is being integrated into Fabric. In initial phase, Fabric will support EVM bytecode smart contracts in a limited manner. Some of the features that need to be added include support for EVM smart contract events and extending support for the Ethereum API. The project will involve working with and understanding different blockchain platforms and being able to map their differing concepts.
Additional Information:
Hyperledger Burrow: https://github.com/hyperledger/burrow
Hyperledger Fabric: https://github.com/hyperledger/fabric
Learning Objectives:
Contributing and collaborating in an open source project
Being able to design and implement features from start to finish
Expected Outcome: Extended functionality/support for EVM smart contracts and tooling in Hyperledger Fabric.
Eduction Level: Graduate student or undergraduate student
Desirable Skills: Go knowledge, or ability to pick up languages quickly
Level of Difficulty: Medium
Preferred Hours and Length of Internship: Full-time (40 hours a week for 12 weeks during the summer) or Part-time (20 hours a week for 24 weeks starting in summer and ending in fall)
Mentor(s): Swetha Repakula, srepaku@us.ibm.com and Jay Guo, guojiannan@cn.ibm.com
Project 4: Hyperledger Composer Modelling Tools
Project Description: The Hyperledger Composer modelling language is used by both Hyperledger Composer and Accord Project Cicero as an object-oriented data description (schema) language, based on a textual domain-specific language. Both communities would benefit from improved tooling for the modelling language, including the ability to generate UML style diagrams and web-forms from class descriptions described using the Hyperledger Composer modelling language.
Additional Information:
Class Diagram Viewer or Editor: The class diagram editor could use a UML-like syntax and a suitable web framework, such as Angular2 or React, for model, view, controller logic.A more advanced editor could synchronise with the text of the Hyperledger Composer model itself — allowing the user to either edit graphically, or using the text syntax.The project can be broken down into the following milestones:1) Web viewer; 2) Web editor; and 3) Synchronise web editor with DSL text.The viewer/editor should be created as an embeddable, modular, component so it can be easily embedded in web-based tools, such as Hyperledger Composer Playground, or similar.
Web Form Generator: A web-form generated from model types would allow transactions to be submitted (or assets/participants created) by filling out a web-form, as opposed to submitting JSON formatted text, easing ease of use and guiding the user.The web form generator should be created to dynamically create form elements based on a root type from a Hyperledger Composer model. Some simplifying assumptions may need to be made to solve the issue of data-binding from arbitrarily complex object models to web forms.The web form generator should be an embeddable, modular, component so it can be easily embedded in web-based tools, such as Hyperledger Composer Playground, or similar.
More Information:
Modeling Language | Hyperledger Composer: https://hyperledger.github.io/composer/reference/cto_language.html
GitHub - accordproject/cicero: Open Source implementation of Accord Protocol Template Specification: https://github.com/accordproject/cicero
Hyperledger Composer: https://composer-playground.mybluemix.net
Learning Objectives:
Understand the Hyperledger Composer modelling language, and its meta-model
Investigate how best to bind models to web form elements such as: sliders, dropdowns, combo-boxes, text areas
Investigate how best to data-bind relationships, arrays and nested complex types
Investigate how client-side data validation can be used to enforce REGEX and domain validation constraints
Data description languages in general (relationships, inheritance, containment, namespaces, imports etc)
Graphical visualisation techniques for class diagrams and entity-relationship diagrams
Model-View-Controller architecture for graphical editors
Synchronise model and text
React/Angular2 component development
Displaying consistency errors
Expected Outcome:
Web-form Generator: A functional dynamic web component, that generates a web-form based on the fully-qualified name of a type from a Hyperledger Composer Model. A sample web application that shows the dynamic web component in action.
Class Diagram Editor: A functional web viewer, editor, or synchronised editor for CTO files, that can be easily embedded in a web application.
Eduction Level: Graduate student or undergraduate student
Desirable Skills: Models and meta-models (XSD, JSON Schema), Angular2 or React web development, HTML5, CSS
Level of Difficulty: Medium
Preferred Hours and Length of Internship: Full-time (40 hours a week for 12 weeks during the summer)
Mentor(s): Dan Selman, dan@clause.io
Project 5: Hyperledger Fabric Chrome Extension
Project Description: Web browsers are a ubiquitous client interface found on almost every computer. Today, many application user interfaces are delivered through web browsers. This is beneficial to users because it gives them a familiar interface and set of interactions without the need to install additional software per application. This is also beneficial to developers because it allows them to take advantage of existing standards, frameworks, libraries, and design patterns to build their interfaces. A number of web interfaces have already been built for Hyperledger Fabric. These generally allow users to explore the blockchain or provide a method for sending and viewing transactions within the context of a specific application. There is however an issue with providing and consuming Fabric web interfaces today.The Fabric peer, or middleware that accesses a Fabric peer, and web interface must be available on the same domain due to the same origin policy built into browsers. However, we can easily imagine a case where the web interface is hosted by FabricExplorer.com, but the Fabric peer is located inside an organization at MyCorp.com. FabricExplorer.com does not wish to let MyCorp run their code locally because they are a SaaS business. MyCorp does not wish to share access to its Fabric network or private keys with FabricExplorer.com. How can this situation be resolved? A Chrome extension combined with a JavaScript API is a solution that would be mutually beneficial to both companies. A user at MyCorp would install a Chrome extension, provided by the Hyperledger Fabric community, in their Chrome browser. They would then provide the extension with access information to the Fabric network in MyCorp. This information is only shared with MyCorp’s Fabric peer. FabricExplorer.com could detect the presence of the Chrome extension and interact with it through a JavaScript API. Their UI can now interact with the user’s Fabric network while credentials and transaction details do not leave MyCorp’s Fabric network.
Additional Information:
The proposed project is similar to MetaMask for Ethereum which has proven to be very popular. See https://metamask.io and https://github.com/MetaMask/faq/blob/master/DEVELOPERS.md
Hyperledger Explorer: https://github.com/hyperledger/blockchain-explorer
Hyperledger Fabric: https://github.com/hyperledger/fabric
Hyperledger Node.js SDK: https://github.com/hyperledger/fabric-sdk-node
Chrome extension development
JavaScript API design
Hyperledger Fabric experienceThe intern will receive regular supervision and mentorship from engineers who have contributed to Hyperledger Fabric and are engaged in real world DLT use cases in the finance industry
Expected Outcome: The MVP is a Fabric Chrome extension paired with a Javascript API. Users should be able to use the Chrome Extension to authenticate to a Fabric network. The Chrome Extension should provide a JavaScript API that websites call to perform the following functions
detect presence of extension
initiate a transaction
read blockchain data allowed by the extension
Eduction Level: Graduate student or undergraduate student
Desirable Skills:
JavaScript
Previous experience designing JavaScript APIs
Previous Hyperledger Fabric experience (desired, but not required)
Experience building a browser extension (desired, but not required)
Level of Difficulty: Medium
Preferred Hours and Length of Internship: Full-time (40 hours a week for 12 weeks during the summer)
Mentor(s): Sheehan Anderson, sanderson1@statestreet.com and Binh Nguyen, bnguyen@statestreet.com
Project 6: Hyperledger Fabric SDK-py
Project Description: Python is a popular programming language, the project will make a fabric and fabric-ca SDK python library. It will align with nodejs SDK and java SDK, encapsulate fabric underlying grpc invocation and provide convenient API for python developer. We will deprecated python 2 ASAP and will support python 3.5 and above only. Currently we almost implemented a MVP for fabric transaction flow, however we still a lot of work to do such as refine API, enhance test, create sample application. Meanwhile performance improvement also need consider. We may also can make fabric support python chaincode as well. So far we have several contributors come from China, Germany and India. We have weekly meetings and we are open for everyone who is interested.
Additional Information: https://wiki.hyperledger.org/projects/fabric-sdk-py
Learning Objectives: For technique, intern can master python 3 programming python language, hyperledger fabric transaction flow such as transaction/block structure, grpc invocation and etc.For open source collaboration, intern can learn open source work approach and communication.
Expected Outcome: Make fabric SDK-py ready to use in production and create a completed sample application.
Eduction Level: Graduate student or undergraduate student
Desirable Skills: python 3; grpc; crypto
Level of Difficulty: Easy
Preferred Hours and Length of Internship: Full-time (40 hours a week for 12 weeks during the summer) or Part-time (20 hours a week for 24 weeks starting in summer and ending in fall)
Mentor(s): Kai Chen, 281165273@qq.com or rocketchat:@grapebaba
Project 7: Hyperledger Identity WG Onboarding and Auth
Project Description: The Hyperledger Identity WG Intern will be mentored by members of the Identity WG / Hyperledger Indy Maintainers and accomplish 2 main tasks: learn and develop an iPython notebooks for onboarding new community members and a browser-based authentication app using decentralized identifiers in Hyperledger Indy. This bachelors-level internship has two core goals: experience and contribution.
Experience:The Identity WG Intern will create interoperable, open-source code that will educate new and existing Hyperledger community members. Creating an iPython notebook and code sample will be based on their own onboarding into Hyperledger and Indy, using what they have learned in the process and helping the community by identifying what would be more effective in a better onboarding experience.For browser-based authentication with DIDs, Interns will learn critical professional development skills, from working in GIT to understanding the structure of well-formed code, to developing their own tests and proper documentation best practices.
Contribution:Through developing both projects ( iPython notebooks / code samples and browser-based authentication with DIDs), the Intern will be making an important contributions to future Hyperledger community members onboarding efforts, the Indy codebase and the entire decentralized identity ecosystem.
Additional Information:
iPython Getting Started Guide: currently in testing - will update this when ready
Anoncreds:
https://github.com/hyperledger/indy-node/blob/master/design/anoncreds.md
https://github.com/hyperledger/indy-node/blob/master/docs/relationship-diagram.png
http://dl.ifip.org/db/conf/idman/idman2013/CamenischDLNPP13.pdf
https://docs.google.com/document/d/1XEfaOinOTIU9RgtP-GlXQAbOoW8z-oR5aWJDoQdftZ4/edit?usp=sharing
Decentralized Identifiers:
Learning Objectives: The Intern will be mentored by two of the lead maintainers on the project, Vyachslava Gudkov and TSC member, Nathan George with a possible third mentor from the Indy Maintainer. The Identity WG Intern will have the following learning objectives:
Collaboration on, editing and finalization of a POA (Plan of Attack) for the iPython notebook onboarding module
Collaboration on and finalization of a POA (Plan of Attack) for the browser-based authentication pilot with DIDs
Understanding, implementation and deployment of code using W3C standards-compliant DIDs and DID Docs
Professional experience working with a distributed, global team (11+ time-zones)
Professional experience working within a distributed and Agile development environment/team
Learning to work with GitHub in an active project
Learning how to use and create tests as a professional developer
Learning how to professionally document the code they create
Expected Outcome:
iPython onboarding notebook-based agent (reference agent for Indy)
Web-based Auth within Indy SDK
Eduction Level: Graduate student or undergraduate student
Desirable Skills: Rust; Python
Level of Difficulty: Medium
Preferred Hours and Length of Internship: Part-time (20 hours a week for 24 weeks starting in summer and ending in fall)
Mentor(s): Vyachslava Gudkov, vyacheslav.gudkov@dsr-company.com and Kyle Den Harto, kyle.denhartog@evernym.com
Project 8: Python Library for Hypereldger-Iroha
Project Description: As of now Hyperledger-Iroha is in heavy development phase. Blockchain platform Hyperledger Iroha is designed for simple creation and management of assets. This is a distributed ledger of transactions.Here, students are expected to make fully fledge Python library for Iroha. At least they are able to solve issues mentioned there. Later, in next stage we want student to maintain the docs of Iroha. We figured out that there are many missing docs on getting started and about the internal works of Iroha. We expect student to complete the doc part along with dev work.Iroha has the following features:
Creation and management of custom complex assets, such as currencies or indivisible rights, serial numbers, patents, etc.
Management of user accounts
Taxonomy of accounts based on domains — or sub-ledgers in the system
The system of rights and verification of user permissions for the execution of transactions and queries in the system
Validation of business rules for transactions and queries in the system
Additional Information:
Learning Objectives: Interns will have following advantage on completion of project.
Complete basic understanding on Hyperledger module.
Working knowledge of Iroha
Python Wrapper making procedure
Maintaining standard docs for people around the globe
Exposure to the latest technology
Expected Outcome: Project is divided into three basic steps. First two are on code and third on docs.
Stage 1. Do a setup on Iroha on local system. send some PR to few of the issues like https://github.com/hyperledger/iroha/issues/774
Stage 2. Make python wrapper. You can use following repo https://github.com/hyperledger/iroha-python/issues
Stage 3. Make doc to get quick start
Eduction Level: Graduate student or undergraduate student
Desirable Skills: Python; C++; Linux; Writing Docs
Level of Difficulty: Medium
Preferred Hours and Length of Internship: Full-time (40 hours a week for 12 weeks during the summer)
Mentor(s): Ankit Raj, ankitblockchain3@gmail.com
Project 9: Running Solidity Smart Contracts on Hyperledger Fabric or Vice Versa
Project Description: Presently, blockchains provide different mechanisms for writing “smart contracts” aka chain code. In Hyperledger Fabric, one can write the smart contract in Go lang or Javascript, and deploy it on appropriate peers. Writing chain code in Go lang can be a bit challenging for some developers. Thus, Hyperledger Composer provides a Javascript-based approach for writing smart contracts. Similarly, public blockchains such as Ethereum provide a Javascript-like mechanism (Solidity) for writing smart contracts. However, one cannot use smart contracts written for Hyperledger Fabric to Solidity and vice versa; these have to be rewritten. You will develop a translator that will translate the Solidity code into Javascript or equivalent that can be deployed and instantiated into a Hyperledger Fabric deployment. You will then run the code in both environments and show that it produces equivalent results. For Ethereum, you will use their private network setting. You will take the fabric-samples repository that contains samples for various Hyperledger Fabric samples, and write the corresponding Solidity code. Then using your tool, you can “compile” the Solidity code into chain code for Hyperledger Fabric. Your tool can generate either Javascript (for Composer), or Go code as the translated chain code. You will at least write four non-trivial contracts in Solidity, translate them using your program, deploy them into Hyperledger Fabric, and show the execution. Fabric samples repository: https://github.com/hyperledger/fabric-samples
Additional Information: There are various Solidity parsers available that can be used as a start. However, they are still a developmental version.
Learning Objectives:
The intern is expected to become an expert in the writing of smart contracts (chain code) on various blockchain platforms. The intern will learn similarities and differences between smart contracts for different blockchain platforms, and document key insights which will be useful for the wider community.
I expect to use a Slack or equivalent where the intern will document their progress daily. I have used Slack with interns in the past and have found it to be a useful way to track daily progress. I also expect to schedule some calls during the initial phase of the project to explain the project and to get the intern going.
It is expected that the intern will be a self-starter who is motivated to learn various smart contract languages.
Expected Outcome:
The expected outcome will be a tool that can translate Solidity smart contracts into chain code for execution on Hyperledger Fabric.
In addition, a report on the challenges encountered and resolution is also expected. The report can be on github.
Upon successful completion, the intern is expected to create a YouTube video of the project.
Eduction Level: Graduate student or undergraduate student
Desirable Skills:
Languages: Javascript, Go
Blockchain platforms: Ethereum (basic), Hyperledger Fabric (basic)
Familiarity with tools such as ANTLR
Level of Difficulty: Medium
Preferred Hours and Length of Internship: Full-time (40 hours a week for 12 weeks during the summer) or Part-time (20 hours a week for 24 weeks starting in summer and ending in fall)
Mentor(s): Salman A. Baset, IBM Blockchain, sabaset@us.ibm.com
Project 10: Simulating Hyperledger Networks with Shadow
Project Description: The Shadow network simulation tool (https://shadow.github.io/) is capable of running off-the-shelf software in a controlled, simulated network environment. To accomplish the task, a plugin to the Shadow simulator must be written for each piece of software run under simulation. Shadow is already being used to simulate and measure, in a lab environment, the Tor network and the Bitcoin network. This internship is focused on implementing a Shadow plugin for one of the Hyperledger blockchain platforms so that the community can run simulations and measure the performance at different scales. The data collected will guide future development as well as provide hard numbers for the performance and scalability working group to work with.
Additional Information: The Shadow network simulation tool is here: https://shadow.github.io and from there you can follow links to examples of what was done to simulate Bitcoin and Tor networks with Shadow.
Learning Objectives:
Put into practice writing real software in the programming languages they have learned.
Gain a deep understanding of how the Hyperledger blockchains are organized at the network level.
Learn about consensus networks and how the nodes must collaborate and corroborate to always come to the same conclusion.
Experience working closely with an open source working group to implement a tool they can use to run experiments with.
Expected Outcome:
A Shadow plugin for one of the Hyperledger blockchain platforms.
A Shadow simulation configuration that successfully executes and simulates a Hyperledger blockchain network.
A post-mortem report explaining what happened during the project, what went right, and what went wrong.
A proposal–developed with the help of the Scalability and Performance working group–for a simulation experiment that can be run using the new tool. This just needs to be a detailed description (e.g. what is the scale, what is to be measured), no actual implementation is expected.
Eduction Level: Graduate student preferred
Desirable Skills:
Must be proficient in Python and at least one of C/C++/Rust.
Must be proficient with setting up software builds using CMake and/or Makefiles.
Must be proficient with Git and Github and email as collaboration tools.
Must have some understanding of the network stack and how networks are organized (e.g. IP addresses, ports, TCP/UDP, etc).
A plus if they are familiar with Docker and/or Vagrant.
Level of Difficulty: Challenging
Preferred Hours and Length of Internship: Full-time (40 hours a week for 12 weeks during the summer)
Mentor(s): David Huseby, dhuseby@linuxfoundation.org
Project 11: Utilizing Hyperledger Fabric to Develop Supply Chain Application
Project Description: Utilize Hyperledger Fabric framework to develop food tracing application. This application needs to realize track and monitor of food's origin and transportation through collecting data from manufacturers and customers of food supply chain. Port the existing Hyperledger Sawtooth Supply Chain application (https://github.com/hyperledger/sawtooth-supply-chain) to Hyperledger Fabric. Contribute this source code to Hyperledger Fabric’s sample repository (https://github.com/hyperledger/fabric-samples). Write up a comparative analysis on the differences in implementing smart contracts (chaincode vs. transaction families) in the two technologies – Hyperledger Fabric and Hyperledger Sawtooth. In addition, document the steps required to convert a running application in Hyperledger Sawtooth to Hyperledger Fabric and vice versa. Time permitting develop a tool that will convert chaincode to transaction families and vice versa.
Additional Information:
Learning Objectives: Cultivate interns with block chain and hyperledger project technology through training and education. Follow project progress and research result through weekly meeting. Participate local meetups and involve in open community discussion.
Expected Outcome: Food trace application with Fabric framework and demos. Technical document and comparative analysis report between Sawtooth and Fabric. Performance analysis demo.
Eduction Level: Graduate student preferred
Desirable Skills:
Languages: Javascript, Go, Python
Blockchain platforms: Hyperledger Fabric (basic); Hyperledger Fabric (basic)
Collaboration tools: Github, Rocket Channel
Level of Difficulty: Challenging
Preferred Hours and Length of Internship: Full-time (40 hours a week for 12 weeks during the summer) or Part-time (20 hours a week for 24 weeks starting in summer and ending in fall)
Mentor(s): Leon Liang, liangyl1987@hotmail.com
Project 12: UTXO Transactions in Iroha
Project Description: The unspent transaction output (UTXO) model, in contrast to the current account-based model used in Iroha, helps to enhance the privacy of transactions and also can provide benefits with respect to interoperability with other UTXO-based blockchains, such as Bitcoin. To realize the UTXO transaction model in Iroha, the task is to implement an unspent transaction output cache (for transaction verification) and support inputs and the generation of outputs for Iroha asset transfer transactions.
Additional Information: https://bitcoin.org/en/glossary/unspent-transaction-output
Learning Objectives: The learning objective is to understand the difference between account-based and UTXO-based transaction models for blockchain. Both of these models have different use cases and the underlying philosophies behind the models are different. By comprehending both models, the intern will have an understanding of when to apply which model to what kind of problem.
Expected Outcome: C++ source code for supporting the UTXO transaction model in Iroha
Eduction Level: Graduate student or undergraduate student
Desirable Skills: C++, understanding of basic blockchain concepts
Level of Difficulty: Medium
Preferred Hours and Length of Internship: Full-time (40 hours a week for 12 weeks during the summer) or Part-time (20 hours a week for 24 weeks starting in summer and ending in fall)
Mentor(s): Makoto Takemiya, takemiya@soramitsu.co.jp