-
Notifications
You must be signed in to change notification settings - Fork 0
/
validation.go
51 lines (40 loc) · 1.41 KB
/
validation.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package validation
import "github.com/hyperledger/fabric/protos/common"
// Argument defines the argument for validation
type Argument interface {
Dependency
// Arg returns the bytes of the argument
Arg() []byte
}
// Dependency marks a dependency passed to the Init() method
type Dependency interface{}
// ContextDatum defines additional data that is passed from the validator
// into the Validate() invocation
type ContextDatum interface{}
// Plugin validates transactions
type Plugin interface {
// Validate returns nil if the action at the given position inside the transaction
// at the given position in the given block is valid, or an error if not.
Validate(block *common.Block, namespace string, txPosition int, actionPosition int, contextData ...ContextDatum) error
// Init injects dependencies into the instance of the Plugin
Init(dependencies ...Dependency) error
}
// PluginFactory creates a new instance of a Plugin
type PluginFactory interface {
New() Plugin
}
// ExecutionFailureError indicates that the validation
// failed because of an execution problem, and thus
// the transaction validation status could not be computed
type ExecutionFailureError struct {
Reason string
}
// Error conveys this is an error, and also contains
// the reason for the error
func (e *ExecutionFailureError) Error() string {
return e.Reason
}