Skip to main content

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​

  1. Signs intents. Before signaling, the client calls POST /v3/sign. Peer's API checks the request and returns a signature, its expiration and the payerCommitment to pass to signalIntent. The signature covers the orchestrator, escrow, deposit, amount, taker, recipient, payment method, currency, conversion rate, referral fees, expiration, chain ID and payer commitment.
  2. 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 with TakerNotWhitelisted.
  • The gating signature must come from the gating service set in the policy and must not be expired. Otherwise the call reverts with InvalidSignature or SignatureExpired.

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.