Richtlinien für die Prüfung von Staking-Protokollen

Richtlinien für die Prüfung von Staking-Protokollen

Lesezeit: 6 Minuten

In diesem Blog haben wir das Konzept von Liquiditäts-Staking-Protokollen und Prüfungsrichtlinien für Staking-Protokolle skizziert. Die Richtlinien decken eine Reihe von Schwachstellen ab, wie z. B. Auszahlungsmechanismen, Rundungsfehler, externe Aufrufe, Gebührenlogik, Schleifen, Strukturen, Staking-Dauer usw. Dieser Blogbeitrag ist eine nützliche Referenz für die Prüfung von Staking-Protokollen und kann Ihnen helfen, potenzielle Fehler zu identifizieren .

Was ist Liquidity Staking?

Liquidity Staking ermöglicht es Benutzern, ihre Kryptowährungsbestände zu staken und Belohnungen zu verdienen, ohne die Liquidität zu opfern. Anstatt ihre Coins für einen festgelegten Zeitraum zu sperren, können Benutzer einen flüssigen Token erhalten, der ihr eingesetztes Vermögen darstellt. Dieser Token kann wie jede andere Kryptowährung gehandelt oder verwendet werden, sodass die Benutzer ihre Vermögenswerte nach Belieben verwenden und gleichzeitig Staking-Belohnungen erhalten können.

Richtlinien für die Prüfung von Absteckprotokollen PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Sie haben beispielsweise 100 ETH, die Sie im Ethereum-Netzwerk einsetzen möchten. Anstatt Ihre ETH für einen festgelegten Zeitraum zu sperren, können Sie einen Liquiditäts-Staking-Service wie Lido nutzen, um Ihre ETH zu staken und im Gegenzug einen flüssigen Token namens stETH zu erhalten. Mit stETH können Sie Ihre gestakte ETH weiterhin handeln oder verwenden, während Sie Staking-Belohnungen verdienen.

Beginnen wir mit der Prüfung von Staking-Verträgen:

Untersuchen Sie alle verfügbaren Prüfungsspezifikationen, bevor Sie mit dem Vertragscode beginnen. Es könnte in Form eines Whitepapers, README-Dateien oder etwas anderem vorliegen. Diese geben Ihnen eine Vorstellung davon, was der Vertragscode enthalten wird.

Wenn Sie sich das Audit-Spezifikationsdokument für den Staking-Vertrag ansehen, achten Sie auf diese Punkte:

  • Gebührenarten und deren Berechnung.
  • Belohnungsmechanismus für gesteckte Token
  • Befugnisse des Eigentümers
  • Wird der Vertrag die ETH halten?
  • Welche Token hält der Vertrag?
  • Ursprünglicher Vertrag, aus dem er geforkt wurde

Überprüfen Sie, ob die Spezifikationen mit dem Code übereinstimmen. Beginnen Sie mit Gebühren und Tokenomics, gefolgt von der Validierung der Autorität des Eigentümers. Überprüfen Sie, ob alle Belohnungen und Gebührenwerte mit der Dokumentation übereinstimmen.

Schwachstellen zu suchen?

1. Auszahlungsmechanismus für Belohnungen:

Stellen Sie sicher, dass der Belohnungsmechanismus für gestakte Token korrekt implementiert ist und dass die Belohnungen fair und proportional an alle Staker verteilt werden. Projekte können Belohnungen auf zwei Arten verteilen: entweder automatisch, regelmäßig oder auf Anfrage durch die Benutzer selbst. Eine Auszahlungsfunktion kann gemäß der Geschäftslogik des Protokolls implementiert und angepasst werden.
Nachfolgend einige Checkpoints:

  • Überprüfen Sie, ob ein Benutzer mehr als seine Belohnung + den eingesetzten Betrag abheben kann.
  • Überprüfen Sie die Betragsberechnung auf Überlauf/Unterlauf
  • Prüfen Sie, ob sich bestimmte Parameter bei der Berechnung negativ auf die Prämien auswirken können.
  • Wenn block.timestamp oder block.number in dieser Funktion verwendet wird. Überprüfen Sie, ob es in irgendeiner Weise ausgenutzt werden kann.

2. Gebührenlogik:

Wenn die Ein- und Auszahlung einer Gebühr unterliegt, stellen Sie sicher, dass kein einzelner Benutzer die Gebühr umgehen kann. Achten Sie außerdem auf mögliche Überlauf- oder Unterlaufprobleme. Nur der Administrator oder Eigentümer sollte berechtigt sein, Gebühreneinstellungen zu ändern. Stellen Sie außerdem sicher, dass ein Schwellenwert für die Höchstgebühren festgelegt wurde, um zu verhindern, dass der Administrator einen übermäßig hohen Betrag festlegt.

3. Präge-/Brennmechanismus des LP-Tokens:

Überprüfen Sie, ob die Präge- und Brennmechanismen korrekt implementiert wurden. Eine Burn-Funktion sollte alle Zustandsänderungen rückgängig machen, die von einer Mint-Funktion vorgenommen wurden. Darüber hinaus ist es wichtig zu überprüfen, ob die Benutzer beim ersten Einsatz, wenn der Pool leer ist, die angemessene Menge an Token erhalten.

Die Logik der Präge- und Brennfunktionen kann mathematisch verifiziert werden, um jede versteckte Schwachstelle aufzudecken. Außerdem sollte das Gesamtangebot an geprägten LP-Token das eingesetzte Vermögen nicht überschreiten.

4. Rundungsfehler:

Auch wenn bestimmte kleinere Rundungsfehler normalerweise unvermeidlich und kein Problem sind, können sie erheblich zunehmen, wenn es möglich ist, sie zu multiplizieren. Suchen Sie nach Grenzfällen, in denen Sie von Rundungsfehlern profitieren können, indem Sie wiederholt abstecken und abstecken.

Um festzustellen, ob Rundungsfehler über einen längeren Zeitraum in erheblichem Umfang auftreten können, können wir die Bandbreite möglicher Rundungsfehler mathematisch berechnen.

5. Einsatzdauer:

Stellen Sie sicher, dass die Berechnungen der Staking-Dauer im Vertrag mit der angegebenen Geschäftslogik übereinstimmen. Stellen Sie sicher, dass Benutzer Prämien nicht einlösen können, bevor die Staking-Dauer abgelaufen ist, indem Sie die Dauerprüfungen umgehen. Überprüfen Sie auch, ob die Dauer des Einsatzes von einem Angreifer ausgenutzt werden kann, um mehr Belohnungen zu erhalten.

6. Externe Anrufe und Token-Handhabung:

Die meisten externen Aufrufe erfolgen zu den Token-Verträgen. Wir müssen also bestimmen, welche Arten von Token der Staking-Vertrag handhaben wird. Es ist wichtig, externe Aufrufe auf Fehler und Reentrancy-Angriffe zu überprüfen. Deflationäre Token oder Token mit Überweisungsgebühren, wie beispielsweise Safemoon, können ein Problem darstellen, wenn ihre Logik nicht korrekt umgesetzt wird.

7. Prüfung auf Preismanipulationen:

Preismanipulation über einen Flash-Kredit ist einer der häufigsten Hacks bei DeFi-Projekten. Es kann Situationen geben, in denen böswillige Akteure Flash-Darlehen verwenden können, um Preise während des Stakens zu manipulieren oder eine große Menge von Token zu entstaken. Überprüfen Sie die Staking- und Unstaking-Funktionen sorgfältig, um Randszenarien zu vermeiden, die zu Preismanipulationsangriffen auf Flash-Darlehensbasis und zum Verlust von Geldern anderer Benutzer führen könnten.

8. Einige zusätzliche Überprüfungen:

  • Schleifen: Wenn die Vertragslogik das Durchschleifen von Arrays beinhaltet, ist es wichtig sicherzustellen, dass das Blockgaslimit nicht überschritten wird. Dies kann auftreten, wenn die Array-Größe sehr groß ist, daher sollten Sie untersuchen, welche Funktionen die Größe des Arrays erhöhen könnten und ob ein Benutzer dies ausnutzen könnte, um einen DoS-Angriff zu verursachen. Schau dir das an berichten.
  • Strukturen: Staking-Verträge verwenden den Strukturtyp, um Benutzer- oder Pooldaten zu speichern. Beim Deklarieren oder Zugreifen auf eine Struktur innerhalb einer Funktion ist es wichtig anzugeben, ob „Speicher“ oder „Speicher“ verwendet werden soll. Es könnte uns helfen, etwas Benzin zu sparen. Weitere Informationen finden Sie unter zu diesem Artikel.
  • Frontlauf: Suchen Sie nach Szenarien, in denen böswillige Akteure jede Transaktion zu ihrem Vorteil vorantreiben könnten.
  • Funktion Sichtbarkeits-/Zugriffskontrollprüfungen: Jede Funktion, die als extern oder öffentlich deklariert ist, kann von jedem aufgerufen werden. Daher ist es wichtig sicherzustellen, dass keine öffentliche Funktion sensible Aktionen ausführen kann. Es ist wichtig zu überprüfen, ob das Staking-Protokoll geeignete Kontrollen implementiert hat, um unbefugten Zugriff sowohl auf die gestaketen Coins als auch auf die Infrastruktur des Systems zu verhindern.
  • Zentralisierungsrisiken: Es ist wichtig, dem Besitzer keine übermäßigen Befugnisse zu geben. Wenn die Admin-Adresse kompromittiert wird, kann dies zu erheblichen Schäden am Protokoll führen. Stellen Sie sicher, dass die Eigentümer- oder Administratorrechte angemessen sind, und stellen Sie sicher, dass das Protokoll einen Plan für den Umgang mit Situationen enthält, in denen die privaten Schlüssel eines Administrators preisgegeben werden.
  • Handhabung ETH / WETH: Verträge enthalten oft eine spezifische Logik für den Umgang mit ETH. Wenn beispielsweise msg.value > 0 ist, kann ein Vertrag ETH in WETH umwandeln, während WETH weiterhin direkt empfangen werden kann. Wenn ein Benutzer WETH als Währung angibt, aber ETH mit dem Aufruf sendet, kann dies bestimmte Invarianten brechen und zu falschem Verhalten führen.

Bisher haben wir Liquiditätsabsteckungsprotokolle und die Prüfungsrichtlinien für solche Protokolle besprochen. Kurz gesagt, Liquidity Staking ermöglicht es Benutzern, Staking-Belohnungen zu verdienen, ohne Liquidität zu opfern. Wir haben die Schwachstellen in Staking-Verträgen skizziert, auf die Prüfer achten müssen, wie z. B. Auszahlungsmechanismen, Gebührenlogik, LP-Token-Prägungs-/Brennmechanismus, Rundungsfehler, Staking-Dauer, externe Aufrufe und Preismanipulationsprüfungen. 

Wir empfehlen Auditoren, Audit-Spezifikationsdokumente zu prüfen, Spezifikationen mit Code abzugleichen und Gebühren und Tokenomics-Validierung zu überprüfen. Wir empfehlen auch zusätzliche Überprüfungen wie das Schleifen über Arrays, das Angeben von Arbeitsspeicher oder Speicher für Strukturtypdaten und Front-Running-Szenarien. Diese Richtlinien sind nützlich, um Staking-Protokolle zu prüfen und potenzielle Fehler zu identifizieren.


11 Views

Zeitstempel:

Mehr von Quillhash