mirror of
https://gitlab.com/pulsechaincom/erigon-pulse.git
synced 2025-01-03 09:37:38 +00:00
73 lines
2.1 KiB
Go
73 lines
2.1 KiB
Go
package silkworm
|
|
|
|
import (
|
|
"errors"
|
|
"github.com/erigontech/silkworm-go"
|
|
"github.com/ledgerwatch/erigon-lib/kv"
|
|
"github.com/ledgerwatch/erigon/consensus"
|
|
"math/big"
|
|
)
|
|
|
|
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
|
|
|
|
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
|
|
|
|
var ErrInterrupted = silkworm_go.ErrInterrupted
|
|
|
|
type RpcDaemonService struct {
|
|
silkworm *Silkworm
|
|
db kv.RoDB
|
|
}
|
|
|
|
func NewRpcDaemonService(s *Silkworm, db kv.RoDB) RpcDaemonService {
|
|
return RpcDaemonService{
|
|
silkworm: s,
|
|
db: db,
|
|
}
|
|
}
|
|
|
|
func (service RpcDaemonService) Start() error {
|
|
return service.silkworm.StartRpcDaemon(service.db.CHandle())
|
|
}
|
|
|
|
func (service RpcDaemonService) Stop() error {
|
|
return service.silkworm.StopRpcDaemon()
|
|
}
|
|
|
|
type SentryService struct {
|
|
silkworm *silkworm_go.Silkworm
|
|
settings silkworm_go.SentrySettings
|
|
}
|
|
|
|
func NewSentryService(s *Silkworm, settings silkworm_go.SentrySettings) SentryService {
|
|
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
|
|
}
|