## 3 Proposed Methodology
### Overview of Proposed System
#### 3.1.1 Identity Authentication  
Due to the need for node access, functions or consensus permissions in the OSCMS, it is necessary to design a reasonable identity authentication mechanism. In traditional OS community and project governance, email/SMS or third-party identities, such as a Google account, are commonly used for identity authentication. Meanwhile, users can further upgrade their identity by meeting certain conditions or simply not register their identity and only browse public content. Although this mainstream identity authentication method cannot completely avoid identity forgery, it can reflect the true identity of users to a certain extent and has certain creation costs. In a blockchain system, asymmetric encryption is adopted. The user randomly generates a \(pr_{k}\) (private key) and maps it to  
Figure 3: The overall schematic structure of open-source coordination management system. generate a unique \(Pu_{k}\) (public key) according to asymmetric encryption, such as elliptic curve cryptosystems [55]. The \(pr_{k}\) must be kept confidential. The key pairs are used for identity management and account security. Furthermore, for a consortium blockchain system, identity authorization is typically achieved through a CA (certificate authority) using PKI (public key infrastructure) technology. OSCMS is an OS platform based on consortium blockchain and cannot use a central server for identity authentication, similar to traditional communities. The blockchain system itself is anonymous, and key pairs can be generated in large quantities at a low cost. Even if certified by some internationally renowned CA institutions, the relationship with OS code repositories or some permissions in OSCMS cannot be customized. The OSCMS does not have a central manager and therefore cannot establish its own CA. Even if a new CA is established, it cannot be trusted. OSCMS provides the local generation of key pairs to prevent them from being caught during transmission. Additionally, OSCMS maintains the mapping relationship between the blockchain account (\(Pu_{k}\)) and major community accounts. There is no need to change or create any institutions to obtain usable identities, and it provides a basis for interoperability between OSCMS and multiple major OS communities. During the initial release of OSCMS, it is necessary to collaborate with major communities and utilize facilities such as the code warehouse. There are three OS identities in the authentication mechanism of OSCMS: _developer_, _general user_ and _unidentified user_. If the users have passed the developer authentication of OSCMS, their projects that have been uploaded to OS communities can be recorded in OIChain in the form of digests. The users who have only passed the general authentication of OSCMS can only perform actions--such as make various queries, cite, give feedback, rate, sponsor, post an open-source reward, etc.--that are irrelevant to development. Users who fail to pass the authentication are unidentified and can only query some information. A user needs to put the \(Pu_{k}\) in the OS community profile and register in the OSCMS through a community authentication link. The link can prove that the user has passed the authentication of a community, at least the general user identity corresponding to this community can be obtained in the OSCMS. The user who obtains the developer authentication of this community or provides a certain amount of code there can further obtain the developer identity corresponding to this community in the OSCMS. The OSCMS provides authentication for a variety of OS communities by different \(CommunityID\). A user can authenticate in the OSCMS many times to bind the \(Pu_{k}\) with all community accounts. However, a community account that has been bound in the OSCMS cannot be used for authentication again. For example, a user has successfully authenticated the developer identity of community 1 and the general user identity of community 2 in OSCMS but failed to authenticate community 3:  
\[Pu_{k}\Leftrightarrow