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()