Откуда взялся веб3?

Я использовал Truffle для настройки базового примера децентрализованного приложения, которое включает в себя файл javascript внешнего интерфейса, в котором я вижу следующие строки:

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();
  });
}

Чего я не понимаю; откуда web3в данном контексте? В файле index.html импортируется только этот файл javascript, и я не вижу упоминания web3где-либо еще.

Может ли кто-нибудь пролить свет на это для меня?

Ответы (2)

Проверьте app.js в папке ./build. (Запустите $ "truffle build", если его там нет.)

Найдите строки с "web3"... в частности = require("web3");

Truffle объединяет множество вещей, поэтому мы можем меньше беспокоиться о деталях реализации. В собранной версии будет много незнакомых вещей, но вы должны увидеть знакомые строки из вашего приложения ближе к концу после /// END TRUFFLE BOOTSTRAP

Надеюсь, поможет.

Я считаю (хотя я не могу найти ссылку на это), Truffle автоматически внедряет web3 во время truffle serve. Теоретически, браузер децентрализованного приложения или плагин, такой как MetaMask, также будут внедрять web3, поэтому вы не увидите никаких ссылок на него — у пользователя, вероятно, он уже есть.

Если вы хотите вручную включить web3, вы можете получить его здесь (или через npm). Вот мой ответ в другом месте о том, как настроить работающий web3 вручную.

Потрясающе, спасибо! Просто вопрос; Является ли трюфель наиболее часто используемой средой разработки в мире Эфириума, или вы можете порекомендовать другие, которые также хороши?
Не удивлюсь, если трюфель самый популярный, но лично я разрабатываю без фреймворка. В конечном счете, это личный выбор — область настолько новая, что в любом случае не так много покупателей.