ValidateBlock validates an incoming block in advance of applying it to a snapshot (with ApplyValidBlock) and committing it to the blockchain (with CommitAppliedBlock).
(block, prev *legacy.Block)
| 124 | // to a snapshot (with ApplyValidBlock) and committing it to the |
| 125 | // blockchain (with CommitAppliedBlock). |
| 126 | func (c *Chain) ValidateBlock(block, prev *legacy.Block) error { |
| 127 | blockEnts := legacy.MapBlock(block) |
| 128 | prevEnts := legacy.MapBlock(prev) |
| 129 | err := validation.ValidateBlock(blockEnts, prevEnts, c.InitialBlockHash, c.ValidateTx) |
| 130 | if err != nil { |
| 131 | return errors.Sub(ErrBadBlock, err) |
| 132 | } |
| 133 | if block.Height > 1 { |
| 134 | err = validation.ValidateBlockSig(blockEnts, prevEnts.NextConsensusProgram) |
| 135 | } |
| 136 | return errors.Sub(ErrBadBlock, err) |
| 137 | } |
| 138 | |
| 139 | // ApplyValidBlock creates an updated snapshot without validating the |
| 140 | // block. |