func TestClientIntegration_VerifyLightBlockAtHeight(t *testing.T) {
	t.Parallel()
	ctx, cancel := context.WithCancel(context.Background())
	defer cancel()
	conf := rpctest.CreateConfig(t.Name())
	app := kvstore.NewApplication()
	_, closer, err := rpctest.StartTendermint(ctx, conf, app, rpctest.SuppressStdout)
	require.NoError(t, err)
	defer func() { require.NoError(t, closer(ctx)) }()
	dbDir, err := ioutil.TempDir("", "light-client-test-verify-example")
	require.NoError(t, err)
	defer os.RemoveAll(dbDir)
	chainID := conf.ChainID()
	primary, err := httpp.New(chainID, conf.RPC.ListenAddress)
	require.NoError(t, err)
	block, err := waitForBlock(ctx, primary, 2)
	require.NoError(t, err)
	db, err := dbm.NewGoLevelDB("light-client-db", dbDir)
	require.NoError(t, err)
	c, err := light.NewClient(ctx,
		chainID,
		light.TrustOptions{
			Period: 504 * time.Hour,  
			Height: 2,
			Hash:   block.Hash(),
		},
		primary,
		[]provider.Provider{primary},  
		dbs.New(db),
		light.Logger(log.TestingLogger()),
	)
	require.NoError(t, err)
	defer func() { require.NoError(t, c.Cleanup()) }()
	_, err = waitForBlock(ctx, primary, 3)
	require.NoError(t, err)
	_, err = c.VerifyLightBlockAtHeight(ctx, 3, time.Now())
	require.NoError(t, err)
	h, err := c.TrustedLightBlock(3)
	require.NoError(t, err)
	require.EqualValues(t, 3, h.Height)
}
Manually getting light blocks and verifying them.
package light_test
import (
	"context"
	"io/ioutil"
	"os"
	"testing"
	"time"
	"github.com/stretchr/testify/require"
	dbm "github.com/tendermint/tm-db"
	"github.com/tendermint/tendermint/abci/example/kvstore"
	"github.com/tendermint/tendermint/libs/log"
	"github.com/tendermint/tendermint/light"
	"github.com/tendermint/tendermint/light/provider"
	httpp "github.com/tendermint/tendermint/light/provider/http"
	dbs "github.com/tendermint/tendermint/light/store/db"
	rpctest "github.com/tendermint/tendermint/rpc/test"
	"github.com/tendermint/tendermint/types"
)
func TestClientIntegration_Update(t *testing.T) {
	t.Parallel()
	ctx, cancel := context.WithCancel(context.Background())
	defer cancel()
	conf := rpctest.CreateConfig(t.Name())
	app := kvstore.NewApplication()
	_, closer, err := rpctest.StartTendermint(ctx, conf, app, rpctest.SuppressStdout)
	require.NoError(t, err)
	defer func() { require.NoError(t, closer(ctx)) }()
	time.Sleep(5 * time.Second)
	dbDir, err := ioutil.TempDir("", "light-client-test-update-example")
	require.NoError(t, err)
	defer os.RemoveAll(dbDir)
	chainID := conf.ChainID()
	primary, err := httpp.New(chainID, conf.RPC.ListenAddress)
	require.NoError(t, err)
	block, err := waitForBlock(ctx, primary, 2)
	require.NoError(t, err)
	db, err := dbm.NewGoLevelDB("light-client-db", dbDir)
	require.NoError(t, err)
	c, err := light.NewClient(
		ctx,
		chainID,
		light.TrustOptions{
			Period: 504 * time.Hour,  
			Height: 2,
			Hash:   block.Hash(),
		},
		primary,
		[]provider.Provider{primary},  
		dbs.New(db),
		light.Logger(log.TestingLogger()),
	)
	require.NoError(t, err)
	defer func() { require.NoError(t, c.Cleanup()) }()
	_, err = waitForBlock(ctx, primary, 3)
	require.NoError(t, err)
	h, err := c.Update(ctx, time.Now())
	require.NoError(t, err)
	require.NotNil(t, h)
	require.True(t, h.Height > 2)
}