Web3.js — самый простой и, возможно, стандартный способ создания децентрализованных приложений. На данный момент есть два возможных провайдера: HttpProvider и IPCProvider. HttpProvider принимает адрес, по которому работает сервер, это может быть что-то вроде
var Web3 = require('web3');
var web3 = new Web3();
web3.setProvider(new web3.providers.HttpProvider("http://localhost:8545"));
// or it can be http://m.n.k.l:8545
Мой вопрос в том, что если сервер hosting/node вышел из строя, как клиент может получить к нему доступ. В таких случаях все децентрализованное приложение не работает. Тогда какой смысл называть это dapp?
Правильно ли я понимаю использование одного сервера в качестве провайдера?
Не все создатели dapp размещают свой собственный сервер / узел, работающий в rpc. В таких случаях, как создатель узнает адрес любого узла?
То localhost:8545
, что в вашем примере, указывает на то, что DApp отправляет запросы на узел, работающий локально на компьютере пользователя. Часто парадигма заключается в проверке локального rpc-сервера и, если он не существует, использовании общедоступного узла в качестве запасного варианта (при условии, что DApp выполняет управление ключами в браузере — в противном случае вам нужен локальный узел для хранения ключей) .
web3.js или любые другие клиенты взаимодействуют с узлом, который вы настроили. В этом случае узел работает, localhost:8545
и приложение связывается с этим портом, чтобы получить данные в этом узле. Каждый узел будет иметь одну и ту же копию данных, следовательно, нет центрального сервера и вообще нет времени простоя (в этом весь смысл блокчейна).
Если вас беспокоит время простоя одного сервера, возможно, вам придется подумать с точки зрения вашего приложения. Вы можете настроить два или более узла, чтобы избежать простоев и других проблем, связанных с инфраструктурой.
Например, в моем случае я настроил 3 виртуальные машины Linux для экземпляра geth и один сервер Windows для размещения приложений и других действий, связанных с БД.
q9f
никсмак
q9f
никсмак