Was sind die web3 httpProvider-Optionen?

Ich bin mir nicht sicher, ob ich vollständig verstehe, wie web3 mit der Ethereum-Blockchain interagiert. Wenn ich Dinge ausprobiere, verwende ich einfach

web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));

Und damit kann ich lokal auf das Testnetz zugreifen. Wenn ich diesen Code auf einer Website bereitstellen würde, worauf würde ich diese Variable setzen, und wie funktioniert das? Und was ist, wenn dieser Benutzer keinen lokalen Knoten betreibt und über Metamask mit der Blockchain interagiert?

Antworten (1)

Wenn ich diesen Code auf einer Website bereitstellen würde, worauf würde ich diese Variable setzen, und wie funktioniert das?

Sie können es durch Ihren eigenen funktionierenden Knoten ersetzen oder einen Dienst wie infura.io verwenden , der es Ihnen ermöglicht, „über die lastausgeglichenen Knoten und die intelligente Architektur von Infura auf Ethereum zuzugreifen, genauso wie Sie es über Ihre eigenen Knoten tun würden“.

Und was ist, wenn dieser Benutzer keinen lokalen Knoten betreibt und über Metamask mit der Blockchain interagiert?

Aus MetaMask-FAQ :

  • MetaMask fügt das web3-Objekt und die praktische Web3.js-Bibliothek in den Javascript-Kontext ein.

In den meisten Szenarien können Sie also einfach diesen Code verwenden:

// Checking if Web3 has been injected by the browser (Mist/MetaMask)
if (typeof web3 !== 'undefined') {
    // Use Mist/MetaMask's provider
    web3js = new Web3(web3.currentProvider);
} else {
    web3js = new Web3(new Web3.providers.HttpProvider("https://mainnet.infura.io/<API_TOKEN>"));
}
Ich verstehe, und die Art und Weise, wie Metamask für einen Benutzer funktioniert, der keinen Knoten ausführt, besteht darin, seinen eigenen Knoten auszuführen und Benutzern die Interaktion mit der Blockchain über HTTP-Anforderungen zu ermöglichen, richtig?
@ user33938 verwandt ethereum.stackexchange.com/q/13362/9938 . Also nicht besonders ihr eigener Knoten, aber Ihr Verständnis ist richtig.
Ich denke, <API_TOKEN> wird für Infura nicht mehr benötigt