Sprytne Okazje — promocje, kody rabatowe i wyprzedaże

Kalkulator hashu EIP-712

Policz hash typu EIP712Domain i separator domeny dla swoich danych.

Bezpieczne (SSL)
Przetwarzanie Lokalne
100% Darmowe
Instrukcja
  • 1
    Wprowadź dane
    Wpisz treść, wklej tekst lub załaduj plik z dysku.
  • 2
    Kliknij przycisk
    Narzędzie natychmiast przetworzy Twoje dane w przeglądarce.
  • 3
    Pobierz wynik
    Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
function runTool() {
  return "Wynik gotowy w 0.1s";
}

Oceń to narzędzie:

Powiązane narzędzia

Inne narzędzia, które mogą Ci się przydać

Jak używać kalkulatora hashu EIP-712

Kalkulator hashu EIP-712 wyznacza dwie wartości przydatne przy pracy z podpisami zgodnymi ze standardem EIP-712: hash typu domeny oraz separator domeny. Wszystko liczy się w Twojej przeglądarce, a wynik pojawia się od razu po wpisaniu danych.

Jak to zrobić krok po kroku:

  1. Wpisz Nazwę domeny. Domyślnie podstawiona jest wartość Ether Mail.
  2. Wpisz Wersję - domyślnie jest to 1.
  3. Podaj Chain ID, czyli numer sieci. Domyślnie 1.
  4. Wpisz adres Kontraktu, który weryfikuje podpis. Domyślnie 0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC.
  5. Kliknij Oblicz separator domeny. Obliczenia uruchamiają się także automatycznie po wejściu, więc zwykle nie musisz nic klikać.

W wynikach zobaczysz dwie pozycje: Hash typu EIP712Domain oraz Separator domeny. Obie mają postać 0x i ciągu znaków hex. Możesz je zaznaczyć i skopiować w dowolne miejsce.

Dla wartości domyślnych wynik jest następujący:

  • Hash typu EIP712Domain: 0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f
  • Separator domeny: 0xf2cee375fa42b42143804025fc449deafd50cc031ca257e0b194a650a912090f

Jeśli chcesz sprawdzić zgodność z narzędziem, którego używasz na co dzień, wpisz dokładnie te same wartości i porównaj oba wyniki.

Co to jest domainSeparator i typ EIP712Domain

EIP-712 to sposób podpisywania danych, w którym użytkownik widzi, co dokładnie podpisuje. Aby ten sam podpis nie był ważny w każdej aplikacji i w każdej sieci, wprowadzono pojęcie domeny.

Domena to zestaw informacji opisujących kontekst podpisu: nazwa aplikacji, jej wersja, numer sieci oraz adres kontraktu, który podpis sprawdza. Typ EIP712Domain to szablon tej domeny - mówi, z jakich elementów się składa i w jakiej kolejności są one łączone.

Separator domeny, czyli domainSeparator, to skrót całej domeny. Powstaje tak, że najpierw tworzony jest hash samego opisu typu, a potem dołączane są skróty nazwy i wersji oraz informacje o sieci i kontrakcie. Całość zamieniana jest na końcu na jeden skrót o stałej długości.

Po co to wszystko? Dzięki separatorowi podpis złożony w jednej sieci nie zadziała w innej, a podpis przeznaczony dla jednego kontraktu nie zadziała w innym. To zabezpieczenie przed ponownym użyciem tego samego podpisu w innym miejscu.

Jak kodowane są pola Nazwa, Wersja, Chain ID i adres w ABI

Każdy element domeny musi zostać zamieniony na ciąg bajtów w ustalony sposób, zanim powstanie z nich końcowy skrót. Wygląda to tak:

  • Nazwa - tekst zapisany w standardzie UTF-8, a następnie zamieniony na skrót o długości 32 bajtów.
  • Wersja - traktowana dokładnie tak samo jak nazwa: najpierw tekst, potem skrót 32-bajtowy. Wartość 1 to również tekst, a nie liczba.
  • Chain ID - liczba zapisana na 32 bajtach, od najstarszego bajtu do najmłodszego. Dla wartości 1 jest to liczba z jedną jedynką na końcu, dopełniona zerami z przodu.
  • Adres kontraktu - 20 bajtów adresu dopełnione zerami z lewej strony do 32 bajtów.

Następnie wszystkie części łączy się w jednej kolejności: skrót opisu typu, skrót nazwy, skrót wersji, liczba oznaczająca sieć i adres kontraktu. Z tak połączonych danych powstaje jeden końcowy skrót - to właśnie separator domeny.

Skrót to wynik jednokierunkowego przekształcenia keccak-256: z tych samych danych zawsze wychodzi ta sama wartość, a z wyniku nie da się odtworzyć danych wejściowych. Zapisuje się go jako 0x i 64 znaki hex, czyli 32 bajty.

Przykład dla wartości domyślnych: nazwa Ether Mail, wersja 1, Chain ID 1 oraz adres 0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC. Sam opis typu daje hash 0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f, a po dołączeniu pozostałych elementów separator domeny wynosi 0xf2cee375fa42b42143804025fc449deafd50cc031ca257e0b194a650a912090f.

DomainSeparator, hashStruct i digest podpisu - czym się różnią

Te trzy pojęcia bywają mylone, a oznaczają różne rzeczy.

PojęcieCo obejmuje
Hash typu EIP712DomainSam opis tego, z jakich elementów składa się domena. Nie zależy od wpisanych wartości - zmienia się tylko wtedy, gdy zmieni się sam zestaw elementów domeny.
Separator domenyOpis typu razem z konkretnymi wartościami: nazwą, wersją, numerem sieci i adresem kontraktu.
Skrót struktury, czyli hashStructOgólne pojęcie oznaczające skrót dowolnej struktury danych złożonej z opisu typu i wartości. Separator domeny jest skrótem struktury dla domeny.
Skrót podpisu, czyli digestWartość, którą faktycznie podpisuje portfel. Powstaje z połączenia znacznika EIP-712, separatora domeny oraz skrótu właściwej wiadomości.

Najważniejszy wniosek jest taki: separator domeny to dopiero połowa pracy. Kalkulator wylicza opis typu i separator, ale nie tworzy skrótu wiadomości ani gotowej wartości do podpisu. Jeśli chcesz podpisać konkretną wiadomość, potrzebujesz jeszcze jej własnej struktury i wartości.

Ograniczenia kalkulatora hashu EIP-712

To proste narzędzie do jednego zadania. Warto wiedzieć, czego po nim nie oczekiwać.

  • Brak dodatkowej soli domeny. Niektóre domeny zawierają jeszcze wartość losującą. Kalkulator obsługuje cztery elementy: nazwę, wersję, numer sieci i adres kontraktu. Jeśli Twoja domena używa soli, otrzymany tutaj separator nie będzie zgodny z Twoją aplikacją.
  • Brak hasha wiadomości i skrótu podpisu. Narzędzie nie przyjmuje treści podpisywanej wiadomości, więc nie policzy skrótu jej struktury ani wartości podpisywanej przez portfel.
  • Brak sprawdzania numeru sieci. Chain ID wpisujesz sam. Kalkulator nie wie, do jakiej sieci należy dany numer, i nie porównuje go z niczym.
  • Brak importu i eksportu plików. Wartości wpisujesz ręcznie, a wyniki kopiujesz ręcznie.
  • Wynik zależy wyłącznie od Twoich danych. Inna nazwa, wersja, numer sieci lub adres dają zupełnie inny separator. Przed użyciem wyniku upewnij się, że wartości zgadzają się co do znaku z tym, czego używa Twoja aplikacja.
  • Narzędzie niczego nie podpisuje i nie łączy się z portfelem. Nie sprawdza też, czy pod podanym adresem rzeczywiście działa kontrakt.

Adres kontraktu wpisuj w pełnej formie, czyli z prefiksem 0x i 40 znakami hex. Wszystkie obliczenia wykonują się lokalnie w Twojej przeglądarce, a wpisane dane nie są nigdzie wysyłane.

Najczęstsze pytania

Jak obliczyć domainSeparator dla EIP-712?

Wpisz nazwę domeny, wersję, numer sieci i adres kontraktu, a następnie kliknij Oblicz separator domeny. Obliczenia uruchamiają się też automatycznie po wejściu, więc zwykle wystarczy samo uzupełnienie danych. Wynik znajdziesz w pozycji Separator domeny, w postaci 0x i ciągu znaków hex.

Co to jest separator domeny w EIP-712?

To skrót informacji opisujących kontekst podpisu: nazwy aplikacji, jej wersji, numeru sieci i adresu kontraktu. Dzięki niemu podpis złożony dla jednej aplikacji lub jednej sieci nie jest ważny w innym miejscu.

Czym różni się hash typu EIP712Domain od separatora domeny?

Hash typu opisuje wyłącznie strukturę domeny, czyli listę jej elementów, i nie zależy od wpisanych wartości. Separator domeny to ten sam opis wzbogacony o konkretną nazwę, wersję, numer sieci i adres kontraktu.

Czy kalkulator policzy skrót podpisu albo hash całej wiadomości?

Nie. Narzędzie podaje hash typu domeny oraz separator domeny. Skrót wiadomości i wartość, którą podpisuje portfel, wyznaczasz osobno w swojej aplikacji.

Czy kalkulator obsługuje domenę z polem salt?

Nie, obsługiwane są cztery elementy: nazwa, wersja, numer sieci i adres kontraktu. Jeśli Twoja domena zawiera dodatkową sól, uzyskany tutaj separator będzie inny niż w Twojej aplikacji.

Czy dane wpisane w kalkulatorze są gdzieś wysyłane?

Nie. Obliczenia wykonują się lokalnie w Twojej przeglądarce i nic nie jest przesyłane na zewnątrz. Możesz więc wpisywać wartości bez obaw.

Zobacz też — powiązane narzędzia

Wynik jest liczony lokalnie i dotyczy wyłącznie separatora domeny; przed użyciem w podpisie zweryfikuj typ domeny i parametry z kontraktem.

Zainstaluj Webp.pl Miej narzędzia we własnej kieszeni!