erigon-pulse/cmd/rpcdaemon/commands/bor_api.go

39 lines
1.1 KiB
Go

package commands
import (
libcommon "github.com/ledgerwatch/erigon-lib/common"
"github.com/ledgerwatch/erigon-lib/kv"
"github.com/ledgerwatch/erigon/consensus/bor"
"github.com/ledgerwatch/erigon/rpc"
)
// BorAPI Bor specific routines
type BorAPI interface {
// Bor snapshot related (see ./bor_snapshot.go)
GetSnapshot(number *rpc.BlockNumber) (*Snapshot, error)
GetAuthor(number *rpc.BlockNumber) (*libcommon.Address, error)
GetSnapshotAtHash(hash libcommon.Hash) (*Snapshot, error)
GetSigners(number *rpc.BlockNumber) ([]libcommon.Address, error)
GetSignersAtHash(hash libcommon.Hash) ([]libcommon.Address, error)
GetCurrentProposer() (libcommon.Address, error)
GetCurrentValidators() ([]*bor.Validator, error)
GetRootHash(start uint64, end uint64) (string, error)
}
// BorImpl is implementation of the BorAPI interface
type BorImpl struct {
*BaseAPI
db kv.RoDB // the chain db
borDb kv.RoDB // the consensus db
}
// NewBorAPI returns BorImpl instance
func NewBorAPI(base *BaseAPI, db kv.RoDB, borDb kv.RoDB) *BorImpl {
return &BorImpl{
BaseAPI: base,
db: db,
borDb: borDb,
}
}