User Tools

Site Tools



This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
internship:project_ideas [2018/03/05 19:02]
Todd Benzies
internship:project_ideas [2018/03/25 03:46] (current)
Min Yu
Line 1: Line 1:
-==== 2018 Projects ====+====== 2018 Projects ====== 
 + ​[[internship:​how_to_apply|APPLICATION IS NOW CLOSED]]
 **Project 1: Algorithmic Dispute Resolution in Construction** **Project 1: Algorithmic Dispute Resolution in Construction**
Line 19: Line 20:
 ---- ----
 **Project 2: Design Effective Operational Platform for Blockchain Management** **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 Hperledger ​Cello, including an operator dashboard and user dashboard. +  ***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:​** [[https://​​hyperledger/​cello]]+  ***Additional Information:​** [[https://​​hyperledger/​cello ​| Project repo]],​[[https://​​projects/​CE/​issues/​CE-188?​filter=allopenissues | Available TODO features]]
   ***Learning Objectives:​** ​   ***Learning Objectives:​** ​
-        *Work closely with community developers to learn the open-source culture and skills+        *Work closely with community ​experts and developers to learn the open-source culture and skills
         *Advanced knowledge inside the blockchain and distributed ledger areas         *Advanced knowledge inside the blockchain and distributed ledger areas
   ***Expected Outcome:**   ***Expected Outcome:**
         *Enhanced dashboard to operate the blockchain networks         *Enhanced dashboard to operate the blockchain networks
         *Advanced capabilities to manage blockchain networks, including life-cycle, chaincode, permission         *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   ***Eduction Level:** Graduate student preferred
   ***Desirable Skills:**   ***Desirable Skills:**
         *Interested with blockchain and distributed system         *Interested with blockchain and distributed system
-        *Backend development skills including Python, Node.Js+        *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         *Frontend skills including javascripts/​css/​html,​ experience with vue/​react/​jquery is a bonus
   ***Level of Difficulty:​** Medium   ***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)   ***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, [[]]+  ***Mentor(s):​** ​[[ | Baohua Yang]], [[ ​| Haitao Yue]] [[ | Tong Li]]
Line 177: Line 179:
         *Stage 3. Make doc to get quick start         *Stage 3. Make doc to get quick start
   ***Eduction Level:** Graduate student or undergraduate student   ***Eduction Level:** Graduate student or undergraduate student
-  ***Desirable Skills:** Python; C; Linux; Writing Docs+  ***Desirable Skills:** Python; ​<​nowiki>​C++</​nowiki>​; Linux; Writing Docs
   ***Level of Difficulty:​** Medium   ***Level of Difficulty:​** Medium
   ***Preferred Hours and Length of Internship:​** Full-time (40 hours a week for 12 weeks during the summer)   ***Preferred Hours and Length of Internship:​** Full-time (40 hours a week for 12 weeks during the summer)
-  ***Mentor(s):​** Ankit Raj, [[]]+  ***Mentor(s):​** Ankit Raj, [[]]
 ---- ----
 **Project 9: Running Solidity Smart Contracts on Hyperledger Fabric or Vice Versa** **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://​​hyperledger/​fabric-samples]] 
-**Project 10UTXO Transactions ​in Iroha**+  ***Additional Information:** There are various Solidity parsers available that can be used as a start. However, they are still a developmental version. 
 +        *[[https://​​ConsenSys/​solidity-parser]] 
 +        *[[https://​​federicobond/​solidity-parser-antlr]] 
 +  ***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, [[]]
 ---- ----
-==== 2017 (2017 projects no longer accepting applications) ====  +**Project ​10Simulating Hyperledger Networks with Shadow** 
----- +  ***Project ​Description:​** ​The Shadow network simulation tool ([[https://​​]]) ​is capable of running off-the-shelf software in controlledsimulated 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 lab environment,​ the Tor network ​and the Bitcoin networkThis 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
-**Project ​1:** **Deploy Fabric on Kubernetes Using Cello** +  ***Additional Information:​** ​The Shadow network simulation tool is here[[]] and from there you can follow links to examples of what was done to simulate Bitcoin and Tor networks with Shadow. 
-  * **Description:​ ** Cello is a Hyperledger project used to deploy blockchain serviceswhich can be used to easily create, manage ​and stop blockchain system. Currently it supports platforms as baremetal ​and docker swarmAs 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+  ***Learning Objectives:**  
-  * **Additional Information:​** ​ +        *Put into practice writing real software in the programming languages they have learned
-        * Cello:​hyperledger/​cello +        *Gain a deep understanding of how the Hyperledger blockchains are organized at the network level. 
-        * Kubernetes:​https://​​kubernetes/​kubernetes +        *Learn ​about consensus networks ​and how the nodes must collaborate and corroborate to always come to the same conclusion.  
-  * **Desirable Skills:**  +        * Experience working closely with an open source working group to implement a tool they can use to run experiments with. 
-        * Familiar with Python and golang+  ***Expected Outcome:**  
-        * Know about Docker ​and Kubernetes+        *A Shadow plugin for one of the Hyperledger blockchain platforms
-        * Fluent Mandarin will be prefered +        *A Shadow simulation configuration that successfully executes ​and simulates a Hyperledger blockchain network. 
-  * **Learning Objectives:** +        *A post-mortem report explaining what happened during the project, what went right, and what went wrong
-        * Knowledge ​of working with open source community+        * A proposal--developed with the help of the Scalability ​and Performance working group--for ​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
-        * Architecture ​and basic features of CelloFabric ​and Kubernetes+  ***Eduction Level:** Graduate student preferred 
-        * How to design, develop ​and test feature+  ***Desirable Skills:**  
-  * **Expected Outcome: **Running featureUI and tests +        *Must be proficient in Python and at least one of C/<​nowiki>​C++</​nowiki>/​Rust. 
-  * **Level of Difficulty: **Medium +        *Must be proficient with setting up software builds using CMake and/or Makefiles. 
-  * **Mentor(s):​ **Jiang Feihu, Huawei, [[|]]+        *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 addressesports, 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, [[]]
 ---- ----
-**Project ​2:** **Contract-based Business Process Execution ​ / Hyperledger ​as a Business Process Execution Engine** +**Project ​11Utilizing ​Hyperledger ​Fabric to Develop Supply Chain Application** 
-  * **Description:​ **  +  ***Project ​Description:​** ​Utilize Hyperledger Fabric framework to develop food tracing applicationThis application needs to realize track and monitor ​of food's origin and transportation through collecting ​data from manufacturers ​and customers of food supply chainPort the existing Hyperledger Sawtooth Supply Chain application ​([[https://​​hyperledger/​sawtooth-supply-chain]]) to Hyperledger FabricContribute this source code to Hyperledger Fabric’s sample repository ​([[https://​​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 SawtoothIn addition, document ​the steps required ​to convert ​running application in Hyperledger Sawtooth ​to Hyperledger ​Fabric and vice versaTime permitting develop a tool that will convert chaincode ​to transaction families and vice versa
-      * 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 mannerBPMN is a standard for describing business processes, also extended by other standards ​(e.g. DMNN) to describe decision logic behind individual process steps. +  ***Additional Information:​** 
-      * Traditional process engines assume there is a central entity responsible for all execution/​management tasks like starting a process instance, ​ passing data (represented by tokensamong components ​implementing ​different tasks of a process ​(e.g. validate data, initiate an asynchronous ​transaction, sending a confirmation email, etc.)+        *[[https://​​hyperledger/​sawtooth-supply-chain]] 
-      * 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. +        *[[​hyperledger/​fabric-samples]] 
-      * The aim of the internship is to create ​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)+  ***Learning Objectives:** Cultivate interns with block chain and hyperledger project technology through training and education. Follow project progress and research ​result through weekly meetingParticipate local meetups and involve in open community discussion.  
-      * The intern will perform the following suggested tasks with the help of the mentor: +  ***Expected Outcome:** Food trace application with Fabric framework and demos. Technical document and comparative analysis report between Sawtooth and Fabric. Performance analysis demo. 
-         * define a subset of BPMN language which will be mapped to  smart contracts +  ***Eduction Level:** Graduate student preferred 
-         create sample but representative case studies which are complex enough to cover relevanr combinations of BPMN model elements +  ***Desirable Skills:**  
-         create test definitions (input data and required output) for these models +        *LanguagesJavascript, Go, Python 
-         define a mapping from model elements to smart contract fragments over Hyperledger +        *Blockchain platforms: ​Hyperledger ​Fabric ​(basic); Hyperledger Fabric ​(basic
-         create example contracts and validate the concept +        *Collaboration tools: Github, Rocket Channel 
-         define and create automated transformation for contract generation +  ***Level of Difficulty:** Challenging 
-         ​execute and evaluate pre-defined tests to (informally) validate the correctness of the approach and the transformations ​ +  ***Preferred Hours and Length ​of Internship:** Full-time (40 hours week for 12 weeks during the summeror Part-time (20 hours a week for 24 weeks starting in summer ​and ending ​in fall
-         ​optionalre-use and adapt existing modelling frameworks (e.g. to serve as a "​design GUI" over blockchain-based process execution +  ***Mentor(s):​** ​Leon Liang, [[]] 
-  * **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) +
-        * Advantageprevious 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 (practicallyprove 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, [[|]]+
 ---- ----
-**Project ​3:** **Anonymous ​Transactions in Iroha** +**Project ​12UTXO Transactions in Iroha** 
-  * **Description:​ **For many use cases involving distributed ledgerthe ability ​to hide the sender and recipient of digital assetswhile still being able to verify that the assets exist and are not being double spentis required. To realize ​this in Hyperledger ​Iroha, ​a scheme involving secure multiparty computation or dining cryptographer ​(DCnetworks should be implemented as a prototype ​and studied+  ***Project ​Description:​** ​The unspent transaction output (UTXO) modelin contrast ​to the current account-based model used in Irohahelps to enhance ​the privacy of transactions ​and also can provide benefits with respect to interoperability with other UTXO-based blockchainssuch 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:​** ​Reading the following documents might be useful: ​             ​​wiki/​Dining_cryptographers_problem ​ +  ***Additional Information:​** ​[[]] 
-  * **Desirable Skills:** C++11 and abovebasic knowledge ​of cryptography+  ***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 modelsthe intern will have an understanding ​of when to apply which model to what kind of problem
-  * **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:** <​nowiki>​C++</​nowiki>​ source code for supporting ​the UTXO transaction model in Iroha 
-  * **Expected Outcome: **Prototype ​of anonymous transfers in Hyperledger Iroha. +  ***Eduction Level:** Graduate student or undergraduate student 
-  * **Level of Difficulty: **Difficult +  ***Desirable Skills:** <​nowiki>​C++</​nowiki>,​ understanding ​of basic blockchain concepts 
-  * **Mentor(s):​ **Makoto Takemiya ​and Bogdan Vaneev, Soramitsu, [[]] ​   +  ***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, [[]]
 ---- ----
-**Project 4:** **Preserving Privacy with Sawtooth Lake** +==== Previous Years ==== 
-  * **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:​** +
-        * Code: https://​​hyperledger/​sawtooth-core +
-        * Docs: http://​​ +
-        * Relevant Papers: +
-          * https://​​2009/​095.pdf +
-          * http://​​wp-content/​uploads/​sites/​29/​2014/​12/​Anonymous-Identities-for-Permissioned-Blockchains2.pdf  +
-  * **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, [[]] +
 ---- ----
-**Project 5:** **Design and Implement Blockchain Clustering Platform for Hyperledger** +  ​[[internship/project_ideas/2017 2017]]
-  * **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 +
-  * **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,​[[|]] and Haitao Yue, IBM, [[|]] +
- +
internship/project_ideas.1520276554.txt.gz · Last modified: 2018/03/05 19:02 by Todd Benzies