Agent documentation index: llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Skip to main content

IVerification

Public interface for VerificationFacet on the FlareTeeManager diamond.

A TEE machine stays trusted only while its availability check is valid. Nothing here is automatic: a caller requests attestation, FDC2 produces an availability-check proof, and someone submits that proof onchain.

Typical flow:

  1. requestTeeAttestation creates a challenge and sends an F_REG / TEE_ATTESTATION instruction to the machine. IMachineManager.register already does this on first registration.
  2. requestAvailabilityCheckAttestation asks FDC2 for a TeeAvailabilityCheck proof. The challenge must still be valid or the call reverts with ChallengeExpired error.
  3. confirmAvailability verifies the proof for a PRODUCTION machine and extends endTs. First promotion INITIALIZED → PRODUCTION uses IMachineManager.toProduction instead.

The getAvailabilityCheckValidity function returns that window. After endTs, anyone can suspend the machine with IMachineManager.pause.

Inherits shared ITeeCommonErrors.

Constants​

bytes32 constant TEE_SOURCE_ID = bytes32("TEE");

FDC2 source id for TEE availability-check attestations.

Types​

TeeAttestation​

Body of the TEE_ATTESTATION instruction sent to the machine.

struct TeeAttestation {
IMachineManager.TeeMachineWithAttestationData teeMachine;
bytes32 challenge;
}

Functions​

requestTeeAttestation​

Request attestation for a TEE machine. Emits TeeAttestationRequested event.

function requestTeeAttestation(
address _teeId,
address _claimBackAddress
)
external payable

Parameters

  • _teeId: The TEE machine id.
  • _claimBackAddress: An address that can claim back the fee if the instructions are not executed (optional).

requestAvailabilityCheckAttestation​

Request availability check attestation for a TEE machine - triggers FDC2 availability check.

function requestAvailabilityCheckAttestation(
address _teeId,
bytes32 _instructionId,
address _testOnTeeId,
address _proofOwner,
address _claimBackAddress
)
external payable

Parameters

  • _teeId: The TEE machine id.
  • _instructionId: The instruction ID used for the TEE attestation check (challenge must match).
  • _testOnTeeId: The TEE machine id to test on, if address(0) a random active TEE machine will be used.
  • _proofOwner: The proof owner address (optional).
  • _claimBackAddress: An address that can claim back the fee if the instructions are not executed (optional).

confirmAvailability​

Extend the availability check validity. Emits AvailabilityCheckValidityExtended event.

function confirmAvailability(
ITeeAvailabilityCheck.Proof calldata _proof
)
external

Parameters

  • _proof: The availability check proof. The machine must already be in PRODUCTION. First promotion uses IMachineManager.toProduction instead.

getCosigners​

Returns the list of FDC2 cosigners and their threshold used for the TEE machine registration.

function getCosigners()
external view
returns (
address[] memory _cosigners,
uint64 _cosignersThreshold
)

Returns

  • _cosigners: The list of cosigners.
  • _cosignersThreshold: The cosigners threshold.

getSettings​

Returns the settings.

function getSettings()
external view
returns (
uint256 _availabilityCheckValidityDurationSeconds,
uint256 _challengeValidityDurationSeconds
)

Returns

  • _availabilityCheckValidityDurationSeconds: The availability check validity duration.
  • _challengeValidityDurationSeconds: The challenge validity duration.

The SettingsUpdated event also records signingPolicyValidityDurationInRewardEpochs. That value is not returned here.

getAvailabilityCheckValidity​

Returns the availability check validity for a TEE machine.

function getAvailabilityCheckValidity(
address _teeId
)
external view
returns (
uint64 _endTs,
uint32 _lastSigningPolicyId
)

Parameters

  • _teeId: The TEE machine id.

Returns

  • _endTs: The end timestamp of the availability check validity.
  • _lastSigningPolicyId: The last signing policy id.

Events​

SettingsUpdated​

event SettingsUpdated(
uint64 availabilityCheckValidityDurationSeconds,
uint64 signingPolicyValidityDurationInRewardEpochs,
uint64 challengeValidityDurationSeconds
)

Parameters

  • availabilityCheckValidityDurationSeconds (uint64 availabilityCheckValidityDurationSeconds)
  • signingPolicyValidityDurationInRewardEpochs (uint64 signingPolicyValidityDurationInRewardEpochs)
  • challengeValidityDurationSeconds (uint64 challengeValidityDurationSeconds)

CosignersSet​

event CosignersSet(
address[] cosigners,
uint64 cosignersThreshold
)

Parameters

  • cosigners (address[] cosigners)
  • cosignersThreshold (uint64 cosignersThreshold)

TeeAttestationRequested​

event TeeAttestationRequested(
address indexed teeId,
bytes32 challenge
)

Parameters

  • teeId (address indexed teeId)
  • challenge (bytes32 challenge)

AvailabilityCheckValidityExtended​

event AvailabilityCheckValidityExtended(
address indexed teeId,
address indexed owner,
uint256 endTs
)

Parameters

  • teeId (address indexed teeId)
  • owner (address indexed owner)
  • endTs (uint256 endTs)

Errors​

Facet-specific errors are listed here. The interface also inherits shared ITeeCommonErrors. The confirmAvailability function uses those for later checks: AvailabilityCheckTimestampInvalid if the proof header timestamp is outside [challengeTs, now), and InvalidResponseData if the proof's response body fails (code hash, platform, signing policy, or state).

ChallengeExpired​

The attestation challenge for this machine is no longer valid. The challengeTs value is when the challenge was created. Thrown by requestAvailabilityCheckAttestation if you wait longer than challengeValidityDurationSeconds after requestTeeAttestation, and again when a proof is verified if that window has already closed. Call requestTeeAttestation again to mint a fresh challenge.

error ChallengeExpired(uint256 challengeTs)

Parameters

  • challengeTs: Timestamp when the expired challenge was created.

InvalidAttestation​

The proof is not a TEE availability-check attestation. Thrown when verifying a proof whose FDC2 header does not have attestationType = TeeAvailabilityCheck, sourceId = TEE, and thresholdBIPS = 0.

error InvalidAttestation()

InvalidRequestBody​

The proof's request body does not match the machine onchain. Thrown when verifying a proof whose url, teeProxyId, or challenge differs from the registered TEE machine and the stored challenge.

error InvalidRequestBody()