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/