Посібник з інтеграції масштабованої суми інтерфейсу

Підтримка розширення масштабованої суми інтерфейсу на Solana

Передумови

Розширення Scaled UI Amount дозволяє емітентам токенів вказати множник, який буде використовуватися при обчисленні UI-суми балансу токенів користувача. Це дає змогу емітентам створювати токени з ребазингом та уможливлювати такі речі, як дроблення акцій. Це розширення, як і розширення токенів з нарахуванням відсотків, надає суто косметичну UI-суму, що означає, що командам потрібно виконати додаткову роботу для забезпечення хорошого досвіду користувачів. Базові обчислення та перекази здійснюються з використанням необроблених сум у програмі.

Ресурси:

Коротко

  • Кінцеві користувачі повинні взаємодіяти з UIAmount (необроблена сума * множник) для ціни токена, балансу токена та кількості токенів, коли це можливо
  • Децентралізовані додатки та постачальники послуг повинні використовувати необроблену суму та немасштабовані ціни для всіх обчислень і конвертувати для користувачів на кінцевому етапі
  • Історичні цінові фіди повинні надаватися як для масштабованих, так і для немасштабованих сум для простішої інтеграції
  • Історичні значення множника повинні бути доступними для точних історичних даних

Визначення термінів

  • Множник: статичний оновлюваний множник, який використовується для обчислень UI Amount
  • UIAmount: множник * необроблена сума (також відома як: масштабована сума)
  • Raw Amount: сума (також відома як: немасштабована сума)

Поточний баланс

Поточна сума для відображення

  • Щоразу, коли ви відображаєте суми для токенів, які використовують розширення scaled UI amount для кінцевих користувачів, вам слід використовувати:
    • UIAmount/UIAmountString (рекомендовано)
    • Ручне обчислення необробленої суми * множник
    • Ми рекомендуємо обрізати це значення на основі кількості десяткових знаків, які має токен.
      • Наприклад: якщо yUSD має 6 десяткових знаків і користувач має UIAmount 1.123456789, вам слід відображати "1.123456"

Де отримати ці дані:

  • Для перегляду актуального балансу користувача ви можете отримати оновлену інформацію про вищезазначені суми викликавши getTokenAccountBalance або getAccountInfo
  • Якщо вам потрібно дізнатися UI Amount для довільної суми, ви можете отримати цей розрахунок, викликавши функцію amountToUiAmountForMintWithoutSimulation (web3.js v1) або симулюючи транзакцію за допомогою amountToUiAmount.
    • Примітка: amountToUiAmount потребує симуляції транзакції, що означає, що також потрібен дійсний платник комісії з балансом. Через це, це не повинен бути стандартним способом отримання балансу.

Оновлення поточної суми

Оскільки емітенти можуть оновлювати множник у будь-який час, ви можете розглянути можливість періодичного опитування, щоб підтримувати баланс рахунку в актуальному стані. Емітенти навряд чи оновлюватимуть цей множник частіше, ніж раз на день. Якщо множник встановлено на майбутню дату, ви можете автоматично опитувати систему в цей час оновлення

Суми токенів у транзакціях (перекази / обміни тощо)

  • Користувачі повинні вводити суми, які інтерпретуються як масштабований "UIAmount". Додаток, який має обробляти це, повинен конвертувати у необроблену суму токенів для транзакції.
    • Якщо виникають проблеми з округленням, округліть у меншу сторону і краще залиште невелику кількість пилу, ніж ризикуйте невдачею транзакції
    • Для цієї конвертації ви можете використовувати функцію uiAmountToAmountForMintWithoutSimulation (web3.js v1) або симулювати транзакцію за допомогою amountToUiAmount.
  • Додатки повинні використовувати загальну необроблену суму, коли користувач запитує виконати дію з "максимальним" або "всім" своїм балансом. Це гарантує, що не залишиться пилу.
    • Опціонально: Ви можете розглянути можливість автоматичного закриття рахунку, коли використовується "максимум", щоб повернути користувачу його депозит за зберігання

Ціна токена

  • Ціна токена завжди має відображатися як масштабована ціна, де це можливо.
  • Якщо ви є постачальником сервісу цінових фідів, наприклад оракулом, вам слід надавати як масштабовану, так і немасштабовану ціну.
    • Де можливо, надавайте SDK/API, який абстрагує складності розширення масштабованої UI-суми.

Поточний множник

  • Поточний множник можна зчитати з токен-мінту в будь-який час, викликавши getAccountInfo. Крім того, якщо встановлено майбутній множник, ця інформація також доступна з токен-мінту. Ми рекомендуємо не показувати цей множник, оскільки він може заплутати користувацький досвід.

Історичні дані

Історичні дані для цінового фіду

  • Сервіси, які надають історичні дані, повинні зберігати та показувати як масштабовані, так і немасштабовані ціни для розширення масштабованої UI-суми.
  • Ми очікуємо, що масштабовані суми використовуватимуться найчастіше, оскільки це відповідає тому, як традиційний фінансовий світ обробляє графіки, пов'язані з токенами зі спліт-акціями.

Історичні дані для сум

  • Якщо ви хочете показати баланс, переказаний у минулому, вам потрібен доступ до множника на той конкретний slot. Ви також можете зберігати UiAmount для переказів під час обробки транзакцій, щоб уникнути цього обчислення в майбутньому.

Зворотна сумісність

  • За замовчуванням гаманці та застосунки, які не розуміють розширення масштабованої UI-суми, показуватимуть правильну загальну ціну активності, множачи немасштабовану ціну * сиру суму.
  • Однак вони відображатимуть немасштабовану ціну, що може спричинити деяку плутанину для користувачів.
  • Ми сподіваємося, що це заохотить команди оновити свої децентралізовані застосунки для сумісності з токенами, які використовують розширення масштабованої UI-суми, і ми раді надати підтримку під час цього процесу.

Рекомендовані пріоритети інтеграції для кожної платформи

Загальні вимоги

ВимогаОписПріоритет
Підтримка дій користувача з UiAmountУсі дії користувача мають вводитися в UiAmount, коли UiAmount увімкнено в додатку. Якщо UiAmount не відображається в додатку, слід використовувати необроблені суми до оновлення додатку.P0

Гаманці

ВимогаОписПріоритет
Відображення масштабованого балансуПоказувати масштабовану суму (uiAmount) як основний баланс.P0
Підтримка переказів токенівКінцеві користувачі повинні вводити суми переказів з масштабованими балансами (необроблена сума * баланс).P0
Відображення спотової ціниВідображати масштабовану спотову ціну для користувачівP0
Метадані історії транзакційПоказувати масштабовану суму (UIAmount) для кожного переказу, де це можливо.P1
Показ оновлень множника в історії транзакційКоли відбуваються оновлення множника, показувати це як подію в історії транзакцій користувача, включаючи отриману сумуP2
Відображення графіка історії цінВідображати масштабовані ціни на графіку цінP1
Ознайомлення/ПідказкиПропонувати підказки або ознайомлення для інформування користувачів про токени, що використовують розширення масштабованої суми uiP2

Провідники

ВимогаОписПріоритет
Удосконалення сторінки деталей токенаВідображення метаданих, таких як загальна масштабована ринкова капіталізація та поточний множникP0
Відображення масштабованого балансу для балансівВідображення масштабованих балансів (UiAmount) для поточних балансів.P0
Відображення масштабованого балансу для транзакційВідображення масштабованих балансів (UiAmount) для сум переказів для історичних транзакцій.P0
Відображення масштабованої ціни для транзакційВідображення масштабованих цін для попередніх транзакційP1
Правильний аналіз і відображення транзакцій оновлення множникаПравильно показувати деталі про оновлення множникаP2

Агрегатори ринкових даних (наприклад: CoinGecko)

ВимогаОписПріоритет
Оновлення API для масштабованих данихРозширити функціональність API, щоб включити зміни множника з часом, а також масштабовану ціну.P0
Загальна пропозиція з масштабованим коригуваннямПри відображенні загальної пропозиції та загальної ринкової капіталізації враховувати масштабовані балансиP0
Відстеження історичних цінНадавати історичний графік цін, використовуючи масштабовану ціну з часом.P1
Відстеження історичних множниківНадавати історичні маркери оновлень множника для токенів, що приносять відсотки.P2
Освітній контент або поясненняВключати короткі описи або підказки, що пояснюють, як працюють масштабовані токени.P2

Постачальники цінових фідів

ВимогаОписПріоритет
Масштабовані та немасштабовані цінові фідиНадавати цінові фіди як для масштабованих, так і для немасштабованих цін.P0
Дані про історичні множникиПропонувати API з історичними змінами множника.P0
Дані про історичні ціниПропонувати API з історичними цінами на основі як масштабованих, так і немасштабованих сум.P0

DEX-и

ВимогаОписПріоритет
Відображення ребазованих балансів токенівПоказувати масштабовані баланси для торгівлі або надання ліквідності в інтерфейсі (бекенд може використовувати необроблені суми)P0
Підтримка дій з токенамиКінцеві користувачі повинні вводити суми дій зі своїми балансами UiAmount (множник * необроблена сума).P0
Адаптація цінового фідуБудь-де, де використовується ціновий фід для відображення поточної ціни, надавати масштабовану ціну кінцевим користувачам.P1
Відображення графіка історії цінВідображати масштабовані ціни на графіку цінP1

Is this page helpful?