Skip to content

Commit

Permalink
Remove unexpected block unwrapping (#3455)
Browse files Browse the repository at this point in the history
  • Loading branch information
StephenButtolph authored Oct 11, 2024
1 parent 9d6dba8 commit a7fe93b
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 16 deletions.
56 changes: 42 additions & 14 deletions vms/platformvm/block/executor/verifier.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,8 @@ func (v *verifier) BanffProposalBlock(b *block.BanffProposalBlock) error {
}

return v.proposalBlock(
&b.ApricotProposalBlock,
b,
b.Tx,
onDecisionState,
onCommitState,
onAbortState,
Expand Down Expand Up @@ -129,7 +130,12 @@ func (v *verifier) BanffStandardBlock(b *block.BanffStandardBlock) error {
}

feeCalculator := state.PickFeeCalculator(v.txExecutorBackend.Config, onAcceptState)
return v.standardBlock(&b.ApricotStandardBlock, feeCalculator, onAcceptState)
return v.standardBlock(
b,
b.Transactions,
feeCalculator,
onAcceptState,
)
}

func (v *verifier) ApricotAbortBlock(b *block.ApricotAbortBlock) error {
Expand Down Expand Up @@ -165,7 +171,17 @@ func (v *verifier) ApricotProposalBlock(b *block.ApricotProposalBlock) error {
timestamp = onCommitState.GetTimestamp() // Equal to parent timestamp
feeCalculator = state.NewStaticFeeCalculator(v.txExecutorBackend.Config, timestamp)
)
return v.proposalBlock(b, nil, onCommitState, onAbortState, feeCalculator, nil, nil, nil)
return v.proposalBlock(
b,
b.Tx,
nil,
onCommitState,
onAbortState,
feeCalculator,
nil,
nil,
nil,
)
}

func (v *verifier) ApricotStandardBlock(b *block.ApricotStandardBlock) error {
Expand All @@ -183,7 +199,12 @@ func (v *verifier) ApricotStandardBlock(b *block.ApricotStandardBlock) error {
timestamp = onAcceptState.GetTimestamp() // Equal to parent timestamp
feeCalculator = state.NewStaticFeeCalculator(v.txExecutorBackend.Config, timestamp)
)
return v.standardBlock(b, feeCalculator, onAcceptState)
return v.standardBlock(
b,
b.Transactions,
feeCalculator,
onAcceptState,
)
}

func (v *verifier) ApricotAtomicBlock(b *block.ApricotAtomicBlock) error {
Expand Down Expand Up @@ -360,7 +381,8 @@ func (v *verifier) commitBlock(b block.Block) error {

// proposalBlock populates the state of this block if [nil] is returned
func (v *verifier) proposalBlock(
b *block.ApricotProposalBlock,
b block.Block,
tx *txs.Tx,
onDecisionState state.Diff,
onCommitState state.Diff,
onAbortState state.Diff,
Expand All @@ -374,19 +396,19 @@ func (v *verifier) proposalBlock(
OnAbortState: onAbortState,
Backend: v.txExecutorBackend,
FeeCalculator: feeCalculator,
Tx: b.Tx,
Tx: tx,
}

if err := b.Tx.Unsigned.Visit(&txExecutor); err != nil {
txID := b.Tx.ID()
if err := tx.Unsigned.Visit(&txExecutor); err != nil {
txID := tx.ID()
v.MarkDropped(txID, err) // cache tx as dropped
return err
}

onCommitState.AddTx(b.Tx, status.Committed)
onAbortState.AddTx(b.Tx, status.Aborted)
onCommitState.AddTx(tx, status.Committed)
onAbortState.AddTx(tx, status.Aborted)

v.Mempool.Remove(b.Tx)
v.Mempool.Remove(tx)

blkID := b.ID()
v.blkIDToState[blkID] = &blockState{
Expand All @@ -413,16 +435,22 @@ func (v *verifier) proposalBlock(

// standardBlock populates the state of this block if [nil] is returned
func (v *verifier) standardBlock(
b *block.ApricotStandardBlock,
b block.Block,
txs []*txs.Tx,
feeCalculator fee.Calculator,
onAcceptState state.Diff,
) error {
inputs, atomicRequests, onAcceptFunc, err := v.processStandardTxs(b.Transactions, feeCalculator, onAcceptState, b.Parent())
inputs, atomicRequests, onAcceptFunc, err := v.processStandardTxs(
txs,
feeCalculator,
onAcceptState,
b.Parent(),
)
if err != nil {
return err
}

v.Mempool.Remove(b.Transactions...)
v.Mempool.Remove(txs...)

blkID := b.ID()
v.blkIDToState[blkID] = &blockState{
Expand Down
5 changes: 3 additions & 2 deletions vms/platformvm/block/executor/verifier_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1184,8 +1184,9 @@ func TestBlockExecutionWithComplexity(t *testing.T) {
}

require.Contains(verifier.blkIDToState, blkID)
onAcceptState := verifier.blkIDToState[blkID].onAcceptState
require.Equal(test.expectedFeeState, onAcceptState.GetFeeState())
blockState := verifier.blkIDToState[blkID]
require.Equal(blk, blockState.statelessBlock)
require.Equal(test.expectedFeeState, blockState.onAcceptState.GetFeeState())
})
}
}

0 comments on commit a7fe93b

Please sign in to comment.