Documentation
¶
Index ¶
- Constants
- type InternalClient
- type OpClient
- func (c *OpClient) GetBlockReceipts(ctx context.Context, blockHash common.Hash, txs []evmClient.RPCTransaction, ...) ([]*evmClient.RosettaTxReceipt, error)
- func (c *OpClient) GetNativeTransferGasLimit(ctx context.Context, toAddress string, fromAddress string, value *big.Int) (uint64, error)
- func (c *OpClient) GetTransactionReceipt(ctx context.Context, tx *evmClient.LoadedTransaction) (*evmClient.RosettaTxReceipt, error)
- func (c *OpClient) ParseOps(tx *evmClient.LoadedTransaction) ([]*RosettaTypes.Operation, error)
Constants ¶
const (
// L1ToL2DepositType is the type of an L1 to L2 deposit.
L1ToL2DepositType = 126
)
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type InternalClient ¶
type InternalClient interface {
// CallContext performs a JSON-RPC call with the given arguments. If the context is
// canceled before the call has successfully returned, CallContext returns immediately.
//
// The result must be a pointer so that package json can unmarshal into it. You
// can also pass nil, in which case the result is ignored.
CallContext(ctx context.Context, result interface{}, method string, args ...interface{}) error
// BatchCallContext sends all given requests as a single batch and waits for the server
// to return a response for all of them. The wait duration is bounded by the
// context's deadline.
//
// In contrast to CallContext, BatchCallContext only returns errors that have occurred
// while sending the request. Any error specific to a request is reported through the
// Error field of the corresponding BatchElem.
//
// Note that batch calls may not be executed atomically on the server side.
BatchCallContext(ctx context.Context, b []EthRpc.BatchElem) error
// EstimateGas tries to estimate the gas needed to execute a specific transaction based on
// the current pending state of the backend blockchain. There is no guarantee that this is
// the true gas limit requirement as other transactions may be added or removed by miners,
// but it should provide a basis for setting a reasonable default.
EstimateGas(ctx context.Context, msg Eth.CallMsg) (uint64, error)
// Balance returns the balance of an account at a given block.
Balance(ctx context.Context, account *RosettaTypes.AccountIdentifier, block *RosettaTypes.PartialBlockIdentifier, currencies []*RosettaTypes.Currency) (*RosettaTypes.AccountBalanceResponse, error)
// BlockAuthor returns the author of a block.
BlockAuthor(ctx context.Context, blockIndex int64) (string, error)
// BlockRewardTransaction returns the transaction that rewards the miner of a block.
BlockRewardTransaction(blockIdentifier *RosettaTypes.BlockIdentifier, miner string, uncles []*EthTypes.Header) *RosettaTypes.Transaction
// GetBlockReceipts returns [evmClient.RosettaTxReceipt] for a given blockhash.
GetBlockReceipts(ctx context.Context, blockHash EthCommon.Hash, txs []evmClient.RPCTransaction, baseFee *big.Int) ([]*evmClient.RosettaTxReceipt, error)
// GetClient returns the internal [evmClient.SDKClient].
GetClient() *evmClient.SDKClient
// GetContractCallGasLimit returns the gas limit for a contract call.
GetContractCallGasLimit(ctx context.Context, toAddress string, fromAddress string, data []byte) (uint64, error)
// GetContractCurrency returns the currency for a contract.
GetContractCurrency(addr EthCommon.Address, erc20 bool) (*evmClient.ContractCurrency, error)
// GetErc20TransferGasLimit returns the gas limit for an ERC20 transfer.
GetErc20TransferGasLimit(ctx context.Context, toAddress string, fromAddress string, value *big.Int, currency *RosettaTypes.Currency) (uint64, error)
// GetGasPrice returns the gas price for a transaction.
GetGasPrice(ctx context.Context, input evmClient.Options) (*big.Int, error)
// GetLoadedTransaction returns a [evmClient.LoadedTransaction] for a given transaction hash.
GetLoadedTransaction(ctx context.Context, request *RosettaTypes.BlockTransactionRequest) (*evmClient.LoadedTransaction, error)
// GetNativeTransferGasLimit returns the gas limit for a native transfer.
GetNativeTransferGasLimit(ctx context.Context, toAddress string, fromAddress string, value *big.Int) (uint64, error)
// GetNonce returns the nonce for an account.
GetNonce(ctx context.Context, input evmClient.Options) (uint64, error)
// GetRosettaConfig returns the [configuration.RosettaConfig] for the client.
GetRosettaConfig() configuration.RosettaConfig
// GetTransactionReceipt returns the [evmClient.RosettaTxReceipt] for a given transaction hash.
GetTransactionReceipt(ctx context.Context, tx *evmClient.LoadedTransaction) (*evmClient.RosettaTxReceipt, error)
// GetUncles returns the uncles for a given block.
GetUncles(ctx context.Context, head *EthTypes.Header, body *evmClient.RPCBlock) ([]*EthTypes.Header, error)
// ParseOps returns the [RosettaTypes.Operation] for a given [evmClient.LoadedTransaction].
ParseOps(tx *evmClient.LoadedTransaction) ([]*RosettaTypes.Operation, error)
// PopulateCrossChainTransactions returns the [RosettaTypes.Transaction] for a given [EthTypes.Block] and [evmClient.LoadedTransaction].
PopulateCrossChainTransactions(*EthTypes.Block, []*evmClient.LoadedTransaction) ([]*RosettaTypes.Transaction, error)
// Status returns the current client status.
Status(ctx context.Context) (*RosettaTypes.BlockIdentifier, int64, *RosettaTypes.SyncStatus, []*RosettaTypes.Peer, error)
// Submit submits a signed transaction.
Submit(ctx context.Context, signedTx *EthTypes.Transaction) error
// TraceBlockByHash returns the [evmClient.FlatCall] for a given block hash.
TraceBlockByHash(ctx context.Context, blockHash EthCommon.Hash, txs []evmClient.RPCTransaction) (map[string][]*evmClient.FlatCall, error)
// TraceReplayBlockTransactions returns the [evmClient.FlatCall] for a given block hash.
TraceReplayBlockTransactions(ctx context.Context, hsh string) (map[string][]*evmClient.FlatCall, error)
// TraceReplayTransaction returns the [evmClient.FlatCall] for a given transaction hash.
TraceReplayTransaction(ctx context.Context, hsh string) (json.RawMessage, []*evmClient.FlatCall, error)
// TraceTransaction constructs trace enriched [emvClient.FlatCall]s for a given [EthCommon.Hash].
TraceTransaction(ctx context.Context, hash EthCommon.Hash) (json.RawMessage, []*evmClient.FlatCall, error)
}
InternalClient contains the methods that must be implemented by the parameter to NewOpClient.
type OpClient ¶
type OpClient struct {
InternalClient
}
OpClient wraps the evmClient.SDKClient to add Optimism-specific functionality.
func NewOpClient ¶
func NewOpClient(cfg *configuration.Configuration) (*OpClient, error)
NewOpClient creates a client that can interact with the Optimism network.
func (*OpClient) GetBlockReceipts ¶
func (c *OpClient) GetBlockReceipts( ctx context.Context, blockHash common.Hash, txs []evmClient.RPCTransaction, baseFee *big.Int, ) ([]*evmClient.RosettaTxReceipt, error)
GetBlockReceipts returns evmClient.RosettaTxReceipt for a given blockhash. Calls to eth_getTransactionReceipt are batched to reduce the number of RPC calls with a max batch size of 25.
func (*OpClient) GetNativeTransferGasLimit ¶
func (c *OpClient) GetNativeTransferGasLimit(ctx context.Context, toAddress string, fromAddress string, value *big.Int) (uint64, error)
GetNativeTransferGasLimit is Ethereum's custom implementation of estimating gas.
func (*OpClient) GetTransactionReceipt ¶
func (c *OpClient) GetTransactionReceipt( ctx context.Context, tx *evmClient.LoadedTransaction, ) (*evmClient.RosettaTxReceipt, error)
GetTransactionReceipt returns the receipt for an evmClient.LoadedTransaction.
func (*OpClient) ParseOps ¶
func (c *OpClient) ParseOps( tx *evmClient.LoadedTransaction, ) ([]*RosettaTypes.Operation, error)
ParseOps must be implemented by downstream clients from the evmClient.SDKClient. This method is called by the evmClient.SDKClient when populating Block Transactions. See evmClient.SDKClient.PopulateTransactions for usage.