mirror of
https://github.com/tendermint/tendermint.git
synced 2026-02-04 02:52:07 +00:00
## Description - separate docs related to running nodes into the nodes dir. - keep old files but dont display them - bring over debugging like a pro blog Closes: #XXX
55 lines
2.4 KiB
Markdown
55 lines
2.4 KiB
Markdown
---
|
|
order: 13
|
|
---
|
|
|
|
# Light Client
|
|
|
|
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 [light
|
|
package](https://pkg.go.dev/github.com/tendermint/tendermint/light?tab=doc).
|
|
|
|
## Overview
|
|
|
|
The light client protocol verifies headers by retrieving a chain of headers,
|
|
commits and validator sets from a trusted height to the target height, verifying
|
|
the signatures of each of these intermediary signed headers till it reaches the
|
|
target height. 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
|
|
|
|
- You get the full collateralized security benefits of Tendermint; no
|
|
need to wait for confirmations.
|
|
- 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!
|
|
|
|
## Security
|
|
|
|
A light client is initialized from a point of trust using [Trust Options](https://pkg.go.dev/github.com/tendermint/tendermint/light?tab=doc#TrustOptions),
|
|
a provider and a set of witnesses. This sets the trust period: the period that
|
|
full nodes should be accountable for faulty behavior and a trust level: the
|
|
fraction of validators in a validator set with which we trust that at least one
|
|
is correct. As Tendermint consensus can withstand 1/3 byzantine faults, this is
|
|
the default trust level, however, for greater security you can increase it (max:
|
|
1).
|
|
|
|
Similar to a full node, light clients can also be subject to byzantine attacks.
|
|
A light client also runs a detector process which cross verifies headers from a
|
|
primary with witnesses. Therefore light clients should be set with enough witnesses.
|
|
|
|
If the light client observes a faulty provider it will report it to another provider
|
|
and return an error.
|
|
|
|
In summary, the light client is not safe when a) more than the trust level of
|
|
validators are malicious and b) all witnesses are malicious.
|
|
|
|
Information on how to run a light client is located in the [nodes section](../nodes/light-client.md).
|