- During our initial phase, we thought of working with Python's Flask. The idea came to our mind because we were implementing one of our other projects with Python Flask. During our 1st encounter with Professor over our first lab session, it was made clear that the project that we are working on is based on networking and that's why we need to initialise and finalise our work with socket programming. That's when we decided to understand the difference between server-client architecture and p2p architecture.
- It was also announced that we need to work with our meta-group to design the protocol. We did that, however, our understanding was wrong in this regard. We thought that Professor wants our team to discuss with our meta-group, but come up with a separate protocol. It was too late to have one protocol for two groups, and Professor agreed to let us build Blockchain over our current protocol.
- We learnt a lot about Blockchain. Our youtube, facebook suggestions were filled with Blockchain related notification and each of us kept on reading through the feeds. We designed the basic block-chain and attempted to finish coding this basic blockchain.
- Following this, the tracker was designed and implemented over code along with two peers. Our Professor also mentioned that our individual computers need to communicate by sending transactions and also do mining.
- In this regard, our Professor also gave us a detailed idea about using the public IP address and implements this plan. We failed to implement the same, even after a lot of tries. But we were able to implement the same over one hotspot connection that's if all of us are connected to one hotspot then our computers were able to communicate with each other. Soon after this, lockdown period came up. Thus, hotspot connection establishment were no longer possible. Now we thought of hosting our work in a server but the options were paid and hence we had to drop this idea. Right now, we are able to run the entire blockchain along with tracker, three peers and we are able to do transactions and do mining as well in individual computers.
The GUIs were taken up by each individual in our team. We found that though our package is the same but our implementation ideas were different. We overcame that by generalising the design and fixing the same over one meeting.
We generally executed our design plans in the university and library, where all the group members were present. But due to the recent crisis, we failed to do so. However, we were able to overcome this by prioritizing the subject. We all sat together over a video conference which took place for hours together until we were able to put in place the right design plans.
Initially two of our team members were onto using Java, but due to the recent popularity of Python; we decided to all go for Python.
Our group comprises of experienced and non-experienced people in terms of work-experience. This was a really big challenge to overcome, as experience is not a process or mindset that can be quickly altered to produce better results. By encouraging continuous learning, our Team Leader demonstrated that he is interested in the individual’s personal growth. One of our team members has now become a SME on designing. The team-members are now well familiarised with socket programming and bitcoin architecture.
Initially all of us took the concept and implementation of github, very lightly. We were using the attachment feature in the github link to upload our codes. Our Professor mentioned why Github is important for this project and thereafter we were all after learning github. However, we held onto a 30min youtube video, discussed and worked smoothly with gitbash. But, we think that we have not used utilised gitbash to the full, even now. We have not been able to use Pull request successfully, even now and due to scarcity of time; we'll focus on that a little later. BUT, we are all using github for each and every project of ours.
- The GUI can be made better and all the results obtained can be directly shown in respective peer GUIs.
- The entire bitcoin system can be automated using some advanced tools such as PyAutoGUI or PyWinAuto
- More tests can be performed to check if the current system is robust enough to handle a lot of peers and connections at once.