Stellen Sie sich vor, wir möchten web3.personal.sign
in einer JavaScript
Datei verwenden. Wir müssen also hinzufügen:
Web3 = require("web3")
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
ganz oben in unserer JavaScript
Datei.
Wenn wir diesen Code jedoch in einem ausführen möchten browser
, können wir nicht verwenden require()
. Im Falle der Verwendung ethereumjs
können wir beispielsweise Github-Ressourcen wie folgt hinzufügen (wie in DIESER ANTWORT beschrieben ):
<script src="https://cdn.rawgit.com/ethereumjs/browser-builds/2fb69a714afe092b06645286f14b94f41e5c062c/dist/ethereumjs-tx.js"></script>
<script>
Und es funktioniert.
Gibt es also eine ähnliche Möglichkeit zum Hinzufügen web3.js
mit <script src= ...
?
Wenn ich <script src="https://rawgit.com/ethereum/web3.js/develop/dist/web3.js"</script> <script>
anstelle von Web3 = require("web3")
verwende , erhalte ich folgende Fehlermeldung:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>EthereumJS - Browser Example</title>
</head>
<body>
<script src="https://rawgit.com/ethereumjs/browser-builds/master/dist/ethereumjs-abi/ethereumjs-abi-0.6.5.js"></script>
<script src="https://rawgit.com/ethereum/web3.js/develop/dist/web3.js"></script>
<script src="https://cdn.jsdelivr.net/gh/ethereum/web3.js/dist/web3.min.js"></script>
<script>
function constructPaymentMessage(contractAddress, amount)
{
return ethereumjs.ABI.soliditySHA3(
["address", "uint256"],
[contractAddress, amount],
);
}
var message = constructPaymentMessage("0x0f0f422477d83bcbed227b0ae2fa3ace7ea3c653", 100);
console.log(message);
web3.personal.sign("0x" + message.toString("hex"), "0xc9c3b1351c65ac47abf3774b6a9715ba3625bec5", function(err, something) {});
</script>
</body>
</html>
Fehler:
"test.html:28 Uncaught ReferenceError: web3 is not defined at test3.html:28"
Hinweis 1: test.html
ist der Name dieser html
Datei.
Anmerkung2: Ich verwende web3 version 1.0.0
.
Anmerkung 3: Mein Hauptzweck ist es, den HIERJavaScript
vorgestellten Code erfolgreich auszuführen . Wenn ich es mit ausführe, erhalte ich einige Fehler. Was ist der beste Weg, diesen Code auszuführen ? Muss ich eine Datei erstellen und mit ausführen ? oder ist es besser, eine Datei zu erstellen und sie mit auszuführen ? Das Problem mit der Ausführung dieses Codes zur Signaturüberprüfung wird HIER ausführlich erklärt . Irgendwann musste ich einen Teil des Codes ändern (ich habe genau angegeben, welche Teile in meiner Frage HIER geändert wurden ). Wenn ich jedoch schließlich die Funktion des Vertrags (dh ) aufrufe, um zu überprüfen , ist die Transaktionnode
JavaScript
html
browser
JavaScript
node filename.js
JavaScript
Solidity
function close
signature
zurückgesetzt , da ich die Einzelheiten des Fehlers HIER erwähnt habe .
Hinweis 4: Zugehörige Frage: web3.js-Fehler: Eigenschaft „Anbieter“ von undefiniert kann nicht gelesen werden
Das Hinzufügen <script src="https://rawgit.com/ethereum/web3.js/develop/dist/web3.js"</script>
zum Ersetzen Web3 = require("web3")
ist richtig, aber Sie müssen noch einen Web3-Anbieter wie diesen einrichten:
window.addEventListener('load', function () {
if (typeof web3 !== 'undefined') {
console.log('Web3 Detected! ' + web3.currentProvider.constructor.name)
window.web3 = new Web3(web3.currentProvider);
} else {
console.log('No Web3 Detected... using HTTP Provider')
window.web3 = new Web3(new Web3.providers.HttpProvider("https://mainnet.infura.io/<APIKEY>"));
}
})
Der Web3-Anbieter verbindet Ihr JavaScript tatsächlich mit dem Ethereum-Netzwerk, damit Sie Anrufe tätigen können. Danach können Sie mit dem Aufrufen von web3
Funktionen beginnen.
Sehen Sie sich dieses „Hallo Welt“-Tutorial für Web3.js an .
Sie können Infura-Dienste nutzen. infura bietet das web3. Zuerst müssen Sie Acc in Infura erstellen, danach sollten Sie ein Projekt erstellen. und zumindest können Sie Ihre eigene ID in diesem Code verwenden: web3 = new Web3(new Web3.providers.HttpProvider("https://ropsten.infura.io/v3/3c68ea1...your ID...f301753"));
Sie können auch das Hauptnetz oder das Ropsten-Netzwerk verwenden. Bitte überprüfen Sie die Website und dies ist die Infura-Website
Broots Waymb
Shawn Tabrizi