mirror of
https://github.com/tendermint/tendermint.git
synced 2026-08-21 14:46:15 +00:00
docs: update Light Client Protocol page (#4405)
* docs: update Light Client Protocol page Closes #4331 * one way to get hash & height
This commit is contained in:
@@ -4,20 +4,19 @@ order: 9
|
||||
|
||||
# Light Client Protocol
|
||||
|
||||
Light clients are an important part of the complete blockchain system
|
||||
for most applications. Tendermint provides unique speed and security
|
||||
properties for light client applications.
|
||||
Light clients are an important part of the complete blockchain system for most
|
||||
applications. Tendermint provides unique speed and security properties for
|
||||
light client applications.
|
||||
|
||||
See our [lite
|
||||
package](https://godoc.org/github.com/tendermint/tendermint/lite).
|
||||
package](https://pkg.go.dev/github.com/tendermint/tendermint/lite2?tab=doc).
|
||||
|
||||
## Overview
|
||||
|
||||
The objective of the light client protocol is to get a
|
||||
commit for a recent block
|
||||
hash where the commit includes a
|
||||
majority of signatures from the last known validator set. From there,
|
||||
all the application state is verifiable with [merkle
|
||||
The objective of the light client protocol is to get a commit for a recent
|
||||
block hash where the commit includes a majority of signatures from the last
|
||||
known validator set. From there, all the application state is verifiable with
|
||||
[merkle
|
||||
proofs](https://github.com/tendermint/spec/blob/953523c3cb99fdb8c8f7a2d21e3a99094279e9de/spec/blockchain/encoding.md#iavl-tree).
|
||||
|
||||
## Properties
|
||||
@@ -27,8 +26,38 @@ proofs](https://github.com/tendermint/spec/blob/953523c3cb99fdb8c8f7a2d21e3a9909
|
||||
- You get the full speed benefits of Tendermint; transactions
|
||||
commit instantly.
|
||||
- You can get the most recent version of the application state
|
||||
non-interactively (without committing anything to the blockchain).
|
||||
For example, this means that you can get the most recent value of a
|
||||
name from the name-registry without worrying about fork censorship
|
||||
attacks, without posting a commit and waiting for confirmations.
|
||||
It's fast, secure, and free!
|
||||
non-interactively (without committing anything to the blockchain). For
|
||||
example, this means that you can get the most recent value of a name from the
|
||||
name-registry without worrying about fork censorship attacks, without posting
|
||||
a commit and waiting for confirmations. It's fast, secure, and free!
|
||||
|
||||
## Where to obtain trusted height & hash?
|
||||
|
||||
https://pkg.go.dev/github.com/tendermint/tendermint/lite2?tab=doc#TrustOptions
|
||||
|
||||
One way to obtain semi-trusted hash & height is to query multiple full nodes
|
||||
and compare their hashes:
|
||||
|
||||
```sh
|
||||
$ 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}"
|
||||
{
|
||||
"height": "273",
|
||||
"hash": "188F4F36CBCD2C91B57509BBF231C777E79B52EE3E0D90D06B1A25EB16E6E23D"
|
||||
}
|
||||
```
|
||||
|
||||
## HTTP proxy
|
||||
|
||||
Tendermint comes with a built-in `tendermint lite` command, which can be used
|
||||
to run a light client proxy server, verifying Tendermint rpc. All calls that
|
||||
can be tracked back to a block header by a proof will be verified before
|
||||
passing them back to the caller. Other than that, it will present the same
|
||||
interface as a full Tendermint node.
|
||||
|
||||
```sh
|
||||
$ tendermint lite --chain-id=supernova --primary=tcp://233.123.0.140:26657 \
|
||||
--witnesses=tcp://179.63.29.15:26657,tcp://144.165.223.135:26657 \
|
||||
--trusted-height=10 --trusted-hash=37E9A6DD3FA25E83B22C18835401E8E56088D0D7ABC6FD99FCDC920DD76C1C57
|
||||
```
|
||||
|
||||
For additional options, run `tendermint lite --help`.
|
||||
|
||||
Reference in New Issue
Block a user