github.com/kchristidis/fabric@v1.0.4-0.20171028114726-837acd08cde1/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 chaincode transaction and return 131 a proposal response to the client application. The proposal response includes the 132 chaincode execution response message, results (read set and write set), and events, 133 as well as a signature to serve as proof of the peer's chaincode execution. 134 Chaincode applications have corresponding endorsement policies, in which the endorsing 135 peers are specified. 136 137 .. _Endorsement-policy: 138 139 Endorsement policy 140 ------------------ 141 142 Defines the peer nodes on a channel that must execute transactions attached to a 143 specific chaincode application, and the required combination of responses (endorsements). 144 A policy could require that a transaction be endorsed by a minimum number of 145 endorsing peers, a minimum percentage of endorsing peers, or by all endorsing 146 peers that are assigned to a specific chaincode application. Policies can be 147 curated based on the application and the desired level of resilience against 148 misbehavior (deliberate or not) by the endorsing peers. A transaction that is submitted 149 must satisfy the endorsement policy before being marked as valid by committing peers. 150 A distinct endorsement policy for install and instantiate transactions is also required. 151 152 .. _Fabric-ca: 153 154 Hyperledger Fabric CA 155 --------------------- 156 157 Hyperledger Fabric CA is the default Certificate Authority component, which 158 issues PKI-based certificates to network member organizations and their users. 159 The CA issues one root certificate (rootCert) to each member and one enrollment 160 certificate (ECert) to each authorized user. 161 162 .. _Genesis-Block: 163 164 Genesis Block 165 ------------- 166 167 The configuration block that initializes a blockchain network or channel, and 168 also serves as the first block on a chain. 169 170 .. _Gossip-Protocol: 171 172 Gossip Protocol 173 --------------- 174 175 The gossip data dissemination protocol performs three functions: 176 1) manages peer discovery and channel membership; 177 2) disseminates ledger data across all peers on the channel; 178 3) syncs ledger state across all peers on the channel. 179 Refer to the :doc:`Gossip <gossip>` topic for more details. 180 181 .. _Initialize: 182 183 Initialize 184 ---------- 185 186 A method to initialize a chaincode application. 187 188 Install 189 ------- 190 191 The process of placing a chaincode on a peer's file system. 192 193 Instantiate 194 ----------- 195 196 The process of starting and initializing a chaincode application on a specific channel. 197 After instantiation, peers that have the chaincode installed can accept chaincode 198 invocations. 199 200 .. _Invoke: 201 202 Invoke 203 ------ 204 205 Used to call chaincode functions. A client application invokes chaincode by 206 sending a transaction proposal to a peer. The peer will execute the chaincode 207 and return an endorsed proposal response to the client application. The client 208 application will gather enough proposal responses to satisfy an endorsement policy, 209 and will then submit the transaction results for ordering, validation, and commit. 210 The client application may choose not to submit the transaction results. For example 211 if the invoke only queried the ledger, the client application typically would not 212 submit the read-only transaction, unless there is desire to log the read on the ledger 213 for audit purpose. The invoke includes a channel identifier, the chaincode function to 214 invoke, and an array of arguments. 215 216 .. _Leading-Peer: 217 218 Leading Peer 219 ------------ 220 221 Each Member_ can own multiple peers on each channel that 222 it subscribes to. One of these peers is serves as the leading peer for the channel, 223 in order to communicate with the network ordering service on behalf of the 224 member. The ordering service "delivers" blocks to the leading peer(s) on a 225 channel, who then distribute them to other peers within the same member cluster. 226 227 .. _Ledger: 228 229 Ledger 230 ------ 231 232 A ledger is a channel's chain and current state data which is maintained by each 233 peer on the channel. 234 235 .. _Member: 236 237 Member 238 ------ 239 240 A legally separate entity that owns a unique root certificate for the network. 241 Network components such as peer nodes and application clients will be linked to a member. 242 243 .. _MSP: 244 245 Membership Service Provider 246 --------------------------- 247 248 The Membership Service Provider (MSP) refers to an abstract component of the 249 system that provides credentials to clients, and peers for them to participate 250 in a Hyperledger Fabric network. Clients use these credentials to authenticate 251 their transactions, and peers use these credentials to authenticate transaction 252 processing results (endorsements). While strongly connected to the transaction 253 processing components of the systems, this interface aims to have membership 254 services components defined, in such a way that alternate implementations of 255 this can be smoothly plugged in without modifying the core of transaction 256 processing components of the system. 257 258 .. _Membership-Services: 259 260 Membership Services 261 ------------------- 262 263 Membership Services authenticates, authorizes, and manages identities on a 264 permissioned blockchain network. The membership services code that runs in peers 265 and orderers both authenticates and authorizes blockchain operations. It is a 266 PKI-based implementation of the Membership Services Provider (MSP) abstraction. 267 268 .. _Ordering-Service: 269 270 Ordering Service 271 ---------------- 272 273 A defined collective of nodes that orders transactions into a block. The ordering 274 service exists independent of the peer processes and orders transactions on a 275 first-come-first-serve basis for all channel's on the network. The ordering service is 276 designed to support pluggable implementations beyond the out-of-the-box SOLO and Kafka varieties. 277 The ordering service is a common binding for the overall network; it contains the cryptographic 278 identity material tied to each Member_. 279 280 .. _Peer: 281 282 Peer 283 ---- 284 285 A network entity that maintains a ledger and runs chaincode containers in order to perform 286 read/write operations to the ledger. Peers are owned and maintained by members. 287 288 .. _Policy: 289 290 Policy 291 ------ 292 293 There are policies for endorsement, validation, chaincode 294 management and network/channel management. 295 296 .. _Proposal: 297 298 Proposal 299 -------- 300 301 A request for endorsement that is aimed at specific peers on a channel. Each 302 proposal is either an instantiate or an invoke (read/write) request. 303 304 .. _Query: 305 306 Query 307 ----- 308 309 A query is a chaincode invocation which reads the ledger current state but does 310 not write to the ledger. The chaincode function may query certain keys on the ledger, 311 or may query for a set of keys on the ledger. Since queries do not change ledger state, 312 the client application will typically not submit these read-only transactions for ordering, 313 validation, and commit. Although not typical, the client application can choose to 314 submit the read-only transaction for ordering, validation, and commit, for example if the 315 client wants auditable proof on the ledger chain that it had knowledge of specific ledger 316 state at a certain point in time. 317 318 .. _SDK: 319 320 Software Development Kit (SDK) 321 ------------------------------ 322 323 The Hyperledger Fabric client SDK provides a structured environment of libraries 324 for developers to write and test chaincode applications. The SDK is fully 325 configurable and extensible through a standard interface. Components, including 326 cryptographic algorithms for signatures, logging frameworks and state stores, 327 are easily swapped in and out of the SDK. The SDK provides APIs for transaction 328 processing, membership services, node traversal and event handling. The SDK 329 comes in multiple flavors: Node.js, Java. and Python. 330 331 .. _State-DB: 332 333 State Database 334 -------------- 335 336 Current state data is stored in a state database for efficient reads and queries 337 from chaincode. Supported databases include levelDB and couchDB. 338 339 .. _System-Chain: 340 341 System Chain 342 ------------ 343 344 Contains a configuration block defining the network at a system level. The 345 system chain lives within the ordering service, and similar to a channel, has 346 an initial configuration containing information such as: MSP information, policies, 347 and configuration details. Any change to the overall network (e.g. a new org 348 joining or a new ordering node being added) will result in a new configuration block 349 being added to the system chain. 350 351 The system chain can be thought of as the common binding for a channel or group 352 of channels. For instance, a collection of financial institutions may form a 353 consortium (represented through the system chain), and then proceed to create 354 channels relative to their aligned and varying business agendas. 355 356 .. _Transaction: 357 358 Transaction 359 ----------- 360 361 Invoke or instantiate results that are submitted for ordering, validation, and commit. 362 Invokes are requests to read/write data from the ledger. Instantiate is a request to 363 start and initialize a chaincode on a channel. Application clients gather invoke or 364 instantiate responses from endorsing peers and package the results and endorsements 365 into a transaction that is submitted for ordering, validation, and commit. 366 367 .. Licensed under Creative Commons Attribution 4.0 International License 368 https://creativecommons.org/licenses/by/4.0/