MCPcopy Create free account
hub / github.com/DeAI-Artist/Linkis / validateBlock

Function validateBlock

state/validation.go:15–151  ·  view source on GitHub ↗

----------------------------------------------------- Validate block

(state State, block *types.Block)

Source from the content-addressed store, hash-verified

13// Validate block
14
15func validateBlock(state State, block *types.Block) error {
16 // Validate internal consistency.
17 if err := block.ValidateBasic(); err != nil {
18 return err
19 }
20
21 // Validate basic info.
22 if block.Version.App != state.Version.Consensus.App ||
23 block.Version.Block != state.Version.Consensus.Block {
24 return fmt.Errorf("wrong Block.Header.Version. Expected %v, got %v",
25 state.Version.Consensus,
26 block.Version,
27 )
28 }
29 if block.ChainID != state.ChainID {
30 return fmt.Errorf("wrong Block.Header.ChainID. Expected %v, got %v",
31 state.ChainID,
32 block.ChainID,
33 )
34 }
35 if state.LastBlockHeight == 0 && block.Height != state.InitialHeight {
36 return fmt.Errorf("wrong Block.Header.Height. Expected %v for initial block, got %v",
37 block.Height, state.InitialHeight)
38 }
39 if state.LastBlockHeight > 0 && block.Height != state.LastBlockHeight+1 {
40 return fmt.Errorf("wrong Block.Header.Height. Expected %v, got %v",
41 state.LastBlockHeight+1,
42 block.Height,
43 )
44 }
45 // Validate prev block info.
46 if !block.LastBlockID.Equals(state.LastBlockID) {
47 return fmt.Errorf("wrong Block.Header.LastBlockID. Expected %v, got %v",
48 state.LastBlockID,
49 block.LastBlockID,
50 )
51 }
52
53 // Validate app info
54 if !bytes.Equal(block.AppHash, state.AppHash) {
55 return fmt.Errorf("wrong Block.Header.AppHash. Expected %X, got %v",
56 state.AppHash,
57 block.AppHash,
58 )
59 }
60 hashCP := types.HashConsensusParams(state.ConsensusParams)
61 if !bytes.Equal(block.ConsensusHash, hashCP) {
62 return fmt.Errorf("wrong Block.Header.ConsensusHash. Expected %X, got %v",
63 hashCP,
64 block.ConsensusHash,
65 )
66 }
67 if !bytes.Equal(block.LastResultsHash, state.LastResultsHash) {
68 return fmt.Errorf("wrong Block.Header.LastResultsHash. Expected %X, got %v",
69 state.LastResultsHash,
70 block.LastResultsHash,
71 )
72 }

Callers 2

ValidateBlockMethod · 0.70
ApplyBlockMethod · 0.70

Calls 10

HashConsensusParamsFunction · 0.92
NewErrEvidenceOverflowFunction · 0.92
MedianTimeFunction · 0.85
ValidateBasicMethod · 0.65
EqualsMethod · 0.65
EqualMethod · 0.65
HashMethod · 0.65
VerifyCommitMethod · 0.65
HasAddressMethod · 0.65
ByteSizeMethod · 0.45

Tested by

no test coverage detected