chaintracker

package
v0.20.5 Latest Latest
Warning

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

Go to latest
Published: Aug 6, 2023 License: Apache-2.0 Imports: 28 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DefualtAssumedBlockMemory      = 20
	DefaultBlockCheckpointDistance = 100
)
View Source
const (
	BACKOFF_MAX_TIME = 10 * time.Minute
)

Variables

View Source
var (
	ErrInvalidLengthChainTracker        = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowChainTracker          = fmt.Errorf("proto: integer overflow")
	ErrUnexpectedEndOfGroupChainTracker = fmt.Errorf("proto: unexpected end of group")
)
View Source
var (
	InvalidConfigErrorBlocksToSave  = sdkerrors.New("Invalid blocks to save", 10701, "blocks to save wasn't defined in config")
	InvalidConfigBlockTime          = sdkerrors.New("Invalid average block time", 10702, "average block time wasn't defined in config")
	InvalidLatestBlockNumValue      = sdkerrors.New("Invalid value for latestBlockNum", 10703, "returned latest block num should be greater than 0, but it's not")
	InvalidReturnedHashes           = sdkerrors.New("Invalid value for requestedHashes length", 10704, "returned requestedHashes key count should be greater than 0, but it's not")
	ErrorFailedToFetchLatestBlock   = sdkerrors.New("Error FailedToFetchLatestBlock", 10705, "Failed to fetch latest block from node")
	InvalidRequestedBlocks          = sdkerrors.New("Error InvalidRequestedBlocks", 10706, "provided requested blocks for function do not compse a valid request")
	RequestedBlocksOutOfRange       = sdkerrors.New("RequestedBlocksOutOfRange", 10707, "requested blocks are outside the supported range by the state tracker")
	ErrorFailedToFetchTooEarlyBlock = sdkerrors.New("Error ErrorFailedToFetchTooEarlyBlock", 10708, "server memory protection triggered, requested block is too early")
	InvalidRequestedSpecificBlock   = sdkerrors.New("Error InvalidRequestedSpecificBlock", 10709, "provided requested specific blocks for function do not compose a stored entry")
)
View Source
var ChainTrackerService_ServiceDesc = grpc.ServiceDesc{
	ServiceName: "chainTracker.ChainTrackerService",
	HandlerType: (*ChainTrackerServiceServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "GetLatestBlockNum",
			Handler:    _ChainTrackerService_GetLatestBlockNum_Handler,
		},
		{
			MethodName: "GetLatestBlockData",
			Handler:    _ChainTrackerService_GetLatestBlockData_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "chainTracker.proto",
}

ChainTrackerService_ServiceDesc is the grpc.ServiceDesc for ChainTrackerService service. It's only intended for direct use with grpc.RegisterService, and not to be introspected or modified (even as a copy)

Functions

func FindRequestedBlockHash

func FindRequestedBlockHash(requestedHashes []*BlockStore, requestBlock int64, toBlock int64, fromBlock int64, finalizedBlockHashes map[int64]interface{}) (requestedBlockHash []byte, finalizedBlockHashesMapRet map[int64]interface{})

func LatestArgToBlockNum

func LatestArgToBlockNum(request int64, latestBlock int64) int64

func RegisterChainTrackerServiceServer

func RegisterChainTrackerServiceServer(s grpc.ServiceRegistrar, srv ChainTrackerServiceServer)

Types

type BlockRange

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

func NewBlockRange

func NewBlockRange(fromBlock int64, toBlock int64, earliestBlockSaved int64, latestBlock int64) (br *BlockRange, err error)

func (*BlockRange) IsWanted

func (br *BlockRange) IsWanted(blockNum int64) bool

func (*BlockRange) IterationIndexes

func (br *BlockRange) IterationIndexes() []int

type BlockStore

type BlockStore struct {
	Block int64  `protobuf:"varint,1,opt,name=block,proto3" json:"block,omitempty"`
	Hash  string `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"`
}

func (*BlockStore) Descriptor

func (*BlockStore) Descriptor() ([]byte, []int)

func (*BlockStore) GetBlock

func (m *BlockStore) GetBlock() int64

func (*BlockStore) GetHash

func (m *BlockStore) GetHash() string

func (*BlockStore) Marshal

func (m *BlockStore) Marshal() (dAtA []byte, err error)

func (*BlockStore) MarshalTo

func (m *BlockStore) MarshalTo(dAtA []byte) (int, error)

func (*BlockStore) MarshalToSizedBuffer

func (m *BlockStore) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*BlockStore) ProtoMessage

func (*BlockStore) ProtoMessage()

func (*BlockStore) Reset

func (m *BlockStore) Reset()

func (*BlockStore) Size

func (m *BlockStore) Size() (n int)

func (*BlockStore) String

func (m *BlockStore) String() string

func (*BlockStore) Unmarshal

func (m *BlockStore) Unmarshal(dAtA []byte) error

func (*BlockStore) XXX_DiscardUnknown

func (m *BlockStore) XXX_DiscardUnknown()

func (*BlockStore) XXX_Marshal

func (m *BlockStore) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*BlockStore) XXX_Merge

func (m *BlockStore) XXX_Merge(src proto.Message)

func (*BlockStore) XXX_Size

func (m *BlockStore) XXX_Size() int

func (*BlockStore) XXX_Unmarshal

func (m *BlockStore) XXX_Unmarshal(b []byte) error

type ChainFetcher

type ChainFetcher interface {
	FetchLatestBlockNum(ctx context.Context) (int64, error)
	FetchBlockHashByNum(ctx context.Context, blockNum int64) (string, error)
	FetchEndpoint() lavasession.RPCProviderEndpoint
}

type ChainTracker

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

func NewChainTracker

func NewChainTracker(ctx context.Context, chainFetcher ChainFetcher, config ChainTrackerConfig) (chainTracker *ChainTracker, err error)

func (*ChainTracker) GetLatestBlockData

func (cs *ChainTracker) GetLatestBlockData(fromBlock int64, toBlock int64, specificBlock int64) (latestBlock int64, requestedHashes []*BlockStore, err error)

this function returns block hashes of the blocks: [from block - to block] inclusive. an additional specific block hash can be provided. order is sorted ascending it supports requests for [spectypes.LATEST_BLOCK-distance1, spectypes.LATEST_BLOCK-distance2) spectypes.NOT_APPLICABLE in fromBlock or toBlock results in only returning specific block. if specific block is spectypes.NOT_APPLICABLE it is ignored

func (*ChainTracker) GetLatestBlockNum

func (cs *ChainTracker) GetLatestBlockNum() int64

type ChainTrackerConfig

type ChainTrackerConfig struct {
	ForkCallback      func(block int64)              // a function to be called when a fork is detected
	NewLatestCallback func(block int64, hash string) // a function to be called when a new block is detected
	ServerAddress     string                         // if not empty will open up a grpc server for that address
	BlocksToSave      uint64
	AverageBlockTime  time.Duration // how often to query latest block
	ServerBlockMemory uint64
	// contains filtered or unexported fields
}

type ChainTrackerService

type ChainTrackerService struct {
	UnimplementedChainTrackerServiceServer
	ChainTracker *ChainTracker
}

func (*ChainTrackerService) GetLatestBlockData

func (cts *ChainTrackerService) GetLatestBlockData(ctx context.Context, latestBlockData *LatestBlockData) (*LatestBlockDataResponse, error)

func (*ChainTrackerService) GetLatestBlockNum

func (cts *ChainTrackerService) GetLatestBlockNum(context.Context, *empty.Empty) (*wrappers.UInt64Value, error)

type ChainTrackerServiceClient

type ChainTrackerServiceClient interface {
	GetLatestBlockNum(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*wrappers.UInt64Value, error)
	GetLatestBlockData(ctx context.Context, in *LatestBlockData, opts ...grpc.CallOption) (*LatestBlockDataResponse, error)
}

ChainTrackerServiceClient is the client API for ChainTrackerService service.

For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.

type ChainTrackerServiceServer

type ChainTrackerServiceServer interface {
	GetLatestBlockNum(context.Context, *empty.Empty) (*wrappers.UInt64Value, error)
	GetLatestBlockData(context.Context, *LatestBlockData) (*LatestBlockDataResponse, error)
	// contains filtered or unexported methods
}

ChainTrackerServiceServer is the server API for ChainTrackerService service. All implementations must embed UnimplementedChainTrackerServiceServer for forward compatibility

type LatestBlockData

type LatestBlockData struct {
	FromBlock     int64 `protobuf:"varint,1,opt,name=fromBlock,proto3" json:"fromBlock,omitempty"`
	ToBlock       int64 `protobuf:"varint,2,opt,name=toBlock,proto3" json:"toBlock,omitempty"`
	SpecificBlock int64 `protobuf:"varint,3,opt,name=specificBlock,proto3" json:"specificBlock,omitempty"`
}

func (*LatestBlockData) Descriptor

func (*LatestBlockData) Descriptor() ([]byte, []int)

func (*LatestBlockData) GetFromBlock

func (m *LatestBlockData) GetFromBlock() int64

func (*LatestBlockData) GetSpecificBlock

func (m *LatestBlockData) GetSpecificBlock() int64

func (*LatestBlockData) GetToBlock

func (m *LatestBlockData) GetToBlock() int64

func (*LatestBlockData) Marshal

func (m *LatestBlockData) Marshal() (dAtA []byte, err error)

func (*LatestBlockData) MarshalTo

func (m *LatestBlockData) MarshalTo(dAtA []byte) (int, error)

func (*LatestBlockData) MarshalToSizedBuffer

func (m *LatestBlockData) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*LatestBlockData) ProtoMessage

func (*LatestBlockData) ProtoMessage()

func (*LatestBlockData) Reset

func (m *LatestBlockData) Reset()

func (*LatestBlockData) Size

func (m *LatestBlockData) Size() (n int)

func (*LatestBlockData) String

func (m *LatestBlockData) String() string

func (*LatestBlockData) Unmarshal

func (m *LatestBlockData) Unmarshal(dAtA []byte) error

func (*LatestBlockData) XXX_DiscardUnknown

func (m *LatestBlockData) XXX_DiscardUnknown()

func (*LatestBlockData) XXX_Marshal

func (m *LatestBlockData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*LatestBlockData) XXX_Merge

func (m *LatestBlockData) XXX_Merge(src proto.Message)

func (*LatestBlockData) XXX_Size

func (m *LatestBlockData) XXX_Size() int

func (*LatestBlockData) XXX_Unmarshal

func (m *LatestBlockData) XXX_Unmarshal(b []byte) error

type LatestBlockDataResponse

type LatestBlockDataResponse struct {
	LatestBlock     int64         `protobuf:"varint,1,opt,name=latestBlock,proto3" json:"latestBlock,omitempty"`
	RequestedHashes []*BlockStore `protobuf:"bytes,2,rep,name=requestedHashes,proto3" json:"requestedHashes,omitempty"`
}

func (*LatestBlockDataResponse) Descriptor

func (*LatestBlockDataResponse) Descriptor() ([]byte, []int)

func (*LatestBlockDataResponse) GetLatestBlock

func (m *LatestBlockDataResponse) GetLatestBlock() int64

func (*LatestBlockDataResponse) GetRequestedHashes

func (m *LatestBlockDataResponse) GetRequestedHashes() []*BlockStore

func (*LatestBlockDataResponse) Marshal

func (m *LatestBlockDataResponse) Marshal() (dAtA []byte, err error)

func (*LatestBlockDataResponse) MarshalTo

func (m *LatestBlockDataResponse) MarshalTo(dAtA []byte) (int, error)

func (*LatestBlockDataResponse) MarshalToSizedBuffer

func (m *LatestBlockDataResponse) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*LatestBlockDataResponse) ProtoMessage

func (*LatestBlockDataResponse) ProtoMessage()

func (*LatestBlockDataResponse) Reset

func (m *LatestBlockDataResponse) Reset()

func (*LatestBlockDataResponse) Size

func (m *LatestBlockDataResponse) Size() (n int)

func (*LatestBlockDataResponse) String

func (m *LatestBlockDataResponse) String() string

func (*LatestBlockDataResponse) Unmarshal

func (m *LatestBlockDataResponse) Unmarshal(dAtA []byte) error

func (*LatestBlockDataResponse) XXX_DiscardUnknown

func (m *LatestBlockDataResponse) XXX_DiscardUnknown()

func (*LatestBlockDataResponse) XXX_Marshal

func (m *LatestBlockDataResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*LatestBlockDataResponse) XXX_Merge

func (m *LatestBlockDataResponse) XXX_Merge(src proto.Message)

func (*LatestBlockDataResponse) XXX_Size

func (m *LatestBlockDataResponse) XXX_Size() int

func (*LatestBlockDataResponse) XXX_Unmarshal

func (m *LatestBlockDataResponse) XXX_Unmarshal(b []byte) error

type UnimplementedChainTrackerServiceServer

type UnimplementedChainTrackerServiceServer struct {
}

UnimplementedChainTrackerServiceServer must be embedded to have forward compatible implementations.

func (UnimplementedChainTrackerServiceServer) GetLatestBlockData

func (UnimplementedChainTrackerServiceServer) GetLatestBlockNum

type UnsafeChainTrackerServiceServer added in v0.4.5

type UnsafeChainTrackerServiceServer interface {
	// contains filtered or unexported methods
}

UnsafeChainTrackerServiceServer may be embedded to opt out of forward compatibility for this service. Use of this interface is not recommended, as added methods to ChainTrackerServiceServer will result in compilation errors.

type WantedBlocksData

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

func (*WantedBlocksData) IsWanted

func (wbd *WantedBlocksData) IsWanted(blockNum int64) bool

func (*WantedBlocksData) IterationIndexes

func (wbd *WantedBlocksData) IterationIndexes() (returnedIdxs []int)

func (*WantedBlocksData) New

func (wbd *WantedBlocksData) New(fromBlock int64, toBlock int64, specificBlock int64, latestBlock int64, earliestBlockSaved int64) (err error)

func (*WantedBlocksData) String

func (wbd *WantedBlocksData) String() string

Jump to

Keyboard shortcuts

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