common

package
v5.6.2 Latest Latest
Warning

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

Go to latest
Published: Dec 11, 2025 License: Apache-2.0 Imports: 32 Imported by: 0

Documentation

Index

Constants

View Source
const (
	RollingLogLevelFlag        = "rolling-log-level"
	RollingLogMaxSizeFlag      = "rolling-log-max-size"
	RollingLogMaxAgeFlag       = "rolling-log-max-age"
	RollingLogBackupsFlag      = "rolling-log-backups"
	RollingLogFileLocationFlag = "rolling-log-file-location"
	RollingLogFormat           = "rolling-log-format"
)
View Source
const (
	ProcessStartLogText = "Process Started"
	// cors related flags
	CorsHeadersFlag                 = "cors-headers"           // comma separated list of headers, or * for all, default simple cors specification headers
	CorsCredentialsFlag             = "cors-credentials"       // comma separated list of headers, or * for all, default simple cors specification headers
	CorsOriginFlag                  = "cors-origin"            // comma separated list of origins, or * for all, default enabled completely
	CorsMethodsFlag                 = "cors-methods"           // comma separated list of methods, default "GET,POST,PUT,DELETE,OPTIONS"
	CDNCacheDurationFlag            = "cdn-cache-duration"     // how long to cache the preflight response default 24 hours (in seconds) "86400"
	RelaysHealthEnableFlag          = "relays-health-enable"   // enable relays health check, default true
	RelayHealthIntervalFlag         = "relays-health-interval" // interval between each relay health check, default 5m
	SharedStateFlag                 = "shared-state"
	DisableConflictTransactionsFlag = "disable-conflict-transactions" // disable conflict transactions, this will hard the network's data reliability and therefore will harm the service.
	// Disable relay retries when we get node errors.
	// This feature is suppose to help with successful relays in some chains that return node errors on rare race conditions on the serviced chains.
	SetRelayCountOnNodeErrorFlag = "set-retry-count-on-node-error"
	UseStaticSpecFlag            = "use-static-spec" // allows the user to manually load a spec providing a path, this is useful to test spec changes before they hit the blockchain
	GitHubTokenFlag              = "github-token"    // GitHub personal access token for accessing private repositories and higher API rate limits
	EpochDurationFlag            = "epoch-duration"  // duration of each epoch for time-based epoch system (standalone mode)
	DefaultEpochDuration         = 30 * time.Minute  // default epoch duration for regular mode (if using time-based epochs)
	StandaloneEpochDuration      = 15 * time.Minute  // default epoch duration for standalone/static provider mode

	// optimizer flags
	SetProviderOptimizerBestTierPickChance       = "set-provider-optimizer-best-tier-pick-chance"
	SetProviderOptimizerWorstTierPickChance      = "set-provider-optimizer-worst-tier-pick-chance"
	SetProviderOptimizerNumberOfTiersToCreate    = "set-provider-optimizer-number-of-tiers-to-create"
	SetProviderOptimizerNumberOfProvidersPerTier = "set-provider-optimizer-number-of-providers-per-tier"
	// If we have 4 providers for a specific chain, we will put 1 provider in each tier, so we wont have all 4 in tier 1 (which makes no sense.)
	SetProviderOptimizerAutoAdjustTiers        = "enable-provider-optimizer-auto-adjustment-of-tiers"     // will auto adjust the tiers based on the number of providers in pairing
	SetProviderOptimizerQosSelectionInTierFlag = "set-provider-optimizer-qos-based-selection-within-tier" // enables QoS-based selection within tiers instead of stake-based selection

	// optimizer qos server flags
	OptimizerQosServerAddressFlag          = "optimizer-qos-server-address"    // address of the optimizer qos server to send the qos reports
	OptimizerQosListenFlag                 = "optimizer-qos-listen"            // enable listening for qos reports on metrics endpoint
	OptimizerQosServerPushIntervalFlag     = "optimizer-qos-push-interval"     // interval to push the qos reports to the optimizer qos server
	OptimizerQosServerSamplingIntervalFlag = "optimizer-qos-sampling-interval" // interval to sample the qos reports
	// websocket flags
	RateLimitWebSocketFlag                       = "rate-limit-websocket-requests-per-connection"
	BanDurationForWebsocketRateLimitExceededFlag = "ban-duration-for-websocket-rate-limit-exceeded"
	LimitParallelWebsocketConnectionsPerIpFlag   = "limit-parallel-websocket-connections-per-ip"
	LimitWebsocketIdleTimeFlag                   = "limit-websocket-connection-idle-time"
	RateLimitRequestPerSecondFlag                = "rate-limit-requests-per-second"
	SkipPolicyVerificationFlag                   = "skip-policy-verification"
	SkipWebsocketVerificationFlag                = "skip-websocket-verification"
	// specification default flags
	PeriodicProbeProvidersFlagName         = "enable-periodic-probe-providers"
	PeriodicProbeProvidersIntervalFlagName = "periodic-probe-providers-interval"

	ShowProviderEndpointInMetricsFlagName = "show-provider-address-in-metrics"
	EnableMemoryLogsFlag                  = "enable-memory-logs"     // enable memory tracking logs
	MemoryGCThresholdGBFlagName           = "memory-gc-threshold-gb" // Memory GC threshold in GB (0 = disabled)
)
View Source
const (
	CONSISTENCY_SELECT_ALL_PROVIDERS = 1
	NO_STATE                         = 0
)
View Source
const (
	// CompressionThreshold - only compress payloads larger than this (1 MB)
	// Small payloads have compression overhead > bandwidth savings
	CompressionThreshold = 1024 * 1024 * 1 // 1 MB

	// CompressionLevel - balance between speed and compression ratio
	// BestSpeed = 1 (fastest), BestCompression = 9 (smallest)
	// DefaultCompression = 6 (good balance)
	CompressionLevel = gzip.BestSpeed

	// LavaCompressionHeader - custom header to indicate manual compression
	LavaCompressionHeader = "lava-compression"
	LavaCompressionGzip   = "gzip"

	// LavaCompressionSupportHeader - custom header consumer sends to indicate it supports compression
	// This is different from grpc-accept-encoding which is always sent by gRPC
	LavaCompressionSupportHeader = "lava-compression-support"
)
View Source
const (
	PlainTextConnection                = "allow-plaintext-connection"
	EndpointsConfigName                = "endpoints"
	StaticProvidersConfigName          = "static-providers"
	BackupProvidersConfigName          = "backup-providers"
	SaveConfigFlagName                 = "save-conf"
	GeolocationFlag                    = "geolocation"
	TestModeFlagName                   = "test-mode"
	MaximumConcurrentProvidersFlagName = "concurrent-providers"
	StatusCodeMetadataKey              = "status-code"
	VersionMetadataKey                 = "lavap-version"
	LavaChainIdMetadataKey             = "lavap-chain-id"
	TimeOutForFetchingLavaBlocksFlag   = "timeout-for-fetching-lava-blocks"
)
View Source
const (
	URL_QUERY_PARAMETERS_SEPARATOR_FROM_PATH        = "?"
	URL_QUERY_PARAMETERS_SEPARATOR_OTHER_PARAMETERS = "&"
	IP_FORWARDING_HEADER_NAME                       = "X-Forwarded-For"
	PROVIDER_ADDRESS_HEADER_NAME                    = "Lava-Provider-Address"
	RETRY_COUNT_HEADER_NAME                         = "Lava-Retries"
	PROVIDER_LATEST_BLOCK_HEADER_NAME               = "Provider-Latest-Block"
	GUID_HEADER_NAME                                = "Lava-Guid"
	ERRORED_PROVIDERS_HEADER_NAME                   = "Lava-Errored-Providers"
	NODE_ERRORS_PROVIDERS_HEADER_NAME               = "Lava-Node-Errors-providers"
	REPORTED_PROVIDERS_HEADER_NAME                  = "Lava-Reported-Providers"
	USER_REQUEST_TYPE                               = "lava-user-request-type"
	STATEFUL_API_HEADER                             = "lava-stateful-api"
	STATEFUL_ALL_PROVIDERS_HEADER_NAME              = "lava-fast-tx-participants"
	REQUESTED_BLOCK_HEADER_NAME                     = "lava-parsed-requested-block"
	LAVA_IDENTIFIED_NODE_ERROR_HEADER               = "lava-identified-node-error"
	LAVAP_VERSION_HEADER_NAME                       = "Lavap-Version"
	LAVA_CONSUMER_PROCESS_GUID                      = "lava-consumer-process-guid"
	// these headers need to be lowercase
	BLOCK_PROVIDERS_ADDRESSES_HEADER_NAME = "lava-providers-block"
	RELAY_TIMEOUT_HEADER_NAME             = "lava-relay-timeout"
	EXTENSION_OVERRIDE_HEADER_NAME        = "lava-extension"
	FORCE_CACHE_REFRESH_HEADER_NAME       = "lava-force-cache-refresh"
	LAVA_DEBUG_RELAY                      = "lava-debug-relay"
	LAVA_LB_UNIQUE_ID_HEADER              = "lava-lb-unique-id"
	STICKINESS_HEADER_NAME                = "lava-stickiness"
	QUORUM_HEADER_RATE                    = "lava-quorum-rate"
	QUORUM_HEADER_MAX                     = "lava-quorum-max"
	QUORUM_HEADER_MIN                     = "lava-quorum-min"
	QUORUM_ALL_PROVIDERS_HEADER_NAME      = "lava-quorum-all-providers"
	// send http request to /lava/health to see if the process is up - (ret code 200)
	DEFAULT_HEALTH_PATH                                       = "/lava/health"
	MAXIMUM_ALLOWED_TIMEOUT_EXTEND_MULTIPLIER_BY_THE_CONSUMER = 4
)
View Source
const (
	// MaxIdleConns controls the maximum number of idle (keep-alive) connections across all hosts.
	// Setting this higher prevents constantly creating new TCP connections.
	// Go default: 100
	DefaultMaxIdleConns = 200

	// MaxIdleConnsPerHost controls the maximum idle (keep-alive) connections to keep per-host.
	// This is critical for blockchain node connections where we repeatedly connect to the same node.
	// Go default: 2 (way too low for high-concurrency!)
	DefaultMaxIdleConnsPerHost = 50

	// MaxConnsPerHost limits the total number of connections per host, including those in active use.
	// This prevents overwhelming a single blockchain node with too many connections.
	// Go default: 0 (unlimited - can cause node overload)
	DefaultMaxConnsPerHost = 100

	// IdleConnTimeout is the maximum amount of time an idle connection will remain idle before closing.
	// Keeps connections alive for reuse but eventually closes them to avoid resource leaks.
	// Go default: 90s
	DefaultIdleConnTimeout = 90 * time.Second

	// TLSHandshakeTimeout is the maximum amount of time waiting to perform a TLS handshake.
	// Go default: 10s
	DefaultTLSHandshakeTimeout = 10 * time.Second

	// ExpectContinueTimeout limits the time the client will wait between sending the request headers
	// and receiving the go-ahead to send the request body.
	// Go default: 1s
	DefaultExpectContinueTimeout = 1 * time.Second

	// ResponseHeaderTimeout is the amount of time to wait for a server's response headers.
	// This should be relatively high for blockchain nodes as they may be slow under load.
	// Go default: 0 (no timeout - can hang forever)
	DefaultResponseHeaderTimeout = 0

	// DialTimeout is the maximum amount of time a dial will wait for a connect to complete.
	// Go default: 30s
	DefaultDialTimeout = 10 * time.Second

	// KeepAlive specifies the interval between keep-alive probes for an active network connection.
	// Go default: 30s
	DefaultKeepAlive = 30 * time.Second

	// DefaultHTTPTimeout is the default timeout for the entire request/response cycle.
	// Set to 5 minutes to handle slow blockchain node operations like trace_block.
	// Go default: 0 (no timeout - requests can hang forever)
	DefaultHTTPTimeout = 5 * time.Minute
)

HTTP Connection Pool Configuration These values are optimized for high-concurrency scenarios where providers handle many simultaneous requests to blockchain nodes.

View Source
const (
	TimePerCU                           = uint64(100 * time.Millisecond)
	MinimumTimePerRelayDelay            = time.Second
	DataReliabilityTimeoutIncrease      = 5 * time.Second
	AverageWorldLatency                 = 300 * time.Millisecond
	CommunicateWithLocalLavaNodeTimeout = (3 * time.Second) + AverageWorldLatency
	DefaultTimeout                      = 30 * time.Second
	DefaultTimeoutLongIsh               = 1 * time.Minute
	DefaultTimeoutLong                  = 3 * time.Minute
	CacheTimeout                        = 50 * time.Millisecond
	// On subscriptions we must use context.Background(),
	// we cant have a context.WithTimeout() context, meaning we can hang for ever.
	// to avoid that we introduced a first reply timeout using a routine.
	// if the first reply doesn't return after the specified timeout a timeout error will occur
	SubscriptionFirstReplyTimeout = 10 * time.Second
)

Variables

View Source
var (
	ContextDeadlineExceededError                = sdkerrors.New("ContextDeadlineExceeded Error", 300, "context deadline exceeded")
	StatusCodeError504                          = sdkerrors.New("Disallowed StatusCode Error", 504, "Disallowed status code error (504)")
	StatusCodeError429                          = sdkerrors.New("Disallowed StatusCode Error", 429, "Disallowed status code error (429)")
	StatusCodeErrorStrict                       = sdkerrors.New("Disallowed StatusCode Error", 800, "Disallowed status code error (800)")
	APINotSupportedError                        = sdkerrors.New("APINotSupported Error", 900, "api not supported")
	SubscriptionNotFoundError                   = sdkerrors.New("SubscriptionNotFoundError Error", 901, "subscription not found")
	ProviderFinalizationDataAccountabilityError = sdkerrors.New("ProviderFinalizationDataAccountability Error", 3365, "provider returned invalid finalization data, with accountability")
)
View Source
var DefaultQuorumParams = QuorumParams{
	Rate: 1,
	Max:  1,
	Min:  1,
}
View Source
var JsonRpcMethodNotFoundError = JsonRPCErrorMessage{
	JsonRPC: "2.0",
	Id:      1,
	Error: JsonRPCError{
		Code:    -32601,
		Message: "Method not found",
	},
}
View Source
var JsonRpcParseError = JsonRPCErrorMessage{
	JsonRPC: "2.0",
	Id:      -1,
	Error: JsonRPCError{
		Code:    -32700,
		Message: "Parse error",
		Data:    "Failed to parse the request body as JSON",
	},
}
View Source
var JsonRpcRateLimitError = JsonRPCErrorMessage{
	JsonRPC: "2.0",
	Id:      1,
	Error: JsonRPCError{
		Code:    429,
		Message: "Too Many Requests",
	},
}
View Source
var JsonRpcSubscriptionNotFoundError = JsonRPCErrorMessage{
	JsonRPC: "2.0",
	Id:      1,
	Error: JsonRPCError{
		Code:    -32603,
		Message: "Internal error",
		Data:    "subscription not found",
	},
}
View Source
var RestAptosMethodNotFoundError = RestAptosError{
	Message:     "not found",
	ErrorCode:   "web_framework_error",
	VmErrorCode: nil,
}
View Source
var RestMethodNotFoundError = RestError{
	Code:    12,
	Message: "Not Implemented",
	Details: []interface{}{},
}

Functions

func AddRollingLogConfig

func AddRollingLogConfig(cmd *cobra.Command)

default rolling logs behavior (if enabled) will store 3 files each 100MB for up to 1 day every time.

func BaseTimePerCU

func BaseTimePerCU(cu uint64) time.Duration

func CapContextTimeout

func CapContextTimeout(ctx context.Context, timeout time.Duration) (context.Context, context.CancelFunc)

func CompressData added in v5.6.0

func CompressData(data []byte, threshold int) ([]byte, bool, error)

CompressData compresses data using gzip if it's larger than threshold Returns compressed data, whether it was compressed, and any error

func ContextOutOfTime

func ContextOutOfTime(ctx context.Context) bool

func CreateRestMethodNotFoundError

func CreateRestMethodNotFoundError(fiberCtx *fiber.Ctx, chainId string) error

func DecompressData added in v5.6.0

func DecompressData(compressedData []byte) ([]byte, error)

DecompressData decompresses gzip data Returns decompressed data and any error

func FindSequenceNumber

func FindSequenceNumber(sequence string) (int, error)

extract requested sequence number from tx error.

func GetExtensionNames

func GetExtensionNames(extensionCollection []*spectypes.Extension) (extensions []string)

func GetIpFromGrpcContext

func GetIpFromGrpcContext(ctx context.Context) string

func GetRemainingTimeoutFromContext

func GetRemainingTimeoutFromContext(ctx context.Context) (timeRemaining time.Duration)

func GetTimePerCu

func GetTimePerCu(cu uint64) time.Duration

func GetTimeoutForProcessing

func GetTimeoutForProcessing(relayTimeout time.Duration, timeoutInfo TimeoutInfo) time.Duration

func GetTokenFromGrpcContext

func GetTokenFromGrpcContext(ctx context.Context) string

func GetUniqueToken

func GetUniqueToken(userData UserData) string

func IsQuoted

func IsQuoted(s string) bool

func IsSquareBracketed

func IsSquareBracketed(s string) bool

func IsTestMode

func IsTestMode(ctx context.Context) bool

func IsTimeout

func IsTimeout(errArg error) bool

func LocalNodeTimePerCu

func LocalNodeTimePerCu(cu uint64) time.Duration

func OptimizedHttpClient added in v5.6.0

func OptimizedHttpClient() *http.Client

OptimizedHttpClient creates an HTTP client with optimized transport settings and a default 5-minute timeout suitable for blockchain node operations. The client uses a custom transport configured for high-concurrency scenarios.

Returns:

  • *http.Client: A client with optimized connection pooling and default timeout

func OptimizedHttpTransport added in v5.6.0

func OptimizedHttpTransport() *http.Transport

OptimizedHttpTransport creates an HTTP transport optimized for provider-to-node communication. This transport is configured to: 1. Reuse connections efficiently (high MaxIdleConnsPerHost) 2. Limit total connections per host (prevents overwhelming nodes) 3. Handle high concurrency scenarios (200+ simultaneous requests) 4. Close idle connections appropriately to avoid leaks

Benefits: - Reduces TCP connection overhead - Prevents connection exhaustion on blockchain nodes - Improves latency through connection reuse - Handles heavy load without creating thousands of connections

func ParseEndpointArgs

func ParseEndpointArgs(endpoint_strings, yaml_config_properties []string, endpointsConfigName string) (viper_endpoints *viper.Viper, err error)

func SetupRollingLogger

func SetupRollingLogger() func()

func UnSquareBracket

func UnSquareBracket(s string) string

func ValidateEndpoint

func ValidateEndpoint(endpoint, apiInterface string) error

func VerifyAndHandleUnsupportedFlags

func VerifyAndHandleUnsupportedFlags(currentFlags *pflag.FlagSet) error

Types

type AuthConfig

type AuthConfig struct {
	AuthHeaders   map[string]string `yaml:"auth-headers,omitempty" json:"auth-headers,omitempty" mapstructure:"auth-headers"`
	AuthQuery     string            `yaml:"auth-query,omitempty" json:"auth-query,omitempty" mapstructure:"auth-query"`
	UseTLS        bool              `yaml:"use-tls,omitempty" json:"use-tls,omitempty" mapstructure:"use-tls"`
	AllowInsecure bool              `yaml:"allow-insecure,omitempty" json:"allow-insecure,omitempty" mapstructure:"allow-insecure"`
	KeyPem        string            `yaml:"key-pem,omitempty" json:"key-pem,omitempty" mapstructure:"key-pem"`
	CertPem       string            `yaml:"cert-pem,omitempty" json:"cert-pem,omitempty" mapstructure:"cert-pem"`
	CaCert        string            `yaml:"cacert-pem,omitempty" json:"cacert-pem,omitempty" mapstructure:"cacert-pem"`
}

func (*AuthConfig) AddAuthPath

func (ac *AuthConfig) AddAuthPath(url string) string

func (*AuthConfig) GetCaCertificateParams

func (ac *AuthConfig) GetCaCertificateParams() string

File containing trusted root certificates for verifying the server.

func (*AuthConfig) GetLoadingCertificateParams

func (ac *AuthConfig) GetLoadingCertificateParams() (string, string)

File containing client certificate (public key), to present to the server. + File containing client private key, to present to the server.

func (*AuthConfig) GetUseTls

func (ac *AuthConfig) GetUseTls() bool

type ChainMessageGetApiInterface

type ChainMessageGetApiInterface interface {
	GetApi() *spectypes.Api
}

type ConflictHandlerInterface

type ConflictHandlerInterface interface {
	ConflictAlreadyReported() bool
	StoreConflictReported()
}

type ConsumerCmdFlags

type ConsumerCmdFlags struct {
	HeadersFlag              string        // comma separated list of headers, or * for all, default simple cors specification headers
	CredentialsFlag          string        // access-control-allow-credentials, defaults to "true"
	OriginFlag               string        // comma separated list of origins, or * for all, default enabled completely
	MethodsFlag              string        // whether to allow access control headers *, most proxies have their own access control so its not required
	CDNCacheDuration         string        // how long to cache the preflight response defaults 24 hours (in seconds) "86400"
	RelaysHealthEnableFlag   bool          // enables relay health check
	RelaysHealthIntervalFlag time.Duration // interval for relay health check
	DebugRelays              bool          // enables debug mode for relays
	StaticSpecPath           string        // path to the spec file, works only when bootstrapping a single chain.
	GitHubToken              string        // GitHub personal access token for accessing private repositories
	EpochDuration            time.Duration // duration of each epoch for time-based epoch system (standalone mode)
	EnableMemoryLogs         bool          // enables memory tracking logs
}

helper struct to propagate flags deeper into the code in an organized manner

type EpochTimer added in v5.6.0

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

EpochTimer manages epochs based on absolute wall clock time All processes using the same epochDuration will calculate the same epoch number and update at the same absolute time boundaries

func NewEpochTimer added in v5.6.0

func NewEpochTimer(epochDuration time.Duration) *EpochTimer

NewEpochTimer creates a new time-based epoch timer Epoch 0 starts at a fixed point in the past (January 1, 2024 00:00:00 UTC) This ensures epochs remain consistent even after long downtimes

func (*EpochTimer) CalculateCurrentEpoch added in v5.6.0

func (et *EpochTimer) CalculateCurrentEpoch() uint64

CalculateCurrentEpoch calculates epoch number from absolute time Formula: epoch = floor((currentTime - epochZeroTime) / epochDuration)

func (*EpochTimer) GetCurrentEpoch added in v5.6.0

func (et *EpochTimer) GetCurrentEpoch() uint64

GetCurrentEpoch returns current epoch (alias for clarity)

func (*EpochTimer) GetEpochBoundaryTime added in v5.6.0

func (et *EpochTimer) GetEpochBoundaryTime(epoch uint64) time.Time

GetEpochBoundaryTime returns the absolute time when an epoch starts

func (*EpochTimer) GetEpochDuration added in v5.6.0

func (et *EpochTimer) GetEpochDuration() time.Duration

GetEpochDuration returns the configured epoch duration

func (*EpochTimer) GetTimeUntilNextEpoch added in v5.6.0

func (et *EpochTimer) GetTimeUntilNextEpoch() time.Duration

GetTimeUntilNextEpoch calculates time until next epoch boundary

func (*EpochTimer) RegisterCallback added in v5.6.0

func (et *EpochTimer) RegisterCallback(callback func(uint64))

RegisterCallback registers a callback to be called on epoch updates

func (*EpochTimer) Start added in v5.6.0

func (et *EpochTimer) Start(ctx context.Context)

Start begins the epoch timer with synchronized triggers at absolute boundaries

func (*EpochTimer) Stop added in v5.6.0

func (et *EpochTimer) Stop()

Stop stops the epoch timer

type JsonRPCError

type JsonRPCError struct {
	Code    int    `json:"code"`
	Message string `json:"message"`
	Data    string `json:"data"`
}

type JsonRPCErrorMessage

type JsonRPCErrorMessage struct {
	JsonRPC string       `json:"jsonrpc"`
	Id      int          `json:"id"`
	Error   JsonRPCError `json:"error"`
}

type NodeUrl

type NodeUrl struct {
	Url               string        `yaml:"url,omitempty" json:"url,omitempty" mapstructure:"url"`
	InternalPath      string        `yaml:"internal-path,omitempty" json:"internal-path,omitempty" mapstructure:"internal-path"`
	AuthConfig        AuthConfig    `yaml:"auth-config,omitempty" json:"auth-config,omitempty" mapstructure:"auth-config"`
	IpForwarding      bool          `yaml:"ip-forwarding,omitempty" json:"ip-forwarding,omitempty" mapstructure:"ip-forwarding"`
	Timeout           time.Duration `yaml:"timeout,omitempty" json:"timeout,omitempty" mapstructure:"timeout"`
	Addons            []string      `yaml:"addons,omitempty" json:"addons,omitempty" mapstructure:"addons"`
	SkipVerifications []string      `yaml:"skip-verifications,omitempty" json:"skip-verifications,omitempty" mapstructure:"skip-verifications"`
	Methods           []string      `yaml:"methods,omitempty" json:"methods,omitempty" mapstructure:"methods"`
}

func (*NodeUrl) GetAuthHeaders

func (url *NodeUrl) GetAuthHeaders() map[string]string

func (*NodeUrl) LowerContextTimeout

func (url *NodeUrl) LowerContextTimeout(ctx context.Context, processingTimeout time.Duration) (context.Context, context.CancelFunc)

func (*NodeUrl) LowerContextTimeoutWithDuration

func (url *NodeUrl) LowerContextTimeoutWithDuration(ctx context.Context, timeout time.Duration) (context.Context, context.CancelFunc)

func (*NodeUrl) SetAuthHeaders

func (url *NodeUrl) SetAuthHeaders(ctx context.Context, headerSetter func(string, string))

func (*NodeUrl) SetIpForwardingIfNecessary

func (url *NodeUrl) SetIpForwardingIfNecessary(ctx context.Context, headerSetter func(string, string))

func (NodeUrl) String

func (nurl NodeUrl) String() string

func (*NodeUrl) UrlStr

func (nurl *NodeUrl) UrlStr() string

type ProviderInfo

type ProviderInfo struct {
	ProviderAddress           string
	ProviderReputationSummary sdk.Dec // the number represents the average qos for this provider session
	ProviderStake             sdk.Coin
}

type QuorumParams added in v5.4.2

type QuorumParams struct {
	Rate float64
	Max  int
	Min  int
}

QuorumParams holds the quorum configuration parameters

func (QuorumParams) Enabled added in v5.4.2

func (qp QuorumParams) Enabled() bool

type RelayResult

type RelayResult struct {
	Request         *pairingtypes.RelayRequest
	Reply           *pairingtypes.RelayReply
	ProviderInfo    ProviderInfo
	ReplyServer     pairingtypes.Relayer_RelaySubscribeClient
	Finalized       bool
	ConflictHandler ConflictHandlerInterface
	StatusCode      int
	Quorum          int
	ProviderTrailer metadata.MD // the provider trailer attached to the request. used to transfer useful information (which is not signed so shouldn't be trusted completely).
	IsNodeError     bool
}

func (*RelayResult) GetProvider

func (rr *RelayResult) GetProvider() string

func (*RelayResult) GetReply

func (rr *RelayResult) GetReply() *pairingtypes.RelayReply

func (*RelayResult) GetReplyServer

func (*RelayResult) GetStatusCode

func (rr *RelayResult) GetStatusCode() int

type RestAptosError

type RestAptosError struct {
	Message     string      `json:"message"`
	ErrorCode   string      `json:"error_code"`
	VmErrorCode interface{} `json:"vm_error_code"`
}

type RestError

type RestError struct {
	Code    int           `json:"code"`
	Message string        `json:"message"`
	Details []interface{} `json:"details"`
}

type SafeChannelSender

type SafeChannelSender[T any] struct {
	// contains filtered or unexported fields
}

func NewSafeChannelSender

func NewSafeChannelSender[T any](ctx context.Context, ch chan<- T) *SafeChannelSender[T]

func (*SafeChannelSender[T]) Close

func (scs *SafeChannelSender[T]) Close()

func (*SafeChannelSender[T]) LockAndSendAsynchronously

func (scs *SafeChannelSender[T]) LockAndSendAsynchronously(msg T)

Used when there is a need to validate locked, but you don't want to wait for the channel to return.

func (*SafeChannelSender[T]) ReplaceChannel

func (scs *SafeChannelSender[T]) ReplaceChannel(ch chan<- T)

func (*SafeChannelSender[T]) Send

func (scs *SafeChannelSender[T]) Send(msg T)

Used when you need to wait for the other side to receive the message.

type SafeSyncMap

type SafeSyncMap[K, V any] struct {
	// contains filtered or unexported fields
}

func (*SafeSyncMap[K, V]) Load

func (ssm *SafeSyncMap[K, V]) Load(key K) (ret V, ok bool, err error)

func (*SafeSyncMap[K, V]) LoadOrStore

func (ssm *SafeSyncMap[K, V]) LoadOrStore(key K, value V) (ret V, loaded bool, err error)

LoadOrStore returns the existing value for the key if present. Otherwise, it stores and returns the given value. The loaded result is true if the value was loaded, false if stored. The function returns the value that was loaded or stored.

func (*SafeSyncMap[K, V]) Range

func (ssm *SafeSyncMap[K, V]) Range(f func(key K, value V) bool)

func (*SafeSyncMap[K, V]) Store

func (ssm *SafeSyncMap[K, V]) Store(key K, toSet V)

type Test_mode_ctx_key

type Test_mode_ctx_key struct{}

type TimeoutInfo

type TimeoutInfo struct {
	CU       uint64
	Hanging  bool
	Stateful uint32
}

type TxResultData

type TxResultData struct {
	RawLog string
	Txhash []byte
	Code   int
}

func ParseTransactionResult

func ParseTransactionResult(parsedValues map[string]any) (retData TxResultData, err error)

type UserData

type UserData struct {
	ConsumerIp string
	DappId     string
}

Jump to

Keyboard shortcuts

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