mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-05-24 00:39:26 +00:00
core/rawdb: delete dead code to avoid more useless AI submissions (#33186)
Co-authored-by: Gary Rong <garyrong0905@gmail.com>
This commit is contained in:
parent
95273afec4
commit
81c5b43029
2 changed files with 0 additions and 144 deletions
|
|
@ -83,65 +83,6 @@ type NumberHash struct {
|
||||||
Hash common.Hash
|
Hash common.Hash
|
||||||
}
|
}
|
||||||
|
|
||||||
// ReadAllHashesInRange retrieves all the hashes assigned to blocks at certain
|
|
||||||
// heights, both canonical and reorged forks included.
|
|
||||||
// This method considers both limits to be _inclusive_.
|
|
||||||
func ReadAllHashesInRange(db ethdb.Iteratee, first, last uint64) []*NumberHash {
|
|
||||||
var (
|
|
||||||
start = encodeBlockNumber(first)
|
|
||||||
keyLength = len(headerPrefix) + 8 + 32
|
|
||||||
hashes = make([]*NumberHash, 0, 1+last-first)
|
|
||||||
it = db.NewIterator(headerPrefix, start)
|
|
||||||
)
|
|
||||||
defer it.Release()
|
|
||||||
for it.Next() {
|
|
||||||
key := it.Key()
|
|
||||||
if len(key) != keyLength {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
num := binary.BigEndian.Uint64(key[len(headerPrefix) : len(headerPrefix)+8])
|
|
||||||
if num > last {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
hash := common.BytesToHash(key[len(key)-32:])
|
|
||||||
hashes = append(hashes, &NumberHash{num, hash})
|
|
||||||
}
|
|
||||||
return hashes
|
|
||||||
}
|
|
||||||
|
|
||||||
// ReadAllCanonicalHashes retrieves all canonical number and hash mappings at the
|
|
||||||
// certain chain range. If the accumulated entries reaches the given threshold,
|
|
||||||
// abort the iteration and return the semi-finish result.
|
|
||||||
func ReadAllCanonicalHashes(db ethdb.Iteratee, from uint64, to uint64, limit int) ([]uint64, []common.Hash) {
|
|
||||||
// Short circuit if the limit is 0.
|
|
||||||
if limit == 0 {
|
|
||||||
return nil, nil
|
|
||||||
}
|
|
||||||
var (
|
|
||||||
numbers []uint64
|
|
||||||
hashes []common.Hash
|
|
||||||
)
|
|
||||||
// Construct the key prefix of start point.
|
|
||||||
start, end := headerHashKey(from), headerHashKey(to)
|
|
||||||
it := db.NewIterator(nil, start)
|
|
||||||
defer it.Release()
|
|
||||||
|
|
||||||
for it.Next() {
|
|
||||||
if bytes.Compare(it.Key(), end) >= 0 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
if key := it.Key(); len(key) == len(headerPrefix)+8+1 && bytes.Equal(key[len(key)-1:], headerHashSuffix) {
|
|
||||||
numbers = append(numbers, binary.BigEndian.Uint64(key[len(headerPrefix):len(headerPrefix)+8]))
|
|
||||||
hashes = append(hashes, common.BytesToHash(it.Value()))
|
|
||||||
// If the accumulated entries reaches the limit threshold, return.
|
|
||||||
if len(numbers) >= limit {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return numbers, hashes
|
|
||||||
}
|
|
||||||
|
|
||||||
// ReadHeaderNumber returns the header number assigned to a hash.
|
// ReadHeaderNumber returns the header number assigned to a hash.
|
||||||
func ReadHeaderNumber(db ethdb.KeyValueReader, hash common.Hash) (uint64, bool) {
|
func ReadHeaderNumber(db ethdb.KeyValueReader, hash common.Hash) (uint64, bool) {
|
||||||
data, _ := db.Get(headerNumberKey(hash))
|
data, _ := db.Get(headerNumberKey(hash))
|
||||||
|
|
@ -886,40 +827,6 @@ func WriteBadBlock(db ethdb.KeyValueStore, block *types.Block) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteBadBlocks deletes all the bad blocks from the database
|
|
||||||
func DeleteBadBlocks(db ethdb.KeyValueWriter) {
|
|
||||||
if err := db.Delete(badBlockKey); err != nil {
|
|
||||||
log.Crit("Failed to delete bad blocks", "err", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// FindCommonAncestor returns the last common ancestor of two block headers
|
|
||||||
func FindCommonAncestor(db ethdb.Reader, a, b *types.Header) *types.Header {
|
|
||||||
for bn := b.Number.Uint64(); a.Number.Uint64() > bn; {
|
|
||||||
a = ReadHeader(db, a.ParentHash, a.Number.Uint64()-1)
|
|
||||||
if a == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for an := a.Number.Uint64(); an < b.Number.Uint64(); {
|
|
||||||
b = ReadHeader(db, b.ParentHash, b.Number.Uint64()-1)
|
|
||||||
if b == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for a.Hash() != b.Hash() {
|
|
||||||
a = ReadHeader(db, a.ParentHash, a.Number.Uint64()-1)
|
|
||||||
if a == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
b = ReadHeader(db, b.ParentHash, b.Number.Uint64()-1)
|
|
||||||
if b == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return a
|
|
||||||
}
|
|
||||||
|
|
||||||
// ReadHeadHeader returns the current canonical head header.
|
// ReadHeadHeader returns the current canonical head header.
|
||||||
func ReadHeadHeader(db ethdb.Reader) *types.Header {
|
func ReadHeadHeader(db ethdb.Reader) *types.Header {
|
||||||
headHeaderHash := ReadHeadHeaderHash(db)
|
headHeaderHash := ReadHeadHeaderHash(db)
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,6 @@ import (
|
||||||
"math/big"
|
"math/big"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"os"
|
"os"
|
||||||
"reflect"
|
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
|
|
@ -249,13 +248,6 @@ func TestBadBlockStorage(t *testing.T) {
|
||||||
t.Fatalf("The bad blocks are not sorted #[%d](%d) < #[%d](%d)", i, badBlocks[i].NumberU64(), i+1, badBlocks[i+1].NumberU64())
|
t.Fatalf("The bad blocks are not sorted #[%d](%d) < #[%d](%d)", i, badBlocks[i].NumberU64(), i+1, badBlocks[i+1].NumberU64())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Delete all bad blocks
|
|
||||||
DeleteBadBlocks(db)
|
|
||||||
badBlocks = ReadAllBadBlocks(db)
|
|
||||||
if len(badBlocks) != 0 {
|
|
||||||
t.Fatalf("Failed to delete bad blocks")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tests that canonical numbers can be mapped to hashes and retrieved.
|
// Tests that canonical numbers can be mapped to hashes and retrieved.
|
||||||
|
|
@ -516,37 +508,6 @@ func TestWriteAncientHeaderChain(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestCanonicalHashIteration(t *testing.T) {
|
|
||||||
var cases = []struct {
|
|
||||||
from, to uint64
|
|
||||||
limit int
|
|
||||||
expect []uint64
|
|
||||||
}{
|
|
||||||
{1, 8, 0, nil},
|
|
||||||
{1, 8, 1, []uint64{1}},
|
|
||||||
{1, 8, 10, []uint64{1, 2, 3, 4, 5, 6, 7}},
|
|
||||||
{1, 9, 10, []uint64{1, 2, 3, 4, 5, 6, 7, 8}},
|
|
||||||
{2, 9, 10, []uint64{2, 3, 4, 5, 6, 7, 8}},
|
|
||||||
{9, 10, 10, nil},
|
|
||||||
}
|
|
||||||
// Test empty db iteration
|
|
||||||
db := NewMemoryDatabase()
|
|
||||||
numbers, _ := ReadAllCanonicalHashes(db, 0, 10, 10)
|
|
||||||
if len(numbers) != 0 {
|
|
||||||
t.Fatalf("No entry should be returned to iterate an empty db")
|
|
||||||
}
|
|
||||||
// Fill database with testing data.
|
|
||||||
for i := uint64(1); i <= 8; i++ {
|
|
||||||
WriteCanonicalHash(db, common.Hash{}, i)
|
|
||||||
}
|
|
||||||
for i, c := range cases {
|
|
||||||
numbers, _ := ReadAllCanonicalHashes(db, c.from, c.to, c.limit)
|
|
||||||
if !reflect.DeepEqual(numbers, c.expect) {
|
|
||||||
t.Fatalf("Case %d failed, want %v, got %v", i, c.expect, numbers)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestHashesInRange(t *testing.T) {
|
func TestHashesInRange(t *testing.T) {
|
||||||
mkHeader := func(number, seq int) *types.Header {
|
mkHeader := func(number, seq int) *types.Header {
|
||||||
h := types.Header{
|
h := types.Header{
|
||||||
|
|
@ -565,18 +526,6 @@ func TestHashesInRange(t *testing.T) {
|
||||||
total++
|
total++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if have, want := len(ReadAllHashesInRange(db, 10, 10)), 10; have != want {
|
|
||||||
t.Fatalf("Wrong number of hashes read, want %d, got %d", want, have)
|
|
||||||
}
|
|
||||||
if have, want := len(ReadAllHashesInRange(db, 10, 9)), 0; have != want {
|
|
||||||
t.Fatalf("Wrong number of hashes read, want %d, got %d", want, have)
|
|
||||||
}
|
|
||||||
if have, want := len(ReadAllHashesInRange(db, 0, 100)), total; have != want {
|
|
||||||
t.Fatalf("Wrong number of hashes read, want %d, got %d", want, have)
|
|
||||||
}
|
|
||||||
if have, want := len(ReadAllHashesInRange(db, 9, 10)), 9+10; have != want {
|
|
||||||
t.Fatalf("Wrong number of hashes read, want %d, got %d", want, have)
|
|
||||||
}
|
|
||||||
if have, want := len(ReadAllHashes(db, 10)), 10; have != want {
|
if have, want := len(ReadAllHashes(db, 10)), 10; have != want {
|
||||||
t.Fatalf("Wrong number of hashes read, want %d, got %d", want, have)
|
t.Fatalf("Wrong number of hashes read, want %d, got %d", want, have)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue