Skip to main content
TON Connect proof is used for authentication with backend services. This generates a cryptographic proof that the user owns the wallet.
import { useDynamicContext } from '@dynamic-labs/sdk-react-core';
import { isTonWallet, TonConnectProof } from '@dynamic-labs/ton';

const GenerateTonConnectProofButton = () => {
  const { primaryWallet } = useDynamicContext();

  const onGenerateProof = async () => {
    if (!primaryWallet || !isTonWallet(primaryWallet)) {
      throw new Error('TON wallet not found');
    }

    // Generate the TON Connect proof
    const payload = 'authentication-challenge-from-backend';
    const proof: TonConnectProof = await primaryWallet.generateTonConnectProof(
      payload,
    );

    console.log('TON Connect Proof:', proof);
    // {
    //   address: "UQ...",
    //   domain: { lengthBytes: 11, value: "example.com" },
    //   timestamp: 1704067200,
    //   payload: "authentication-challenge-from-backend",
    //   signature: "base64-encoded-signature"
    // }

    // Send this proof to your backend for verification
  };

  return <button onClick={onGenerateProof}>Generate TON Connect Proof</button>;
};

TonConnectProof Object

FieldTypeDescription
addressstringWallet address
domainTonConnectDomainDomain information
timestampnumberUnix timestamp in seconds
payloadstringThe payload string that was signed
signaturestringSignature as base64 string

TonConnectDomain Object

FieldTypeDescription
lengthBytesnumberLength of domain value in bytes
valuestringDomain value (e.g., “example.com”)