For developers

Cryptix Wallet injects a provider at window.cryptix on pages where the user has the extension installed. Your site never receives private keys — every connection, signature, and transaction goes through an approval window the user must confirm.

Reference implementation: cryptix.fun (launchpad) uses this API for connect, buy, sell, and launch flows.

Detect the wallet

function getProvider() {
  return window.cryptix?.isCryptix ? window.cryptix : null;
}

async function waitForProvider(timeoutMs = 1500) {
  if (getProvider()) return getProvider();
  return new Promise((resolve) => {
    const done = () => resolve(getProvider());
    window.addEventListener("cryptix#initialized", done, { once: true });
    setTimeout(done, timeoutMs);
  });
}

The extension dispatches cryptix#initialized when the provider is ready. Always check isCryptix === true — do not trust unknown objects on window.

Core API

Provider version: window.cryptix.version (currently 0.2.0 in extension).

MethodDescriptionReturns
connect() Ask user to connect this origin. Opens approval if needed. Promise<string> — Cryptix address
getAccount() Connected address for this site, or null. Promise<string | null>
signMessage(message) Sign a personal message (user approves). Promise<{ signature, address }>
disconnect() Remove connection for this origin. Promise<true>

Minimal connect example

const provider = await waitForProvider();
if (!provider) {
  alert("Install Cryptix Wallet to continue");
  return;
}

try {
  const address = await provider.connect();
  console.log("Connected:", address);
} catch (e) {
  console.error("User rejected or error:", e.message);
}

Launchpad / liquidity API

Native bonding-curve ops (Cryptix L1). The wallet builds, signs, and broadcasts inside the approval window — your page only passes intent.

MethodParamsReturns
launchToken(params) { name, symbol, maxSupply?, startLiquidityCpay?, feePct?, launchBuyCpay? } { txid, assetId }
buyToken(params) { assetId, cpayAmount } (string or number) { txid }
sellToken(params) { assetId, tokenAmount } { txid }
claimFees(params) { assetId } { txid }

Buy example

const provider = await waitForProvider();
await provider.connect();

const { txid } = await provider.buyToken({
  assetId: "243ecb57e217405a3fb7a226513db7c41a5464192fed873e8623b270ea6fa150",
  cpayAmount: "10",
});
console.log("Buy tx:", txid);

User flow (what to expect)

  1. User visits your site with Cryptix Wallet installed.
  2. Your code calls connect() → approval popup (first time per origin).
  3. Further actions (signMessage, buyToken, …) each open approval with full details.
  4. User rejects → promise rejects (typically "user rejected").
  5. Connections are per-origin (scheme + host + port).

Security guidelines

Install links for your users

Point users to official wallet installs:

Support

Integration questions: support@cryptixwallet.com
Example dApp: cryptix.fun