Wenn Sie DApps auf Ethereum entwickelt haben, haben Sie möglicherweise web3.js in Ihrem Front-End-JavaScript verwendet. Ethers.js ist eine leichtgewichtige Alternative zu web3.js. Ethers.js hat viele Vorteile gegenüber Web3.js und eine meiner Lieblingsfunktionen ist die Status- und Schlüsselverwaltung, die Ethers.js bietet. Das Designszenario von Web3 sieht vor, dass DApp eine Verbindung zu einem lokalen Knoten herstellen soll, der für die Speicherung von Schlüsseln, das Signieren von Transaktionen und die Interaktion mit der Ethereum-Blockchain verantwortlich ist. Die Realität ist, dass dies nicht der Fall ist und die überwiegende Mehrheit der Benutzer keinen Geth-Knoten lokal ausführen wird. Metamask simuliert diese Knotenumgebung effektiv in Browseranwendungen, daher müssen die meisten Web3-Anwendungen Metamask verwenden, um Schlüssel zu speichern, Transaktionen zu signieren und Interaktionen mit Ethereum abzuschließen. Ethers.js verfolgt einen anderen Designansatz, der Entwicklern mehr Flexibilität bietet. Ethers.js teilt einen „Knoten“ in zwei unterschiedliche Rollen auf:
ethers.js ist eine sehr optimierte Ethereum-Betriebsbibliothek, die die folgenden vier Module enthält: 1. Erstellen Sie ein neues Projekt sendtokenone
2. Ändern Sie package.json und installieren Sie abhängige Pakete a) Die geänderte Datei package.json sieht wie folgt aus: { "Name": "sendtokenone", "version": "1.0.0", "Beschreibung": "ethers.js Bereitstellungsvertrag", "hauptsächlich": "", "Skripte": { "test": "echo \"Fehler: kein Test angegeben\" && exit 1" }, "Schlüsselwörter": [], "Autor": "", "Lizenz": "ISC", "Abhängigkeiten": { "@openzeppelin/Verträge": "^3.4", "@truffle/hdwallet-provider": "^1.5.0", "große Zahl": "^1.1.0", "bignumber.js": "^8.1.1", "chai": "^4.2.0", "chai-wie-verspricht": "^7.1.1", "eslint": "^5.15.0", "ethereumjs-tx": "^1.3.7", "ethers": "^5.4.7", "Anfrage": "^2.88.2", "web3": "^1.3.0" }, "devAbhängigkeiten": { "@babel/core": "^7.12.3", "@babel/preset-env": "^7.12.1" } } b) Abhängige Pakete installieren
3. Erstellen Sie einen neuen Smart Contract3.1 Erstellen Sie einen EventValue.sol-Vertrag Erstellen Sie im Verzeichnis sendtokenone/contacts einen EventValue.sol-Vertrag mit folgendem Inhalt: // SPDX-Lizenz-Kennung: MIT Pragma-Solidität ^0,6.0; Vertrag EventValue { Ereignis ValueChanged (Adresse indizierter Autor, uint alterWert, uint neuerWert); uint _Wert; Konstruktor(uint Wert) public { uint tmp = _Wert; _Wert = Wert; emittiere ValueChanged(msg.sender, tmp, value); } Funktion getValue() Ansicht öffentlich gibt zurück (uint) { gibt _Wert zurück; } Funktion setValue(uint Wert) public { uint tmp = _Wert; _Wert = Wert; emittiere ValueChanged(msg.sender, tmp, value); } } 3.2 Bereitstellungsskripte schreibenErstellen Sie einen neuen Ordner mit dem Namen migDeploy und erstellen Sie dann in diesem Ordner ein Bereitstellungsskript 1_deploy_event.js mkdir migDeploy cd migDeploy berühren Sie 1_deploy_event.js Der Inhalt von 1_deploy_event.js ist wie folgt: const {ethers} = erfordern("ethers") const fs = erfordern('fs') let-Anbieter = neuer Ether.Provider.JsonRpcProvider('http://localhost:8545') Funktion getHexString(prikeyPath) { const privKeyFile = fs.readFileSync(prikeyPath).toString().trim(); const privKey = neuer Buffer.from(privKeyFile, 'hex'); return privaterSchlüssel } // var privKey = getHexString(".secret") var privKey = '0x403d...23d5' let wallet = neue Ether.Wallet(privKey,Anbieter) var jsonStr = fs.readFileSync('./build/contracts/EventValue.json') var jsonInfo = JSON.parse(jsonStr) var jsonAbi = jsonInfo.abi var bytecode = jsonInfo.bytecode asynchrone Funktion deployContract(abi,bytecode,wallet) { let factory = neue Ether.ContractFactory(abi, Bytecode, Wallet) lass contractObj = warte auf factory.deploy(100) console.log('Vertragsadresse=',Vertragsobjekt.Adresse) console.log('txHash bereitstellen=',contractObj.deployTransaction.hash) warte auf contractObj.deployed() } Bereitstellungsvertrag (jsonAbi, Bytecode, Wallet) 3.3 Vertragserstellung a) Setzen Sie die IP von Ganache auf 127.0.0.1 und den Port auf 8545 modul.exporte = { Netzwerke: Entwicklung: Host: "127.0.0.1", // Localhost (Standard: keiner) Port: 8545, // Standard-Ethereum-Port (Standard: keiner) network_id: "*", // Beliebiges Netzwerk (Standard: keines) }, }, // Legen Sie hier die Standard-Mocha-Optionen fest, verwenden Sie spezielle Reporter usw. Mokka: // Zeitüberschreitung: 100000 }, // Konfigurieren Sie Ihre Compiler Compiler: Lösung: { Version: „0.6.6“, // Genaue Version aus Solc-Bin abrufen (Standard: Truffle-Version) // Docker: true, // Verwenden Sie „0.5.1“, das Sie lokal mit Docker installiert haben (Standard: false) // Einstellungen: { // Siehe die Solidity-Dokumente für Ratschläge zur Optimierung und evmVersion // Optimierer: { // aktiviert: false, // Läufe: 200 // }, // evmVersion: "byzanz" // } } }, }; Öffnen Sie eine Black-Frame-Konsole und verwenden Sie Truffle, um den Vertrag zu kompilieren
3.4 VertragserfüllungGeben Sie im Black-Frame-Terminal den folgenden Befehl ein, um den Vertrag bereitzustellen
Die Wirkung ist wie folgt: Die Vertragsadresse und der txHash können ausgedruckt werden, um anzuzeigen, dass die Vertragsbereitstellung erfolgreich war. Dies ist das Ende dieses Artikels über die Verwendung von ethers.js zum Bereitstellen von Solidity-Smart-Contracts. Weitere Informationen zum Bereitstellen von Solidity-Smart-Contracts mit ethers.js finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! |
<<: Implementierung der Beschleunigung der Docker-Installation und -Konfigurationsabbildung
>>: Implementierung der MySQL-Datentypkonvertierung
Methode 1: Installieren Sie das Plugin über npm 1...
Wenn der Entwickler Dockerfile zum Erstellen des ...
Inhaltsverzeichnis Vorwort Rendern Beispielcode Z...
Im vorherigen Artikel wurde vorgestellt, wie Vue ...
Inhaltsverzeichnis Prozesskommunikation Bidirekti...
Inhaltsverzeichnis Vorwort 1. Was sind Mixins? 2....
Inhaltsverzeichnis 1. Gemeinsame Funktionen höher...
1: Installieren Sie MongoDB im Docker Schritt 1: ...
Tutorial zu HTML-Formular-Tags. In diesem Abschni...
Problembeschreibung Nach der Installation des Plu...
Inhaltsverzeichnis Hörer beobachten Format Richte...
Inhaltsverzeichnis Überblick Die Geschichte der C...
Kopieren Sie den folgenden Code in den Codebereich...
Standardmäßig werden Breite und Höhe der Kopfzeil...
In diesem Artikel wird der spezifische Code von V...