github.com/koko1123/flow-go-1@v0.29.6/module/receipt_validator.go (about)

     1  package module
     2  
     3  import "github.com/koko1123/flow-go-1/model/flow"
     4  
     5  // ReceiptValidator is an interface which is used for validating
     6  // receipts with respect to current protocol state.
     7  type ReceiptValidator interface {
     8  
     9  	// Validate verifies that the ExecutionReceipt satisfies
    10  	// the following conditions:
    11  	// 	* is from Execution node with positive weight
    12  	//	* has valid signature
    13  	//	* chunks are in correct format
    14  	// 	* execution result has a valid parent and satisfies the subgraph check
    15  	// Returns nil if all checks passed successfully.
    16  	// Expected errors during normal operations:
    17  	// * engine.InvalidInputError
    18  	//   if receipt violates protocol condition
    19  	// * engine.UnverifiableInputError
    20  	//   if receipt's parent result is unknown
    21  	Validate(receipts *flow.ExecutionReceipt) error
    22  
    23  	// ValidatePayload verifies the ExecutionReceipts and ExecutionResults
    24  	// in the payload for compliance with the protocol:
    25  	// Receipts:
    26  	// 	* are from Execution node with positive weight
    27  	//	* have valid signature
    28  	//	* chunks are in correct format
    29  	//  * no duplicates in fork
    30  	// Results:
    31  	// 	* have valid parents and satisfy the subgraph check
    32  	//  * extend the execution tree, where the tree root is the latest
    33  	//    finalized block and only results from this fork are included
    34  	//  * no duplicates in fork
    35  	// Expected errors during normal operations:
    36  	// * engine.InvalidInputError
    37  	//   if some receipts in the candidate block violate protocol condition
    38  	// * engine.UnverifiableInputError
    39  	//   if for some of the receipts, their respective parent result is unknown
    40  	ValidatePayload(candidate *flow.Block) error
    41  }