github.com/myafeier/fabric@v1.0.1-0.20170722181825-3a4b1f2bce86/docs/source/glossary.rst (about) 1 *Needs Review* 2 3 Glossary 4 =========================== 5 6 Terminology is important, so that all Hyperledger Fabric users and developers 7 agree on what we mean by each specific term. What is chaincode, for example. 8 The documentation will reference the glossary as needed, but feel free to 9 read the 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 which allows 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 Hyperledger 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 Hyperledger Fabric CA 152 --------------------- 153 154 Hyperledger Fabric CA is the default Certificate Authority component, which 155 issues PKI-based certificates to network member organizations and their users. 156 The CA issues one root certificate (rootCert) to each member and one enrollment 157 certificate (ECert) to each authorized user. 158 159 .. _Genesis-Block: 160 161 Genesis Block 162 ------------- 163 164 The configuration block that initializes a blockchain network or channel, and 165 also serves as the first block on a chain. 166 167 .. _Gossip-Protocol: 168 169 Gossip Protocol 170 --------------- 171 172 The gossip data dissemination protocol performs three functions: 173 1) manages peer discovery and channel membership; 174 2) disseminates ledger data across all peers on the channel; 175 3) syncs ledger state across all peers on the channel. 176 Refer to the :doc:`Gossip <gossip>` topic for more details. 177 178 .. _Initialize: 179 180 Initialize 181 ---------- 182 183 A method to initialize a chaincode application. 184 185 Install 186 ------- 187 188 The process of placing a chaincode on a peer's file system. 189 190 Instantiate 191 ----------- 192 193 The process of starting a chaincode container. 194 195 .. _Invoke: 196 197 Invoke 198 ------ 199 200 Used to call chaincode functions. Invocations are captured as transaction 201 proposals, which then pass through a modular flow of endorsement, ordering, 202 validation, committal. The structure of invoke is a function and an array of 203 arguments. 204 205 .. _Leading-Peer: 206 207 Leading Peer 208 ------------ 209 210 Each Member_ can own multiple peers on each channel that 211 it subscribes to. One of these peers is serves as the leading peer for the channel, 212 in order to communicate with the network ordering service on behalf of the 213 member. The ordering service "delivers" blocks to the leading peer(s) on a 214 channel, who then distribute them to other peers within the same member cluster. 215 216 .. _Ledger: 217 218 Ledger 219 ------ 220 221 A ledger is a channel's chain and current state data which is maintained by each 222 peer on the channel. 223 224 .. _Member: 225 226 Member 227 ------ 228 229 A legally separate entity that owns a unique root certificate for the network. 230 Network components such as peer nodes and application clients will be linked to a member. 231 232 .. _MSP: 233 234 Membership Service Provider 235 --------------------------- 236 237 The Membership Service Provider (MSP) refers to an abstract component of the 238 system that provides credentials to clients, and peers for them to participate 239 in a Hyperledger Fabric network. Clients use these credentials to authenticate 240 their transactions, and peers use these credentials to authenticate transaction 241 processing results (endorsements). While strongly connected to the transaction 242 processing components of the systems, this interface aims to have membership 243 services components defined, in such a way that alternate implementations of 244 this can be smoothly plugged in without modifying the core of transaction 245 processing components of the system. 246 247 .. _Membership-Services: 248 249 Membership Services 250 ------------------- 251 252 Membership Services authenticates, authorizes, and manages identities on a 253 permissioned blockchain network. The membership services code that runs in peers 254 and orderers both authenticates and authorizes blockchain operations. It is a 255 PKI-based implementation of the Membership Services Provider (MSP) abstraction. 256 257 .. _Ordering-Service: 258 259 Ordering Service 260 ---------------- 261 262 A defined collective of nodes that orders transactions into a block. The ordering 263 service exists independent of the peer processes and orders transactions on a 264 first-come-first-serve basis for all channel's on the network. The ordering service is 265 designed to support pluggable implementations beyond the out-of-the-box SOLO and Kafka varieties. 266 The ordering service is a common binding for the overall network; it contains the cryptographic 267 identity material tied to each Member_. 268 269 .. _Peer: 270 271 Peer 272 ---- 273 274 A network entity that maintains a ledger and runs chaincode containers in order to perform 275 read/write operations to the ledger. Peers are owned and maintained by members. 276 277 .. _Policy: 278 279 Policy 280 ------ 281 282 There are policies for endorsement, validation, block committal, chaincode 283 management and network/channel management. 284 285 .. _Proposal: 286 287 Proposal 288 -------- 289 290 A request for endorsement that is aimed at specific peers on a channel. Each 291 proposal is either an instantiate or an invoke (read/write) request. 292 293 .. _Query: 294 295 Query 296 ----- 297 298 A query requests the value of a key(s) against the current state. 299 300 .. _SDK: 301 302 Software Development Kit (SDK) 303 ------------------------------ 304 305 The Hyperledger Fabric client SDK provides a structured environment of libraries 306 for developers to write and test chaincode applications. The SDK is fully 307 configurable and extensible through a standard interface. Components, including 308 cryptographic algorithms for signatures, logging frameworks and state stores, 309 are easily swapped in and out of the SDK. The SDK provides APIs for transaction 310 processing, membership services, node traversal and event handling. The SDK 311 comes in multiple flavors: Node.js, Java. and Python. 312 313 .. _State-DB: 314 315 State Database 316 -------------- 317 318 Current state data is stored in a state database for efficient reads and queries 319 from chaincode. These databases include levelDB and couchDB. 320 321 .. _System-Chain: 322 323 System Chain 324 ------------ 325 326 Contains a configuration block defining the network at a system level. The 327 system chain lives within the ordering service, and similar to a channel, has 328 an initial configuration containing information such as: MSP information, policies, 329 and configuration details. Any change to the overall network (e.g. a new org 330 joining or a new ordering node being added) will result in a new configuration block 331 being added to the system chain. 332 333 The system chain can be thought of as the common binding for a channel or group 334 of channels. For instance, a collection of financial institutions may form a 335 consortium (represented through the system chain), and then proceed to create 336 channels relative to their aligned and varying business agendas. 337 338 .. _Transaction: 339 340 Transaction 341 ----------- 342 343 An invoke or instantiate operation. Invokes are requests to read/write data from 344 the ledger. Instantiate is a request to start a chaincode container on a peer. 345 346 .. Licensed under Creative Commons Attribution 4.0 International License 347 https://creativecommons.org/licenses/by/4.0/ 348