Group 8: Evangelion-01
In our first report, we will provide a high-level overview of the conceptual architecture of the Bitcoin Core system by reading the Bitcoin Core developer documentation, searching the Bitcoin Core resource collection on Google, YouTube, and so on.
In summary, the Peer-to-Peer Network architecture is primarily used to help the Bitcoin Core system to implement its business requirements such as decentralized consensus, and the Client-Server architecture for developing each node in the Peer-to-Peer Network (an instance of Bitcoin Core) is explored to ensure the software’s reliability such as guaranteed synchronous responses from the modules of the software (which differs from the Publish-Subscribe architecture style), non-repudiation in transactions, quick requests and responses transmission quality and convenience, etc.
This report will recover the concrete architecture of Bitcoin Core by possibly adding and removing new and existing subsystems and dependencies on conceptual architecture in the previous report. The concrete architectural system of Bitcoin Core we determined is originated from mapping the source files to the conceptual components in the Scitools Understand, and we realized that its architectural style is still Client-and-Server for each node instance in the Peer-to- Peer Bitcoin Core network, which is the same style of conceptual architecture. This is because the basic operation of information transactions, requests and service responses transmission are not changed in the concrete architecture.
Previously, we discussed the concrete architecture in Bitcoin Core, and we showed how components and dependencies operate to help clients in reality, especially for “Miner”, which is the key part of mining. However, it still lacks flexibility as people only have a single way for mining. In order to increase the development space and trading methods of Bitcoin transactions, we decided to develop a new enhancement, we call it “Miner Rental Functionality”. This new technology allows each user to rent their idle miners to others, or to let people who need more miners to borrow other people's miners. In this report, we will talk about the rationale and practicality of this approach and provide use cases to illustrate the implementations of “Miner Rental Functionality” in detail, then we will summarize their effect and limits.