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
Wymaganie | Opis | Priorytet |
---|---|---|
Obsługa działań użytkownika za pomocą UiAmount | Wszystkie 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
Wymaganie | Opis | Priorytet |
---|---|---|
Wyświetlanie przeskalowanego salda | Wyświetlaj przeskalowaną wartość (uiAmount) jako główne saldo. | P0 |
Obsługa transferów tokenów | Użytkownicy końcowi powinni wprowadzać kwoty transferów przy użyciu ich przeskalowanych sald (surowa wartość * saldo). | P0 |
Wyświetlanie ceny spot | Wyświetlaj przeskalowaną cenę spot dla użytkowników | P0 |
Metadane historii transakcji | Wyświetlaj przeskalowaną wartość (UIAmount) dla każdego transferu, gdzie to możliwe. | P1 |
Pokazywanie aktualizacji mnożnika w historii transakcji | Gdy występują aktualizacje mnożnika, pokaż to jako zdarzenie w historii transakcji użytkownika, w tym uzyskaną kwotę | P2 |
Wyświetlanie wykresu historii cen | Odzwierciedlaj przeskalowane ceny na wykresie cen | P1 |
Wprowadzenie/Podpowiedzi | Oferuj podpowiedzi lub wprowadzenie, aby edukować użytkowników na temat tokenów korzystających z rozszerzenia przeskalowanej wartości uiAmount | P2 |
Explorery
Wymaganie | Opis | Priorytet |
---|---|---|
Ulepszenia strony szczegółów tokena | Wyświetlaj metadane, takie jak całkowita przeskalowana kapitalizacja rynkowa i aktualny mnożnik | P0 |
Wyświetlanie przeskalowanego salda dla sald | Wyświetlaj przeskalowane salda (UiAmount) dla bieżących sald. | P0 |
Wyświetlanie przeskalowanego salda dla transakcji | Wyświetlaj przeskalowane salda (UiAmount) dla kwot transferów w transakcjach historycznych. | P0 |
Wyświetlanie przeskalowanej ceny dla transakcji | Wyświetlaj przeskalowane ceny dla wcześniejszych transakcji | P1 |
Poprawne parsowanie i wyświetlanie transakcji aktualizacji mnożnika | Poprawnie pokazuj szczegóły dotyczące aktualizacji mnożnika | P2 |
Agregatory danych rynkowych (np. CoinGecko)
Wymaganie | Opis | Priorytet |
---|---|---|
Aktualizacje API dla skalowanych danych | Rozszerzenie funkcjonalności API o zmiany mnożnika w czasie oraz skalowany kanał cenowy. | P0 |
Całkowita podaż z uwzględnieniem skalowania | Przy wyświetlaniu całkowitej podaży i całkowitej kapitalizacji rynkowej uwzględnij skalowane salda | P0 |
Śledzenie historycznych cen | Udostępnienie wykresu historycznych cen z wykorzystaniem skalowanych cen w czasie. | P1 |
Śledzenie historycznych mnożników | Udostępnienie historycznych znaczników aktualizacji mnożnika dla tokenów oprocentowanych. | P2 |
Treści edukacyjne lub wyjaśnienia | Dodanie krótkich opisów lub podpowiedzi wyjaśniających, jak działają skalowane tokeny. | P2 |
Dostawcy kanałów cenowych
Wymaganie | Opis | Priorytet |
---|---|---|
Skalowane i nieskalowane kanały cenowe | Udostępnienie kanałów cenowych zarówno dla skalowanych, jak i nieskalowanych cen. | P0 |
Historyczne dane mnożników | Udostępnienie API z historycznymi zmianami mnożników. | P0 |
Historyczne dane cen | Udostępnienie API z historycznymi cenami opartymi na skalowanych i nieskalowanych wartościach. | P0 |
DEXy
Wymaganie | Opis | Priorytet |
---|---|---|
Wyświetlanie sald tokenów po przeskalowaniu | Wyś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 tokenach | Użytkownicy końcowi powinni wprowadzać kwoty działań z wykorzystaniem swoich sald UiAmount (mnożnik * surowa wartość). | P0 |
Adaptacja kanałów cenowych | W 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 cen | Odzwierciedlenie skalowanych cen na wykresie cenowym. | P1 |
Is this page helpful?