Skip to content

Evaluation

Carlos Roldan edited this page Apr 12, 2019 · 3 revisions

Requirements identification

When producing the design specification, the requirements were focused to reach a solution to receive practical feedback when designing routing mechanisms or architectural changes within a payment channel network like the lightning network protocol. Therefore, a simulation was required to prove, test, compare and analyse all of the theoretical proposals to improve payment channels network.

The scope of the requirements was unrealistically high to achieve three months and five days as the initial lightning network simulator was intended to serve a research tool for different routing mechanisms instead of analysing the network behaviour, outputs, and optimizing the paths for the transaction stress tests.

Decision-making

The decisions decided to recreate a lightning network simulation where challenging. My initial thoughts were using a network simulator tool such as NS2 or NS3 to create a payment channel network simulation. However, due to the nature of the problem, I needed a more custom solution to simulate the lightning network taking some technical assumptions.

Using Java SE 8 and JavaFX was a critical decision for the success, utility and scalability of the lightning network simulation tool. Since the project had a scientific approach oriented to research I decided to create the lightning network simulator as a desktop application. I have already had previous experience using Java for desktop applications, however, the requirements for this project were higher than everything I have done in Java before.

Displaying and simulating interactive payment channel networks visually was a challenging decision to take. A third party library named MxGraph provided UI components to create 2D charts. The minimum required to recreate networks were 2 UI components, vertexes and edges as described in the design specification. This third party library was natively designed for JavaScript, but it also supported Java. Nonetheless, the flexibility for major functionalities using this library was deprecated. So I had to bear in mind if the minimum viable features provided by this third party library was enough to meet the design criteria before taking the decision of using this library.

Using GitHub for the git client was a significant decision for the project and process development. As part of the git tools, I kept track of the project development by creating commits in the git log. Alternatively, due to the provided tools in GitHub, I was able to seamlessly set up Kanban boards for the task process development and defect triage. In my GitHub repository, I included an available written wiki containing with the required documentation to share information about the functionality, design, third-party libraries, implementation, evaluation and testing of the lightning network simulator.

Overall evaluation

Using Java, there were no much third-party alternative libraries other than MxGraph to create interactive charts based on vertexes and edges. Writing my own library to create interactive vertexes and edges would have kept me too busy to not complete the lightning network simulator required specification in time.

If I would have a longer time length to deliver this project, I would focus on what the initial scope was. Creating different routing mechanisms for the lightning network protocol based on theoretical proposals submitted by independent researchers and scientist to practically compare and analyse in a simulated network.

Now, If I would have to start again, I would definitely use JavaScript to create a lightning network simulator easily accessible from a website using third-party services such as Three.js and WebGL to render the simulation using 3D graphics as well as a more user-friendly user experience.

As a conclusion, the evaluation of the project considering the exposed problem, the proposed solution, the requirements to meet the solution and the alternatives, I am very happy with the application delivered in the provided time length. I am also very happy with the organization in the process development using the appropriate tools to make sprint iterations in time.

Clone this wiki locally