Smart Contract Audits (Solidproof)
1. Überblick
Solidproof (Solidproof.io, eine Marke der MAKE Network GmbH, Deutschland) hat im Auftrag von WeSendit drei Sicherheitsprüfungen von Smart Contracts durchgeführt:
- Token-Verträge: Oktober 2022
- Staking-Verträge: Januar 2023
- RewardDistributor und PaymentProcessor: Dezember 2023
Für die Prüfungen erhielt Solidproof Zugang zum Code-Repository von WeSendit und, bei den ersten beiden Prüfungen, zum Whitepaper.
2. Vorgehen
Alle drei Prüfungen folgen derselben Methodik. Das Team von Solidproof hat die bereitgestellten Unterlagen gesichtet, den Code manuell Zeile für Zeile geprüft und abgeglichen, ob er tut, was in den Unterlagen beschrieben ist. Ergänzend kamen automatisierte Analysen zum Einsatz, darunter eine Analyse der Testabdeckung und die symbolische Ausführung. Bei der symbolischen Ausführung wird ermittelt, welche Eingaben welche Teile des Programms auslösen. Zum Schluss wurde der Code mit Best Practices abgeglichen.
Befunde werden auf Grundlage von CVSS 3.0 in fünf Stufen eingeteilt: kritisch, hoch, mittel, niedrig und informativ. Informative Hinweise haben keine Auswirkung auf den Code.
3. Token-Verträge (Oktober 2022)
Umfang: Geprüft wurden der WeSendit Token und der DynamicFeeManager auf der Binance Smart Chain (BEP20). Der Bericht ist vom 22. Oktober 2022.
Ergebnis: Im Ergebnisteil sind keine Befunde aufgeführt. Zwei Hinweise sind mit einer Stellungnahme des WeSendit-Teams dokumentiert:
- Fehlende Prüfung auf eine leere Adresse (niedrig): Das Team hält fest, dass beim Einsatz des Vertrags keine leere Adresse eingetragen wird.
- Fehlende NatSpec-Dokumentation (informativ): Die Kommentare stehen in den Schnittstellen und nicht in den Hauptverträgen.
Alle 36 Prüfungen auf bekannte Schwachstellen aus der SWC-Registry wurden bestanden.
Geprüfte Eigenschaften:
- Der Vertrag ist nicht nachträglich austauschbar (nicht «upgradeable»).
- Die ERC20-Standardfunktionen sind korrekt umgesetzt.
- Der Betreiber kann keine neuen Token erzeugen. Die maximale Menge beträgt 1’500’000’000 Token.
- Der Betreiber kann keine Nutzerguthaben sperren oder vernichten. Inhaber können eigene Token vernichten.
- Der Vertrag enthält einen Pausenzustand, kann aber nur entpausiert und nicht erneut pausiert werden.
- Gebühren können nicht über 25 % gesetzt werden.
- Eine Funktion zum Sperren von Adressen ist nicht vorhanden.
Rechte laut Bericht: Der Betreiber kann die Pause aufheben, Gebühren aktivieren oder deaktivieren, die Gebühren einmalig senken und verschiedene Adressen festlegen, darunter den Gebührenmanager und die PancakeSwap-Adressen. Die Verwaltung kann BNB und Token aus den Verträgen abziehen sowie Gebühren hinzufügen und entfernen. Da mehrere Adressen berechtigt sind, bleiben auch bei einem Verzicht auf die Owner-Rolle andere Adressen handlungsfähig. Darauf weist Solidproof ausdrücklich hin.
4. Staking-Verträge (Januar 2023)
Umfang: Geprüft wurden die Verträge des Staking-Pools. Die Erstprüfung erfolgte am 9. Januar 2023, die Nachprüfung am 18. Januar 2023.
Ergebnis: Es wurden keine kritischen, hohen, mittleren oder niedrigen Befunde festgestellt. Es gibt einen informativen Hinweis zur fehlenden NatSpec-Dokumentation. Alle 36 SWC-Prüfungen wurden bestanden.
Geprüfte Eigenschaften:
- Der Vertrag ist nicht nachträglich austauschbar.
- Die ERC20-Standardfunktionen sind korrekt umgesetzt.
- Der Betreiber kann den Vertrag pausieren und damit Nutzerguthaben sperren.
Rechte laut Bericht: Der Betreiber kann den Vertrag pausieren, das Intervall für das Abrufen von Belohnungen festlegen und Token aus dem Vertrag abziehen. Zum Zeitpunkt der Nachprüfung bestand die Owner-Rolle weiterhin.
5. RewardDistributor und PaymentProcessor (Dezember 2023)
Umfang: Geprüft wurden die Verträge RewardDistributor und PaymentProcessor. Die Erstprüfung erfolgte am 14. Dezember 2023, die Nachprüfung am 19. Dezember 2023. Laut Bericht umfasste die Prüfung keine Funktionstests, und es wurden keine Unit-Tests bereitgestellt. Die rechnerische Richtigkeit, etwa der verwendeten Formeln, ist daher nicht vollständig garantiert.
Ergebnis: Es wurden keine kritischen, hohen oder niedrigen Befunde festgestellt. Zwei mittlere Befunde und ein informativer Hinweis wurden vom Team zur Kenntnis genommen («Acknowledged»). Das heisst, sie wurden nicht geändert, sondern als Teil der vorgesehenen Logik erklärt:
- Abzug nicht abgerufener Belohnungen (mittel): Eine berechtigte Rolle kann abrufbare Belohnungen eines Nutzers ohne dessen Freigabe an die Gebührenadresse übertragen. Stellungnahme des Teams: Dies geschieht, wenn ein Nutzer 200 Tage inaktiv war und seine Token nicht abgerufen hat. Die Token gehen in den Aktivitätspool und werden später wieder verteilt.
- Gebührenberechnung ohne Präzisionsfaktor (mittel): Bei Gebühren unter 1 könnte die Berechnung fehlschlagen. Stellungnahme des Teams: Ein Test mit 200 Wei ergab korrekt 194 Wei für den Nutzer und 6 Wei für die Gebührenadresse, da die Beträge bereits mit 1e18 gerechnet werden.
- Fehlende NatSpec-Dokumentation (informativ): Die Dokumentation befindet sich in den Schnittstellen.
Geprüfte Eigenschaften:
- Die Verträge sind nicht nachträglich austauschbar.
- Der Owner kann keine Token erzeugen.
- Der Owner kann ohne Freigabe keine Token vernichten.
- Der Owner kann keine Adressen sperren und den Vertrag nicht sperren.
- Gebühren können nicht geändert werden. Der Vertrag enthält eine Übertragungsgebühr von 3 %.
- Auf die Owner-Rolle wurde nicht verzichtet.
Rechte laut Bericht: Eine Prozessor-Rolle kann Nutzern Token gutschreiben, Zahlungen vom Nutzer an den Vertrag ausführen und Zahlungen erstatten. Die Verwaltung kann ETH und Token aus den Verträgen abziehen, auch als Notfallauszahlung.
Empfehlungen von Solidproof:
- sorgfältiger Umgang mit den Schlüsseln der berechtigten Konten
- Multi-Signatur-Wallets
- eine Zeitverzögerung von etwa 48 bis 72 Stunden für privilegierte Aktionen
- ein Governance-Modul
- gegebenenfalls ein Verzicht auf die Owner-Rolle
6. Einschränkungen
Die Berichte beziehen sich nur auf den jeweils geprüften Code. Laut Solidproof stellen sie keine Garantie für Fehlerfreiheit dar, sind keine Empfehlung für ein Projekt und keine Anlageberatung. Die Zusammenarbeit mit externen Verträgen oder Diensten, etwa PancakeSwap, ist nicht Teil der Prüfungen. Jede Person und jedes Unternehmen ist nach Auffassung von Solidproof selbst für eine eigene Prüfung verantwortlich.
7. Vollständige Berichte
Alle drei Prüfberichte von Solidproof sind hier abrufbar: Solidproof Audit Reports