«Освобождение места на диске» уже реализовано? Насколько это будет эффективно?

Некоторые люди обеспокоены масштабируемостью Биткойна. Блокчейн уже достиг почти 1 ГБ для загрузки и хранения, что не совсем в духе современного тонкого клиента, особенно в отношении мобильных устройств.

Теперь, обратившись к Satoshi Paper , похоже, они уже придумали решение:

7. Восстановление места на диске

После того, как последняя транзакция в монете будет скрыта под достаточным количеством блоков, потраченные транзакции перед ней могут быть отброшены для экономии места на диске. Чтобы облегчить это, не нарушая хэш блока, транзакции хешируются в дереве Меркла [...], при этом в хеш блока включается только корень. Затем старые блоки можно уплотнить, обрубив ветки дерева. Внутренние хэши хранить не нужно.

Заголовок блока без транзакций будет иметь размер около 80 байт. Если предположить, что блоки генерируются каждые 10 минут, 80 байт * 6 * 24 * 365 = 4,2 МБ в год. С компьютерными системами, обычно продающимися с 2 ГБ ОЗУ по состоянию на 2008 год, и законом Мура, предсказывающим текущий рост на 1,2 ГБ в год, хранение не должно быть проблемой, даже если заголовки блоков должны храниться в памяти.

Это уже реализовано для текущей версии? «4,2 МБ в год» говорит о том, что нет. Он уже есть в дорожной карте? Сталкивались ли разработчики с непредвиденными препятствиями? Будет ли решение столь эффективным, как было обещано?

Сатоши считает, что закон Мура предсказывает линейный рост?
Кроме того, блокчейн растет экспоненциально, а не линейно.
@Roo, Сатоши действительно сказал «текущий», что можно интерпретировать как означающее, что он явно имел в виду линеаризованное приближение.

Ответы (2)

Блокчейн уже достиг почти 1 ГБ для загрузки и хранения,

Предложение в статье Сатоши не снижает требования к загрузке , а только требования к хранилищу (см. этот пост в списке рассылки bitcoin-dev). Если вы не можете полагаться на какую-то доверенную третью сторону, вам все равно необходимо загрузить как минимум все заголовки блоков.

Если вы загружаете только заголовки, а не полные блоки, и рассматриваете «похороненные X блоков глубоко» как доказательство того, что транзакция действительна , вы открыты для нового класса атак , которые не повлияют на обычный клиент с полной цепочкой. Обычный клиент рассматривает «похороненные X блоков глубоко» как доказательство того, что транзакция не будет отменена позже — проверка, чтобы убедиться, что входные данные транзакции не израсходованы , полностью отделена от этого. Тонкий клиент не может проверить, не израсходованы ли входные данные транзакции, потому что у него есть только заголовки блоков — у него нет копии самих транзакций.

Самые тревожные из этих новых атак должны исходить от вашего интернет-провайдера, но в наши дни wi-fi-кафе это не такой надуманный сценарий. Так что используйте на свой страх и риск.

Я собирал вики-страницу , посвященную всем этим вопросам.

Ссылки в вашем ответе битые.

В настоящее время нет официальных облегченных клиентов, подобных этому, и, насколько мне известно, они не разрабатываются. Однако есть пара неофициальных клиентов, таких как StrongCoin или Electrum, которые содержат еще меньше данных. Однако они работают в режиме клиент-сервер, а не в одноранговом режиме, как клиент, описанный Сатоши.

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

спасибо, я знаю, что могут быть архитектуры, основанные на распределенных серверах, но чем больше Биткойн может быть децентрализован для самодостаточных клиентов, тем лучше
@herzmeister Вы всегда можете получить виртуальный сервер или использовать компьютер со статическим IP-адресом, установить на него полный биткойн и управлять им через JSON-RPC практически из любого места. Это не слишком сложно, и вы как бы получаете лучшее из обоих миров. Хотя после собственного опыта перекачки всего блокчейна я перешел на онлайн-кошелек.
да конечно вы и наверное даже я могу это сделать, но я действительно говорю о массах
Массы будут использовать клиент-сервер, не зная об этом ;).
@ThePiachu, вы имеете в виду, что «массы украдут свои монеты, потому что они доверяют серверу, которого у них не должно быть». Все существующие предложения «легкого клиента» имеют скрытые и опасные доверительные отношения, которые полностью недокументированы. Пожалуйста, не путайте эти катастрофы безопасности, ожидающие своего часа, с разделом «Упрощенная проверка платежей» в статье Сатоши.
@eldentyrell То же самое может произойти, если вы используете операционную систему, которой не доверяете, или обмен, взломанный клиент и т. д. Доверить кому-то разработку упрощенного клиента — это то же самое, что доверить кому-то разработку облегченного клиента. Все дело в доверии к безопасности wallet.dat, что может быть достигнуто в обоих подходах. Единственная разница будет заключаться в том, что в последней версии сервер может обманом заставить вас показать вам неверные данные об истории ваших транзакций, которые вы можете проверить в обозревателе блоков. В общем, все, что касается Биткойна, — это доверие к разработчикам, ядром или кем-то еще.
@ThePiachu, вы пишете «доверяя кому-то разработку упрощенного клиента», указывая на то, что вы явно перепутали разработку клиентского программного обеспечения с эксплуатацией серверного компонента. Программное обеспечение может быть подписано цифровой подписью для обеспечения целостности и проверено несколькими сторонами, как в настоящее время биткойн-клиент. Серверы, на которые вы полагаетесь для обработки запросов («облако»), не могут быть легко проверены таким образом.
@eldentyrell - я считаю, что Stratum Server имеет открытый исходный код и спроектирован таким образом, что вредоносный сервер не сможет нанести большой ущерб. Это еще даже не альфа-версия, но я бы хотел, чтобы это направление развивалось.
@ ripper234, что касается «и спроектирован таким образом, что вредоносный сервер не сможет нанести большой ущерб», нет, вы не правы. Сервер может выполнять атаки на клиента, от которых толстый клиент невосприимчив. Люди, продвигающие эту «прослойку», просто хорошо затушевывают проблемы безопасности.
@eldentyrell - я продвигаю Startum и не считаю это серьезным риском для безопасности. Это «менее безопасно», чем полный клиент, почти по определению, но я, честно говоря, не верю, что это важно для «не огромных» сумм денег.
@ ripper234, расплывчатое "это безопасно, поверьте нам!!!" комментарии, подобные вашему, - это своего рода запутывание, о котором я говорю. Мне жаль слышать, что вы не знаете о проблемах безопасности и доверия. К сожалению, то, что вы о них не знаете, не означает, что их нет. Многие люди считали, что mybitcoin безопасен для «небольших» сумм денег, и посмотрите, что произошло…
@eldentyrell Насколько я понимаю, вы сможете скопировать сервер Electrum, запустить его самостоятельно и подключить только к нему свой легкий клиент, что будет похоже на использование стандартного клиента и json-rpc. Что касается «любви к протоколу» — то же самое можно сказать и о протоколе Биткойн. Кому-то требуется много времени, чтобы понять, как это работает, а затем они выясняют, что пару раз ошибались, понимая это. Если вы не написали свой собственный клиент с нуля, вы не полностью понимаете протокол Биткойн, в нем так много нюансов (он все еще поражает меня полгода спустя).
@eldentyrell - вы распространяете FUD. Если у вас есть какие-то конкретные претензии, почему это небезопасно, поделитесь ими (не здесь — либо на форуме, либо, возможно, в chat.stackexchange.com ). Если вы хотите, чтобы я объяснил, почему я считаю, что это безопасно, задайте вопрос, и я отвечу на него.
@ripper234, вы распространяете дезинформацию. Я несколько раз излагал свои опасения в ветке «stratum», начиная здесь: bitcointalk.org/index.php?topic=55842.msg665443#msg665443 . Я не собираюсь повторять это в пределах 600 символов этого комментария. механизм.
@ThePiachu, никто не беспокоится о людях, которые запускают собственную копию сервера. Как указал Герцмайстер, подавляющее большинство пользователей не собираются этого делать.
@ripper234, кстати, вы уже продемонстрировали, что понятия не имеете, как работает биткойн, когда опубликовали это (которое мне и администраторам сайта пришлось отредактировать, чтобы исправить): bitcoin.stackexchange.com/questions/2598/ … ... Я не думаю, что это делает вас очень заслуживающим доверия источником советов о том, что является или не является безопасным!
@eldentyrell - спасибо за флейм. Я отменил ваше редактирование по этому вопросу. Как я уже писал выше, я с удовольствием опубликую ответ, почему я считаю Stratum безопасным, если вы зададите вопрос об этом. Неважно, насколько хорошо я знаю замысловатый низкий уровень протокола Биткойн — важно, правильны или неверны конкретные утверждения, которые я делаю. Если есть ошибка, не стесняйтесь комментировать мой ответ на вопрос, который я хотел бы, чтобы вы задали. Давайте остановим эту ветку и перейдем в чат, если хотите.
@eldentyrell, см. мой анализ Stratum здесь: bitcoin.stackexchange.com/a/2615/78
к вашему сведению, я создал новый вопрос: bitcoin.stackexchange.com/questions/3199/… и связал его с этим