package light import ( "context" "time" "github.com/tendermint/tendermint/light/provider" "github.com/tendermint/tendermint/light/provider/http" "github.com/tendermint/tendermint/light/store" ) // NewHTTPClient initiates an instance of a light client using HTTP addresses // for both the primary provider and witnesses of the light client. A trusted // header and hash must be passed to initialize the client. // // See all Option(s) for the additional configuration. // See NewClient. func NewHTTPClient( ctx context.Context, chainID string, trustOptions TrustOptions, primaryAddress string, witnessesAddresses []string, trustedStore store.Store, options ...Option) (*Client, error) { providers, err := providersFromAddresses(append(witnessesAddresses, primaryAddress), chainID) if err != nil { return nil, err } return NewClient( ctx, chainID, trustOptions, providers[len(providers)-1], providers[:len(providers)-1], trustedStore, options...) } // NewHTTPClientFromTrustedStore initiates an instance of a light client using // HTTP addresses for both the primary provider and witnesses and uses a // trusted store as the root of trust. // // See all Option(s) for the additional configuration. // See NewClientFromTrustedStore. func NewHTTPClientFromTrustedStore( chainID string, trustingPeriod time.Duration, primaryAddress string, witnessesAddresses []string, trustedStore store.Store, options ...Option) (*Client, error) { providers, err := providersFromAddresses(append(witnessesAddresses, primaryAddress), chainID) if err != nil { return nil, err } return NewClientFromTrustedStore( chainID, trustingPeriod, providers[len(providers)-1], providers[:len(providers)-1], trustedStore, options...) } func providersFromAddresses(addrs []string, chainID string) ([]provider.Provider, error) { providers := make([]provider.Provider, len(addrs)) for idx, address := range addrs { p, err := http.New(chainID, address) if err != nil { return nil, err } providers[idx] = p } return providers, nil }