Documentation ¶
Index ¶
Constants ¶
const AllowedCharsCollectionName = "[A-Za-z0-9_-]+"
previously imported from ccmetadata.AllowedCharsCollectionName but could not change to avoid non-determinism
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Capabilities ¶
type Capabilities interface { vc.Capabilities }
Capabilities is the local interface that used to generate mocks for foreign interface.
type IdentityDeserializer ¶
type IdentityDeserializer interface { vi.IdentityDeserializer }
IdentityDeserializer is the local interface that used to generate mocks for foreign interface.
type PolicyEvaluator ¶
type PolicyEvaluator interface { vp.PolicyEvaluator }
PolicyEvaluator is the local interface that used to generate mocks for foreign interface.
type StateBasedValidator ¶
type StateBasedValidator interface { // PreValidate sets the internal data structures of the validator needed before validation // of transaction `txNum` in the specified block can proceed PreValidate(txNum uint64, block *common.Block) // Validate determines whether the transaction on the specified channel at the specified height // is valid according to its chaincode-level endorsement policy and any key-level validation // parametres Validate(cc string, blockNum, txNum uint64, rwset, prp, ep []byte, endorsements []*peer.Endorsement) commonerrors.TxValidationError // PostValidate sets the internal data structures of the validator needed after the validation // code was determined for a transaction on the specified channel at the specified height PostValidate(cc string, blockNum, txNum uint64, err error) }
StateBasedValidator is used to validate a transaction that performs changes to KVS keys that use key-level endorsement policies. This interface is supposed to be called by any validator plugin (including the default validator plugin). The functions of this interface are to be called as follows:
- the validator plugin calls PreValidate (even before determining whether the transaction is valid)
- the validator plugin calls Validate before or after having determined the validity of the transaction based on other considerations
- the validator plugin determines the overall validity of the transaction and then calls PostValidate
type StateFetcher ¶
type StateFetcher interface { vs.StateFetcher }
StateFetcher is the local interface that used to generate mocks for foreign interface.
type Validator ¶
type Validator struct {
// contains filtered or unexported fields
}
Validator implements the default transaction validation policy, which is to check the correctness of the read-write set and the endorsement signatures against an endorsement policy that is supplied as argument to every invoke
func New ¶
func New(c vc.Capabilities, s vs.StateFetcher, d vi.IdentityDeserializer, pe vp.PolicyEvaluator) *Validator
New creates a new instance of the default VSCC Typically this will only be invoked once per peer
func (*Validator) Validate ¶
func (vscc *Validator) Validate( block *common.Block, namespace string, txPosition int, actionPosition int, policyBytes []byte, ) commonerrors.TxValidationError
Validate validates the given envelope corresponding to a transaction with an endorsement policy as given in its serialized form. Note that in the case of dependencies in a block, such as tx_n modifying the endorsement policy for key a and tx_n+1 modifying the value of key a, Validate(tx_n+1) will block until Validate(tx_n) has been resolved. If working with a limited number of goroutines for parallel validation, ensure that they are allocated to transactions in ascending order.
func (*Validator) ValidateLSCCInvocation ¶
func (vscc *Validator) ValidateLSCCInvocation( chid string, env *common.Envelope, cap *pb.ChaincodeActionPayload, payl *common.Payload, ac vc.Capabilities, ) commonerrors.TxValidationError