Блокчейн: Размер блоков
В данной статье мы рассмотрим, что такое размер блока и какие проблемы возникают при достижении граничного размера блоков, а также затронем различные подходы для решения проблемы ограниченности размера блоков.
Блок можно представить, как пакет транзакций, каждая из которых должна быть подтверждена, прежде чем она будет принята сетью. Каждый блок имеет ограничение по размеру. Размером блока называют предельное значение величины заполненного транзакциями блока. Например, размер блока в сети Биткоин сейчас ограничен 1 Мб. Блок транзакций может быть не полностью “заполнен”, но если в сеть отправляется блок, размер которого превышает заданное предельное значение, сеть его отвергает. Данное ограничение предусмотрено для того, чтобы предотвратить возможность сетевых атак типа «отказ в обслуживании». Если бы такой параметр, как размер блока, не задавался, то злоумышленник, теоретически, мог бы отправить в сеть настолько большое число транзакций, чтобы парализовать работу сети.
Приближение размера блоков к граничному значению приводит к возникновению следующих проблем:
- Замедление работы сети
- Увеличение комиссий за транзакции
Замедление работы сети
На примере биткоина мы имели возможность убедиться, что с увеличением количества пользователей, отправляющих транзакции, работа сети замедляется. Одной из причин этого явления считают размер блоков. Если число пользователей, отправляющих свои транзакции в сеть, увеличивается, а размер блока остается неизменным, это приводит к увеличению количества транзакций в блоках, что замедляет работу сети, когда размер таких блоков начинает приближаться к максимальному значению.
Увеличение комиссий за транзакции
При приближении размера блоков к граничному значению начинается конкуренция пользователей за подтверждение своих транзакций и включение их в блокчейн. Одним из способов обеспечить быстрое подтверждение является назначение более высокой комиссии за данную транзакцию. Таким образом, майнеры (люди, занимающиеся
Среди возможных вариантов решения проблемы размера блоков можно назвать следующие:
- Увеличение размера блока
- Технология раздельного заверения (SegWit)
- Динамический размер блока
Увеличение размера блока
Очевидным решением любых проблем, связанных с размером блоков, является простое увеличение этого параметра. Однако недостаток такого подхода заключается в том, что он способствует централизации. Если просто увеличить максимальный размер блока, это приведет к росту себестоимости работы узлов сети, построенной на блокчейне. Следовательно, меньшее число людей смогут позволить себе этим заниматься, и сеть будет более централизованной.
Технология раздельного заверения
SegWit — это метод мягкого ветвления (soft fork), который можно применять для повышения производительности блокчейна за счет удаления из транзакций информации о подписи. Примером может служить сеть Биткоин, в которой за счет применения технологии SegWit предполагается увеличить размера блока с 1 Мбайта до 4 Мбайт. Такие криптовалюты, как Bitcoin и Litecoin, уже успешно активировали SegWit в своих протоколах.
Динамический размер блока
В ряде криптовалют, например Monero, реализовано так называемое динамическое ограничение размера блока. В этом случае граничный размер меняется сам по себе, в зависимости от объема транзакций в конкретный момент времени. Сеть, построенная на блокчейне и использующая динамический размер блока, менее подвержена опасности замедления работы.
Хотя приведенный список не является исчерпывающим, он охватывает основные решения, применяемые в настоящее время разными криптовалютами.
Заключение
Учитывая продолжающийся рост криптовалютного пространства, актуальность проблемы масштабирования возрастает. Если криптовалюты претендуют на то, чтобы стать жизнеспособной альтернативой традиционной финансовой системе, они должны быть способны решить проблему масштабирования в долгосрочной перспективе.
Будьте в курсе всех важных событий United Traders — подписывайтесь на наш телеграм-канал
utmagazine.ru
Почему размер блокчейна Ethereum в 1 ТБ не беспокоит Бутерина?
Стремительный рост блокчейна Ethereum начал вызывать опасения членов криптосообщества еще в прошлом году. Так, в июне 2017 года пользователи сети заметили, что за 12 месяцев размер блокчейна, второй по капитализации криптовалюты на рынке, вырос на 700%. А в марте этого года майнеры сети стали испытывать трудности при синхронизации полных архивных нод с блокчейном. По мнению некоторых участников рынка, причиной тому может служить рост количества данных в сети, размер которых уже превышает 1 ТБ.
Впервые о том, что архив данных в блокчейне Ethereum может весить порядка 1 ТБ стало известно в июне 2017 года. Тогда крипто-энтузиаст и предприниматель Туур Демеестер заметил, что за год, с июня 2016 по июнь 2017, размер блокчейна Ethereum увеличился на 700%:
According to one source, the Ethereum blockchain has bloated by +700% in the past 12 months: now about 180 GB. https://t.co/wKVqyqy6G7 pic.twitter.com/XfH5He4gRL
— Tuur Demeester (@TuurDemeester) 12 июня 2017 г.
Согласно одному источнику, блокчейн Ethereum раздулся на 700% за последние 12 месяцев: сейчас где-то 180 ГБ.При таком стремительном росте некоторые участники криптосообщества предположили, что сеть сможет достичь отметки в 1 ТБ еще до конца 2017 года. Согласно анализу автора Hackernoon, известного под псевдонимом StopAndDecrypt, это произошло позже — в мае 2018, и нынешний размер данных в блокчейне Ethereum уже превышает 1 ТБ. Что, в свою очередь, может привести не только к проблемам для майнеров и их нод, но и потенциально стать причиной централизации всей сети.
Постоянный рост блокчейна Ethereum ставит под угрозу работу полных архивных нод, которые отвечают за хранение и синхронизацию всего архива транзакций в сети. Так, в начале марта сразу несколько майнеров сообщили о том, что их ноды, работающие с клиентом Geth версии 1.8.1 и 1.8.2, не могут закончить синхронизацию с блокчейном Ethereum. В частности, майнеры отмечали, что при синхронизации их ноды отставали на 65 блоков от текущего состояния сети, несмотря на то, что обновление не прекращалось. Предположительно, причиной тому стали размер данных и пропускная способность сети, не позволяющая своевременно загрузить необходимое количество информации.
При этом автор Hackroon уверен, что ключевой проблемой для сети Ethereum является не общий объем данных в 1 ТБ, а неограниченный размер блока, который со временем будет только расти, потенциально угрожая децентрализации всей сети:
«Фактором, сдерживающим рост блокчейна Bitcoin, служит ограниченный размер блоков, поскольку таким способом темпы роста требований сети к майнерам никогда не будут превышать внешних ограничений, таких как вычислительные мощности нод и эффективность работы сети. В случае блокчейна Ethereum, размер блока увеличивается в геометрической прогрессии, в связи с чем сдерживающим фактором служат только эти внешние нерегулируемые ограничения. В результате требования блокчейна будут превышать технические возможности и пропускную способность среднестатистического пользователя, и вся сеть станет более централизованной».
Более того, нерегулируемый рост размера блоков в сети Ethereum приведет к тому, что полные ноды не смогут справляться с высокой нагрузкой блокчейна. По мнению StopAndDecrypt, в какой-то момент полные ноды просто не смогут синхронизироваться с блокчейном, в связи с чем их количество сильно сократится. Таким образом, среди ключевых проблем сети автор отметил:
Увеличение размера блока в Ethereum, что затрудняет обработку данных и повышают требования к нодам, а не к размеру памяти на их жестком диске.
Для того чтобы предотвратить полный коллапс сети, разработчикам необходимо будет внедрить ограничения размера блоков.
В свою очередь, эти ограничения будут способствовать росту комиссий, а также будут препятствовать работе существующих Dapps (децентрализованных приложений), таких как CryptoKitties, Shrimp Farm и Pepe Farm, которые уже сейчас существенно нагружают сеть. При этом будущие Dapps не будут работать вовсе.
Если Dapps перестанут работать, предназначение сети Ethereum станет спорным.
Статья StopAndDecrypt получила высокий уровень цитирования как в соцсетях, так и на других медийных площадках, посвященных крипторынку, а пользователи Hackeroon оставили порядка 10,000 лайков.
Через несколько дней после публикации Густав Симонссон, сооснователь orchid.com и бывший разработчик Ethereum, дал подробный ответ, где разобрал ключевые моменты статьи. Так, по мнению Симонссона, автор был прав в следующих высказываниях:
Блокчейн Ethereum достиг уровня своей полной вычислительной мощности, в результате чего комиссии за транзакции выросли. То же самое произошло в сети Bitcoin, которая также работает на полной мощности при растущих транзакциях. Причной тому служит спрос, который превышает предложение в обеих сетях.
Внедрение блокчейна Ethereum в различные структуры в прошлом приводило к проблемам функционирования сети из-за повышенной загруженности, а также повышало технические требования к полным нодам.
Вместе с ростом числа поступающих транзакций выросли и требования к пропускной способности полных нод в сети Ethereum.
Чем больше размер блоков, тем больше ресурсов потребуется сети для работы полных нод (и майнеров), что со временем может привести к финансовой централизации, поскольку только малому количеству пользователей удасться работать с полными нодами и получать прибыль от майнинга.
Большое количество полных нод необходимо для поддержания децентрализации и безопасности сети.
Однако в остальном Симонссон не смог согласиться с StopAndDecrypt, отмечая, что автор не до конца понимает, как работает блокчейн Ethereum.
В случае блокчейна Ethereum, размер блока увеличивается в геометрической прогрессии, в связи с чем сдерживающим фактором служат только внешние нерегулируемые ограничения.
Симонссон подчеркнул, что блоки в сети имеют ограничение, но, в отличие от сети Bitcoin (где оно равно 1 МБ), в Ethereum для этого есть лимит газа (Gas Limit) — максимальное количество газа, которое пользователь готов заплатить за подтверждение транзакции. При этом в рамках протокола консенсуса сети майнеры сами решают, каким будет лимит газа за блок. Симонссон также объяснил, что если автор доверяет майнерам сети Bitcoin в том, что они заинтересованы в повышении ценности биткоина, то логично, что и майнеры сети Ethereum не станут голосовать за решения, которые будут мешать их работе (слишком высокий лимит газа).
Для того чтобы предотвратить полный коллапс сети, разработчикам необходимо будет внедрить ограничения размера блоков. В свою очередь, эти ограничения будут способствовать росту комиссий, а также будут препятствовать работе существующих Dapps.
По словам Симонссона, высокая активность Dapps не несет ущерба сети, но влияет на повышение размера комиссий. Рост комиссий за транзакции обусловлен готовностью пользователей платить ту или иную сумму за их подтверждение. Разработчик подчеркнул, что именно по этой причине Bitcoin до сих является крупнейшей по капитализации сетью, несмотря на низкую проходную способность в 3−7 транзакций в секунду и высокие комиссии, которые в конце прошлого года доходили до отметки в $55.
Вся сеть становится более централизованной, поскольку требования блокчейна превышают технические возможности и пропускную способность среднестатистического пользователя.
Симонссон объяснил, что любой компьютер с процессором не старше 6 лет, 8 ГБ оперативной памяти и современным SSD-накопителем может выполнять функции полной ноды в сети Ethereum. Как отметил разработчик, он сам имеет несколько таких нод, подключенных через небольшой сервер к сети. Более того, на сегодняшний день пока неизвестно точное число полных нод, необходимых для поддержания работоспособности крупной децентрализованной сети.
Также основатель Ethereum Виталик Бутерин высказался в комментариях к популярной статье, подчеркнув, что автор крайне неосведомлен и вводит читателей в заблуждение.
Как и Симонссон, Бутерин объяснил, что ограничением размера блока служит лимит газа, который последние полгода оставался на уровне 8 миллионов. При этом в данный период высокоскоростная синхронизация каталога данных на клиенте Geth ежемесячно увеличивается на 10 ГБ. Другими словами, сеть последние полгода успешно справляется с повышенной загруженностью.
Более того, говоря о высоком объеме каталога данных сети, Бутерин отметил, что в зависимости от клиента у майнера есть несколько вариантов по работе с данными. Если работать с клиентом Parity в режиме State-Only, то полной ноде майнера (не архивной) понадобится порядка 10 ГБ свободного места. В свою очередь, для работы с клиентом Geth майнеру необходимо более 74 ГБ памяти для синхронизации с блокчейном Ethereum.
decenter.org
Часть 1. Где хранить данные децентрализованным приложениям на блокчейне? / Habr
Сейчас наблюдается бум блокчейн проектов. Некоторые блокчейны настолько мощные, что являются платформой для написания приложений. Приложения автоматически получаются децентрализованными, устойчивыми к цензуре и блокировке. Но действительно ли всё так хорошо и просто? В данной статье мы постараемся посмотреть на блокчейн как платформу для приложений, сняв розовые очки.А что же это такое блокчейн?
Блокчейн (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
Blockchain / Habr
Данный текст будет являться новой главой для учебного пособия по защите информации кафедры радиотехники и систем управления МФТИ (ГУ). Полностью учебник доступен на github. На хабре я же планирую выкладывать новые «большие» куски, во-первых, чтобы собрать полезные комментарии и замечания, во-вторых, дать сообществу больше обзорного материала по полезным и интересным темам.Когда у вас есть знания о том, что такое криптографически стойкая хеш-функция, понять, что такое blockchain («цепочка блоков») очень просто. Blockchain – это последовательный набор блоков (или же, в более общем случае, ориентированный граф), каждый следующий блок в котором включает в качестве хешируемой информации значение хеш-функции от предыдущего блока.
Технология blockchain используется для организации журналов транзакций, при этом под транзакцией может пониматься что угодно: финансовая транзакция (перевод между счетами), аудит событий аутентификации и авторизации, записи о выполненных ТО и ТУ автомобилей. При этом событие считается случившимся, если запись о нём включена в журнал.
В таких системах есть три группы действующих лиц:
- источники событий (транзакций)
- источники блоков (фиксаторы транзакций)
- получатели (читатели) блоков и зафиксированных транзакций.
В зависимости от реализации эти группы могут пересекаться. В системах типа BitCoin, например, все участники распределённой системы могут выполнять все три функции. Хотя за создание блоков (фиксацию транзакций) обычно отвечают выделенные вычислительные мощности, а управляющими их участников называют майнерами (см. раздел про децентрализованный blockchain далее).
Основное требование к таким журналам таково:
- Невозможность модификации журнала: после добавления транзакции в журнал должно быть невозможно её оттуда удалить или изменить.
Для того чтобы понять, как можно выполнить требование на запрет модификации, стоит разобраться со следующими вопросами:
- Каким образом гарантируется, что внутри блока нельзя поменять информацию?
- Каким образом система гарантирует, что уже существующую цепочку блоков нельзя перегенерировать, тем самым исправив в них информацию?
Ответ на первый вопрос прост: нужно снабдить каждый блок хеш-суммой от его содержимого. И эту хеш-сумму включить в качестве дополнительной полезной информации (тоже хешируемой) в следующий блок. Тогда для того, чтобы поменять что-то в блоке без разрушения доверия клиентов к нему, нужно будет это сделать таким образом, чтобы хеш-сумма от блока не поменялась. А это как раз практически невозможно, если у нас используется криптографически стойкая хеш-функция. Либо поменять в том числе и хеш-сумму блока. Но тогда придётся менять и значение этой хеш-суммы в следующем блоке. А это потребует изменений, в свою очередь, в хеш-сумме всего второго блока, а потом и в третьем, и так далее. Получается, что для того, чтобы поменять информацию в одном из блоков, нужно будет перегенерировать всю цепочку блоков, начиная с модифицируемого. Можно ли это сделать?
Тут нужно ответить на вопрос, как в подобных системах защищаются от возможности перегенерации цепочки блоков. Мы рассмотрим три варианта систем:
- централизованный с доверенным центром
- централизованный с недоверенным центром
- децентрализованный вариант с использованием доказательства работы
Централизованный blockchain с доверенным центром
Если у нас есть доверенный центр, то мы просто поручаем ему через определённый промежуток времени (или же через определённый набор транзакций) формировать новый блок, снабжая его не только хеш-суммой, но и своей электронной подписью. Каждый клиент системы имеет возможность проверить, что все блоки в цепочке сгенерированы доверенным центром и никем иным. В предположении, что доверенный центр не скомпрометирован, возможности модификации журнала злоумышленником нет.
Использование технологии blockchain в этом случае является избыточным. Если у нас есть доверенный центр, можно просто обращаться к нему с целью подписать каждую транзакцию, добавив к ней время и порядковый номер. Номер обеспечивает порядок и невозможность добавления (удаления) транзакций из цепочки, электронная подпись доверенного центра – невозможность модификации конкретных транзакций.
Централизованный blockchain с недоверенным центром
Интересен случай, когда выделенный центр не является доверенным. Точнее, не является полностью доверенным. Мы ему доверяем в плане фиксации транзакций в журнале, но хотим быть уверенными, что выделенный центр не перегенерирует всю цепочку блоков, удалив из неё ненужные ему более транзакции или добавив нужные.
Для этого можно использовать, например, следующие два метода.
- Первый метод с использованием дополнительного доверенного хранилища. После создания очередного блока центр должен отправить в доверенное и независимое от данного центра хранилище хеш-код от нового блока. Доверенное хранилище не должно принимать никаких изменений к хеш-кодам уже созданных блоков. В качестве такого хранилища можно использовать и децентрализованную базу данных системы, если таковая присутствует. Размер хранимой информации может быть небольшим по сравнению с общим объёмом журнала.
- Второй возможный метод состоит в дополнении каждого блока меткой времени, сгенерированной доверенным центром временных меток. Такая метка должна содержать время генерации метки и электронную подпись центра, вычисленную на основании хеш-кода блока и времени метки. В случае, если «недоверенный» центр захочет перегенерировать часть цепочки блоков, будет наблюдаться разрыв в метках времени.
- Стоит отметить, что этот метод не гарантирует, что «недоверенный» центр не будет генерировать сразу две цепочки блоков, дополняя их корректными метками времени, а потом не подменит одну другой.
Децентрализованный blockchain
Наибольший интерес для нас (и – наименьший для компаний, продающих blockchain-решения) представляет децентрализованная система blockchain без выделенных центров генерации блоков. Каждый участник может взять набор транзакций, ожидающих включения в журнал, и сформировать новый блок. Более того, в системах типа BitCoin такой участник (будем его назвать «майнером», от англ. to mine — копать) ещё и получит премию в виде определённой суммы и/или комиссионных от принятых в блок транзакций.
Но нельзя просто так взять и сформировать блок в децентрализованных системах. Надёжность таких систем основывается именно на том, что новый блок нельзя сформировать быстрее (в среднем) чем за определённое время. Например, за 10 минут (BitCoin). Это обеспечивается механизмом, который получил название доказательство работы.
Механизм основывается на следующей идее. Пусть есть криптографически стойкая хэш-функция и задан некоторый параметр (от англ. target – цель). , где — размер выхода хэш-функции в битах. Корректным новым блоком blockchain-сеть будет признавать только такой, значение хэш-суммы которого меньше текущего заданного параметра . В этом случае алгоритм работы майнера выглядит следующий образом:
Для каждой итерации цикла вероятность получить корректный блок равна . Так как обычно мало, то майнерам нужно сделать большое количество итераций цикла, чтобы найти нужный . При этом только один (обычно — первый) из найденных блоков будет считаться корректным. Чем больше вычислительная мощность конкретного майнера, тем больше вероятность, что именно он первым сумеет найти нужный .
Зная суммарную вычислительную мощность blockchain-сети, участники могут договориться о таком механизме изменения параметра , чтобы время генерации нового корректного блока было примерно заданное время. Например, в сети Bitcoin параметр пересчитывается каждые 2016 блоков таким образом, чтобы среднее время генерации блока было 10 минут. Это позволяет адаптировать сеть к изменению количества участников, их вычислительных мощностей и к появлению новых механизмов вычисления хэш-функций.
Кроме задания параметра можно оперировать другими величинами, так или иначе относящимися к мощности вычислений.
- Hashrate — количество хешей, которые считают за единицы времени конкретный майнер или сеть в целом. Например, в ноябре 2017 года общий hashrate для сети Bitcoin составлял примерно хэшей в секунду.
- Difficulty — сложность поиска корректного блока, выражаемая как , где — некоторая константа сложности, а t — текущая цель (англ. target). В отличие от параметра t, который падает с ростом вычислительной мощности сети, d изменяется вместе с hashrate, что делает его более простым для восприятия и анализа человеком.
В случае примерно одновременной генерации следующего блока двумя и более майнерами (когда информация о новом блоке публикуется вторым майнером до того, как ему придёт информация о новом блоке от первого) в направленном графе блоков происходит разветвление. Далее каждый из майнеров выбирает один из новых блоков (например – какой первый увидели) и пытается сгенерировать новый блок на основе выбранного, продолжая «ответвление» в графе. В конце-концов одна из двух таких цепочек становится длиннее (та, которую выбрало большее число майнеров), и именно она признаётся основной.
В случае нормального поведения системы на включение конкретных транзакций в блоки это влияет мало, так как каждый из добросовестных майнеров следует одному и тому же алгоритму включения транзакций в блок (например, в сети BitCoin – алгоритму максимизации комиссии за блок). Однако можно предположить, что какой-нибудь злоумышленник захочет «модерировать» распределённый blockchain, включая или не включая в блоки транзакции по своему выбору. Предположим, что доля вычислительных ресурсов злоумышленника (направленных на генерацию нового блока) равна ( 0% < < 50%). В этом случае каждый следующий сгенерированный блок с вероятностью будет сгенерирована мощностями злоумышленника. Это позволит ему включать в блоки те транзакции, которые другие майнеры включать не захотели.
Но позволит ли это злоумышленнику не включать что-то в цепочку транзакций? Нет. Потому что после его блока с вероятностью будет следовать блок «обычного» майнера, который с радостью (пропорциональной комиссии-награде) включит все транзакции в свой блок.
Однако ситуация меняется, если мощности злоумышленника составляют более 50% от мощности сети. В этом случае, если после блока злоумышленника был с вероятностью сгенерирован «обычный» блок, злоумышленник его может просто проигнорировать и продолжать генерировать новые блоки, как будто он единственный майнер в сети. Тогда если среднее время генерации одного блока всеми мощностями , то за время злоумышленник сможет сгенерировать , а легальные пользователи блоков, . Даже если с некоторой вероятностью легальные пользователи сгенерируют 2 блока быстрее, чем злоумышленник один, последний всё равно «догонит и перегонит» «легальную» цепочку примерно за время . Так как в blockchain есть договоренность, что за текущее состояние сети принимается наиболее длинная цепочка, именно цепочка злоумышленника всегда будет восприниматься правильной. Получается, что злоумышленник сможет по своему желанию включать или не включать транзакции в цепочки.
Правда, пользоваться чужими деньгами злоумышленник всё равно не сможет – так как все блоки транзакций проверяются на внутреннюю непротиворечивость и корректность всех включённых в блок транзакций.
Кроме концепции «доказательство работы» используются и другие. Например, в подходе «доказательство доли владения» (англ. proof of stake), используемой в сетях Etherium и EmerCoin, вероятность генерации блока пропорциональна количеству средств на счетах потенциальных создателей нового блока. Это намного более энергоэффективно по сравнению с PoW, и, кроме того, связывает ответственность за надёжность и корректность генерации новых блоков с размером капитала (чем больше у нас средств, тем меньше мы хотим подвергать опасности систему). С другой стороны, это даёт дополнительную мотивацию концентрировать больше капитала в одних руках, что может привести к централизации системы.
Механизм внесения изменений в протокол
Любая система должна развиваться. Но у децентрализованных систем нельзя просто «включить один рубильник» и заставить участников системы работать по новому – иначе систему нельзя назвать полностью децентрализованной. Механизмы и способы внесения изменений могут выглядеть на первый взгляд нетривиально. Например:
- апологеты системы предлагают изменения в правилах работы
- авторы ПО вносят изменения в программный код, позволяя сделать две вещи:
- указать участникам системы, что они поддерживают новое изменение
- поддержать новое изменение
- участники системы скачивают новую версию и выставляют в новых блоках транзакций (или самих транзакциях) сигнальные флаги, показывающие их намерение поддержать изменение
- если к определённой дате определённое число блоков содержат сигнальный флаг (обратите внимание на привязку числа голосов к числу сгенерированных блоков), то изменение считается принятым, и большая (по числу новых блоков) часть участников системы в определённую дату включают эти изменения
- те участники, которые не приняли изменения, или приняли изменения вопреки отсутствию согласия на них большей части участников, в худшем случае начнут генерировать свою цепочку блоков, только её признавая корректной. Основную цепочку блоков они будут считать неверно сгенерированной. По факту это приведёт к дублированию (разветвлению, форку) системы, когда в какую-то дату вместо одного журнала транзакций появляется два, ведущимися разными людьми. Это журналы совпадают до определённой даты, после чего в них начинаются расхождение.
Подводя итоги, Сатоши Накамото (псевдоним), автор технологий blockchain и bitcoin, сумел предложить работающий децентрализованный механизм, в котором и само поведение системы, и изменения к этой системе проходят через явный или неявный механизм поиска консенсуса участников. Для получения контроля над системой в целом злоумышленнику придётся получить контроль как минимум над 50% всех мощностей системы (в случае PoW), а без этого можно лишь попытаться ограничить возможность использования системы конкретными участниками.
Однако созданная технология не лишена недостатков. Существуют оценки, согласно которым использование метода PoW для системы bitcoin приводит к затратам энергии, сравнимой с потреблением электричества целыми городами или странами. Есть проблемы и с поиском консенсуса – сложный механизм внесения изменений, как считают некоторые эксперты, может привести к проблемам роста (например, из-за ограниченности числа транзакций в блоке), и, в будущем, к отказу использования механизма как устаревшего и не отвечающего будущим задачам.
Хотелось бы узнать у сообщества, про какие ещё технологии стоит рассказывать студентам. С одной стороны, им обязательно надо рассказать про базовые вещи — классическую криптографию и криптографию на открытых ключах. Но хочется дать понятие и про современные вещи, которые, возможно, не станут лишним грузом знаний и через пять-десять лет. С текущим содержание учебной программы можно ознакомиться здесь.
История изменений
- 2017-11-17: Добавлено указание лицензии CC-BY
- 2017-11-18: Уточнёна и расширена информация про механизм proof-of-work и связанные определения
habr.com
Почему размер блокчейна Ethereum в 1 ТБ не беспокоит Виталика Бутерина?
Стремительный рост блокчейна Ethereum начал вызывать опасения членов криптосообщества еще в прошлом году. Так, в июне 2017 года пользователи сети заметили, что за 12 месяцев размер блокчейна, второй по капитализации криптовалюты на рынке, вырос на 700%. А в марте этого года майнеры сети стали испытывать трудности при синхронизации полных архивных нод с блокчейном. По мнению некоторых участников рынка, причиной тому может служить рост количества данных в сети, размер которых уже превышает 1 ТБ.
Впервые о том, что архив данных в блокчейне Ethereum может весить порядка 1 ТБ стало известно в июне 2017 года. Тогда крипто-энтузиаст и предприниматель Туур Демеестер заметил, что за год, с июня 2016 по июнь 2017, размер блокчейна Ethereum увеличился на 700%:
According to one source, the Ethereum blockchain has bloated by +700% in the past 12 months: now about 180 GB. https://t.co/wKVqyqy6G7 pic.twitter.com/XfH5He4gRL
— Tuur Demeester (@TuurDemeester) June 12, 2017
«Согласно одному источнику, блокчейн Ethereum раздулся на 700% за последние 12 месяцев: сейчас где-то 180 ГБ.»
При таком стремительном росте некоторые участники криптосообщества предположили, что сеть сможет достичь отметки в 1 ТБ еще до конца 2017 года. Согласно анализу автора Hackernoon, известного под псевдонимом StopAndDecrypt, это произошло позже — в мае 2018, и нынешний размер данных в блокчейне Ethereum уже превышает 1 ТБ. Что, в свою очередь, может привести не только к проблемам для майнеров и их нод, но и потенциально стать причиной централизации всей сети.
Постоянный рост блокчейна Ethereum ставит под угрозу работу полных архивных нод, которые отвечают за хранение и синхронизацию всего архива транзакций в сети. Так, в начале марта сразу несколько майнеров сообщили о том, что их ноды, работающие с клиентом Geth версии 1.8.1 и 1.8.2, не могут закончить синхронизацию с блокчейном Ethereum. В частности, майнеры отмечали, что при синхронизации их ноды отставали на 65 блоков от текущего состояния сети, несмотря на то, что обновление не прекращалось. Предположительно, причиной тому стали размер данных и пропускная способность сети, не позволяющая своевременно загрузить необходимое количество информации.
При этом автор Hackroon уверен, что ключевой проблемой для сети Ethereum является не общий объем данных в 1 ТБ, а неограниченный размер блока, который со временем будет только расти, потенциально угрожая децентрализации всей сети:
«Фактором, сдерживающим рост блокчейна Bitcoin, служит ограниченный размер блоков, поскольку таким способом темпы роста требований сети к майнерам никогда не будут превышать внешних ограничений, таких как вычислительные мощности нод и эффективность работы сети. В случае блокчейна Ethereum, размер блока увеличивается в геометрической прогрессии, в связи с чем сдерживающим фактором служат только эти внешние нерегулируемые ограничения. В результате требования блокчейна будут превышать технические возможности и пропускную способность среднестатистического пользователя, и вся сеть станет более централизованной».
Более того, нерегулируемый рост размера блоков в сети Ethereum приведет к тому, что полные ноды не смогут справляться с высокой нагрузкой блокчейна. По мнению StopAndDecrypt, в какой-то момент полные ноды просто не смогут синхронизироваться с блокчейном, в связи с чем их количество сильно сократится. Таким образом, среди ключевых проблем сети автор отметил:
- Увеличение размера блока в Ethereum, что затрудняет обработку данных и повышают требования к нодам, а не к размеру памяти на их жестком диске.
- Для того чтобы предотвратить полный коллапс сети, разработчикам необходимо будет внедрить ограничения размера блоков.
- В свою очередь, эти ограничения будут способствовать росту комиссий, а также будут препятствовать работе существующих Dapps (децентрализованных приложений), таких как CryptoKitties, Shrimp Farm и Pepe Farm, которые уже сейчас существенно нагружают сеть. При этом будущие Dapps не будут работать вовсе.
- Если Dapps перестанут работать, предназначение сети Ethereum станет спорным.
Статья StopAndDecrypt получила высокий уровень цитирования как в соцсетях, так и на других медийных площадках, посвященных крипторынку, а пользователи Hackeroon оставили порядка 10,000 лайков.
Через несколько дней после публикации Густав Симонссон, сооснователь orchid.com и бывший разработчик Ethereum, дал подробный ответ, где разобрал ключевые моменты статьи. Так, по мнению Симонссона, автор был прав в следующих высказываниях:
- Блокчейн Ethereum достиг уровня своей полной вычислительной мощности, в результате чего комиссии за транзакции выросли. То же самое произошло в сети Bitcoin, которая также работает на полной мощности при растущих транзакциях. Причной тому служит спрос, который превышает предложение в обеих сетях.
- Внедрение блокчейна Ethereum в различные структуры в прошлом приводило к проблемам функционирования сети из-за повышенной загруженности, а также повышало технические требования к полным нодам.
- Вместе с ростом числа поступающих транзакций выросли и требования к пропускной способности полных нод в сети Ethereum.
- Чем больше размер блоков, тем больше ресурсов потребуется сети для работы полных нод (и майнеров), что со временем может привести к финансовой централизации, поскольку только малому количеству пользователей удасться работать с полными нодами и получать прибыль от майнинга.
- Большое количество полных нод необходимо для поддержания децентрализации и безопасности сети.
- Однако в остальном Симонссон не смог согласиться с StopAndDecrypt, отмечая, что автор не до конца понимает, как работает блокчейн Ethereum.
В случае блокчейна Ethereum, размер блока увеличивается в геометрической прогрессии, в связи с чем сдерживающим фактором служат только внешние нерегулируемые ограничения.
Симонссон подчеркнул, что блоки в сети имеют ограничение, но, в отличие от сети Bitcoin (где оно равно 1 МБ), в Ethereum для этого есть лимит газа (Gas Limit) — максимальное количество газа, которое пользователь готов заплатить за подтверждение транзакции. При этом в рамках протокола консенсуса сети майнеры сами решают, каким будет лимит газа за блок. Симонссон также объяснил, что если автор доверяет майнерам сети Bitcoin в том, что они заинтересованы в повышении ценности биткоина, то логично, что и майнеры сети Ethereum не станут голосовать за решения, которые будут мешать их работе (слишком высокий лимит газа).
Для того чтобы предотвратить полный коллапс сети, разработчикам необходимо будет внедрить ограничения размера блоков. В свою очередь, эти ограничения будут способствовать росту комиссий, а также будут препятствовать работе существующих Dapps.
По словам Симонссона, высокая активность Dapps не несет ущерба сети, но влияет на повышение размера комиссий. Рост комиссий за транзакции обусловлен готовностью пользователей платить ту или иную сумму за их подтверждение. Разработчик подчеркнул, что именно по этой причине Bitcoin до сих является крупнейшей по капитализации сетью, несмотря на низкую проходную способность в 3−7 транзакций в секунду и высокие комиссии, которые в конце прошлого года доходили до отметки в $55.
Вся сеть становится более централизованной, поскольку требования блокчейна превышают технические возможности и пропускную способность среднестатистического пользователя.
Симонссон объяснил, что любой компьютер с процессором не старше 6 лет, 8 ГБ оперативной памяти и современным SSD-накопителем может выполнять функции полной ноды в сети Ethereum. Как отметил разработчик, он сам имеет несколько таких нод, подключенных через небольшой сервер к сети. Более того, на сегодняшний день пока неизвестно точное число полных нод, необходимых для поддержания работоспособности крупной децентрализованной сети.
Также основатель Ethereum Виталик Бутерин высказался в комментариях к популярной статье, подчеркнув, что автор крайне неосведомлен и вводит читателей в заблуждение.
Как и Симонссон, Бутерин объяснил, что ограничением размера блока служит лимит газа, который последние полгода оставался на уровне 8 миллионов. При этом в данный период высокоскоростная синхронизация каталога данных на клиенте Geth ежемесячно увеличивается на 10 ГБ. Другими словами, сеть последние полгода успешно справляется с повышенной загруженностью.
Более того, говоря о высоком объеме каталога данных сети, Бутерин отметил, что в зависимости от клиента у майнера есть несколько вариантов по работе с данными. Если работать с клиентом Parity в режиме State-Only, то полной ноде майнера (не архивной) понадобится порядка 10 ГБ свободного места. В свою очередь, для работы с клиентом Geth майнеру необходимо более 74 ГБ памяти для синхронизации с блокчейном Ethereum.
Будь в курсе! Подписывайся на Криптовалюта.Tech в Telegram.
Обсудить актуальные новости и события на Форуме
cryptocurrency.tech
Размер блокчейна Эфириума превысил 1ТБ, и да, это проблема (Часть 2) — EthereumClassic
Это мой непрямой ответ на статью, которую меньше года назад написал Афри Шёдон, разработчик Ethereum-клиента Parity. Должен подчеркнуть, что я с уважением отношусь к большинству разработчиков в этой сфере, и это не попытка атаковать кого-либо из них. В этой статье я лишь хочу рассмотреть актуальные проблемы и показать, что Шёдон в своей статье упускает их из виду.
И скажу сразу: ограниченный объём хранения данных здесь ни при чём.
Продолжение. Первую часть вы можете прочитать здесь.
Предсказание: размер блока будет ограничен, и Эфириум вступит в смертельную гонку с Bitcoin Cash
Состояние на 14 мая 2018 г.
Статистика на сайте больше не обновляется, поэтому я экстраполировал график, используя реальные актуальные данные
http://bc.daniel.net.nz/
Состояние на 14 мая 2018 г.
https://ethereum.stackexchange.com/questions/143/what-are-the-ethereum-disk-space-needs
Представленный выше график – это даже не предсказание. Я просто добавил недостающие данные (выделено жёлтым) к последнему графику, на котором сравнивались директории с данными Биткойна и Эфириума, и экстраполировал результат, на основании которого можно утверждать следующее:
- Будущее Биткойна предсказуемо. Рост блокчейна и требования сети изменяются линейно (идеальный сценарий).
- Объём данных, которые необходимо обрабатывать узлу сети Эфириум за секунду, стремительно растёт и бьёт все рекорды (нежелательный сценарий).
- Если требования блокчейна Эфириума стабилизируются на текущем уровне, он продолжит линейный тренд развития, обозначенный пунктиром на графике (очень нежелательный сценарий)
- Если требования продолжат расти экспоненциально, число недовольных рассинхронизацией владельцев узлов достигнет переломного значения (и это возможно только в одном случае).
Видите таблицу выше? Тот, кто опубликовал её, отключил свой узел. Проблема также заключается в физических требованиях, например, в затратах личного времени владельца узла. Требования по обслуживанию узла не должны быть высокими или терпимыми – они должны быть минимальными.
Знаете, что я делаю для поддержки моего Биткойн/Lightning-узла? Я просто оставляю ноутбук включённым. И ничего больше. При необходимости, я останавливаю процессы, перезагружаю компьютер, а затем запускаю их заново. Я постоянно использую компьютер для разных повседневных задач, и это никак не мешает работе узла. При всём уважении к разработчикам, если бы они навязали мне обновление, из-за которого мой узел не смог бы синхронизироваться и продолжать работу в сети, я пришёл бы в ярость от такой глупости, не будь я заранее к этому готов. Но к счастью, я избежал заблуждений и выбрал блокчейн с дальновидной стратегией (Биткойн).
Проблема в том, что большинство владельцев узлов в Эфириуме недостаточно осведомлены о том, что их ожидает. Мне кажется, они не до конца понимают, как работают основные системы стимулов, а также когда и почему такой примитивный фактор, как неограниченный размер блока, помешает работе их узлов. Надеюсь, моя статья поможет им в этом разобраться.
Что же происходит, когда наступает тот самый психологический переломный момент? Уходят ли пользователи? Сколько узлов должно отключиться, чтобы это произошло? Сайты-обозреватели больше не отслеживают такие данные. На Etherscan.io нет статистики по директориям ни для полного, ни для быстрого режима синхронизации, а Etherchain.org лишь сообщает об ошибке.
Кроме того, на Etherscan нельзя рассмотреть мемпул, то есть очередь транзакций, ожидающих включения в блоки, в более широком масштабе. Комиссии возрастают как раз из-за переполнения этой очереди, и у всех должна быть возможность увидеть её состояние за длительный период времени. Вот график мемпула Биткойна в сравнении с графиком на Etherscan.io:
https://jochen-hoenicke.de/queue/#1,4d
https://etherscan.io/chart/pendingtx
На обоих графиках изображено приблизительное общее число транзакций в очереди в примерно одинаковом масштабе: за 4 и 5 дней соответственно. Разница в том, что интервал на графике Биткойна можно расширить настолько, чтобы увидеть всю историю. Почему это важно? В сети, где не регулируется размер блока, ключевую роль играет психология. Вот как выглядит история мемпула Биткойна:
Текущий уровень отмечен указателем
Понимаете, что я имею в виду и насколько важен масштаб? Что, если мы посмотрим на всю историю мемпула Эфириума и увидим, что он достиг рекордной высоты и продолжает расти? Не утверждаю, что сейчас дела обстоят именно так, но эту информацию нельзя скрывать. И я считаю, что если эта информация когда-нибудь будет раскрыта, то будет уже слишком поздно. Поздно уже даже сейчас.
Давайте посмотрим на задержку блоков и транзакций в сети Биткойн. Ниже вы увидите два графика. На первом графике изображено время распространения по всей сети одного блока, на втором – одной транзакции. Все 115 тыс. узлов обрабатывают транзакции и сохраняют их данные до тех пор, пока какой-нибудь майнер не создаст корректный блок и не передаст информацию о нём в сеть.
- Скорость распространения блоков значительно ускорилась благодаря хорошо продуманным улучшениям в коде. Транзакции подтверждаются по мере поступления и хранятся в мемпуле. Когда узел получает новый блок, он быстро сверяет его со всеми транзакциями, сохранёнными ранее, и, как правило, находит среди них большинство транзакций из нового блока. Это позволяет узлу в кратчайшие сроки подтвердить блок и отправить его всем своим пирам.
- С другой стороны, время обработки транзакций постепенно выросло, но, похоже, начинает стабилизироваться. Такая динамика неслучайна: замедление происходило вследствие улучшения механизмов защиты данных. Это достойный компромисс, ведь блоки так или иначе обрабатываются раз в 10 минут, и задержка в 16 секунд вполне допустима. Думаю, что скорость обработки транзакций стабилизируется, как только блоки будут постоянно заполняться до предела, поскольку комиссии, обусловленные размером блока, будут регулировать поток новых транзакций (если, конечно, в протокол не внесут изменений).
Стоит отметить, что для Эфириума подобная информация недоступна:
https://dsn.tm.kit.edu/bitcoin/
Биткойн разрабатывался с учётом этих факторов. Очередь транзакций растёт, однако размер блока регулируется. Со временем люди учатся правильно пользоваться инструментом, который мы называем блокчейном, и поток транзакций стабилизируется. С другой стороны, отсутствие регулирования приводит к тому, что, когда множество людей хаотично и одновременно пытается использовать этот инструмент для какой-нибудь несерьёзной цели вроде CryptoKitties, работа всей сети замедляется, пока она не справится с наплывом новых контрактов. Каждый из них должен быть обработан каждым полным узлом. Казалось бы, конкретно вам не нужно обрабатывать каждый контракт, и вас могут заверять, что это необязательно, но ведь кто-то должен выполнять всю работу. Много ли тех, кто будет это делать? Высокие комиссии лишь препятствуют глупым приложениям вроде CryptoKitties на базовом уровне протокола. В них нет никакой нужды. Более полезные приложения столкнутся с теми же проблемами, так как блокчейны не масштабируются.
Эти DApp парализуют ваш блокчейн потому, что он не регулируется:
Но разве нам не обещали, что всё будет в порядке? Ведь в этом заключалась вся идея Эфириума: стать лучшей альтернативой Биткойну. Мечтать не вредно.
Конечно же, число транзакций при неограниченном размере блока не устремится в бесконечность, но важно понимать, что сеть физически не справляется даже с текущей нагрузкой. В ней недостаточно узлов, чтобы обрабатывать и вовремя передавать всю информацию. Знаете ли вы на самом деле, сколько узлов задействовано в сети Эфириума? В сети Биткойн работают около 115 тыс. узлов, 12 тыс. из которых являются полными узлами, открытыми для входящих соединений. Почти все они участвуют в обмене данными, поскольку это также поддаётся регулированию. Отличия узлов, открытых для входящих соединений, от остальных узлов в данном случае не принципиальны, так как все они обмениваются данными со своими пирами. По умолчанию у узла должно быть 8 пиров, и клиент не сможет установить более 8 соединений, если пользователь не добавит их вручную. Такое ограничение было введено намеренно. Устанавливать больше соединений не рекомендуется, так как это снижает работоспособность сети:
«По умолчанию Биткойн допускает 8 исходящих соединений, и параметр -maxconnections лишь контролирует максимальное число входящих соединений. Можете менять этот параметр как вам угодно, но имейте в виду, что к вам не сразу подключится множество новых узлов.
Пожалуйста, не пытайтесь установить более 8 исходящих соединений – в этом нет необходимости. Доступные пиры — редкий ресурс, и без них децентрализация невозможна. Если все участники сети попытаются подключиться ко всем доступным пирам, как это делают некоторые сайты, то очень скоро в сети не останется узлов, открытых для входящих соединений.
Если вы предприниматель или майнер, возможно, вам пригодятся несколько постоянных соединений с проверенными узлами (см. параметр командной строки или конфигурации -addnode). Однако большее число соединений не обеспечит более надёжную верификацию (стандартный клиент в любом случае подтверждает каждую транзакцию) и не ускорит перечу данных (поскольку пересылка новых блоков и транзакций всем пирам займёт больше времени). Прежде всего, это вопрос поддержания работы сети».
https://bitcoin.stackexchange.com/a/8140
Помните эту реплику, приведённую ранее?
«Такова природа p2p-сетей: всё зависит от работы пиров и состояния соединения. Обычно, если подождать достаточно долго, синхронизация сработает. Также может помочь Ctrl+C и перезагрузка (после этого, в идеале, установится соединение с более стабильным пиром). Ещё один вариант — найти хорошего пира и установить соединение с ним вручную».
Так проблемы не решаются. Это классический пример того, как блокчейн с недостаточным регулированием позволяет участникам сети действовать лишь в собственных интересах. Это неизбежно приводит к тому, что узлы разделяются на ведущих и ведомых, «господ» и «рабов», которых они содержат. Такой расклад всё меньше похож на децентрализацию, особенно если финансовый барьер стоимости содержания «господского» узла поднимается выше и выше.
Справедливости ради стоит заметить, что именно за это критикуют и Lightning Network, однако это сеть совершенно иного типа. Блокчейны – это peer-to-peer сети широкого вещания, а Lightning Network и прочие сети каналов состояния работают по принципу anycast. Рассылка данных в них происходит совершенно по-другому. Даже у современного холодильника хватит производительности, чтобы запустить Lightning-узел. Опасения по поводу постепенной централизации Lightning в виде радиальной структуры связаны с распределением средств на балансах каналов. Для радиальной структуры характерны те же проблемы, что для модели ведущих и ведомых, однако в случае с балансами каналов данные не являются узким местом системы. Подобно Биткойн-клиентам с их стандартными 8 пирами, можно стандартизировать Lightning-клиенты, задав число каналов и сумму средств в каждом из них. Тогда сеть сформируется вокруг этого стандарта и не сможет принять централизованную радиальную форму. Lightning Network — довольно новая технология, и поскольку у нас слишком мало данных, чтобы её исследовать, пока трудно определить подходящие стандартные значения для числа каналов и суммы средств.
Кстати о данных и исследованиях: почему число узлов в Эфириуме изображается только на таких графиках? Где найти его историю? Сколько из этих узлов использовали быструю синхронизацию и по-настоящему ничего не подтверждали? Узлы могут хранить историю блокчейна в сокращённом виде, но, всё же, сколько из них занимается полноценным подтверждением транзакций? И сколько среди них обычных лёгких клиентов, которые лишь синхронизируют заголовки?
https://www.ethernodes.org/network/1
Смешно наблюдать, как Trustnodes и прочие сайты, полные пропаганды и содействующие заговорам Bitcoin Cash, публикуют откровенную ложь под громкими заголовками. Когда она получает распространение, никто не подвергает её сомнению, кроме тех, кто действительно в курсе происходящего.
«В Эфириуме теперь в три раза больше узлов, чем в Биткойне».
Не буду оставлять ссылку на пропагандистов Bitcoin Cash
В сети Биткойн 115 тыс. узлов, и все они осуществляют полноценное подтверждение транзакций:
http://luke.dashjr.org/programs/bitcoin/files/charts/software.html
Что же делать тем, кто постепенно осознаёт, как обстоят дела на самом деле? А тем, кто этого не понимает? И что ждёт сеть, состоящую в основном из таких пользователей, которые постепенно перестают в ней участвовать (не в буквальном смысле, а отказываясь содержать полные узлы и переходя на лёгкие)? Сколько полных узлов останется в сети? У скольких из них сохранится полноценная копия генезисного блока? А что произойдёт, если всю сеть ведомых узлов будут обслуживать 5 дата-центров? Кто будет подтверждать транзакции, если почти все будут синхронизировать лишь заголовки блоков? Можно сколько угодно утверждать, что для поддержания безопасности сети необходима только недавняя история состояния, но разве можно назвать безопасной сеть, которая неэффективна на всех уровнях и в которой большинство узлов не успевает даже за последней тысячей блоков?
Из всего этого можно сделать следующие выводы:
- Рост размера блока в Эфириуме опасен не из-за объёма данных, сохраняемых на диске, а из-за требований к производительности узлов.
- Чтобы избежать полного краха сети, в Эфириуме нужно ввести разумное ограничение размера блока.
- Ограничение размера блока приведёт к росту комиссий и помешает функционированию многих DApp, или же значительно замедлит сеть. В будущем DApp окажутся неработоспособными.
- Если DApp перестанут работать, возможно, существование Эфириума потеряет весь смысл.
Как насчёт Bitcoin Cash?
- Размер блока в Bitcoin Cash недавно увеличился с 8 Mб до 32 Мб, и скоро в нём введут новые коды операций (OP_CODES), которые станут основой для новых сомнительных «функций» вроде ICO или каких-нибудь «критоптичек».
- У Bitcoin Cash есть потенциал роста, так как он произошёл от блокчейна с очень низкой нагрузкой, в то время как Эфириум совершенно перегружен.
https://txhighway.cash
Эфириум обречён, а Bitcoin Cash пытается уподобиться ему, не замечая тревожных сигналов, к которым мы пытаемся привлечь внимание сообщества. Сторонники Bitcoin Cash получили то, что хотели – больший размер блоков и возможность проведения ICO. И Bitcoin Cash, и Эфириум превратятся в централизованные блокчейны, которые со временем умрут, но постепенное увеличение размера блока, как система искусственного жизнеобеспечения, позволит им протянуть ещё какое-то время, обслуживая мошеннические продуктовые токены. В конце концов, когда никто больше не сможет поддерживать работу узлов, вся система разрушится.
Продолжение следует…
Часть 3
Источник
Поделиться ссылкой:
‹ Размер блокчейна Эфириума превысил 1ТБ, и да, это проблема (Часть 1)Размер блокчейна Эфириума превысил 1ТБ, и да, это проблема (Часть 3) ›Рубрики:Анализ, Важное, Мнение, ETH, Ethereum, эфир
Метки: Bitcoin Cash, масштабирование, масштабируемость, Lightning Network, размер блока
ethclassic.ru
Что такое раздувание блокчейна (blockchain bloat)
Приверженцы криптовалют всегда были обеспокоены размером блокчейна Bitcoin. А сейчас оказалось, что и Ethereum страдает от похожей проблемы. Блокчейн размером в несколько сотен гигабайт – таким может быть будущее обеих криптовалют. Большая часть этих проблем связана с раздуванием блокчейна – чрезвычайно неприятным побочным эффектом взросления блокчейна.Раздувание блокчейна – реальная проблема
Важно понимать, что раздувание блокчейна – это одновременно и хорошо, и плохо. Это положительное развитие, если учесть, что число транзакций в отдельном блокчейне растёт. Больше транзакций – больше людей, пользующихся блокчейном, а это хорошо для долгосрочного введения в оборот любой валюты. И это же является ключевой причиной быстрого роста блокчейнов Bitcoin и Ethereum по сравнению со всеми другими существующими криптовалютами.
Но больше транзакций – не обязательно больше данных, передающихся через блокчейн. К сожалению, возникает много проблем для активного хранения всех этих данных. Использование большого жёсткого диска становится необходимостью, что может стать проблемой для людей, работающих в узле цепи. Но учитывая текущий ежедневный рост блокчейнов, ещё пройдёт много лет, прежде чем мы увидим блокчейны, измеряющиеся терабайтами.
Однако, раздувание блокчейна порождает одну очень серьёзную проблему. По мере того, как блокчейн раздувается, размер блока тоже должен расти. Если этого не произойдёт, то число транзакций на блок уменьшится. Для Bitcoin это уже стало значимой проблемой. Вот почему и выдвигаются предложения о масштабировании, которые могли бы помочь решить проблему. Очевидно, что Ethereum пойдёт по тому же пути, но его может спасти шардинг (англ. sharding).
Пока не будет найдено решение, раздувание блокчейна будет оставаться ключевой проблемой. Размеры блока ограничены, а значит, сборы, взимаемые майнерами за ускорение транзакций, будут расти. Это и произошло с биткоином, сборы которого в последнее время взлетели до немыслимых высот. Но и Ethereum не отстаёт – цена газа постоянно растёт. Очевидно, необходимо найти решение – чем раньше, тем лучше.
Самое лучшее решение проблемы раздувания блокчейна – увеличение размера блока. Альтернативный вариант – убрать часть информации о транзакциях из основного блокчейна и перенести её в боковые цепи. В случае с Segregated Witness хеши транзакций будут удалены из основного блокчейна, что поможет снизить размеры блокчейна. Ещё один вариант – применение децентрализованного хранения блокчейна, например технологии Storj. Как вы видите, существует несколько возможностей решить проблему раздувания блокчейна, но для этого надо проделать ещё много работы.
Источник: https://themerkle.com/what-is-blockchain-bloat/
ttrcoin.com