Gating Service
The gating service is the off-chain signer that admits intents. Peer's API runs it at https://api.zkp2p.xyz, the default baseApiUrl in @zkp2p/sdk. Pass the root host, without /v1, /v2 or /v3.
The gating service never holds funds. It can decline to sign an intent, but it cannot move, lock or release escrowed tokens.
What it does
- Signs intents. Before signaling, the client calls
POST /v3/sign. Peer's API checks the request and returns a signature, its expiration and thepayerCommitmentto pass tosignalIntent. The signature covers the orchestrator, escrow, deposit, amount, taker, recipient, payment method, currency, conversion rate, referral fees, expiration, chain ID and payer commitment. - Returns payee details. On-chain, a deposit stores only a hash of the seller's payment handle (
payeeDetails). The sign response gives the buyer the handle to pay.
On-chain admission
OrchestratorV4. IntentSignalPolicy admits every new intent:
- If the deposit's whitelist is enabled in
WhitelistPolicyV2, the taker must be on it directly or through an allowed group. Otherwise the call reverts withTakerNotWhitelisted. - The gating signature must come from the gating service set in the policy and must not be expired. Otherwise the call reverts with
InvalidSignatureorSignatureExpired.
Deposits cannot choose a different gating service on OrchestratorV4; governance sets it with the signal policy. See Orchestrator.
OrchestratorV3 (retired 2026-11-05). Historical intents checked a gating signature only when the deposit's payment method names a gating service (intentGatingService), then ran the deposit's optional pre-intent hook and IntentLifecycleHookV1.