github.com/kaituanwang/hyperledger@v2.0.1+incompatible/docs/source/glossary.rst (about)

     1  Glossary
     2  ===========================
     3  
     4  Terminology is important, so that all Hyperledger Fabric users and developers
     5  agree on what we mean by each specific term. What is a smart contract for
     6  example. The documentation will reference the glossary as needed, but feel free
     7  to read the entire thing in one sitting if you like; it's pretty enlightening!
     8  
     9  .. _Anchor-Peer:
    10  
    11  Anchor Peer
    12  -----------
    13  
    14  Used by gossip to make sure peers in different organizations know about each other.
    15  
    16  When a configuration block that contains an update to the anchor peers is committed,
    17  peers reach out to the anchor peers and learn from them about all of the peers known
    18  to the anchor peer(s). Once at least one peer from each organization has contacted an
    19  anchor peer, the anchor peer learns about every peer in the channel. Since gossip
    20  communication is constant, and because peers always ask to be told about the existence
    21  of any peer they don't know about, a common view of membership can be established for
    22  a channel.
    23  
    24  For example, let's assume we have three organizations --- ``A``, ``B``, ``C`` --- in the channel
    25  and a single anchor peer --- ``peer0.orgC`` --- defined for organization ``C``.
    26  When ``peer1.orgA`` (from organization ``A``) contacts ``peer0.orgC``, it will
    27  tell ``peer0.orgC`` about ``peer0.orgA``. And when at a later time ``peer1.orgB``
    28  contacts ``peer0.orgC``, the latter would tell the former about ``peer0.orgA``.
    29  From that point forward, organizations ``A`` and ``B`` would start exchanging
    30  membership information directly without any assistance from ``peer0.orgC``.
    31  
    32  As communication across organizations depends on gossip in order to work, there must
    33  be at least one anchor peer defined in the channel configuration. It is strongly
    34  recommended that every organization provides its own set of anchor peers for high
    35  availability and redundancy.
    36  
    37  .. _glossary_ACL:
    38  
    39  ACL
    40  ---
    41  
    42  An ACL, or Access Control List, associates access to specific peer
    43  resources (such as system chaincode APIs or event services) to a Policy_
    44  (which specifies how many and what types of organizations or roles are
    45  required). The ACL is part of a channel's configuration. It is therefore
    46  persisted in the channel's configuration blocks, and can be updated using the
    47  standard configuration update mechanism.
    48  
    49  An ACL is formatted as a list of key-value pairs, where the key identifies
    50  the resource whose access we wish to control, and the value identifies the
    51  channel policy (group) that is allowed to access it. For example
    52  ``lscc/GetDeploymentSpec: /Channel/Application/Readers``
    53  defines that the access to the life cycle chaincode ``GetDeploymentSpec`` API
    54  (the resource) is accessible by identities which satisfy the
    55  ``/Channel/Application/Readers`` policy.
    56  
    57  A set of default ACLs is provided in the ``configtx.yaml`` file which is
    58  used by configtxgen to build channel configurations. The defaults can be set
    59  in the top level "Application" section of ``configtx.yaml`` or overridden
    60  on a per profile basis in the "Profiles" section.
    61  
    62  .. _Block:
    63  
    64  Block
    65  -----
    66  
    67  .. figure:: ./glossary/glossary.block.png
    68     :scale: 50 %
    69     :align: right
    70     :figwidth: 40 %
    71     :alt: A Block
    72  
    73     Block B1 is linked to block B0. Block B2 is linked to block B1.
    74  
    75  =======
    76  
    77  A block contains an ordered set of transactions. It is cryptographically linked
    78  to the preceding block, and in turn it is linked to be subsequent blocks. The
    79  first block in such a chain of blocks is called the **genesis block**. Blocks
    80  are created by the ordering service, and then validated and committed by peers.
    81  
    82  
    83  .. _Chain:
    84  
    85  
    86  Chain
    87  -----
    88  
    89  .. figure:: ./glossary/glossary.blockchain.png
    90     :scale: 75 %
    91     :align: right
    92     :figwidth: 40 %
    93     :alt: Blockchain
    94  
    95     Blockchain B contains blocks 0, 1, 2.
    96  
    97  =======
    98  
    99  The ledger's chain is a transaction log structured as hash-linked blocks of
   100  transactions. Peers receive blocks of transactions from the ordering service, mark
   101  the block's transactions as valid or invalid based on endorsement policies and
   102  concurrency violations, and append the block to the hash chain on the peer's
   103  file system.
   104  
   105  .. _chaincode:
   106  
   107  Chaincode
   108  ---------
   109  
   110  See Smart-Contract_.
   111  
   112  .. _Channel:
   113  
   114  Channel
   115  -------
   116  
   117  .. figure:: ./glossary/glossary.channel.png
   118     :scale: 30 %
   119     :align: right
   120     :figwidth: 40 %
   121     :alt: A Channel
   122  
   123     Channel C connects application A1, peer P2 and ordering service O1.
   124  
   125  =======
   126  
   127  A channel is a private blockchain overlay which allows for data
   128  isolation and confidentiality. A channel-specific ledger is shared across the
   129  peers in the channel, and transacting parties must be authenticated to
   130  a channel in order to interact with it.  Channels are defined by a
   131  Configuration-Block_.
   132  
   133  
   134  .. _Commit:
   135  
   136  Commit
   137  ------
   138  
   139  Each Peer_ on a channel validates ordered blocks of
   140  transactions and then commits (writes/appends) the blocks to its replica of the
   141  channel Ledger_. Peers also mark each transaction in each block
   142  as valid or invalid.
   143  
   144  .. _Concurrency-Control-Version-Check:
   145  
   146  Concurrency Control Version Check
   147  ---------------------------------
   148  
   149  Concurrency Control Version Check is a method of keeping ledger state in sync across
   150  peers on a channel. Peers execute transactions in parallel, and before committing
   151  to the ledger, peers check whether the state read at the time the transaction was executed
   152  has been modified. If the data read for the transaction has changed between execution time and
   153  commit time, then a Concurrency Control Version Check violation has
   154  occurred, and the transaction is marked as invalid on the ledger and values
   155  are not updated in the state database.
   156  
   157  .. _Configuration-Block:
   158  
   159  Configuration Block
   160  -------------------
   161  
   162  Contains the configuration data defining members and policies for a system
   163  chain (ordering service) or channel. Any configuration modifications to a
   164  channel or overall network (e.g. a member leaving or joining) will result
   165  in a new configuration block being appended to the appropriate chain. This
   166  block will contain the contents of the genesis block, plus the delta.
   167  
   168  .. _Consensus:
   169  
   170  Consensus
   171  ---------
   172  
   173  A broader term overarching the entire transactional flow, which serves to generate
   174  an agreement on the order and to confirm the correctness of the set of transactions
   175  constituting a block.
   176  
   177  .. _Consenter-Set:
   178  
   179  Consenter set
   180  -------------
   181  
   182  In a Raft ordering service, these are the ordering nodes actively participating
   183  in the consensus mechanism on a channel. If other ordering nodes exist on the
   184  system channel, but are not a part of a channel, they are not part of that
   185  channel's consenter set.
   186  
   187  .. _Consortium:
   188  
   189  Consortium
   190  ----------
   191  
   192  A consortium is a collection of non-orderer organizations on the blockchain
   193  network. These are the organizations that form and join channels and that own
   194  peers. While a blockchain network can have multiple consortia, most blockchain
   195  networks have a single consortium. At channel creation time, all organizations
   196  added to the channel must be part of a consortium. However, an organization
   197  that is not defined in a consortium may be added to an existing channel.
   198  
   199  .. _Chaincode-definition:
   200  
   201  Chaincode definition
   202  --------------------
   203  
   204  A chaincode definition is used by organizations to agree on the parameters of a
   205  chaincode before it can be used on a channel. Each channel member that wants to
   206  use the chaincode to endorse transactions or query the ledger needs to approve
   207  a chaincode definition for their organization. Once enough channel members have
   208  approved a chaincode definition to meet the Lifecycle Endorsement policy (which
   209  is set to a majority of organizations in the channel by default), the chaincode
   210  definition can be committed to the channel. After the definition is committed,
   211  the first invoke of the chaincode (or, if requested, the execution of the Init
   212  function) will start the chaincode on the channel.
   213  
   214  .. _Dynamic-Membership:
   215  
   216  Dynamic Membership
   217  ------------------
   218  
   219  Hyperledger Fabric supports the addition/removal of members, peers, and ordering service
   220  nodes, without compromising the operationality of the overall network. Dynamic
   221  membership is critical when business relationships adjust and entities need to
   222  be added/removed for various reasons.
   223  
   224  .. _Endorsement:
   225  
   226  Endorsement
   227  -----------
   228  
   229  Refers to the process where specific peer nodes execute a chaincode transaction and return
   230  a proposal response to the client application. The proposal response includes the
   231  chaincode execution response message, results (read set and write set), and events,
   232  as well as a signature to serve as proof of the peer's chaincode execution.
   233  Chaincode applications have corresponding endorsement policies, in which the endorsing
   234  peers are specified.
   235  
   236  .. _Endorsement-policy:
   237  
   238  Endorsement policy
   239  ------------------
   240  
   241  Defines the peer nodes on a channel that must execute transactions attached to a
   242  specific chaincode application, and the required combination of responses (endorsements).
   243  A policy could require that a transaction be endorsed by a minimum number of
   244  endorsing peers, a minimum percentage of endorsing peers, or by all endorsing
   245  peers that are assigned to a specific chaincode application. Policies can be
   246  curated based on the application and the desired level of resilience against
   247  misbehavior (deliberate or not) by the endorsing peers. A transaction that is submitted
   248  must satisfy the endorsement policy before being marked as valid by committing peers.
   249  
   250  .. _Follower:
   251  
   252  Follower
   253  --------
   254  
   255  In a leader based consensus protocol, such as Raft, these are the nodes which
   256  replicate log entries produced by the leader. In Raft, the followers also receive
   257  "heartbeat" messages from the leader. In the event that the leader stops sending
   258  those message for a configurable amount of time, the followers will initiate a
   259  leader election and one of them will be elected leader.
   260  
   261  .. _Genesis-Block:
   262  
   263  Genesis Block
   264  -------------
   265  
   266  The configuration block that initializes the ordering service, or serves as the
   267  first block on a chain.
   268  
   269  .. _Gossip-Protocol:
   270  
   271  Gossip Protocol
   272  ---------------
   273  
   274  The gossip data dissemination protocol performs three functions:
   275  1) manages peer discovery and channel membership;
   276  2) disseminates ledger data across all peers on the channel;
   277  3) syncs ledger state across all peers on the channel.
   278  Refer to the :doc:`Gossip <gossip>` topic for more details.
   279  
   280  .. _Fabric-ca:
   281  
   282  Hyperledger Fabric CA
   283  ---------------------
   284  
   285  Hyperledger Fabric CA is the default Certificate Authority component, which
   286  issues PKI-based certificates to network member organizations and their users.
   287  The CA issues one root certificate (rootCert) to each member and one enrollment
   288  certificate (ECert) to each authorized user.
   289  
   290  .. _Init:
   291  
   292  Init
   293  ----
   294  
   295  A method to initialize a chaincode application. All chaincodes need to have an
   296  an Init function. By default, this function is never executed. However you can
   297  use the chaincode definition to request the execution of the Init function in
   298  order to initialize the chaincode.
   299  
   300  Install
   301  -------
   302  
   303  The process of placing a chaincode on a peer's file system.
   304  
   305  Instantiate
   306  -----------
   307  
   308  The process of starting and initializing a chaincode application on a specific
   309  channel. After instantiation, peers that have the chaincode installed can accept
   310  chaincode invocations.
   311  
   312  **NOTE**: *This method i.e. Instantiate was used in the 1.4.x and older versions of the chaincode
   313  lifecycle. For the current procedure used to start a chaincode on a channel with
   314  the new Fabric chaincode lifecycle introduced as part of Fabric v2.0,
   315  see Chaincode-definition_.*
   316  
   317  .. _Invoke:
   318  
   319  Invoke
   320  ------
   321  
   322  Used to call chaincode functions. A client application invokes chaincode by
   323  sending a transaction proposal to a peer. The peer will execute the chaincode
   324  and return an endorsed proposal response to the client application. The client
   325  application will gather enough proposal responses to satisfy an endorsement policy,
   326  and will then submit the transaction results for ordering, validation, and commit.
   327  The client application may choose not to submit the transaction results. For example
   328  if the invoke only queried the ledger, the client application typically would not
   329  submit the read-only transaction, unless there is desire to log the read on the ledger
   330  for audit purpose. The invoke includes a channel identifier, the chaincode function to
   331  invoke, and an array of arguments.
   332  
   333  .. _Leader
   334  
   335  Leader
   336  ------
   337  
   338  In a leader based consensus protocol, like Raft, the leader is responsible for
   339  ingesting new log entries, replicating them to follower ordering nodes, and
   340  managing when an entry is considered committed. This is not a special **type**
   341  of orderer. It is only a role that an orderer may have at certain times, and
   342  then not others, as circumstances determine.
   343  
   344  .. _Leading-Peer:
   345  
   346  Leading Peer
   347  ------------
   348  
   349  Each Organization_ can own multiple peers on each channel that
   350  they subscribe to. One or more of these peers should serve as the leading peer
   351  for the channel, in order to communicate with the network ordering service on
   352  behalf of the organization. The ordering service delivers blocks to the
   353  leading peer(s) on a channel, who then distribute them to other peers within
   354  the same organization.
   355  
   356  .. _Ledger:
   357  
   358  Ledger
   359  ------
   360  
   361  .. figure:: ./glossary/glossary.ledger.png
   362     :scale: 25 %
   363     :align: right
   364     :figwidth: 20 %
   365     :alt: A Ledger
   366  
   367     A Ledger, 'L'
   368  
   369  
   370  A ledger consists of two distinct, though related, parts -- a "blockchain" and
   371  the "state database", also known as "world state". Unlike other ledgers,
   372  blockchains are **immutable** -- that is, once a block has been added to the
   373  chain, it cannot be changed. In contrast, the "world state" is a database
   374  containing the current value of the set of key-value pairs that have been added,
   375  modified or deleted by the set of validated and committed transactions in the
   376  blockchain.
   377  
   378  It's helpful to think of there being one **logical** ledger for each channel in
   379  the network. In reality, each peer in a channel maintains its own copy of the
   380  ledger -- which is kept consistent with every other peer's copy through a
   381  process called **consensus**. The term **Distributed Ledger Technology**
   382  (**DLT**) is often associated with this kind of ledger -- one that is logically
   383  singular, but has many identical copies distributed across a set of network
   384  nodes (peers and the ordering service).
   385  
   386  .. _Log-entry
   387  
   388  Log entry
   389  ---------
   390  
   391  The primary unit of work in a Raft ordering service, log entries are distributed
   392  from the leader orderer to the followers. The full sequence of such entries known
   393  as the "log". The log is considered to be consistent if all members agree on the
   394  entries and their order.
   395  
   396  .. _Member:
   397  
   398  Member
   399  ------
   400  
   401  See Organization_.
   402  
   403  .. _MSP:
   404  
   405  Membership Service Provider
   406  ---------------------------
   407  
   408  .. figure:: ./glossary/glossary.msp.png
   409     :scale: 35 %
   410     :align: right
   411     :figwidth: 25 %
   412     :alt: An MSP
   413  
   414     An MSP, 'ORG.MSP'
   415  
   416  
   417  The Membership Service Provider (MSP) refers to an abstract component of the
   418  system that provides credentials to clients, and peers for them to participate
   419  in a Hyperledger Fabric network. Clients use these credentials to authenticate
   420  their transactions, and peers use these credentials to authenticate transaction
   421  processing results (endorsements). While strongly connected to the transaction
   422  processing components of the systems, this interface aims to have membership
   423  services components defined, in such a way that alternate implementations of
   424  this can be smoothly plugged in without modifying the core of transaction
   425  processing components of the system.
   426  
   427  .. _Membership-Services:
   428  
   429  Membership Services
   430  -------------------
   431  
   432  Membership Services authenticates, authorizes, and manages identities on a
   433  permissioned blockchain network. The membership services code that runs in peers
   434  and orderers both authenticates and authorizes blockchain operations.  It is a
   435  PKI-based implementation of the Membership Services Provider (MSP) abstraction.
   436  
   437  .. _Ordering-Service:
   438  
   439  Ordering Service
   440  ----------------
   441  
   442  Also known as **orderer**. A defined collective of nodes that orders transactions into a block
   443  and then distributes blocks to connected peers for validation and commit. The ordering service
   444  exists independent of the peer processes and orders transactions on a first-come-first-serve basis
   445  for all channels on the network.  It is designed to support pluggable implementations beyond the
   446  out-of-the-box Kafka and Raft varieties. It is a common binding for the overall network; it
   447  contains the cryptographic identity material tied to each Member_.
   448  
   449  .. _Organization:
   450  
   451  Organization
   452  ------------
   453  
   454  =====
   455  
   456  
   457  .. figure:: ./glossary/glossary.organization.png
   458     :scale: 25 %
   459     :align: right
   460     :figwidth: 20 %
   461     :alt: An Organization
   462  
   463     An organization, 'ORG'
   464  
   465  
   466  Also known as "members", organizations are invited to join the blockchain network
   467  by a blockchain network provider. An organization is joined to a network by adding its
   468  Membership Service Provider (MSP_) to the network. The MSP defines how other members of the
   469  network may verify that signatures (such as those over transactions) were generated by a valid
   470  identity, issued by that organization. The particular access rights of identities within an MSP
   471  are governed by policies which are also agreed upon when the organization is joined to the
   472  network. An organization can be as large as a multi-national corporation or as small as an
   473  individual. The transaction endpoint of an organization is a Peer_. A collection of organizations
   474  form a Consortium_. While all of the organizations on a network are members, not every organization
   475  will be part of a consortium.
   476  
   477  .. _Peer:
   478  
   479  Peer
   480  ----
   481  
   482  .. figure:: ./glossary/glossary.peer.png
   483     :scale: 25 %
   484     :align: right
   485     :figwidth: 20 %
   486     :alt: A Peer
   487  
   488     A peer, 'P'
   489  
   490  A network entity that maintains a ledger and runs chaincode containers in order to perform
   491  read/write operations to the ledger.  Peers are owned and maintained by members.
   492  
   493  .. _Policy:
   494  
   495  Policy
   496  ------
   497  
   498  Policies are expressions composed of properties of digital identities, for
   499  example: ``Org1.Peer OR Org2.Peer``. They are used to restrict access to
   500  resources on a blockchain network. For instance, they dictate who can read from
   501  or write to a channel, or who can use a specific chaincode API via an ACL_.
   502  Policies may be defined in ``configtx.yaml`` prior to bootstrapping an ordering
   503  service or creating a channel, or they can be specified when instantiating
   504  chaincode on a channel. A default set of policies ship in the sample
   505  ``configtx.yaml`` which will be appropriate for most networks.
   506  
   507  .. _glossary-Private-Data:
   508  
   509  Private Data
   510  ------------
   511  
   512  Confidential data that is stored in a private database on each authorized peer,
   513  logically separate from the channel ledger data. Access to this data is
   514  restricted to one or more organizations on a channel via a private data
   515  collection definition. Unauthorized organizations will have a hash of the
   516  private data on the channel ledger as evidence of the transaction data. Also,
   517  for further privacy, hashes of the private data go through the
   518  Ordering-Service_, not the private data itself, so this keeps private data
   519  confidential from Orderer.
   520  
   521  .. _glossary-Private-Data-Collection:
   522  
   523  Private Data Collection (Collection)
   524  ------------------------------------
   525  
   526  Used to manage confidential data that two or more organizations on a channel
   527  want to keep private from other organizations on that channel. The collection
   528  definition describes a subset of organizations on a channel entitled to store
   529  a set of private data, which by extension implies that only these organizations
   530  can transact with the private data.
   531  
   532  .. _Proposal:
   533  
   534  Proposal
   535  --------
   536  
   537  A request for endorsement that is aimed at specific peers on a channel. Each
   538  proposal is either an Init or an Invoke (read/write) request.
   539  
   540  
   541  .. _Query:
   542  
   543  Query
   544  -----
   545  
   546  A query is a chaincode invocation which reads the ledger current state but does
   547  not write to the ledger. The chaincode function may query certain keys on the ledger,
   548  or may query for a set of keys on the ledger. Since queries do not change ledger state,
   549  the client application will typically not submit these read-only transactions for ordering,
   550  validation, and commit. Although not typical, the client application can choose to
   551  submit the read-only transaction for ordering, validation, and commit, for example if the
   552  client wants auditable proof on the ledger chain that it had knowledge of specific ledger
   553  state at a certain point in time.
   554  
   555  .. _Quorum:
   556  
   557  Quorum
   558  ------
   559  
   560  This describes the minimum number of members of the cluster that need to
   561  affirm a proposal so that transactions can be ordered. For every consenter set,
   562  this is a **majority** of nodes. In a cluster with five nodes, three must be
   563  available for there to be a quorum. If a quorum of nodes is unavailable for any
   564  reason, the cluster becomes unavailable for both read and write operations and
   565  no new logs can be committed.
   566  
   567  .. _Raft:
   568  
   569  Raft
   570  ----
   571  
   572  New for v1.4.1, Raft is a crash fault tolerant (CFT) ordering service
   573  implementation based on the `etcd library <https://coreos.com/etcd/>`_
   574  of the `Raft protocol` <https://raft.github.io/raft.pdf>`_. Raft follows a
   575  "leader and follower" model, where a leader node is elected (per channel) and
   576  its decisions are replicated by the followers. Raft ordering services should
   577  be easier to set up and manage than Kafka-based ordering services, and their
   578  design allows organizations to contribute nodes to a distributed ordering
   579  service.
   580  
   581  .. _SDK:
   582  
   583  Software Development Kit (SDK)
   584  ------------------------------
   585  
   586  The Hyperledger Fabric client SDK provides a structured environment of libraries
   587  for developers to write and test chaincode applications. The SDK is fully
   588  configurable and extensible through a standard interface. Components, including
   589  cryptographic algorithms for signatures, logging frameworks and state stores,
   590  are easily swapped in and out of the SDK. The SDK provides APIs for transaction
   591  processing, membership services, node traversal and event handling.
   592  
   593  Currently, the two officially supported SDKs are for Node.js and Java, while two
   594  more -- Python and Go -- are not yet official but can still be downloaded
   595  and tested.
   596  
   597  .. _Smart-Contract:
   598  
   599  Smart Contract
   600  --------------
   601  
   602  A smart contract is code -- invoked by a client application external to the
   603  blockchain network -- that manages access and modifications to a set of
   604  key-value pairs in the :ref:`World-State` via :ref:`Transaction`. In Hyperledger Fabric,
   605  smart contracts are packaged as chaincode. Chaincode is installed on peers
   606  and then defined and used on one or more channels.
   607  
   608  .. _State-DB:
   609  
   610  State Database
   611  --------------
   612  
   613  World state data is stored in a state database for efficient reads and queries
   614  from chaincode. Supported databases include levelDB and couchDB.
   615  
   616  .. _System-Chain:
   617  
   618  System Chain
   619  ------------
   620  
   621  Contains a configuration block defining the network at a system level. The
   622  system chain lives within the ordering service, and similar to a channel, has
   623  an initial configuration containing information such as: MSP information, policies,
   624  and configuration details.  Any change to the overall network (e.g. a new org
   625  joining or a new ordering node being added) will result in a new configuration block
   626  being added to the system chain.
   627  
   628  The system chain can be thought of as the common binding for a channel or group
   629  of channels.  For instance, a collection of financial institutions may form a
   630  consortium (represented through the system chain), and then proceed to create
   631  channels relative to their aligned and varying business agendas.
   632  
   633  .. _Transaction:
   634  
   635  Transaction
   636  -----------
   637  
   638  .. figure:: ./glossary/glossary.transaction.png
   639     :scale: 30 %
   640     :align: right
   641     :figwidth: 20 %
   642     :alt: A Transaction
   643  
   644     A transaction, 'T'
   645  
   646  Transactions are created when a chaincode is invoked from a client application
   647  to read or write data from the ledger. Fabric application clients submit transaction proposals to
   648  endorsing peers for execution and endorsement, gather the signed (endorsed) responses from those
   649  endorsing peers, and then package the results and endorsements into a transaction that is
   650  submitted to the ordering service. The ordering service orders and places transactions
   651  in a block that is broadcast to the peers which validate and commit the transactions to the ledger
   652  and update world state.
   653  
   654  .. _World-State:
   655  
   656  World State
   657  -----------
   658  
   659  .. figure:: ./glossary/glossary.worldstate.png
   660     :scale: 40 %
   661     :align: right
   662     :figwidth: 25 %
   663     :alt: Current State
   664  
   665     The World State, 'W'
   666  
   667  Also known as the “current state”, the world state is a component of the
   668  HyperLedger Fabric :ref:`Ledger`. The world state represents the latest values
   669  for all keys included in the chain transaction log. Chaincode executes
   670  transaction proposals against world state data because the world state provides
   671  direct access to the latest value of these keys rather than having to calculate
   672  them by traversing the entire transaction log. The world state will change
   673  every time the value of a key changes (for example, when the ownership of a
   674  car -- the "key" -- is transferred from one owner to another -- the
   675  "value") or when a new key is added (a car is created). As a result, the world
   676  state is critical to a transaction flow, since the current state of a key-value
   677  pair must be known before it can be changed. Peers commit the latest values to
   678  the ledger world state for each valid transaction included in a processed block.
   679  
   680  
   681  .. Licensed under Creative Commons Attribution 4.0 International License
   682     https://creativecommons.org/licenses/by/4.0/