JavaScript-API-Bibliotheken
Letzte Änderung: , Invalid DateTime
Damit eine Web-Anwendung mit der Ethereum-Blockchain interagieren kann (z. B. Auslesen von Blockchain-Daten und/oder Senden von Transaktionen an das Netzwerk), muss sie sich mit einem Ethereum-Node verbinden.
Zu diesem Zweck implementiert jeder Ethereum-Client die JSON-RPC-Spezifikation. Damit erhält er einen einheitlichen Satz von Endpunkten, auf die sich Anwendungen verlassen können.
Wenn Sie sich über JavaScript mit einem Ethereum-Node verbinden möchten, ist das auch über VanillaJavaScript möglich. Doch es existieren noch weitere Lösungen in Programmbibliotheken in diesem Ökosystem, die das alles viel einfacher machen. Mit diesen Programmbibliotheken können Entwickler intuitive, einzeilige Methoden schreiben, um JSON-RPC-Anfragen ("unter der Haube") zu initialisieren, die mit Ethereum interagieren.
Voraussetzungen
Sie müssen JavaScript verstehen. Zusätzlich ist es hilfreich, wenn Sie den Ethereum-Stack und Ethereum-Clients ebenfalls verstehen.
Warum eine Programmbibliothek verwenden?
Mit diesen Programmbibliotheken lässt sich die direkte Interaktion mit einem Ethereum-Node erheblich vereinfachen. Zudem bieten sie Dienstprogrammfunktionen (z. B. Umwandlung von ETH zu GWei), so dass Sie als Entwickler weniger Zeit damit verbringen, Probleme mit Ethereum-Clients zu lösen, und sich auf die einzigartigen Funktionen Ihrer Applikation konzentrieren können.
Eigenschaften von Programmbibliotheken
Verbindung mit Ethereum-Nodes
Sie können sich über einen Provider und diese Bibliotheken mit Ethereum verbinden und die Daten auslesen – über JSON-RPC, INFURA, Etherscan, Alchemy oder MetaMask.
Ether-Beispiel
1// Ein Web3Provider verpackt einen Standard Web3 Provider, dieser ist2// was MetaMask injiziert als window.ethereum in jede Seite3const provider = new ethers.providers.Web3Provider(window.ethereum)45// Das MetaMask Plugin erlaubt es auch Transaktionen zu signieren um6// Ether zu übertragen und um zu bezahlen für das Wechseln von Status in der Blockchain.7// Dazu benötigen wir den Unterzeichner vom Konto...8const signer = provider.getSigner()9Kopieren
Web3j-Beispiel
1var web3 = new Web3("http://localhost:8545")2// or3var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"))45// Provider wechseln6web3.setProvider("ws://localhost:8546")7// or8web3.setProvider(new Web3.providers.WebsocketProvider("ws://localhost:8546"))910// Verwendung der IPC Provider in node.js11var net = require("net")12var web3 = new Web3("/Users/myuser/Library/Ethereum/geth.ipc", net) // mac os path13// oder14var web3 = new Web3(15 new Web3.providers.IpcProvider("/Users/myuser/Library/Ethereum/geth.ipc", net)16) // Mac OS Pfad17// in Windows ist der Pfad: "\\\\.\\pipe\\geth.ipc"18// in Linux ist der Pfad: "/users/myuser/.ethereum/geth.ipc"19Alles anzeigenKopieren
Sobald die Einrichtung abgeschlossen ist, können Sie folgende Abfragen für die Blockchain vornehmen:
- Blocknummern
- Ressourcen-Schätzung
- Smart-Contract-Ereignisse
- Netzwerk-ID
- und mehr...
Wallet-Funktionalität
Mit den Funktionen dieser Programmbibliotheken können Sie Wallets erstellen, Schlüssel verwalten und Transaktionen signieren.
Hier ist ein Beispiel von Ether
1// Erstelle eine Wallet-Instanz aus einem Mnemonik...2Mnemonik =3 "announce room limb pattern dry unit scale effort smooth jazz weasel alcohol"4walletMnemonic = Wallet.fromMnemonic(mnemonic)56//...oder aus einem privaten Schlüssel7walletPrivateKey = new Wallet (walletMnemonic.pribvateKey)89walletMnemonic.address === wallet PrivateKey.address10// true1112// Die Adresse als Beweis vom Unterzeichner API13walletMnemonic.getAddress()14//{ Promise: '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1' }1516// Eine Walltet-Adresse ist auch synchron verfügbar17walletMnemonic.address18// '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1'1920// Die internen Kryptographie-Komponenten21walletMnemonic.privateKey22//23'0x1da6847600b0ee25e9ad9a52abbd786dd2502fa4005dd5af9310b7cc7a3b25db'24walletMnemonic.publicKey25//26'0x04b9e72dfd423bcf95b3801ac93f4392be5ff22143f9980eb78b3a860c4843bfd04829ae61cdba4b3b1978ac5fc64f5cc2f4350e35a108a9c9a92a81200a60cd64'2728// Die Wallet-Mnemonic29walletMnemonic.mnemonic30// {31// locale: 'en',32// path: 'm/44\'/60\'/0\'/0/0',33// phrase: 'announce room limb pattern dry unit scale effort smooth jazz weasel alcohol'34// }3536// Hinweis: Ein Wallet, welches mit einem privaten Schlüssel erstellt wurde37// hat kein Mnemonic (die Ableitung verhindert das)38walletPrivateKey.mnemonic39// null4041// Eine Nachricht signieren42walletMnemonic.signMessage("Hello World")43// { Promise: '0x14280e5885a19f60e536de50097e96e3738c7acae4e9e62d67272d794b8127d31c03d9cd59781d4ee31fb4e1b893bd9b020ec67dfa65cfb51e2bdadbb1de26d91c' }4445tx = {46 to: "0x8ba1f109551bD432803012645Ac136ddd64DBA72",47 value: utils.parseEther("1.0"),48}4950// Eine Transaktion signieren51walletMnemonic.sign.Transaction(tx)52// { Promise: '0xf865808080948ba1f109551bd432803012645ac136ddd64dba72880de0b6b3a7640000801ca0918e294306d177ab7bd664f5e141436563854ebe0a3e523b9690b4922bbb52b8a01181612cec9c431c4257a79b8c9f0c980a2c49bb5a0e6ac52949163eeb565dfc' }5354// Die Verbindungsmethode gibt eine neue Instanz zurück55// Wallet verbunden mit einem Provider56wallet = walletMnemonic.connect(provider)5758// Abfragen des Netzwerks59wallet.getBalance()60// { Promise: { BigNumber: "42" } }61wallet.getTransactionCount()62// { Promise: 0 }6364// Ether übertragen65wallet.sendTransaction(tx)66Alles anzeigenKopieren
Vollständige Dokumentation lesen(opens in a new tab)
Nach der Einrichtung bestehen folgende Möglichkeiten:
- Konten erstellen
- Transaktionen senden
- Transaktionen signieren
- und weitere...
Mit den Funktionen von Smart Contracts interagieren
JavaScript-Client-Bibliotheken ermöglichen Ihrer Anwendung, Smart-Contract-Funktionen aufzurufen. Dafür lesen sie die Application Binary Interface (ABI) eines kompilierten Vertrags.
Die ABI erklärt im Wesentlichen die Vertragsfunktionen im JSON-Format. Damit können Sie den Vertrag wie ein normales JavaScript-Objekt verwenden.
Folgender Solidity-Vertrag würde...
1contract Test {2 uint a;3 address d = 0x12345678901234567890123456789012;45 function Test(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}16Alles anzeigenKopieren
... zu nachfolgendem JSON werden:
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}]25Alles anzeigenKopieren
Das ermöglicht Folgendes:
- Sie können eine Transaktion an den Smart Contract senden und seine Methode ausführen.
- Sie können eine Ressourcen-Schätzung aufrufen, für die eine Ausführungsmethode in der EVM bei Ausführung erforderlich wird.
- Sie können einen Vertrag bereitstellen.
- Und mehr...
Dienstprogrammfunktionen
Die Dienstprogrammfunktionen stellen Ihnen praktische Verknüpfungen bereit, die das Entwickeln mit Ethereum erleichtern.
ETH-Werte sind standardmäßig in Wei. 1 ETH = 1.000.000.000.000.000.000.000.000 WEI – sprich, Sie haben es mit vielen Zahlen zu tun. web3.utils.toWei
konvertiert für Sie Ether in Wei.
Das sieht in Ether wie folgt aus:
1// Holen Sie sich das Guthaben eines Kontos (über Adresse oder ENS-Name)2Guthaben = provider.getBalance("Ethers. th")3// // { BigNumber: "2337132817842795605" }45// Oft müssen Sie die Ausgabe für den Benutzer formatieren,6// dieser bevorzugt die Werte lieber in Ether (anstatt Wei)7ethers.utils.formatEther(balance)8// '2.337132817842795605'9Kopieren
- Web3js-Dienstprogrammfunktionen(opens in a new tab)
- Ethers-Dienstprogrammfunktionen(opens in a new tab)
Verfügbare Programmbibliotheken
Web3.js – Ethereum-JavaScript-API
Ethers.js – Eine vollständige Ethereum-Wallet-Implementierung und Dienstprogramme in JavaScript und TypeScript
The Graph – Ein Protokoll für die Indizierung von Ethereum- und IPFS-Daten und Abfragen mit 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)
light.js – Eine reaktive High-Level-JS-Bibliothek, die für Light Clients optimiert wurde
Web3-Wrapper – Eine Typescript-Alternative zu Web3.js
Alchemyweb3 – Wrapper um Web3.js mit automatischen Wiederholungen und erweiterten APIs
Alchemy NFT API – API für den Abruf von NFT-Daten, einschließlich Eigentumsrechten, Metadatenattributen und mehr
Weiterführende Informationen
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– so richten Sie web3.js in Ihrem Projekt ein
- Smart Contract mit JavaScript aufrufen – Mit dem DAI-Token die Funktion "Verträge aufrufen" mit JavaScript verwenden
- Transaktionen über web3 und Alchemy senden – Schritt-für-Schritt-Komplettlösung zum Senden von Transaktionen aus dem Backend