Versions Compared

Key

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

...

Hyperledger Labs Blockchain Automation Framework(BAF) is a tool to deploy different DLT platforms automatically on a given Kubernetes cluster. BAF supports multi-cloud and multi-DLT deployments, and already supports HL Fabric, HL Besu, Quorum, R3 Corda. For HL Besu, currently only IBFT2 Consensus is supported by BAF. Task The task is to support the Clique consensus for Hyperledger Besu, so that BAF can be used to deploy and operate a HL Besu network with Clique consensus. This will also include upgrading BAF to support the latest stable Besu version.

...

Mentor: Sownak Roy 

Timezone: UK/BST

Rocketchat(Hyperledger): sownak

...

Project repo: https://github.com/hyperledger-labs/blockchain-automation-framework

Deliverables

  •  Documented, ready-to-use Besu Clique consensus on BAF. Documented Helm charts required to set-up Clique consensus with Besu
  •  Ansible scripts to automate the generation of Helm value files.
  •  Documentation on how to use BAF for deploying HL Besu with Clique consensus.
  •  Documented, upgrade of Besu to latest stable on BAF.

Merged PR's:

Issue 510: [besu] added clique consensus

Issue 1295: [besu] Added GCP-storageclass

Issue 510: [besu] Updated the documents and added doc changes for besu clique consensus

Final Project Presentation:

BAF_Besu_Clique_Consensus_Project_Presentation_Nov_2021

Milestones

Eval 1:

  •  VScode extension(basic functionality) + Syntax highlighting.         (TBD)
  •  Implemented Rust server to receive and send JSON-RPC responses from VScode client.      (TBD)
  • Local setup of all tools, Docker, Git, Minikube, Ansible.
  •  Use existing BAF code to deploy Besu with IBFT consensus on local network.

Eval 2:

  •  Diagnostics for compiler warnings, errors and hints. (TBD)
  •  Tests and Documentation implemented for same. (TBD)
  • Deploy Besu with Clique consensus on local network manually.
  •  Manual steps for Besu with Clique documented.

Eval 3:

  •  Basic hover implementation for variable types. (TBD)Helmcharts created for Besu with Clique deployment.
  •  Tests and Documentation implemented created for same. (TBD)the Helmcharts.

Eval 4:

  •  Extending hover implementation for function, struct, enum, events, built-ins documentation lookups. (TBD)
  •  Test and Documentation implemented for same. (TBD)

Timeline

  • Ansible scripts to automate the deployment of Besu with Clique.
  •  Updated documentation.

Timeline

Pending

Eval pending
DatesWeekTask/PlanStatus
June 23 1 - June 2814Mentee intro with the mentor. I already communicated with the mentor(Sownak)  Introduction to the concepts of BAF.Done
June 1 15 - June 1928

Setup local environment for Development

Done
June 29 - July 12

Set-up a small Besu network using local/AWS Kubernetes network using BAF.

InProgressJune 19 - July 24

Setup a Besu network with clique consensus manually/locally using Besu documentation.

Pending
July 24 - July 31

Create helmcharts that can be used to deploy Besu node with clique consensus

Pending
July 6 - July 12(TBD)

(TBD)Complete tests and documentation of the Rust server impl.

Eval on July 10: Provide reports for first quarter to the program organisers.

Pending

Eval completed


Done

Eval Completed

July 13 - July 26(TBD)(TBD)Work on implementing diagnostics. Prepare the backend to process incoming code.

Setup GKE environment for Development (added because local minikube was not feasible due to memory issues)

DonePending
July 27 - August Aug 9(TBD)(TBD)Work on diagnostics, fixing Range issues and fixing minor bugs.

Complete local Besu network with clique consensus.

Done

Pending

August 10 - August 16(TBD)(TBD)Buffer period to complete the remaining work and co-op with difficulties during implementation.PendingAugust 17 - August 23(TBD)

(TBD)Complete tests and documentation of the diagnostics implementation.

Eval on August 21: Provide reports for the second quarter to the program organisers.

23

Set-up a small Besu network using local/GKE Kubernetes network using BAF.


Done 

Eval Completed

Pending

Eval pending

August 24 - Sept 6(TBD)(TBD)Work on the hover feature. List out all possible grammar definitions and start implementing.Document changes needed to implement Clique consensus.DonePending
Sept 7 - Sept 20(TBD)(TBD)Follow up on the work.Make the changes in Ansible and Helm charts.DonePending
Sept 21 - 27(TBD)

(TBD)Finished the basics of hover implementation. Added hover for variable definition and types.

PendingSept 28 - Oct 4(TBD)

(TBD)Complete tests and documentation of the implementation.

Eval on Oct 2: Provide reports for third quarter to the program organisers.

Oct 4

Test the scripts and make additional changes in Ansible and Helm charts.

Done

Eval Completed

Pending

Eval pending

Oct 5 - Oct 18(TBD)

(TBD)Week1: Work on adding support for Function + Return-type + Function params hover.

Week2: Work on adding support for Emit token in hover.

Pending

Buffer to complete the Besu network deployment using Clique.

Done
Oct 19 - Nov 1(TBD)

(TBD)Week1: Work on adding support for struct entries in hover.

Week2: Buffer period to follow up on the work.

Update the documentation.

DonePending
Nov 2 - Nov 8(TBD) (TBD)Used this week to work on hover implementation.PendingNov 9 - Nov 13(TBD)

(TBD)Time to complete remaining details and documentation.

12

Prepare final presentation.


Done

Eval Completed

Row 3: Eval on July 10: Provide reports for first quarter to the program organisers.

Row 6: Eval on August 20: Provide reports for first quarter to the program organisers.

Row 9: Eval on October 1: Provide reports for second quarter to the program organisers.

Row last: Final Eval on November 12: Provide reports for completion.

Methodology

I am following the “Design-Code“Code-Test-Document​” methodology.

My first step while developing any software is to design the process flow by understanding the inner Architecture of Besu and BAF . During the initial mentorship, I along with my mentor will be doing some planning of the implementation and set important milestones for the same as represented in the schedule for the work(given above) for the respective feature. Once I develop each feature, I will be writing Molecule Tests for the implementation Testing the implementation code to make sure whatever I wrote is working correctly. At the end of the tests, I will be documenting their implementation. I am using​ GIT​ for version control with reviews taking place on Github(Repo:https://github.com/hyperledger-labs/blockchain-automation-framework).

...