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