Хардфорк, софтфорк, UASF: краткий гайд по форкам криптовалют

Softfork

Всё, что нужно знать о разделении блокчейна на две ветви.

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

Основы

Форк про­ис­хо­дит, когда участ­ни­кам си­сте­мы необ­хо­ди­мо со­гла­со­вать еди­ные пра­ви­ла.

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

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

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

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

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

Вот наи­бо­лее рас­про­стра­нен­ные форки и их осо­бен­но­сти:

Хардфорк (жесткое ветвление)

Что это?

Хард­форк — об­нов­ле­ние про­грамм­но­го обес­пе­че­ния, ко­то­рое встра­и­ва­ет в сеть новое пра­ви­ло, несов­ме­сти­мое со ста­рым ПО. Дру­ги­ми сло­ва­ми, хард­форк — это рас­ши­ре­ние пра­вил (на­при­мер, для уве­ли­че­ния раз­ме­ра блока с 1 Мб до 2 Мб необ­хо­дим хард­форк).

Что происходит?

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

Что может пойти не так?

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

Хард­форк DAO в сети Ethereum слу­жит пре­крас­ным при­ме­ром рас­ко­ла крип­то­со­об­ще­ства из-за пра­вил. В на­сто­я­щее время су­ще­ству­ют два блок­чей­на, ра­бо­та­ю­щие на своих вер­си­ях ПО — Ethereum и Ethereum Сlassic.

Софтфорк (мягкое ветвление)

Что это?

В от­ли­чие от хард­фор­ка, мяг­кое ветв­ле­ние сов­ме­сти­мо со ста­рым ПО. На­при­мер, вме­сто бло­ков по 1 Мб новое пра­ви­ло может преду­смат­ри­вать со­кра­ще­ние их раз­ме­ра до 500 Кб.

Что происходит?

Узлы сети, ис­поль­зу­ю­щие ста­рое ПО, по-преж­не­му будут счи­тать новые тран­зак­ции дей­стви­тель­ны­ми (в нашем при­ме­ре раз­мер но­во­го блока мень­ше, чем ста­ро­го).

Од­на­ко если ста­рые узлы про­дол­жат до­бы­вать блоки, они будут от­вер­гать­ся участ­ни­ка­ми, ко­то­рые об­но­ви­ли ПО. Имен­но по­это­му мяг­кое ветв­ле­ние долж­ны под­дер­жать члены сети, кон­тро­ли­ру­ю­щие ос­нов­ную вы­чис­ли­тель­ную мощ­ность.

Что может пойти не так?

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

При­ме­ра­ми успеш­ных мяг­ких ветв­ле­ний блок­чей­на бит­ко­и­на слу­жат об­нов­ле­ния BIP 66 (из­ме­нив­шее пра­ви­ла про­вер­ки под­пи­сей) и P2SH (из­ме­нив­шее фор­мат ад­ре­сов сети бит­ко­ин).

Активированный пользователем софтфорк (UASF)

Что это?

Ак­ти­ви­ро­ван­ный поль­зо­ва­те­лем софт­форк (АПС, UASF) — спор­ная идея, преду­смат­ри­ва­ю­щая об­нов­ле­ние блок­чей­на, без уча­стия узлов с ос­нов­ной вы­чис­ли­тель­ной мощ­но­стью сети.

Суть АПС в сле­ду­ю­щем: вме­сто того, чтобы ждать когда боль­шин­ство май­нинг-пу­лов под­дер­жат об­нов­ле­ние, его ак­ти­ва­цию могут про­ве­сти биржи, ко­шель­ки и ком­па­нии, ко­то­рые яв­ля­ют­ся пол­ны­ми уз­ла­ми (в сети бит­ко­ин пол­ные узлы от­ве­ча­ют за про­вер­ку бло­ков даже если не за­ни­ма­ют­ся май­нин­гом).

Что происходит?

Об­нов­ле­ние долж­но под­дер­жать боль­шин­ство круп­ных бирж, пре­жде чем оно будет вклю­че­но в новую вер­сию про­грамм­но­го обес­пе­че­ния. Затем ПО уста­нав­ли­ва­ет­ся на узлах, участ­ву­ю­щих в софт­фор­ке (с датой ак­ти­ва­ции в бу­ду­щем).

Что может пойти не так?

Этот метод тре­бу­ет более дли­тель­ной под­го­тов­ки, неже­ли софт­форк, со­брав­ший ос­нов­ную вы­чис­ли­тель­ную мощ­ность сети. По неко­то­рым оцен­кам, на при­го­тов­ле­ния и на­пи­са­ние кода может уйти год или более.

Кроме того, если боль­шин­ству май­не­ров не по­нра­вят­ся новые пра­ви­ла, они могут вос­поль­зо­вать­ся по­дав­ля­ю­щей вы­чис­ли­тель­ной мощ­но­стью и раз­де­лить сеть.

Пока эта идея оста­ет­ся лишь на бу­ма­ге и ни разу не была ре­а­ли­зо­ва­на на прак­ти­ке.

Источник