Почему кошельки не используют веб-API вместо загрузки всего блокчейна?

Я читал другие вопросы и ответы, такие как Почему клиенты Ethereum загружают всю цепочку блоков? , но никто не отвечает на вопрос, почему кошелек не может просто использовать веб-API для чтения/обновления блокчейна, когда это необходимо, вместо того, чтобы загружать и синхронизировать весь огромный блокчейн.

В течение многих лет я работал со старым менталитетом клиент/сервер, когда клиент просто разговаривает с сервером, на котором находятся данные; несмотря на то, что это одноранговая сеть, почему эта модель здесь не работает? Не мог ли он случайным образом подключиться к чьему-то узлу майнера?

Похоже, даже лайт-клиенты тоже будут скачивать определенное количество блокчейна?

Все ли кошельки считаются «клиентами» по определению?

(Я установил Parity на свой диск C, и он заполнил диск. Похоже, они должны хотя бы предупредить вас о пространстве, необходимом для установки, тогда я бы выбрал другой диск.)

Ответы (2)

Как упоминалось другими, проблема с API заключается в том, что они являются централизованными источниками информации. Это в основном устраняет единственное наиболее важное ценностное предложение блокчейна. Это, пожалуй, более проблематично, чем полностью централизованная служба. Большинство полностью централизованных служб имеют методы отмены злонамеренных изменений состояния, если они будут обнаружены (например, если кто-то взломает ваш банковский счет, ответственность несет сам банк и должен возместить потерянные деньги). Сотрудники Infura с радостью заявили, что не рассматривают свои услуги как долгосрочное решение. Предполагается, что это лучшая мера, помогающая снизить барьер входа в пространство блокчейна.

Легкие клиенты предназначены для решения проблем с размером при сохранении безопасности блокчейна и, в конечном счете, будут работать с большинством настольных блокчейн-приложений (например, браузер Mist). Хотя они могут быть не «легкими» по стандартам классического взаимодействия клиент-сервер, они значительно легче, чем запуск настоящего узла. После того, как мы стабилизируем и хорошо протестируем легкие клиенты, они позволят использовать гораздо более разумные размеры приложений.

Что касается неклиентских решений, недавно я стал соавтором технического документа, предлагающего решение. Я могу быть предвзятым, но я думаю, что это довольно аккуратно :) Это позволяет значительно повысить гарантии безопасности и децентрализацию, но с накладными расходами, сравнимыми с централизованным API. Я добавлю tl; dr и ссылку ниже, если кому-то интересно узнать больше.


белая бумага

TL;DR: используйте систему в стиле proof-of-stake для создания ненадежных каналов, которые позволяют группам людей с узлами получать вознаграждение за то, что они действуют в качестве конечных точек API, и наказывать за любые вредоносные действия. Мы показываем, что можем спроектировать систему таким образом, чтобы:

  1. Пользователи могут компенсировать свои убытки за счет ставки злоумышленников.

  2. Награда за правду всегда больше, чем за ложь.

  3. Децентрализованная инфраструктура масштабируется пропорционально спросу (благодаря системе вознаграждения в стиле майнинга).

  4. Достаточно легкий, чтобы работать в обычном JavaScript веб-сайта, как и централизованный API.

  5. Не боковая цепь (ура!).

Похоже, что API может проверить 3 случайных узла, и если все они согласятся, то ответ должен быть безопасным.
В некотором смысле да. Тем не менее, есть ряд проблем, которые необходимо решить структурно: не допустить, чтобы какая-либо организация использовала алгоритм рандомизации (если кто-то может его контролировать, он имеет истинную власть в системе, и вся безопасность децентрализации будет потеряна). Не допускайте, чтобы любая сущность лгала пользователю о консенсусе узлов (пользователю нужны гарантии того, что набор незаинтересованных сторон действительно согласился). Обеспечьте надлежащие стимулы (если мы полагаемся на добросовестность, все гарантии безопасности блокчейна снова исчезнут). Есть еще много других, но вы видите проблему.

Могли бы, но это вопрос безопасности. Если все полагаются на одни и те же API (например, infura), то вся сеть фактически централизована. Чтобы иметь настоящую децентрализацию, вам нужно, чтобы у всех была копия всей цепочки. Немного играет роль теория игр, и вполне вероятно, что чем больше цепочка станет больше, тем больше людей будет этим заниматься; но ни один уважающий себя производитель кошельков не назвал бы свой кошелек безопасным на данный момент, если бы они использовали API.

Таким образом, вредоносный узел (сервер), который выполняет такой API, может возвращать поддельные данные, по этой причине?
И поскольку моя нода не занимается майнингом, как моя транзакция передачи затем перехватывается какой-то другой нодой для записи в блок?
Транзакции транслируются в сеть по протоколу p2p, они достигают узлов майнинга и включаются в будущий блок.
@NealWalters Да, если вы использовали сторонний сервис, они могли вернуть поддельные данные. Эй, мистер Мэдофф, сколько денег у меня осталось после того, как я дал вам 1000 долларов, чтобы инвестировать от моего имени десять лет назад? "Э... у тебя есть миллион долларов! Позволь мне вложить больше твоих денег!"