Grid supports two self-custodial authentication approaches to fit different team needs and workflows.

Authentication Options

Email-Based Accounts

Users sign up with their email and verify with a code. Grid automatically uses multiple industry leading key management service providers and handles key management behind the scenes while your users maintain full control.

Key Benefits

  • Familiar Experience - Users sign up just like any other app
  • No Wallet Required - Everything works in-app, no external wallet needed
  • Built-in Fault Tolerance - Automatic multi-vendor key redundancy protects against provider failures
  • Enterprise-Grade Security - Multi-vendor key management architecture with automated failover systems
  • Email Recovery - Users can recover accounts through email verification
  • Perfect for Getting Started - Recommended for most teams

Implementation

The SDK handles all the complex key generation and encryption behind the scenes:
import { GridClient } from "@sqds/grid";

const gridClient = new GridClient({
  environment: "sandbox",
  apiKey: process.env.GRID_API_KEY!,
});

// Create account with email
const user = await gridClient.createAccount({
  email: "user@example.com",
});

// Generate session secrets
const sessionSecrets = await gridClient.generateSessionSecrets();

// Complete authentication with OTP
const account = await gridClient.completeAuthAndCreateAccount({
  user,
  otpCode: "123456",
  sessionSecrets,
});

Custom Signer Accounts

Use your own ed25519 keypairs directly with Grid accounts. Perfect if you already have keys or need custom key management flows.

Key Benefits

  • Use Existing Keys - Integrate keypairs you already have
  • Direct Control - No key management service provider needed, you manage keys directly
  • Multi-Signature - Configure threshold signing with multiple keys
  • Custom Flows - Build exactly the signing experience you need
  • Flexible Custody - Create custodial, non-custodial, or hybrid custody accounts

Implementation

import { GridClient } from "@sqds/grid";
import { Keypair } from "@solana/web3.js";

const gridClient = new GridClient({
  environment: "sandbox",
  apiKey: process.env.GRID_API_KEY!,
});

// Generate your own ed25519 keypairs
const primaryKey = Keypair.generate();
const backupKey = Keypair.generate();

// Create account with your signers
const account = await gridClient.createAccount({
  type: "signers",
  policies: {
    threshold: 1,
    signers: [
      {
        address: primaryKey.publicKey.toBase58(),
        permissions: ["Initiate", "Vote", "Execute"],
      },
      {
        address: backupKey.publicKey.toBase58(),
        permissions: ["Vote", "Execute"],
      },
    ],
  },
});

Comparison

FeatureEmail-Based AccountsCustom Signer Accounts
Setup TimeMinutesMinutes
Key ManagementHandled automaticallyYou provide and manage
RecoveryEmail-basedYour responsibility
Custom FlowsStandardFully customizable
Best ForQuick startExisting keys/custom needs

When to Choose Each Method

Choose Email-Based Accounts When

  • Getting started with Grid
  • Want the quickest setup
  • Building consumer-facing applications
  • Prefer familiar email-based sign up flows

Choose Custom Signer Accounts When

  • Have existing ed25519 keypairs to use
  • Need custom signing workflows
  • Want to integrate with existing key management
  • Building complex multi-signature setups

Security Considerations

Both approaches are fully self-custodial and production-ready: Email-Based Accounts:
  • You control the accounts and all transactions
  • Multi-vendor key management architecture provides built-in fault tolerance and vendor risk mitigation
  • Automatic key redundancy across multiple providers protects against failures
  • Email verification prevents unauthorized account creation
Custom Signer Accounts:
  • You control both the keys and accounts
  • Works with any ed25519 keypair generation method
  • Full flexibility for multi-signature setups

Next Steps