> For the complete documentation index, see [llms.txt](https://docs.talus.network/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.talus.network/talus-docs-v2.1.0/reference/move/nexus_interface/verifier.md).

# verifier

* [Struct `VerifierMethodId`](#struct-verifiermethodid)
* [Struct `LeaderStampData`](#struct-leaderstampdata)
* [Struct `RegisteredKeyStampData`](#struct-registeredkeystampdata)
* [Struct `ExternalVerifierStampData`](#struct-externalverifierstampdata)
* [Struct `RegisteredKeyAuxiliary`](#struct-registeredkeyauxiliary)
* [Struct `ToolInvocationNoncePreimage`](#struct-toolinvocationnoncepreimage)
* [Struct `CanonicalToolInput`](#struct-canonicaltoolinput)
* [Struct `VerificationVerdict`](#struct-verificationverdict)
* [Enum `ToolVerifierMode`](#enum-toolverifiermode)
* [Enum `FailureEvidenceKind`](#enum-failureevidencekind)
* [Enum `ToolVerifierSupport`](#enum-toolverifiersupport)
* [Enum `LeaderTarget`](#enum-leadertarget)
* [Enum `VerifierDecision`](#enum-verifierdecision)
* [Constants](#constants)
* [Function `verifier_mode_none`](#function-verifier_mode_none)
* [Function `verifier_mode_registered_key`](#function-verifier_mode_registered_key)
* [Function `verifier_mode_external`](#function-verifier_mode_external)
* [Function `failure_evidence_kind_tool_evidence`](#function-failure_evidence_kind_tool_evidence)
* [Function `failure_evidence_kind_leader_evidence`](#function-failure_evidence_kind_leader_evidence)
* [Function `committed_result_evidence_is_leader_failure`](#function-committed_result_evidence_is_leader_failure)
* [Function `committed_result_evidence_is_tool_failure`](#function-committed_result_evidence_is_tool_failure)
* [Function `new_method_id`](#function-new_method_id)
* [Function `method_tool_id`](#function-method_tool_id)
* [Function `support_registered_key`](#function-support_registered_key)
* [Function `support_external`](#function-support_external)
* [Function `support_matches_mode`](#function-support_matches_mode)
* [Function `support_method`](#function-support_method)
* [Function `leader_target_onchain`](#function-leader_target_onchain)
* [Function `leader_target_offchain`](#function-leader_target_offchain)
* [Function `leader_stamp_data`](#function-leader_stamp_data)
* [Function `leader_stamp_leader_cap_id`](#function-leader_stamp_leader_cap_id)
* [Function `leader_stamp_target`](#function-leader_stamp_target)
* [Function `leader_target_is_offchain`](#function-leader_target_is_offchain)
* [Function `leader_target_tool_id`](#function-leader_target_tool_id)
* [Function `leader_target_verifier_witness_id`](#function-leader_target_verifier_witness_id)
* [Function `registered_key_stamp_data`](#function-registered_key_stamp_data)
* [Function `registered_key_stamp_input_hash`](#function-registered_key_stamp_input_hash)
* [Function `registered_key_stamp_output_hash`](#function-registered_key_stamp_output_hash)
* [Function `registered_key_stamp_nonce`](#function-registered_key_stamp_nonce)
* [Function `external_stamp_data`](#function-external_stamp_data)
* [Function `external_stamp_output_hash`](#function-external_stamp_output_hash)
* [Function `registered_key_auxiliary`](#function-registered_key_auxiliary)
* [Function `auxiliary_input_hash`](#function-auxiliary_input_hash)
* [Function `auxiliary_nonce`](#function-auxiliary_nonce)
* [Function `auxiliary_leader_signature`](#function-auxiliary_leader_signature)
* [Function `auxiliary_tool_signature`](#function-auxiliary_tool_signature)
* [Function `tool_invocation_nonce`](#function-tool_invocation_nonce)
* [Function `registered_key_tool_signature_message`](#function-registered_key_tool_signature_message)
* [Function `output_sha256`](#function-output_sha256)
* [Function `new_none`](#function-new_none)
* [Function `new_accept`](#function-new_accept)
* [Function `new_reject`](#function-new_reject)
* [Function `new_registered_key_verdict`](#function-new_registered_key_verdict)
* [Function `verdict_witness_id`](#function-verdict_witness_id)
* [Function `verdict_decision`](#function-verdict_decision)
* [Function `verdict_output_hash`](#function-verdict_output_hash)
* [Function `consume_verdict`](#function-consume_verdict)
* [Function `decision_is_accept`](#function-decision_is_accept)
* [Function `decision_reason`](#function-decision_reason)

### Struct `VerifierMethodId`

Concrete non-generic external verifier target bound to one Tool.

```move
public struct VerifierMethodId has copy, drop, store
```

<details>

<summary>Fields</summary>

`tool_id: sui::object::IDpackage_id: sui::object::IDmodule_name: std::ascii::Stringfunction_name: std::ascii::String`

</details>

#### Struct `LeaderStampData`

Exact data stored under the LeaderRegistry worksheet stamp.

```move
public struct LeaderStampData has copy, drop, store
```

<details>

<summary>Fields</summary>

`leader_cap_id: sui::object::IDtarget:` [`nexus_interface::verifier::LeaderTarget`](#nexus_interface_verifier_LeaderTarget)

</details>

#### Struct `RegisteredKeyStampData`

Hash bindings stored under the singleton RegisteredKey witness.

```move
public struct RegisteredKeyStampData has copy, drop, store
```

<details>

<summary>Fields</summary>

`input_hash: vector<u8>output_hash: vector<u8>nonce: vector<u8>`

</details>

#### Struct `ExternalVerifierStampData`

Output binding stored under an External verifier witness.

```move
public struct ExternalVerifierStampData has copy, drop, store
```

<details>

<summary>Fields</summary>

`output_hash: vector<u8>`

</details>

#### Struct `RegisteredKeyAuxiliary`

Strict BCS auxiliary for the built-in two-signature scheme.

```move
public struct RegisteredKeyAuxiliary has copy, drop, store
```

<details>

<summary>Fields</summary>

`input_hash: vector<u8>nonce: vector<u8>leader_signature: vector<u8>tool_signature: vector<u8>`

</details>

#### Struct `ToolInvocationNoncePreimage`

Canonical BCS identity for one logical off-chain Tool invocation.

```move
public struct ToolInvocationNoncePreimage has copy, drop, store
```

<details>

<summary>Fields</summary>

`execution_id: sui::object::IDwalk_index: u64vertex_name: vector<u8>iteration: u64`

</details>

#### Struct `CanonicalToolInput`

One canonical port-name/data pair in the RegisteredKey input transcript.

```move
public struct CanonicalToolInput has copy, drop, store
```

<details>

<summary>Fields</summary>

`port_name: vector<u8>data:` [`nexus_primitives::data::NexusData`](/talus-docs-v2.1.0/reference/move/nexus_primitives/data.md#nexus_primitives_data_NexusData)

</details>

#### Struct `VerificationVerdict`

Same-PTB hot potato produced by a verifier and consumed by offchain submission.

```move
public struct VerificationVerdict
```

<details>

<summary>Fields</summary>

`output:` [`nexus_primitives::tagged_output::TaggedOutput`](/talus-docs-v2.1.0/reference/move/nexus_primitives/tagged_output.md#nexus_primitives_tagged_output_TaggedOutput)`verifier_witness_id: std::option::Option<sui::object::ID>decision:` [`nexus_interface::verifier::VerifierDecision`](#nexus_interface_verifier_VerifierDecision)

</details>

#### Enum `ToolVerifierMode`

Verification selected by one offchain DAG vertex.

```move
public enum ToolVerifierMode has copy, drop, store
```

<details>

<summary>Variants</summary>

Variant `None`Variant `RegisteredKey`Variant `External`

</details>

#### Enum `FailureEvidenceKind`

Identifies terminal failure evidence produced by a Tool execution or verifier.

```move
public enum FailureEvidenceKind has copy, drop, store
```

<details>

<summary>Variants</summary>

Variant `ToolEvidence`Variant `LeaderEvidence`

</details>

#### Enum `ToolVerifierSupport`

The one verified mode globally supported by an off-chain Tool.

```move
public enum ToolVerifierSupport has copy, drop, store
```

<details>

<summary>Variants</summary>

Variant `RegisteredKey`Variant `Externalmethod_id:` [`nexus_interface::verifier::VerifierMethodId`](#nexus_interface_verifier_VerifierMethodId)

</details>

#### Enum `LeaderTarget`

The execution target authenticated by the leader stamp.

```move
public enum LeaderTarget has copy, drop, store
```

<details>

<summary>Variants</summary>

Variant `Onchaintool_witness_id: sui::object::ID`Variant `Offchaintool_id: sui::object::IDverifier_witness_id: std::option::Option<sui::object::ID>`

</details>

#### Enum `VerifierDecision`

The only decision a Tool verifier may make.

```move
public enum VerifierDecision has copy, drop, store
```

<details>

<summary>Variants</summary>

Variant `Accept`Variant `Rejectreason: std::option::Option<vector<u8>>`

</details>

#### Constants

```move
#[error]
const EInvalidVerifierData: vector<u8> = b"Verifier hashes, nonce, or signatures have invalid lengths";
```

```move
#[error]
const EInvalidVerifierMethod: vector<u8> = b"Verifier module and function must be non-empty";
```

```move
#[error]
const EWrongLeaderTarget: vector<u8> = b"Leader target kind does not match the requested field";
```

```move
const SHA256_LEN: u64 = 32;
```

```move
const ED25519_SIGNATURE_LEN: u64 = 64;
```

```move
const MAX_REJECT_REASON_LEN: u64 = 1024;
```

```move
const DEFAULT_REJECT_REASON: vector<u8> = vector[84, 111, 111, 108, 32, 118, 101, 114, 105, 102, 105, 99, 97, 116, 105, 111, 110, 32, 102, 97, 105, 108, 101, 100];
```

```move
const INVOCATION_NONCE_DOMAIN: vector<u8> = vector[110, 101, 120, 117, 115, 46, 100, 105, 114, 101, 99, 116, 46, 118, 51, 46, 105, 110, 118, 111, 99, 97, 116, 105, 111, 110, 45, 110, 111, 110, 99, 101];
```

```move
const TOOL_RESPONSE_DOMAIN: vector<u8> = vector[110, 101, 120, 117, 115, 46, 100, 105, 114, 101, 99, 116, 46, 118, 51, 46, 116, 111, 111, 108, 45, 114, 101, 115, 112, 111, 110, 115, 101];
```

```move
const RAW_OUTPUT_DOMAIN: vector<u8> = vector[110, 101, 120, 117, 115, 46, 100, 105, 114, 101, 99, 116, 46, 118, 51, 46, 114, 97, 119, 45, 111, 117, 116, 112, 117, 116];
```

#### Function `verifier_mode_none`

```move
public fun verifier_mode_none(): nexus_interface::verifier::ToolVerifierMode
```

#### Function `verifier_mode_registered_key`

```move
public fun verifier_mode_registered_key(): nexus_interface::verifier::ToolVerifierMode
```

#### Function `verifier_mode_external`

```move
public fun verifier_mode_external(): nexus_interface::verifier::ToolVerifierMode
```

#### Function `failure_evidence_kind_tool_evidence`

```move
public fun failure_evidence_kind_tool_evidence(): nexus_interface::verifier::FailureEvidenceKind
```

#### Function `failure_evidence_kind_leader_evidence`

```move
public fun failure_evidence_kind_leader_evidence(): nexus_interface::verifier::FailureEvidenceKind
```

#### Function `committed_result_evidence_is_leader_failure`

```move
public fun committed_result_evidence_is_leader_failure(evidence: &std::option::Option<nexus_interface::verifier::FailureEvidenceKind>): bool
```

#### Function `committed_result_evidence_is_tool_failure`

```move
public fun committed_result_evidence_is_tool_failure(evidence: &std::option::Option<nexus_interface::verifier::FailureEvidenceKind>): bool
```

#### Function `new_method_id`

```move
public fun new_method_id(tool_id: sui::object::ID, package_id: sui::object::ID, module_name: std::ascii::String, function_name: std::ascii::String): nexus_interface::verifier::VerifierMethodId
```

#### Function `method_tool_id`

```move
public fun method_tool_id(self: &nexus_interface::verifier::VerifierMethodId): sui::object::ID
```

#### Function `support_registered_key`

```move
public fun support_registered_key(): nexus_interface::verifier::ToolVerifierSupport
```

#### Function `support_external`

```move
public fun support_external(method_id: nexus_interface::verifier::VerifierMethodId): nexus_interface::verifier::ToolVerifierSupport
```

#### Function `support_matches_mode`

```move
public fun support_matches_mode(self: &nexus_interface::verifier::ToolVerifierSupport, mode: nexus_interface::verifier::ToolVerifierMode): bool
```

#### Function `support_method`

```move
public fun support_method(self: &nexus_interface::verifier::ToolVerifierSupport): std::option::Option<nexus_interface::verifier::VerifierMethodId>
```

#### Function `leader_target_onchain`

```move
public fun leader_target_onchain(tool_witness_id: sui::object::ID): nexus_interface::verifier::LeaderTarget
```

#### Function `leader_target_offchain`

```move
public fun leader_target_offchain(tool_id: sui::object::ID, verifier_witness_id: std::option::Option<sui::object::ID>): nexus_interface::verifier::LeaderTarget
```

#### Function `leader_stamp_data`

```move
public fun leader_stamp_data(leader_cap_id: sui::object::ID, target: nexus_interface::verifier::LeaderTarget): nexus_interface::verifier::LeaderStampData
```

#### Function `leader_stamp_leader_cap_id`

```move
public fun leader_stamp_leader_cap_id(self: &nexus_interface::verifier::LeaderStampData): sui::object::ID
```

#### Function `leader_stamp_target`

```move
public fun leader_stamp_target(self: &nexus_interface::verifier::LeaderStampData): nexus_interface::verifier::LeaderTarget
```

#### Function `leader_target_is_offchain`

```move
public fun leader_target_is_offchain(self: &nexus_interface::verifier::LeaderTarget): bool
```

#### Function `leader_target_tool_id`

```move
public fun leader_target_tool_id(self: &nexus_interface::verifier::LeaderTarget): sui::object::ID
```

#### Function `leader_target_verifier_witness_id`

```move
public fun leader_target_verifier_witness_id(self: &nexus_interface::verifier::LeaderTarget): std::option::Option<sui::object::ID>
```

#### Function `registered_key_stamp_data`

```move
public fun registered_key_stamp_data(input_hash: vector<u8>, output_hash: vector<u8>, nonce: vector<u8>): nexus_interface::verifier::RegisteredKeyStampData
```

#### Function `registered_key_stamp_input_hash`

```move
public fun registered_key_stamp_input_hash(self: &nexus_interface::verifier::RegisteredKeyStampData): vector<u8>
```

#### Function `registered_key_stamp_output_hash`

```move
public fun registered_key_stamp_output_hash(self: &nexus_interface::verifier::RegisteredKeyStampData): vector<u8>
```

#### Function `registered_key_stamp_nonce`

```move
public fun registered_key_stamp_nonce(self: &nexus_interface::verifier::RegisteredKeyStampData): vector<u8>
```

#### Function `external_stamp_data`

```move
public fun external_stamp_data(output_hash: vector<u8>): nexus_interface::verifier::ExternalVerifierStampData
```

#### Function `external_stamp_output_hash`

```move
public fun external_stamp_output_hash(self: &nexus_interface::verifier::ExternalVerifierStampData): vector<u8>
```

#### Function `registered_key_auxiliary`

```move
public fun registered_key_auxiliary(input_hash: vector<u8>, nonce: vector<u8>, leader_signature: vector<u8>, tool_signature: vector<u8>): nexus_interface::verifier::RegisteredKeyAuxiliary
```

#### Function `auxiliary_input_hash`

```move
public fun auxiliary_input_hash(self: &nexus_interface::verifier::RegisteredKeyAuxiliary): vector<u8>
```

#### Function `auxiliary_nonce`

```move
public fun auxiliary_nonce(self: &nexus_interface::verifier::RegisteredKeyAuxiliary): vector<u8>
```

#### Function `auxiliary_leader_signature`

```move
public fun auxiliary_leader_signature(self: &nexus_interface::verifier::RegisteredKeyAuxiliary): vector<u8>
```

#### Function `auxiliary_tool_signature`

```move
public fun auxiliary_tool_signature(self: &nexus_interface::verifier::RegisteredKeyAuxiliary): vector<u8>
```

#### Function `tool_invocation_nonce`

Derives the nonce for one logical off-chain Tool invocation.

```move
public fun tool_invocation_nonce(execution_id: sui::object::ID, walk_index: u64, vertex_name: vector<u8>, iteration: u64): vector<u8>
```

#### Function `registered_key_tool_signature_message`

Builds the exact nonce-bound message signed by a RegisteredKey Tool.

```move
public fun registered_key_tool_signature_message(leader_signature: vector<u8>, nonce: vector<u8>, output_hash: vector<u8>): vector<u8>
```

#### Function `output_sha256`

Hashes the canonical response body under the existing direct protocol domain.

```move
public fun output_sha256(output: &nexus_primitives::tagged_output::TaggedOutput): vector<u8>
```

#### Function `new_none`

Builds an accepted verdict for a vertex configured as `None`.

```move
public fun new_none(output: nexus_primitives::tagged_output::TaggedOutput): nexus_interface::verifier::VerificationVerdict
```

#### Function `new_accept`

Builds an External accept verdict and stamps the exact output hash.

```move
public fun new_accept(worksheet: &mut nexus_primitives::proof_of_uid::ProofOfUID, output: nexus_primitives::tagged_output::TaggedOutput, witness_uid: &sui::object::UID): nexus_interface::verifier::VerificationVerdict
```

#### Function `new_reject`

Builds an External reject verdict and normalizes its optional reason.

```move
public fun new_reject(worksheet: &mut nexus_primitives::proof_of_uid::ProofOfUID, output: nexus_primitives::tagged_output::TaggedOutput, witness_uid: &sui::object::UID, reason: std::option::Option<vector<u8>>): nexus_interface::verifier::VerificationVerdict
```

#### Function `new_registered_key_verdict`

Builds and stamps the verdict produced by the built-in RegisteredKey verifier.

```move
public fun new_registered_key_verdict(worksheet: &mut nexus_primitives::proof_of_uid::ProofOfUID, output: nexus_primitives::tagged_output::TaggedOutput, input_hash: vector<u8>, nonce: vector<u8>, witness_uid: &sui::object::UID, accepted: bool): nexus_interface::verifier::VerificationVerdict
```

#### Function `verdict_witness_id`

```move
public fun verdict_witness_id(self: &nexus_interface::verifier::VerificationVerdict): std::option::Option<sui::object::ID>
```

#### Function `verdict_decision`

```move
public fun verdict_decision(self: &nexus_interface::verifier::VerificationVerdict): nexus_interface::verifier::VerifierDecision
```

#### Function `verdict_output_hash`

```move
public fun verdict_output_hash(self: &nexus_interface::verifier::VerificationVerdict): vector<u8>
```

#### Function `consume_verdict`

```move
public fun consume_verdict(self: nexus_interface::verifier::VerificationVerdict): (nexus_primitives::tagged_output::TaggedOutput, std::option::Option<sui::object::ID>, nexus_interface::verifier::VerifierDecision)
```

#### Function `decision_is_accept`

```move
public fun decision_is_accept(self: &nexus_interface::verifier::VerifierDecision): bool
```

#### Function `decision_reason`

```move
public fun decision_reason(self: nexus_interface::verifier::VerifierDecision): std::option::Option<vector<u8>>
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.talus.network/talus-docs-v2.1.0/reference/move/nexus_interface/verifier.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `build a script that syncs our docs to a CMS` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
