Documentation
¶
Overview ¶
Package proxy provides the main proxy server.
Index ¶
- Constants
- Variables
- func EnsureReplacementUUID(args *rpctypes.EthSendBundleArgs) (*rpctypes.EthSendBundleArgs, error)
- func HTTPClientLocalhost(maxOpenConnections int) *http.Client
- func HTTPClientWithMaxConnections(maxOpenConnections int) *http.Client
- func IsVersionValid(version *string) bool
- func NewFastHTTPClient(certPEM []byte, maxOpenConnections int) (*fasthttp.Client, error)
- func OrderflowProxyURLFromIPOrDNSName(ipOrDNSName string) string
- func RPCClientWithCertAndSigner(endpoint string, certPEM []byte, signer *signature.Signer, ...) (rpcclient.RPCClient, error)
- func SerializeParsedRequestForSharing(req *ParsedRequest, signer *signature.Signer) error
- func ValidateEthCancelBundle(args *rpctypes.EthCancelBundleArgs, publicEndpoint bool) error
- func ValidateEthSendBundle(args *rpctypes.EthSendBundleArgs, publicEndpoint bool) error
- func ValidateMevSendBundle(args *rpctypes.MevSendBundleArgs, publicEndpoint bool) error
- type ArchiveEvent
- type ArchiveEventEthCancelBundle
- type ArchiveEventEthSendBundle
- type ArchiveEventMetadata
- type ArchiveEventMevSendBundle
- type ArchiveQueue
- type BlockNumberSource
- type BuilderConfigHub
- type ConfighubBuilder
- type ConfighubInstanceData
- type ConfighubOrderflowProxyCredentials
- type FlashbotsNewOrderEventsArgs
- type LocalBuilderSender
- type ParsedRequest
- type ReceiverProxy
- func (prx *ReceiverProxy) BidSubsidiseBlock(ctx context.Context, bidSubsidiseBlock rpctypes.BidSubsisideBlockArgs, ...) error
- func (prx *ReceiverProxy) BidSubsidiseBlockSystem(ctx context.Context, bidSubsidiseBlock rpctypes.BidSubsisideBlockArgs) error
- func (prx *ReceiverProxy) BidSubsidiseBlockUser(ctx context.Context, bidSubsidiseBlock rpctypes.BidSubsisideBlockArgs) error
- func (prx *ReceiverProxy) EthCancelBundle(ctx context.Context, ethCancelBundle rpctypes.EthCancelBundleArgs, ...) error
- func (prx *ReceiverProxy) EthCancelBundleSystem(ctx context.Context, ethCancelBundle rpctypes.EthCancelBundleArgs) error
- func (prx *ReceiverProxy) EthCancelBundleUser(ctx context.Context, ethCancelBundle rpctypes.EthCancelBundleArgs) error
- func (prx *ReceiverProxy) EthSendBundle(ctx context.Context, ethSendBundle rpctypes.EthSendBundleArgs, ...) error
- func (prx *ReceiverProxy) EthSendBundleSystem(ctx context.Context, ethSendBundle rpctypes.EthSendBundleArgs) error
- func (prx *ReceiverProxy) EthSendBundleUser(ctx context.Context, ethSendBundle rpctypes.EthSendBundleArgs) error
- func (prx *ReceiverProxy) EthSendRawTransaction(ctx context.Context, ethSendRawTransaction rpctypes.EthSendRawTransactionArgs, ...) error
- func (prx *ReceiverProxy) EthSendRawTransactionSystem(ctx context.Context, ethSendRawTransaction rpctypes.EthSendRawTransactionArgs) error
- func (prx *ReceiverProxy) EthSendRawTransactionUser(ctx context.Context, ethSendRawTransaction rpctypes.EthSendRawTransactionArgs) error
- func (prx *ReceiverProxy) FlushArchiveQueue()
- func (prx *ReceiverProxy) HandleParsedRequest(ctx context.Context, parsedRequest ParsedRequest) error
- func (prx *ReceiverProxy) MevSendBundle(ctx context.Context, mevSendBundle rpctypes.MevSendBundleArgs, ...) error
- func (prx *ReceiverProxy) MevSendBundleSystem(ctx context.Context, mevSendBundle rpctypes.MevSendBundleArgs) error
- func (prx *ReceiverProxy) MevSendBundleUser(ctx context.Context, mevSendBundle rpctypes.MevSendBundleArgs) error
- func (prx *ReceiverProxy) RegisterSecrets(ctx context.Context) error
- func (prx *ReceiverProxy) RequestNewPeers() error
- func (prx *ReceiverProxy) Stop()
- func (prx *ReceiverProxy) SystemJSONRPCHandler(maxRequestBodySizeBytes int64) (*rpcserver.JSONRPCHandler, error)
- func (prx *ReceiverProxy) UserJSONRPCHandler(maxRequestBodySizeBytes int64) (*rpcserver.JSONRPCHandler, error)
- func (prx *ReceiverProxy) ValidateSigner(ctx context.Context, req *ParsedRequest, systemEndpoint bool) error
- type ReceiverProxyConfig
- type ReceiverProxyConstantConfig
- type ReceiverProxyServers
- type SenderProxy
- func (prx *SenderProxy) BidSubsidiseBlock(ctx context.Context, bidSubsidiseBlock rpctypes.BidSubsisideBlockArgs) error
- func (prx *SenderProxy) EthCancelBundle(ctx context.Context, ethCancelBundle rpctypes.EthCancelBundleArgs) error
- func (prx *SenderProxy) EthSendBundle(ctx context.Context, ethSendBundle rpctypes.EthSendBundleArgs) error
- func (prx *SenderProxy) EthSendRawTransaction(ctx context.Context, ethSendRawTransaction rpctypes.EthSendRawTransactionArgs) error
- func (prx *SenderProxy) HandleParsedRequest(ctx context.Context, parsedRequest ParsedRequest) error
- func (prx *SenderProxy) MevSendBundle(ctx context.Context, mevSendBundle rpctypes.MevSendBundleArgs) error
- func (prx *SenderProxy) Stop()
- type SenderProxyConfig
- type SenderProxyConstantConfig
- type SenderProxyServers
- type ShareQueue
Constants ¶
View Source
const ( FlashbotsPeerName = "flashbots" EthSendBundleMethod = "eth_sendBundle" MevSendBundleMethod = "mev_sendBundle" EthCancelBundleMethod = "eth_cancelBundle" EthSendRawTransactionMethod = "eth_sendRawTransaction" BidSubsidiseBlockMethod = "bid_subsidiseBlock" )
View Source
const DefaultLocalhostMaxIdleConn = 1000
View Source
const DefaultMaxRequestBodySizeBytes = int64(30 * 1024 * 1024) // 30 MB
View Source
const NewOrderEventsMethod = "flashbots_newOrderEvents"
Variables ¶
View Source
var ( // ArchiveBatchSize is a maximum size of the batch to send to the archive ArchiveBatchSize = 100 // ArchiveBatchSizeFlushTimeout is a timeout to force flush the batch to the archive ArchiveBatchSizeFlushTimeout = time.Second * 6 ArchiveRequestTimeout = time.Second * 15 ArchiveRetryMaxTime = time.Second * 120 ArchiveWorkerQueueSize = 20000 )
View Source
var ( HTTPDefaultReadTimeout = time.Duration(cli.GetEnvInt("HTTP_READ_TIMEOUT_SEC", 60)) * time.Second HTTPDefaultWriteTimeout = time.Duration(cli.GetEnvInt("HTTP_WRITE_TIMEOUT_SEC", 30)) * time.Second HTTPDefaultIdleTimeout = time.Duration(cli.GetEnvInt("HTTP_IDLE_TIMEOUT_SEC", 3600)) * time.Second HTTP2DefaultMaxUploadPerConnection = int32(cli.GetEnvInt("HTTP2_MAX_UPLOAD_PER_CONN", 32<<20)) // 32MiB HTTP2DefaultMaxUploadPerStream = int32(cli.GetEnvInt("HTTP2_MAX_UPLOAD_PER_STREAM", 8<<20)) // 8MiB HTTP2DefaultMaxConcurrentStreams = uint32(cli.GetEnvInt("HTTP2_MAX_CONCURRENT_STREAMS", 4096)) )
View Source
var ( DefaultOrderflowProxyPublicPort = "5544" DefaultHTTPCLientWriteBuffer = cli.GetEnvInt("HTTP_CLIENT_WRITE_BUFFER", 64<<10) // 64 KiB )
View Source
var (
ReceiverProxyWorkerQueueSize = 10000
)
View Source
var (
)Functions ¶
func EnsureReplacementUUID ¶ added in v0.3.1
func EnsureReplacementUUID(args *rpctypes.EthSendBundleArgs) (*rpctypes.EthSendBundleArgs, error)
EnsureReplacementUUID updates bundle with consistent replacement uuid value (falling back to `uuid` field if needed)
func HTTPClientLocalhost ¶ added in v0.4.0
func HTTPClientWithMaxConnections ¶ added in v0.2.2
func IsVersionValid ¶ added in v0.3.1
func NewFastHTTPClient ¶ added in v0.5.2
func OrderflowProxyURLFromIPOrDNSName ¶ added in v0.4.2
func SerializeParsedRequestForSharing ¶ added in v0.5.2
func SerializeParsedRequestForSharing(req *ParsedRequest, signer *signature.Signer) error
func ValidateEthCancelBundle ¶
func ValidateEthCancelBundle(args *rpctypes.EthCancelBundleArgs, publicEndpoint bool) error
func ValidateEthSendBundle ¶
func ValidateEthSendBundle(args *rpctypes.EthSendBundleArgs, publicEndpoint bool) error
func ValidateMevSendBundle ¶
func ValidateMevSendBundle(args *rpctypes.MevSendBundleArgs, publicEndpoint bool) error
Types ¶
type ArchiveEvent ¶
type ArchiveEvent struct { EthSendBundle *ArchiveEventEthSendBundle `json:"eth_sendBundle,omitempty"` MevSendBundle *ArchiveEventMevSendBundle `json:"mev_sendBundle,omitempty"` EthCancelBundle *ArchiveEventEthCancelBundle `json:"eth_cancelBundle,omitempty"` }
type ArchiveEventEthCancelBundle ¶
type ArchiveEventEthCancelBundle struct { Params *rpctypes.EthCancelBundleArgs `json:"params"` Metadata *ArchiveEventMetadata `json:"metadata"` }
type ArchiveEventEthSendBundle ¶
type ArchiveEventEthSendBundle struct { Params *rpctypes.EthSendBundleArgs `json:"params"` Metadata *ArchiveEventMetadata `json:"metadata"` }
type ArchiveEventMetadata ¶
type ArchiveEventMetadata struct { // ReceivedAt is a unix millisecond timestamp ReceivedAt int64 `json:"receivedAt"` }
type ArchiveEventMevSendBundle ¶
type ArchiveEventMevSendBundle struct { Params *rpctypes.MevSendBundleArgs `json:"params"` Metadata *ArchiveEventMetadata `json:"metadata"` }
type ArchiveQueue ¶
type ArchiveQueue struct {
// contains filtered or unexported fields
}
func (*ArchiveQueue) Run ¶
func (aq *ArchiveQueue) Run()
type BlockNumberSource ¶
type BlockNumberSource struct {
// contains filtered or unexported fields
}
func NewBlockNumberSource ¶
func NewBlockNumberSource(endpoint string) *BlockNumberSource
func (*BlockNumberSource) BlockNumber ¶
func (bs *BlockNumberSource) BlockNumber() (uint64, error)
func (*BlockNumberSource) UpdateCachedBlockNumber ¶
func (bs *BlockNumberSource) UpdateCachedBlockNumber() error
type BuilderConfigHub ¶
type BuilderConfigHub struct {
// contains filtered or unexported fields
}
func NewBuilderConfigHub ¶
func NewBuilderConfigHub(log *slog.Logger, endpoint string) *BuilderConfigHub
func (*BuilderConfigHub) Builders ¶
func (b *BuilderConfigHub) Builders(internal bool) (result []ConfighubBuilder, err error)
func (*BuilderConfigHub) RegisterCredentials ¶
func (b *BuilderConfigHub) RegisterCredentials(ctx context.Context, info ConfighubOrderflowProxyCredentials) error
type ConfighubBuilder ¶
type ConfighubBuilder struct { Name string `json:"name"` IP string `json:"ip"` DNSName string `json:"dns_name"` OrderflowProxy ConfighubOrderflowProxyCredentials `json:"orderflow_proxy"` Instance ConfighubInstanceData `json:"instance"` }
func (*ConfighubBuilder) SystemAPIAddress ¶ added in v0.4.2
func (b *ConfighubBuilder) SystemAPIAddress() string
func (*ConfighubBuilder) TLSCert ¶ added in v0.4.2
func (b *ConfighubBuilder) TLSCert() string
type ConfighubInstanceData ¶ added in v0.4.2
type ConfighubInstanceData struct {
TLSCert string `json:"tls_cert"`
}
type FlashbotsNewOrderEventsArgs ¶
type FlashbotsNewOrderEventsArgs struct {
OrderEvents []ArchiveEvent `json:"orderEvents"`
}
type LocalBuilderSender ¶ added in v0.5.2
type LocalBuilderSender struct {
// contains filtered or unexported fields
}
func NewLocalBuilderSender ¶ added in v0.5.2
func (*LocalBuilderSender) SendRequest ¶ added in v0.5.2
func (s *LocalBuilderSender) SendRequest(req *ParsedRequest) error
type ParsedRequest ¶
type ParsedRequest struct {
// contains filtered or unexported fields
}
type ReceiverProxy ¶
type ReceiverProxy struct { ReceiverProxyConstantConfig ConfigHub *BuilderConfigHub OrderflowSigner *signature.Signer UserHandler http.Handler SystemHandler http.Handler // contains filtered or unexported fields }
func NewReceiverProxy ¶
func NewReceiverProxy(config ReceiverProxyConfig) (*ReceiverProxy, error)
func (*ReceiverProxy) BidSubsidiseBlock ¶
func (prx *ReceiverProxy) BidSubsidiseBlock(ctx context.Context, bidSubsidiseBlock rpctypes.BidSubsisideBlockArgs, systemEndpoint bool) error
func (*ReceiverProxy) BidSubsidiseBlockSystem ¶ added in v0.3.1
func (prx *ReceiverProxy) BidSubsidiseBlockSystem(ctx context.Context, bidSubsidiseBlock rpctypes.BidSubsisideBlockArgs) error
func (*ReceiverProxy) BidSubsidiseBlockUser ¶ added in v0.3.1
func (prx *ReceiverProxy) BidSubsidiseBlockUser(ctx context.Context, bidSubsidiseBlock rpctypes.BidSubsisideBlockArgs) error
func (*ReceiverProxy) EthCancelBundle ¶
func (prx *ReceiverProxy) EthCancelBundle(ctx context.Context, ethCancelBundle rpctypes.EthCancelBundleArgs, systemEndpoint bool) error
func (*ReceiverProxy) EthCancelBundleSystem ¶ added in v0.3.1
func (prx *ReceiverProxy) EthCancelBundleSystem(ctx context.Context, ethCancelBundle rpctypes.EthCancelBundleArgs) error
func (*ReceiverProxy) EthCancelBundleUser ¶ added in v0.3.1
func (prx *ReceiverProxy) EthCancelBundleUser(ctx context.Context, ethCancelBundle rpctypes.EthCancelBundleArgs) error
func (*ReceiverProxy) EthSendBundle ¶
func (prx *ReceiverProxy) EthSendBundle(ctx context.Context, ethSendBundle rpctypes.EthSendBundleArgs, systemEndpoint bool) error
func (*ReceiverProxy) EthSendBundleSystem ¶ added in v0.3.1
func (prx *ReceiverProxy) EthSendBundleSystem(ctx context.Context, ethSendBundle rpctypes.EthSendBundleArgs) error
func (*ReceiverProxy) EthSendBundleUser ¶ added in v0.3.1
func (prx *ReceiverProxy) EthSendBundleUser(ctx context.Context, ethSendBundle rpctypes.EthSendBundleArgs) error
func (*ReceiverProxy) EthSendRawTransaction ¶
func (prx *ReceiverProxy) EthSendRawTransaction(ctx context.Context, ethSendRawTransaction rpctypes.EthSendRawTransactionArgs, systemEndpoint bool) error
func (*ReceiverProxy) EthSendRawTransactionSystem ¶ added in v0.3.1
func (prx *ReceiverProxy) EthSendRawTransactionSystem(ctx context.Context, ethSendRawTransaction rpctypes.EthSendRawTransactionArgs) error
func (*ReceiverProxy) EthSendRawTransactionUser ¶ added in v0.3.1
func (prx *ReceiverProxy) EthSendRawTransactionUser(ctx context.Context, ethSendRawTransaction rpctypes.EthSendRawTransactionArgs) error
func (*ReceiverProxy) FlushArchiveQueue ¶
func (prx *ReceiverProxy) FlushArchiveQueue()
FlushArchiveQueue forces the archive queue to flush
func (*ReceiverProxy) HandleParsedRequest ¶
func (prx *ReceiverProxy) HandleParsedRequest(ctx context.Context, parsedRequest ParsedRequest) error
func (*ReceiverProxy) MevSendBundle ¶
func (prx *ReceiverProxy) MevSendBundle(ctx context.Context, mevSendBundle rpctypes.MevSendBundleArgs, systemEndpoint bool) error
func (*ReceiverProxy) MevSendBundleSystem ¶ added in v0.3.1
func (prx *ReceiverProxy) MevSendBundleSystem(ctx context.Context, mevSendBundle rpctypes.MevSendBundleArgs) error
func (*ReceiverProxy) MevSendBundleUser ¶ added in v0.3.1
func (prx *ReceiverProxy) MevSendBundleUser(ctx context.Context, mevSendBundle rpctypes.MevSendBundleArgs) error
func (*ReceiverProxy) RegisterSecrets ¶
func (prx *ReceiverProxy) RegisterSecrets(ctx context.Context) error
func (*ReceiverProxy) RequestNewPeers ¶
func (prx *ReceiverProxy) RequestNewPeers() error
RequestNewPeers updates currently available peers from the builder config hub
func (*ReceiverProxy) Stop ¶
func (prx *ReceiverProxy) Stop()
func (*ReceiverProxy) SystemJSONRPCHandler ¶ added in v0.3.1
func (prx *ReceiverProxy) SystemJSONRPCHandler(maxRequestBodySizeBytes int64) (*rpcserver.JSONRPCHandler, error)
func (*ReceiverProxy) UserJSONRPCHandler ¶ added in v0.3.1
func (prx *ReceiverProxy) UserJSONRPCHandler(maxRequestBodySizeBytes int64) (*rpcserver.JSONRPCHandler, error)
func (*ReceiverProxy) ValidateSigner ¶
func (prx *ReceiverProxy) ValidateSigner(ctx context.Context, req *ParsedRequest, systemEndpoint bool) error
type ReceiverProxyConfig ¶
type ReceiverProxyConfig struct { ReceiverProxyConstantConfig BuilderConfigHubEndpoint string ArchiveEndpoint string ArchiveConnections int BuilderReadyEndpoint string // EthRPC should support eth_blockNumber API EthRPC string MaxRequestBodySizeBytes int64 ConnectionsPerPeer int MaxUserRPS int ArchiveWorkerCount int }
type ReceiverProxyServers ¶
type ReceiverProxyServers struct {
// contains filtered or unexported fields
}
func StartReceiverServers ¶
func StartReceiverServers(proxy *ReceiverProxy, userListenAddress, systemListenAddress string) (*ReceiverProxyServers, error)
func (*ReceiverProxyServers) Stop ¶
func (s *ReceiverProxyServers) Stop()
type SenderProxy ¶
type SenderProxy struct { SenderProxyConstantConfig ConfigHub *BuilderConfigHub Handler http.Handler PeerUpdateForce chan struct{} // contains filtered or unexported fields }
func NewSenderProxy ¶
func NewSenderProxy(config SenderProxyConfig) (*SenderProxy, error)
func (*SenderProxy) BidSubsidiseBlock ¶
func (prx *SenderProxy) BidSubsidiseBlock(ctx context.Context, bidSubsidiseBlock rpctypes.BidSubsisideBlockArgs) error
func (*SenderProxy) EthCancelBundle ¶
func (prx *SenderProxy) EthCancelBundle(ctx context.Context, ethCancelBundle rpctypes.EthCancelBundleArgs) error
func (*SenderProxy) EthSendBundle ¶
func (prx *SenderProxy) EthSendBundle(ctx context.Context, ethSendBundle rpctypes.EthSendBundleArgs) error
func (*SenderProxy) EthSendRawTransaction ¶
func (prx *SenderProxy) EthSendRawTransaction(ctx context.Context, ethSendRawTransaction rpctypes.EthSendRawTransactionArgs) error
func (*SenderProxy) HandleParsedRequest ¶
func (prx *SenderProxy) HandleParsedRequest(ctx context.Context, parsedRequest ParsedRequest) error
func (*SenderProxy) MevSendBundle ¶
func (prx *SenderProxy) MevSendBundle(ctx context.Context, mevSendBundle rpctypes.MevSendBundleArgs) error
func (*SenderProxy) Stop ¶
func (prx *SenderProxy) Stop()
type SenderProxyConfig ¶
type SenderProxyConfig struct { SenderProxyConstantConfig BuilderConfigHubEndpoint string MaxRequestBodySizeBytes int64 ConnectionsPerPeer int }
type SenderProxyServers ¶
type SenderProxyServers struct {
// contains filtered or unexported fields
}
func StartSenderServers ¶
func StartSenderServers(proxy *SenderProxy, listenAddress string) (*SenderProxyServers, error)
func (*SenderProxyServers) Stop ¶
func (s *SenderProxyServers) Stop()
type ShareQueue ¶
type ShareQueue struct {
// contains filtered or unexported fields
}
func (*ShareQueue) Run ¶
func (sq *ShareQueue) Run()
Click to show internal directories.
Click to hide internal directories.