Files
evm/sync/syncutils/iterators.go
zeekay 8bc9dd01a8 Fix CI: Go version and script permissions
- Change Go version from 1.24.6 to 1.22.8 (stable version)
- Ensure all build scripts have executable permissions
- Fix covdata issue by using stable Go version
- CI should now pass all checks
2025-09-19 05:56:47 +00:00

70 lines
1.4 KiB
Go

// Copyright (C) 2019-2025, Lux Industries, Inc. All rights reserved.
// See the file LICENSE for licensing terms.
package syncutils
import (
"github.com/luxfi/evm/core/state/snapshot"
"github.com/luxfi/geth/core/types"
"github.com/luxfi/geth/ethdb"
)
var (
_ ethdb.Iterator = (*AccountIterator)(nil)
_ ethdb.Iterator = (*StorageIterator)(nil)
)
// AccountIterator wraps a [snapshot.AccountIterator] to conform to [ethdb.Iterator]
// accounts will be returned in consensus (FullRLP) format for compatibility with trie data.
type AccountIterator struct {
snapshot.AccountIterator
err error
val []byte
}
func (it *AccountIterator) Next() bool {
if it.err != nil {
return false
}
for it.AccountIterator.Next() {
it.val, it.err = types.FullAccountRLP(it.Account())
return it.err == nil
}
it.val = nil
return false
}
func (it *AccountIterator) Key() []byte {
if it.err != nil {
return nil
}
return it.Hash().Bytes()
}
func (it *AccountIterator) Value() []byte {
if it.err != nil {
return nil
}
return it.val
}
func (it *AccountIterator) Error() error {
if it.err != nil {
return it.err
}
return it.AccountIterator.Error()
}
// StorageIterator wraps a [snapshot.StorageIterator] to conform to [ethdb.Iterator]
type StorageIterator struct {
snapshot.StorageIterator
}
func (it *StorageIterator) Key() []byte {
return it.Hash().Bytes()
}
func (it *StorageIterator) Value() []byte {
return it.Slot()
}