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`.