Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Page properties


TitleRunning Web Assembly Smart Contracts in Fabric
Status

Status
colourBlueGreen
titleOpen for ApplicationProject Completed

Difficulty

Status
colourYellow
titleMedium
  


...

  • Learn to work in open source development which includes communicating using open source channels, working with the community to get feedback and help to complete the project

  • Learn good software development practices

  • Learn to communicate and work global teams

  • Learning to design a project/feature end to end

Expected Outcome


  • Evaluations of the multiple web assembly libraries for a language and why we should base out implementation on any specific library.

  • A chaincode that once installed in Fabric can be used to run Web Assembly Smart Contracts

  • Sample applications/tutorials to go along to use the feature. As a user of this feature I should be able to follow this tutorial to understand end to end.

...

Students in undergraduate programs can apply.

Skills

  • Git / understanding of source control

  • Go (Preferred), if not then comfortable with languages such as C/C++, or Java

  • Familiarity with unix commands

...

Morgan Bauer, mbauer@us.ibm.com, @MHBauer, IBM
Jay Guo, guojiannan@cn.ibm.com, @guoger, IBM
Swetha Repakula, srepaku@us.ibm.com, @swetha, IBM

Mentor

shubham aggarwal

Frequently Asked Questions

Q: Why golang?

A1: We have already written one chaincode in golang (see above). Thus we would be most helpful to guide writing another chaincode in golang.

A2: It must be in a supported chaincode language, right now that is Java, Javascript, and golang.


Q: What should I do to prepare?

A: There should be time to preparation and learning during the actual internship. If you want to get a taste for the coding part of what you'll most likely be doing, check out the fabric-chaincode-evm project linked above. Try and follow the tutorials and deploy it. Make a change and redeploy it.


Project Deliverables


Week 1-2

  •  Research and come up with a high-level strategy to integrate WASM with hyperledger fabric.

Week 3-4

  •  Evaluate and decide on which WASM VM to integrate

Week 5-6

  •  Chaincode creation (wasmcc) for integrating WASM VM.

Week 7-8

  •  Create and implement a strategy to store the external wasm chaincodes in the state.

Week 9-10

  •  Expose SHIM layer function in wasmcc chaincode, which can be imported by wasm chaincode developers.

Week 11-12

  •  Transaction to instantiate a wasm chaincode, i.e., retrieve from state and instantiate it in wasm vm.

Week 13-14

  •  Export functions from wasmcc for wasm chaincode developers

Week 15-16

  •  Define function definition which needs to be implemented by wasm chaincode developers, which will be executed by wasmcc at the time of deployment for every new webassembly chaincode modules.

Week 17-18

  •  Define "init", "query" & "invoke" function definition which needs to be implemented by wasm chaincode developers.

Week 19-20

  •  Write sample chaincode and compile to wasm, and deploy it in a sample hyperledger fabric network through wasmcc.

Week 21-24

  •  Implement an end to end use case using wasm chaincode.


Project Repository: 

https://github.com/hyperledger-labs/fabric-chaincode-wasm

Project Summary :

View file
nameProject Fabric chaincode wasm.pdf
height250


Quick Demo Video: 

Multimedia
namewasm demo.mp4
width50%
height50%