github.com/okex/exchain@v1.8.0/libs/tendermint/docs/tendermint-core/light-client-protocol.md (about)

     1  ---
     2  order: 9
     3  ---
     4  
     5  # Light Client Protocol
     6  
     7  Light clients are an important part of the complete blockchain system for most
     8  applications. Tendermint provides unique speed and security properties for
     9  light client applications.
    10  
    11  See our [lite
    12  package](https://pkg.go.dev/github.com/tendermint/tendermint/lite2?tab=doc).
    13  
    14  ## Overview
    15  
    16  The objective of the light client protocol is to get a commit for a recent
    17  block hash where the commit includes a majority of signatures from the last
    18  known validator set. From there, all the application state is verifiable with
    19  [merkle
    20  proofs](https://github.com/tendermint/spec/blob/953523c3cb99fdb8c8f7a2d21e3a99094279e9de/spec/blockchain/encoding.md#iavl-tree).
    21  
    22  ## Properties
    23  
    24  - You get the full collateralized security benefits of Tendermint; No
    25    need to wait for confirmations.
    26  - You get the full speed benefits of Tendermint; transactions
    27    commit instantly.
    28  - You can get the most recent version of the application state
    29    non-interactively (without committing anything to the blockchain). For
    30    example, this means that you can get the most recent value of a name from the
    31    name-registry without worrying about fork censorship attacks, without posting
    32    a commit and waiting for confirmations. It's fast, secure, and free!
    33  
    34  ## Where to obtain trusted height & hash?
    35  
    36  https://pkg.go.dev/github.com/tendermint/tendermint/lite2?tab=doc#TrustOptions
    37  
    38  One way to obtain semi-trusted hash & height is to query multiple full nodes
    39  and compare their hashes:
    40  
    41  ```sh
    42  $ curl -s https://233.123.0.140:26657:26657/commit | jq "{height: .result.signed_header.header.height, hash: .result.signed_header.commit.block_id.hash}"
    43  {
    44    "height": "273",
    45    "hash": "188F4F36CBCD2C91B57509BBF231C777E79B52EE3E0D90D06B1A25EB16E6E23D"
    46  }
    47  ```
    48  
    49  ## HTTP proxy
    50  
    51  Tendermint comes with a built-in `tendermint lite` command, which can be used
    52  to run a light client proxy server, verifying Tendermint rpc. All calls that
    53  can be tracked back to a block header by a proof will be verified before
    54  passing them back to the caller. Other than that, it will present the same
    55  interface as a full Tendermint node.
    56  
    57  ```sh
    58  $ tendermint lite supernova -p tcp://233.123.0.140:26657 \
    59    -w tcp://179.63.29.15:26657,tcp://144.165.223.135:26657 \
    60    --height=10 --hash=37E9A6DD3FA25E83B22C18835401E8E56088D0D7ABC6FD99FCDC920DD76C1C57
    61  ```
    62  
    63  For additional options, run `tendermint lite --help`.