< Wróć do aktualności

SSP Connect zyskuje akcję pay

·4 min czytania·Autor: SSP Editorial Team
Granatowa okładka SSP z ikonami QR, portfela, błyskawicy i tarczy zapowiadająca akcję pay w SSP Connect

11 lutego 2024 roku SSP Connect przestał być wyłącznie protokołem podglądu i tożsamości i stał się również protokołem płatności. Wersja v1.1.0 SSP Wallet dodaje do SSP Connect metodę pay, pozwalając dowolnej dApp lub stronie WWW poprosić użytkownika SSP o prawdziwą płatność on-chain bez ponownego implementowania portfela. Kształt żądania jest celowo niewielki: trzy parametry, z których jeden jest intencjonalnie ciągiem znaków.

TL;DR

  • SSP Connect udostępnia teraz akcję pay obok istniejących przepływów tożsamości.
  • Żądanie płatności przyjmuje dokładnie trzy parametry: chain, address oraz amount.
  • amount jest ciągiem znaków celowo, aby zachować precyzję dziesiętną w transporcie.
  • Przepływ podpisywania nadal działa od końca do końca na dwóch urządzeniach użytkownika; dApp nigdy nie widzi kluczy.
  • Integratorzy powinni formatować amount za pomocą BigNumber.toFixed() (lub odpowiednika) przed wysłaniem.

Czym jest SSP Connect

SSP Connect jest mostem między użytkownikiem SSP Wallet a światem zewnętrznym. To ten sam lekki protokół sesji wprowadzony wraz z premierą SSP Wallet, w którym sam portfel jest prawdziwym multisigiem 2-z-2 rozłożonym między rozszerzenie przeglądarki a rezydujący w telefonie SSP Key. Przed tą wersją Connect służył głównie do żądań tylko do odczytu: sparowania sesji, udostępnienia adresu, potwierdzenia, że dany użytkownik kontroluje dane konto. Kluczowe jest to, że sekrety nigdy nie opuszczają dwóch urządzeń użytkownika; Connect po prostu przenosi intencje i odpowiedzi między nimi a stroną ufającą.

Co robi akcja pay

Metoda pay rozszerza Connect z „powiedz mi, kim jesteś" do „pozwól, że poproszę cię o płatność". dApp tworzy żądanie pay, przekazuje je do Connect, a użytkownik proszony jest w interfejsie swojego portfela o zatwierdzenie, edycję lub odrzucenie żądania. Jeśli użytkownik zatwierdzi, przepływ podpisywania multisig biegnie jak zawsze — rozszerzenie przygotowuje, telefon współpodpisuje — a powstała transakcja jest rozgłaszana. dApp dostaje czyste potwierdzenie lub czyste odrzucenie i nigdy nie dotyka klucza prywatnego.

Trzy parametry

chain to ciąg nazywający aktywo wspierane przez SSP, w którym ma być zapłacona kwota, na przykład 'flux'. Jest obowiązkowy. Wartość odpowiada identyfikatorom aktywów, których SSP używa już wewnętrznie, więc integratorzy nie muszą uczyć się nowego schematu nazewnictwa.

address to cel płatności — zwykły ciąg w formacie adresu oczekiwanym przez wybraną chain. Również jest obowiązkowy. SSP wykonuje zwykłą walidację formatu i sumy kontrolnej po stronie odbiorczej, zanim pokaże żądanie użytkownikowi.

amount to wartość do wysłania, wyrażona w głównej jednostce tej chain. Na przykład '4.56' oznacza 4,56 FLUX, a nie 4,56 najmniejszej niepodzielnej jednostki. Jest obowiązkowy i, co ważne, ma typ ciągu, a nie liczby.

Dlaczego „amount" jest ciągiem znaków

Liczby w JavaScript to doubles IEEE-754 — dokładnie zła reprezentacja dla pieniędzy. 0.1 + 0.2 to nie 0.3, a 18-miejscowe kwoty tokenów po prostu nie mieszczą się w double bez cichego zaokrąglania. Wymuszenie, by amount był ciągiem, omija całą tę klasę błędów precyzji na granicy protokołu: to, co dApp obliczył wewnętrznie — zwykle biblioteką big-decimal — przeżywa podróż do portfela bez zmian. Notatki wydania zalecają formatowanie wartości za pomocą BigNumber.toFixed() przed wysyłką, co jest standardowym sposobem renderowania big-decimal jako dokładnego ciągu bez notacji naukowej.

Co robić dalej

Jeśli utrzymujesz dApp lub stronę WWW, która już używa SSP Connect do tożsamości, ścieżka aktualizacji jest krótka: zachowaj istniejącą sesję, dodaj żądanie pay tam, gdzie wcześniej prosiłeś użytkownika o skopiowanie adresu. Waliduj chain względem listy aktywów wspieranych przez SSP, które naprawdę chcesz akceptować, waliduj address po stronie klienta, aby użytkownik widział błędy, zanim dotrą do portfela, i zawsze formatuj amount przez toFixed() (lub odpowiednik) swojej biblioteki big-decimal, tak by wysyłany ciąg był dokładnie tym, co policzyłeś. Resztą — potwierdzeniem, podpisem, rozgłoszeniem — zajmuje się portfel, nigdy nie ujawniając kluczy twojej origin.

Source: Notatki wydania SSP Wallet v1.1.0.

Udostępnij ten artykuł

Powiązane artykuły