proxy

package
v0.0.14 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 29, 2022 License: MIT Imports: 31 Imported by: 0

Documentation

Overview

Package proxy proxies rpc request to the best rpc node

Index

Constants

View Source
const (
	// ChainIDMethod is used to retrieve the current chain ID for transaction replay protection.
	ChainIDMethod = "eth_chainId"
	// BlockByHashMethod gets a block by hash.
	BlockByHashMethod = "eth_getBlockByHash"
	// BlockByNumberMethod gets a block by number.
	BlockByNumberMethod = "eth_getBlockByNumber"
	// BlockNumberMethod gets the latest block number.
	BlockNumberMethod = "eth_blockNumber"
	// TransactionByHashMethod returns the transaction with the given hash.
	TransactionByHashMethod = "eth_getTransactionByHash"
	// TransactionByBlockHashAndIndexMethod returns a transaction by its hash and index.
	TransactionByBlockHashAndIndexMethod = "eth_getTransactionByBlockHashAndIndex"
	// TransactionCountByHashMethod get sthe transaction count by hash.
	TransactionCountByHashMethod = "eth_getBlockTransactionCountByHash"
	// TransactionReceiptByHashMethod gets the transaction receipt from a hash.
	TransactionReceiptByHashMethod = "eth_getTransactionReceipt"
	// SyncProgressMethod gets the sync progress.
	SyncProgressMethod = "eth_syncing"
	// GetBalanceMethod gets the balance for a given address.
	GetBalanceMethod = "eth_getBalance"
	// StorageAtMethod returns the value of key in the contract storage of the given account.
	StorageAtMethod = "eth_getStorageAt"
	// GetCodeMethod returns the contract code of the given account.
	GetCodeMethod = "eth_getCode"
	// TransactionCountMethod returns the account nonce of the given account.
	TransactionCountMethod = "eth_getTransactionCount"
	// GetLogsMethod filters logs.
	GetLogsMethod = "eth_getLogs"
	// CallMethod calls a contract.
	CallMethod = "eth_call"
	// GasPriceMethod gets the gas price.
	GasPriceMethod = "eth_gasPrice"
	// MaxPriorityMethod gets the max priority fee.
	MaxPriorityMethod = "eth_maxPriorityFeePerGas"
	// FeeHistoryMethod gets the fee history.
	FeeHistoryMethod = "eth_feeHistory"
	// EstimateGasMethod tries to estimate the gas needed to execute a specific transaction.
	EstimateGasMethod = "eth_estimateGas"
	// PendingTransactionCountMethod gets the pending transaction count.
	PendingTransactionCountMethod = "eth_getBlockTransactionCountByNumber"
	// SendRawTransactionMethod sends a raw tx.
	SendRawTransactionMethod = "eth_sendRawTransaction"
)

Variables

This section is empty.

Functions

func StandardizeResponse added in v0.0.14

func StandardizeResponse(method string, body []byte) (out []byte, err error)

StandardizeResponse produces a standardized json response for hashing (strips extra fields) nolint: gocognit, cyclop

Types

type BodyReader

type BodyReader interface {
	io.ReadCloser
}

BodyReader is used for generating a mock of the request body that returns an error

type ErrorResponse added in v0.0.9

type ErrorResponse struct {
	Hashes map[string][]ErroredRPCResponse `json:"hashes"`
	Error  string                          `json:"error"`
	// ErroredURLS returned no response at all
	ErroredURLS []string `json:"errored_urls"`
}

ErrorResponse contains error response used for debugging.

type ErroredRPCResponse added in v0.0.9

type ErroredRPCResponse struct {
	Raw json.RawMessage `json:"json_response"`
	URL string          `json:"url"`
}

ErroredRPCResponse contains an errored rpc response thisis mostly used for debugging.

type Forwarder

type Forwarder struct {
	// contains filtered or unexported fields
}

Forwarder creates a request forwarder.

func (*Forwarder) Reset added in v0.0.9

func (f *Forwarder) Reset()

Reset resets the forwarder so it can be reused.

type JSONError added in v0.0.14

type JSONError struct {
	Code    int         `json:"code"`
	Message string      `json:"message"`
	Data    interface{} `json:"data,omitempty"`
}

JSONError is used to hold a json error.

type JSONRPCMessage added in v0.0.14

type JSONRPCMessage struct {
	Version string          `json:"jsonrpc,omitempty"`
	ID      json.RawMessage `json:"id,omitempty"`
	Method  string          `json:"method,omitempty"`
	Params  json.RawMessage `json:"params,omitempty"`
	Error   *JSONError      `json:"error,omitempty"`
	Result  json.RawMessage `json:"result,omitempty"`
}

JSONRPCMessage is A value of this type can a JSON-RPC request, notification, successful response or error response. Which one it is depends on the fields.

type RPCProxy

type RPCProxy struct {
	// contains filtered or unexported fields
}

RPCProxy proxies rpc request to the fastest endpoint. Requests fallback in cases where data is not available.

func NewProxy

func NewProxy(config config.Config, clientType omniHTTP.ClientType) *RPCProxy

NewProxy creates a new rpc proxy.

func (*RPCProxy) AcquireForwarder added in v0.0.9

func (r *RPCProxy) AcquireForwarder() *Forwarder

AcquireForwarder allocates a forwarder and allows it to be released when not in use this allows forwarder cycling reducing GC overhead.

func (*RPCProxy) Forward

func (r *RPCProxy) Forward(c *gin.Context, chainID uint32)

Forward forwards the rpc request to the servers and makes assertions around confirmation thresholds.

func (*RPCProxy) ReleaseForwarder added in v0.0.9

func (r *RPCProxy) ReleaseForwarder(f *Forwarder)

ReleaseForwarder releases a forwarder object for reuse.

func (*RPCProxy) Run

func (r *RPCProxy) Run(ctx context.Context)

Run runs the rpc server until context cancellation.

type RPCRequest

type RPCRequest struct {
	ID     json.RawMessage   `json:"id"`
	Method string            `json:"method"`
	Params []json.RawMessage `json:"params"`
}

RPCRequest is a raw rpc request format.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL