Wytyczne dotyczące audytu protokołów tyczenia

Wytyczne dotyczące audytu protokołów tyczenia

Czas czytania: 6 minuty

Na tym blogu przedstawiliśmy koncepcję protokołów stakingu płynności oraz wytyczne dotyczące audytu protokołów stakingu. Wytyczne obejmują szereg wrażliwych punktów, takich jak mechanizmy wypłat, błędy zaokrągleń, połączenia zewnętrzne, logika opłat, pętle, struktury, czas trwania obstawiania itp. Ten wpis na blogu będzie przydatnym odniesieniem do audytu protokołów obstawiania i może pomóc w zidentyfikowaniu potencjalnych błędów .

Co to jest staking płynności?

Staking płynności pozwala użytkownikom obstawiać swoje kryptowaluty i zdobywać nagrody bez poświęcania płynności. Zamiast blokować swoje monety na określony czas, użytkownicy mogą otrzymać płynny token, który reprezentuje ich postawione aktywa. Tokenem tym można handlować lub używać jak każdą inną kryptowalutą, umożliwiając użytkownikom korzystanie ze swoich aktywów w dowolny sposób, jednocześnie zdobywając nagrody za obstawianie.

Wytyczne dotyczące audytu protokołów stakowania PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Na przykład masz 100 ETH, które chcesz postawić w sieci Ethereum. Zamiast blokować swój ETH na określony czas, możesz skorzystać z usługi stakingu płynności, takiej jak Lido, aby postawić swój ETH i otrzymać w zamian płynny token o nazwie stETH. Dzięki stETH nadal możesz handlować lub używać postawionego ETH, jednocześnie zdobywając nagrody za stakowanie.

Zacznijmy od audytu umów tyczenia:

Sprawdź wszystkie dostępne specyfikacje audytu, zanim zaczniesz od kodu umowy. Może to być w formie białej księgi, plików README lub czegoś innego. Dają one wyobrażenie o tym, co będzie zawierał kod umowy.

Przeglądając dokument specyfikacji audytu dla kontraktu tyczenia, poszukaj następujących punktów:

  • Rodzaje Opłat i ich kalkulacja.
  • Mechanizm nagród za postawione tokeny
  • Uprawnienia właściciela
  • Czy kontrakt będzie zawierał ETH?
  • Jakie tokeny będzie zawierał kontrakt?
  • Oryginalna umowa, z której jest rozwidlona

Sprawdź, czy specyfikacje są zgodne z kodem. Rozpocznij od opłat i tokenomiki, a następnie zatwierdź uprawnienia właściciela. Sprawdź, czy wszystkie wartości nagród i opłat są zgodne z dokumentacją.

Wrażliwych miejsc szukać?

1. Mechanizm wypłaty nagrody:

Sprawdź, czy mechanizm nagród z obstawionych tokenów jest prawidłowo zaimplementowany i czy nagrody są rozdzielane sprawiedliwie i proporcjonalnie do wszystkich obstawiających. Projekty mogą rozdzielać nagrody na dwa sposoby: automatycznie, okresowo lub na żądanie samych użytkowników. Funkcję wypłaty można zaimplementować i dostosować zgodnie z logiką biznesową protokołu.
Poniżej kilka punktów kontrolnych:

  • Sprawdź, czy któryś z użytkowników jest w stanie wypłacić więcej niż jego nagroda + stawka.
  • Sprawdź przepełnienie/niedopełnienie w obliczeniach kwoty
  • Sprawdź, czy niektóre parametry mogą mieć negatywny wpływ na nagrody podczas kalkulacji.
  • Jeśli w tej funkcji użyto block.timestamp lub block.number. Sprawdź, czy można go w jakikolwiek sposób wykorzystać.

2. Logika opłat:

Jeśli wpłata i wypłata podlegają opłacie, sprawdź, czy żaden pojedynczy użytkownik nie może jej ominąć. Ponadto bądź czujny na wszelkie potencjalne problemy z przepełnieniem lub niedopełnieniem. Tylko administrator lub właściciel powinien być upoważniony do zmiany ustawień opłat. Zweryfikuj również, czy został ustalony próg opłat maksymalnych, uniemożliwiający administratorowi ustalenie go w zbyt wysokiej wysokości.

3. Mechanizm bicia/wypalania tokena LP:

Sprawdź, czy mechanizmy bicia i wypalania zostały poprawnie zaimplementowane. Funkcja nagrywania powinna odwracać wszystkie zmiany stanu dokonane przez funkcję mennicy. Dodatkowo bardzo ważne jest sprawdzenie, czy użytkownicy otrzymują odpowiednią ilość tokenów podczas pierwszej stawki, gdy pula jest pusta.

Logikę funkcji bicia i wypalania można zweryfikować matematycznie, aby odkryć wszelkie ukryte luki. Ponadto całkowita podaż wybijanych tokenów LP nie powinna przekraczać postawionych aktywów.

4. Błędy zaokrągleń:

Chociaż pewne drobne błędy zaokrągleń są zwykle nieuniknione i nie stanowią problemu, mogą znacznie wzrosnąć, gdy można je zwielokrotnić. Poszukaj skrajnych przypadków, w których można skorzystać z błędów zaokrąglania poprzez wielokrotne staczanie i zdejmowanie.

Aby ustalić, czy błędy zaokrągleń mogą narosnąć do znacznej kwoty w dłuższym okresie czasu, możemy matematycznie obliczyć zakres możliwych błędów zaokrągleń.

5. Czas trwania obstawiania:

Upewnij się, że obliczenia czasu trwania tyczenia w kontrakcie są zgodne z określoną logiką biznesową. Sprawdź, czy użytkownicy nie mogą odebrać nagród przed zakończeniem okresu obstawiania, pomijając sprawdzanie czasu trwania. Sprawdź także, czy czas trwania stakingu może zostać wykorzystany przez atakującego, aby uzyskać więcej nagród.

6. Połączenia zewnętrzne i obsługa tokenów:

Większość połączeń zewnętrznych będzie dotyczyła kontraktów tokenowych. Musimy więc określić, jakie rodzaje tokenów będzie obsługiwał kontrakt stakingowy. Konieczne jest sprawdzenie połączeń zewnętrznych pod kątem błędów i ataków ponownego wejścia. Tokeny deflacyjne lub tokeny z opłatami transferowymi, takie jak Safemoon, mogą stanowić problem, jeśli ich logika nie zostanie poprawnie zaimplementowana.

7. Kontrola manipulacji cenami:

Manipulacja ceną za pomocą pożyczki błyskawicznej to jeden z najczęstszych hacków w projektach DeFi. Mogą zaistnieć sytuacje, w których złośliwi aktorzy mogą wykorzystywać pożyczki błyskawiczne do manipulowania cenami podczas obstawiania lub odstawiania dużej liczby tokenów. Dokładnie przejrzyj funkcje stakingu i unstakingu, aby uniknąć skrajnych scenariuszy, które mogłyby skutkować atakami manipulacji cenami opartymi na pożyczkach błyskawicznych i utratą funduszy innych użytkowników.

8. Niektóre dodatkowe kontrole:

  • Pętle: Jeśli logika kontraktu obejmuje zapętlanie tablic, ważne jest, aby nie przekroczyć limitu gazu blokowego. Taka sytuacja może wystąpić, gdy rozmiar tablicy jest bardzo duży, dlatego należy zbadać, jakie funkcje mogą zwiększyć rozmiar tablicy i czy jakikolwiek użytkownik mógłby to wykorzystać do przeprowadzenia ataku DoS. Sprawdź to raport.
  • Struktury: Kontrakty stakingowe używają typu struktury do przechowywania danych użytkownika lub puli. Podczas deklarowania lub uzyskiwania dostępu do struktury w ramach funkcji ważne jest, aby określić, czy ma być używana „pamięć”, czy „przechowywanie”. To może pomóc nam zaoszczędzić trochę gazu. Aby uzyskać więcej informacji, zapoznaj się do tego artykułu.
  • Bieg do przodu: szukaj scenariuszy, w których złośliwi aktorzy mogliby przeforsować każdą transakcję na swoją korzyść.
  • Sprawdzanie widoczności funkcji/kontroli dostępu: Każda funkcja zadeklarowana jako zewnętrzna lub publiczna może być dostępna dla każdego. Dlatego ważne jest, aby żadna funkcja publiczna nie mogła wykonywać wrażliwych działań. Kluczowe jest sprawdzenie, czy protokół obstawiania wdrożył odpowiednie środki kontroli, aby zapobiec nieautoryzowanemu dostępowi zarówno do obstawionych monet, jak i infrastruktury systemu.
  • Ryzyko centralizacji: Ważne jest, aby nie dawać właścicielowi nadmiernych uprawnień. Jeśli adres administratora zostanie naruszony, może to spowodować znaczne uszkodzenie protokołu. Sprawdź, czy uprawnienia właściciela lub administratora są odpowiednie i upewnij się, że protokół zawiera plan postępowania w sytuacjach wycieku kluczy prywatnych administratora.
  • Obsługa ETH/WETH: Kontrakty często zawierają określoną logikę obsługi ETH. Na przykład, gdy msg.value > 0, kontrakt może zamienić ETH na WETH, jednocześnie umożliwiając bezpośredni odbiór WETH. Gdy użytkownik określa WETH jako walutę, ale wysyła ETH z wywołaniem, może to spowodować uszkodzenie niektórych niezmienników i prowadzić do nieprawidłowego zachowania.

Do tej pory omówiliśmy protokoły stakingu płynności i wytyczne audytu dla takich protokołów. Krótko mówiąc, obstawianie płynności pozwala użytkownikom zdobywać nagrody za obstawianie bez poświęcania płynności. Nakreśliliśmy słabe punkty w umowach stakingu, na które audytorzy muszą zwrócić uwagę, takie jak mechanizmy wypłat, logika opłat, mechanizm bicia/wypalania tokenów LP, błędy zaokrąglania, czas trwania stakingu, połączenia zewnętrzne i kontrole manipulacji cenami. 

Zalecamy audytorom zbadanie dokumentów specyfikacji audytu, dopasowanie specyfikacji do kodu oraz sprawdzenie opłat i walidacji tokenomiki. Zalecamy również dodatkowe kontrole, takie jak zapętlanie tablic, określanie pamięci lub magazynu dla danych typu struktury oraz scenariusze uruchamiania z przodu. Te wskazówki będą przydatne podczas audytu protokołów tyczenia i pomogą zidentyfikować potencjalne błędy.


11 odwiedzajacy

Znak czasu:

Więcej z Quillhash