JavaScript-API-Bibliotheken
Letzte Aktualisierung der Seite: 25. Februar 2026
Damit eine Web-App mit der Ethereum-Blockchain interagieren kann (d. h. Blockchain-Daten lesen und/oder Transaktionen an das Netzwerk senden), muss sie sich mit einem Ethereum-Blockchain-Knoten verbinden.
Zu diesem Zweck implementiert jede Ethereum-Anwendung die JSON-RPC-Spezifikation, sodass es eine einheitliche Reihe von Methoden gibt, auf die sich Anwendungen verlassen können.
Wenn Sie JavaScript verwenden möchten, um sich mit einem Ethereum-Blockchain-Knoten zu verbinden, ist es möglich, reines JavaScript zu verwenden. Es gibt jedoch mehrere praktische Bibliotheken im Ökosystem, die dies viel einfacher machen. Mit diesen Bibliotheken können Entwickler intuitive, einzeilige Methoden schreiben, um JSON-RPC-Anfragen (im Hintergrund) zu initialisieren, die mit Ethereum interagieren.
Bitte beachten Sie, dass seit The Merge zwei verbundene Teile der Ethereum-Software – ein Ausführungs-Client und ein Konsens-Client – erforderlich sind, um einen Blockchain-Knoten auszuführen. Bitte stellen Sie sicher, dass Ihr Blockchain-Knoten sowohl einen Ausführungs- als auch einen Konsens-Client enthält. Wenn sich Ihr Blockchain-Knoten nicht auf Ihrem lokalen Computer befindet (z. B. wenn Ihr Blockchain-Knoten auf einer AWS-Instanz läuft), aktualisieren Sie die IP-Adressen im Tutorial entsprechend. Weitere Informationen finden Sie auf unserer Seite zum Ausführen eines Blockchain-Knotens.
Voraussetzungen
Neben dem Verständnis von JavaScript könnte es hilfreich sein, den Ethereum-Stack und Ethereum-Anwendungen zu verstehen.
Warum eine Bibliothek verwenden?
Diese Bibliotheken abstrahieren einen Großteil der Komplexität der direkten Interaktion mit einem Ethereum-Blockchain-Knoten. Sie bieten auch Hilfsfunktionen (z. B. die Umwandlung von ETH in Gwei), sodass Sie als Entwickler weniger Zeit mit den Feinheiten von Ethereum-Anwendungen verbringen müssen und sich mehr auf die einzigartige Funktionalität Ihrer Anwendung konzentrieren können.
Funktionen der Bibliothek
Mit Ethereum-Blockchain-Knoten verbinden
Mithilfe von Providern ermöglichen Ihnen diese Bibliotheken, sich mit Ethereum zu verbinden und dessen Daten zu lesen, sei es über JSON-RPC, INFURA, Etherscan, Alchemy oder MetaMask.
Warnung: Web3.js wurde am 4. März 2025 archiviert. Lesen Sie die Ankündigung (opens in a new tab). Erwägen Sie für neue Projekte die Verwendung alternativer Bibliotheken wie ethers.js (opens in a new tab) oder viem (opens in a new tab).
Ethers-Beispiel
1// Ein BrowserProvider kapselt einen Standard-Web3-Provider, welcher2// das ist, was MetaMask als window.ethereum in jede Seite einfügt3const provider = new ethers.BrowserProvider(window.ethereum)45// Das MetaMask-Plugin erlaubt auch das Signieren von Transaktionen, um6// Ether zu senden und zu bezahlen, um den Zustand innerhalb der Blockchain zu ändern.7// Dafür benötigen wir den Account-Signer...8const signer = provider.getSigner()Web3js-Beispiel
1var web3 = new Web3("http://localhost:8545")2// oder3var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"))45// Provider wechseln6web3.setProvider("ws://localhost:8546")7// oder8web3.setProvider(new Web3.providers.WebsocketProvider("ws://localhost:8546"))910// Verwendung des IPC-Providers in node.js11var net = require("net")12var web3 = new Web3("/Users/myuser/Library/Ethereum/geth.ipc", net) // Mac OS Pfad13// oder14var web3 = new Web3(15 new Web3.providers.IpcProvider("/Users/myuser/Library/Ethereum/geth.ipc", net)16) // Mac OS Pfad17// unter Windows ist der Pfad: "\\\\.\\pipe\\geth.ipc"18// unter Linux ist der Pfad: "/users/myuser/.ethereum/geth.ipc"Alle anzeigenSobald dies eingerichtet ist, können Sie die Blockchain abfragen nach:
- Blocknummern
- Gasschätzungen
- Smart-Contract-Ereignissen
- Netzwerk-ID
- und mehr ...
Wallet-Funktionalität
Diese Bibliotheken bieten Ihnen Funktionen zum Erstellen von Wallets, Verwalten von Schlüsseln und Signieren von Transaktionen.
Hier ist ein Beispiel von Ethers
1// Erstelle eine Wallet-Instanz aus einem Mnemonic...2mnemonic =3 "announce room limb pattern dry unit scale effort smooth jazz weasel alcohol"4walletMnemonic = Wallet.fromPhrase(mnemonic)56// ...oder aus einem privaten Schlüssel7walletPrivateKey = new Wallet(walletMnemonic.privateKey)89walletMnemonic.address === walletPrivateKey.address10// true1112// Die Adresse als Promise gemäß der Signer-API13walletMnemonic.getAddress()14// { Promise: '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1' }1516// Eine Wallet-Adresse ist auch synchron verfügbar17walletMnemonic.address18// '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1'1920// Die internen kryptografischen Komponenten21walletMnemonic.privateKey22// '0x1da6847600b0ee25e9ad9a52abbd786dd2502fa4005dd5af9310b7cc7a3b25db'23walletMnemonic.publicKey24// '0x04b9e72dfd423bcf95b3801ac93f4392be5ff22143f9980eb78b3a860c4843bfd04829ae61cdba4b3b1978ac5fc64f5cc2f4350e35a108a9c9a92a81200a60cd64'2526// Das Wallet-Mnemonic27walletMnemonic.mnemonic28// {29// locale: 'en',30// path: 'm/44\'/60\'/0\'/0/0',31// phrase: 'announce room limb pattern dry unit scale effort smooth jazz weasel alcohol'32// }3334// Hinweis: Eine mit einem privaten Schlüssel erstellte Wallet hat35// kein Mnemonic (die Ableitung verhindert dies)36walletPrivateKey.mnemonic37// null3839// Signieren einer Nachricht40walletMnemonic.signMessage("Hello World")41// { Promise: '0x14280e5885a19f60e536de50097e96e3738c7acae4e9e62d67272d794b8127d31c03d9cd59781d4ee31fb4e1b893bd9b020ec67dfa65cfb51e2bdadbb1de26d91c' }4243tx = {44 to: "0x8ba1f109551bD432803012645Ac136ddd64DBA72",45 value: utils.parseEther("1.0"),46}4748// Signieren einer Transaktion49walletMnemonic.signTransaction(tx)50// { Promise: '0xf865808080948ba1f109551bd432803012645ac136ddd64dba72880de0b6b3a7640000801ca0918e294306d177ab7bd664f5e141436563854ebe0a3e523b9690b4922bbb52b8a01181612cec9c431c4257a79b8c9f0c980a2c49bb5a0e6ac52949163eeb565dfc' }5152// Die connect-Methode gibt eine neue Instanz der53// Wallet zurück, die mit einem Provider verbunden ist54wallet = walletMnemonic.connect(provider)5556// Abfragen des Netzwerks57wallet.getBalance()58// { Promise: { BigNumber: "42" } }59wallet.getTransactionCount()60// { Promise: 0 }6162// Senden von Ether63wallet.sendTransaction(tx)Alle anzeigenLesen Sie die vollständige Dokumentation (opens in a new tab)
Sobald dies eingerichtet ist, können Sie:
- Konten erstellen
- Transaktionen senden
- Transaktionen signieren
- und mehr ...
Mit Smart-Contract-Funktionen interagieren
JavaScript-Client-Bibliotheken ermöglichen es Ihrer Anwendung, Smart-Contract-Funktionen aufzurufen, indem sie das Application Binary Interface (ABI) eines kompilierten Vertrags lesen.
Das ABI erklärt im Wesentlichen die Funktionen des Vertrags in einem JSON-Format und ermöglicht es Ihnen, ihn wie ein normales JavaScript-Objekt zu verwenden.
Der folgende Solidity-Vertrag:
1contract Test {2 uint a;3 address d = 0x12345678901234567890123456789012;45 constructor(uint testInt) { a = testInt;}67 event Event(uint indexed b, bytes32 c);89 event Event2(uint indexed b, bytes32 c);1011 function foo(uint b, bytes32 c) returns(address) {12 Event(b, c);13 return d;14 }15}Alle anzeigenWürde zu folgendem JSON führen:
1[{2 "type":"constructor",3 "payable":false,4 "stateMutability":"nonpayable"5 "inputs":[{"name":"testInt","type":"uint256"}],6 },{7 "type":"function",8 "name":"foo",9 "constant":false,10 "payable":false,11 "stateMutability":"nonpayable",12 "inputs":[{"name":"b","type":"uint256"}, {"name":"c","type":"bytes32"}],13 "outputs":[{"name":"","type":"address"}]14 },{15 "type":"event",16 "name":"Event",17 "inputs":[{"indexed":true,"name":"b","type":"uint256"}, {"indexed":false,"name":"c","type":"bytes32"}],18 "anonymous":false19 },{20 "type":"event",21 "name":"Event2",22 "inputs":[{"indexed":true,"name":"b","type":"uint256"},{"indexed":false,"name":"c","type":"bytes32"}],23 "anonymous":false24}]Alle anzeigenDas bedeutet, Sie können:
- Eine Transaktion an den Smart Contract senden und seine Methode ausführen
- Einen Aufruf tätigen, um das Gas zu schätzen, das eine Methodenausführung bei der Ausführung in der Ethereum Virtual Machine benötigt
- Einen Vertrag bereitstellen
- Und mehr ...
Hilfsfunktionen
Hilfsfunktionen bieten Ihnen praktische Verknüpfungen, die das Entwickeln mit Ethereum etwas einfacher machen.
ETH-Werte sind standardmäßig in Wei angegeben. 1 ETH = 1.000.000.000.000.000.000 WEI – das bedeutet, Sie haben es mit vielen Zahlen zu tun! web3.utils.toWei wandelt Ether für Sie in Wei um.
Und in Ethers sieht das so aus:
1// Abrufen des Guthabens eines Accounts (über Adresse oder ENS-Namen)2balance = await provider.getBalance("ethers.eth")3// { BigNumber: "2337132817842795605" }45// Oft müssen Sie die Ausgabe für den Benutzer formatieren,6// der es vorzieht, Werte in Ether (anstelle von Wei) zu sehen7ethers.utils.formatEther(balance)8// '2.337132817842795605'Verfügbare Bibliotheken
Web3.js – Ethereum-JavaScript-API.
Ethers.js – Vollständige Ethereum-Wallet-Implementierung und Hilfsprogramme in JavaScript und TypeScript.
- Ethers.js-Startseite (opens in a new tab)
- Dokumentation (opens in a new tab)
- GitHub (opens in a new tab)
The Graph – Ein Protokoll zur Indizierung von Ethereum- und IPFS-Daten und deren Abfrage mittels GraphQL.
- The Graph (opens in a new tab)
- Graph Explorer (opens in a new tab)
- Dokumentation (opens in a new tab)
- GitHub (opens in a new tab)
- Discord (opens in a new tab)
Alchemy SDK – Wrapper um Ethers.js mit erweiterten APIs.
viem – TypeScript-Schnittstelle für Ethereum.
Codex – Echtzeit-API für angereicherte Blockchain-Daten über Dutzende von Chains hinweg.
- Dokumentation (opens in a new tab)
- Explorer (opens in a new tab)
- GitHub (opens in a new tab)
- Discord (opens in a new tab)
Drift – TypeScript-Meta-Bibliothek mit integriertem Caching, Hooks und Test-Mocks.
Weiterführende Literatur
Kennen Sie eine Community-Ressource, die Ihnen geholfen hat? Bearbeiten Sie diese Seite und fügen Sie sie hinzu!
Verwandte Themen
Verwandte Tutorials
- Web3js einrichten, um die Ethereum-Blockchain in JavaScript zu nutzen – Anleitung zur Einrichtung von web3.js in Ihrem Projekt.
- Einen Smart Contract aus JavaScript aufrufen – Sehen Sie am Beispiel des DAI-Tokens, wie man Vertragsfunktionen mit JavaScript aufruft.
- Transaktionen mit web3 und Alchemy senden – Schritt-für-Schritt-Anleitung zum Senden von Transaktionen aus dem Backend.
Tutorials: JavaScript-APIs & WebSockets auf Ethereum
- WebSockets verwenden – Wie man WebSockets mit Alchemy verwendet, um Ethereum-Ereignisse zu abonnieren und JSON-RPC-Anfragen in Echtzeit zu stellen.