iface.go 995 Bytes
Newer Older
1
package syncnode
2 3 4 5 6 7 8 9 10 11 12 13

import (
	"context"

	"github.com/ethereum/go-ethereum/common"
	gethtypes "github.com/ethereum/go-ethereum/core/types"
	"github.com/ethereum/go-ethereum/log"

	"github.com/ethereum-optimism/optimism/op-service/eth"
	"github.com/ethereum-optimism/optimism/op-supervisor/supervisor/types"
)

14 15
type SyncNodeCollection interface {
	Load(ctx context.Context, logger log.Logger) ([]SyncNodeSetup, error)
16 17 18
	Check() error
}

19 20
type SyncNodeSetup interface {
	Setup(ctx context.Context, logger log.Logger) (SyncNode, error)
21 22 23 24 25 26 27 28 29
}

type SyncSource interface {
	BlockRefByNumber(ctx context.Context, number uint64) (eth.BlockRef, error)
	FetchReceipts(ctx context.Context, blockHash common.Hash) (gethtypes.Receipts, error)
	ChainID(ctx context.Context) (types.ChainID, error)
	// String identifies the sync source
	String() string
}
30 31 32 33 34 35 36 37 38

type SyncControl interface {
	TryDeriveNext(ctx context.Context, ref eth.BlockRef) (eth.BlockRef, error)
}

type SyncNode interface {
	SyncSource
	SyncControl
}