блокчейн

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

Тем не менее, подтверждение транзакций не используется при подтверждении блоков, что является одной из причин ограниченной скорости распространения блоков по сети Биткоина. Попытки изменить эту ситуацию уже предпринимали многие разработчики. Одно из новых решений этого вопроса называется «Cuckoo Cache» («Кеш кукушки»).

Cuckoo для перехвата подписей

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

«Узел будет проверять кэш, чтобы определить правильность содержащихся в нем подписей», — объясняет криптограф Джереми Рубин (Jeremy Rubin). «Это поможет узлам обойтись без осуществления дорогостоящего подтверждения подписи ECDSA, которое они уже произвели ранее». 

Изучая кодовую базу Биткоина, Рубин заметил проявления неэффективности в процессе обработки блоков, корень которых идёт из структуры кэша подписи (Signature Cache). Он стал рассматривать структуру с точки зрения упрощения проблемы.

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

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

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

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

«Отверстия достаточно большие, и вам видно, что находится внутри, когда вы что-то достаёте», — объясняет Рубин, — «Он не переполнен тяжёлыми камнями. Иногда вы что-то забываете дома, и вы всё ещё время от времени теряете вещи, но это происходит не так часто, как если бы использовали дырявый пакет».

Рубин считает, что настройка кода Биткона при помощи обновлений наподобие Cuckoo Cache, интегрированном в готовящейся к выходу версии Bitcoin Core Version 0.14, может намного повысить эффективность сети. Он также утверждает, что улучшенная структура кеша способна оптимизировать и другие аспекты кодовой базы Биткоина. 

Повышение эффективности Биткоина

«В кодовой базе Биткоина имеется множество мест, где мы использовали стандартные структуры данных C++, так как стандартная библиотека является самым простым способом для разработки прототипов многих вещей, и в начале они способны выполнять такую нагрузку», — объясняет Рубин. «Однако по мере масштабирования Биткоина, чтобы пересмотреть способ хранения и обработки данных Биткоина, нам придётся многое преодолеть».

По мнению Рубина, оптимизация этих структур данных будет очень хорошим началом.

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

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