Smart-Contract-Bibliotheken
Letzte Aktualisierung der Seite: 21. August 2025
Sie müssen nicht jeden Smart Contract in Ihrem Projekt von Grund auf neu schreiben. Es gibt viele Open-Source-Smart-Contract-Bibliotheken, die wiederverwendbare Bausteine für Ihr Projekt bereitstellen und Ihnen ersparen, das Rad neu erfinden zu müssen.
Voraussetzungen
Bevor Sie sich mit Smart-Contract-Bibliotheken befassen, ist es eine gute Idee, ein gutes Verständnis für die Struktur eines Smart Contracts zu haben. Gehen Sie zu Anatomie von Smart Contracts, falls Sie dies noch nicht getan haben.
Was ist in einer Bibliothek
In Smart-Contract-Bibliotheken finden Sie normalerweise zwei Arten von Bausteinen: wiederverwendbare Verhaltensweisen, die Sie Ihren Verträgen hinzufügen können, und Implementierungen verschiedener Standards.
Verhaltensweisen
Beim Schreiben von Smart Contracts ist die Wahrscheinlichkeit groß, dass Sie immer wieder ähnliche Muster schreiben, wie z. B. die Zuweisung einer Admin-Adresse zur Ausführung geschützter Operationen in einem Vertrag oder das Hinzufügen einer Notfall-Pause-Schaltfläche im Falle eines unerwarteten Problems.
Smart-Contract-Bibliotheken bieten in der Regel wiederverwendbare Implementierungen dieser Verhaltensweisen als Bibliotheken (opens in a new tab) oder über Vererbung (opens in a new tab) in Solidity.
Als Beispiel folgt eine vereinfachte Version des Ownable-Vertrags (opens in a new tab) aus der OpenZeppelin Contracts-Bibliothek (opens in a new tab), der eine Adresse als Eigentümer eines Vertrags festlegt und einen Modifikator bereitstellt, um den Zugriff auf eine Methode nur auf diesen Eigentümer zu beschränken.
1contract Ownable {2 address public owner;34 constructor() internal {5 owner = msg.sender;6 }78 modifier onlyOwner() {9 require(owner == msg.sender, "Ownable: caller is not the owner");10 _;11 }12}Alle anzeigenUm einen solchen Baustein in Ihrem Vertrag zu verwenden, müssen Sie ihn zunächst importieren und dann in Ihren eigenen Verträgen erweitern. Dadurch können Sie den vom Basisvertrag Ownable bereitgestellten Modifikator verwenden, um Ihre eigenen Funktionen abzusichern.
1import ".../Ownable.sol"; // Pfad zur importierten Bibliothek23contract MyContract is Ownable {4 // Die folgende Funktion kann nur vom Eigentümer aufgerufen werden5 function secured() onlyOwner public {6 msg.sender.transfer(1 ether);7 }8}Ein weiteres beliebtes Beispiel ist SafeMath (opens in a new tab) oder DsMath (opens in a new tab). Dies sind Bibliotheken (im Gegensatz zu Basisverträgen), die arithmetische Funktionen mit Überlaufprüfungen bereitstellen, die von der Sprache nicht bereitgestellt werden. Es ist eine gute Praxis, eine dieser Bibliotheken anstelle nativer arithmetischer Operationen zu verwenden, um Ihren Vertrag vor Überläufen zu schützen, die katastrophale Folgen haben können!
Standards
Um die Zusammensetzbarkeit und Interoperabilität zu erleichtern, hat die Ethereum-Community mehrere Standards in Form von ERCs definiert. Sie können mehr darüber im Abschnitt Standards lesen.
Wenn Sie einen ERC als Teil Ihrer Verträge einbeziehen, ist es eine gute Idee, nach Standardimplementierungen zu suchen, anstatt zu versuchen, Ihre eigenen zu entwickeln. Viele Smart-Contract-Bibliotheken enthalten Implementierungen für die beliebtesten ERCs. Zum Beispiel ist der allgegenwärtige ERC-20-Standard für fungible Token in HQ20 (opens in a new tab), DappSys (opens in a new tab) und OpenZeppelin (opens in a new tab) zu finden. Darüber hinaus bieten einige ERCs auch kanonische Implementierungen als Teil des ERC selbst.
Es ist erwähnenswert, dass einige ERCs nicht eigenständig sind, sondern Ergänzungen zu anderen ERCs darstellen. Zum Beispiel fügt ERC2612 (opens in a new tab) dem ERC20 eine Erweiterung hinzu, um dessen Benutzerfreundlichkeit zu verbessern.
Wie man eine Bibliothek hinzufügt
Beziehen Sie sich immer auf die Dokumentation der Bibliothek, die Sie einbinden, für spezifische Anweisungen, wie Sie sie in Ihr Projekt aufnehmen. Mehrere Solidity-Vertragsbibliotheken sind mit npm verpackt, sodass Sie sie einfach mit npm install installieren können. Die meisten Tools zum Kompilieren von Verträgen suchen in Ihren node_modules nach Smart-Contract-Bibliotheken, sodass Sie Folgendes tun können:
1// Dies lädt die @openzeppelin/contracts-Bibliothek aus Ihren node_modules2import "@openzeppelin/contracts/token/ERC721/ERC721.sol";34contract MyNFT is ERC721 {5 constructor() ERC721("MyNFT", "MNFT") public { }6}Unabhängig von der verwendeten Methode sollten Sie beim Einbinden einer Bibliothek immer die Sprachversion im Auge behalten. Sie können beispielsweise keine Bibliothek für Solidity 0.6 verwenden, wenn Sie Ihre Verträge in Solidity 0.5 schreiben.
Wann man sie verwendet
Die Verwendung einer Smart-Contract-Bibliothek für Ihr Projekt hat mehrere Vorteile. In erster Linie spart es Ihnen Zeit, indem es Ihnen gebrauchsfertige Bausteine zur Verfügung stellt, die Sie in Ihr System integrieren können, anstatt sie selbst programmieren zu müssen.
Sicherheit ist ebenfalls ein großes Plus. Open-Source-Smart-Contract-Bibliotheken werden oft streng geprüft. Da viele Projekte von ihnen abhängen, gibt es einen starken Anreiz für die Community, sie ständig zu überprüfen. Es ist viel häufiger, Fehler im Anwendungscode zu finden als in wiederverwendbaren Vertragsbibliotheken. Einige Bibliotheken unterziehen sich auch externen Audits (opens in a new tab) für zusätzliche Sicherheit.
Die Verwendung von Smart-Contract-Bibliotheken birgt jedoch das Risiko, Code in Ihr Projekt aufzunehmen, mit dem Sie nicht vertraut sind. Es ist verlockend, einen Vertrag zu importieren und ihn direkt in Ihr Projekt aufzunehmen, aber ohne ein gutes Verständnis dafür, was dieser Vertrag tut, könnten Sie aufgrund eines unerwarteten Verhaltens versehentlich ein Problem in Ihr System einführen. Stellen Sie immer sicher, dass Sie die Dokumentation des Codes lesen, den Sie importieren, und überprüfen Sie dann den Code selbst, bevor Sie ihn zu einem Teil Ihres Projekts machen!
Zuletzt sollten Sie bei der Entscheidung, ob Sie eine Bibliothek einbinden, deren allgemeine Nutzung berücksichtigen. Eine weit verbreitete Bibliothek hat den Vorteil, dass sie eine größere Community hat und mehr Augen nach Problemen suchen. Sicherheit sollte Ihr Hauptaugenmerk sein, wenn Sie mit Smart Contracts bauen!
Verwandte Tools
OpenZeppelin Contracts – Die beliebteste Bibliothek für die sichere Entwicklung von Smart Contracts.
DappSys – Sichere, einfache und flexible Bausteine für Smart Contracts.
HQ20 – Ein Solidity-Projekt mit Verträgen, Bibliotheken und Beispielen, das Ihnen hilft, voll funktionsfähige verteilte Anwendungen für die reale Welt zu erstellen.
thirdweb Solidity SDK – Bietet die Werkzeuge, die benötigt werden, um benutzerdefinierte Smart Contracts effizient zu erstellen
Verwandte Tutorials
- Sicherheitsüberlegungen für Ethereum-Entwickler – Ein Tutorial zu Sicherheitsüberlegungen beim Erstellen von Smart Contracts, einschließlich der Verwendung von Bibliotheken.
- Den ERC-20-Token-Smart-Contract verstehen – Tutorial zum ERC20-Standard, der von mehreren Bibliotheken bereitgestellt wird.
Weiterführende Literatur
Kennen Sie eine Community-Ressource, die Ihnen geholfen hat? Bearbeiten Sie diese Seite und fügen Sie sie hinzu!