Documentation ¶
Index ¶
- func MustGetV6ContractEventID(name, eventName string) common.Hash
- func NewClient(rpcUrl string, secondaryRPCURLs ...string) (*client, error)
- func NewClientWith(rpcClient RPCClient, gethClient GethClient) *client
- type CallArgs
- type Client
- type ConnectedContract
- type ContractCodec
- type GethClient
- type GethRawLog
- type Log
- type LogBroadcast
- type LogBroadcaster
- type LogListener
- type MaybeHeader
- type RPCClient
- type Subscription
- type UnsubscribeFunc
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func MustGetV6ContractEventID ¶ added in v0.8.8
MustGetV6ContractEventID finds the event for the given contract by searching embedded contract assets from evm/, or panics if not found.
func NewClientWith ¶ added in v0.8.13
func NewClientWith(rpcClient RPCClient, gethClient GethClient) *client
This alternate constructor exists for testing purposes.
Types ¶
type CallArgs ¶ added in v0.8.8
CallArgs represents the data used to call the balance method of a contract. "To" is the address of the ERC contract. "Data" is the message sent to the contract.
type Client ¶ added in v0.8.8
type Client interface { GethClient Dial(ctx context.Context) error Close() GetERC20Balance(address common.Address, contractAddress common.Address) (*big.Int, error) SendRawTx(bytes []byte) (common.Hash, error) Call(result interface{}, method string, args ...interface{}) error CallContext(ctx context.Context, result interface{}, method string, args ...interface{}) error // These methods are reimplemented due to a difference in how block header hashes are // calculated by Parity nodes running on Kovan. We have to return our own wrapper // type to capture the correct hash from the RPC response. HeaderByNumber(ctx context.Context, n *big.Int) (*models.Head, error) SubscribeNewHead(ctx context.Context, ch chan<- *models.Head) (ethereum.Subscription, error) }
Client is the interface used to interact with an ethereum node.
type ConnectedContract ¶
type ConnectedContract interface { ContractCodec Call(result interface{}, methodName string, args ...interface{}) error SubscribeToLogs(listener LogListener) (connected bool, _ UnsubscribeFunc) }
func NewConnectedContract ¶
func NewConnectedContract( codec ContractCodec, address common.Address, ethClient Client, logBroadcaster LogBroadcaster, ) ConnectedContract
type ContractCodec ¶ added in v0.8.8
type ContractCodec interface { ABI() *abi.ABI GetMethodID(method string) ([]byte, error) EncodeMessageCall(method string, args ...interface{}) ([]byte, error) UnpackLog(out interface{}, event string, log types.Log) error }
func GetContractCodec ¶ added in v0.8.8
func GetContractCodec(name string) (ContractCodec, error)
GetContract loads the contract JSON file from ../../evm-contracts/abi/v0.4 and parses the ABI JSON contents into an abi.ABI object
NB: These contracts can be built by running
yarn setup:contracts
in the base project directory.
func GetV6ContractCodec ¶ added in v0.8.8
func GetV6ContractCodec(name string) (ContractCodec, error)
GetV6Contract loads the contract JSON file from ../../evm-contracts/abi/v0.6 and parses the ABI JSON contents into an abi.ABI object
NB: These contracts can be built by running
yarn setup:contracts
in the base project directory.
type GethClient ¶ added in v0.8.8
type GethClient interface { ChainID(ctx context.Context) (*big.Int, error) SendTransaction(ctx context.Context, tx *types.Transaction) error PendingNonceAt(ctx context.Context, account common.Address) (uint64, error) TransactionReceipt(ctx context.Context, txHash common.Hash) (*types.Receipt, error) BlockByNumber(ctx context.Context, number *big.Int) (*types.Block, error) BalanceAt(ctx context.Context, account common.Address, blockNumber *big.Int) (*big.Int, error) FilterLogs(ctx context.Context, q ethereum.FilterQuery) ([]types.Log, error) SubscribeFilterLogs(ctx context.Context, q ethereum.FilterQuery, ch chan<- types.Log) (ethereum.Subscription, error) CallContract(ctx context.Context, msg ethereum.CallMsg, blockNumber *big.Int) ([]byte, error) CodeAt(ctx context.Context, account common.Address, blockNumber *big.Int) ([]byte, error) }
GethClient is an interface that represents go-ethereum's own ethclient https://github.com/ethereum/go-ethereum/blob/master/ethclient/ethclient.go
type GethRawLog ¶ added in v0.8.13
func (GethRawLog) RawLog ¶ added in v0.8.13
func (rl GethRawLog) RawLog() types.Log
type LogBroadcast ¶ added in v0.8.3
type LogBroadcast interface { Log() Log UpdateLog(Log) WasAlreadyConsumed() (bool, error) MarkConsumed() error }
The LogBroadcast type wraps an models.Log but provides additional functionality for determining whether or not the log has been consumed and for marking the log as consumed
type LogBroadcaster ¶
type LogBroadcaster interface { utils.DependentAwaiter Start() error Register(address common.Address, listener LogListener) (connected bool) Unregister(address common.Address, listener LogListener) Stop() }
The LogBroadcaster manages log subscription requests for the Chainlink node. Instead of creating a new websocket subscription for each request, it multiplexes all subscriptions to all of the relevant contracts over a single connection and forwards the logs to the relevant subscribers.
func NewLogBroadcaster ¶
func NewLogBroadcaster(ethClient Client, orm ormInterface, backfillDepth uint64) LogBroadcaster
NewLogBroadcaster creates a new instance of the logBroadcaster
type LogListener ¶
type LogListener interface { OnConnect() OnDisconnect() HandleLog(lb LogBroadcast, err error) JobID() *models.ID }
The LogListener responds to log events through HandleLog, and contains setup/tear-down callbacks in the On* functions.
func NewDecodingLogListener ¶
func NewDecodingLogListener(codec ContractCodec, nativeLogTypes map[common.Hash]Log, innerListener LogListener) LogListener
NewDecodingLogListener creates a new decodingLogListener
type MaybeHeader ¶ added in v0.8.13
type RPCClient ¶ added in v0.8.9
type RPCClient interface { Call(result interface{}, method string, args ...interface{}) error CallContext(ctx context.Context, result interface{}, method string, args ...interface{}) error BatchCallContext(ctx context.Context, b []rpc.BatchElem) error EthSubscribe(ctx context.Context, channel interface{}, args ...interface{}) (ethereum.Subscription, error) Close() }
RPCClient is an interface that represents go-ethereum's own rpc.Client. https://github.com/ethereum/go-ethereum/blob/master/rpc/client.go
type Subscription ¶ added in v0.8.8
type Subscription interface { Err() <-chan error Unsubscribe() }
This interface only exists so that we can generate a mock for it. It is identical to `ethereum.Subscription`.
type UnsubscribeFunc ¶
type UnsubscribeFunc func()