Description
Burrow is known as the Hyperledger Ethereum project but growing up alongside other clients like go-ethereum, circa 2015 it developed a parallel RPC system. This separates it from the rest of Ethereum-land and means the ecosystem of tooling (e.g. the excellent Truffle, Metamask, Remix IDE) cannot be used with Burrow despite us being compatible at the virtual machine level. So to pave the way for better interoperability between burrow and mainstream Ethereum tooling we would like a to implement the web3 RPC. Actually we'd like you to implement it .
This project will involve collaborating with Fabric who have made a good start on Go-based web3 support for Fabric
Additional Information
The first part of this project will involve understanding how current Web3 architectures are implemented, the best place to start is with the Ethereum documentation:
Of course, it would be wise to explore the source code of Burrow and our JS client library:
Learning Objectives
- Learn how to get stuff down in an open source community of corporate competitors
- Work across teams from IBM, Intel, and Bitwise within Hyperledger
- Learn how to implement a high performance Go HTTP API
- Understand the account and transaction model of Ethereum
- Develop an intuition for the trade-offs when integrating systems
- How to protect yourself in the case of a marmot attack
- Learn about elliptic curve signing algorithms
- Learn about binary encodings
Expected Outcome
Implement https://github.com/ethereum/wiki/wiki/JSON-RPC.
The core milestones are:
- Implement sendTransaction
- Deploy a contract using the web3 API
- Call a function on a deployed contract
- Run a truffle migration (https://truffleframework.com/)
Stretch milestones are:
- Implement sendRawTransaction
- Sign and send a transaction with MetaMask (https://metamask.io/)
- Connect Burrow with Remix (https://remix.ethereum.org/)
- Debug a Burrow contract on Remix
Notes
Members of the the Fabric Team (Swetha Repakula is your contact) have developed some lovely modular web3 code https://github.com/hyperledger/fabric-chaincode-evm/tree/master/fab3 that interacts with Fabric's implementation of Burrow. As have the Sawtooth team with https://github.com/hyperledger/sawtooth-seth/tree/master/rpc written in Rust and so is a little harder to integrate Burrow. We should find a way to share the Fabric fab3 code and extend it so both projects can benefit.
Sending a raw transaction means serialising using Ethereum's RLP encoding and signing with secp256k1 locally before sending to Burrow. Burrow will need an RLP decoding extension to be able to process such transaction payloads.
Remix debugging requires elements of the Ethereum management API. Some research will be required to scope this out.
Relation to Hyperledger
Hyperledger Burrow - with effects on Fabric-ChainCode-EVM and Sawtooth-Seth via their Burrow integrations.
Education Level
If you think you can do the work, please apply.
Skills
Basic understanding of client / server architectures. Working knowledge of JavaScript and Go preferred but not essential. Good research skills, willingness to learn and try new things. Ability to lie very still and very quiet during a marmot attack.
Future plans
The web3 project will continue to mature to provide parity with mainstream Ethereum clients.
If you would like to continue contributing; this internship is on the maintainer track for Burrow (get hired on your commit history...).
Preferred Hours and Length of Internship
Full-time (40 hours) or part-time (20 hours) available.
Mentor(s) Names and Contact Info
Sean Young, Sean Young, Monax
Gregory Hill, Gregory Hill, Monax
Silas Davis, Silas Davis, Monax
Pierrick Hymbert, @phymbert, BNP Paribas