erigon-pulse/turbo/silkworm/silkworm.go

78 lines
2.2 KiB
Go
Raw Normal View History

package silkworm
import (
"errors"
"math/big"
"github.com/erigontech/silkworm-go"
"github.com/ledgerwatch/erigon-lib/kv"
"github.com/ledgerwatch/erigon/consensus"
)
type Silkworm = silkworm_go.Silkworm
type SentrySettings = silkworm_go.SentrySettings
type MappedHeaderSnapshot = silkworm_go.MappedHeaderSnapshot
type MappedBodySnapshot = silkworm_go.MappedBodySnapshot
type MappedTxnSnapshot = silkworm_go.MappedTxnSnapshot
type MappedChainSnapshot = silkworm_go.MappedChainSnapshot
2023-11-02 01:35:13 +00:00
var New = silkworm_go.New
var NewMemoryMappedRegion = silkworm_go.NewMemoryMappedRegion
var NewMappedHeaderSnapshot = silkworm_go.NewMappedHeaderSnapshot
var NewMappedBodySnapshot = silkworm_go.NewMappedBodySnapshot
var NewMappedTxnSnapshot = silkworm_go.NewMappedTxnSnapshot
2023-11-02 01:35:13 +00:00
var ErrInterrupted = silkworm_go.ErrInterrupted
2023-11-02 01:35:13 +00:00
type RpcDaemonService struct {
silkworm *Silkworm
db kv.RoDB
}
func NewRpcDaemonService(s *Silkworm, db kv.RoDB) RpcDaemonService {
2023-11-02 01:35:13 +00:00
return RpcDaemonService{
silkworm: s,
db: db,
}
}
func (service RpcDaemonService) Start() error {
return service.silkworm.StartRpcDaemon(service.db.CHandle())
2023-11-02 01:35:13 +00:00
}
func (service RpcDaemonService) Stop() error {
return service.silkworm.StopRpcDaemon()
}
type SentryService struct {
silkworm *silkworm_go.Silkworm
settings silkworm_go.SentrySettings
2023-11-02 01:35:13 +00:00
}
func NewSentryService(s *Silkworm, settings silkworm_go.SentrySettings) SentryService {
2023-11-02 01:35:13 +00:00
return SentryService{
silkworm: s,
settings: settings,
}
}
func (service SentryService) Start() error {
return service.silkworm.SentryStart(service.settings)
}
func (service SentryService) Stop() error {
return service.silkworm.SentryStop()
}
func ExecuteBlocks(s *Silkworm, txn kv.Tx, chainID *big.Int, startBlock uint64, maxBlock uint64, batchSize uint64, writeChangeSets, writeReceipts, writeCallTraces bool) (uint64, error) {
lastExecutedBlock, err := s.ExecuteBlocks(txn.CHandle(), chainID, startBlock, maxBlock, batchSize, writeChangeSets, writeReceipts, writeCallTraces)
if (err != nil) && errors.Is(err, silkworm_go.ErrInvalidBlock) {
return lastExecutedBlock, consensus.ErrInvalidBlock
}
return lastExecutedBlock, err
}
type CanAddSnapshotsToSilkwarm interface {
AddSnapshotsToSilkworm(*Silkworm) error
}