Categorygithub.com/attestantio/go-execution-client
modulepackage
0.9.1
Repository: https://github.com/attestantio/go-execution-client.git
Documentation: pkg.go.dev

# README

go-execution-client

Tag License GoDoc Lint Go Report Card

Go library providing an abstraction to Ethereum execution nodes. Its external API follows the official Ethereum consensus APIs specification.

This library is under development; expect APIs and data structures to change until it reaches version 1.0. In addition, clients' implementations of both their own and the standard API are themselves under development so implementation of the the full API can be incomplete.

Table of Contents

Install

go-execution-client is a standard Go module which can be installed with:

go get github.com/attestantio/go-execution-client

Support

go-execution-client supports execution nodes that comply with the standard execution node API.

Usage

Please read the Go documentation for this library for interface information.

Example

Below is a complete annotated example to access an execution node.

package main

import (
    "context"
    "fmt"

    execclient "github.com/attestantio/go-execution-client"
    "github.com/attestantio/go-execution-client/jsonrpc"
    "github.com/rs/zerolog"
)

func main() {
    // Provide a cancellable context to the creation function.
    ctx, cancel := context.WithCancel(context.Background())
    client, err := jsonrpc.New(ctx,
        // WithAddress supplies the address of the execution node, as a URL.
        jsonrpc.WithAddress("http://localhost:8545/"),
        // LogLevel supplies the level of logging to carry out.
        jsonrpc.WithLogLevel(zerolog.WarnLevel),
    )
    if err != nil {
        panic(err)
    }

    fmt.Printf("Connected to %s\n", client.Name())

    // Client functions have their own interfaces.  Not all functions are
    // supported by all clients, so checks should be made for each function when
    // casting the service to the relevant interface.
    if provider, isProvider := client.(execclient.ChainHeightProvider); isProvider {
        chainHeight, err := provider.ChainHeight(ctx)
        if err != nil {
            panic(err)
        }
        fmt.Printf("Chain height is %v\n", chainHeight)
    }

    // Cancelling the context passed to New() frees up resources held by the
    // client, closes connections, clears handlers, etc.
    cancel()
}

Maintainers

Jim McDonald: @mcdee.

Contribute

Contributions welcome. Please check out the issues.

License

Apache-2.0 © 2021 Attestant Limited

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Structs

CallOpts are the options to Call().

# Interfaces

BalancesProvider is the interface for providing balances.
BaseFeeProvider is the interface for providing the base fee.
BlockReplaysProvider is the interface for providing block replays.
BlocksProvider is the interface for providing blocks.
CallProvider is the interface for making calls to the execution client.
ChainHeightProvider is the interface for providing chain height.
ChainIDProvider is the interface for providing the chain ID.
EventsProvider is the interface for providing events.
GasEstimationProvide is the interface for providing gas estimations.
IssuanceProvider is the interface for providing issuance.
NetworkIDProvider is the interface for providing the network ID.
NewPendingTransactionsProvider is the interface for providing new pending transactions.
Service is the service providing a connection to an execution client.
SyncingProvider is the interface for providing syncing information.
TransactionReceiptsProvider is the interface for providing transaction receipts.
TransactionsProvider is the interface for providing transactions.