2017-09-26 02:20

Разгадывая биткоин

Разгадывая биткоин

Loading

Разработчики дают разные описания коду биткоина: монолитный, словно клякса, запутанный.
\n
\nЭти слова примерно дают представление о том, насколько сложен код «цифрового золота» для понимания и уж тем более для работы. Вообще-то, это не очень приятные мысли о сети, которую поддерживают 61 миллиард долларов инвесторов.

\n\n

Речь не о том, что биткоин не работает — он работает, но состояние его кодовой базы оставляет желать лучшего. Так считают и пользователи, которые хотят большей гибкости, и разработчики, желающие его развивать.
\n
\nИзменения, направленные на оптимизацию, например, SegWit, и философия так называемых хардфорков привлекают много внимания в последнее время, и разработчики трудятся над «распутыванием» архитектуры биткоина.
\n
\nРасселл Янофски, работник Chaincode, пытается частично разобраться с этой проблемой используя «разделение процессов» (process separation) — самой используемой функцией Bitcoin Core.
\n
\nЯнофски рассказывает: «У биткоина очень старая кодовая база. У неё есть много частей, которые мы, если бы писали с нуля, сделали бы иначе. Но раз уж мы имеем дело с наследием этого кода, то нужно найти способы его сохранить»

\n\n

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

\n\n

Чтобы понять технику разделения процессов Янофски, важно знать, что ПО Bitcoin Core состоит из разных деталей и двух так называемых «процессов», которые, по мнению многих, беспорядочно перемешиваются.
\n
\nПервый процесс — это «bitcoind». По словам Янофски, он состоит из двух частей: peer-to-peer код, что служит для соединения узлов сети, код подтверждения, который проверяет транзакции и блоки на достоверность, и код кошелька, который хранит приватные ключи пользователя.
\n
\nСледующий процесс — «bitcoin-qt». Он управляет всеми этими функциями и добавляет пользовательский интерфейс, чтобы неопытные пользователи могли владеть полным узлом, не пользуясь при этом командной строкой.
\n
\nЯнофски считает, что следует разделить некоторые аспекты этого кода. Таким образом, он создаёт новый процесс — «bitcoinwalletd», который отделяет код кошелька от bitcoind. Также он удаляет весь код bitcoin-qt за исключением пользовательского интерфейса.
\n
\nНа его слайдах с презентации BitDevs в Нью-Йорке отчётливо видна разница в структуре.
\n
\nМожет показаться, что на высших уровнях процессы биткоина и так разделены, но в техническом плане это неверно. Так, Янофски строит существенные барьеры между разными компонентами.
\n
\nТаким образом, когда основной код будет завершён, порция кода кошелька не сможет затронуть другие части кода.

\n\n

Совмещать и сопоставлять

\n\n

Так что это будет значить для пользователей? В основном, увеличение гибкости.

\n\n

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

\n\n

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

\n\n

Точно таким же образом станет реальным использование интерфейса bitcoin-qt с разными узлами bitcoind.

\n\n

“Предположим, что у вас есть биткоин узел на удалённом сервере. Вы можете просто запустить графический интерфейс, чтобы посмотреть, какая у него пропускная способность или количество peer-to-peer соединений”, — говорит Янофски.

\n\n

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

\n\n

Хоть он и признаёт, что подобные изменения немного замедлят ход вещей или усложнят отладку для разработчиков, его проект получил одобрение на GitHub от людей, сделавших вклад в развитие Bitcoin Core. Среди них: Владимир ван дер Лаан, Даниель Кузен.

\n\n

И это отчасти потому, что то, что предлагает Янофски, затрагивает не только пользовательскую сторону. Он также добавил: “Да, пользователи видят преимущества проекта, но за ним стоит также важный компонент очистки архитектуры и кода”.

\n\n

Проблемы с распространением.

\n\n

Большая часть кода для этого обновления уже написана, тем не менее, ещё ряд вещей должен произойти перед тем, как оно будет добавлено в Bitcoin Core.

\n\n

“Самая большая проблема заключается в привлечении внимания людей”, — он рассказал.

\n\n

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

\n\n

Янофски также ожидает некоторых других изменений, а именно: нововведений в peer-to-peer код от Кори Филдса или улучшения кода кошелька от его коллеги по Chaincode Мэтта Коралло.

\n\n

“Сейчас всё внимание уделяется другой области,в данный момент наш главный приоритет – это оптимизация SegWit, а всё остальное подождёт”.

\n\n

Хотя внимание общественности и не приковано к работе Янофски, она всё равно обещает быть очень важным изменением, как и подметил технический директор Blockstream Грег Максвелл:»Я думаю, нам уже давно стоило сделать подобное”.

\n