До того, как был доступен DApp-браузер Mist, эта библиотека web3 кажется способом построить мост от контракта к внешнему интерфейсу (веб-сайту).
Но я не могу заставить работать самые простые примеры .
В этих источниках отсутствует несколько важных моментов:
Какова точная команда для запуска geth для запуска примеров? Я использовал:
geth --rpc console 2
при добыче полезных ископаемых и т. д.
В этом примере есть строка:
web3.setProvider(new web3.providers.HttpProvider());
Это должен быть локальный хост?
web3.setProvider(new web3.providers.HttpProvider('http://localhost:8545'));
Есть ли способ скрыть web3.setProvider
и другой код JavaScript из исходного кода страницы, доступного для просмотра пользователем? Если адрес узла geth общедоступен, это может быть проблемой безопасности.
Возможно, я задаю здесь очевидные вопросы, но не должно быть особых проблем с добавлением хотя бы начального аргумента geth в туториалы. В лучшем случае было бы иметь пошаговое руководство без пустых предположений.
Что касается пункта номер один, это должно сработать:
geth --rpc --rpccorsdomain="*" console 2>> geth.log
бег --rpccorsdomain="*"
опасен, особенно если у вас есть разблокированные учетные записи. Поместите свое доменное имя вместо *
. Для локального хоста добавьте--rpcaddr="localhost"
Чтобы добавить к ответу Итана Уайлдинга , для безопасного локального тестирования вы можете использовать --dev
флаг и подключиться к узлу с именем пользователя «test» и паролем «test».
Таким образом, geth
команда для тестирования становится:
geth --dev --rpc --rpccorsdomain="*" --rpcaddr="localhost"
[внимание: вы должны использовать эти флаги только для тестирования в режиме локальной разработки, а не в реальной сети]
И подключение клиента web3.js:
web3.setProvider(web3.providers.HttpProvider(null, 0, 'test', 'test'));
где null устанавливает хост, http://localhost:8545
а 0 отключает тайм-аут
Как только это будет сделано, пример кода подключится к локальному узлу, хотя есть большая вероятность (по крайней мере, на данный момент), что многие примеры не будут работать, потому что они кажутся устаревшими. Но web3.js/example/balance.html прекрасно работает.
--rpccorsdomain="*"
является наименее безопасным.
безрассудство