¿Cuáles son las opciones de web3 httpProvider?

No estoy seguro de entender completamente cómo web3 interactúa con la cadena de bloques ethereum. Cuando pruebo cosas, solo uso

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

Y eso me permite acceder a la red de prueba localmente. Si tuviera que implementar este código en un sitio web, ¿en qué configuraría esta variable y cómo funciona? ¿Y si ese usuario no está ejecutando un nodo local e interactúa con la cadena de bloques a través de Metamask?

Respuestas (1)

Si tuviera que implementar este código en un sitio web, ¿en qué configuraría esta variable y cómo funciona?

Puede reemplazarlo con su propio nodo de trabajo o puede usar algún servicio como infura.io que le permite "acceder a Ethereum a través de los nodos de equilibrio de carga de Infura y la arquitectura inteligente de la misma manera que lo haría a través de sus propios nodos".

¿Y si ese usuario no está ejecutando un nodo local e interactúa con la cadena de bloques a través de Metamask?

De las preguntas frecuentes de MetaMask :

  • MetaMask inyecta el objeto web3 y la conveniente biblioteca Web3.js en el contexto de javascript.

Entonces, en la mayoría de los escenarios, solo puede usar este fragmento de código:

// 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>"));
}
Ya veo, y la forma en que metamask funciona para un usuario que no ejecuta un nodo es ejecutando su propio nodo y permitiendo a los usuarios interactuar con la cadena de bloques a través de solicitudes http, ¿correcto?
@user33938 relacionado con ethereum.stackexchange.com/q/13362/9938 . Entonces, no particularmente su propio nodo, pero su comprensión es correcta.
Creo que <API_TOKEN> ya no es necesario para infura