Криптовалюта Zilliqa: полное руководство

Zilliqa

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

Решение проблемы масштабируемости

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

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

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

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

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

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

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

Решение Zilliqa

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

Теоретически пропускная способность Zilliqa увеличивается за счет разделения работы. На практике возникают определенные проблемы с трансляцией, когда сеть становится очень большой (более миллиона узлов). Впрочем, человечество нескоро приблизится к верхнему пределу: в настоящий момент в сети Bitcoin насчитывается около 10 тыс. узлов, а Ethereum — крупнейшее объединение полных узлов, — примерно 16 тыс.

При этом обе сети способны обрабатывать всего 3−15 транзакций в секунду. Для сравнения, испытания в частной сети (виртуальный тест AWS) показали, что Zilliqa способна проводить 1218 операций в секунду при 1800 работающих узлах. В случае удвоения их числа скорость работы возрастает до 2488 т/с.

Шардинг: распределение работы по сети

Zilliqa уда­ет­ся до­стичь по­доб­ной мас­шта­би­ру­е­мо­сти с по­мо­щью так на­зы­ва­е­мо­го шар­дин­га. Про­то­кол Zilliqa раз­би­ва­ет сеть на груп­пы из 600 узлов. Каж­дая груп­па — это один шард (от англ. shard — оско­лок).

На­при­мер, в при­ве­ден­ном выше при­ме­ре те­сто­вая сеть из 1800 узлов де­ли­лась на три шарда. Сеть из 3600 узлов раз­би­ва­лась, со­от­вет­ствен­но, на шесть шар­дов. По мере под­клю­че­ния до­пол­ни­тель­ных узлов будут со­зда­вать­ся новые шарды.

Каж­дый шард об­ра­ба­ты­ва­ет часть тран­зак­ций в сети. Дру­ги­ми сло­ва­ми, если есть шесть шар­дов, то каж­дый по­лу­ча­ет при­мер­но 1/6 часть всех тран­зак­ций сети. Чем боль­ше шар­дов, тем ниже на­груз­ка. По­доб­ный под­ход поз­во­ля­ет под­дер­жи­вать тре­бо­ва­ния к вы­чис­ли­тель­ной мощ­но­сти на от­но­си­тель­но ста­биль­ном уровне.

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

DS-комитет: управление шардами

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

Поиск консенсуса: PoW + BFT

Zilliqa ис­поль­зу­ет ги­брид­ный ме­ха­низм кон­сен­су­са. Май­нер, впер­вые при­сту­па­ю­щий к ра­бо­те, обя­зан рас­счи­тать хэш по ал­го­рит­му Proof-of-Work. Для этого тре­бу­ет­ся опре­де­лен­ная вы­чис­ли­тель­ная мощ­ность, ко­то­рая га­ран­ти­ру­ет, что на ком­пью­те­ре уста­нов­лен толь­ко один узел. Таким об­ра­зом, PoW в неко­то­ром смыс­ле поз­во­ля­ет удо­сто­ве­рить­ся в лич­но­сти май­не­ра, предот­вра­щая со­зда­ние мно­же­ства фик­тив­ных иден­ти­фи­ка­то­ров и обес­пе­чи­вая за­щи­ту от атаки Си­вил­лы. Од­на­ко сеть не ис­поль­зу­ет PoW для до­сти­же­ния кон­сен­су­са.

После того как узел под­твер­дил свою лич­ность, он вклю­ча­ет­ся в шард. В пре­де­лах шар­дов Zilliqa ис­поль­зу­ет ал­го­ритм кон­сен­су­са на ос­но­ве Стра­те­гии ви­зан­тий­ских ге­не­ра­лов (Practical Byzantine Fault Tolerance, PBFT).

Это вы­со­ко­про­из­во­ди­тель­ный ал­го­ритм с окон­ча­тель­но­стью (finality). Окон­ча­тель­ность озна­ча­ет, что со­гла­со­вать ми­ни­блок обя­за­ны боль­шин­ство узлов шарда. Когда блок под­твер­жда­ет­ся шар­да­ми и DS-ко­ми­те­том, в него встра­и­ва­ет­ся ссыл­ка на преды­ду­щий блок. Дру­ги­ми сло­ва­ми, в ме­ха­низ­ме кон­сен­су­са с окон­ча­тель­но­стью невоз­мож­ны ветв­ле­ния.

Zilliqa — это не пер­вый рас­пре­де­лен­ный ре­естр, ос­но­ван­ный на BFT. NEO, Tendermint, и Hyperledger ис­поль­зу­ют вер­сии этого ал­го­рит­ма кон­сен­су­са.

Контракты с потоками данных и шардинг состояний

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

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

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

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

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

Од­на­ко Zilliqa хо­ро­шо под­хо­дит для де­цен­тра­ли­зо­ван­ных при­ло­же­ний, тре­бу­ю­щих вы­со­кой про­пуск­ной спо­соб­но­сти. Любое де­цен­тра­ли­зо­ван­ное при­ло­же­ние, чув­стви­тель­ное к ско­ро­сти ра­бо­ты сети, будет пре­крас­но себя чув­ство­вать в Zilliqa.

Новый язык программирования

Чтобы сде­лать функ­ци­о­наль­ное про­грам­ми­ро­ва­ние более стан­дар­ти­зи­ро­ван­ным и без­опас­ным, ко­ман­да Zilliqa раз­ра­бо­та­ла язык про­грам­ми­ро­ва­ния Scilla.

Scilla раз­де­ля­ет со­сто­я­ния и функ­ции. Этот язык про­грам­ми­ро­ва­ния про­во­дит раз­ли­чия между ком­му­ни­ка­ци­он­ны­ми ас­пек­та­ми кон­трак­та (пе­ре­да­чей средств и вза­и­мо­дей­стви­я­ми с дру­ги­ми кон­трак­та­ми) и фак­ти­че­ски­ми вы­пол­ня­е­мы­ми вы­чис­ле­ни­я­ми.

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

Scilla по­мо­га­ет осо­знать раз­ни­цу между функ­ци­о­наль­ны­ми кон­трак­та­ми, под­дер­жи­ва­е­мы­ми Zilliqa, и кон­трак­та­ми, за­ви­ся­щи­ми от со­сто­я­ний, ко­то­рые про­ект пока не под­дер­жи­ва­ет.

Где купить токены ZIL

По ана­ло­гии с дру­ги­ми де­цен­тра­ли­зо­ван­ны­ми при­ло­же­ни­я­ми и плат­фор­ма­ми, та­ки­ми как Ethereum или NEO, то­ке­ны ZIL вы­сту­па­ют сти­му­лом для май­не­ров, «газом» для ис­пол­не­ния кон­трак­тов и сред­ством опла­ты тран­зак­ци­он­ных сбо­ров.

Из­на­чаль­но ZIL по­яви­лись как то­ке­ны стан­дар­та ERC-20 на блок­чейне Ethereum. Свя­за­но это с тем, что ос­нов­ная сеть Zilliqa еще не за­пу­ще­на. Когда она за­ра­бо­та­ет (ори­ен­ти­ро­воч­но в тре­тьем квар­та­ле 2018 года), то­ке­ны ERC-20 будут об­ме­не­ны на соб­ствен­ные то­ке­ны про­ек­та.

В конце 2017 года Zilliqa при­влек 12 млн дол­ла­ров в эфи­рах по ито­гам част­но­го ра­ун­да фи­нан­си­ро­ва­ния. Од­на­ко стре­ми­тель­ное по­до­ро­жа­ние эфира при­ве­ло к тому, что в ско­ром вре­ме­ни 12 млн вы­рос­ли до 20 млн — верх­ней план­ки фи­нан­си­ро­ва­ния про­ек­та.

Со­брав необ­хо­ди­мые сред­ства, Zilliqa объ­явил со­об­ще­ству, что пуб­лич­ная про­да­жа боль­ше не тре­бу­ет­ся. Од­на­ко из-за вы­со­ко­го спро­са про­ект все же про­вел раз­ме­ще­ние то­ке­нов на сумму 4445 ETH.

В на­сто­я­щее время то­ке­ны ZIL об­ра­ща­ют­ся на Huobi, EtherDelta, gate.​io, Idex и дру­гих крип­то­ва­лют­ных бир­жах.

Источник