Является ли web3 настоящим распределенным приложением?

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. В таких случаях, как создатель узнает адрес любого узла?

В децентрализованном приложении нет сервера. Поставщик в большинстве случаев должен быть локальным хостом, подключающимся к узлу пользователей.
@ 5chdn, как это снова децентрализовано?
@niksmac Добро пожаловать в Ethereum Stack Exchange. Если у вас есть другой вопрос, задайте его в отдельной теме. :-P Если каждый пользователь подключается не к центральному серверу, а к своему децентрализованному p2p-приложению, работающему на его локальном хосте, оно по определению децентрализовано, если не распределено.
@ 5chdn спасибо :-P спасибо за вашу любезность ответить в комментарии. :D

Ответы (2)

То localhost:8545, что в вашем примере, указывает на то, что DApp отправляет запросы на узел, работающий локально на компьютере пользователя. Часто парадигма заключается в проверке локального rpc-сервера и, если он не существует, использовании общедоступного узла в качестве запасного варианта (при условии, что DApp выполняет управление ключами в браузере — в противном случае вам нужен локальный узел для хранения ключей) .

Как разработчик узнает об общедоступном узле? и его адрес?

web3.js или любые другие клиенты взаимодействуют с узлом, который вы настроили. В этом случае узел работает, localhost:8545и приложение связывается с этим портом, чтобы получить данные в этом узле. Каждый узел будет иметь одну и ту же копию данных, следовательно, нет центрального сервера и вообще нет времени простоя (в этом весь смысл блокчейна).

Если вас беспокоит время простоя одного сервера, возможно, вам придется подумать с точки зрения вашего приложения. Вы можете настроить два или более узла, чтобы избежать простоев и других проблем, связанных с инфраструктурой.

Например, в моем случае я настроил 3 виртуальные машины Linux для экземпляра geth и один сервер Windows для размещения приложений и других действий, связанных с БД.

Затем он распределяется, а не децентрализуется.
Я не уверен, как это может быть более децентрализовано. Есть общедоступная цепочка блоков, которую майнит любое количество людей, включая множество домашних компьютеров с графическими процессорами, и есть пользователи dap, которые локально запускают javascript, который взаимодействует с их локальным узлом Ethereum, который взаимодействует с общедоступной цепочкой блоков.