CCIP v2.0.0 ICrossChainVerifierResolver API Reference

ICrossChainVerifierResolver defines the interface for routing messages to specific Cross-Chain Verifier (CCV) implementations.

It determines which verifier contract should be used for:

  • inbound message validation
  • outbound message construction

This interface enables flexible selection of verifier implementations based on message data, destination chain, or protocol configuration.

This interface defines functions implemented by protocol contracts and is not typically used directly by applications.

Usage Boundary

You do not call this interface directly.

  • CCIP routing components use resolver implementations to select verifier contracts.
  • OnRamp and OffRamp components rely on this interface to determine which verifier to invoke.
  • You implement this interface when supporting multiple verifier types or versions.
  • You are responsible for ensuring resolver logic is deterministic and consistent across chains.

Contract

interfaces/ICrossChainVerifierResolver.sol

Import

import {ICrossChainVerifierResolver} from "chainlink-ccip/interfaces/ICrossChainVerifierResolver.sol";

If you have not installed the package:

npm install @chainlink/contracts-ccip@2.0.0

External API

getInboundImplementation

function getInboundImplementation(bytes calldata verifierResults) external view returns (address)

Returns the verifier implementation used to validate an inbound message.

  • Selection is based on encoded verifier results from the source chain.
ParameterTypeDescription
verifierResultsbytes calldataEncoded verifier output from the source chain.

Returns:

TypeDescription
addressVerifier contract used for inbound validation.

getOutboundImplementation

function getOutboundImplementation(
  uint64 destChainSelector,
  bytes memory extraArgs
) external view returns (address)

Returns the verifier implementation used to construct an outbound message.

  • Selection may depend on destination chain and message configuration.
ParameterTypeDescription
destChainSelectoruint64Destination chain identifier.
extraArgsbytes memoryEncoded message arguments used to select the appropriate verifier.

Returns:

TypeDescription
addressVerifier contract used for outbound processing.

Notes

  • Resolver outputs must be deterministic for a given input to ensure consistent verification behavior across chains.
  • Resolver logic must be consistent across chains to ensure compatible verifier selection.
  • The resolver acts as a dispatcher between routing components and verifier implementations.
  • Inbound resolution must map to the same verifier implementation that produced the original verifier results.
  • Returning an incorrect verifier address may result in message validation failure or execution under the wrong security model.
  • Returning address(0) indicates no valid verifier is available and should be treated as an error condition.
  • Incorrect resolver logic may route messages to incompatible verifier implementations, causing execution failure.
  • Common use cases include routing between verifier versions or different verification strategies.

Get the latest Chainlink content straight to your inbox.