GhostLink documentation

GhostLink uses proofs for app sign-in and on-chain limits for pocket spending. Setup uses wallet-signed messages; restoring an identity requires signing again, and funding can require a wallet transaction. A proof-only app integration can receive an app ID without receiving the user's wallet address or identity secret.

The two modules

Identity is sign-in: your app asks for a claim ("controls a registered wallet", optionally "holding at least X of mint M"), and verifies the proof on your backend. Authentication also requires a signed, single-use server challenge, trusted roots and a current chain slot. Off-chain login requires no transaction.

Pocket is spending: a program-derived account, unique to your app, funded by the user. Your app submits intents — "spend at most X of A, receive at least Y of B" — and a solver fills them atomically. The pocket program checks the outcome inside the same transaction and reverts everything if the deal isn't met.

You can use off-chain Identity verification without opening a spending pocket.

What makes it safe

Pocket activity and deposits are public on-chain. Proofs reduce what an app must learn, but do not hide public transfers or protect a secret handed to that app. The SDK does not provide an isolated identity broker.

Where things run

LayerWhatTrust
DeviceSecret, session keys, proving (1–3 s on a laptop; phones not yet measured)The host app must protect secrets and keep proving local
ServicesIndexer, relayer, solver, actions, watcherLiveness and request privacy; off-chain verification trusts its root source, and funding trusts or validates the Actions transaction
Programsregistry · census · pocketEnforce the deployed rules; upgrade authority removal is a future release gate

Ready? Start with the quickstart, or read how identity and proofs work under the hood.