Skip to main content
The ClementineOperator service manages operator operations including withdrawals, reimbursements, deposit signing, and transaction creation.

GetXOnlyPublicKey

Returns the operator’s x-only public key. Request: Empty Response: XOnlyPublicKeyRpc
xonly_public_key
bytes
required
The operator’s x-only public key
Usage: Called by aggregator during setup.

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

GetParams

Returns operator parameters including configuration and watchtower parameters. Called once by the aggregator during setup. Request: Empty Response: stream OperatorParams
operator_details
OperatorConfig
Operator’s configuration
winternitz_pubkeys
WinternitzPubkey
Winternitz public keys for each kickoff UTXO (used to commit blockhash)
unspent_kickoff_sig
SchnorrSig
Unspent kickoff signatures
Usage: Called by aggregator during setup to collect operator configuration.

GetDepositKeys

Returns operator’s deposit keys including BitVM Assert Winternitz keys and challenge ACK hashes. Request: DepositParams
deposit
Deposit
required
Deposit information
actors
Actors
required
Participating actors (verifiers, watchtowers, operators)
security_council
SecurityCouncil
required
Security council configuration
Response: OperatorKeys
winternitz_pubkeys
repeated WinternitzPubkey
required
Winternitz public keys for each BitVM assert transaction
challenge_ack_digests
repeated ChallengeACKDigest
required
Hashes of preimages used to ACK watchtower challenges
Usage: Called by aggregator during new deposit creation.

GetCurrentStatus

Returns the current status of tasks running on the operator 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

TransferToBtcWallet

Sends the given outpoints to the operator’s BTC wallet and broadcasts the transaction to the network. Request: Outpoints
outpoints
repeated Outpoint
required
Array of outpoints to transferEach outpoint must pay to the operator’s taproot address (x-only key, no merkle root). The method verifies that no outpoint is the operator’s collateral.
Response: RawSignedTx
raw_tx
bytes
required
Raw signed transaction that transfers the outpoints to the operator’s BTC wallet address

DepositSign

Signs all transactions that include the operator’s burn connector. Request: DepositSignSession
deposit_params
DepositParams
required
User’s deposit information
nonce_gen_first_responses
repeated NonceGenFirstResponse
required
Nonce metadata from all verifiers
Response: stream SchnorrSig
schnorr_sig
bytes
required
Operator burn Schnorr signature

RestartBackgroundTasks

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

InternalWithdraw

Prepares a withdrawal if profitable and valid. Intended for operator’s own use without aggregator signature. Request: WithdrawParams
withdrawal_id
uint32
required
Withdrawal ID in Citrea
input_signature
bytes
required
User’s SinglePlusAnyoneCanPay signature
input_outpoint
Outpoint
required
User’s UTXO to claim the deposit
output_script_pubkey
bytes
required
Withdrawal output’s script pubkey (signature is only valid for this pubkey)
output_amount
uint64
required
Withdrawal output’s amount (signature is only valid for this amount)
Response: RawSignedTx
raw_tx
bytes
required
Raw signed payout transaction
If automation is disabled, the withdrawal will be rejected. The withdrawal must be correct and registered in the Citrea bridge contract.

Withdraw

Prepares a withdrawal with optional verification signature. Checks verification address if configured. Request: WithdrawParamsWithSig
withdrawal
WithdrawParams
required
Withdrawal parameters
verification_signature
string
Optional ECDSA signature from Citrea/aggregator for authentication
Response: RawSignedTx
raw_tx
bytes
required
Raw signed payout transaction
If verification address is set in operator config, the signature is verified before processing the withdrawal.

GetReimbursementTxs

Determines the next step in the kickoff process and returns raw signed transactions needed for the reimbursement process. Request: Outpoint
txid
Txid
required
Transaction ID
vout
uint32
required
Output index
Response: SignedTxsWithType
signed_txs
repeated SignedTxWithType
required
Array of raw signed transactions that the operator needs to send next
Enables reimbursement process without automation.

InternalCreateSignedTxs

Creates and signs transactions for a given deposit and kickoff. Request: TransactionRequest
deposit_outpoint
Outpoint
required
Deposit UTXO outpoint
kickoff_id
KickoffId
required
Operator’s kickoff ID
Response: SignedTxsWithType
signed_txs
repeated SignedTxWithType
required
Raw signed transactions (excludes asserts and watchtower challenge)
Only used in tests.

InternalCreateAssertCommitmentTxs

Creates all assert transactions (AssertBegin, MiniAsserts, AssertEnd), signs them, and returns the raw transactions. Request: TransactionRequest
deposit_outpoint
Outpoint
required
Deposit UTXO outpoint
kickoff_id
KickoffId
required
Operator’s kickoff ID
Response: SignedTxsWithType
signed_txs
repeated SignedTxWithType
required
Raw signed assert transactions in order (AssertBegin, MiniAsserts, AssertEnd)

InternalFinalizedPayout

Finalizes a payout with the given blockhash. Request: FinalizedPayoutParams
payout_blockhash
bytes
required
Blockhash for the payout
deposit_outpoint
Outpoint
required
Deposit outpoint
Response: Txid
txid
bytes
required
Transaction ID of the finalized payout

InternalEndRound

Ends the current round. Request: Empty Response: Empty

Vergen

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

Build docs developers (and LLMs) love