## 3 Authorization Alongside Know Your Customer
### Use Case Results  
In this section, the use case implementation and results are presented through a gradual description of the system's procedure. In the context of an enterprise's blockchain system where every new user (i.e., an organization as a customer) needs to be thoroughly identified for their validity, the proposed KYC privacy-oriented architecture implements a simple and secure practice valuable for user data protection management in permissioned blockchain networks. The main issue it tries to address is that permissioned blockchain networks offer no user data privacy among blockchain network participants when it comes to sensitive user data, such as financial records, family status, etc. The proposed architecture provides an implementation and automation of sensitive user data protection thus high-level user privacy inside a permissioned blockchain network. This implementation and automation is achieved through the development of well-structured and encapsulating business intelligence smart contracts. The outcome of the whole system as an operation procedure produces a fully functional scheme that can benefit any consortium that requires data privacy in their blockchain network, while from a technical research point of view, it consolidates various contemporary technologies (e.g., permissioned blockchains, IPFS). The following progressive queue of processes describes the use case implementation and results. Firstly, a new user provides their information to the \"KYC UI\" (Figure 1); this data includes i) uploading of their Know Your Customer documents and ii) defining the requested valid period that they will be bound to if accepted (i.e., expiration date until which they are eligible to be part of the blockchain network). Now, the External Entity (\"KYC Document Evaluator\") examines these documents and if confirmed for their validity, the private smart contract method \"CreateUserCID(\") is called by an admin account to begin the user-approval process. Afterwards, the KYC docs are stored in the IPFS repository (a decentralized file system) and through the private contract method \"GetUserCID(\"), the corresponding content-identifier (CID) is returned to the admin profile. Now, the user is approved to enter the permissioned blockchain network. In parallel, the public contract method \"CreateKYCMember()\" creates the new member's network information and sets their expiration date. \begin{table}
\begin{tabular}{c c c c} \hline \hline
**Function Name** & **Description** & **Input** & **Response** \\ \hline \multirow{8}{*}{GetUserCID()} & This function is responsible for & & \\  & returning the CID of the folder & & \\  & containing the KYC documents. It is & & \\  & important to mention that in order to & & \\  & access the functionality of this & & \\  & method, the smart contract requires & ID & \\  & the user accessing this method to be in & & \\  & the pool of users that have security & & \\  & clearance to access this smart contract. & & \\  & Moreover, the function also requires & & \\  & the hashed private key of the user & & \\  & accessing this method. & & \\ \hline \multirow{4}{*}{CreateUserCID0} & When the KYC documents are & & \\  & successfully stored in the IPFS, this & & \\  & method is called to store the KYC CID & & \\  & in order to make them discoverable & & \\  & and accessible to the admin users of & & \\  & the private smart contract. & & \\ \hline \hline \end{tabular}
\end{table} 
Table 2: Private smart contract methods description. These are stored on-chain in the corresponding smart contract member struct (storage). Now the new user is granted access to the permissioned network. When user identification and expiration date check is needed by an admin member, public contract \"GetKYCMemberApproval()\" is called and only this exact information is returned (i.e., from the IPFS decentralized storage) together with the name of the External Entity that approved the member (no sensitive information of the user such as family status, financial records etc.