## 4 Case Study Implementation Using Hyperledger Fabric  
This section presents the development technologies and tools to implement the notebook sharing case study. The Hyperledger Fabric blockchain network is deployed in the Ubuntu Linux v18.04.2 LTS with an Intel Core i5-8500 @ 3.00 GHz processor and 12 GB memory. The Docker engine acts as the running environment and provides the tools to configure docker images and containers in the virtual machine. The blockchain client application is implemented using a JavaScript SDK, which provides a set of APIs to manage and interact with the deployed business network. The VSCode is used as the integrated development environment (IDE) to work on the smart contract code. We use the Hyperledger Composer [44] to generate the Representational State Transfer (REST) Server that exposes the blockchain logic to the web or mobile applications. The REST Server converts the smart contract for a business network into an open API definition, which at runtime supports create, read, update and delete (CRUD) to perform operations on the blockchain. To secure the access of the REST network resources, Passport.js is utilized to authenticate requests through an extensible set of strategies, including using a username and password, and third-party services. The CouchDB is used as the off-chain data lake to hold the current values of the ledger states. It provides rich query support, including the get, put, and delete method, which enables the smart contract to access the off-chain data lake via simple APIs. The structure of a participant in the smart contract is modeled, as shown in Table 1.  
As mentioned earlier, assets can range from the tangible (real estate and hardware) to the intangible (contracts and intellectual property). The Hyperledger blockchain network provides the ability to modify assets using transactions. Table 2 represents the structure of an asset, which contains various information about the asset. Figure 8 details the SLA specifications, which are specified for the notebook sharing case study. The notebook providers and consumers are used as the basis of the agreement and represent the primary stakeholders associated with SLA. The SLA contains three statuses over the lifecycle of a sharing service that represents the status over the SLA lifecycle. We define three different service levels, which vary from the operation level, data storage and the network bandwidth. The turn-around time (TAT), mean time to cover (MTTR), and gathering cycle are used as performance metrics in the SLA. The subscription time represents the valid period of the SLA between the provider and consumer. The violation field is used to represent whether a violation occurs under terms of the contract, and it can only be modified by the validator. Figure 7: Transaction operational processes in the blockchain network. \begin{table}
\begin{tabular}{c c c} \hline \hline
**Name** & **Property** & **Type** \\ \hline \multirow{6}{*}{Issuer} & old & String \\  & contact info (name, phone, address) & Concept \\  & token name & String \\  & type & String \\  & quantity & String \\ \hline \multirow{6}{*}{Provider} & old & String \\  & contact info (name, phone, address) & Concept \\  & org name & String \\  & balance & Double \\ \hline \multirow{6}{*}{Consumer} & old & String \\  & contact info (name, phone, address) & Concept \\  & active notebook Ids & String [1] \\  & issuer & Object \\  & balance & Double \\ \hline \multirow{6}{*}{Validator} & old & String \\  & contact info (name, phone, address) & Concept \\  & org name & String \\ \hline \multirow{6}{*}{Monitor} & old & String \\  & contact info (name, phone, address) & Concept \\  & org name & String \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Participant definition in the smart contract.