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

По состоянию на ноябрь 2012 года размер блокчейна составляет почти 3 ГБ с почти линейным ростом около 500 МБ в месяц (я думаю, это сокращение от экспоненциального роста из-за жестко запрограммированного ограничения размера блока).

Я хочу установить Биткойн на свой обычный ноутбук: загрузка и проверка последней версии bootstrap.dat из Bitcoincharts заняла несколько часов (5–9, я думаю), но это было всего 2,3 ГБ! Теперь я ждал, пока Биткойн догонит последние 2-3 месяца, когда блоки были значительно больше, и каждый блок обрабатывается около 5 секунд, с моим процессором на ~ 25% и моим жестким диском. максимальная рабочая нагрузка.

Это, мягко говоря, неустойчиво.

Нам нужна система, в которой можно загрузить уже проверенный блокчейн и напрямую скопировать в папку с биткойнами, возможно, в инкрементной форме. Источник должен быть доверенным, для этого нужна система проверки, в которой каждый может проверить правильность блокчейна, а затем подписать его, я бы предложил использовать для этого ключи gpg.

Затем исходный код можно распространять, например, через серверный торрент.

Возможно ли это технически и как?

Изменить: поскольку я подошел к этому с неправильным мышлением, я опубликовал дополнительный вопрос о рисках безопасности легковесных клиентов. Должен ли конечный пользователь загружать весь блокчейн? Или достаточно «облегченного» клиента?

Ответы (3)

Уже есть загружаемые версии блокчейна. В принципе нет проблем в том, чтобы они были подписаны GPG несколькими доверенными людьми. Однако:

  1. Это несколько ослабляет безопасность. С самим программным обеспечением вы можете доверять подписям и проверять код. При проверке данных блокчейна это невозможно.

  2. В будущих версиях будет использоваться другой формат БД, который позволяет проводить гораздо более быструю проверку, поэтому не будет большого преимущества для системы, в которой проверка не требуется, но загрузка данных по-прежнему необходима.

  3. В долгосрочной перспективе конечные пользователи не будут использовать полный клиент, а скорее (в лучшем случае) клиент SPV, которому не нужно загружать или проверять всю цепочку блоков.

Значит, биткойн — это полное дерьмо, сказал Нафф? Разве клиент SPV не является еще более небезопасным, чем загрузка блокчейна, проверенного несколькими людьми с их ключами gpg и, следовательно, их адресами электронной почты?
@Profpatsch: я этого не говорил. Полные узлы жизненно важны, и их производительность скоро улучшится. Но они не предназначены для использования конечными пользователями.
@profpatsch SPV не менее безопасен. У него меньше функций, но эти функции не нужны большинству конечных пользователей.
Конечно, он менее безопасен... он не проверяет транзакции, только доказательство работы. Для транзакций с нулевым подтверждением разница в безопасности очень значительна. Глубже в цепочке... меньше.
Я только что задал очень похожий вопрос. Где эти скачанные версии?

Технически это, безусловно, возможно (запустите -detachdbи скопируйте каталог базы данных), но вопрос в том, захотите ли вы этого.

Во-первых, сделайте шаг назад. Биткойн предназначен для работы с разумной безопасностью на легковесных узлах (см. «Упрощенная проверка платежей» в статье Сатоши ). Единственное, что требуется легковесным узлам доверия, — это то, что цепочка с наибольшей работой в ней также содержит действительные транзакции. Такие легкие узлы требуют несколько мегабайт загрузки для синхронизации и практически не загружают ЦП или диск. Примеры реализации таких узлов включают Multibit или Bitcoin Wallet для Android .

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

Если вы собираетесь загрузить предварительно проиндексированную цепочку блоков, вы отказываетесь от этой привилегии. По сути, вы будете доверять одному человеку (может быть, нескольким, если вы действительно утруждаете себя проверкой подписей), чтобы сказать вам, какие транзакции в истории биткойнов были действительными. Это гораздо более сильное предположение, чем то, которое вы делаете при запуске облегченного клиента. Если кто-то смог испортить (даже непреднамеренно!) такую ​​загрузку, и она использовалась многими людьми, риском может быть разветвление сети. Это может быть катастрофой.

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

В качестве примечания: следующий выпуск (0.8) Bitcoind/Bitcoin-Qt должен быть намного быстрее, особенно на оборудовании с медленным вводом/выводом.

Таким образом, запуск легковесного клиента практически не представляет угрозы безопасности — похоже, я идиот.
@Profpatsch: Незначительный, нет. Но это основано на предположении, что существует также много полных узлов.
Существует значительная разница между недоверием к чему-либо и доверием к самой длинной цепочке, содержащей только действительные транзакции. Хотите ли вы рискнуть, это экономический вопрос. Но это, безусловно, меньшее предположение, чем принятие предварительно проиндексированной базы данных.
Поскольку этого вопроса не существовало, и я думаю, что больше людей хотят знать, я задал его здесь: bitcoin.stackexchange.com/questions/5478/…
У меня небольшая проблема с этим ответом. Предположим следующее, что я загружаю неисправную (подделанную) цепочку блоков. Не будут ли монеты, которые я генерирую (при условии, что они будут успешными), быть отвергнуты коллегами по биткойнам? Извините за невежество, я просто пытаюсь разобраться в этом.
Если вы загрузите неисправную цепочку блоков, ваш собственный клиент даже не импортирует ее. Если вы загружаете неисправную предварительно проиндексированную базу данных (которая содержит не саму цепочку, а результирующий набор неизрасходованных монет), существует множество опасностей. Они могут позволить вам поверить в то, что некоторые входящие недействительные транзакции действительны (чего вам как продавцу не нужно), и другие узлы действительно отклонят их — но, может быть, вы уже отправили им товары взамен? Более серьезная проблема заключается в том, что когда многие узлы получают одну и ту же ошибочную базу данных... тогда они могут оказаться на собственном форке и подумать, что реальный мир неверен.

Вы можете выбрать, откуда скачать!

См. Каков самый быстрый способ загрузки блокчейна?

Я описал, как указать биткойн-клиенту подключаться к пользовательским узлам. Таким образом, вы можете сказать биткойну, например, подключиться к основным узловым узлам.

В этом есть 2 преимущества:

А) полный контроль, кому доверять

B) Скачивание биткойн-блокчейна.