Определение оптимальной пары токенов для обмена в криптокошельке

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

Условие

Необходимо реализовать функцию, которая выбирает подходящую пару токенов для свопа в пользовательском кошельке.

  1. Функция принимает один параметр – адрес кошелька (например, walletAddress).
  2. На выходе функция возвращает два символа токенов: из какого токена будет происходить обмен и в какой токен он будет направлен.
  3. Токен, из которого совершается своп, выбирается как тот, у которого на балансе самое большое количество единиц.
  4. Поддерживаемые пары для обмена: ETH ↔ USDC и USDT ↔ USDC.
  5. Курс обмена считается фиксированным: 1 ETH = 2000 USDC (или USDT).

Ответ

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

По условию сравнивается количество, не стоимость: курс ETH здесь не нужен. Пример с соглашениями: при равенстве приоритет ETH, USDT, USDC; из USDC выбираем USDT.

async function choosePair(walletAddress) {
  const balances = await getNormalizedBalances(walletAddress);
  const tokens = ['ETH', 'USDT', 'USDC'];
  let from = null;
  for (const token of tokens) {
    const value = balances[token] ?? 0;
    if (!Number.isFinite(value) || value < 0) throw new Error('Invalid balance');
    if (value > 0 && (from === null || value > balances[from])) from = token;
  }
  if (!from) throw new Error('No supported balance');
  return [from, from === 'USDC' ? 'USDT' : 'USDC'];
}

getNormalizedBalances — адаптер API кошелька, возвращающий приведённые к decimals балансы. Для реальных денежных расчётов нужны точные десятичные значения, сеть, адреса токенов и проверка комиссий. Это учебный выбор пары, не отправка транзакции.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее