Przewodnik integracji funkcji Scaled UI Amount

Obsługa rozszerzenia Scaled UI Amount na platformie Solana

Tło

Rozszerzenie Scaled UI Amount pozwala emitentom tokenów określić mnożnik, który będzie używany przy obliczaniu ilości tokenów użytkownika w interfejsie użytkownika (UI). Dzięki temu emitenci mogą tworzyć tokeny z mechanizmem rebasingu oraz umożliwiać takie operacje jak podziały akcji. To rozszerzenie, podobnie jak rozszerzenie tokenów oprocentowanych, zapewnia wyłącznie kosmetyczną wartość w interfejsie użytkownika, co oznacza, że zespoły muszą wykonać dodatkową pracę, aby zapewnić dobre doświadczenie użytkownika. Wszystkie obliczenia i transfery odbywają się przy użyciu surowych wartości w programie.

Zasoby:

TL;DR

  • Użytkownicy końcowi powinni w miarę możliwości korzystać z UIAmount (surowa wartość * mnożnik) dla ceny tokena, salda tokena i ilości tokenów
  • dApps i dostawcy usług powinni używać surowych wartości i nieskalowanych cen do wszystkich obliczeń i konwertować je dla użytkowników na końcu
  • Historyczne dane cenowe muszą być dostępne zarówno dla skalowanych, jak i nieskalowanych wartości, aby ułatwić integrację
  • Historyczne wartości mnożnika muszą być dostępne dla dokładnych danych historycznych

Definicje terminów

  • Mnożnik: statyczny, aktualizowalny mnożnik używany do obliczeń UI Amount
  • UIAmount: mnożnik * surowa wartość (znane również jako: skalowana wartość)
  • Surowa wartość: wartość (znane również jako: nieskalowana wartość)

Aktualne saldo

Aktualna wartość do wyświetlenia

  • Za każdym razem, gdy wyświetlasz wartości dla tokenów korzystających z rozszerzenia scaled UI amount użytkownikom końcowym, powinieneś używać:
    • UIAmount/UIAmountString (zalecane)
    • Ręcznego obliczenia surowej wartości * mnożnika
    • Zalecamy obcinanie tej wartości na podstawie liczby miejsc dziesiętnych, jakie ma token.
      • Przykład: jeśli yUSD ma 6 miejsc dziesiętnych, a użytkownik ma UIAmount równy 1.123456789, powinieneś wyświetlić „1.123456”

Skąd uzyskać te dane:

  • Aby uzyskać aktualne informacje o saldzie użytkownika, możesz pobrać zaktualizowane dane o powyższych kwotach, wywołując funkcje getTokenAccountBalance lub getAccountInfo
  • Jeśli potrzebujesz znać kwotę UI Amount dla dowolnej kwoty, możesz uzyskać to obliczenie, wywołując funkcję amountToUiAmountForMintWithoutSimulation (web3.js v1) lub symulując transakcję za pomocą amountToUiAmount.
    • Uwaga: amountToUiAmount wymaga symulacji transakcji, co oznacza, że potrzebuje również ważnego płatnika opłat z saldem. Z tego powodu nie powinno to być domyślnym sposobem uzyskiwania salda.

Aktualizacja bieżącej kwoty

Ponieważ emitenci mogą aktualizować mnożnik w dowolnym momencie, warto rozważyć okresowe odpytywanie w celu utrzymania aktualności salda konta. Emitenci raczej nie aktualizują tego mnożnika częściej niż raz dziennie. Jeśli mnożnik jest ustawiony na przyszłą datę, możesz automatycznie odpytywać w czasie tej aktualizacji.

Kwoty tokenów w transakcjach (przelewy / wymiany itp.)

  • Użytkownicy powinni wprowadzać kwoty interpretowane jako skalowane „UIAmount”. Aplikacja, która musi to przetworzyć, powinna przeliczyć na surową kwotę tokena dla transakcji.
    • W przypadku problemów z zaokrągleniem, zaokrąglaj w dół i preferuj pozostawienie niewielkiej ilości „kurzu” zamiast ryzykować niepowodzenie transakcji
    • Do tego przeliczenia możesz użyć funkcji uiAmountToAmountForMintWithoutSimulation (web3.js v1) lub symulować transakcję za pomocą amountToUiAmount.
  • Aplikacje powinny używać całkowitej surowej kwoty, gdy użytkownik żąda wykonania akcji z „max” lub „all” swojego salda. Zapewnia to, że nie pozostanie żaden „kurz”.
    • Opcjonalnie: Możesz rozważyć automatyczne zamknięcie konta, gdy używane jest „max”, aby zwrócić użytkownikowi jego depozyt za przechowywanie.

Cena tokena

  • Cena tokena powinna być zawsze wyświetlana jako cena skalowana, jeśli to możliwe.
  • Jeśli jesteś dostawcą usług feedu cenowego, takim jak oracle, powinieneś udostępniać zarówno cenę skalowaną, jak i nieskalowaną.
    • W miarę możliwości zapewnij SDK/API, które upraszcza złożoności związane z rozszerzeniem skalowanej kwoty UI.

Aktualny mnożnik

  • Aktualny mnożnik można odczytać z token mint w dowolnym momencie, wywołując getAccountInfo. Dodatkowo, jeśli ustawiono przyszły mnożnik, ta informacja jest również dostępna z token mint. Zalecamy nie wyświetlać tego mnożnika, ponieważ może to wprowadzać zamieszanie w UX.

Dane historyczne

Dane historyczne dla feedu cenowego

  • Usługi dostarczające dane historyczne powinny przechowywać i udostępniać zarówno ceny skalowane, jak i nieskalowane dla rozszerzenia skalowanej kwoty UI.
  • Oczekujemy, że skalowane kwoty będą używane najczęściej, ponieważ jest to zgodne z tym, jak tradycyjny świat finansów traktuje wykresy związane z tokenami z podziałem akcji.

Dane historyczne dla kwot

  • Jeśli chcesz pokazać saldo przeniesione w przeszłości, musisz mieć dostęp do mnożnika w danym slocie. Możesz również zapisać UiAmount dla transferów podczas przetwarzania transakcji, aby uniknąć wykonywania tego obliczenia w przyszłości.

Wsteczna kompatybilność

  • Domyślnie portfele i aplikacje, które nie rozumieją rozszerzenia skalowanej kwoty UI, pokażą poprawną całkowitą cenę aktywności, mnożąc cenę nieskalowaną * surową kwotę.
  • Jednakże wyświetlą cenę nieskalowaną, co może powodować pewne zamieszanie wśród użytkowników.
  • Mamy nadzieję, że to zachęci zespoły do aktualizacji swoich dapps, aby były kompatybilne z tokenami używającymi rozszerzenia skalowanej kwoty UI, i chętnie zapewnimy wsparcie w tym procesie.

Zalecane priorytety integracji dla każdej platformy

Ogólne wymagania

WymaganieOpisPriorytet
Obsługa działań użytkownika za pomocą UiAmountWszystkie działania użytkownika powinny być wprowadzane w UiAmount, gdy UiAmount jest włączony w całej aplikacji. Jeśli UiAmount nie jest widoczny w aplikacji, należy używać surowych wartości do czasu aktualizacji aplikacji.P0

Portfele

WymaganieOpisPriorytet
Wyświetlanie przeskalowanego saldaWyświetlaj przeskalowaną wartość (uiAmount) jako główne saldo.P0
Obsługa transferów tokenówUżytkownicy końcowi powinni wprowadzać kwoty transferów przy użyciu ich przeskalowanych sald (surowa wartość * saldo).P0
Wyświetlanie ceny spotWyświetlaj przeskalowaną cenę spot dla użytkownikówP0
Metadane historii transakcjiWyświetlaj przeskalowaną wartość (UIAmount) dla każdego transferu, gdzie to możliwe.P1
Pokazywanie aktualizacji mnożnika w historii transakcjiGdy występują aktualizacje mnożnika, pokaż to jako zdarzenie w historii transakcji użytkownika, w tym uzyskaną kwotęP2
Wyświetlanie wykresu historii cenOdzwierciedlaj przeskalowane ceny na wykresie cenP1
Wprowadzenie/PodpowiedziOferuj podpowiedzi lub wprowadzenie, aby edukować użytkowników na temat tokenów korzystających z rozszerzenia przeskalowanej wartości uiAmountP2

Explorery

WymaganieOpisPriorytet
Ulepszenia strony szczegółów tokenaWyświetlaj metadane, takie jak całkowita przeskalowana kapitalizacja rynkowa i aktualny mnożnikP0
Wyświetlanie przeskalowanego salda dla saldWyświetlaj przeskalowane salda (UiAmount) dla bieżących sald.P0
Wyświetlanie przeskalowanego salda dla transakcjiWyświetlaj przeskalowane salda (UiAmount) dla kwot transferów w transakcjach historycznych.P0
Wyświetlanie przeskalowanej ceny dla transakcjiWyświetlaj przeskalowane ceny dla wcześniejszych transakcjiP1
Poprawne parsowanie i wyświetlanie transakcji aktualizacji mnożnikaPoprawnie pokazuj szczegóły dotyczące aktualizacji mnożnikaP2

Agregatory danych rynkowych (np. CoinGecko)

WymaganieOpisPriorytet
Aktualizacje API dla skalowanych danychRozszerzenie funkcjonalności API o zmiany mnożnika w czasie oraz skalowany kanał cenowy.P0
Całkowita podaż z uwzględnieniem skalowaniaPrzy wyświetlaniu całkowitej podaży i całkowitej kapitalizacji rynkowej uwzględnij skalowane saldaP0
Śledzenie historycznych cenUdostępnienie wykresu historycznych cen z wykorzystaniem skalowanych cen w czasie.P1
Śledzenie historycznych mnożnikówUdostępnienie historycznych znaczników aktualizacji mnożnika dla tokenów oprocentowanych.P2
Treści edukacyjne lub wyjaśnieniaDodanie krótkich opisów lub podpowiedzi wyjaśniających, jak działają skalowane tokeny.P2

Dostawcy kanałów cenowych

WymaganieOpisPriorytet
Skalowane i nieskalowane kanały cenoweUdostępnienie kanałów cenowych zarówno dla skalowanych, jak i nieskalowanych cen.P0
Historyczne dane mnożnikówUdostępnienie API z historycznymi zmianami mnożników.P0
Historyczne dane cenUdostępnienie API z historycznymi cenami opartymi na skalowanych i nieskalowanych wartościach.P0

DEXy

WymaganieOpisPriorytet
Wyświetlanie sald tokenów po przeskalowaniuWyświetlanie skalowanych sald dla handlu lub dostarczania płynności w interfejsie użytkownika (backend może nadal używać surowych wartości).P0
Obsługa działań na tokenachUżytkownicy końcowi powinni wprowadzać kwoty działań z wykorzystaniem swoich sald UiAmount (mnożnik * surowa wartość).P0
Adaptacja kanałów cenowychW każdym miejscu, gdzie kanał cenowy jest używany do wyświetlania bieżącej ceny, należy udostępnić użytkownikom końcowym skalowaną cenę.P1
Wyświetlanie wykresu historii cenOdzwierciedlenie skalowanych cen na wykresie cenowym.P1

Is this page helpful?