Я использовал 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
где-либо еще.
Может ли кто-нибудь пролить свет на это для меня?
Проверьте app.js в папке ./build. (Запустите $ "truffle build", если его там нет.)
Найдите строки с "web3"... в частности = require("web3");
Truffle объединяет множество вещей, поэтому мы можем меньше беспокоиться о деталях реализации. В собранной версии будет много незнакомых вещей, но вы должны увидеть знакомые строки из вашего приложения ближе к концу после /// END TRUFFLE BOOTSTRAP
Надеюсь, поможет.
Я считаю (хотя я не могу найти ссылку на это), Truffle автоматически внедряет web3 во время truffle serve
. Теоретически, браузер децентрализованного приложения или плагин, такой как MetaMask, также будут внедрять web3, поэтому вы не увидите никаких ссылок на него — у пользователя, вероятно, он уже есть.
Если вы хотите вручную включить web3, вы можете получить его здесь (или через npm). Вот мой ответ в другом месте о том, как настроить работающий web3 вручную.
Крамер65
Мэтью Шмидт