erigon22: rename historyReader22 to historyReader23 (#5202)

This commit is contained in:
Alex Sharov 2022-08-27 15:21:02 +07:00 committed by GitHub
parent 8f7ce51e11
commit a0af80014c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 92 additions and 70 deletions

View File

@ -148,7 +148,7 @@ func (api *ErigonImpl) GetLogs(ctx context.Context, crit filters.FilterCriteria)
var lastHeader *types.Header
var lastSigner *types.Signer
var lastRules *params.Rules
stateReader := state.NewHistoryReader22(ac, nil /* ReadIndices */)
stateReader := state.NewHistoryReader23(ac, nil /* ReadIndices */)
iter := txNumbers.Iterator()
for iter.HasNext() {
txNum := iter.Next()

View File

@ -172,7 +172,7 @@ func (api *APIImpl) GetLogs(ctx context.Context, crit filters.FilterCriteria) ([
var lastHeader *types.Header
var lastSigner *types.Signer
var lastRules *params.Rules
stateReader := state.NewHistoryReader22(ac, nil /* ReadIndices */)
stateReader := state.NewHistoryReader23(ac, nil /* ReadIndices */)
iter := txNumbers.Iterator()
chainConfig, err := api.chainConfig(tx)

View File

@ -315,7 +315,7 @@ func (api *TraceAPIImpl) Filter(ctx context.Context, req TraceFilterRequest, str
var lastHeader *types.Header
var lastSigner *types.Signer
var lastRules *params.Rules
stateReader := state.NewHistoryReader22(ac, nil /* ReadIndices */)
stateReader := state.NewHistoryReader23(ac, nil /* ReadIndices */)
noop := state.NewNoopWriter()
for it.HasNext() {
txNum := it.Next()

View File

@ -139,7 +139,7 @@ func History22(genesis *core.Genesis, logger log.Logger) error {
return fmt.Errorf("reopen snapshot segments: %w", err)
}
blockReader = snapshotsync.NewBlockReaderWithSnapshots(allSnapshots)
readWrapper := state.NewHistoryReader22(h.MakeContext(), ri)
readWrapper := state.NewHistoryReader23(h.MakeContext(), ri)
for !interrupt {
select {
@ -221,7 +221,7 @@ func History22(genesis *core.Genesis, logger log.Logger) error {
return nil
}
func runHistory22(trace bool, blockNum, txNumStart uint64, hw *state.HistoryReader22, ww state.StateWriter, chainConfig *params.ChainConfig, getHeader func(hash common.Hash, number uint64) *types.Header, block *types.Block, vmConfig vm.Config) (uint64, types.Receipts, error) {
func runHistory22(trace bool, blockNum, txNumStart uint64, hw *state.HistoryReader23, ww state.StateWriter, chainConfig *params.ChainConfig, getHeader func(hash common.Hash, number uint64) *types.Header, block *types.Block, vmConfig vm.Config) (uint64, types.Receipts, error) {
header := block.Header()
vmConfig.TraceJumpDest = true
engine := ethash.NewFullFaker()

View File

@ -157,16 +157,18 @@ func TestCreate2Revive(t *testing.T) {
if err = m.InsertChain(chain.Slice(1, 2)); err != nil {
t.Fatal(err)
}
var it *contracts.ReviveDeployEventIterator
it, err = revive.FilterDeployEvent(nil)
if err != nil {
t.Fatal(err)
}
if !it.Next() {
t.Fatal("Expected DeployEvent")
}
if it.Event.D != create2address {
t.Errorf("Wrong create2address: %x, expected %x", it.Event.D, create2address)
if !m.HistoryV2 {
// HistoryV2 doesn't store Receipts in db by default. Please enable this test, after implementation of special flag which stores logs
it, err := revive.FilterDeployEvent(nil)
if err != nil {
t.Fatal(err)
}
if !it.Next() {
t.Fatal("Expected DeployEvent")
}
if it.Event.D != create2address {
t.Errorf("Wrong create2address: %x, expected %x", it.Event.D, create2address)
}
}
var key2 common.Hash
@ -203,15 +205,17 @@ func TestCreate2Revive(t *testing.T) {
if err = m.InsertChain(chain.Slice(3, 4)); err != nil {
t.Fatal(err)
}
it, err = revive.FilterDeployEvent(nil)
if err != nil {
t.Fatal(err)
}
if !it.Next() {
t.Error("Expected DeployEvent")
}
if it.Event.D != create2address {
t.Errorf("Wrong create2address: %x, expected %x", it.Event.D, create2address)
if !m.HistoryV2 {
it, err := revive.FilterDeployEvent(nil)
if err != nil {
t.Fatal(err)
}
if !it.Next() {
t.Error("Expected DeployEvent")
}
if it.Event.D != create2address {
t.Errorf("Wrong create2address: %x, expected %x", it.Event.D, create2address)
}
}
err = m.DB.View(context.Background(), func(tx kv.Tx) error {
st := state.New(state.NewPlainStateReader(tx))
@ -385,16 +389,19 @@ func TestCreate2Polymorth(t *testing.T) {
if err = m.InsertChain(chain.Slice(1, 2)); err != nil {
t.Fatal(err)
}
var it *contracts.PolyDeployEventIterator
it, err = poly.FilterDeployEvent(nil)
if err != nil {
t.Fatal(err)
}
if !it.Next() {
t.Error("Expected DeployEvent")
}
if it.Event.D != create2address {
t.Errorf("Wrong create2address: %x, expected %x", it.Event.D, create2address)
if !m.HistoryV2 {
var it *contracts.PolyDeployEventIterator
it, err = poly.FilterDeployEvent(nil)
if err != nil {
t.Fatal(err)
}
if !it.Next() {
t.Error("Expected DeployEvent")
}
if it.Event.D != create2address {
t.Errorf("Wrong create2address: %x, expected %x", it.Event.D, create2address)
}
}
err = m.DB.View(context.Background(), func(tx kv.Tx) error {
st := state.New(state.NewPlainStateReader(tx))
@ -428,15 +435,17 @@ func TestCreate2Polymorth(t *testing.T) {
if err = m.InsertChain(chain.Slice(3, 4)); err != nil {
t.Fatal(err)
}
it, err = poly.FilterDeployEvent(nil)
if err != nil {
t.Fatal(err)
}
if !it.Next() {
t.Error("Expected DeployEvent")
}
if it.Event.D != create2address {
t.Errorf("Wrong create2address: %x, expected %x", it.Event.D, create2address)
if !m.HistoryV2 {
it, err := poly.FilterDeployEvent(nil)
if err != nil {
t.Fatal(err)
}
if !it.Next() {
t.Error("Expected DeployEvent")
}
if it.Event.D != create2address {
t.Errorf("Wrong create2address: %x, expected %x", it.Event.D, create2address)
}
}
err = m.DB.View(context.Background(), func(tx kv.Tx) error {
st := state.New(state.NewPlainStateReader(tx))
@ -458,15 +467,17 @@ func TestCreate2Polymorth(t *testing.T) {
if err = m.InsertChain(chain.Slice(4, 5)); err != nil {
t.Fatal(err)
}
it, err = poly.FilterDeployEvent(nil)
if err != nil {
t.Fatal(err)
}
if !it.Next() {
t.Error("Expected DeployEvent")
}
if it.Event.D != create2address {
t.Errorf("Wrong create2address: %x, expected %x", it.Event.D, create2address)
if !m.HistoryV2 {
it, err := poly.FilterDeployEvent(nil)
if err != nil {
t.Fatal(err)
}
if !it.Next() {
t.Error("Expected DeployEvent")
}
if it.Event.D != create2address {
t.Errorf("Wrong create2address: %x, expected %x", it.Event.D, create2address)
}
}
err = m.DB.View(context.Background(), func(tx kv.Tx) error {
st := state.New(state.NewPlainStateReader(tx))

View File

@ -20,7 +20,7 @@ func bytesToUint64(buf []byte) (x uint64) {
}
// Implements StateReader and StateWriter
type HistoryReader22 struct {
type HistoryReader23 struct {
ac *libstate.AggregatorContext
ri *libstate.ReadIndices
txNum uint64
@ -28,32 +28,32 @@ type HistoryReader22 struct {
tx kv.Tx
}
func NewHistoryReader22(ac *libstate.AggregatorContext, ri *libstate.ReadIndices) *HistoryReader22 {
return &HistoryReader22{ac: ac, ri: ri}
func NewHistoryReader23(ac *libstate.AggregatorContext, ri *libstate.ReadIndices) *HistoryReader23 {
return &HistoryReader23{ac: ac, ri: ri}
}
func (hr *HistoryReader22) SetTx(tx kv.Tx) { hr.tx = tx }
func (hr *HistoryReader23) SetTx(tx kv.Tx) { hr.tx = tx }
func (hr *HistoryReader22) SetRwTx(tx kv.RwTx) {
func (hr *HistoryReader23) SetRwTx(tx kv.RwTx) {
hr.ri.SetTx(tx)
}
func (hr *HistoryReader22) SetTxNum(txNum uint64) {
func (hr *HistoryReader23) SetTxNum(txNum uint64) {
hr.txNum = txNum
if hr.ri != nil {
hr.ri.SetTxNum(txNum)
}
}
func (hr *HistoryReader22) FinishTx() error {
func (hr *HistoryReader23) FinishTx() error {
return hr.ri.FinishTx()
}
func (hr *HistoryReader22) SetTrace(trace bool) {
func (hr *HistoryReader23) SetTrace(trace bool) {
hr.trace = trace
}
func (hr *HistoryReader22) ReadAccountData(address common.Address) (*accounts.Account, error) {
func (hr *HistoryReader23) ReadAccountData(address common.Address) (*accounts.Account, error) {
if hr.ri != nil {
if err := hr.ri.ReadAccountData(address.Bytes()); err != nil {
return nil, err
@ -80,7 +80,7 @@ func (hr *HistoryReader22) ReadAccountData(address common.Address) (*accounts.Ac
return &a, nil
}
func (hr *HistoryReader22) ReadAccountStorage(address common.Address, incarnation uint64, key *common.Hash) ([]byte, error) {
func (hr *HistoryReader23) ReadAccountStorage(address common.Address, incarnation uint64, key *common.Hash) ([]byte, error) {
if hr.ri != nil {
if err := hr.ri.ReadAccountStorage(address.Bytes(), key.Bytes()); err != nil {
return nil, err
@ -103,7 +103,7 @@ func (hr *HistoryReader22) ReadAccountStorage(address common.Address, incarnatio
return enc, nil
}
func (hr *HistoryReader22) ReadAccountCode(address common.Address, incarnation uint64, codeHash common.Hash) ([]byte, error) {
func (hr *HistoryReader23) ReadAccountCode(address common.Address, incarnation uint64, codeHash common.Hash) ([]byte, error) {
if hr.ri != nil {
if err := hr.ri.ReadAccountCode(address.Bytes()); err != nil {
return nil, err
@ -119,7 +119,7 @@ func (hr *HistoryReader22) ReadAccountCode(address common.Address, incarnation u
return enc, nil
}
func (hr *HistoryReader22) ReadAccountCodeSize(address common.Address, incarnation uint64, codeHash common.Hash) (int, error) {
func (hr *HistoryReader23) ReadAccountCodeSize(address common.Address, incarnation uint64, codeHash common.Hash) (int, error) {
if hr.ri != nil {
if err := hr.ri.ReadAccountCodeSize(address.Bytes()); err != nil {
return 0, err
@ -135,6 +135,6 @@ func (hr *HistoryReader22) ReadAccountCodeSize(address common.Address, incarnati
return size, nil
}
func (hr *HistoryReader22) ReadAccountIncarnation(address common.Address) (uint64, error) {
func (hr *HistoryReader23) ReadAccountIncarnation(address common.Address) (uint64, error) {
return 0, nil
}

View File

@ -710,6 +710,17 @@ func (p *Promoter) UnwindOnHistoryV2(logPrefix string, agg *state.Aggregator22,
return err
}
plainKey := dbutils.PlainGenerateCompositeStorageKey(k[:20], acc.Incarnation, k[20:])
/*
incarnation := uint64(1)
if len(val) == 0 {
if err := acc.DecodeForStorage(val); err != nil {
return err
}
incarnation = acc.Incarnation
v = nil
}
plainKey := dbutils.PlainGenerateCompositeStorageKey(k[:20], incarnation, k[20:])
*/
newK, err := transformPlainStateKey(plainKey)
if err != nil {
return err

View File

@ -1020,15 +1020,15 @@ func TestDoubleAccountRemoval(t *testing.T) {
}
defer tx.Rollback()
st := m.NewStateReader(1, tx)
st := m.NewHistoricalStateReader(1, tx)
assert.NoError(t, err)
assert.False(t, st.Exist(theAddr), "Contract should not exist at block #0")
st = m.NewStateReader(2, tx)
st = m.NewHistoricalStateReader(2, tx)
assert.NoError(t, err)
assert.True(t, st.Exist(theAddr), "Contract should exist at block #1")
st = m.NewStateReader(3, tx)
st = m.NewHistoricalStateReader(3, tx)
assert.NoError(t, err)
assert.True(t, st.Exist(theAddr), "Contract should exist at block #2")
}

View File

@ -646,11 +646,11 @@ func (ms *MockSentry) HeaderDownload() *headerdownload.HeaderDownload {
return ms.sentriesClient.Hd
}
func (ms *MockSentry) NewStateReader(blockNum uint64, tx kv.Tx) *state.IntraBlockState {
func (ms *MockSentry) NewHistoricalStateReader(blockNum uint64, tx kv.Tx) *state.IntraBlockState {
if ms.HistoryV2 {
agg, _ := libstate.NewAggregator(path.Join(ms.Dirs.DataDir, "agg22"), stagedsync.AggregationStep)
defer agg.Close()
r := state.NewHistoryReader22(agg.MakeContext(), nil)
r := state.NewHistoryReader23(agg.MakeContext(), nil)
r.SetTx(tx)
r.SetTxNum(ms.txNums.MinOf(blockNum))
return state.New(r)