# Hyperledger Fabric Access Control for Industrial Internet of Things
## 2 Preliminary
### Hyperledger Fabric  
The popularity of virtual currency has aroused the world's attention to blockchain, but this type of blockchain belongs to the public chain and has the following disadvantages: (1) low transaction throughput (about seven transactions per second), (2) long transaction time (an hour per transaction), (3) high cost of computing resources due to the PoW consensus algorithm, (4) branching problem, where only the longest chain is valid when multiple chains of transactions are generated, (5) privacy issues with the ledger being public [11]. To solve the above problems, the Hyperledger Fabric, an open-source project of the Linux Foundation, introduced the modular blockchain architecture standard for enterprise blockchain platforms [15]. Specifically designed to be the foundation for the development of enterprise-level applications and industrial solutions, the open modular architecture uses plug-and-play components to address a wide variety of use cases. Hyperledger Fabric is an open and proven enterprise and decentralized general ledger platform with advanced privacy controls that allow only data sharing among network participants. It contains code and contracts that exist in a decentralized blockchain network. Transactions are traceable but irreversible, which builds trust between organizations and allows businesses to make informed decisions, saving time and reducing costs. Smart contracts enable blockchain systems to evolve from simple cryptocurrency platforms to general-purpose transaction systems. However, the consensus model of the [PERSON] blockchain also has its performance bottleneck. [PERSON]'s consensus model is called the \"Order-Execute\" model., as shown in Figure 1[16,17]. First, a consensus is formed on the order of transactions, and then all nodes execute them in sequence. After receiving the block, all nodes execute each transaction to verify and update the ledger after their correctness has been confirmed. This is the main reason for the lack of efficiency of the blockchain since every single transaction must be repeatedly executed by each node. In addition to the efficiency issue, the \"order-execute\" model comes with some limitations. (1) Serialize execution: each node must rely on a \"sort-execute\" model to update, limiting the scalability. (2) Enforce confidentiality: transactions must be executed by all nodes, and the state saved in the blockchain must be public so that each node can read these states, which is not conducive to the confidentiality of trans-actions, and nodes can learn the operation and state of any smart contract. Lack of efficiency, privacy, and high development costs make it more difficult for businesses to embrace blockchain technology. Unlike public networks, corporate networks cannot be used by any ordinary users without permission. The inter-enterprise network environment is the opposite of the public network. The inter-enterprise collaboration network is limited with fixed participants, real-name authentication, and access control. In a public blockchain, data and transaction logics are transparent to the public, which leads to private da-ta leakage. A new architecture called Execution-Order-Validate is proposed in Hyperledger Fabric, Fabric Blockchain requires its members to register through a trusted membership service to interact with the blockchain. As shown in Figure 2, all transactions will be executed by some of the first designated nodes. If the results are consistent, a consensus will be formed. Transactions without a consensus will be deleted. Transactions with a consensus will be ordered and packaged into blocks. The block broadcasts to all nodes to verify the transaction, and the status can be updated if the verification result is correct. The difference between the Order-Execute architecture and the Execute-Order-Validate architecture is that the transactions on the smart contracts of the former are usually tied together after reaching a consensus.