+79268855999
(Viber, WhatsApp, Telegram)

Объяснение проблемы масштабируемости биткоина. Размер базы биткоин


Часть 1. Где хранить данные децентрализованным приложениям на блокчейне? / Хабр

Сейчас наблюдается бум блокчейн проектов. Некоторые блокчейны настолько мощные, что являются платформой для написания приложений. Приложения автоматически получаются децентрализованными, устойчивыми к цензуре и блокировке. Но действительно ли всё так хорошо и просто? В данной статье мы постараемся посмотреть на блокчейн как платформу для приложений, сняв розовые очки. А что же это такое блокчейн?

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

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

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

Но ладно, допустим, одного нечестного майнера легко вычислить и проигнорировать. Но что, если их много, и они сговорились? Представьте, что все люди вокруг вас считают красный свет зеленым. :) И смотрят на вас, как на ненормального, если вы считаете иначе. Социальные эксперименты показывают, что большинство людей в такой ситуации начинают сомневаться и присоединяются к мнению большинства. А ведь в блокчейне как раз и работает правило большинства!

Подобная проблема выяснения истины в условиях, когда твои собеседники могут бессовестно врать, была названа Лесли Лампортом «Проблемой византийских генералов», а решена двумя годами ранее в 1980 году им же совместно с другими авторами. Было показано, что при n шпионах, которые могут врать и искажать информацию, консенсус между участниками может быть достигнут при общем количестве участников 3n+1. А если гарантировать, что шпионы не могут искажать переданную через них сообщения, то достаточно и 2n+1. В блокчейне за счет электронной подписи зловредные узлы не могут искажать информацию, поэтому если в блокчейне менее половины зловредных узлов, то сеть устойчива.

Устойчивость сети к зловредным узлам называется устойчивостью к византийской проблеме (Byzantine Fault Tolerance, BFT). BFT очень важна для публичных сетевых систем, в которые могут свободно добавляться произвольные узлы. Именно такими системами является большинство проектов на блокчейне.

Применение блокчейна не ограничивается созданием криптовалют. Внутрь блока можно записывать что угодно. В биткоине туда записывается список новых транзакций, и применяется это для обмена криптовалютой между её владельцами. В NameCoin в блоках хранятся произвольные пары ключ-значение, что можно применить для создания децентрализованных DNS. В других реализациях блокчейна используются ещё какие-нибудь фишки. А вот Ethereum пошел значительно дальше. Он позволяет хранить в блокчейне не только транзакции, но и полноценные Тьюринг-полные программы, называемые смарт-контрактами, которые позволяют очень тонко настроить блокчейн на прикладную задачу. Например, NameCoin реализуется на Ethereum 5 строками кода.

Ethereum задумывался как универсальная платформа для создания децентрализованных проектов на основе блокчейна. Зачем реализовывать весь блокчейн заново, разворачивать собственную инфраструктуру, если можно парой-тройкой смарт контрактов реализовать то, что тебе нужно, на Ethereum, как, например, аналог NameCoin? Поэтому последнее время Ethereum переживает бурный рост. С марта 2017 ETH (криптовалюта Ethereum) всего за два месяца выросла в цене в 5 раз, и рост продолжается. На Ethereum работают уже сотни приложений, например, социальная сеть AKASHA, биржа фрилансеров Ethlance, игра в слова, да много их!

Блокчейн со смарт-контрактами предоставляет приложениям всю инфраструктуру. Приложения имеют выполняемый на блокчейне код в смарт контрактах. Приложения могут хранить в блокчейне любую информацию, передавая её в свои смарт контракты как данные. Приложения могут читать эту информацию из блокчейна, потому что состояние блокчейна Ethereum — это, по сути, база данных ключ-значение.

Казалось бы, что ещё нужно? Приложения получаются действительно децентрализованными, неподверженными цензуре и запрещению. В общем, блокчейн — это сплошные достоинства! Но если бы всё было так хорошо… При создании действительно мощных приложений сразу обнаруживаются и недостатки.

Неизменяемость. Неизменяемость — это, конечно, хорошо. Именно неизменяемость даёт блокчейну публичность и BFT. Однако есть и обратная сторона медали. Все данные, которые приложения пишут в блокчейн, остаются там навсегда. Поиграли в слова — блокчейн это запомнил. Разместили информацию в социальной сети — она навсегда сохранена в блокчейне, даже если вы потом удалили свой профиль. Взрывной рост числа приложений на блокчейне приводит к сильному раздуванию цепи блоков в размере. Уже сейчас размер полного блокчейна Ethereum перевалил за 130Гб, хотя он работает меньше 2 лет. У биткоина меньше при его солидном возрасте более 7 лет.

Конечно, в некоторые реализации Ethereum включают технологию State Tree Pruning, которая позволяет хранить только последнее состояние блокчейна, с ограниченной историей примерно на сутки, что на текущий момент позволяет сократить хранимую информацию в 20 раз. Например, go-ethereum full node требует для хранения блокчейна 130 Гб, а Parity с поддержкой данной технологии — всего 6 Гб. Однако, учитывая, что рост числа приложений только начинается, а каждому узлу Ethereum приходится хранить все данные всех приложений, это выглядит хоть и необходимой, но всего лишь отсрочкой проблемы. С ростом размера блокчейна он перестанет помещаться на массово выпускаемые жесткие диски, его обслуживание станет по карману лишь большим организациям, что ведет к опасной централизации — сосредоточению контроля над более чем 50% сети у одной организации. Это может нарушить BFT.

Медленность транзакций. За свою устройчивость блокчейны расплачиваются скоростью транзакций. У биткоина 7 транзакций в секунду, у Ethereum — 15. И это на всю сеть, потому что каждый узел полностью реплицирует другие узлы. Добавление нового узла повышает устойчивость системы, но никоим образом не увеличивает скорость её работы или максимальный объём хранения данных. То есть, изменение данных (а каждое изменение данных в блокчейне — это транзакция) является бутылочным горлышком. Популярные приложения сразу же натолкнутся на это ограничение.

Примитивное хранение данных. При том, что состояние блокчейна уже является базой данных «ключ-значение», она довольно примитивна. Поиск возможен только по первичному ключу, объем хранимых данных очень ограничен. Для серьёзных приложений этого явно недостаточно.

Таким образом, при разработке приложений на блокчейнах, например, для Ethereum, проблема хранения данных стоит очень остро. Сейчас нет удовлетворительных способов её решения.

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

→ Вторая часть статьи → Третья часть статьи

habr.com

Размер блокчейна биткоина превысил 100 Гб

Размер блокчейна биткоина впервые превысил 100 Гб и по состоянию на понедельник, 19 декабря, составляет 100,19 Гб. Такие данные приводит статистический ресурс CoinDance.

На данный момент в сети биткоин работает 5318 нод, полностью скачавших ПО Bitcoin Core разных версий.

Как отмечают отдельные пользователи Reddit, дальнейшее увеличение объема блокчейна может привести к тому, что владельцы нод будут вынуждены платить за хранение дополнительных объемов информации. Также в развернувшейся дискуссии высказываются опасения, что это также может привести к снижению скорости подтверждения транзакций внутри сети.

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

Последняя официальная версия Bitcoin Core 0.13.1 была выпущена в конце октября и содержит код Segregated Witness. При этом размер блокчейна на сайте Bitcoin Core указан как 65 Мб.

Ранее в этом месяце часть разработчиков Bitcoin Core приняла решение о разработке кода для увеличения размера блока до 2 МБ. Как тогда отметил представитель команды Люк Дэш, необходимо принимать во внимание различия, существующие между фактическим и средним размерами блоков. После увеличения предельного размера блока средний размер должен снизиться, что должно решить проблему первичной синхронизации с блокчейном.

Подписывайтесь на новости Forklog в Telegram!

Нашли ошибку в тексте? Выделите ее и нажмите CTRL+ENTER

Подписаться на новости Forklog

Похожие материалы

forklog.com

Объяснение проблемы масштабируемости биткоина

Есть ли у биткоина проблема масштабируемости?

Да, она есть. Она не была решена раньше, и положение ухудшается со временем.

Биткоин работает на программном обеспечении, которое создано программистом или группой программистов, действовавших под псевдонимом Сатоши Накамото, в 2007-2009 годах. Несмотря на многие улучшения, которые вносили разработчики на протяжении всего существования биткоина, основной код остался тем же, что и восемь лет назад.

Проблема состоит в том, что сейчас мир биткоина значительно отличается от того, каким он был на заре развития криптовалюты. Количество пользователей выросло с нескольких десятков человек до нескольких десятков миллионов.

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

Почему биткоин не в состоянии обработать все сделки?

Проблема заключается в определённом параметре, который называется «предел размера блока».

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

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

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

Однако это решение имеет неблагоприятный долгосрочный эффект для пропускной способности сети в целом.

Каждая транзакция содержит важные данные: отправителя, получателя, количество передаваемых биткоинов и так далее. Данные занимают место, которое можно назвать незначительным, если речь идёт о единственной сделке. Но места требуется много, так как совершаются сотни транзакций в секунду.

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

К чему приводит неэффективный предел размера блока?

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

Более того, скорость, с которой майнеры биткоина обработают сделку, зависит от размера комиссионных, пересылаемых отправителем каждой транзакции. Это создаёт рынок транзакций: чтобы сделка обработалась быстрее, нужно приложить большую комиссию, чем у конкурентов.

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

Есть ли у проблемы масштабирования решение?

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

Проблема масштабирования исследуется давно. Два первых серьёзных предложения по её исправлению содержатся в BIP 100 и BIP 101, где BIP означает «предложения по улучшению биткоина» (Bitcoin Improvement Proposal). Они были представлены в 2015 году разработчиками ядра биткоина Джеффом Гарзиком и Гэвином Андресеном соответственно.

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

По поводу того, какое из предложений принять, в сообществе биткоина велись жаркие споры весь 2015 год. Однако они оказались бесплодными. Ни BIP 100, ни BIP 101 на сегодняшний день так и не реализованы.

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

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

Каким образом SegWit предлагает масштабировать биткоин?

SegWit увеличивает ёмкость блоков без того, чтобы изменять их размер. SegWit вообще не имеет дела с пределом размера блока. Первоначально он был разработан, чтобы устранить совсем другую проблему, связанную с гибкостью транзакций. Короче говоря, SegWit собирался вынести не критичные данные транзакции за пределы блокчейна.

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

Однако более важно, что устранение гибкости транзакций делает сеть биткоина достаточно безопасной для того, чтобы над ней можно было надстраивать различные решения за пределами блокчейна, такие как Lightning Network. Это позволит сделать транзакции в сети гораздо более быстрыми и дешёвыми, чем когда-либо.

Почему не внедрён SegWit?

У SegWit также есть проблемы с децентрализацией. Сам по себе он увеличивает ёмкость блока примерно на 60%, чего достаточно только для краткосрочного решения проблемы. Он полагается на увеличение пропускной способности сети за счёт сайдчейнов и Lightning Network, а это централизация.

Lightning Network может быть построена как система урегулирования, действующая поверх блокчейна. Биткоины различных пользователей депонированы на отдельный платёжный канал, что требует 10 или более минут для подтверждения в зависимости от степени загрузки сети. После этого все сделки в платёжном канале выводятся за пределы блокчейна, где обрабатываются быстро и очень дёшево или бесплатно, если есть доверенная третья сторона.

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

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

Гонконгское соглашение

Есть третий путь, который потенциально может быть самым выгодным для сети. Увеличение размера блока и реализация SegWit не противоречат друг другу, и в сообществе нарастает уверенность, что нужен компромисс между этими двумя решениями.

Фактически соглашение о компромиссе уже было достигнуто как минимум один раз. Речь идёт о круглом столе, который состоялся в феврале 2016 года в Гонконге с участием представителей Bitcoin Core, которые являются авторами SegWit, и некоторых крупных майнинговых компаний, заинтересованных в неограниченном увеличении размера блока. Обе стороны стремятся достичь соглашения — продвинуться в реализации SegWit и временно увеличить размер блока до двух мегабайт.

К сожалению, гонконгское соглашение не было выполнено: разработчики Bitcoin Core не зафиксировали в проекте, что перед внедрением SegWit будет увеличен размер блока, таким образом, майнеры отказались принимать его.

Хотите больше новостей? Facebook. Быстрее всех? Telegram и Twitter. Подписывайтесь!

Читайте далее наш биткоин-гид:Какой биткоин-кошелёк выбрать?Майнинг биткоинов и других криптовалютКак купить биткоин?Заработок биткоинов: биткоин-краныКто придумал биткоин?Зачем использовать биткоин?Как работает биткоин?

coinspot.io

Как размер блока влияет на майнинг биткоинов

Когда появилась первая криптовалютная единица, не существовало никаких пределов размера блока. Ее создатель - Сатоси Накамото - ввел первое ограничение в 1 мегабайт в качестве временного решения для сохранения компактности публичной базы всех транзакций (Blockchain), потому как вся цепочка транзакций загружается каждый раз при открытии Bitcoin-кошелька. Впоследствии он планировал снять данное ограничение - когда сфера криптовалюты начнет массово использовать веб-кошельки. Облачная обработка транзакций предполагает меньшие затраты времени и ресурсов на майнинг биткоин, делая его более доступным для широких масс.

На данный момент размер блока имеет очень важное значение во всем, что связано с майнингом биткоинов.

Все выполненные транзакции собираются в блоки, после чего они считаются подтвержденными. Чем меньше размер блока, тем меньше транзакций в нем содержится. В связи некоторыми с техническими нюансами, время на подтверждение операции увеличивается, с повышением загруженности блока до пределов его вместимости. Для примера можно привести данные вычислений по Методу Монте-Карло, проведенных Дэйвом Хадсоном и показавших время подтверждения, равное 20-ти минутам при 80% заполнении, тогда как 100% заполнении оно составило более 6-ти часов. При этом, однако, блоки любых размеров требуют для майнинга идентичные вычислительные мощности.

Исходя из этого, почему бы не направить определенные усилия на увеличение общей вместимости каждого блока, то есть его размера? По утверждению некоторых специалистов в области криптовалют, крупные блоки биткоин могут нанести ущерб децентрализации Bitcoin по причине последующего смещения получений добытых монет майнерами в сторону увеличения количества операций. Однако многие другие имеют, пожалуй, более веские доводы в сторону увеличения их размеров, в частности - угрозу своего рода "переполнения буфера", связанную с причинами, перечисленными в прошлом абзаце. Дело в том, что при полном заполнении блока, данные транзакций не могут быть в нем сохранены и остаются в очереди в памяти сервера, что может в конечном итоге привести к вообще непопаданию их в блок, а, следовательно, переполнению памяти и ее перезапуску. Для пользователя Bitcoin-кошелька это будет означать бесконечное ожидание подтверждения транзакции.

Новая реализация главной криптовалюты от организации Bitcoin XT первоначально призвана увеличить размер блока с 1-го до 8-ми мегабайт, а затем - в 2 раза каждые 2 года, пока не будет достигнута максимальная вместимость в 8 мегабайт в 2036-м году. Это, по настоящему, революционное решение уже вызвало бурное обсуждение в кругах майнеров по всему миру. Сейчас на официальном сайте компании предлагают пользователям и организаторам майнинг-пулов, которые не согласны с существующими техническими недостатками сети Bitcoin, либо полностью перейти на Bitcoin XT, либо применить предоставляемые специальные патчи крупных блоков биткоин вручную. Присоединиться к обсуждению данного технологического новшества и поучаствовать в его развитии можно, вступив в официальную группу Bitcoin XT в Google+.

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

wmcorporation.ru

Синхронизация Биткоинов (Bitcoins Synchronization): как работает?

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

Для обеспечения контроля транзакций в сети Биткоин каждый узел сети (кошелек пользователя) должен содержать полную историю всех транзакций Биткоин с момента запуска системы. При появлении нового платежа база транзакций биткоин обновляется на всех кошельках системы. Загрузка базы транзакций при установке программы-клиента и называется «биткоин синхронизация».

Текущий размер базы Биткоин составляет более 10Гб и процесс начальной синхронизации может занимать значительное время (порядка 1-2 дней). Полная синхронизация требуется только для создания отдельного узла сети на основе программных клиентов, таких как Bitcoin Core. Только узлы, имеющие актуальную базу транзакций, могут проверять и регистрировать новые транзакции.

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

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

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

crypto-wallet.ru