erigon-pulse/turbo/jsonrpc/bor_api.go
Mark Holt 3d6d2a7c25
Added fix to allow getroothash to work with no api running (#8342)
Whitelisting calculation of the roothash should not be dependent on the
bor api running. This will not always be the case, for example when
erigon is configured with a separate rpc deamon.

To fix this the calculation has been moved to Bor.

Additionally the redundant Bor API code has been removed as this is not
called by any code and the functionality looks to have migrated to the
turbo/jsonrpc package.
2023-10-02 18:55:31 +01:00

41 lines
1.2 KiB
Go

package jsonrpc
import (
"github.com/ledgerwatch/erigon-lib/common"
"github.com/ledgerwatch/erigon-lib/kv"
"github.com/ledgerwatch/erigon/consensus/bor"
"github.com/ledgerwatch/erigon/consensus/bor/valset"
"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) (*common.Address, error)
GetSnapshotAtHash(hash common.Hash) (*Snapshot, error)
GetSigners(number *rpc.BlockNumber) ([]common.Address, error)
GetSignersAtHash(hash common.Hash) ([]common.Address, error)
GetCurrentProposer() (common.Address, error)
GetCurrentValidators() ([]*valset.Validator, error)
GetSnapshotProposerSequence(blockNrOrHash *rpc.BlockNumberOrHash) (BlockSigners, 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
bor *bor.Bor
}
// NewBorAPI returns BorImpl instance
func NewBorAPI(base *BaseAPI, db kv.RoDB, bor *bor.Bor) *BorImpl {
return &BorImpl{
BaseAPI: base,
db: db,
bor: bor,
}
}