Каковы параметры httpProvider web3?

Я не уверен, что полностью понимаю, как web3 взаимодействует с блокчейном ethereum. При тестировании вещей я просто использую

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

И это позволяет мне получить доступ к тестовой сети локально. Если бы мне нужно было развернуть этот код на веб-сайте, какое значение я бы установил для этой переменной и как это работает? А что, если этот пользователь не запускает локальную ноду и взаимодействует с блокчейном через Metamask?

Ответы (1)

Если бы мне нужно было развернуть этот код на веб-сайте, какое значение я бы установил для этой переменной и как это работает?

Вы можете заменить его своим собственным рабочим узлом или использовать какой-либо сервис, такой как infura.io , который позволяет вам «получать доступ к Ethereum через узлы с балансировкой нагрузки Infura и интеллектуальную архитектуру так же, как через ваши собственные узлы».

А что, если этот пользователь не запускает локальную ноду и взаимодействует с блокчейном через Metamask?

Из часто задаваемых вопросов по MetaMask :

  • MetaMask внедряет объект web3 и удобную библиотеку Web3.js в контекст javascript.

Поэтому в большинстве случаев вы можете использовать этот фрагмент кода:

// 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>"));
}
Ясно, и способ, которым метамаска работает для пользователя, не запускающего узел, заключается в том, что он запускает свой собственный узел и позволяет пользователям взаимодействовать с блокчейном через http-запросы, верно?
@user33938 связан с ethereum.stackexchange.com/q/13362/9938 . Так что не особо свой узел, но ваше понимание правильное.
Я думаю, что <API_TOKEN> больше не нужен для инфуры