Skip to main content
Unlink lets you add private blockchain accounts to your applications. You can now own, send, receive, and interact with smart contracts, all without exposing balances, tokens, amounts or transaction history.

What you can build

  • Private payouts - Pay teams, creators, and vendors without exposing history
  • Stablecoin apps - Add private balances and transfers to user wallets
  • Treasury operations - Move and rebalance funds without leaking strategy
  • Private DeFi - Swap, lend, borrow, or allocate from private balances
  • AI agent wallets - Give agents scoped funds without public strategy leaks
  • Trade settlement - Settle OTC, RFQ, and market-maker flows privately
  • Grants and rewards - Fund contributors without linking identity to payments
Unlink is a smart contract deployed on the blockchain itself. No bridging, no separate chain. The SDK handles proof generation and signing, and you call depositWithApproval(), transfer(), withdraw(), and execute(). See How Unlink works for the privacy model and what stays public or private. Unlink is multichain. SDK clients choose a hosted deployment with the environment option. See Supported chains for the current production environments.

How to integrate

Choose where user keys live first. Browser apps import from /browser. Custodial server apps import from /client. Your backend imports from /admin for registration, auth tokens, and backend reads.
// Browser client.
import { account, createUnlinkClient } from "@unlink-xyz/sdk/browser";

const { account: unlinkAccount } = await account.fromMetaMask({
  provider,
  appId,
  chainId: 84532,
});

const client = createUnlinkClient({
  environment: "base-sepolia",
  account: unlinkAccount,
});
const tx = await client.transfer({ recipientAddress, token, amount });
await tx.wait();
// Backend.
import { createUnlinkAdmin } from "@unlink-xyz/sdk/admin";

const admin = createUnlinkAdmin({
  environment: "base-sepolia",
  apiKey,
});
await admin.users.register(payload);
await admin.authorizationTokens.issue({ unlinkAddress });
Browser app: your backend hosts two routes for registration and auth tokens. The user’s spending key stays in the browser. Custodial server app: your server creates one user client per account it is allowed to hold.
Use @unlink-xyz/sdk/browser in browser bundles. Keep @unlink-xyz/sdk/admin on your backend.

Quickstart

Install the SDK and make your first deposit, transfer, and withdrawal.

How Unlink works

The privacy model and what stays public or private at each step.

Custody models

Choose between non-custodial browser and custodial server integration.

Supported chains

Hosted environments and the environment name to pass to the SDK.

Deposit

Move ERC-20 tokens from an EVM wallet into the unlink contract.

Transfer

Send tokens privately between Unlink addresses.