¿De dónde viene web3?

Usé Truffle para configurar un dapp de ejemplo básico, que incluye un archivo javascript de frontend en el que veo las siguientes líneas:

window.onload = function() {
  web3.eth.getAccounts(function(err, accs) {
    if (err != null) {
      alert("There was an error fetching your accounts.");
      return;
    }

    if (accs.length == 0) {
      alert("Couldn't get any accounts! Make sure your Ethereum client is configured correctly.");
      return;
    }

    accounts = accs;
    account = accounts[0];

    refreshBalance();
    refreshBalances();
  });
}

Lo que no entiendo es; ¿De dónde web3viene en este contexto? En el archivo index.html , solo se importa este archivo javascript, y no veo ninguna mención de web3ningún otro lugar.

¿Alguien puede arrojar algo de luz sobre esto para mí?

Respuestas (2)

Consulte app.js en la carpeta ./build. (Ejecute $ "construcción de trufas" si no está allí).

Encuentra líneas con "web3"... en particular = require("web3");

Truffle se fusiona con muchas cosas para que podamos estar menos preocupados por los detalles de implementación. La versión compilada tendrá muchas cosas de apariencia desconocida, pero debería ver líneas familiares de su aplicación cerca del final después de /// END TRUFFLE BOOTSTRAP

Espero eso ayude.

Creo (aunque no puedo encontrar una referencia para esto) Truffle inyecta automáticamente web3 durante truffle serve. Teóricamente, un navegador dapp o un complemento como MetaMask también inyectaría web3, razón por la cual no vería ninguna referencia a él; es probable que el usuario ya lo tenga.

Si desea incluir web3 manualmente, puede obtenerlo aquí (o a través de npm). Aquí está mi respuesta en otra parte sobre cómo configurar un web3 que funcione manualmente.

¡Genial gracias! Sólo una pregunta; ¿Truffle es ahora el marco de desarrollo más utilizado en ethereum land, o puedes recomendar otros que también sean buenos?
No me sorprendería si la trufa es la más popular, pero personalmente desarrollo sin un marco. En última instancia, es una elección personal: el campo es tan nuevo que, de todos modos, no hay mucha aceptación por parte del proveedor.