net.corda.core.contracts.clauses / GroupClauseVerifier / verify

# verify

`open fun verify(tx: TransactionForContract, inputs: List<ContractState>, outputs: List<ContractState>, commands: List<AuthenticatedObject<C>>, groupingKey: Unit?): Set<C>`

Verify the transaction matches the conditions from this clause. For example, a "no zero amount output" clause would check each of the output states that it applies to, looking for a zero amount, and throw IllegalStateException if any matched.

### Parameters

`tx` - the full transaction being verified. This is provided for cases where clauses need to access states or commands outside of their normal scope.
`inputs` - input states which are relevant to this clause. By default this is the set passed into verifyClause, but may be further reduced by clauses such as GroupClauseVerifier.
`outputs` - output states which are relevant to this clause. By default this is the set passed into verifyClause, but may be further reduced by clauses such as GroupClauseVerifier.
`commands` - commands which are relevant to this clause. By default this is the set passed into verifyClause, but may be further reduced by clauses such as GroupClauseVerifier.
`groupingKey` - a grouping key applied to states and commands, where applicable. Taken from TransactionForContract.InOutGroup.

Return
the set of commands that are consumed IF this clause is matched, and cannot be used to match a later clause. This would normally be all commands matching "requiredCommands" for this clause, but some verify() functions may do further filtering on possible matches, and return a subset. This may also include commands that were not required (for example the Exit command for fungible assets is optional).