···21212222// PrepareProposal implements [types.Application].
2323func (d *DIDPLCApplication) PrepareProposal(ctx context.Context, req *abcitypes.RequestPrepareProposal) (*abcitypes.ResponsePrepareProposal, error) {
2424- defer d.tree.Rollback()
2424+ defer d.DiscardChanges()
25252626 if req.Height == 2 {
2727 tx := Transaction[SetAuthoritativePlcArguments]{
···114114 if d.lastProcessedProposalHash == nil {
115115 // we didn't vote ACCEPT
116116 // we could rollback only eventually on FinalizeBlock, but why wait - rollback now for safety
117117- d.tree.Rollback()
117117+ d.DiscardChanges()
118118 }
119119 }()
120120···179179 }
180180 // a block other than the one we processed in ProcessProposal was decided
181181 // discard the current modified state, and process the decided block
182182- d.tree.Rollback()
182182+ d.DiscardChanges()
183183184184 txResults := make([]*processResult, len(req.Txs))
185185 for i, tx := range req.Txs {