diff --git a/vms/avm/block/executor/block.go b/vms/avm/block/executor/block.go index 109e6708b0bf..01e0c5d4212a 100644 --- a/vms/avm/block/executor/block.go +++ b/vms/avm/block/executor/block.go @@ -246,14 +246,12 @@ func (b *Block) Accept(context.Context) error { return err } - txChecksum, utxoChecksum := b.manager.state.Checksums() b.manager.backend.Ctx.Log.Trace( "accepted block", zap.Stringer("blkID", blkID), zap.Uint64("height", b.Height()), zap.Stringer("parentID", b.Parent()), - zap.Stringer("txChecksum", txChecksum), - zap.Stringer("utxoChecksum", utxoChecksum), + zap.Stringer("checksum", b.manager.state.Checksum()), ) return nil } diff --git a/vms/avm/block/executor/block_test.go b/vms/avm/block/executor/block_test.go index 7a34c7187882..027c12681046 100644 --- a/vms/avm/block/executor/block_test.go +++ b/vms/avm/block/executor/block_test.go @@ -749,7 +749,7 @@ func TestBlockAccept(t *testing.T) { // because we mock the call to shared memory mockManagerState.EXPECT().CommitBatch().Return(nil, nil) mockManagerState.EXPECT().Abort() - mockManagerState.EXPECT().Checksums().Return(ids.Empty, ids.Empty) + mockManagerState.EXPECT().Checksum().Return(ids.Empty) mockSharedMemory := atomicmock.NewSharedMemory(ctrl) mockSharedMemory.EXPECT().Apply(gomock.Any(), gomock.Any()).Return(nil) diff --git a/vms/avm/state/state.go b/vms/avm/state/state.go index 9c49fa119e75..bef8f0a371be 100644 --- a/vms/avm/state/state.go +++ b/vms/avm/state/state.go @@ -89,8 +89,8 @@ type State interface { // pending changes to the base database. CommitBatch() (database.Batch, error) - // Checksums returns the current TxChecksum and UTXOChecksum. - Checksums() (txChecksum ids.ID, utxoChecksum ids.ID) + // Checksum returns the current state checksum. + Checksum() ids.ID Close() error } @@ -134,9 +134,6 @@ type state struct { lastAccepted, persistedLastAccepted ids.ID timestamp, persistedTimestamp time.Time singletonDB database.Database - - trackChecksum bool - txChecksum ids.ID } func New( @@ -183,7 +180,7 @@ func New( return nil, err } - s := &state{ + return &state{ parser: parser, db: db, @@ -204,10 +201,7 @@ func New( blockDB: blockDB, singletonDB: singletonDB, - - trackChecksum: trackChecksums, - } - return s, s.initTxChecksum() + }, nil } func (s *state) GetUTXO(utxoID ids.ID) (*avax.UTXO, error) { @@ -264,7 +258,6 @@ func (s *state) GetTx(txID ids.ID) (*txs.Tx, error) { func (s *state) AddTx(tx *txs.Tx) { txID := tx.ID() - s.updateTxChecksum(txID) s.addedTxs[txID] = tx } @@ -500,36 +493,6 @@ func (s *state) writeMetadata() error { return nil } -func (s *state) Checksums() (ids.ID, ids.ID) { - return s.txChecksum, s.utxoState.Checksum() -} - -func (s *state) initTxChecksum() error { - if !s.trackChecksum { - return nil - } - - txIt := s.txDB.NewIterator() - defer txIt.Release() - - for txIt.Next() { - txIDBytes := txIt.Key() - - txID, err := ids.ToID(txIDBytes) - if err != nil { - return err - } - - s.updateTxChecksum(txID) - } - - return txIt.Error() -} - -func (s *state) updateTxChecksum(modifiedID ids.ID) { - if !s.trackChecksum { - return - } - - s.txChecksum = s.txChecksum.XOR(modifiedID) +func (s *state) Checksum() ids.ID { + return s.utxoState.Checksum() } diff --git a/vms/avm/state/statemock/state.go b/vms/avm/state/statemock/state.go index f7dfce3c6614..1ab1dae38700 100644 --- a/vms/avm/state/statemock/state.go +++ b/vms/avm/state/statemock/state.go @@ -93,19 +93,18 @@ func (mr *StateMockRecorder) AddUTXO(utxo any) *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddUTXO", reflect.TypeOf((*State)(nil).AddUTXO), utxo) } -// Checksums mocks base method. -func (m *State) Checksums() (ids.ID, ids.ID) { +// Checksum mocks base method. +func (m *State) Checksum() ids.ID { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Checksums") + ret := m.ctrl.Call(m, "Checksum") ret0, _ := ret[0].(ids.ID) - ret1, _ := ret[1].(ids.ID) - return ret0, ret1 + return ret0 } -// Checksums indicates an expected call of Checksums. -func (mr *StateMockRecorder) Checksums() *gomock.Call { +// Checksum indicates an expected call of Checksum. +func (mr *StateMockRecorder) Checksum() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Checksums", reflect.TypeOf((*State)(nil).Checksums)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Checksum", reflect.TypeOf((*State)(nil).Checksum)) } // Close mocks base method. diff --git a/vms/platformvm/block/executor/acceptor.go b/vms/platformvm/block/executor/acceptor.go index a6066308e267..45409c69a7ab 100644 --- a/vms/platformvm/block/executor/acceptor.go +++ b/vms/platformvm/block/executor/acceptor.go @@ -110,7 +110,7 @@ func (a *acceptor) ApricotAtomicBlock(b *block.ApricotAtomicBlock) error { zap.Stringer("blkID", blkID), zap.Uint64("height", b.Height()), zap.Stringer("parentID", b.Parent()), - zap.Stringer("utxoChecksum", a.state.Checksum()), + zap.Stringer("checksum", a.state.Checksum()), ) return nil @@ -180,7 +180,7 @@ func (a *acceptor) optionBlock(b block.Block, blockType string) error { zap.Stringer("blkID", blkID), zap.Uint64("height", b.Height()), zap.Stringer("parentID", parentID), - zap.Stringer("utxoChecksum", a.state.Checksum()), + zap.Stringer("checksum", a.state.Checksum()), ) return nil @@ -212,7 +212,7 @@ func (a *acceptor) proposalBlock(b block.Block, blockType string) { zap.Stringer("blkID", blkID), zap.Uint64("height", b.Height()), zap.Stringer("parentID", b.Parent()), - zap.Stringer("utxoChecksum", a.state.Checksum()), + zap.Stringer("checksum", a.state.Checksum()), ) } @@ -259,7 +259,7 @@ func (a *acceptor) standardBlock(b block.Block, blockType string) error { zap.Stringer("blkID", blkID), zap.Uint64("height", b.Height()), zap.Stringer("parentID", b.Parent()), - zap.Stringer("utxoChecksum", a.state.Checksum()), + zap.Stringer("checksum", a.state.Checksum()), ) return nil