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.