github.com/leonlxy/hyperledger@v1.0.0-alpha.0.20170427033203-34922035d248/docs/source/glossary.rst (about) 1 *Needs Review* 2 3 Glossary 4 =========================== 5 6 Terminology is important, so that all Fabric users and developers agree on what 7 we mean by each specific term. What is chaincode, for example. So we'll point you 8 there, whenever you want to reassure yourself. Of course, feel free to read the 9 entire thing in one sitting if you like, it's pretty enlightening! 10 11 .. _Anchor-Peer: 12 13 Anchor Peer 14 ----------- 15 16 A peer node on a channel that all other peers can discover and communicate with. 17 Each Member_ on a channel has an anchor peer (or multiple anchor peers to prevent 18 single point of failure), allowing for peers belonging to different Members to 19 discover all existing peers on a channel. 20 21 22 .. _Block: 23 24 Block 25 ----- 26 27 An ordered set of transactions that is cryptographically linked to the 28 preceding block(s) on a channel. 29 30 .. _Chain: 31 32 Chain 33 ----- 34 35 The ledger's chain is a transaction log structured as hash-linked blocks of 36 transactions. Peers receive blocks of transactions from the ordering service, mark 37 the block's transactions as valid or invalid based on endorsement policies and 38 concurrency violations, and append the block to the hash chain on the peer's 39 file system. 40 41 .. _chaincode: 42 43 Chaincode 44 --------- 45 46 Chaincode is software, running on a ledger, to encode assets and the transaction 47 instructions (business logic) for modifying the assets. 48 49 .. _Channel: 50 51 Channel 52 ------- 53 54 A channel is a private blockchain overlay on a Fabric network, allowing for data 55 isolation and confidentiality. A channel-specific ledger is shared across the 56 peers in the channel, and transacting parties must be properly authenticated to 57 a channel in order to interact with it. Channels are defined by a 58 Configuration-Block_. 59 60 .. _Commitment: 61 62 Commitment 63 ---------- 64 65 Each Peer_ on a channel validates ordered blocks of 66 transactions and then commits (writes/appends) the blocks to its replica of the 67 channel Ledger_. Peers also mark each transaction in each block 68 as valid or invalid. 69 70 .. _Concurrency-Control-Version-Check: 71 72 Concurrency Control Version Check 73 --------------------------------- 74 75 Concurrency Control Version Check is a method of keeping state in sync across 76 peers on a channel. Peers execute transactions in parallel, and before commitment 77 to the ledger, peers check that the data read at execution time has not changed. 78 If the data read for the transaction has changed between execution time and 79 commitment time, then a Concurrency Control Version Check violation has 80 occurred, and the transaction is marked as invalid on the ledger and values 81 are not updated in the state database. 82 83 .. _Configuration-Block: 84 85 Configuration Block 86 ------------------- 87 88 Contains the configuration data defining members and policies for a system 89 chain (ordering service) or channel. Any configuration modifications to a 90 channel or overall network (e.g. a member leaving or joining) will result 91 in a new configuration block being appended to the appropriate chain. This 92 block will contain the contents of the genesis block, plus the delta. 93 94 .. Consensus 95 96 Consensus 97 --------- 98 99 A broader term overarching the entire transactional flow, which serves to generate 100 an agreement on the order and to confirm the correctness of the set of transactions 101 constituting a block. 102 103 .. _Current-State: 104 105 Current State 106 ------------- 107 108 The current state of the ledger represents the latest values for all keys ever 109 included in its chain transaction log. Peers commit the latest values to ledger 110 current state for each valid transaction included in a processed block. Since 111 current state represents all latest key values known to the channel, it is 112 sometimes referred to as World State. Chaincode executes transaction proposals 113 against current state data. 114 115 .. _Dynamic-Membership: 116 117 Dynamic Membership 118 ------------------ 119 120 Fabric supports the addition/removal of members, peers, and ordering service 121 nodes, without compromising the operationality of the overall network. Dynamic 122 membership is critical when business relationships adjust and entities need to 123 be added/removed for various reasons. 124 125 .. _Endorsement: 126 127 Endorsement 128 ----------- 129 130 Refers to the process where specific peer nodes execute a transaction and return 131 a ``YES/NO`` response to the client application that generated the transaction proposal. 132 Chaincode applications have corresponding endorsement policies, in which the endorsing 133 peers are specified. 134 135 .. _Endorsement-policy: 136 137 Endorsement policy 138 ------------------ 139 140 Defines the peer nodes on a channel that must execute transactions attached to a 141 specific chaincode application, and the required combination of responses (endorsements). 142 A policy could require that a transaction be endorsed by a minimum number of 143 endorsing peers, a minimum percentage of endorsing peers, or by all endorsing 144 peers that are assigned to a specific chaincode application. Policies can be 145 curated based on the application and the desired level of resilience against 146 misbehavior (deliberate or not) by the endorsing peers. A distinct endorsement 147 policy for install and instantiate transactions is also required. 148 149 .. _Fabric-ca: 150 151 Fabric-ca 152 ------------- 153 154 Fabric-ca is the default Certificate Authority component, which issues PKI-based 155 certificates to network member organizations and their users. The CA issues one 156 root certificate (rootCert) to each member, one enrollment certificate (eCert) 157 to each authorized user, and a number of transaction certificates (tCerts) for 158 each eCert. 159 160 .. _Genesis-Block: 161 162 Genesis Block 163 ------------- 164 165 The configuration block that initializes a blockchain network or channel, and 166 also serves as the first block on a chain. 167 168 .. _Gossip-Protocol: 169 170 Gossip Protocol 171 --------------- 172 173 The gossip data dissemination protocol performs three functions: 174 1) manages peer discovery and channel membership; 175 2) disseminates ledger data across all peers on the channel; 176 3) syncs ledger state across all peers on the channel. 177 Refer to the :doc:`Gossip <gossip>` topic for more details. 178 179 .. _Initialize: 180 181 Initialize 182 ---------- 183 184 A method to initialize a chaincode application. 185 186 Install 187 ------- 188 189 The process of placing a chaincode on a peer's file system. 190 191 Instantiate 192 ----------- 193 194 The process of starting a chaincode container. 195 196 .. _Invoke: 197 198 Invoke 199 ------ 200 201 Used to call chaincode functions. Invocations are captured as transaction 202 proposals, which then pass through a modular flow of endorsement, ordering, 203 validation, committal. The structure of invoke is a function and an array of 204 arguments. 205 206 .. _Leading-Peer: 207 208 Leading Peer 209 ------------ 210 211 Each Member_ can own multiple peers on each channel that 212 it subscribes to. One of these peers is serves as the leading peer for the channel, 213 in order to communicate with the network ordering service on behalf of the 214 member. The ordering service "delivers" blocks to the leading peer(s) on a 215 channel, who then distribute them to other peers within the same member cluster. 216 217 .. _Ledger: 218 219 Ledger 220 ------ 221 222 A ledger is a channel's chain and current state data which is maintained by each 223 peer on the channel. 224 225 .. _Member: 226 227 Member 228 ------ 229 230 A legally separate entity that owns a unique root certificate for the network. 231 Network components such as peer nodes and application clients will be linked to a member. 232 233 .. _MSP: 234 235 Membership Service Provider 236 --------------------------- 237 238 The Membership Service Provider (MSP) refers to an abstract component of the 239 system that provides credentials to clients, and peers for them to participate 240 in a Hyperledger Fabric network. Clients use these credentials to authenticate 241 their transactions, and peers use these credentials to authenticate transaction 242 processing results (endorsements). While strongly connected to the transaction 243 processing components of the systems, this interface aims to have membership 244 services components defined, in such a way that alternate implementations of 245 this can be smoothly plugged in without modifying the core of transaction 246 processing components of the system. 247 248 .. _Membership-Services: 249 250 Membership Services 251 ------------------- 252 253 Membership Services authenticates, authorizes, and manages identities on a 254 permissioned blockchain network. The membership services code that runs in peers 255 and orderers both authenticates and authorizes blockchain operations. It is a 256 PKI-based implementation of the Membership Services Provider (MSP) abstraction. 257 258 The ``fabric-ca`` component is an implementation of membership services to manage 259 identities. In particular, it handles the issuance and revocation of enrollment 260 certificates and transaction certificates. 261 262 An enrollment certificate is a long-term identity credential; a transaction 263 certificate is a short-term identity credential which is both anonymous and un-linkable. 264 265 .. _Ordering-Service: 266 267 Ordering Service 268 ---------------- 269 270 A defined collective of nodes that orders transactions into a block. The ordering 271 service exists independent of the peer processes and orders transactions on a 272 first-come-first-serve basis for all channel's on the network. The ordering service is 273 designed to support pluggable implementations beyond the out-of-the-box SOLO and Kafka varieties. 274 The ordering service is a common binding for the overall network; it contains the cryptographic 275 identity material tied to each Member_. 276 277 .. _Peer: 278 279 Peer 280 ---- 281 282 A network entity that maintains a ledger and runs chaincode containers in order to perform 283 read/write operations to the ledger. Peers are owned and maintained by members. 284 285 .. _Policy: 286 287 Policy 288 ------ 289 290 There are policies for endorsement, validation, block committal, chaincode 291 management and network/channel management. 292 293 .. _Proposal: 294 295 Proposal 296 -------- 297 298 A request for endorsement that is aimed at specific peers on a channel. Each 299 proposal is either an instantiate or an invoke (read/write) request. 300 301 .. _Query: 302 303 Query 304 ----- 305 306 A query requests the value of a key(s) against the current state. 307 308 .. _SDK: 309 310 Software Development Kit (SDK) 311 ------------------------------ 312 313 The Hyperledger Fabric client SDK provides a structured environment of libraries 314 for developers to write and test chaincode applications. The SDK is fully 315 configurable and extensible through a standard interface. Components, including 316 cryptographic algorithms for signatures, logging frameworks and state stores, 317 are easily swapped in and out of the SDK. The SDK API uses protocol buffers over 318 gRPC for transaction processing, membership services, node traversal and event 319 handling applications to communicate across the fabric. The SDK comes in 320 multiple flavors - Node.js, Java. and Python. 321 322 .. _State-DB: 323 324 State Database 325 -------------- 326 327 Current state data is stored in a state database for efficient reads and queries 328 from chaincode. These databases include levelDB and couchDB. 329 330 .. _System-Chain: 331 332 System Chain 333 ------------ 334 335 Contains a configuration block defining the network at a system level. The 336 system chain lives within the ordering service, and similar to a channel, has 337 an initial configuration containing information such as: MSP information, policies, 338 and configuration details. Any change to the overall network (e.g. a new org 339 joining or a new ordering node being added) will result in a new configuration block 340 being added to the system chain. 341 342 The system chain can be thought of as the common binding for a channel or group 343 of channels. For instance, a collection of financial institutions may form a 344 consortium (represented through the system chain), and then proceed to create 345 channels relative to their aligned and varying business agendas. 346 347 .. _Transaction: 348 349 Transaction 350 ----------- 351 352 An invoke or instantiate operation. Invokes are requests to read/write data from 353 the ledger. Instantiate is a request to start a chaincode container on a peer.