НОВОЕ: Helius приобретает Light Protocol
пользовательский опыт в web3
Блог/Разработка

Удобный и безопасный UX: технологический стек для привлечения миллионов пользователей в Solana

Инфраструктура кошельковPrivy в XPrivy в LinkedIn
Ведущий инженер Solana, PrivyDanny B. в XDanny B. в LinkedIn
Чтение: 6 мин

Руководство для разработчиков по использованию Privy и Helius для встроенных кошельков, транзакций без комиссии и удобного онбординга.

Сегодня большинство пользовательских криптоприложений зависят от внешних кошельков. Пользователям приходится управлять seed-фразами, переходить по множеству перенаправлений и вручную подтверждать каждую транзакцию. 

Для обычного пользователя, незнакомого с блокчейном, это непосильная задача. Seed-фразы, комиссии за газ и всплывающие окна кошельков не просто усложняют работу — из-за них пользователи уходят. В результате приложения с отличными продуктами теряют пользователей еще до начала работы.

Но так быть не должно.

В этом руководстве вы узнаете, как создавать удобный ончейн-UX для Solana с помощью Privy и Helius. Вы сможете реализовать транзакции без комиссии, встроенные кошельки и мгновенную торговлю с задержкой < 20 мс.

Мы расскажем, как:

  • Создавать некастодиальные встроенные кошельки с простым входом по электронной почте, через социальные сети или SMS, одновременно поддерживая внешние кошельки, такие как Phantom, Solflare, Backpack и другие, — и все это с помощью Privy SDK
  • Поддерживать транзакции без комиссии, оплачивая комиссии через защищенные кошельки
  • Интегрировать фиатные онрампы, такие как MoonPay или Coinbase Pay, в ваш UI
  • Нативно переводить ликвидность через мосты в Solana без лишних сложностей
  • Создавать мобильные приложения с удобным ончейн-UX на уровне Web2

Давайте разберемся, что необходимо, чтобы привлечь следующие миллионы пользователей через ваше приложение Solana.

Онбординг в криптоприложениях на практике: примеры DeFi и пользовательских приложений

Удобный онбординг — не просто приятное дополнение, а мощный фактор роста. Приложения со встроенными кошельками могут добиться удержания более 40% пользователей месяц к месяцу, особенно если ориентируются на новичков в криптовалютах. 

Большинству пользователей незнакомы и непонятны такие понятия из мира криптовалют, как газ, проскальзывание, приоритетные комиссии и чаевые. 

Чтобы удерживать пользователей, приложения должны сделать онбординг понятным. Для этого нужно дать пользователям возможность работать со стейблкоинами, такими как USDC, или покрывать комиссии за газ с помощью спонсируемых транзакций.

Цель проста: дать пользователям возможность подписывать транзакции, обменивать активы и участвовать в стейкинге без необходимости разбираться в принципах работы криптовалют.

Pump.fun — платформа для запуска токенов

Pump.fun — одна из самых быстрорастущих торговых платформ на Solana. Она объединяет встроенные кошельки и транзакции без комиссии, позволяя мгновенно торговать одним нажатием без всплывающих окон, подтверждений и переключения между кошельками.

Изначально интерфейс Advanced создавался для высокочастотных трейдеров, но оказался настолько эффективным, что стал доступен всем пользователям.

Сегодня любой пользователь может запустить токен и начать торговать с мобильного устройства за считаные секунды. Некоторые пользователи провели через кошельки на базе Privy транзакции на миллионы долларов, ни разу не покинув мобильное приложение.

Jupiter — агрегатор DEX

Функция Quick Account от Jupiter демонстрирует возможности удобной торговли. Каждый пользователь, независимо от способа входа — через Phantom, Solflare, Backpack, электронную почту или X, — взаимодействует со встроенной инфраструктурой кошельков Privy.

Такая архитектура позволяет мгновенно проводить сделки без подписания транзакций, каждый раз обеспечивая удобное исполнение по лучшей цене.

Когда пользователи будут готовы, они смогут экспортировать свои ключи во внешние кошельки, сохранив полный контроль и избежав привязки к поставщику.

Moonwalk — мобильное приложение формата Walk-to-Earn

Moonwalk обеспечивает удобный онбординг на мобильных устройствах. Пользователи могут зарегистрироваться по электронной почте, через социальные сети или SMS, как в любом другом пользовательском приложении Web2.

При каждой регистрации Privy автоматически создает полнофункциональный встроенный кошелек. Пользователям не нужно беспокоиться о seed-фразах, расширениях кошельков или настройках, специфичных для криптовалют.

Вместо этого они просто начинают ходить и зарабатывать, даже не замечая, что взаимодействуют с ончейн-средой.

Создание удобного ончейн-UX: нативное пополнение счета

Автоматическое создание встроенных кошельков — лишь начало. Чтобы приложение было действительно удобным, разработчикам также необходимо решить вопросы пополнения счета и кроссчейн-ликвидности — двух наиболее распространенных причин ухода пользователей. 

Встроенные онрампы

Лучшие пользовательские приложения устраняют сложности на каждом этапе, в том числе при пополнении кошелька.

Если встроить фиатные онрампы непосредственно в приложение, пользователи смогут покупать SOL или USDC, не покидая интерфейс.

Privy SDK упрощает интеграцию таких провайдеров онрампов, как MoonPay и Coinbase Pay, и позволяет покупать активы Solana всего за несколько нажатий.

Нативные мосты

Еще одна важная возможность — нативный перевод ликвидности через мосты. Если на кошельке Solana пользователя недостаточно средств, разработчики могут настроить кошельки Privy для перевода баланса из EVM-сети, такой как Ethereum, Base или Polygon. 

Так ваше приложение становится центром притяжения ликвидности: оно получает активы из сетей, которыми уже пользуются ваши пользователи, и напрямую переводит их в среду Solana. Не нужно переключаться между приложениями или копировать адреса кошельков. Только удобная передача активов между сетями.

Как настроить транзакции без комиссии с помощью Privy и Helius

Помимо пополнения счетов и кроссчейн-мостов, кошельки Privy обеспечивают безопасное управление ключами и лучше подходят для роли плательщика комиссии, чем традиционные пары ключей.

1. Создайте управляемый кошелек

Чтобы настроить транзакции без комиссии для пользователей, необходимо создать управляемый кошелек, который будет выступать в роли «плательщика комиссии».

Этот кошелек будет оплачивать комиссии за газ за ваших пользователей, обеспечивая им удобную и бесплатную работу. 

После включения управляемых кошельков в Privy Dashboard вы сможете программно создать такой кошелек на стороне сервера с помощью Privy Node.js SDK.

Использование Privy NodeJS SDK:

Код
import { PrivyClient } from '@privy-io/server-sdk';

// Initialize the Privy client
const privy = new PrivyClient({
  apiKey: process.env.PRIVY_API_KEY
});

// Create a new Solana managed wallet
async function createFeePayerWallet() {
  const { id, address, chainType } = await privy.walletApi.create({
    chainType: 'solana',
    policyIds: ['optional_policy_id'],
    idempotencyKey: 'unique_request_identifier'
  });

  console.log(`Created fee payer wallet with ID: ${id}`);
  console.log(`Wallet address: ${address}`);

  return { id, address };
}

// Make sure to fund this wallet with SOL to cover transaction fees

ID и адрес кошелька будут использоваться на следующих этапах для оплаты транзакций.

2. Реализуйте спонсируемые транзакции

После настройки и пополнения управляемого кошелька можно активировать транзакции без комиссии для пользователей. 

Когда пользователь проходит аутентификацию, Privy создает встроенный кошелек, связанный с его учетными данными. Пользователь подписывает транзакцию как обычно, но вместо отправки в блокчейн она передается вашему бэкенду. Там управляемый кошелек подписывает и отправляет ее от имени пользователя.

Такая архитектура обеспечивает удобный пользовательский опыт, сохраняя полный контроль пользователей над своими ключами.

Реализация на стороне клиента (React с Privy SDK)

Код
import { useSolanaWallets } from '@privy-io/react-auth/solana';
import {
  TransactionMessage,
  PublicKey,
  VersionedTransaction,
  Connection
} from '@solana/web3.js';

async function sendGaslessTransaction(instructions) {
  // Get user's embedded wallet
  const { wallets } = useSolanaWallets();
  const embeddedWallet = wallets.find(wallet =>
    wallet.walletClientType === 'privy'
  );

  if (!embeddedWallet) {
    throw new Error('No embedded wallet found');
  }

  // Connect to Solana via Helius for better performance
  const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=YOUR_HELIUS_API_KEY');
  const { blockhash } = await connection.getLatestBlockhash();

  // Set your managed wallet as fee payer
  const feePayerAddress = 'YOUR_PRIVY_SERVER_WALLET_ADDRESS';

  // Build transaction with managed wallet as payer
  const message = new TransactionMessage({
    payerKey: new PublicKey(feePayerAddress),
    recentBlockhash: blockhash,
    instructions
  }).compileToV0Message();

  const transaction = new VersionedTransaction(message);

  // Have user sign the transaction
  const provider = await embeddedWallet.getProvider();
  const serializedMessage = Buffer.from(
    transaction.message.serialize()
  ).toString('base64');

  const { signature } = await provider.request({
    method: 'signMessage',
    params: { message: serializedMessage }
  });

  // Add user signature
  const userSignature = Buffer.from(signature, 'base64');
  transaction.addSignature(
    new PublicKey(embeddedWallet.address),
    userSignature
  );

  // Send to your backend for fee payer signature
  const serializedTx = Buffer.from(
    transaction.serialize()
  ).toString('base64');

  const response = await fetch('/api/sponsor-transaction', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ transaction: serializedTx })
  });

  const { transactionHash } = await response.json();
  return transactionHash;
}

Наконец, частично подписанная транзакция отправляется с клиента на ваш бэкенд. Там ее проверяет и подписывает управляемый кошелек, после чего транзакция передается в сеть Solana.

Реализация бэкенда (маршрут API Next.js)

Код
// pages/api/sponsor-transaction.js
import { VersionedTransaction } from '@solana/web3.js';
import { PrivyClient } from '@privy-io/server-sdk';

// Initialize Privy SDK
const privy = new PrivyClient({
  apiKey: process.env.PRIVY_API_KEY
});
// For App Router (Next.js 13+)
export async function POST(request) {
  try {
    const { transaction: serializedTx } = await request.json();

    // Deserialize the transaction to verify it (optional)
    const txBuffer = Buffer.from(serializedTx, 'base64');
    const transaction = VersionedTransaction.deserialize(txBuffer);

    // Verify the transaction (check fee payer, validate against policies)
    // ...verification logic here...

    // Sign AND send with your Privy managed wallet in one step
    const serverWalletId = process.env.PRIVY_SERVER_WALLET_ID;
    const { hash } = await privy.walletApi.solana.signAndSendTransaction({
      walletId: serverWalletId,
      caip2: 'solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1', // Mainnet
      transaction: serializedTx,
      rpcUrl: 'https://mainnet.helius-rpc.com/?api-key=YOUR_HELIUS_API_KEY',
      options: {
        maxRetries: 5,
        skipPreflight: true
      }
    });

    return Response.json({
      transactionHash: hash,
      message: 'Transaction sent successfully'
    }, { status: 200 });
  } catch (error) {
    console.error('Error processing transaction:', error);
    return Response.json({
      error: 'Failed to process transaction',
      details: error.message
    }, { status: 500 });
  }
}

Объединив безопасные кошельки Privy с оптимизированной инфраструктурой транзакций Helius, вы сможете обеспечить пользователям удобную работу без комиссий, не жертвуя надежностью или гибкостью.

Самый гибкий стек для создания удобных приложений

Модульный SDK Privy вместе с высокопроизводительными RPC-нодами Helius предоставляет разработчикам мощную и гибкую основу для создания первоклассных приложений Solana. 

Вы можете начать с низкоуровневого API кошелька и использовать собственный стек аутентификации или выбрать Privy для аутентификации и других расширенных функций, таких как многофакторная аутентификация (MFA), встроенные онрампы или нативные мосты. Стек Privy масштабируется вместе с потребностями вашего продукта.

Дополнительные ресурсы

Подпишитесь на Helius

Следите за новостями разработки на Solana и получайте уведомления о наших публикациях