Skip to main content
The ClementineVerifier service handles verifier operations including parameter management, deposit signing, optimistic payouts, and transaction debugging.

GetParams

Returns verifier metadata. Called once per setup to retrieve the verifier’s public key. Request: Empty Response: VerifierParams
public_key
bytes
required
The verifier’s public key
Usage: Called by aggregator during setup to distribute verifier public keys to all verifiers.

GetCompatibilityParams

Returns protocol parameters that affect contract transactions, Citrea syncing, and version compatibility. Request: Empty Response: CompatibilityParamsRPC
protocol_paramset
string
required
Protocol parameter set in JSON format
security_council
string
required
Security council configuration
citrea_chain_id
uint32
required
Citrea chain identifier
clementine_version
string
required
Current Clementine version
bridge_circuit_constant
bytes
required
Bridge circuit constant value
sha256_bitvm_cache
bytes
required
SHA256 BitVM cache data

SetOperator

Saves operator information to the verifier’s database. Request: stream OperatorParams
operator_details
OperatorConfig
Operator’s configuration details
winternitz_pubkeys
WinternitzPubkey
Winternitz public keys for each kickoff UTXO (used to commit blockhash)
unspent_kickoff_sig
SchnorrSig
Unspent kickoff signatures
Response: Empty Usage: Called by aggregator during setup to distribute operator public keys to all verifiers.

SetOperatorKeys

Sets the operator’s Winternitz keys and challenge ACK hashes, saving them to the database. Request: OperatorKeysWithDeposit
operator_keys
OperatorKeys
required
Operator’s cryptographic keys
deposit_params
DepositParams
required
Deposit parameters containing deposit details, actors, and security council
operator_xonly_pk
bytes
required
Operator’s x-only public key
Response: Empty Usage: Called by aggregator during new deposit to distribute operator deposit information to all verifiers.

NonceGen

Generates nonces for a deposit signing session. Request: NonceGenRequest
num_nonces
uint32
required
Number of nonces to generate
Response: stream NonceGenResponse
first_response
NonceGenFirstResponse
Initial response containing session metadata
pub_nonce
bytes
Individual public nonce (streamed after first response)
Usage: Called by aggregator during new deposit to generate nonces for MuSig2 signing.

DepositSign

Signs deposit transactions using aggregated nonces and the verifier’s secret nonce. Request: stream VerifierDepositSignParams
deposit_sign_first_param
DepositSignSession
Initial deposit sign session containing deposit parameters and nonce responses
agg_nonce
bytes
Aggregated nonce for signing
Response: stream PartialSig
partial_sig
bytes
required
Partial signature for MuSig2 aggregation
Usage: Called by aggregator during new deposit for MuSig2 signing protocol.

OptimisticPayoutSign

Signs optimistic payout transactions with the given aggregated nonce and withdrawal information. Request: OptimisticPayoutParams
opt_withdrawal
OptimisticWithdrawParams
required
Optimistic withdrawal parameters
nonce_gen
NonceGenFirstResponse
required
Nonce generation response
agg_nonce
bytes
required
Aggregated nonce for signing
Response: PartialSig
partial_sig
bytes
required
Partial signature for the optimistic payout

DepositFinalize

Verifies all signatures and signs the move-to-vault transaction. Request: stream VerifierDepositFinalizeParams
deposit_sign_first_param
DepositSignSession
Deposit sign session data
schnorr_sig
bytes
Aggregated Schnorr signature
move_tx_agg_nonce
bytes
Aggregated nonce for move-to-vault transaction
emergency_stop_agg_nonce
bytes
Aggregated nonce for emergency stop transaction
Response: VerifierDepositFinalizeResponse
move_to_vault_partial_sig
bytes
required
Partial signature for move-to-vault transaction
emergency_stop_partial_sig
bytes
required
Partial signature for emergency stop transaction
Usage: Called by aggregator during new deposit finalization.

DebugTx

Retrieves the current state and history of a transaction for debugging purposes. Request: TxDebugRequest
tx_id
uint32
required
Internal transaction ID to debug
Response: TxDebugInfo
id
uint32
required
Transaction internal ID
is_active
bool
required
Whether the transaction is currently active
current_state
string
required
Current state of the transaction
submission_errors
repeated TxDebugSubmissionError
required
History of submission errors
fee_payer_utxos
repeated TxDebugFeePayerUtxo
required
UTXOs used for fee payment
created_at
string
required
Timestamp of transaction creation
txid
Txid
required
Bitcoin transaction ID
fee_paying_type
string
required
Fee payment method (CPFP, RBF, etc.)
fee_payer_utxos_count
uint32
required
Total count of fee payer UTXOs
fee_payer_utxos_confirmed_count
uint32
required
Count of confirmed fee payer UTXOs
raw_tx
bytes
required
Raw transaction bytes
metadata
TxMetadata
required
Transaction metadata including deposit outpoint, operator, and transaction type

RestartBackgroundTasks

Restarts all background tasks for the verifier. Request: Empty Response: Empty

InternalHandleKickoff

Checks if a kickoff transaction is malicious and attempts to punish the operator if necessary. Request: Txid
txid
bytes
required
Bitcoin transaction ID to check
Response: Empty
This is an internal method intended for verifier operations.

GetCurrentStatus

Returns the current status of tasks running on the verifier and their last synced heights. Request: Empty Response: EntityStatus
automation
bool
required
Whether automation is enabled
wallet_balance
string
Current wallet balance
tx_sender_synced_height
uint32
Last synced height for transaction sender
finalized_synced_height
uint32
Last synced height for finalized blocks
hcp_last_proven_height
uint32
Last proven height for HCP
stopped_tasks
StoppedTasks
required
List of stopped background tasks
rpc_tip_height
uint32
Current RPC tip height
bitcoin_syncer_synced_height
uint32
Last synced height for Bitcoin syncer
state_manager_next_height
uint32
Next height for state manager
btc_fee_rate_sat_vb
uint64
Current Bitcoin fee rate in sat/vB

InternalCreateSignedTxs

Creates and signs transactions for a given deposit and kickoff. Request: TransactionRequest
deposit_outpoint
Outpoint
required
Deposit UTXO outpoint
kickoff_id
KickoffId
required
Kickoff identifier
Response: SignedTxsWithType
signed_txs
repeated SignedTxWithType
required
Array of signed transactions with their types
This method is only used in tests and internal operations.

InternalCreateWatchtowerChallenge

Signs the verifier’s own watchtower challenge transaction for the corresponding kickoff. Request: TransactionRequest
deposit_outpoint
Outpoint
required
Deposit UTXO outpoint
kickoff_id
KickoffId
required
Kickoff identifier
Response: RawTxWithRbfInfo
raw_tx
bytes
required
Raw signed transaction bytes
rbf_info
RbfSigningInfoRpc
required
RBF (Replace-By-Fee) signing information

Vergen

Returns version and build information. Request: Empty Response: VergenResponse
response
string
required
Version and build information string

Build docs developers (and LLMs) love