forked from cerc-io/ipld-eth-server
05186634bd
- Only syncs block headers (excludes block bodies, transactions, receipts, and logs) - Modifies validation window to include the most recent block - Isolates validation window to the variable defined in the cmd directory (blocks have a separate variable defined in the block_repository for determining when to set a block as final)
31 lines
943 B
Go
31 lines
943 B
Go
package inmemory
|
|
|
|
import "github.com/vulcanize/vulcanizedb/pkg/core"
|
|
|
|
type HeaderRepository struct {
|
|
memory *InMemory
|
|
}
|
|
|
|
func NewHeaderRepository(memory *InMemory) *HeaderRepository {
|
|
return &HeaderRepository{memory: memory}
|
|
}
|
|
|
|
func (repository *HeaderRepository) CreateOrUpdateHeader(header core.Header) (int64, error) {
|
|
repository.memory.headers[header.BlockNumber] = header
|
|
return 0, nil
|
|
}
|
|
|
|
func (repository *HeaderRepository) GetHeader(blockNumber int64) (core.Header, error) {
|
|
return repository.memory.headers[blockNumber], nil
|
|
}
|
|
|
|
func (repository *HeaderRepository) MissingBlockNumbers(startingBlockNumber, endingBlockNumber int64, nodeID string) []int64 {
|
|
missingNumbers := []int64{}
|
|
for blockNumber := int64(startingBlockNumber); blockNumber <= endingBlockNumber; blockNumber++ {
|
|
if _, ok := repository.memory.headers[blockNumber]; !ok {
|
|
missingNumbers = append(missingNumbers, blockNumber)
|
|
}
|
|
}
|
|
return missingNumbers
|
|
}
|